Get rid of the js to scale sidepanel, add an additional div and a css class to fix the same issue.

This commit is contained in:
shpuld 2017-11-13 12:00:08 +02:00
parent d7e4279c59
commit 4cc73cfe21
3 changed files with 16 additions and 33 deletions

View file

@ -23,18 +23,6 @@ export default {
style () { return { 'background-image': `url(${this.background})` } }, style () { return { 'background-image': `url(${this.background})` } },
sitename () { return this.$store.state.config.name } sitename () { return this.$store.state.config.name }
}, },
created () {
// this is to detect user zooming mostly
window.addEventListener('resize', this.fixSidebarWidth)
},
mounted () {
// for some reason, at least in dev mode, dom is not ready enough at this point
// in theory calling the function directly here should be enough, but it's not
setTimeout(() => { this.fixSidebarWidth() }, 500)
},
destroyed () {
window.removeEventListener('resize', this.fixSidebarWidth)
},
methods: { methods: {
activatePanel (panelName) { activatePanel (panelName) {
this.mobileActivePanel = panelName this.mobileActivePanel = panelName
@ -44,17 +32,6 @@ export default {
}, },
logout () { logout () {
this.$store.dispatch('logout') this.$store.dispatch('logout')
},
fixSidebarWidth () {
// firefox
let barwidth = window.innerWidth - document.body.offsetWidth
if (document.body.offsetWidth <= 0) {
// chromium
barwidth = window.innerWidth - document.body.scrollWidth
}
// adjust the sidebar size to fit the scrollbar width to keep the gap consistently sized
document.getElementById('sidebar-container').style.width = `${345 + barwidth}px`
document.getElementById('sidebar-container').style.paddingRight = `${barwidth}px`
} }
} }
} }

View file

@ -190,7 +190,7 @@ nav {
flex-shrink: 1; flex-shrink: 1;
} }
.sidebar { .sidebar-bounds {
flex: 0; flex: 0;
flex-basis: 35%; flex-basis: 35%;
} }
@ -221,21 +221,25 @@ nav {
body { body {
overflow-y: scroll; overflow-y: scroll;
} }
.sidebar { .sidebar-bounds {
overflow: hidden; overflow: hidden;
max-height: 100vh; max-height: 100vh;
width: 345px; width: 345px;
position: fixed; position: fixed;
margin-top: -10px; margin-top: -10px;
.sidebar-container { .sidebar-scroller {
height: 96vh; height: 96vh;
width: 365px; width: 365px;
padding-top: 10px; padding-top: 10px;
padding-right: 20px; padding-right: 50px;
overflow-x: hidden; overflow-x: hidden;
overflow-y: scroll; overflow-y: scroll;
} }
.sidebar {
width: 345px;
}
} }
.sidebar-flexer { .sidebar-flexer {
max-height: 96vh; max-height: 96vh;

View file

@ -1,6 +1,6 @@
<template> <template>
<div id="app" v-bind:style="style" class="base02-background"> <div id="app" v-bind:style="style" class="base02-background">
<nav class='container base01-background base04' @click="scrollToTop()"> <nav class='container base01-background base04' @click="scrollToTop()" id="nav">
<div class='inner-nav' :style="logoStyle"> <div class='inner-nav' :style="logoStyle">
<div class='item'> <div class='item'>
<router-link :to="{ name: 'root'}">{{sitename}}</router-link> <router-link :to="{ name: 'root'}">{{sitename}}</router-link>
@ -18,11 +18,13 @@
<button @click="activatePanel('timeline')" class="base01-background base04">Timeline</button> <button @click="activatePanel('timeline')" class="base01-background base04">Timeline</button>
</div> </div>
<div class="sidebar-flexer" :class="{ 'mobile-hidden': mobileActivePanel != 'sidebar'}"> <div class="sidebar-flexer" :class="{ 'mobile-hidden': mobileActivePanel != 'sidebar'}">
<div class="sidebar" :class="{ 'mobile-hidden': mobileActivePanel != 'sidebar' }"> <div class="sidebar-bounds">
<div class="sidebar-container" id="sidebar-container"> <div class="sidebar-scroller">
<user-panel></user-panel> <div class="sidebar">
<nav-panel></nav-panel> <user-panel></user-panel>
<notifications v-if="currentUser"></notifications> <nav-panel></nav-panel>
<notifications v-if="currentUser"></notifications>
</div>
</div> </div>
</div> </div>
</div> </div>