UNPKG

4.67 kBJavaScriptView Raw
1import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3import _extends from "@babel/runtime/helpers/esm/extends";
4import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
5import _createClass from "@babel/runtime/helpers/esm/createClass";
6import _inherits from "@babel/runtime/helpers/esm/inherits";
7import _createSuper from "@babel/runtime/helpers/esm/createSuper";
8import "antd/es/layout/style";
9import _Layout from "antd/es/layout";
10import './Header.less';
11import React, { Component } from 'react';
12import classNames from 'classnames';
13import GlobalHeader from './components/GlobalHeader';
14import TopNavHeader from './components/TopNavHeader';
15import { clearMenuItem } from './utils/utils';
16var Header = _Layout.Header;
17
18var HeaderView = /*#__PURE__*/function (_Component) {
19 _inherits(HeaderView, _Component);
20
21 var _super = _createSuper(HeaderView);
22
23 function HeaderView() {
24 var _this;
25
26 _classCallCheck(this, HeaderView);
27
28 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
29 args[_key] = arguments[_key];
30 }
31
32 _this = _super.call.apply(_super, [this].concat(args));
33
34 _this.renderContent = function () {
35 var _this$props = _this.props,
36 isMobile = _this$props.isMobile,
37 onCollapse = _this$props.onCollapse,
38 navTheme = _this$props.navTheme,
39 layout = _this$props.layout,
40 headerRender = _this$props.headerRender,
41 headerContentRender = _this$props.headerContentRender;
42 var isTop = layout === 'top';
43 var clearMenuData = clearMenuItem(_this.props.menuData || []);
44 var defaultDom = /*#__PURE__*/React.createElement(GlobalHeader, _extends({
45 onCollapse: onCollapse
46 }, _this.props, {
47 menuData: clearMenuData
48 }), headerContentRender && headerContentRender(_this.props, null));
49
50 if (isTop && !isMobile) {
51 defaultDom = /*#__PURE__*/React.createElement(TopNavHeader, _extends({
52 theme: navTheme,
53 mode: "horizontal",
54 onCollapse: onCollapse
55 }, _this.props, {
56 menuData: clearMenuData
57 }));
58 }
59
60 if (headerRender && typeof headerRender === 'function') {
61 return headerRender(_this.props, defaultDom);
62 }
63
64 return defaultDom;
65 };
66
67 return _this;
68 }
69
70 _createClass(HeaderView, [{
71 key: "render",
72 value: function render() {
73 var _classNames;
74
75 var _this$props2 = this.props,
76 fixedHeader = _this$props2.fixedHeader,
77 layout = _this$props2.layout,
78 propsClassName = _this$props2.className,
79 style = _this$props2.style,
80 navTheme = _this$props2.navTheme,
81 collapsed = _this$props2.collapsed,
82 siderWidth = _this$props2.siderWidth,
83 hasSiderMenu = _this$props2.hasSiderMenu,
84 isMobile = _this$props2.isMobile,
85 prefixCls = _this$props2.prefixCls,
86 headerHeight = _this$props2.headerHeight;
87 var needFixedHeader = fixedHeader || layout === 'mix';
88 var isTop = layout === 'top';
89 var needSettingWidth = needFixedHeader && hasSiderMenu && !isTop && !isMobile;
90 var className = classNames(propsClassName, (_classNames = {}, _defineProperty(_classNames, "".concat(prefixCls, "-fixed-header"), needFixedHeader), _defineProperty(_classNames, "".concat(prefixCls, "-fixed-header-action"), !collapsed), _defineProperty(_classNames, "".concat(prefixCls, "-top-menu"), isTop), _defineProperty(_classNames, "".concat(prefixCls, "-header-").concat(navTheme), navTheme && layout !== 'mix'), _classNames));
91 /** 计算侧边栏的宽度,不然导致左边的样式会出问题 */
92
93 var width = layout !== 'mix' && needSettingWidth ? "calc(100% - ".concat(collapsed ? 48 : siderWidth, "px)") : '100%';
94 var right = needFixedHeader ? 0 : undefined;
95 return /*#__PURE__*/React.createElement(React.Fragment, null, needFixedHeader && /*#__PURE__*/React.createElement(Header, {
96 style: {
97 height: headerHeight,
98 lineHeight: "".concat(headerHeight, "px"),
99 background: 'transparent'
100 }
101 }), /*#__PURE__*/React.createElement(Header, {
102 style: _objectSpread({
103 padding: 0,
104 height: headerHeight,
105 lineHeight: "".concat(headerHeight, "px"),
106 width: width,
107 zIndex: layout === 'mix' ? 100 : 19,
108 right: right
109 }, style),
110 className: className
111 }, this.renderContent()));
112 }
113 }]);
114
115 return HeaderView;
116}(Component);
117
118export default HeaderView;
\No newline at end of file