|
|
|
@ -1,11 +1,13 @@ |
|
|
|
<script lang="ts"> |
|
|
|
import { defineComponent, toRefs, ref } from 'vue'; |
|
|
|
import { defineComponent, toRefs, ref, unref } from 'vue'; |
|
|
|
|
|
|
|
import { createAppProviderContext } from './useAppContext'; |
|
|
|
|
|
|
|
import designSetting from '/@/settings/designSetting'; |
|
|
|
import { createBreakpointListen } from '/@/hooks/event/useBreakpoint'; |
|
|
|
import { propTypes } from '/@/utils/propTypes'; |
|
|
|
import { appStore } from '/@/store/modules/app'; |
|
|
|
import { MenuModeEnum, MenuTypeEnum } from '/@/enums/menuEnum'; |
|
|
|
|
|
|
|
export default defineComponent({ |
|
|
|
name: 'AppProvider', |
|
|
|
@ -14,18 +16,56 @@ |
|
|
|
prefixCls: propTypes.string.def(designSetting.prefixCls), |
|
|
|
}, |
|
|
|
setup(props, { slots }) { |
|
|
|
const isMobileRef = ref(false); |
|
|
|
const isMobile = ref(false); |
|
|
|
const isSetState = ref(false); |
|
|
|
|
|
|
|
createBreakpointListen(({ screenMap, sizeEnum, width }) => { |
|
|
|
const lgWidth = screenMap.get(sizeEnum.LG); |
|
|
|
if (lgWidth) { |
|
|
|
isMobileRef.value = width.value - 1 < lgWidth; |
|
|
|
isMobile.value = width.value - 1 < lgWidth; |
|
|
|
} |
|
|
|
handleRestoreState(); |
|
|
|
}); |
|
|
|
|
|
|
|
const { prefixCls } = toRefs(props); |
|
|
|
createAppProviderContext({ prefixCls, isMobile: isMobileRef }); |
|
|
|
createAppProviderContext({ prefixCls, isMobile }); |
|
|
|
|
|
|
|
function handleRestoreState() { |
|
|
|
if (unref(isMobile)) { |
|
|
|
if (!unref(isSetState)) { |
|
|
|
isSetState.value = true; |
|
|
|
const { |
|
|
|
menuSetting: { |
|
|
|
type: menuType, |
|
|
|
mode: menuMode, |
|
|
|
collapsed: menuCollapsed, |
|
|
|
split: menuSplit, |
|
|
|
}, |
|
|
|
} = appStore.getProjectConfig; |
|
|
|
appStore.commitProjectConfigState({ |
|
|
|
menuSetting: { |
|
|
|
type: MenuTypeEnum.SIDEBAR, |
|
|
|
mode: MenuModeEnum.INLINE, |
|
|
|
split: false, |
|
|
|
}, |
|
|
|
}); |
|
|
|
appStore.commitBeforeMiniState({ menuMode, menuCollapsed, menuType, menuSplit }); |
|
|
|
} |
|
|
|
} else { |
|
|
|
if (unref(isSetState)) { |
|
|
|
isSetState.value = false; |
|
|
|
const { menuMode, menuCollapsed, menuType, menuSplit } = appStore.getBeforeMiniState; |
|
|
|
appStore.commitProjectConfigState({ |
|
|
|
menuSetting: { |
|
|
|
type: menuType, |
|
|
|
mode: menuMode, |
|
|
|
collapsed: menuCollapsed, |
|
|
|
split: menuSplit, |
|
|
|
}, |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return () => slots.default?.(); |
|
|
|
}, |
|
|
|
}); |
|
|
|
|