@hi-ui/cascader 4.0.0-beta.9 → 4.0.0
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 +47 -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 +35 -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)
|
@@ -258,11 +274,11 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
258
274
|
onClose: menuVisibleAction.off,
|
259
275
|
searchable: searchable,
|
260
276
|
onSearch: funcUtils.callAllFuncs(onSearchProp, onSearch),
|
261
|
-
trigger: /*#__PURE__*/React__default[
|
277
|
+
trigger: /*#__PURE__*/React__default["default"].createElement(input.MockInput, {
|
262
278
|
clearable: clearable,
|
263
279
|
placeholder: placeholder,
|
264
280
|
displayRender: displayRender,
|
265
|
-
suffix: menuVisible ? /*#__PURE__*/React__default[
|
281
|
+
suffix: menuVisible ? /*#__PURE__*/React__default["default"].createElement(icons.UpOutlined, null) : /*#__PURE__*/React__default["default"].createElement(icons.DownOutlined, null),
|
266
282
|
focused: menuVisible,
|
267
283
|
value: value[value.length - 1],
|
268
284
|
onChange: function onChange() {
|
@@ -272,140 +288,24 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
272
288
|
invalid: invalid,
|
273
289
|
appearance: appearance
|
274
290
|
})
|
275
|
-
}), typeAssertion.isArrayNonEmpty(showData) ? /*#__PURE__*/React__default[
|
291
|
+
}), typeAssertion.isArrayNonEmpty(showData) ? /*#__PURE__*/React__default["default"].createElement(CascaderMenuList.CascaderMenuList, null) : null));
|
276
292
|
});
|
277
293
|
|
278
294
|
if (env.__DEV__) {
|
279
295
|
Cascader.displayName = 'Cascader';
|
280
296
|
}
|
281
297
|
|
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) {
|
298
|
+
var renderHighlightTitle = function renderHighlightTitle(keyword, option, titleRender) {
|
400
299
|
// 如果 titleRender 返回 `true`,则使用默认 title
|
401
|
-
var title = titleRender ? titleRender(option) : true;
|
300
|
+
var title = titleRender ? titleRender(option, keyword) : true;
|
402
301
|
if (title !== true) return title;
|
403
|
-
return /*#__PURE__*/React__default[
|
404
|
-
|
302
|
+
return /*#__PURE__*/React__default["default"].createElement(Highlighter__default["default"], {
|
303
|
+
key: option.id,
|
304
|
+
keyword: keyword
|
405
305
|
}, option.title);
|
406
306
|
};
|
407
307
|
|
408
|
-
var
|
308
|
+
var renderHighlightTitles = function renderHighlightTitles(keyword, option, titleRender) {
|
409
309
|
// 如果 titleRender 返回 `true`,则使用默认 title
|
410
310
|
var title = titleRender ? titleRender(option, keyword) : true;
|
411
311
|
if (title !== true) return title;
|
@@ -416,12 +316,12 @@ var renderHighlightTitle = function renderHighlightTitle(keyword, option, titleR
|
|
416
316
|
}
|
417
317
|
|
418
318
|
var found = false;
|
419
|
-
return /*#__PURE__*/React__default[
|
319
|
+
return /*#__PURE__*/React__default["default"].createElement("span", {
|
420
320
|
className: classname.cx("title__text", "title__text--cols")
|
421
321
|
}, treeUtils.getNodeAncestorsWithMe(option).map(function (item) {
|
422
322
|
var title = item.title,
|
423
323
|
id = item.id;
|
424
|
-
var raw = /*#__PURE__*/React__default[
|
324
|
+
var raw = /*#__PURE__*/React__default["default"].createElement("span", {
|
425
325
|
className: "title__text--col",
|
426
326
|
key: id
|
427
327
|
}, title);
|
@@ -432,16 +332,13 @@ var renderHighlightTitle = function renderHighlightTitle(keyword, option, titleR
|
|
432
332
|
found = true;
|
433
333
|
var beforeStr = title.substr(0, index);
|
434
334
|
var afterStr = title.substr(index + keyword.length);
|
435
|
-
return /*#__PURE__*/React__default[
|
335
|
+
return /*#__PURE__*/React__default["default"].createElement("span", {
|
436
336
|
key: id,
|
437
337
|
className: "title__text--col"
|
438
|
-
}, beforeStr, /*#__PURE__*/React__default[
|
338
|
+
}, beforeStr, /*#__PURE__*/React__default["default"].createElement("span", {
|
439
339
|
className: "title__text--matched"
|
440
340
|
}, keyword), afterStr);
|
441
341
|
}).reverse());
|
442
342
|
};
|
443
343
|
|
444
344
|
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
|