@hi-ui/cascader 4.0.0-beta.9 → 4.0.2
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/lib/cjs/Cascader.js +48 -150
- package/lib/cjs/CascaderMenuList.js +172 -0
- package/lib/cjs/context.js +1 -2
- package/lib/cjs/hooks/use-async-switch.js +5 -6
- package/lib/cjs/hooks/use-cache/lib/esm/index.js +2 -3
- package/lib/cjs/hooks/use-select.js +1 -2
- package/lib/cjs/icons/index.js +4 -5
- package/lib/cjs/index.js +1 -4
- package/lib/cjs/styles/index.scss.js +3 -4
- package/lib/cjs/use-cascader.js +3 -3
- package/lib/cjs/utils/index.js +30 -2
- package/lib/esm/Cascader.js +36 -139
- package/lib/esm/CascaderMenuList.js +146 -0
- package/lib/esm/context.js +1 -2
- package/lib/esm/hooks/use-async-switch.js +1 -2
- package/lib/esm/hooks/use-cache/lib/esm/index.js +2 -3
- package/lib/esm/hooks/use-select.js +1 -2
- package/lib/esm/icons/index.js +1 -2
- package/lib/esm/index.js +2 -3
- package/lib/esm/styles/index.scss.js +4 -6
- package/lib/esm/use-cascader.js +3 -3
- package/lib/esm/utils/index.js +30 -3
- package/lib/types/Cascader.d.ts +6 -12
- package/lib/types/CascaderMenuList.d.ts +13 -0
- package/lib/types/context.d.ts +7 -7
- package/lib/types/hooks/use-select.d.ts +2 -2
- package/lib/types/index.d.ts +1 -0
- package/lib/types/types.d.ts +15 -18
- package/lib/types/use-cascader.d.ts +6 -7
- package/lib/types/utils/index.d.ts +8 -7
- package/package.json +25 -23
- package/lib/cjs/Cascader.js.map +0 -1
- package/lib/cjs/context.js.map +0 -1
- package/lib/cjs/hooks/use-async-switch.js.map +0 -1
- package/lib/cjs/hooks/use-cache/lib/esm/index.js.map +0 -1
- package/lib/cjs/hooks/use-select.js.map +0 -1
- package/lib/cjs/icons/index.js.map +0 -1
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/styles/index.scss.js.map +0 -1
- package/lib/cjs/use-cascader.js.map +0 -1
- package/lib/cjs/utils/index.js.map +0 -1
- package/lib/esm/Cascader.js.map +0 -1
- package/lib/esm/context.js.map +0 -1
- package/lib/esm/hooks/use-async-switch.js.map +0 -1
- package/lib/esm/hooks/use-cache/lib/esm/index.js.map +0 -1
- package/lib/esm/hooks/use-select.js.map +0 -1
- package/lib/esm/icons/index.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/styles/index.scss.js.map +0 -1
- package/lib/esm/use-cascader.js.map +0 -1
- package/lib/esm/utils/index.js.map +0 -1
package/lib/cjs/Cascader.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* @hi-ui/cascader
|
3
3
|
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/cascader#readme
|
4
4
|
*
|
5
|
-
* Copyright (c)
|
5
|
+
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
6
6
|
*
|
7
7
|
* This source code is licensed under the MIT license found in the
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
@@ -31,8 +31,6 @@ var input = require('@hi-ui/input');
|
|
31
31
|
|
32
32
|
var icons = require('@hi-ui/icons');
|
33
33
|
|
34
|
-
var index$2 = require('./icons/index.js');
|
35
|
-
|
36
34
|
var index$1 = require('./utils/index.js');
|
37
35
|
|
38
36
|
var context = require('./context.js');
|
@@ -49,10 +47,14 @@ var arrayUtils = require('@hi-ui/array-utils');
|
|
49
47
|
|
50
48
|
var index = require('./hooks/use-cache/lib/esm/index.js');
|
51
49
|
|
52
|
-
var
|
50
|
+
var core = require('@hi-ui/core');
|
53
51
|
|
54
52
|
var funcUtils = require('@hi-ui/func-utils');
|
55
53
|
|
54
|
+
var CascaderMenuList = require('./CascaderMenuList.js');
|
55
|
+
|
56
|
+
var Highlighter = require('@hi-ui/highlighter');
|
57
|
+
|
56
58
|
function _interopDefaultLegacy(e) {
|
57
59
|
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
58
60
|
'default': e
|
@@ -61,6 +63,8 @@ function _interopDefaultLegacy(e) {
|
|
61
63
|
|
62
64
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
63
65
|
|
66
|
+
var Highlighter__default = /*#__PURE__*/_interopDefaultLegacy(Highlighter);
|
67
|
+
|
64
68
|
var _prefix = classname.getPrefixCls('cascader');
|
65
69
|
|
66
70
|
var NOOP_ARRAY = [];
|
@@ -95,15 +99,18 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
95
99
|
overlayClassName = props.overlayClassName,
|
96
100
|
_props$data = props.data,
|
97
101
|
data = _props$data === void 0 ? NOOP_ARRAY : _props$data,
|
102
|
+
_props$flattedSearchR = props.flattedSearchResult,
|
103
|
+
flattedSearchResult = _props$flattedSearchR === void 0 ? true : _props$flattedSearchR,
|
104
|
+
visible = props.visible,
|
98
105
|
onOpen = props.onOpen,
|
99
106
|
onClose = props.onClose,
|
100
|
-
rest = tslib.__rest(props, ["prefixCls", "className", "placeholder", "disabled", "clearable", "type", "fieldNames", "expandTrigger", "displayRender", "onSelect", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "onSearch", "render", "overlayClassName", "data", "onOpen", "onClose"]);
|
107
|
+
rest = tslib.__rest(props, ["prefixCls", "className", "placeholder", "disabled", "clearable", "type", "fieldNames", "expandTrigger", "displayRender", "onSelect", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "onSearch", "render", "overlayClassName", "data", "flattedSearchResult", "visible", "onOpen", "onClose"]);
|
101
108
|
|
102
|
-
var i18n =
|
109
|
+
var i18n = core.useLocaleContext();
|
103
110
|
var placeholder = typeAssertion.isUndef(placeholderProp) ? i18n.get('cascader.placeholder') : placeholderProp;
|
104
|
-
var flatted = type === 'flatted';
|
105
111
|
|
106
112
|
var _useUncontrolledToggl = useToggle.useUncontrolledToggle({
|
113
|
+
visible: visible,
|
107
114
|
disabled: disabled,
|
108
115
|
onOpen: onOpen,
|
109
116
|
onClose: onClose
|
@@ -129,7 +136,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
129
136
|
var highlight = !!searchValue && searchMode === 'upMatch';
|
130
137
|
|
131
138
|
if (highlight) {
|
132
|
-
return renderHighlightTitle(searchValue, node, titleRender);
|
139
|
+
return flattedSearchResult ? renderHighlightTitles(searchValue, node, titleRender) : renderHighlightTitle(searchValue, node, titleRender);
|
133
140
|
}
|
134
141
|
|
135
142
|
return typeAssertion.isFunction(titleRender) ? titleRender(node) : true;
|
@@ -152,9 +159,12 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
152
159
|
data: cascaderData,
|
153
160
|
flattedData: flattedData,
|
154
161
|
enabled: searchableProp,
|
155
|
-
exclude: function exclude(
|
156
|
-
return
|
157
|
-
}
|
162
|
+
exclude: function exclude(node) {
|
163
|
+
return node.disabled;
|
164
|
+
} // exclude: (option: FlattedCascaderDataItem) => {
|
165
|
+
// return checkCanLoadChildren(option, onLoadChildren)
|
166
|
+
// },
|
167
|
+
|
158
168
|
});
|
159
169
|
|
160
170
|
var _useSearchMode = useSearchMode.useSearchMode({
|
@@ -187,16 +197,19 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
187
197
|
|
188
198
|
return acc;
|
189
199
|
}, []);
|
190
|
-
return /*#__PURE__*/React__default[
|
200
|
+
return /*#__PURE__*/React__default["default"].createElement("span", {
|
191
201
|
className: "title__text"
|
192
202
|
}, mergedTitle);
|
193
203
|
};
|
194
204
|
|
205
|
+
var shouldUseSearch = !!searchValue; // 搜索的结果列表也采用 flatted 模式进行展示
|
206
|
+
|
207
|
+
var flatted = shouldUseSearch ? flattedSearchResult : type === 'flatted';
|
208
|
+
|
195
209
|
var _a = useCascader.useCascader(Object.assign(Object.assign({}, rest), {
|
196
210
|
disabled: disabled,
|
197
211
|
fieldNames: fieldNames,
|
198
|
-
|
199
|
-
flatted: flatted || !!searchValue,
|
212
|
+
flatted: flatted,
|
200
213
|
onSelect: onSelect,
|
201
214
|
onLoadChildren: onLoadChildren,
|
202
215
|
data: data,
|
@@ -213,14 +226,17 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
213
226
|
reset = context$1.reset,
|
214
227
|
menuList = context$1.menuList,
|
215
228
|
getItemRequiredProps = context$1.getItemRequiredProps;
|
216
|
-
var shouldUseSearch = !!searchValue;
|
217
229
|
var showData = React.useMemo(function () {
|
218
230
|
if (shouldUseSearch) {
|
231
|
+
if (!flattedSearchResult) {
|
232
|
+
return index$1.getFilteredMenuList(menuList, stateInSearch.data);
|
233
|
+
}
|
234
|
+
|
219
235
|
return typeAssertion.isArrayNonEmpty(stateInSearch.data) ? [stateInSearch.data] : [];
|
220
236
|
}
|
221
237
|
|
222
238
|
return menuList;
|
223
|
-
}, [shouldUseSearch, stateInSearch.data, menuList]);
|
239
|
+
}, [shouldUseSearch, flattedSearchResult, stateInSearch.data, menuList]);
|
224
240
|
React.useEffect(function () {
|
225
241
|
// 关闭展示后,重置展开要高亮的选项
|
226
242
|
if (!menuVisible) {
|
@@ -237,13 +253,13 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
237
253
|
return flattedData;
|
238
254
|
}, [selectedItem, flattedData]);
|
239
255
|
var cls = classname.cx(prefixCls, className, prefixCls + "--" + (menuVisible ? 'open' : 'closed'));
|
240
|
-
return /*#__PURE__*/React__default[
|
256
|
+
return /*#__PURE__*/React__default["default"].createElement(context.CascaderProvider, {
|
241
257
|
value: Object.assign(Object.assign({}, context$1), {
|
242
258
|
expandTrigger: expandTrigger,
|
243
259
|
titleRender: proxyTitleRender,
|
244
260
|
menuList: showData
|
245
261
|
})
|
246
|
-
}, /*#__PURE__*/React__default[
|
262
|
+
}, /*#__PURE__*/React__default["default"].createElement(picker.Picker, Object.assign({
|
247
263
|
ref: ref,
|
248
264
|
className: cls,
|
249
265
|
overlayClassName: classname.cx(prefixCls + "__popper", overlayClassName)
|
@@ -257,12 +273,13 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
257
273
|
onOpen: menuVisibleAction.on,
|
258
274
|
onClose: menuVisibleAction.off,
|
259
275
|
searchable: searchable,
|
276
|
+
scrollable: false,
|
260
277
|
onSearch: funcUtils.callAllFuncs(onSearchProp, onSearch),
|
261
|
-
trigger: /*#__PURE__*/React__default[
|
278
|
+
trigger: /*#__PURE__*/React__default["default"].createElement(input.MockInput, {
|
262
279
|
clearable: clearable,
|
263
280
|
placeholder: placeholder,
|
264
281
|
displayRender: displayRender,
|
265
|
-
suffix: menuVisible ? /*#__PURE__*/React__default[
|
282
|
+
suffix: menuVisible ? /*#__PURE__*/React__default["default"].createElement(icons.UpOutlined, null) : /*#__PURE__*/React__default["default"].createElement(icons.DownOutlined, null),
|
266
283
|
focused: menuVisible,
|
267
284
|
value: value[value.length - 1],
|
268
285
|
onChange: function onChange() {
|
@@ -272,140 +289,24 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
272
289
|
invalid: invalid,
|
273
290
|
appearance: appearance
|
274
291
|
})
|
275
|
-
}), typeAssertion.isArrayNonEmpty(showData) ? /*#__PURE__*/React__default[
|
292
|
+
}), typeAssertion.isArrayNonEmpty(showData) ? /*#__PURE__*/React__default["default"].createElement(CascaderMenuList.CascaderMenuList, null) : null));
|
276
293
|
});
|
277
294
|
|
278
295
|
if (env.__DEV__) {
|
279
296
|
Cascader.displayName = 'Cascader';
|
280
297
|
}
|
281
298
|
|
282
|
-
var
|
283
|
-
var CascaderMenuList = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
284
|
-
var _a$prefixCls = _a.prefixCls,
|
285
|
-
prefixCls = _a$prefixCls === void 0 ? menuListPrefix : _a$prefixCls,
|
286
|
-
className = _a.className,
|
287
|
-
rest = tslib.__rest(_a, ["prefixCls", "className"]);
|
288
|
-
|
289
|
-
var _useCascaderContext = context.useCascaderContext(),
|
290
|
-
flatted = _useCascaderContext.flatted,
|
291
|
-
menuList = _useCascaderContext.menuList;
|
292
|
-
|
293
|
-
var cls = classname.cx(prefixCls, className, flatted && prefixCls + "--flatted");
|
294
|
-
return /*#__PURE__*/React__default['default'].createElement("div", Object.assign({
|
295
|
-
ref: ref,
|
296
|
-
className: cls
|
297
|
-
}, rest), menuList.map(function (menu, menuIndex) {
|
298
|
-
// @ts-ignore
|
299
|
-
return typeAssertion.isArrayNonEmpty(menu) ? /*#__PURE__*/React__default['default'].createElement(CascaderMenu, {
|
300
|
-
key: menuIndex,
|
301
|
-
data: menu
|
302
|
-
}) : null;
|
303
|
-
}));
|
304
|
-
});
|
305
|
-
|
306
|
-
if (env.__DEV__) {
|
307
|
-
CascaderMenuList.displayName = 'CascaderMenuList';
|
308
|
-
}
|
309
|
-
|
310
|
-
var menuPrefix = classname.getPrefixCls('cascader-menu');
|
311
|
-
|
312
|
-
var CascaderMenu = function CascaderMenu(_ref2) {
|
313
|
-
var _ref2$prefixCls = _ref2.prefixCls,
|
314
|
-
prefixCls = _ref2$prefixCls === void 0 ? menuPrefix : _ref2$prefixCls,
|
315
|
-
_ref2$role = _ref2.role,
|
316
|
-
role = _ref2$role === void 0 ? 'menu' : _ref2$role,
|
317
|
-
className = _ref2.className,
|
318
|
-
menu = _ref2.data;
|
319
|
-
|
320
|
-
var _useCascaderContext2 = context.useCascaderContext(),
|
321
|
-
flatted = _useCascaderContext2.flatted,
|
322
|
-
disabledContext = _useCascaderContext2.disabled,
|
323
|
-
expandTrigger = _useCascaderContext2.expandTrigger,
|
324
|
-
onItemClick = _useCascaderContext2.onItemClick,
|
325
|
-
onItemHover = _useCascaderContext2.onItemHover,
|
326
|
-
titleRender = _useCascaderContext2.titleRender,
|
327
|
-
onLoadChildren = _useCascaderContext2.onLoadChildren,
|
328
|
-
getItemRequiredProps = _useCascaderContext2.getItemRequiredProps;
|
329
|
-
|
330
|
-
var cls = classname.cx(prefixCls, className);
|
331
|
-
return /*#__PURE__*/React__default['default'].createElement("ul", {
|
332
|
-
className: cls,
|
333
|
-
role: role
|
334
|
-
}, menu.map(function (option) {
|
335
|
-
var eventOption = index$1.getItemEventData(option, getItemRequiredProps(option));
|
336
|
-
var selected = eventOption.selected,
|
337
|
-
loading = eventOption.loading;
|
338
|
-
var disabled = disabledContext || option.disabled;
|
339
|
-
var optionCls = classname.cx(prefixCls + "-option", loading && prefixCls + "-option--loading", disabled && prefixCls + "-option--disabled", selected && prefixCls + "-option--selected");
|
340
|
-
return /*#__PURE__*/React__default['default'].createElement("li", {
|
341
|
-
key: option.id,
|
342
|
-
role: "menu-item",
|
343
|
-
className: prefixCls + "-item"
|
344
|
-
}, /*#__PURE__*/React__default['default'].createElement("div", {
|
345
|
-
className: optionCls,
|
346
|
-
onClick: function onClick() {
|
347
|
-
if (disabled) return;
|
348
|
-
onItemClick(eventOption);
|
349
|
-
},
|
350
|
-
onMouseEnter: function onMouseEnter() {
|
351
|
-
if (disabled) return;
|
352
|
-
|
353
|
-
if (expandTrigger === 'hover') {
|
354
|
-
onItemHover(eventOption);
|
355
|
-
}
|
356
|
-
}
|
357
|
-
}, flatted ? renderFlattedTitle(eventOption, titleRender) : /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, renderDefaultTitle(eventOption, titleRender), renderSuffix(prefixCls, option, loading, onLoadChildren))));
|
358
|
-
}));
|
359
|
-
};
|
360
|
-
/**
|
361
|
-
* 渲染菜单子项的展开提示图标
|
362
|
-
*/
|
363
|
-
|
364
|
-
|
365
|
-
var renderSuffix = function renderSuffix(prefixCls, item, loading, onLoadChildren) {
|
366
|
-
if (loading) {
|
367
|
-
return /*#__PURE__*/React__default['default'].createElement("span", {
|
368
|
-
className: classname.cx(prefixCls + "-switcher", prefixCls + "-switcher--loading")
|
369
|
-
}, index$2.defaultLoadingIcon);
|
370
|
-
}
|
371
|
-
|
372
|
-
var canLoadChildren = index$1.checkCanLoadChildren(item, onLoadChildren);
|
373
|
-
|
374
|
-
if (canLoadChildren) {
|
375
|
-
return /*#__PURE__*/React__default['default'].createElement("span", {
|
376
|
-
className: classname.cx(prefixCls + "-switcher", prefixCls + "-switcher--arrow")
|
377
|
-
}, index$2.defaultSuffixIcon);
|
378
|
-
}
|
379
|
-
|
380
|
-
return /*#__PURE__*/React__default['default'].createElement("span", {
|
381
|
-
className: classname.cx(prefixCls + "-switcher", prefixCls + "-switcher--noop")
|
382
|
-
}, index$2.defaultLeafIcon);
|
383
|
-
};
|
384
|
-
|
385
|
-
var renderFlattedTitle = function renderFlattedTitle(option, titleRender) {
|
386
|
-
// 如果 titleRender 返回 `true`,则使用默认 title
|
387
|
-
var title = titleRender ? titleRender(option) : true;
|
388
|
-
if (title !== true) return title;
|
389
|
-
return /*#__PURE__*/React__default['default'].createElement("span", {
|
390
|
-
className: "title__text title__text--cols"
|
391
|
-
}, treeUtils.getTopDownAncestors(option).map(function (item) {
|
392
|
-
return /*#__PURE__*/React__default['default'].createElement("span", {
|
393
|
-
key: item.id,
|
394
|
-
className: "title__text--col"
|
395
|
-
}, item.title);
|
396
|
-
}));
|
397
|
-
};
|
398
|
-
|
399
|
-
var renderDefaultTitle = function renderDefaultTitle(option, titleRender) {
|
299
|
+
var renderHighlightTitle = function renderHighlightTitle(keyword, option, titleRender) {
|
400
300
|
// 如果 titleRender 返回 `true`,则使用默认 title
|
401
|
-
var title = titleRender ? titleRender(option) : true;
|
301
|
+
var title = titleRender ? titleRender(option, keyword) : true;
|
402
302
|
if (title !== true) return title;
|
403
|
-
return /*#__PURE__*/React__default[
|
404
|
-
|
303
|
+
return /*#__PURE__*/React__default["default"].createElement(Highlighter__default["default"], {
|
304
|
+
key: option.id,
|
305
|
+
keyword: keyword
|
405
306
|
}, option.title);
|
406
307
|
};
|
407
308
|
|
408
|
-
var
|
309
|
+
var renderHighlightTitles = function renderHighlightTitles(keyword, option, titleRender) {
|
409
310
|
// 如果 titleRender 返回 `true`,则使用默认 title
|
410
311
|
var title = titleRender ? titleRender(option, keyword) : true;
|
411
312
|
if (title !== true) return title;
|
@@ -416,12 +317,12 @@ var renderHighlightTitle = function renderHighlightTitle(keyword, option, titleR
|
|
416
317
|
}
|
417
318
|
|
418
319
|
var found = false;
|
419
|
-
return /*#__PURE__*/React__default[
|
320
|
+
return /*#__PURE__*/React__default["default"].createElement("span", {
|
420
321
|
className: classname.cx("title__text", "title__text--cols")
|
421
322
|
}, treeUtils.getNodeAncestorsWithMe(option).map(function (item) {
|
422
323
|
var title = item.title,
|
423
324
|
id = item.id;
|
424
|
-
var raw = /*#__PURE__*/React__default[
|
325
|
+
var raw = /*#__PURE__*/React__default["default"].createElement("span", {
|
425
326
|
className: "title__text--col",
|
426
327
|
key: id
|
427
328
|
}, title);
|
@@ -432,16 +333,13 @@ var renderHighlightTitle = function renderHighlightTitle(keyword, option, titleR
|
|
432
333
|
found = true;
|
433
334
|
var beforeStr = title.substr(0, index);
|
434
335
|
var afterStr = title.substr(index + keyword.length);
|
435
|
-
return /*#__PURE__*/React__default[
|
336
|
+
return /*#__PURE__*/React__default["default"].createElement("span", {
|
436
337
|
key: id,
|
437
338
|
className: "title__text--col"
|
438
|
-
}, beforeStr, /*#__PURE__*/React__default[
|
339
|
+
}, beforeStr, /*#__PURE__*/React__default["default"].createElement("span", {
|
439
340
|
className: "title__text--matched"
|
440
341
|
}, keyword), afterStr);
|
441
342
|
}).reverse());
|
442
343
|
};
|
443
344
|
|
444
345
|
exports.Cascader = Cascader;
|
445
|
-
exports.CascaderMenu = CascaderMenu;
|
446
|
-
exports.CascaderMenuList = CascaderMenuList;
|
447
|
-
//# sourceMappingURL=Cascader.js.map
|
@@ -0,0 +1,172 @@
|
|
1
|
+
/** @LICENSE
|
2
|
+
* @hi-ui/cascader
|
3
|
+
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/cascader#readme
|
4
|
+
*
|
5
|
+
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
6
|
+
*
|
7
|
+
* This source code is licensed under the MIT license found in the
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
9
|
+
*/
|
10
|
+
'use strict';
|
11
|
+
|
12
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
13
|
+
|
14
|
+
Object.defineProperty(exports, '__esModule', {
|
15
|
+
value: true
|
16
|
+
});
|
17
|
+
|
18
|
+
var tslib = require('tslib');
|
19
|
+
|
20
|
+
var React = require('react');
|
21
|
+
|
22
|
+
var classname = require('@hi-ui/classname');
|
23
|
+
|
24
|
+
var env = require('@hi-ui/env');
|
25
|
+
|
26
|
+
var index$1 = require('./icons/index.js');
|
27
|
+
|
28
|
+
var index = require('./utils/index.js');
|
29
|
+
|
30
|
+
var context = require('./context.js');
|
31
|
+
|
32
|
+
var treeUtils = require('@hi-ui/tree-utils');
|
33
|
+
|
34
|
+
var typeAssertion = require('@hi-ui/type-assertion');
|
35
|
+
|
36
|
+
function _interopDefaultLegacy(e) {
|
37
|
+
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
38
|
+
'default': e
|
39
|
+
};
|
40
|
+
}
|
41
|
+
|
42
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
43
|
+
|
44
|
+
var menuListPrefix = classname.getPrefixCls('cascader-menu-list');
|
45
|
+
var CascaderMenuList = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
46
|
+
var _a$prefixCls = _a.prefixCls,
|
47
|
+
prefixCls = _a$prefixCls === void 0 ? menuListPrefix : _a$prefixCls,
|
48
|
+
className = _a.className,
|
49
|
+
rest = tslib.__rest(_a, ["prefixCls", "className"]);
|
50
|
+
|
51
|
+
var _useCascaderContext = context.useCascaderContext(),
|
52
|
+
flatted = _useCascaderContext.flatted,
|
53
|
+
menuList = _useCascaderContext.menuList;
|
54
|
+
|
55
|
+
var cls = classname.cx(prefixCls, className, flatted && prefixCls + "--flatted");
|
56
|
+
return /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
|
57
|
+
ref: ref,
|
58
|
+
className: cls
|
59
|
+
}, rest), menuList.map(function (menu, menuIndex) {
|
60
|
+
// @ts-ignore
|
61
|
+
return typeAssertion.isArrayNonEmpty(menu) ? /*#__PURE__*/React__default["default"].createElement(CascaderMenu, {
|
62
|
+
key: menuIndex,
|
63
|
+
data: menu
|
64
|
+
}) : null;
|
65
|
+
}));
|
66
|
+
});
|
67
|
+
|
68
|
+
if (env.__DEV__) {
|
69
|
+
CascaderMenuList.displayName = 'CascaderMenuList';
|
70
|
+
}
|
71
|
+
|
72
|
+
var menuPrefix = classname.getPrefixCls('cascader-menu');
|
73
|
+
|
74
|
+
var CascaderMenu = function CascaderMenu(_ref) {
|
75
|
+
var _ref$prefixCls = _ref.prefixCls,
|
76
|
+
prefixCls = _ref$prefixCls === void 0 ? menuPrefix : _ref$prefixCls,
|
77
|
+
_ref$role = _ref.role,
|
78
|
+
role = _ref$role === void 0 ? 'menu' : _ref$role,
|
79
|
+
className = _ref.className,
|
80
|
+
menu = _ref.data;
|
81
|
+
|
82
|
+
var _useCascaderContext2 = context.useCascaderContext(),
|
83
|
+
flatted = _useCascaderContext2.flatted,
|
84
|
+
disabledContext = _useCascaderContext2.disabled,
|
85
|
+
expandTrigger = _useCascaderContext2.expandTrigger,
|
86
|
+
onItemClick = _useCascaderContext2.onItemClick,
|
87
|
+
onItemHover = _useCascaderContext2.onItemHover,
|
88
|
+
titleRender = _useCascaderContext2.titleRender,
|
89
|
+
onLoadChildren = _useCascaderContext2.onLoadChildren,
|
90
|
+
getItemRequiredProps = _useCascaderContext2.getItemRequiredProps;
|
91
|
+
|
92
|
+
var cls = classname.cx(prefixCls, className);
|
93
|
+
return /*#__PURE__*/React__default["default"].createElement("ul", {
|
94
|
+
className: cls,
|
95
|
+
role: role
|
96
|
+
}, menu.map(function (option) {
|
97
|
+
var eventOption = index.getItemEventData(option, getItemRequiredProps(option));
|
98
|
+
var selected = eventOption.selected,
|
99
|
+
loading = eventOption.loading,
|
100
|
+
active = eventOption.active;
|
101
|
+
var disabled = disabledContext || option.disabled;
|
102
|
+
var optionCls = classname.cx(prefixCls + "-option", active && prefixCls + "-option--active", loading && prefixCls + "-option--loading", disabled && prefixCls + "-option--disabled", selected && prefixCls + "-option--selected");
|
103
|
+
return /*#__PURE__*/React__default["default"].createElement("li", {
|
104
|
+
key: option.id,
|
105
|
+
role: "menu-item",
|
106
|
+
className: prefixCls + "-item"
|
107
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
108
|
+
className: optionCls,
|
109
|
+
onClick: function onClick() {
|
110
|
+
if (disabled) return;
|
111
|
+
onItemClick(eventOption);
|
112
|
+
},
|
113
|
+
onMouseEnter: function onMouseEnter() {
|
114
|
+
if (disabled) return;
|
115
|
+
|
116
|
+
if (expandTrigger === 'hover') {
|
117
|
+
onItemHover(eventOption);
|
118
|
+
}
|
119
|
+
}
|
120
|
+
}, flatted ? renderFlattedTitle(eventOption, titleRender) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, renderDefaultTitle(eventOption, titleRender), renderSuffix(prefixCls, option, loading, onLoadChildren))));
|
121
|
+
}));
|
122
|
+
};
|
123
|
+
/**
|
124
|
+
* 渲染菜单子项的展开提示图标
|
125
|
+
*/
|
126
|
+
|
127
|
+
|
128
|
+
var renderSuffix = function renderSuffix(prefixCls, item, loading, onLoadChildren) {
|
129
|
+
if (loading) {
|
130
|
+
return /*#__PURE__*/React__default["default"].createElement("span", {
|
131
|
+
className: classname.cx(prefixCls + "-switcher", prefixCls + "-switcher--loading")
|
132
|
+
}, index$1.defaultLoadingIcon);
|
133
|
+
}
|
134
|
+
|
135
|
+
var canLoadChildren = index.checkCanLoadChildren(item, onLoadChildren);
|
136
|
+
|
137
|
+
if (canLoadChildren) {
|
138
|
+
return /*#__PURE__*/React__default["default"].createElement("span", {
|
139
|
+
className: classname.cx(prefixCls + "-switcher", prefixCls + "-switcher--arrow")
|
140
|
+
}, index$1.defaultSuffixIcon);
|
141
|
+
}
|
142
|
+
|
143
|
+
return /*#__PURE__*/React__default["default"].createElement("span", {
|
144
|
+
className: classname.cx(prefixCls + "-switcher", prefixCls + "-switcher--noop")
|
145
|
+
}, index$1.defaultLeafIcon);
|
146
|
+
};
|
147
|
+
|
148
|
+
var renderFlattedTitle = function renderFlattedTitle(option, titleRender) {
|
149
|
+
// 如果 titleRender 返回 `true`,则使用默认 title
|
150
|
+
var title = titleRender ? titleRender(option) : true;
|
151
|
+
if (title !== true) return title;
|
152
|
+
return /*#__PURE__*/React__default["default"].createElement("span", {
|
153
|
+
className: "title__text title__text--cols"
|
154
|
+
}, treeUtils.getTopDownAncestors(option).map(function (item) {
|
155
|
+
return /*#__PURE__*/React__default["default"].createElement("span", {
|
156
|
+
key: item.id,
|
157
|
+
className: "title__text--col"
|
158
|
+
}, item.title);
|
159
|
+
}));
|
160
|
+
};
|
161
|
+
|
162
|
+
var renderDefaultTitle = function renderDefaultTitle(option, titleRender) {
|
163
|
+
// 如果 titleRender 返回 `true`,则使用默认 title
|
164
|
+
var title = titleRender ? titleRender(option) : true;
|
165
|
+
if (title !== true) return title;
|
166
|
+
return /*#__PURE__*/React__default["default"].createElement("span", {
|
167
|
+
className: "title__text"
|
168
|
+
}, option.title);
|
169
|
+
};
|
170
|
+
|
171
|
+
exports.CascaderMenu = CascaderMenu;
|
172
|
+
exports.CascaderMenuList = CascaderMenuList;
|
package/lib/cjs/context.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* @hi-ui/cascader
|
3
3
|
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/cascader#readme
|
4
4
|
*
|
5
|
-
* Copyright (c)
|
5
|
+
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
6
6
|
*
|
7
7
|
* This source code is licensed under the MIT license found in the
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
@@ -30,4 +30,3 @@ var useCascaderContext = function useCascaderContext() {
|
|
30
30
|
|
31
31
|
exports.CascaderProvider = CascaderProvider;
|
32
32
|
exports.useCascaderContext = useCascaderContext;
|
33
|
-
//# sourceMappingURL=context.js.map
|
@@ -2,7 +2,7 @@
|
|
2
2
|
* @hi-ui/cascader
|
3
3
|
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/cascader#readme
|
4
4
|
*
|
5
|
-
* Copyright (c)
|
5
|
+
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
6
6
|
*
|
7
7
|
* This source code is licensed under the MIT license found in the
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
@@ -39,9 +39,9 @@ var useAsyncSwitch = function useAsyncSwitch(setCascaderData, onExpand, onLoadCh
|
|
39
39
|
var onLoadChildrenLatest = useLatest.useLatestCallback(onLoadChildren); // 加载节点
|
40
40
|
|
41
41
|
var loadChildren = React.useCallback(function (node) {
|
42
|
-
return tslib.__awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime__default[
|
42
|
+
return tslib.__awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
|
43
43
|
var childrenNodes;
|
44
|
-
return _regeneratorRuntime__default[
|
44
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
|
45
45
|
while (1) {
|
46
46
|
switch (_context.prev = _context.next) {
|
47
47
|
case 0:
|
@@ -82,9 +82,9 @@ var useAsyncSwitch = function useAsyncSwitch(setCascaderData, onExpand, onLoadCh
|
|
82
82
|
onlyExpand = false;
|
83
83
|
}
|
84
84
|
|
85
|
-
return tslib.__awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime__default[
|
85
|
+
return tslib.__awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2() {
|
86
86
|
var id, children, isLeaf;
|
87
|
-
return _regeneratorRuntime__default[
|
87
|
+
return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context2) {
|
88
88
|
while (1) {
|
89
89
|
switch (_context2.prev = _context2.next) {
|
90
90
|
case 0:
|
@@ -140,4 +140,3 @@ var useAsyncSwitch = function useAsyncSwitch(setCascaderData, onExpand, onLoadCh
|
|
140
140
|
};
|
141
141
|
|
142
142
|
exports.useAsyncSwitch = useAsyncSwitch;
|
143
|
-
//# sourceMappingURL=use-async-switch.js.map
|
@@ -2,7 +2,7 @@
|
|
2
2
|
* @hi-ui/cascader
|
3
3
|
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/cascader#readme
|
4
4
|
*
|
5
|
-
* Copyright (c)
|
5
|
+
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
6
6
|
*
|
7
7
|
* This source code is licensed under the MIT license found in the
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
@@ -18,7 +18,7 @@ var React = require('react');
|
|
18
18
|
* @hi-ui/use-cache
|
19
19
|
* https://github.com/XiaoMi/hiui/tree/master/packages/hooks/use-cache#readme
|
20
20
|
*
|
21
|
-
* Copyright (c)
|
21
|
+
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
22
22
|
*
|
23
23
|
* This source code is licensed under the MIT license found in the
|
24
24
|
* LICENSE file in the root directory of this source tree.
|
@@ -41,4 +41,3 @@ var useCache = function useCache(data) {
|
|
41
41
|
};
|
42
42
|
|
43
43
|
exports.useCache = useCache;
|
44
|
-
//# sourceMappingURL=index.js.map
|
@@ -2,7 +2,7 @@
|
|
2
2
|
* @hi-ui/cascader
|
3
3
|
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/cascader#readme
|
4
4
|
*
|
5
|
-
* Copyright (c)
|
5
|
+
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
6
6
|
*
|
7
7
|
* This source code is licensed under the MIT license found in the
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
@@ -65,4 +65,3 @@ var useSelect = function useSelect(disabled, onSelect, changeOnSelect, onLoadChi
|
|
65
65
|
};
|
66
66
|
|
67
67
|
exports.useSelect = useSelect;
|
68
|
-
//# sourceMappingURL=use-select.js.map
|
package/lib/cjs/icons/index.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* @hi-ui/cascader
|
3
3
|
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/cascader#readme
|
4
4
|
*
|
5
|
-
* Copyright (c)
|
5
|
+
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
6
6
|
*
|
7
7
|
* This source code is licensed under the MIT license found in the
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
@@ -29,15 +29,14 @@ function _interopDefaultLegacy(e) {
|
|
29
29
|
|
30
30
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
31
31
|
|
32
|
-
var defaultSuffixIcon = /*#__PURE__*/React__default[
|
33
|
-
var defaultLeafIcon = /*#__PURE__*/React__default[
|
32
|
+
var defaultSuffixIcon = /*#__PURE__*/React__default["default"].createElement(icons.DownOutlined, null);
|
33
|
+
var defaultLeafIcon = /*#__PURE__*/React__default["default"].createElement("span", {
|
34
34
|
style: {
|
35
35
|
display: 'inline-block',
|
36
36
|
width: 16
|
37
37
|
}
|
38
38
|
});
|
39
|
-
var defaultLoadingIcon = /*#__PURE__*/React__default[
|
39
|
+
var defaultLoadingIcon = /*#__PURE__*/React__default["default"].createElement(spinner.Spinner, null);
|
40
40
|
exports.defaultLeafIcon = defaultLeafIcon;
|
41
41
|
exports.defaultLoadingIcon = defaultLoadingIcon;
|
42
42
|
exports.defaultSuffixIcon = defaultSuffixIcon;
|
43
|
-
//# sourceMappingURL=index.js.map
|
package/lib/cjs/index.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* @hi-ui/cascader
|
3
3
|
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/cascader#readme
|
4
4
|
*
|
5
|
-
* Copyright (c)
|
5
|
+
* Copyright (c) HiUI <mi-hiui@xiaomi.com>.
|
6
6
|
*
|
7
7
|
* This source code is licensed under the MIT license found in the
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
@@ -18,7 +18,4 @@ require('./styles/index.scss.js');
|
|
18
18
|
var Cascader = require('./Cascader.js');
|
19
19
|
|
20
20
|
exports.Cascader = Cascader.Cascader;
|
21
|
-
exports.CascaderMenu = Cascader.CascaderMenu;
|
22
|
-
exports.CascaderMenuList = Cascader.CascaderMenuList;
|
23
21
|
exports["default"] = Cascader.Cascader;
|
24
|
-
//# sourceMappingURL=index.js.map
|