import type { HeaderSetting } from '/#/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 getShowBreadTitle = 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, getShowBreadTitle }; }