Commit 5f70ec85 authored by Sendya's avatar Sendya

fix: render props check

parent 6e7be526
...@@ -101,8 +101,8 @@ const layoutConf = reactive({ ...@@ -101,8 +101,8 @@ const layoutConf = reactive({
| loading | layout loading status | boolean | - | | loading | layout loading status | boolean | - |
| layout | layout menu mode, sidemenu: right navigation, topmenu: top navigation | 'side' \| 'top' \| 'mix' | `'side'` | | layout | layout menu mode, sidemenu: right navigation, topmenu: top navigation | 'side' \| 'top' \| 'mix' | `'side'` |
| contentWidth | content mode of layout, Fluid: adaptive, Fixed: fixed width 1200px | 'Fixed' \| 'Fluid' | `Fluid` | | contentWidth | content mode of layout, Fluid: adaptive, Fixed: fixed width 1200px | 'Fixed' \| 'Fluid' | `Fluid` |
| theme | Navigation menu theme | 'light' \| 'dark' | `'light'` | | navTheme | Navigation theme | 'light' \|'dark' | `'light'` |
| navTheme | Navigation Bar theme | 'light' \|'dark' | `'light'` | | headerTheme | Header Bar theme | 'light' \|'dark' | `'light'` |
| menuData | Vue-router `routes` prop | Object | `[{}]` | | menuData | Vue-router `routes` prop | Object | `[{}]` |
| collapsed | control menu's collapse and expansion | boolean | true | | collapsed | control menu's collapse and expansion | boolean | true |
| selectedKeys | menu selected keys | string[] | `[]` | | selectedKeys | menu selected keys | string[] | `[]` |
......
{ {
"name": "@ant-design-vue/pro-layout", "name": "@ant-design-vue/pro-layout",
"version": "3.1.1", "version": "3.1.2",
"license": "MIT", "license": "MIT",
"files": [ "files": [
"dist" "dist"
......
import './index.less' import './index.less';
import { import { computed, defineComponent, onBeforeUnmount, onMounted, unref, PropType } from 'vue';
computed, import { RouteContextProps, useRouteContext } from '../RouteContext';
defineComponent, import { getPropsSlotfn } from '../utils';
onBeforeUnmount, import type { CustomRender } from '../typings';
onMounted,
unref,
PropType,
} from 'vue'
import { RouteContextProps, useRouteContext } from '../RouteContext'
import { getPropsSlotfn } from '../utils'
import type { CustomRender } from '../typings'
export interface FooterToolbarProps { export interface FooterToolbarProps {
extra?: CustomRender | JSX.Element extra?: CustomRender | JSX.Element;
renderContent?: ( renderContent?: (
props: FooterToolbarProps & RouteContextProps & { leftWidth?: string }, props: FooterToolbarProps & RouteContextProps & { leftWidth?: string },
dom: CustomRender | JSX.Element dom: CustomRender | JSX.Element,
) => CustomRender | JSX.Element ) => CustomRender | JSX.Element;
getContainer?: (triggerNode: HTMLElement) => HTMLElement | null getContainer?: (triggerNode: HTMLElement) => HTMLElement | null;
prefixCls?: string prefixCls?: string;
} }
const footerToolbarProps = { const footerToolbarProps = {
extra: { extra: {
type: Object as PropType<FooterToolbarProps['extra']>, type: [Function, Object, Boolean] as PropType<FooterToolbarProps['extra']>,
}, },
renderContent: { renderContent: {
type: [Function, Object] as PropType<FooterToolbarProps['renderContent']>, type: [Function, Object, Boolean] as PropType<FooterToolbarProps['renderContent']>,
}, },
getContainer: { getContainer: {
type: [Function, Object] as PropType<FooterToolbarProps['getContainer']>, type: [Function, Object] as PropType<FooterToolbarProps['getContainer']>,
}, },
prefixCls: { type: String as PropType<string> }, prefixCls: { type: String as PropType<string> },
} };
const FooterToolbar = defineComponent({ const FooterToolbar = defineComponent({
name: 'FooterToolbar', name: 'FooterToolbar',
props: footerToolbarProps, props: footerToolbarProps,
setup(props, { slots }) { setup(props, { slots }) {
const context = useRouteContext() const context = useRouteContext();
const baseClassName = props.prefixCls || context.getPrefixCls('footer-bar') const baseClassName = props.prefixCls || context.getPrefixCls('footer-bar');
const hasFlatMenu = computed(() => { const hasFlatMenu = computed(() => {
return unref(context.flatMenuData).length > 0 return unref(context.flatMenuData).length > 0;
}) });
const width = computed(() => { const width = computed(() => {
const { isMobile, hasSide, siderWidth, layout } = context const { isMobile, hasSide, siderWidth, layout } = context;
if (!siderWidth || layout === 'top') { if (!siderWidth || layout === 'top') {
return '100%' return '100%';
} }
console.log( console.log(
'x', 'x',
...@@ -55,24 +48,24 @@ const FooterToolbar = defineComponent({ ...@@ -55,24 +48,24 @@ const FooterToolbar = defineComponent({
'hasFlatMenu', 'hasFlatMenu',
unref(hasFlatMenu), unref(hasFlatMenu),
'hasSide', 'hasSide',
unref(context.hasSide) unref(context.hasSide),
) );
if (!hasFlatMenu.value && !unref(hasSide)) { if (!hasFlatMenu.value && !unref(hasSide)) {
return '100%' return '100%';
} }
console.log('x2', unref(context.hasSide)) console.log('x2', unref(context.hasSide));
return isMobile ? '100%' : `calc(100% - ${siderWidth}px)` return isMobile ? '100%' : `calc(100% - ${siderWidth}px)`;
}) });
onMounted(() => { onMounted(() => {
context.setHasFooterToolbar && context.setHasFooterToolbar(true) context.setHasFooterToolbar && context.setHasFooterToolbar(true);
}) });
onBeforeUnmount(() => { onBeforeUnmount(() => {
context.setHasFooterToolbar && context.setHasFooterToolbar(false) context.setHasFooterToolbar && context.setHasFooterToolbar(false);
}) });
return () => { return () => {
const extra = getPropsSlotfn(slots, props, 'extra') const extra = getPropsSlotfn(slots, props, 'extra');
const dom = () => { const dom = () => {
return ( return (
<> <>
...@@ -81,8 +74,8 @@ const FooterToolbar = defineComponent({ ...@@ -81,8 +74,8 @@ const FooterToolbar = defineComponent({
</div> </div>
<div class={`${baseClassName}-right`}>{slots.default?.()}</div> <div class={`${baseClassName}-right`}>{slots.default?.()}</div>
</> </>
) );
} };
return ( return (
<div class={baseClassName} style={{ width: width.value }}> <div class={baseClassName} style={{ width: width.value }}>
{props.renderContent {props.renderContent
...@@ -92,13 +85,13 @@ const FooterToolbar = defineComponent({ ...@@ -92,13 +85,13 @@ const FooterToolbar = defineComponent({
...context, ...context,
leftWidth: width.value, leftWidth: width.value,
}, },
dom() dom(),
) )
: dom()} : dom()}
</div> </div>
) );
} };
}, },
}) });
export default FooterToolbar export default FooterToolbar;
...@@ -21,7 +21,7 @@ export default { ...@@ -21,7 +21,7 @@ export default {
}, },
splitMenus: siderMenuProps.splitMenus, splitMenus: siderMenuProps.splitMenus,
menuRender: { menuRender: {
type: [Object, Function] as PropType< type: [Object, Function, Boolean] as PropType<
WithFalse<(props: any /* HeaderViewProps */, defaultDom: CustomRender) => CustomRender> WithFalse<(props: any /* HeaderViewProps */, defaultDom: CustomRender) => CustomRender>
>, >,
default: () => undefined, default: () => undefined,
...@@ -30,7 +30,7 @@ export default { ...@@ -30,7 +30,7 @@ export default {
menuItemRender: siderMenuProps.menuItemRender, menuItemRender: siderMenuProps.menuItemRender,
subMenuItemRender: siderMenuProps.subMenuItemRender, subMenuItemRender: siderMenuProps.subMenuItemRender,
rightContentRender: { rightContentRender: {
type: [Object, Function] as PropType<WithFalse<(props: any) => CustomRender>>, type: [Object, Function, Boolean] as PropType<WithFalse<(props: any) => CustomRender>>,
default: () => undefined, default: () => undefined,
}, },
collapsedButtonRender: siderMenuProps.collapsedButtonRender, collapsedButtonRender: siderMenuProps.collapsedButtonRender,
......
...@@ -18,19 +18,19 @@ const { Header } = Layout; ...@@ -18,19 +18,19 @@ const { Header } = Layout;
export const headerViewProps = { export const headerViewProps = {
...globalHeaderProps, ...globalHeaderProps,
headerRender: { headerRender: {
type: [Object, Function] as PropType< type: [Object, Function, Boolean] as PropType<
WithFalse<(props: any, defaultDom: CustomRender) => CustomRender> WithFalse<(props: any, defaultDom: CustomRender) => CustomRender>
>, >,
default: () => undefined, default: () => undefined,
}, },
headerTitleRender: { headerTitleRender: {
type: [Object, Function] as PropType< type: [Object, Function, Boolean] as PropType<
WithFalse<(props: any, defaultDom: CustomRender) => CustomRender> WithFalse<(props: any, defaultDom: CustomRender) => CustomRender>
>, >,
default: () => undefined, default: () => undefined,
}, },
headerContentRender: { headerContentRender: {
type: [Object, Function] as PropType<WithFalse<(props: any) => CustomRender>>, type: [Object, Function, Boolean] as PropType<WithFalse<(props: any) => CustomRender>>,
default: () => undefined, default: () => undefined,
}, },
hasSiderMenu: PropTypes.looseBool, hasSiderMenu: PropTypes.looseBool,
......
...@@ -12,7 +12,7 @@ import { ...@@ -12,7 +12,7 @@ import {
import omit from 'omit.js'; import omit from 'omit.js';
import { withInstall } from 'ant-design-vue/es/_util/type'; import { withInstall } from 'ant-design-vue/es/_util/type';
import PageHeader, { pageHeaderProps } from 'ant-design-vue/es/page-header'; import PageHeader, { pageHeaderProps } from 'ant-design-vue/es/page-header';
import { Tabs, Affix, Spin, } from 'ant-design-vue'; import { Tabs, Affix, Spin } from 'ant-design-vue';
import { TabPaneProps } from './interfaces/TabPane'; import { TabPaneProps } from './interfaces/TabPane';
import { TabBarExtraContent, TabsProps } from './interfaces/Tabs'; import { TabBarExtraContent, TabsProps } from './interfaces/Tabs';
import { AffixProps } from './interfaces/Affix'; import { AffixProps } from './interfaces/Affix';
...@@ -50,7 +50,7 @@ export const pageHeaderTabConfig = { ...@@ -50,7 +50,7 @@ export const pageHeaderTabConfig = {
* @name tab 上多余的区域 * @name tab 上多余的区域
*/ */
tabBarExtraContent: { tabBarExtraContent: {
type: [Object, Function] as PropType<TabBarExtraContent>, type: [Object, Function, Boolean] as PropType<TabBarExtraContent>,
default: () => undefined, default: () => undefined,
}, },
/** /**
...@@ -206,9 +206,9 @@ const defaultPageHeaderRender = ( ...@@ -206,9 +206,9 @@ const defaultPageHeaderRender = (
if (!title && title !== false) { if (!title && title !== false) {
pageHeaderTitle = value.title; pageHeaderTitle = value.title;
} }
const unrefBreadcrumb = unref(value.breadcrumb || {}) const unrefBreadcrumb = unref(value.breadcrumb || {});
const breadcrumb = restProps.breadcrumb || { const breadcrumb = restProps.breadcrumb || {
...(unrefBreadcrumb), ...unrefBreadcrumb,
routes: unrefBreadcrumb.routes, routes: unrefBreadcrumb.routes,
itemRender: unrefBreadcrumb.itemRender, itemRender: unrefBreadcrumb.itemRender,
}; };
......
...@@ -5,24 +5,24 @@ import { ...@@ -5,24 +5,24 @@ import {
PropType, PropType,
CSSProperties, CSSProperties,
unref, unref,
} from 'vue' } from 'vue';
import 'ant-design-vue/es/layout/style' import 'ant-design-vue/es/layout/style';
import 'ant-design-vue/es/menu/style' import 'ant-design-vue/es/menu/style';
import { Layout, Menu } from 'ant-design-vue' import { Layout, Menu } from 'ant-design-vue';
import { MenuUnfoldOutlined, MenuFoldOutlined } from '@ant-design/icons-vue' import { MenuUnfoldOutlined, MenuFoldOutlined } from '@ant-design/icons-vue';
import BaseMenu, { baseMenuProps } from './BaseMenu' import BaseMenu, { baseMenuProps } from './BaseMenu';
import { WithFalse, CustomRender } from '../typings' import { WithFalse, CustomRender } from '../typings';
import { SiderProps } from './typings' import { SiderProps } from './typings';
import { defaultSettingProps } from '../defaultSettings' import { defaultSettingProps } from '../defaultSettings';
import { useRouteContext } from '../RouteContext' import { useRouteContext } from '../RouteContext';
import { PropTypes, getMenuFirstChildren } from '../utils' import { PropTypes, getMenuFirstChildren } from '../utils';
import './index.less' import './index.less';
const { Sider } = Layout const { Sider } = Layout;
export type PrivateSiderMenuProps = { export type PrivateSiderMenuProps = {
matchMenuKeys?: string[] matchMenuKeys?: string[];
} };
export const siderMenuProps = { export const siderMenuProps = {
...defaultSettingProps, ...defaultSettingProps,
...@@ -39,35 +39,27 @@ export const siderMenuProps = { ...@@ -39,35 +39,27 @@ export const siderMenuProps = {
headerHeight: PropTypes.number.def(48), headerHeight: PropTypes.number.def(48),
collapsedWidth: PropTypes.number.def(48), collapsedWidth: PropTypes.number.def(48),
menuHeaderRender: { menuHeaderRender: {
type: [Function, Object] as PropType< type: [Function, Object, Boolean] as PropType<
WithFalse< WithFalse<(logo: CustomRender, title: CustomRender, props?: any) => CustomRender>
(logo: CustomRender, title: CustomRender, props?: any) => CustomRender
>
>, >,
default: () => undefined, default: () => undefined,
}, },
menuFooterRender: { menuFooterRender: {
type: [Function, Object] as PropType< type: [Function, Object, Boolean] as PropType<WithFalse<(props?: any) => CustomRender>>,
WithFalse<(props?: any) => CustomRender>
>,
default: () => undefined, default: () => undefined,
}, },
menuContentRender: { menuContentRender: {
type: [Function, Object] as PropType< type: [Function, Object, Boolean] as PropType<
WithFalse<(props: any, defaultDom: CustomRender) => CustomRender> WithFalse<(props: any, defaultDom: CustomRender) => CustomRender>
>, >,
default: () => undefined, default: () => undefined,
}, },
menuExtraRender: { menuExtraRender: {
type: [Function, Object] as PropType< type: [Function, Object, Boolean] as PropType<WithFalse<(props?: any) => CustomRender>>,
WithFalse<(props?: any) => CustomRender>
>,
default: () => undefined, default: () => undefined,
}, },
collapsedButtonRender: { collapsedButtonRender: {
type: [Function, Object, Boolean] as PropType< type: [Function, Object, Boolean] as PropType<WithFalse<(collapsed?: boolean) => CustomRender>>,
WithFalse<(collapsed?: boolean) => CustomRender>
>,
default: () => undefined, default: () => undefined,
}, },
breakpoint: { breakpoint: {
...@@ -95,52 +87,49 @@ export const siderMenuProps = { ...@@ -95,52 +87,49 @@ export const siderMenuProps = {
onSelect: { onSelect: {
type: Function as PropType<(selectedKeys: WithFalse<string[]>) => void>, type: Function as PropType<(selectedKeys: WithFalse<string[]>) => void>,
}, },
} };
export type SiderMenuProps = Partial<ExtractPropTypes<typeof siderMenuProps>> export type SiderMenuProps = Partial<ExtractPropTypes<typeof siderMenuProps>>;
export const defaultRenderLogo = ( export const defaultRenderLogo = (logo?: CustomRender, logoStyle?: CSSProperties): CustomRender => {
logo?: CustomRender,
logoStyle?: CSSProperties
): CustomRender => {
if (!logo) { if (!logo) {
return null return null;
} }
if (typeof logo === 'string') { if (typeof logo === 'string') {
return <img src={logo} alt="logo" style={logoStyle} /> return <img src={logo} alt="logo" style={logoStyle} />;
} }
if (typeof logo === 'function') { if (typeof logo === 'function') {
return logo() return logo();
} }
return logo return logo;
} };
export const defaultRenderLogoAndTitle = ( export const defaultRenderLogoAndTitle = (
props: SiderMenuProps, props: SiderMenuProps,
renderKey: string | undefined = 'menuHeaderRender' renderKey: string | undefined = 'menuHeaderRender',
): CustomRender | null => { ): CustomRender | null => {
const { const {
logo = 'https://gw.alipayobjects.com/zos/antfincdn/PmY%24TNNDBI/logo.svg', logo = 'https://gw.alipayobjects.com/zos/antfincdn/PmY%24TNNDBI/logo.svg',
logoStyle, logoStyle,
title, title,
layout, layout,
} = props } = props;
const renderFunction = (props as any)[renderKey || ''] const renderFunction = (props as any)[renderKey || ''];
if (renderFunction === false) { if (renderFunction === false) {
return null return null;
} }
const logoDom = defaultRenderLogo(logo, logoStyle) const logoDom = defaultRenderLogo(logo, logoStyle);
const titleDom = <h1>{title}</h1> const titleDom = <h1>{title}</h1>;
if (layout === 'mix' && renderKey === 'menuHeaderRender') { if (layout === 'mix' && renderKey === 'menuHeaderRender') {
return null return null;
} }
// call menuHeaderRender // call menuHeaderRender
if (typeof renderFunction === 'function') { if (typeof renderFunction === 'function') {
// when collapsed, no render title // when collapsed, no render title
return renderFunction(logoDom, props.collapsed ? null : titleDom, props) return renderFunction(logoDom, props.collapsed ? null : titleDom, props);
} }
if (Array.isArray(renderFunction)) { if (Array.isArray(renderFunction)) {
return <>{renderFunction}</> return <>{renderFunction}</>;
} }
return ( return (
...@@ -148,12 +137,11 @@ export const defaultRenderLogoAndTitle = ( ...@@ -148,12 +137,11 @@ export const defaultRenderLogoAndTitle = (
{logoDom} {logoDom}
{props.collapsed ? null : titleDom} {props.collapsed ? null : titleDom}
</a> </a>
) );
} };
export const defaultRenderCollapsedButton = ( export const defaultRenderCollapsedButton = (collapsed?: boolean): CustomRender =>
collapsed?: boolean collapsed ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />;
): CustomRender => (collapsed ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />)
const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => { const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => {
const { const {
...@@ -170,42 +158,36 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => { ...@@ -170,42 +158,36 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => {
onOpenKeys, onOpenKeys,
onSelect, onSelect,
onMenuHeaderClick, onMenuHeaderClick,
} = props } = props;
const context = useRouteContext() const context = useRouteContext();
const { getPrefixCls } = context const { getPrefixCls } = context;
const baseClassName = getPrefixCls('sider') const baseClassName = getPrefixCls('sider');
const hasSplitMenu = computed( const hasSplitMenu = computed(() => props.layout === 'mix' && props.splitMenus);
() => props.layout === 'mix' && props.splitMenus const sTheme = computed(() => (props.layout === 'mix' && 'light') || props.navTheme);
) const sSideWidth = computed(() => (props.collapsed ? props.collapsedWidth : props.siderWidth));
const sTheme = computed(
() => (props.layout === 'mix' && 'light') || props.navTheme
)
const sSideWidth = computed(() =>
props.collapsed ? props.collapsedWidth : props.siderWidth
)
const classNames = computed(() => { const classNames = computed(() => {
return { return {
[baseClassName]: true, [baseClassName]: true,
[`${baseClassName}-${sTheme.value}`]: true, [`${baseClassName}-${sTheme.value}`]: true,
[`${baseClassName}-${props.layout}`]: true, [`${baseClassName}-${props.layout}`]: true,
[`${baseClassName}-fixed`]: context.fixSiderbar, [`${baseClassName}-fixed`]: context.fixSiderbar,
} };
}) });
const handleSelect = ($event: string[]) => { const handleSelect = ($event: string[]) => {
if (props.onSelect) { if (props.onSelect) {
if (unref(hasSplitMenu)) { if (unref(hasSplitMenu)) {
props.onSelect([context.selectedKeys[0], ...$event]) props.onSelect([context.selectedKeys[0], ...$event]);
return return;
}
props.onSelect($event)
} }
props.onSelect($event);
} }
};
// call menuHeaderRender // call menuHeaderRender
const headerDom = defaultRenderLogoAndTitle(props) const headerDom = defaultRenderLogoAndTitle(props);
const extraDom = menuExtraRender && menuExtraRender(props) const extraDom = menuExtraRender && menuExtraRender(props);
if (hasSplitMenu.value && unref(context.flatMenuData).length === 0) { if (hasSplitMenu.value && unref(context.flatMenuData).length === 0) {
return null return null;
} }
const defaultMenuDom = ( const defaultMenuDom = (
<BaseMenu <BaseMenu
...@@ -226,12 +208,11 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => { ...@@ -226,12 +208,11 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => {
}} }}
class={`${baseClassName}-menu`} class={`${baseClassName}-menu`}
{...{ {...{
'onUpdate:openKeys': ($event: string[]) => 'onUpdate:openKeys': ($event: string[]) => onOpenKeys && onOpenKeys($event),
onOpenKeys && onOpenKeys($event),
'onUpdate:selectedKeys': handleSelect, 'onUpdate:selectedKeys': handleSelect,
}} }}
/> />
) );
return ( return (
<> <>
...@@ -253,16 +234,14 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => { ...@@ -253,16 +234,14 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => {
collapsed={collapsed} collapsed={collapsed}
breakpoint={breakpoint || undefined} breakpoint={breakpoint || undefined}
onCollapse={(collapse: boolean) => { onCollapse={(collapse: boolean) => {
if (props.isMobile) return if (props.isMobile) return;
onCollapse?.(collapse) onCollapse?.(collapse);
}} }}
collapsedWidth={collapsedWidth} collapsedWidth={collapsedWidth}
style={{ style={{
overflow: 'hidden', overflow: 'hidden',
paddingTop: paddingTop:
props.layout === 'mix' && !props.isMobile props.layout === 'mix' && !props.isMobile ? `${props.headerHeight}px` : undefined,
? `${props.headerHeight}px`
: undefined,
}} }}
width={siderWidth} width={siderWidth}
theme={sTheme.value === 'realDark' ? 'dark' : sTheme.value} theme={sTheme.value === 'realDark' ? 'dark' : sTheme.value}
...@@ -289,8 +268,7 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => { ...@@ -289,8 +268,7 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => {
</div> </div>
)} )}
<div style="flex: 1; overflow: hidden auto;"> <div style="flex: 1; overflow: hidden auto;">
{(menuContentRender && menuContentRender(props, defaultMenuDom)) || {(menuContentRender && menuContentRender(props, defaultMenuDom)) || defaultMenuDom}
defaultMenuDom}
</div> </div>
<div class={`${baseClassName}-links`}> <div class={`${baseClassName}-links`}>
{collapsedButtonRender !== false ? ( {collapsedButtonRender !== false ? (
...@@ -304,7 +282,7 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => { ...@@ -304,7 +282,7 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => {
// @ts-ignore // @ts-ignore
onClick={() => { onClick={() => {
if (onCollapse) { if (onCollapse) {
onCollapse(!props.collapsed) onCollapse(!props.collapsed);
} }
}} }}
> >
...@@ -313,20 +291,17 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => { ...@@ -313,20 +291,17 @@ const SiderMenu: FC<SiderMenuProps> = (props: SiderMenuProps) => {
class={`${baseClassName}-collapsed-button`} class={`${baseClassName}-collapsed-button`}
title={false} title={false}
> >
{collapsedButtonRender && {collapsedButtonRender && typeof collapsedButtonRender === 'function'
typeof collapsedButtonRender === 'function'
? collapsedButtonRender(collapsed) ? collapsedButtonRender(collapsed)
: collapsedButtonRender} : collapsedButtonRender}
</Menu.Item> </Menu.Item>
</Menu> </Menu>
) : null} ) : null}
</div> </div>
{menuFooterRender && ( {menuFooterRender && <div class={`${baseClassName}-footer`}>{menuFooterRender(props)}</div>}
<div class={`${baseClassName}-footer`}>{menuFooterRender(props)}</div>
)}
</Sider> </Sider>
</> </>
) );
} };
export default SiderMenu export default SiderMenu;
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