diff --git a/src/client/app.vue b/src/client/app.vue index eef6daad20..458917d706 100644 --- a/src/client/app.vue +++ b/src/client/app.vue @@ -929,7 +929,7 @@ export default Vue.extend({ > div { position: sticky; top: calc(#{$header-height} + var(--margin)); - height: calc(100vh - #{$header-height} - var(--margin) * 2); + height: calc(100vh - #{$header-height} - var(--margin)); &.edit { overflow: auto; diff --git a/src/client/widgets/notifications.vue b/src/client/widgets/notifications.vue index bc9b3a65a0..39a5880332 100644 --- a/src/client/widgets/notifications.vue +++ b/src/client/widgets/notifications.vue @@ -1,9 +1,9 @@ <template> -<div class="mkw-notifications"> - <mk-container :show-header="!props.compact"> +<div class="mkw-notifications" :style="`flex-basis: calc(${basis}% - var(--margin)); height: ${previewHeight}px;`"> + <mk-container :show-header="!props.compact" class="container"> <template #header><fa :icon="faBell"/>{{ $t('notifications') }}</template> - <div style="height: 300px; overflow: auto; background: var(--bg);"> + <div class="tl"> <x-notifications/> </div> </mk-container> @@ -17,10 +17,14 @@ import XNotifications from '../components/notifications.vue'; import define from './define'; import i18n from '../i18n'; +const basisSteps = [25, 50, 75, 100] +const previewHeights = [200, 300, 400, 500] + export default define({ name: 'notifications', props: () => ({ - compact: false + compact: false, + basisStep: 0 }) }).extend({ i18n, @@ -36,11 +40,51 @@ export default define({ }; }, + computed: { + basis(): number { + return basisSteps[this.props.basisStep] || 25 + }, + + previewHeight(): number { + return previewHeights[this.props.basisStep] || 200 + } + }, + methods: { func() { - this.props.compact = !this.props.compact; + if (this.props.basisStep === basisSteps.length - 1) { + this.props.basisStep = 0 + this.props.compact = !this.props.compact; + } else { + this.props.basisStep += 1 + } + this.save(); - }, + } } }); </script> + +<style lang="scss"> +.mkw-notifications { + flex-grow: 1; + flex-shrink: 0; + min-height: 0; // https://www.gwtcenter.com/min-height-required-on-firefox-flexbox + + .container { + display: flex; + flex-direction: column; + height: 100%; + + > div { + overflow: auto; + flex-grow: 1; + } + } + + .tl { + height: 100%; + background: var(--bg); + } +} +</style> diff --git a/src/client/widgets/timeline.vue b/src/client/widgets/timeline.vue index 388f586135..28587bc881 100644 --- a/src/client/widgets/timeline.vue +++ b/src/client/widgets/timeline.vue @@ -1,5 +1,5 @@ <template> -<div class="mkw-timeline" :style="`flex-basis: ${basis}%; height: ${previewHeight}px;`"> +<div class="mkw-timeline" :style="`flex-basis: calc(${basis}% - var(--margin)); height: ${previewHeight}px;`"> <mk-container :show-header="!props.compact" class="container"> <template #header> <button @click="choose" class="_button"> @@ -61,7 +61,7 @@ export default define({ }, previewHeight(): number { - return previewHeights[this.props.basisStep] || 300 + return previewHeights[this.props.basisStep] || 200 } },