You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.8 KiB
84 lines
2.8 KiB
import { computed, unref } from 'vue' |
|
import type { HeaderSetting } from '@/types/config' |
|
|
|
import { useAppStore } from '@/store/modules/app' |
|
|
|
import { useMenuSetting } from '@/hooks/setting/useMenuSetting' |
|
import { useRootSetting } from '@/hooks/setting/useRootSetting' |
|
import { useFullContent } from '@/hooks/web/useFullContent' |
|
import { MenuModeEnum } from '@/enums/menuEnum' |
|
|
|
export function useHeaderSetting() { |
|
const { getFullContent } = useFullContent() |
|
const appStore = useAppStore() |
|
|
|
const { getMenuMode, getSplit, getShowHeaderTrigger, getIsSidebarType, getIsMixSidebar, getIsTopMenu } = useMenuSetting() |
|
const { getShowBreadCrumb, getShowLogo } = useRootSetting() |
|
|
|
const getShowDoc = computed(() => appStore.getHeaderSetting.showDoc) |
|
|
|
const getHeaderTheme = computed(() => appStore.getHeaderSetting.theme) |
|
|
|
const getShowHeader = computed(() => appStore.getHeaderSetting.show) |
|
|
|
const getFixed = computed(() => appStore.getHeaderSetting.fixed) |
|
|
|
const getHeaderBgColor = computed(() => appStore.getHeaderSetting.bgColor) |
|
|
|
const getShowSearch = computed(() => appStore.getHeaderSetting.showSearch) |
|
|
|
const getUseLockPage = computed(() => appStore.getHeaderSetting.useLockPage) |
|
|
|
const getShowFullScreen = computed(() => appStore.getHeaderSetting.showFullScreen) |
|
|
|
const getShowNotice = computed(() => appStore.getHeaderSetting.showNotice) |
|
|
|
const getShowMixHeaderRef = computed(() => !unref(getIsSidebarType) && unref(getShowHeader)) |
|
|
|
const getShowFullHeaderRef = computed(() => { |
|
return !unref(getFullContent) && unref(getShowMixHeaderRef) && unref(getShowHeader) && !unref(getIsTopMenu) && !unref(getIsMixSidebar) |
|
}) |
|
|
|
const getUnFixedAndFull = computed(() => !unref(getFixed) && !unref(getShowFullHeaderRef)) |
|
|
|
const getShowInsetHeaderRef = computed(() => { |
|
const need = !unref(getFullContent) && unref(getShowHeader) |
|
return (need && !unref(getShowMixHeaderRef)) || (need && unref(getIsTopMenu)) || (need && unref(getIsMixSidebar)) |
|
}) |
|
|
|
const getShowBread = computed(() => { |
|
return unref(getMenuMode) !== MenuModeEnum.HORIZONTAL && unref(getShowBreadCrumb) && !unref(getSplit) |
|
}) |
|
|
|
const getShowHeaderLogo = computed(() => { |
|
return unref(getShowLogo) && !unref(getIsSidebarType) && !unref(getIsMixSidebar) |
|
}) |
|
|
|
const getShowContent = computed(() => { |
|
return unref(getShowBread) || unref(getShowHeaderTrigger) |
|
}) |
|
|
|
// Set header configuration |
|
function setHeaderSetting(headerSetting: Partial<HeaderSetting>) { |
|
appStore.setProjectConfig({ headerSetting }) |
|
} |
|
return { |
|
setHeaderSetting, |
|
getShowDoc, |
|
getShowSearch, |
|
getHeaderTheme, |
|
getUseLockPage, |
|
getShowFullScreen, |
|
getShowNotice, |
|
getShowBread, |
|
getShowContent, |
|
getShowHeaderLogo, |
|
getShowHeader, |
|
getFixed, |
|
getShowMixHeaderRef, |
|
getShowFullHeaderRef, |
|
getShowInsetHeaderRef, |
|
getUnFixedAndFull, |
|
getHeaderBgColor, |
|
} |
|
}
|
|
|