UNPKG

5.39 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports.default = exports.RightContent = void 0;
11
12var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
14var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
15
16var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
17
18var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
19
20var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
21
22var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
23
24var _react = _interopRequireWildcard(require("react"));
25
26var _classnames = _interopRequireDefault(require("classnames"));
27
28var _rcResizeObserver = _interopRequireDefault(require("rc-resize-observer"));
29
30var _SiderMenu = require("../SiderMenu/SiderMenu");
31
32require("./index.less");
33
34var _BaseMenu = _interopRequireDefault(require("../SiderMenu/BaseMenu"));
35
36var _proUtils = require("@ant-design/pro-utils");
37
38var _excluded = ["rightContentRender", "prefixCls"];
39
40/**
41 * 抽离出来是为了防止 rightSize 经常改变导致菜单 render
42 *
43 * @param param0
44 */
45var RightContent = function RightContent(_ref) {
46 var rightContentRender = _ref.rightContentRender,
47 prefixCls = _ref.prefixCls,
48 props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
49
50 var _useState = (0, _react.useState)('auto'),
51 _useState2 = (0, _slicedToArray2.default)(_useState, 2),
52 rightSize = _useState2[0],
53 setRightSize = _useState2[1];
54 /** 减少一下渲染的次数 */
55
56
57 var setRightSizeDebounceFn = (0, _proUtils.useDebounceFn)( /*#__PURE__*/function () {
58 var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(width) {
59 return _regenerator.default.wrap(function _callee$(_context) {
60 while (1) {
61 switch (_context.prev = _context.next) {
62 case 0:
63 setRightSize(width);
64
65 case 1:
66 case "end":
67 return _context.stop();
68 }
69 }
70 }, _callee);
71 }));
72
73 return function (_x) {
74 return _ref2.apply(this, arguments);
75 };
76 }(), 160);
77 return /*#__PURE__*/_react.default.createElement("div", {
78 className: "".concat(prefixCls, "-right-content"),
79 style: {
80 minWidth: rightSize
81 }
82 }, /*#__PURE__*/_react.default.createElement("div", {
83 style: {
84 paddingRight: 8
85 }
86 }, /*#__PURE__*/_react.default.createElement(_rcResizeObserver.default, {
87 onResize: function onResize(_ref3) {
88 var width = _ref3.width;
89 setRightSizeDebounceFn.run(width);
90 }
91 }, rightContentRender && /*#__PURE__*/_react.default.createElement("div", {
92 className: "".concat(prefixCls, "-right-content-resize")
93 }, rightContentRender((0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
94 // 测试专用
95 //@ts-ignore
96 rightContentSize: rightSize
97 }))))));
98};
99
100exports.RightContent = RightContent;
101
102var TopNavHeader = function TopNavHeader(props) {
103 var ref = (0, _react.useRef)(null);
104 var theme = props.theme,
105 onMenuHeaderClick = props.onMenuHeaderClick,
106 contentWidth = props.contentWidth,
107 rightContentRender = props.rightContentRender,
108 propsClassName = props.className,
109 style = props.style,
110 headerContentRender = props.headerContentRender,
111 layout = props.layout;
112 var prefixCls = "".concat(props.prefixCls || 'ant-pro', "-top-nav-header");
113 var headerDom = (0, _SiderMenu.defaultRenderLogoAndTitle)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
114 collapsed: false
115 }), layout === 'mix' ? 'headerTitleRender' : undefined);
116 var className = (0, _classnames.default)(prefixCls, propsClassName, {
117 light: theme === 'light'
118 });
119
120 var defaultDom = /*#__PURE__*/_react.default.createElement(_BaseMenu.default, (0, _extends2.default)({}, props, props.menuProps));
121
122 var headerContentDom = headerContentRender ? headerContentRender === null || headerContentRender === void 0 ? void 0 : headerContentRender(props, defaultDom) : defaultDom;
123 return /*#__PURE__*/_react.default.createElement("div", {
124 className: className,
125 style: style
126 }, /*#__PURE__*/_react.default.createElement("div", {
127 ref: ref,
128 className: "".concat(prefixCls, "-main ").concat(contentWidth === 'Fixed' ? 'wide' : '')
129 }, headerDom && /*#__PURE__*/_react.default.createElement("div", {
130 className: "".concat(prefixCls, "-main-left"),
131 onClick: onMenuHeaderClick
132 }, /*#__PURE__*/_react.default.createElement("div", {
133 className: "".concat(prefixCls, "-logo"),
134 key: "logo",
135 id: "logo"
136 }, headerDom)), /*#__PURE__*/_react.default.createElement("div", {
137 style: {
138 flex: 1
139 },
140 className: "".concat(prefixCls, "-menu")
141 }, headerContentDom), rightContentRender && /*#__PURE__*/_react.default.createElement(RightContent, (0, _extends2.default)({
142 rightContentRender: rightContentRender,
143 prefixCls: prefixCls
144 }, props))));
145};
146
147var _default = TopNavHeader;
148exports.default = _default;
\No newline at end of file