فهرست منبع

fix: sidebar overlay bug on smaller screens

NGPixel 5 سال پیش
والد
کامیت
dd3699b501
1فایلهای تغییر یافته به همراه30 افزوده شده و 6 حذف شده
  1. 30 6
      client/themes/default/components/page.vue

+ 30 - 6
client/themes/default/components/page.vue

@@ -7,7 +7,7 @@
       app
       clipped
       mobile-break-point='600'
-      :temporary='$vuetify.breakpoint.mdAndDown'
+      :temporary='$vuetify.breakpoint.smAndDown'
       v-model='navShown'
       :right='$vuetify.rtl'
       )
@@ -225,11 +225,11 @@
         :right='$vuetify.rtl'
         :left='!$vuetify.rtl'
         small
-        depressed
+        :depressed='this.$vuetify.breakpoint.mdAndUp'
         @click='$vuetify.goTo(0, scrollOpts)'
         color='primary'
         dark
-        :style='$vuetify.rtl ? `right: 235px;` : `left: 235px;`'
+        :style='upBtnPosition'
         )
         v-icon mdi-arrow-up
 </template>
@@ -362,7 +362,8 @@ export default {
             background: '#64B5F6'
           }
         }
-      }
+      },
+      winWidth: 0
     }
   },
   computed: {
@@ -385,7 +386,14 @@ export default {
         return result
       }, []))
     },
-    pageUrl () { return window.location.href }
+    pageUrl () { return window.location.href },
+    upBtnPosition () {
+      if (this.$vuetify.breakpoint.mdAndUp) {
+        return this.$vuetify.rtl ? `right: 235px;` : `left: 235px;`
+      } else {
+        return this.$vuetify.rtl ? `right: 65px;` : `left: 65px;`
+      }
+    }
   },
   created() {
     this.$store.commit('page/SET_AUTHOR_ID', this.authorId)
@@ -403,9 +411,16 @@ export default {
     this.$store.commit('page/SET_MODE', 'view')
   },
   mounted () {
+    // -> Check side navigation visibility
+    this.handleSideNavVisibility()
+    window.addEventListener('resize', _.debounce(() => {
+      this.handleSideNavVisibility()
+    }, 500))
+
+    // -> Highlight Code Blocks
     Prism.highlightAllUnder(this.$refs.container)
-    this.navShown = this.$vuetify.breakpoint.smAndUp
 
+    // -> Handle anchor scrolling
     this.$nextTick(() => {
       if (window.location.hash && window.location.hash.length > 1) {
         this.$vuetify.goTo(window.location.hash, this.scrollOpts)
@@ -448,6 +463,15 @@ export default {
     },
     pageDelete () {
       this.$root.$emit('pageDelete')
+    },
+    handleSideNavVisibility () {
+      if (window.innerWidth === this.winWidth) { return }
+      this.winWidth = window.innerWidth
+      if (this.$vuetify.breakpoint.mdAndUp) {
+        this.navShown = true
+      } else {
+        this.navShown = false
+      }
     }
   }
 }