tntd 1.3.57 → 1.3.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/babel.config.js +2 -2
  2. package/components/Layout/Application.js +1 -1
  3. package/components/QueryForm/Field/index.js +2 -1
  4. package/components/QueryListScene/List.js +17 -13
  5. package/lib/0645cf743e4e44ca9da321d689897f07.png +0 -0
  6. package/lib/09db77de0c24fa0f45f8a5cf299a3d11.png +0 -0
  7. package/lib/1d0b52448de217857b270af807e9360d.png +0 -0
  8. package/lib/25d78d77c9c2f0d403e5d899ceb5b1ef.png +0 -0
  9. package/lib/27fa44ff0c98e1594d79b73045aabedf.png +0 -0
  10. package/lib/2c95075adb68d6131b59cae9fa554ec2.png +0 -0
  11. package/lib/377c871d922a25c773a9e7c2f42ed7c0.png +0 -0
  12. package/lib/3d901589b40bd56ff1fde2bbb700bfe1.png +0 -0
  13. package/lib/4abe481e130d7be0574e45573de8beb7.png +0 -0
  14. package/lib/95ee2260a509cd630d89c5367ed1973b.png +0 -0
  15. package/lib/ArrayInput/icon.js +31 -27
  16. package/lib/ArrayInput/index.js +298 -211
  17. package/lib/AuthContext.js +13 -2
  18. package/lib/BlockHeader/README.md +83 -0
  19. package/lib/BlockHeader/fonts/OswaldLight.ttf +0 -0
  20. package/lib/BlockHeader/index.js +42 -0
  21. package/lib/BlockHeader/index.less +141 -0
  22. package/lib/Columns/index.js +100 -71
  23. package/lib/DevelopmentLogin/LoginModal.js +141 -79
  24. package/lib/DevelopmentLogin/index.js +55 -28
  25. package/lib/Ellipsis/Svg/CopySVG.js +71 -23
  26. package/lib/Ellipsis/Svg/TickSVG.js +49 -17
  27. package/lib/Ellipsis/index.js +155 -149
  28. package/lib/Handle/index.js +109 -72
  29. package/lib/Icon/fonts/iconfont.js +43 -1
  30. package/lib/Icon/iconList.js +8 -119
  31. package/lib/Icon/index.js +45 -13
  32. package/lib/Img/Contain.js +81 -49
  33. package/lib/Img/Cover.js +136 -88
  34. package/lib/Img/index.js +89 -36
  35. package/lib/Layout/ActionsContext.js +11 -2
  36. package/lib/Layout/AppList.js +256 -262
  37. package/lib/Layout/Application.js +135 -119
  38. package/lib/Layout/Avatar.js +137 -137
  39. package/lib/Layout/CompatibleLanguage.js +195 -214
  40. package/lib/Layout/EnterpriseLayout/Avatar.js +168 -156
  41. package/lib/Layout/EnterpriseLayout/Language.js +100 -75
  42. package/lib/Layout/EnterpriseLayout/Theme.js +94 -96
  43. package/lib/Layout/EnterpriseLayout/index.js +45 -32
  44. package/lib/Layout/GlobalNavigation/NavigationPopup.js +407 -335
  45. package/lib/Layout/GlobalNavigation/index.js +158 -110
  46. package/lib/Layout/Header.js +116 -165
  47. package/lib/Layout/HeaderActions.js +129 -170
  48. package/lib/Layout/HeaderNavs.js +113 -90
  49. package/lib/Layout/HeaderTabs.js +278 -312
  50. package/lib/Layout/Iconfont.js +15 -2
  51. package/lib/Layout/Language.js +102 -63
  52. package/lib/Layout/Layout.js +261 -272
  53. package/lib/Layout/Logo.js +87 -132
  54. package/lib/Layout/OrgAppList.js +319 -440
  55. package/lib/Layout/SideMenu.js +343 -429
  56. package/lib/Layout/Theme.js +124 -95
  57. package/lib/Layout/checkAuth.js +35 -21
  58. package/lib/Layout/createActions.js +51 -38
  59. package/lib/Layout/images/index.js +41 -33
  60. package/lib/Layout/index.js +161 -110
  61. package/lib/Layout/locale.js +53 -0
  62. package/lib/Layout/paaslayout/CompactSideMenu.js +178 -200
  63. package/lib/Layout/paaslayout/Header.js +90 -84
  64. package/lib/Layout/paaslayout/Logo.js +32 -27
  65. package/lib/Layout/paaslayout/SideMenu.js +174 -161
  66. package/lib/Layout/paaslayout/index.js +261 -240
  67. package/lib/Layout/paaslayout/index.less +75 -0
  68. package/lib/Layout/storage.js +78 -20
  69. package/lib/Layout/utils.js +143 -93
  70. package/lib/LoadingButton/index.js +57 -29
  71. package/lib/Modal/index.js +108 -83
  72. package/lib/Page/Box.js +81 -56
  73. package/lib/Page/index.js +173 -151
  74. package/lib/Page/utils.js +30 -12
  75. package/lib/QueryForm/Field/Checkbox.js +33 -11
  76. package/lib/QueryForm/Field/Select.js +99 -63
  77. package/lib/QueryForm/Field/SelectInput.js +114 -69
  78. package/lib/QueryForm/Field/fieldsMap.js +52 -30
  79. package/lib/QueryForm/Field/index.js +158 -75
  80. package/lib/QueryForm/createActions.js +65 -50
  81. package/lib/QueryForm/index.js +382 -303
  82. package/lib/QueryForm/useForm.js +17 -6
  83. package/lib/QueryListScene/Field/SelectInput.js +115 -0
  84. package/lib/QueryListScene/Field/fieldsMap.js +52 -0
  85. package/lib/QueryListScene/Field/index.js +159 -0
  86. package/lib/QueryListScene/Field/select.js +100 -0
  87. package/lib/QueryListScene/List.js +362 -285
  88. package/lib/QueryListScene/QueryForm/index.js +423 -0
  89. package/lib/QueryListScene/QueryForm/index.less +141 -0
  90. package/lib/QueryListScene/QueryForm.js +159 -91
  91. package/lib/QueryListScene/QueryListScene.js +87 -33
  92. package/lib/QueryListScene/Title.js +20 -10
  93. package/lib/QueryListScene/Toolbar.js +31 -8
  94. package/lib/QueryListScene/createActions.js +79 -64
  95. package/lib/QueryListScene/index.js +40 -23
  96. package/lib/QueryListScene/useActions.js +17 -6
  97. package/lib/Select/DropDownWrap.js +124 -60
  98. package/lib/Select/index.js +563 -426
  99. package/lib/Table/ResizableTable/index.js +121 -77
  100. package/lib/Table/index.js +51 -19
  101. package/lib/Title/index.js +52 -34
  102. package/lib/b9dd5ff3622296fbee51ed68f4bca1bf.png +0 -0
  103. package/lib/bd2921989f9296089ba58efb7a76f3ef.png +0 -0
  104. package/lib/index.html +6 -0
  105. package/lib/index.js +159 -19
  106. package/lib/locale.js +63 -48
  107. package/lib/main.css +16420 -0
  108. package/lib/tntd.js +2 -0
  109. package/lib/tntd.js.LICENSE.txt +36 -0
  110. package/package.json +1 -1
@@ -1,348 +1,420 @@
1
- import { useState, useEffect } from 'react';
2
- import cn from 'classnames';
3
- import styled from 'styled-components';
4
- import { debounce } from 'lodash';
5
- import { traverseTree, hasLevel3 } from '../utils';
6
- import Icon from '../Iconfont';
7
- import { getText } from '../../locale';
8
-
9
- const SearchArea = styled.div`
10
- position: relative;
11
- font-size: 14px;
12
- margin-bottom: 20px;
13
- color: ${props => props.theme.secondaryTextColor};
14
- &.active {
15
- color: ${props => props.theme.primaryColor};
16
- input {
17
- border-color: ${props => props.theme.primaryColor};
18
- }
19
- }
20
- .tnt-icon {
21
- position: absolute;
22
- top: 50%;
23
- transform: translateY(-50%);
24
- line-height: 1em;
25
- &[type="close"] {
26
- right: 0;
27
- top: 0;
28
- font-size: 18px;
29
- cursor: pointer;
30
- }
31
- }
32
- input {
33
- border-width: 0 0 1px;
34
- border-style: solid;
35
- border-color: ${props => props.theme.borderColor};
36
- width: 100%;
37
- padding: 4px 20px;
38
- line-height: 20px;
39
- background-color: transparent;
40
- outline: none;
41
- }
42
- `;
43
-
44
- const ApplicationTabs = styled.ul`
45
- border: 1px solid ${props => props.theme.borderColor};
46
- color: ${props => props.theme.primaryTextColor};
47
- line-height: 32px;
48
- margin: 0 0 16px;
49
- padding: 0;
50
- display: inline-block;
51
-
52
- & > li {
53
- padding: 0 20px;
54
- display: inline-block;
55
- cursor: pointer;
56
- &:not(:last-child) {
57
- border-right: 1px solid ${props => props.theme.borderColor};
58
- }
59
- &.active {
60
- background-color: ${props => props.theme.primaryColor};
61
- color: #fff;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+
12
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
+
14
+ var _lodash = require("lodash");
15
+
16
+ var _utils = require("../utils");
17
+
18
+ var _Iconfont = _interopRequireDefault(require("../Iconfont"));
19
+
20
+ var _locale = require("../../locale");
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
+
24
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
25
+
26
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
27
+
28
+ function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
29
+
30
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
31
+
32
+ function _templateObject7() {
33
+ var data = _taggedTemplateLiteral(["\n background: #fff;\n max-height: 320px;\n overflow-y: auto;\n margin: 0;\n padding: 6px 0;\n list-style: none;\n font-size: 13px;\n position: absolute;\n top: 29px;\n width: 100%;\n box-shadow: 0 3px 6px -4px rgba(0,0,0,.12), 0 6px 16px 0 rgba(0,0,0,.08), 0 9px 28px 8px rgba(0,0,0,.05);\n li {\n cursor: pointer;\n line-height: 32px;\n padding: 0 10px;\n color: ", ";\n &:hover {\n color: ", ";\n background-color: ", ";\n }\n }\n"]);
34
+
35
+ _templateObject7 = function _templateObject7() {
36
+ return data;
37
+ };
38
+
39
+ return data;
40
+ }
41
+
42
+ function _templateObject6() {
43
+ var data = _taggedTemplateLiteral(["\n display: block;\n line-height: 30px;\n font-size: 12px;\n cursor: pointer;\n a {\n color: ", ";\n &:hover {\n color: ", " !important;\n }\n }\n &.active a {\n color: ", ";\n }\n"]);
44
+
45
+ _templateObject6 = function _templateObject6() {
46
+ return data;
47
+ };
48
+
49
+ return data;
50
+ }
51
+
52
+ function _templateObject5() {
53
+ var data = _taggedTemplateLiteral(["\n list-style: none;\n padding: 0;\n margin: 0;\n"]);
54
+
55
+ _templateObject5 = function _templateObject5() {
56
+ return data;
57
+ };
58
+
59
+ return data;
60
+ }
61
+
62
+ function _templateObject4() {
63
+ var data = _taggedTemplateLiteral(["\n margin-bottom: 20px;\n & > h5 {\n line-height: 20px;\n margin: 0;\n margin-bottom: 6px;\n }\n"]);
64
+
65
+ _templateObject4 = function _templateObject4() {
66
+ return data;
67
+ };
68
+
69
+ return data;
70
+ }
71
+
72
+ function _templateObject3() {
73
+ var data = _taggedTemplateLiteral(["\n height: ", ";\n overflow: auto;\n & > div {\n width: 200px;\n margin-right: 10px;\n display: inline-block;\n vertical-align: top;\n }\n"]);
74
+
75
+ _templateObject3 = function _templateObject3() {
76
+ return data;
77
+ };
78
+
79
+ return data;
80
+ }
81
+
82
+ function _templateObject2() {
83
+ var data = _taggedTemplateLiteral(["\n border: 1px solid ", ";\n color: ", ";\n line-height: 32px;\n margin: 0 0 16px;\n padding: 0;\n display: inline-block;\n\n & > li {\n padding: 0 20px;\n display: inline-block;\n cursor: pointer;\n &:not(:last-child) {\n border-right: 1px solid ", ";\n }\n &.active {\n background-color: ", ";\n color: #fff;\n }\n }\n"]);
84
+
85
+ _templateObject2 = function _templateObject2() {
86
+ return data;
87
+ };
88
+
89
+ return data;
90
+ }
91
+
92
+ function _templateObject() {
93
+ var data = _taggedTemplateLiteral(["\n position: relative;\n font-size: 14px;\n margin-bottom: 20px;\n color: ", ";\n &.active {\n color: ", ";\n input {\n border-color: ", ";\n }\n }\n .tnt-icon {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n line-height: 1em;\n &[type=\"close\"] {\n right: 0;\n top: 0;\n font-size: 18px;\n cursor: pointer;\n }\n }\n input {\n border-width: 0 0 1px;\n border-style: solid;\n border-color: ", ";\n width: 100%;\n padding: 4px 20px;\n line-height: 20px;\n background-color: transparent;\n outline: none;\n }\n"]);
94
+
95
+ _templateObject = function _templateObject() {
96
+ return data;
97
+ };
98
+
99
+ return data;
100
+ }
101
+
102
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
103
+
104
+ var SearchArea = _styledComponents["default"].div(_templateObject(), function (props) {
105
+ return props.theme.secondaryTextColor;
106
+ }, function (props) {
107
+ return props.theme.primaryColor;
108
+ }, function (props) {
109
+ return props.theme.primaryColor;
110
+ }, function (props) {
111
+ return props.theme.borderColor;
112
+ });
113
+
114
+ var ApplicationTabs = _styledComponents["default"].ul(_templateObject2(), function (props) {
115
+ return props.theme.borderColor;
116
+ }, function (props) {
117
+ return props.theme.primaryTextColor;
118
+ }, function (props) {
119
+ return props.theme.borderColor;
120
+ }, function (props) {
121
+ return props.theme.primaryColor;
122
+ });
123
+
124
+ var GroupMenus = _styledComponents["default"].div(_templateObject3(), function (props) {
125
+ return props.isLevel3 ? 'calc(100% - 80px)' : 'calc(100% - 50px)';
126
+ });
127
+
128
+ var GroupMenuItem = _styledComponents["default"].div(_templateObject4());
129
+
130
+ var MenuList = _styledComponents["default"].ul(_templateObject5());
131
+
132
+ var MenuItem = _styledComponents["default"].li(_templateObject6(), function (props) {
133
+ return props.theme.secondaryTextColor;
134
+ }, function (props) {
135
+ return props.theme.secondaryColor;
136
+ }, function (props) {
137
+ return props.theme.primaryColor;
138
+ });
139
+
140
+ var ListBox = _styledComponents["default"].ul(_templateObject7(), function (props) {
141
+ return props.theme.primaryTextColor;
142
+ }, function (props) {
143
+ return props.theme.secondaryColor;
144
+ }, function (props) {
145
+ return props.theme.lightBgColor;
146
+ });
147
+
148
+ var SearchList = function SearchList(_ref) {
149
+ var items = _ref.items,
150
+ onSelectMenu = _ref.onSelectMenu,
151
+ theme = _ref.theme;
152
+ return React.createElement(ListBox, {
153
+ theme: theme
154
+ }, items == null ? void 0 : items.map(function (item) {
155
+ return React.createElement("li", {
156
+ onClick: function onClick() {
157
+ return onSelectMenu(item);
158
+ }
159
+ }, item == null ? void 0 : item.menuName);
160
+ }));
161
+ };
162
+
163
+ var _default = function _default(_ref2) {
164
+ var theme = _ref2.theme,
165
+ _ref2$menus = _ref2.menus,
166
+ menus = _ref2$menus === void 0 ? [] : _ref2$menus,
167
+ close = _ref2.close,
168
+ actions = _ref2.actions,
169
+ popupRef = _ref2.popupRef,
170
+ containerRef = _ref2.containerRef;
171
+
172
+ var _useState = (0, _react.useState)(false),
173
+ _useState2 = _slicedToArray(_useState, 2),
174
+ active = _useState2[0],
175
+ setActive = _useState2[1];
176
+
177
+ var _useState3 = (0, _react.useState)(),
178
+ _useState4 = _slicedToArray(_useState3, 2),
179
+ searchValue = _useState4[0],
180
+ setSearchValue = _useState4[1];
181
+
182
+ var language = actions == null ? void 0 : actions.getLanguage();
183
+ var isLevel3 = (0, _utils.hasLevel3)(menus);
184
+
185
+ var _useState5 = (0, _react.useState)(isLevel3 ? menus == null ? void 0 : menus[0] : null),
186
+ _useState6 = _slicedToArray(_useState5, 2),
187
+ activeTopMenu = _useState6[0],
188
+ setActiveTopMenu = _useState6[1];
189
+
190
+ var selectedMenuKey = actions.getSelectedMenuKey();
191
+
192
+ var calcGroupMenus = function calcGroupMenus(menus) {
193
+ var _menus, _menus2;
194
+
195
+ menus = (_menus = menus) == null ? void 0 : _menus.reduce(function (acc, cur) {
196
+ var _cur$children;
197
+
198
+ // 分组
199
+ if (cur == null ? void 0 : (_cur$children = cur.children) == null ? void 0 : _cur$children.length) {
200
+ acc.push(cur);
201
+ } else {
202
+ var defaultGroup = acc.find(function (_ref3) {
203
+ var isDefaultGroup = _ref3.isDefaultGroup;
204
+ return isDefaultGroup;
205
+ });
206
+
207
+ if (!defaultGroup) {
208
+ acc.unshift({
209
+ isDefaultGroup: true,
210
+ children: [cur]
211
+ });
212
+ } else {
213
+ defaultGroup.children.push(cur);
62
214
  }
63
- }
64
- `;
65
-
66
- const GroupMenus = styled.div`
67
- height: ${props => props.isLevel3 ? 'calc(100% - 80px)' : 'calc(100% - 50px)'};
68
- overflow: auto;
69
- & > div {
70
- width: 200px;
71
- margin-right: 10px;
72
- display: inline-block;
73
- vertical-align: top;
74
- }
75
- `;
76
-
77
- const GroupMenuItem = styled.div`
78
- margin-bottom: 20px;
79
- & > h5 {
80
- line-height: 20px;
81
- margin: 0;
82
- margin-bottom: 6px;
83
- }
84
- `;
85
-
86
- const MenuList = styled.ul`
87
- list-style: none;
88
- padding: 0;
89
- margin: 0;
90
- `;
91
-
92
- const MenuItem = styled.li`
93
- display: block;
94
- line-height: 30px;
95
- font-size: 12px;
96
- cursor: pointer;
97
- a {
98
- color: ${props => props.theme.secondaryTextColor};
99
- &:hover {
100
- color: ${props => props.theme.secondaryColor} !important;
215
+ }
216
+
217
+ return acc;
218
+ }, []);
219
+ return (_menus2 = menus) == null ? void 0 : _menus2.reduce(function (acc, cur) {
220
+ var column = Math.max(1, ~~((containerRef.current.clientWidth - 32) / 210));
221
+
222
+ if (!acc.length) {
223
+ acc.push([cur]);
224
+ } else {
225
+ var calcGroupHeight = function calcGroupHeight(group) {
226
+ var _group$children;
227
+
228
+ return 46 + ((group == null ? void 0 : (_group$children = group.children) == null ? void 0 : _group$children.length) || 0) * 30;
229
+ };
230
+
231
+ var calcColumnHeight = function calcColumnHeight(columnGroups) {
232
+ return columnGroups == null ? void 0 : columnGroups.reduce(function (acc, cur) {
233
+ acc += calcGroupHeight(cur);
234
+ return acc;
235
+ }, 0);
236
+ };
237
+
238
+ var currentColumnHeight = calcColumnHeight(acc[acc.length - 1]);
239
+ var nextGroupHeight = calcGroupHeight(cur);
240
+
241
+ var findMinHeightGroup = function findMinHeightGroup(groups) {
242
+ var minHeight = Infinity;
243
+ var index = 0;
244
+
245
+ for (var i = 0; i < groups.length; i++) {
246
+ var height = calcColumnHeight(groups[i]);
247
+
248
+ if (height < minHeight) {
249
+ index = i;
250
+ minHeight = height;
251
+ }
252
+ }
253
+
254
+ return groups[index];
255
+ };
256
+
257
+ if (acc.length >= column) {
258
+ var minHeightGroup = findMinHeightGroup(acc);
259
+ minHeightGroup == null ? void 0 : minHeightGroup.push(cur);
260
+ } else {
261
+ if (currentColumnHeight + nextGroupHeight > 440) {
262
+ acc.push([cur]);
263
+ } else {
264
+ var _acc;
265
+
266
+ (_acc = acc[(acc == null ? void 0 : acc.length) - 1]) == null ? void 0 : _acc.push(cur);
267
+ }
101
268
  }
102
- }
103
- &.active a {
104
- color: ${props => props.theme.primaryColor};
105
- }
106
- `;
107
-
108
- const ListBox = styled.ul`
109
- background: #fff;
110
- max-height: 320px;
111
- overflow-y: auto;
112
- margin: 0;
113
- padding: 6px 0;
114
- list-style: none;
115
- font-size: 13px;
116
- position: absolute;
117
- top: 29px;
118
- width: 100%;
119
- box-shadow: 0 3px 6px -4px rgba(0,0,0,.12), 0 6px 16px 0 rgba(0,0,0,.08), 0 9px 28px 8px rgba(0,0,0,.05);
120
- li {
121
- cursor: pointer;
122
- line-height: 32px;
123
- padding: 0 10px;
124
- color: ${props => props.theme.primaryTextColor};
125
- &:hover {
126
- color: ${props => props.theme.secondaryColor};
127
- background-color: ${props => props.theme.lightBgColor};
269
+ }
270
+
271
+ return acc;
272
+ }, []);
273
+ };
274
+
275
+ var groupMenus = calcGroupMenus((activeTopMenu == null ? void 0 : activeTopMenu.children) || menus);
276
+
277
+ var _useState7 = (0, _react.useState)([]),
278
+ _useState8 = _slicedToArray(_useState7, 2),
279
+ searchedMenus = _useState8[0],
280
+ setSearchedMenus = _useState8[1];
281
+
282
+ var onMenuClick = function onMenuClick(menu) {
283
+ actions.emit('menuSelect', {
284
+ key: menu.code,
285
+ data: menu
286
+ });
287
+ setSearchValue('');
288
+ setSearchedMenus([]);
289
+ close();
290
+ };
291
+
292
+ var debounceSearch = (0, _lodash.debounce)(function (evt) {
293
+ var _evt$target$value;
294
+
295
+ var value = (_evt$target$value = evt.target.value) == null ? void 0 : _evt$target$value.trim();
296
+ var matchedMenus = [];
297
+
298
+ if (value) {
299
+ (0, _utils.traverseTree)(menus, function (node) {
300
+ var _node$menuName;
301
+
302
+ if (node.path && (node == null ? void 0 : (_node$menuName = node.menuName) == null ? void 0 : _node$menuName.includes(value))) {
303
+ matchedMenus.push(node);
128
304
  }
305
+ });
129
306
  }
130
- `;
131
-
132
- const SearchList = ({ items, onSelectMenu, theme }) => (
133
- <ListBox theme={theme}>
134
- {
135
- items?.map(item => (
136
- <li onClick={() => onSelectMenu(item)}>
137
- {item?.menuName}
138
- </li>
139
- ))
307
+
308
+ setSearchedMenus(matchedMenus);
309
+ }, 100);
310
+
311
+ var onSearchChange = function onSearchChange(evt) {
312
+ evt.persist();
313
+ setSearchValue(evt.target.value);
314
+ debounceSearch(evt);
315
+ };
316
+
317
+ var onSelectAppTab = function onSelectAppTab(menu) {
318
+ setActiveTopMenu(menu);
319
+ };
320
+
321
+ (0, _react.useEffect)(function () {
322
+ var clickOutside = function clickOutside(evt) {
323
+ var clientX = evt.clientX,
324
+ clientY = evt.clientY,
325
+ pageX = evt.pageX,
326
+ pageY = evt.pageY;
327
+
328
+ var isOutside = function isOutside(evt, popup) {
329
+ if (popup == null ? void 0 : popup.contains) {
330
+ return !(popup == null ? void 0 : popup.contains(evt.target));
140
331
  }
141
- </ListBox>
142
- );
143
-
144
- export default ({ theme, menus = [], close, actions, popupRef, containerRef }) => {
145
- const [active, setActive] = useState(false);
146
- const [searchValue, setSearchValue] = useState();
147
- const language = actions?.getLanguage();
148
- const isLevel3 = hasLevel3(menus);
149
- const [activeTopMenu, setActiveTopMenu] = useState(isLevel3 ? menus?.[0] : null);
150
- const selectedMenuKey = actions.getSelectedMenuKey();
151
- const calcGroupMenus = menus => {
152
- menus = menus?.reduce((acc, cur) => {
153
- // 分组
154
- if (cur?.children?.length) {
155
- acc.push(cur);
156
- } else {
157
- const defaultGroup = acc.find(({ isDefaultGroup }) => isDefaultGroup);
158
- if (!defaultGroup) {
159
- acc.unshift({
160
- isDefaultGroup: true,
161
- children: [cur]
162
- });
163
- } else {
164
- defaultGroup.children.push(cur);
165
- }
166
- }
167
- return acc;
168
- }, []);
169
-
170
- return menus?.reduce((acc, cur) => {
171
- const column = Math.max(1, ~~((containerRef.current.clientWidth - 32) / 210));
172
-
173
- if (!acc.length) {
174
- acc.push([cur]);
175
- } else {
176
- const calcGroupHeight = group => 46 + (group?.children?.length || 0) * 30;
177
- const calcColumnHeight = columnGroups => columnGroups?.reduce((acc, cur) => {
178
- acc += calcGroupHeight(cur);
179
- return acc;
180
- }, 0);
181
- const currentColumnHeight = calcColumnHeight(acc[acc.length - 1]);
182
- const nextGroupHeight = calcGroupHeight(cur);
183
- const findMinHeightGroup = groups => {
184
- let minHeight = Infinity;
185
- let index = 0;
186
-
187
- for (let i = 0; i < groups.length; i++) {
188
- const height = calcColumnHeight(groups[i]);
189
- if (height < minHeight) {
190
- index = i;
191
- minHeight = height;
192
- }
193
- }
194
-
195
- return groups[index];
196
- };
197
-
198
- if (acc.length >= column) {
199
- const minHeightGroup = findMinHeightGroup(acc);
200
- minHeightGroup?.push(cur);
201
- } else {
202
- if (currentColumnHeight + nextGroupHeight > 440) {
203
- acc.push([cur]);
204
- } else {
205
- acc[acc?.length - 1]?.push(cur);
206
- }
207
- }
208
- }
209
-
210
- return acc;
211
- }, []);
212
- };
213
- const groupMenus = calcGroupMenus(activeTopMenu?.children || menus);
214
- const [searchedMenus, setSearchedMenus] = useState([]);
215
332
 
216
- const onMenuClick = menu => {
217
- actions.emit('menuSelect', { key: menu.code, data: menu });
333
+ var _popup$getBoundingCli = popup.getBoundingClientRect(),
334
+ x = _popup$getBoundingCli.x,
335
+ y = _popup$getBoundingCli.y,
336
+ height = _popup$getBoundingCli.height,
337
+ width = _popup$getBoundingCli.width;
338
+
339
+ console.log('clickOutside...', [x, y], [clientX, clientY], [pageX, pageY]);
340
+ x += window.scrollX;
341
+ y += window.scrollY;
342
+ return pageX < x || pageX > x + width || pageY < y || pageY > y + height;
343
+ };
344
+
345
+ if (isOutside(evt, popupRef.current)) {
218
346
  setSearchValue('');
219
347
  setSearchedMenus([]);
220
348
  close();
349
+ }
221
350
  };
222
- const debounceSearch = debounce(evt => {
223
- const value = evt.target.value?.trim();
224
- const matchedMenus = [];
225
-
226
- if (value) {
227
- traverseTree(menus, node => {
228
- if (node.path && node?.menuName?.includes(value)) {
229
- matchedMenus.push(node);
230
- }
231
- });
232
- }
233
351
 
234
- setSearchedMenus(matchedMenus);
235
- }, 100);
236
-
237
- const onSearchChange = evt => {
238
- evt.persist();
239
- setSearchValue(evt.target.value);
240
- debounceSearch(evt);
352
+ document.addEventListener('click', clickOutside);
353
+ return function () {
354
+ return document.removeEventListener('click', clickOutside);
241
355
  };
242
-
243
- const onSelectAppTab = menu => {
244
- setActiveTopMenu(menu);
245
- };
246
-
247
- useEffect(() => {
248
- const clickOutside = evt => {
249
- const { clientX, clientY, pageX, pageY } = evt;
250
- const isOutside = (evt, popup) => {
251
- if (popup?.contains) {
252
- return !popup?.contains(evt.target);
253
- }
254
-
255
- let { x, y, height, width } = popup.getBoundingClientRect();
256
- console.log('clickOutside...', [x, y], [clientX, clientY], [pageX, pageY]);
257
- x += window.scrollX;
258
- y += window.scrollY;
259
-
260
- return pageX < x || pageX > x + width || pageY < y || pageY > y + height;
261
- };
262
-
263
- if (isOutside(evt, popupRef.current)) {
264
- setSearchValue('');
265
- setSearchedMenus([]);
266
- close();
267
- }
268
- };
269
-
270
- document.addEventListener('click', clickOutside);
271
- return () => document.removeEventListener('click', clickOutside);
272
- }, []);
273
-
274
- return (
275
- <>
276
- <SearchArea theme={theme} className={cn({ active })}>
277
- <Icon type="search" />
278
- <input
279
- placeholder={actions?.getText('menuSearch')}
280
- value={searchValue}
281
- onChange={onSearchChange}
282
- onFocus={() => setActive(true)}
283
- onBlur={() => setActive(false)}
284
- />
285
- <Icon type="close" onClick={close} />
286
- {
287
- searchedMenus?.length > 0 && (
288
- <SearchList
289
- items={searchedMenus}
290
- theme={theme}
291
- onSelectMenu={onMenuClick}
292
- />
293
- )
294
- }
295
- </SearchArea>
296
- {
297
- isLevel3 && (
298
- <ApplicationTabs theme={theme}>
299
- {
300
- menus?.map(menu => (
301
- <li
302
- className={cn({ active: menu.code === activeTopMenu?.code})}
303
- onClick={() => onSelectAppTab(menu)}
304
- >
305
- {menu?.[language === 'cn' ? 'groupName' : 'enName']}
306
- </li>
307
- ))
308
- }
309
- </ApplicationTabs>
310
- )
311
- }
312
- <GroupMenus theme={theme} isLevel3={isLevel3}>
313
- {
314
- groupMenus?.map(groups => (
315
- <div>
316
- {
317
- groups?.map(group => (
318
- <GroupMenuItem theme={theme}>
319
- <h5>{group?.[language === 'cn' ? 'groupName' : 'enName']}</h5>
320
- <MenuList>
321
- {
322
- (group.children || []).map(menu => (
323
- <MenuItem
324
- key={menu.code}
325
- className={cn({ active: selectedMenuKey === menu.code})}
326
- theme={theme}
327
- onClick={() => onMenuClick(menu)}
328
- >
329
- <a
330
- href={menu.path}
331
- onClick={evt => evt.preventDefault()}
332
- >
333
- {menu?.[language === 'cn' ? 'menuName' : 'enName']}
334
- </a>
335
- </MenuItem>
336
- ))
337
- }
338
- </MenuList>
339
- </GroupMenuItem>
340
- ))
341
- }
342
- </div>
343
- ))
344
- }
345
- </GroupMenus>
346
- </>
347
- );
356
+ }, []);
357
+ return React.createElement(React.Fragment, null, React.createElement(SearchArea, {
358
+ theme: theme,
359
+ className: (0, _classnames["default"])({
360
+ active: active
361
+ })
362
+ }, React.createElement(_Iconfont["default"], {
363
+ type: "search"
364
+ }), React.createElement("input", {
365
+ placeholder: actions == null ? void 0 : actions.getText('menuSearch'),
366
+ value: searchValue,
367
+ onChange: onSearchChange,
368
+ onFocus: function onFocus() {
369
+ return setActive(true);
370
+ },
371
+ onBlur: function onBlur() {
372
+ return setActive(false);
373
+ }
374
+ }), React.createElement(_Iconfont["default"], {
375
+ type: "close",
376
+ onClick: close
377
+ }), (searchedMenus == null ? void 0 : searchedMenus.length) > 0 && React.createElement(SearchList, {
378
+ items: searchedMenus,
379
+ theme: theme,
380
+ onSelectMenu: onMenuClick
381
+ })), isLevel3 && React.createElement(ApplicationTabs, {
382
+ theme: theme
383
+ }, menus == null ? void 0 : menus.map(function (menu) {
384
+ return React.createElement("li", {
385
+ className: (0, _classnames["default"])({
386
+ active: menu.code === (activeTopMenu == null ? void 0 : activeTopMenu.code)
387
+ }),
388
+ onClick: function onClick() {
389
+ return onSelectAppTab(menu);
390
+ }
391
+ }, menu == null ? void 0 : menu[language === 'cn' ? 'groupName' : 'enName']);
392
+ })), React.createElement(GroupMenus, {
393
+ theme: theme,
394
+ isLevel3: isLevel3
395
+ }, groupMenus == null ? void 0 : groupMenus.map(function (groups) {
396
+ return React.createElement("div", null, groups == null ? void 0 : groups.map(function (group) {
397
+ return React.createElement(GroupMenuItem, {
398
+ theme: theme
399
+ }, React.createElement("h5", null, group == null ? void 0 : group[language === 'cn' ? 'groupName' : 'enName']), React.createElement(MenuList, null, (group.children || []).map(function (menu) {
400
+ return React.createElement(MenuItem, {
401
+ key: menu.code,
402
+ className: (0, _classnames["default"])({
403
+ active: selectedMenuKey === menu.code
404
+ }),
405
+ theme: theme,
406
+ onClick: function onClick() {
407
+ return onMenuClick(menu);
408
+ }
409
+ }, React.createElement("a", {
410
+ href: menu.path,
411
+ onClick: function onClick(evt) {
412
+ return evt.preventDefault();
413
+ }
414
+ }, menu == null ? void 0 : menu[language === 'cn' ? 'menuName' : 'enName']));
415
+ })));
416
+ }));
417
+ })));
348
418
  };
419
+
420
+ exports["default"] = _default;