import type { HeaderSetting } from '@/types/config' import { computed, unref } from 'vue' 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 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 { getMenuMode, getSplit, getShowHeaderTrigger, getIsSidebarType, getIsMixSidebar, getIsTopMenu } = useMenuSetting() const { getShowBreadCrumb, getShowLogo } = useRootSetting() const getShowMixHeaderRef = computed(() => !unref(getIsSidebarType) && unref(getShowHeader)) 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 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) { appStore.setProjectConfig({ headerSetting }) } return { setHeaderSetting, getShowDoc, getShowSearch, getHeaderTheme, getUseLockPage, getShowFullScreen, getShowNotice, getShowBread, getShowContent, getShowHeaderLogo, getShowHeader, getFixed, getShowMixHeaderRef, getShowFullHeaderRef, getShowInsetHeaderRef, getUnFixedAndFull, getHeaderBgColor } }