@ant-design/pro-layout
Version:
95 lines (86 loc) • 3.84 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import "antd/es/config-provider/style";
import _ConfigProvider from "antd/es/config-provider";
import './index.less';
import React, { useContext } from 'react';
import classNames from 'classnames';
import { defaultRenderLogo, defaultRenderLogoAndTitle, defaultRenderCollapsedButton } from '../SiderMenu/SiderMenu';
import TopNavHeader from '../TopNavHeader';
import { clearMenuItem } from '../../utils/utils';
var renderLogo = function renderLogo(menuHeaderRender, logoDom) {
if (menuHeaderRender === false) {
return null;
}
if (menuHeaderRender) {
return menuHeaderRender(logoDom, null);
}
return logoDom;
};
var GlobalHeader = function GlobalHeader(props) {
var isMobile = props.isMobile,
logo = props.logo,
collapsed = props.collapsed,
onCollapse = props.onCollapse,
_props$collapsedButto = props.collapsedButtonRender,
collapsedButtonRender = _props$collapsedButto === void 0 ? defaultRenderCollapsedButton : _props$collapsedButto,
rightContentRender = props.rightContentRender,
menuHeaderRender = props.menuHeaderRender,
onMenuHeaderClick = props.onMenuHeaderClick,
propClassName = props.className,
style = props.style,
layout = props.layout,
children = props.children,
_props$headerTheme = props.headerTheme,
headerTheme = _props$headerTheme === void 0 ? 'dark' : _props$headerTheme,
splitMenus = props.splitMenus,
menuData = props.menuData,
prefixCls = props.prefixCls;
var _useContext = useContext(_ConfigProvider.ConfigContext),
direction = _useContext.direction;
var baseClassName = "".concat(prefixCls, "-global-header");
var className = classNames(propClassName, baseClassName, _defineProperty({}, "".concat(baseClassName, "-layout-").concat(layout), layout && headerTheme === 'dark'));
if (layout === 'mix' && !isMobile && splitMenus) {
var noChildrenMenuData = (menuData || []).map(function (item) {
return _objectSpread(_objectSpread({}, item), {}, {
children: undefined,
routes: undefined
});
});
var clearMenuData = clearMenuItem(noChildrenMenuData);
return /*#__PURE__*/React.createElement(TopNavHeader, _extends({
mode: "horizontal"
}, props, {
splitMenus: false,
menuData: clearMenuData,
theme: headerTheme
}));
}
var logoClassNames = classNames("".concat(baseClassName, "-logo"), _defineProperty({}, "".concat(baseClassName, "-logo-rtl"), direction === 'rtl'));
var logoDom = /*#__PURE__*/React.createElement("span", {
className: logoClassNames,
key: "logo"
}, /*#__PURE__*/React.createElement("a", null, defaultRenderLogo(logo)));
return /*#__PURE__*/React.createElement("div", {
className: className,
style: _objectSpread({}, style)
}, isMobile && renderLogo(menuHeaderRender, logoDom), isMobile && collapsedButtonRender && /*#__PURE__*/React.createElement("span", {
className: "".concat(baseClassName, "-collapsed-button"),
onClick: function onClick() {
if (onCollapse) {
onCollapse(!collapsed);
}
}
}, collapsedButtonRender(collapsed)), layout === 'mix' && !isMobile && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
className: logoClassNames,
onClick: onMenuHeaderClick
}, defaultRenderLogoAndTitle(_objectSpread(_objectSpread({}, props), {}, {
collapsed: false
}), 'headerTitleRender'))), /*#__PURE__*/React.createElement("div", {
style: {
flex: 1
}
}, children), rightContentRender && rightContentRender(props));
};
export default GlobalHeader;