From 918c7bced184d8e267b97cde8009420001ac4256 Mon Sep 17 00:00:00 2001 From: FairyEver <1711467488@qq.com> Date: Sun, 12 Dec 2021 18:40:21 +0800 Subject: [PATCH] feat: headerBorder footerBorder --- .../layout/dashboard/container/index.vue | 27 ++++++++++++------- .../src/layout/dashboard/src/style.scss | 16 +++++------ .../demo/layout/dashboard/custom.vue | 27 ++++++++++++++++--- 3 files changed, 46 insertions(+), 24 deletions(-) diff --git a/d2/components/d2/admin/layout/dashboard/container/index.vue b/d2/components/d2/admin/layout/dashboard/container/index.vue index 6047683d..850ba92a 100644 --- a/d2/components/d2/admin/layout/dashboard/container/index.vue +++ b/d2/components/d2/admin/layout/dashboard/container/index.vue @@ -25,6 +25,10 @@ import { px, convertCssUnit } from 'd2/utils/css.js' export default { name: makeNameByUrl(import.meta.url), + props: { + headerBorder: { type: Boolean, default: false, required: false }, + footerBorder: { type: Boolean, default: false, required: false } + }, setup (props, { slots }) { const scrollbar = ref(null) @@ -36,27 +40,30 @@ export default { const cssVarHeaderHeight = computed(() => convertCssUnit(useCssVar('--d2-admin-layout-dashboard-header-height'))) const cssVarHeaderBorderWidth = computed(() => convertCssUnit(useCssVar('--d2-admin-layout-dashboard-header-border-width'))) + const cssVarBodyPaddingY = computed(() => convertCssUnit(useCssVar('--d2-admin-layout-dashboard-body-main-padding-y'))) const bodyTopBase = computed(() => unref(cssVarHeaderHeight) + unref(cssVarHeaderBorderWidth)) const scrollbarVerticalTop = computed(() => unref(bodyTopBase) + unref(bodyHeaderHeight)) - const mainInnerStyle = computed(() => ({ - ...(unref(headerActive) ? { paddingTop: px(bodyHeaderHeight) } : {}), - ...(unref(footerActive) ? { paddingBottom: px(bodyFooterHeight) } : {}) - })) + const mainInnerStyle = computed(() => { + const paddingTop = px(unref(bodyHeaderHeight) + (props.headerBorder ? unref(cssVarBodyPaddingY) : 0)) + const paddingBottom = px(unref(bodyFooterHeight) + (props.footerBorder ? unref(cssVarBodyPaddingY) : 0)) + return { + ...(unref(headerActive) ? { paddingTop } : {}), + ...(unref(footerActive) ? { paddingBottom } : {}) + } + }) const bodyClass = computed(() => makeClassnames('body__main', { - 'body__main--with-header': unref(headerActive), - 'body__main--with-footer': unref(footerActive) + 'body__main--with-header-ghost': unref(headerActive) && !props.headerBorder, + 'body__main--with-footer-ghost': unref(footerActive) && !props.footerBorder })) const headerClass = computed(() => makeClassnames('body__header', 'body__blur', { - 'body__header--border': true, - 'body__header--border-ghost': true + 'body__header--border': props.headerBorder })) const footerClass = computed(() => makeClassnames('body__footer', 'body__blur', { - 'body__footer--border': true, - 'body__footer--border-ghost': true + 'body__footer--border': props.footerBorder })) function onHeaderResize (element) { diff --git a/d2/style/themes/default/src/layout/dashboard/src/style.scss b/d2/style/themes/default/src/layout/dashboard/src/style.scss index 2eb19b55..305e9384 100644 --- a/d2/style/themes/default/src/layout/dashboard/src/style.scss +++ b/d2/style/themes/default/src/layout/dashboard/src/style.scss @@ -31,33 +31,29 @@ html, body, #app { @apply absolute inset-x-0 overflow-hidden break-words; top: calc(#{--var('header-height')} + #{--var('header-border-width')}); padding: --var('body-header-padding-y') --var('body-header-padding-x'); + border-bottom-width: --var('body-header-border-width'); + border-color: --var('body-header-border-color-ghost'); &.body__header--border { - border-bottom-width: --var('body-header-border-width'); border-color: --var('body-header-border-color'); - &.body__header--border-ghost { - border-color: --var('body-header-border-color-ghost'); - } } } >.body__footer { @apply absolute inset-x-0 bottom-0 overflow-hidden break-words; padding: --var('body-footer-padding-y') --var('body-footer-padding-x'); + border-top-width: --var('body-footer-border-width'); + border-color: --var('body-header-border-color-ghost'); &.body__footer--border { - border-top-width: --var('body-footer-border-width'); border-color: --var('body-footer-border-color'); - &.body__footer--border-ghost { - border-color: --var('body-header-border-color-ghost'); - } } } >.body__main { @apply absolute inset-0; - &.body__main--with-header { + &.body__main--with-header-ghost { >.os-scrollbar-vertical { padding-top: 0px; } } - &.body__main--with-footer { + &.body__main--with-footer-ghost { >.os-scrollbar-vertical { padding-bottom: 0px; } diff --git a/d2/views/dashboard/demo/layout/dashboard/custom.vue b/d2/views/dashboard/demo/layout/dashboard/custom.vue index 22b99c44..6fa93448 100644 --- a/d2/views/dashboard/demo/layout/dashboard/custom.vue +++ b/d2/views/dashboard/demo/layout/dashboard/custom.vue @@ -8,7 +8,10 @@
- 切换顶栏显示 - 切换底栏显示 + 切换顶栏 + 切换底栏 + 切换顶栏边框 + 切换底栏边框
@@ -40,11 +45,25 @@ export default { toggle: footerToggle } = useSwitch(true) + const { + value: headerBorder, + toggle: headerBorderToggle + } = useSwitch(false) + + const { + value: footerBorder, + toggle: footerBorderToggle + } = useSwitch(false) + return { headerActive, headerToggle, footerActive, - footerToggle + footerToggle, + headerBorder, + headerBorderToggle, + footerBorder, + footerBorderToggle } } }