UNPKG

3.84 kBJavaScriptView Raw
1import _extends from "@babel/runtime/helpers/esm/extends";
2import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4import "antd/es/config-provider/style";
5import _ConfigProvider from "antd/es/config-provider";
6import classNames from 'classnames';
7import React, { useContext } from 'react';
8import { clearMenuItem } from '../../utils/utils';
9import { defaultRenderCollapsedButton, defaultRenderLogo, defaultRenderLogoAndTitle } from '../SiderMenu/SiderMenu';
10import TopNavHeader from '../TopNavHeader';
11import './index.less';
12
13var renderLogo = function renderLogo(menuHeaderRender, logoDom) {
14 if (menuHeaderRender === false) {
15 return null;
16 }
17
18 if (menuHeaderRender) {
19 return menuHeaderRender(logoDom, null);
20 }
21
22 return logoDom;
23};
24
25var GlobalHeader = function GlobalHeader(props) {
26 var isMobile = props.isMobile,
27 logo = props.logo,
28 collapsed = props.collapsed,
29 onCollapse = props.onCollapse,
30 _props$collapsedButto = props.collapsedButtonRender,
31 collapsedButtonRender = _props$collapsedButto === void 0 ? defaultRenderCollapsedButton : _props$collapsedButto,
32 rightContentRender = props.rightContentRender,
33 menuHeaderRender = props.menuHeaderRender,
34 onMenuHeaderClick = props.onMenuHeaderClick,
35 propClassName = props.className,
36 style = props.style,
37 layout = props.layout,
38 children = props.children,
39 _props$headerTheme = props.headerTheme,
40 headerTheme = _props$headerTheme === void 0 ? 'dark' : _props$headerTheme,
41 splitMenus = props.splitMenus,
42 menuData = props.menuData,
43 prefixCls = props.prefixCls;
44
45 var _useContext = useContext(_ConfigProvider.ConfigContext),
46 direction = _useContext.direction;
47
48 var baseClassName = "".concat(prefixCls, "-global-header");
49 var className = classNames(propClassName, baseClassName, _defineProperty({}, "".concat(baseClassName, "-layout-").concat(layout), layout && headerTheme === 'dark'));
50
51 if (layout === 'mix' && !isMobile && splitMenus) {
52 var noChildrenMenuData = (menuData || []).map(function (item) {
53 return _objectSpread(_objectSpread({}, item), {}, {
54 children: undefined,
55 routes: undefined
56 });
57 });
58 var clearMenuData = clearMenuItem(noChildrenMenuData);
59 return /*#__PURE__*/React.createElement(TopNavHeader, _extends({
60 mode: "horizontal"
61 }, props, {
62 splitMenus: false,
63 menuData: clearMenuData,
64 theme: headerTheme
65 }));
66 }
67
68 var logoClassNames = classNames("".concat(baseClassName, "-logo"), _defineProperty({}, "".concat(baseClassName, "-logo-rtl"), direction === 'rtl'));
69 var logoDom = /*#__PURE__*/React.createElement("span", {
70 className: logoClassNames,
71 key: "logo"
72 }, /*#__PURE__*/React.createElement("a", null, defaultRenderLogo(logo)));
73 return /*#__PURE__*/React.createElement("div", {
74 className: className,
75 style: _objectSpread({}, style)
76 }, isMobile && renderLogo(menuHeaderRender, logoDom), isMobile && collapsedButtonRender && /*#__PURE__*/React.createElement("span", {
77 className: "".concat(baseClassName, "-collapsed-button"),
78 onClick: function onClick() {
79 if (onCollapse) {
80 onCollapse(!collapsed);
81 }
82 }
83 }, collapsedButtonRender(collapsed)), layout === 'mix' && !isMobile && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
84 className: logoClassNames,
85 onClick: onMenuHeaderClick
86 }, defaultRenderLogoAndTitle(_objectSpread(_objectSpread({}, props), {}, {
87 collapsed: false
88 }), 'headerTitleRender'))), /*#__PURE__*/React.createElement("div", {
89 style: {
90 flex: 1
91 }
92 }, children), rightContentRender && rightContentRender(props));
93};
94
95export default GlobalHeader;
\No newline at end of file