@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.
Files changed (51) hide show
  1. package/lib/cjs/Cascader.js +48 -150
  2. package/lib/cjs/CascaderMenuList.js +172 -0
  3. package/lib/cjs/context.js +1 -2
  4. package/lib/cjs/hooks/use-async-switch.js +5 -6
  5. package/lib/cjs/hooks/use-cache/lib/esm/index.js +2 -3
  6. package/lib/cjs/hooks/use-select.js +1 -2
  7. package/lib/cjs/icons/index.js +4 -5
  8. package/lib/cjs/index.js +1 -4
  9. package/lib/cjs/styles/index.scss.js +3 -4
  10. package/lib/cjs/use-cascader.js +3 -3
  11. package/lib/cjs/utils/index.js +30 -2
  12. package/lib/esm/Cascader.js +36 -139
  13. package/lib/esm/CascaderMenuList.js +146 -0
  14. package/lib/esm/context.js +1 -2
  15. package/lib/esm/hooks/use-async-switch.js +1 -2
  16. package/lib/esm/hooks/use-cache/lib/esm/index.js +2 -3
  17. package/lib/esm/hooks/use-select.js +1 -2
  18. package/lib/esm/icons/index.js +1 -2
  19. package/lib/esm/index.js +2 -3
  20. package/lib/esm/styles/index.scss.js +4 -6
  21. package/lib/esm/use-cascader.js +3 -3
  22. package/lib/esm/utils/index.js +30 -3
  23. package/lib/types/Cascader.d.ts +6 -12
  24. package/lib/types/CascaderMenuList.d.ts +13 -0
  25. package/lib/types/context.d.ts +7 -7
  26. package/lib/types/hooks/use-select.d.ts +2 -2
  27. package/lib/types/index.d.ts +1 -0
  28. package/lib/types/types.d.ts +15 -18
  29. package/lib/types/use-cascader.d.ts +6 -7
  30. package/lib/types/utils/index.d.ts +8 -7
  31. package/package.json +25 -23
  32. package/lib/cjs/Cascader.js.map +0 -1
  33. package/lib/cjs/context.js.map +0 -1
  34. package/lib/cjs/hooks/use-async-switch.js.map +0 -1
  35. package/lib/cjs/hooks/use-cache/lib/esm/index.js.map +0 -1
  36. package/lib/cjs/hooks/use-select.js.map +0 -1
  37. package/lib/cjs/icons/index.js.map +0 -1
  38. package/lib/cjs/index.js.map +0 -1
  39. package/lib/cjs/styles/index.scss.js.map +0 -1
  40. package/lib/cjs/use-cascader.js.map +0 -1
  41. package/lib/cjs/utils/index.js.map +0 -1
  42. package/lib/esm/Cascader.js.map +0 -1
  43. package/lib/esm/context.js.map +0 -1
  44. package/lib/esm/hooks/use-async-switch.js.map +0 -1
  45. package/lib/esm/hooks/use-cache/lib/esm/index.js.map +0 -1
  46. package/lib/esm/hooks/use-select.js.map +0 -1
  47. package/lib/esm/icons/index.js.map +0 -1
  48. package/lib/esm/index.js.map +0 -1
  49. package/lib/esm/styles/index.scss.js.map +0 -1
  50. package/lib/esm/use-cascader.js.map +0 -1
  51. package/lib/esm/utils/index.js.map +0 -1
@@ -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) HIUI <mi-hiui@xiaomi.com>.
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 localeContext = require('@hi-ui/locale-context');
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 = localeContext.useLocaleContext();
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(option) {
156
- return index$1.checkCanLoadChildren(option, onLoadChildren);
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['default'].createElement("span", {
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
- // 搜索的结果列表也采用 flatted 模式进行展示
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['default'].createElement(context.CascaderProvider, {
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['default'].createElement(picker.Picker, Object.assign({
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['default'].createElement(input.MockInput, {
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['default'].createElement(icons.UpOutlined, null) : /*#__PURE__*/React__default['default'].createElement(icons.DownOutlined, null),
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['default'].createElement(CascaderMenuList, null) : null));
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 menuListPrefix = classname.getPrefixCls('cascader-menu-list');
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['default'].createElement("span", {
404
- className: "title__text"
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 renderHighlightTitle = function renderHighlightTitle(keyword, option, titleRender) {
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['default'].createElement("span", {
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['default'].createElement("span", {
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['default'].createElement("span", {
336
+ return /*#__PURE__*/React__default["default"].createElement("span", {
436
337
  key: id,
437
338
  className: "title__text--col"
438
- }, beforeStr, /*#__PURE__*/React__default['default'].createElement("span", {
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;
@@ -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) HIUI <mi-hiui@xiaomi.com>.
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) HIUI <mi-hiui@xiaomi.com>.
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['default'].mark(function _callee() {
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['default'].wrap(function _callee$(_context) {
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['default'].mark(function _callee2() {
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['default'].wrap(function _callee2$(_context2) {
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) HIUI <mi-hiui@xiaomi.com>.
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) HIUI <mi-hiui@xiaomi.com>.
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) HIUI <mi-hiui@xiaomi.com>.
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
@@ -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) HIUI <mi-hiui@xiaomi.com>.
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['default'].createElement(icons.DownOutlined, null);
33
- var defaultLeafIcon = /*#__PURE__*/React__default['default'].createElement("span", {
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['default'].createElement(spinner.Spinner, null);
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) HIUI <mi-hiui@xiaomi.com>.
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