import React, { useRef, useState } from 'react'; import classNames from 'classnames'; import ResizeObserver from 'rc-resize-observer'; import type { SiderMenuProps, PrivateSiderMenuProps } from '../SiderMenu/SiderMenu'; import { defaultRenderLogoAndTitle } from '../SiderMenu/SiderMenu'; import './index.less'; import BaseMenu from '../SiderMenu/BaseMenu'; import type { GlobalHeaderProps } from '../GlobalHeader'; export type TopNavHeaderProps = SiderMenuProps & GlobalHeaderProps & PrivateSiderMenuProps & {}; /** * 抽离出来是为了防止 rightSize 经常改变导致菜单 render * * @param param0 */ const RightContent: React.FC = ({ rightContentRender, ...props }) => { const [rightSize, setRightSize] = useState('auto'); return (
{ setRightSize(width); }} > {rightContentRender && (
{rightContentRender({ ...props, })}
)}
); }; const TopNavHeader: React.FC = (props) => { const ref = useRef(null); const { theme, onMenuHeaderClick, contentWidth, rightContentRender, className: propsClassName, style, layout, } = props; const prefixCls = `${props.prefixCls || 'ant-pro'}-top-nav-header`; const headerDom = defaultRenderLogoAndTitle( { ...props, collapsed: false }, layout === 'mix' ? 'headerTitleRender' : undefined, ); const className = classNames(prefixCls, propsClassName, { light: theme === 'light', }); return (
{headerDom && (
)}
{rightContentRender && }
); }; export default TopNavHeader;