tntd 1.4.7 → 1.4.8
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.
- package/dist/stats.json +38 -38
- package/lib/ArrayInput/icon.js +31 -27
- package/lib/ArrayInput/index.js +298 -211
- package/lib/AuthContext.js +13 -2
- package/lib/Columns/index.js +100 -71
- package/lib/DevelopmentLogin/LoginModal.js +141 -79
- package/lib/DevelopmentLogin/index.js +55 -28
- package/lib/Ellipsis/Svg/CopySVG.js +71 -23
- package/lib/Ellipsis/Svg/TickSVG.js +49 -17
- package/lib/Ellipsis/index.js +154 -148
- package/lib/Handle/index.js +109 -72
- package/lib/Icon/fonts/iconfont.js +43 -1
- package/lib/Icon/iconList.js +8 -119
- package/lib/Icon/index.js +45 -13
- package/lib/Img/Contain.js +81 -49
- package/lib/Img/Cover.js +136 -88
- package/lib/Img/index.js +89 -36
- package/lib/Layout/ActionsContext.js +11 -2
- package/lib/Layout/AppList.js +256 -262
- package/lib/Layout/Application.js +135 -119
- package/lib/Layout/Avatar.js +137 -137
- package/lib/Layout/CompatibleLanguage.js +195 -214
- package/lib/Layout/EnterpriseLayout/Avatar.js +168 -156
- package/lib/Layout/EnterpriseLayout/Language.js +100 -75
- package/lib/Layout/EnterpriseLayout/Theme.js +94 -96
- package/lib/Layout/EnterpriseLayout/index.js +45 -32
- package/lib/Layout/GlobalNavigation/NavigationPopup.js +407 -335
- package/lib/Layout/GlobalNavigation/index.js +158 -110
- package/lib/Layout/Header.js +116 -165
- package/lib/Layout/HeaderActions.js +129 -132
- package/lib/Layout/HeaderNavs.js +113 -90
- package/lib/Layout/HeaderTabs.js +278 -312
- package/lib/Layout/Iconfont.js +15 -2
- package/lib/Layout/Language.js +102 -63
- package/lib/Layout/Layout.js +261 -272
- package/lib/Layout/Logo.js +87 -132
- package/lib/Layout/OrgAppList.js +319 -440
- package/lib/Layout/SideMenu.js +343 -429
- package/lib/Layout/Theme.js +124 -95
- package/lib/Layout/checkAuth.js +35 -21
- package/lib/Layout/createActions.js +51 -38
- package/lib/Layout/images/index.js +41 -33
- package/lib/Layout/index.js +161 -110
- package/lib/Layout/paaslayout/CompactSideMenu.js +178 -200
- package/lib/Layout/paaslayout/Header.js +90 -84
- package/lib/Layout/paaslayout/Logo.js +32 -27
- package/lib/Layout/paaslayout/SideMenu.js +174 -161
- package/lib/Layout/paaslayout/index.js +261 -240
- package/lib/Layout/storage.js +78 -20
- package/lib/Layout/utils.js +143 -93
- package/lib/LoadingButton/index.js +67 -25
- package/lib/Modal/index.js +108 -83
- package/lib/Page/Box.js +81 -56
- package/lib/Page/index.js +173 -151
- package/lib/Page/utils.js +30 -12
- package/lib/QueryForm/Field/Checkbox.js +33 -11
- package/lib/QueryForm/Field/Select.js +99 -63
- package/lib/QueryForm/Field/SelectInput.js +114 -69
- package/lib/QueryForm/Field/fieldsMap.js +52 -30
- package/lib/QueryForm/Field/index.js +158 -76
- package/lib/QueryForm/createActions.js +65 -50
- package/lib/QueryForm/index.js +383 -304
- package/lib/QueryForm/useForm.js +17 -6
- package/lib/QueryListScene/List.js +366 -290
- package/lib/QueryListScene/QueryForm.js +161 -93
- package/lib/QueryListScene/QueryListScene.js +87 -33
- package/lib/QueryListScene/Title.js +20 -10
- package/lib/QueryListScene/Toolbar.js +31 -8
- package/lib/QueryListScene/createActions.js +79 -64
- package/lib/QueryListScene/index.js +40 -23
- package/lib/QueryListScene/useActions.js +17 -6
- package/lib/Select/DropDownWrap.js +124 -60
- package/lib/Select/index.js +561 -425
- package/lib/Table/ResizableTable/index.js +121 -77
- package/lib/Table/index.js +51 -19
- package/lib/Title/index.js +52 -34
- package/lib/index.js +159 -19
- package/lib/locale.js +63 -48
- package/package.json +1 -1
|
@@ -1,348 +1,420 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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
|
-
|
|
217
|
-
|
|
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
|
-
|
|
235
|
-
|
|
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
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
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;
|