1 | import _extends from "@babel/runtime/helpers/esm/extends";
|
2 | import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
3 | import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
4 | import "antd/es/config-provider/style";
|
5 | import _ConfigProvider from "antd/es/config-provider";
|
6 | import classNames from 'classnames';
|
7 | import React, { useContext } from 'react';
|
8 | import { clearMenuItem } from '../../utils/utils';
|
9 | import { defaultRenderCollapsedButton, defaultRenderLogo, defaultRenderLogoAndTitle } from '../SiderMenu/SiderMenu';
|
10 | import TopNavHeader from '../TopNavHeader';
|
11 | import './index.less';
|
12 |
|
13 | var 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 |
|
25 | var 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 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 = React.createElement("span", {
|
70 | className: logoClassNames,
|
71 | key: "logo"
|
72 | }, React.createElement("a", null, defaultRenderLogo(logo)));
|
73 | return React.createElement("div", {
|
74 | className: className,
|
75 | style: _objectSpread({}, style)
|
76 | }, isMobile && renderLogo(menuHeaderRender, logoDom), isMobile && collapsedButtonRender && 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 && React.createElement(React.Fragment, null, React.createElement("div", {
|
84 | className: logoClassNames,
|
85 | onClick: onMenuHeaderClick
|
86 | }, defaultRenderLogoAndTitle(_objectSpread(_objectSpread({}, props), {}, {
|
87 | collapsed: false
|
88 | }), 'headerTitleRender'))), React.createElement("div", {
|
89 | style: {
|
90 | flex: 1
|
91 | }
|
92 | }, children), rightContentRender && rightContentRender(props));
|
93 | };
|
94 |
|
95 | export default GlobalHeader; |
\ | No newline at end of file |