Commit 4d986e46 authored by ref's avatar ref Committed by 言肆

fix: get isMobile props from RouteContext

parent ba39810c
...@@ -9,6 +9,7 @@ import { default as Header, HeaderViewProps } from './Header'; ...@@ -9,6 +9,7 @@ import { default as Header, HeaderViewProps } from './Header';
import { RenderVNodeType, WithFalse } from './typings'; import { RenderVNodeType, WithFalse } from './typings';
import { getComponentOrSlot, PropRenderType, PropTypes } from './utils'; import { getComponentOrSlot, PropRenderType, PropTypes } from './utils';
import './BasicLayout.less'; import './BasicLayout.less';
import { useRouteContext } from './RouteContext';
const defaultI18nRender = (key: string) => key; const defaultI18nRender = (key: string) => key;
...@@ -60,9 +61,10 @@ const ProLayout: FunctionalComponent<BasicLayoutProps> = (props, { emit, slots } ...@@ -60,9 +61,10 @@ const ProLayout: FunctionalComponent<BasicLayoutProps> = (props, { emit, slots }
matchMenuKeys, matchMenuKeys,
navTheme, navTheme,
menuData, menuData,
isMobile,
// defaultCollapsed, // defaultCollapsed,
} = props; } = props;
const routeContext = useRouteContext();
const { isMobile } = routeContext;
const isTop = computed(() => layout === 'top'); const isTop = computed(() => layout === 'top');
// const isSide = computed(() => layout === 'side'); // const isSide = computed(() => layout === 'side');
// const isMix = computed(() => layout === 'mix'); // const isMix = computed(() => layout === 'mix');
......
...@@ -13,6 +13,7 @@ import { clearMenuItem } from '../utils'; ...@@ -13,6 +13,7 @@ import { clearMenuItem } from '../utils';
import type { HeaderViewProps } from '../Header'; import type { HeaderViewProps } from '../Header';
import './index.less'; import './index.less';
import { useProProvider } from '../ProProvider'; import { useProProvider } from '../ProProvider';
import { useRouteContext } from '../RouteContext';
export interface GlobalHeaderProps extends Partial<PureSettings> { export interface GlobalHeaderProps extends Partial<PureSettings> {
collapsed?: boolean; collapsed?: boolean;
...@@ -51,7 +52,6 @@ export const GlobalHeader: FunctionalComponent<GlobalHeaderProps & PrivateSiderM ...@@ -51,7 +52,6 @@ export const GlobalHeader: FunctionalComponent<GlobalHeaderProps & PrivateSiderM
{ slots }, { slots },
) => { ) => {
const { const {
isMobile,
logo, logo,
collapsed, collapsed,
onCollapse, onCollapse,
...@@ -66,6 +66,8 @@ export const GlobalHeader: FunctionalComponent<GlobalHeaderProps & PrivateSiderM ...@@ -66,6 +66,8 @@ export const GlobalHeader: FunctionalComponent<GlobalHeaderProps & PrivateSiderM
menuData, menuData,
prefixCls: customPrefixCls, prefixCls: customPrefixCls,
} = props; } = props;
const routeContext = useRouteContext();
const { isMobile } = routeContext;
const { getPrefixCls } = useProProvider(); const { getPrefixCls } = useProProvider();
const prefixCls = customPrefixCls || getPrefixCls(); const prefixCls = customPrefixCls || getPrefixCls();
const baseClassName = computed(() => `${prefixCls}-global-header`); const baseClassName = computed(() => `${prefixCls}-global-header`);
......
...@@ -68,7 +68,6 @@ export const HeaderView = defineComponent({ ...@@ -68,7 +68,6 @@ export const HeaderView = defineComponent({
prefixCls, prefixCls,
headerRender, headerRender,
headerContentRender, headerContentRender,
isMobile,
fixedHeader, fixedHeader,
hasSiderMenu, hasSiderMenu,
headerHeight, headerHeight,
...@@ -77,10 +76,11 @@ export const HeaderView = defineComponent({ ...@@ -77,10 +76,11 @@ export const HeaderView = defineComponent({
onCollapse, onCollapse,
} = toRefs(props); } = toRefs(props);
const context = useRouteContext(); const context = useRouteContext();
const { isMobile } = context;
const needFixedHeader = computed(() => fixedHeader.value || layout.value === 'mix'); const needFixedHeader = computed(() => fixedHeader.value || layout.value === 'mix');
const isTop = computed(() => layout.value === 'top'); const isTop = computed(() => layout.value === 'top');
const needSettingWidth = computed( const needSettingWidth = computed(
() => needFixedHeader.value && hasSiderMenu.value && !isTop.value && !isMobile.value, () => needFixedHeader.value && hasSiderMenu.value && !isTop.value && !isMobile,
); );
// cache menu // cache menu
const clearMenuData = computed( const clearMenuData = computed(
...@@ -99,7 +99,7 @@ export const HeaderView = defineComponent({ ...@@ -99,7 +99,7 @@ export const HeaderView = defineComponent({
{headerContentRender && headerContentRender.value && headerContentRender.value(props)} {headerContentRender && headerContentRender.value && headerContentRender.value(props)}
</GlobalHeader> </GlobalHeader>
); );
if (isTop.value && !isMobile.value) { if (isTop.value && !isMobile) {
defaultDom = ( defaultDom = (
<TopNavHeader <TopNavHeader
theme={navTheme.value as 'light' | 'dark'} theme={navTheme.value as 'light' | 'dark'}
......
...@@ -4,11 +4,14 @@ import 'ant-design-vue/es/drawer/style'; ...@@ -4,11 +4,14 @@ import 'ant-design-vue/es/drawer/style';
import Drawer from 'ant-design-vue/es/drawer'; import Drawer from 'ant-design-vue/es/drawer';
import SiderMenu, { SiderMenuProps, PrivateSiderMenuProps } from './SiderMenu'; import SiderMenu, { SiderMenuProps, PrivateSiderMenuProps } from './SiderMenu';
import { useRouteContext } from '../RouteContext';
export type SiderMenuWrapperProps = SiderMenuProps & Partial<PrivateSiderMenuProps>; export type SiderMenuWrapperProps = SiderMenuProps & Partial<PrivateSiderMenuProps>;
const SiderMenuWrapper: FunctionalComponent<SiderMenuWrapperProps> = props => { const SiderMenuWrapper: FunctionalComponent<SiderMenuWrapperProps> = props => {
return props.isMobile ? ( const routeContext = useRouteContext();
const { isMobile } = routeContext;
return isMobile ? (
<Drawer> <Drawer>
<SiderMenu {...props} /> <SiderMenu {...props} />
</Drawer> </Drawer>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment