@qsxy/element-plus-react 1.0.0-next.5 → 1.0.0-next.7

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 (109) hide show
  1. package/dist/Cascader/Cascader.js +147 -182
  2. package/dist/Cascader/CascaderContext.d.ts +4 -10
  3. package/dist/Cascader/CascaderContext.js +2 -6
  4. package/dist/Cascader/CascaderDropdown.js +1 -1
  5. package/dist/Cascader/CascaderMenu.d.ts +0 -7
  6. package/dist/Cascader/CascaderMenu.js +4 -77
  7. package/dist/Cascader/Utils.d.ts +0 -2
  8. package/dist/Cascader/Utils.js +0 -44
  9. package/dist/Cascader/index.d.ts +1 -1
  10. package/dist/Cascader/typings.d.ts +2 -18
  11. package/dist/Cascader/useCascader.d.ts +1 -15
  12. package/dist/Cascader/useCascader.js +14 -41
  13. package/dist/DatePicker/DatePicker.js +5 -5
  14. package/dist/Empty/ImgEmpty.js +1 -1
  15. package/dist/Tree/DirectoryTree.d.ts +6 -13
  16. package/dist/Tree/DirectoryTree.js +32 -81
  17. package/dist/Tree/DropIndicator.d.ts +4 -2
  18. package/dist/Tree/DropIndicator.js +7 -2
  19. package/dist/Tree/Indent.d.ts +2 -2
  20. package/dist/Tree/Indent.js +4 -4
  21. package/dist/Tree/MotionTreeNode.d.ts +4 -5
  22. package/dist/Tree/MotionTreeNode.js +69 -52
  23. package/dist/Tree/NodeList.d.ts +15 -11
  24. package/dist/Tree/NodeList.js +38 -29
  25. package/dist/Tree/RCTree.d.ts +77 -75
  26. package/dist/Tree/RCTree.js +199 -188
  27. package/dist/Tree/Tree.d.ts +3 -3
  28. package/dist/Tree/Tree.js +27 -27
  29. package/dist/Tree/TreeNode.d.ts +5 -90
  30. package/dist/Tree/TreeNode.js +320 -422
  31. package/dist/Tree/contextTypes.d.ts +36 -30
  32. package/dist/Tree/contextTypes.js +17 -4
  33. package/dist/Tree/index.d.ts +2 -2
  34. package/dist/Tree/typings.d.ts +60 -19
  35. package/dist/Tree/typings.js +1 -13
  36. package/dist/Tree/typings.tsx--bak +245 -0
  37. package/dist/Tree/useUnmount.d.ts +5 -0
  38. package/dist/{VirtualList/index.js → Tree/useUnmount.js} +25 -10
  39. package/dist/Tree/util.d.ts +17 -21
  40. package/dist/Tree/util.js +21 -52
  41. package/dist/Tree/utils/conductUtil.d.ts +2 -2
  42. package/dist/Tree/utils/conductUtil.js +14 -3
  43. package/dist/Tree/utils/dictUtil.d.ts +7 -3
  44. package/dist/Tree/utils/dictUtil.js +49 -32
  45. package/dist/Tree/utils/diffUtil.d.ts +4 -3
  46. package/dist/Tree/utils/keyUtil.d.ts +2 -0
  47. package/dist/{VirtualList/utils/isFirefox.js → Tree/utils/keyUtil.js} +8 -7
  48. package/dist/Tree/utils/motion.js +6 -5
  49. package/dist/Tree/utils/treeUtil.d.ts +16 -18
  50. package/dist/Tree/utils/treeUtil.js +35 -14
  51. package/dist/TreeSelect/Utils.d.ts +1 -1
  52. package/dist/Util/base.d.ts +1 -1
  53. package/dist/Util/base.js +14 -2
  54. package/dist/index.css +6 -4
  55. package/dist/index.d.ts +3 -5
  56. package/dist/index.js +0 -5
  57. package/dist/theme-chalk/calendar/month-table.scss +1 -1
  58. package/dist/theme-chalk/input/input.scss +5 -3
  59. package/package.json +2 -1
  60. package/dist/Tree/utils/KeyCode.d.ts +0 -436
  61. package/dist/Tree/utils/KeyCode.js +0 -550
  62. package/dist/VirtualList/Filler.d.ts +0 -16
  63. package/dist/VirtualList/Filler.js +0 -78
  64. package/dist/VirtualList/Item.d.ts +0 -7
  65. package/dist/VirtualList/Item.js +0 -37
  66. package/dist/VirtualList/ScrollBar.d.ts +0 -43
  67. package/dist/VirtualList/ScrollBar.js +0 -216
  68. package/dist/VirtualList/VirtualList.d.ts +0 -36
  69. package/dist/VirtualList/VirtualList.js +0 -280
  70. package/dist/VirtualList/hooks/useChildren.d.ts +0 -3
  71. package/dist/VirtualList/hooks/useChildren.js +0 -46
  72. package/dist/VirtualList/hooks/useDiffItem.d.ts +0 -2
  73. package/dist/VirtualList/hooks/useDiffItem.js +0 -39
  74. package/dist/VirtualList/hooks/useFrameWheel.d.ts +0 -6
  75. package/dist/VirtualList/hooks/useFrameWheel.js +0 -72
  76. package/dist/VirtualList/hooks/useHeights.d.ts +0 -3
  77. package/dist/VirtualList/hooks/useHeights.js +0 -83
  78. package/dist/VirtualList/hooks/useLayoutEffect.d.ts +0 -6
  79. package/dist/VirtualList/hooks/useLayoutEffect.js +0 -30
  80. package/dist/VirtualList/hooks/useMobileTouchMove.d.ts +0 -2
  81. package/dist/VirtualList/hooks/useMobileTouchMove.js +0 -92
  82. package/dist/VirtualList/hooks/useOriginScroll.d.ts +0 -2
  83. package/dist/VirtualList/hooks/useOriginScroll.js +0 -56
  84. package/dist/VirtualList/hooks/useScrollTo.d.ts +0 -5
  85. package/dist/VirtualList/hooks/useScrollTo.js +0 -111
  86. package/dist/VirtualList/index.d.ts +0 -2
  87. package/dist/VirtualList/interface.d.ts +0 -8
  88. package/dist/VirtualList/interface.js +0 -17
  89. package/dist/VirtualList/mock.d.ts +0 -6
  90. package/dist/VirtualList/mock.js +0 -29
  91. package/dist/VirtualList/utils/CacheMap.d.ts +0 -7
  92. package/dist/VirtualList/utils/CacheMap.js +0 -36
  93. package/dist/VirtualList/utils/algorithmUtil.d.ts +0 -23
  94. package/dist/VirtualList/utils/algorithmUtil.js +0 -81
  95. package/dist/VirtualList/utils/findDOMNode.d.ts +0 -5
  96. package/dist/VirtualList/utils/findDOMNode.js +0 -30
  97. package/dist/VirtualList/utils/isFirefox.d.ts +0 -2
  98. package/dist/VirtualList/utils/raf.d.ts +0 -5
  99. package/dist/VirtualList/utils/raf.js +0 -57
  100. package/dist/theme-chalk/bak/common/popup.scss +0 -47
  101. package/dist/theme-chalk/bak/common/transition.scss +0 -118
  102. package/dist/theme-chalk/bak/common/var.scss +0 -1476
  103. package/dist/theme-chalk/bak/mixins/_button.scss +0 -224
  104. package/dist/theme-chalk/bak/mixins/_col.scss +0 -38
  105. package/dist/theme-chalk/bak/mixins/_var.scss +0 -55
  106. package/dist/theme-chalk/bak/mixins/config.scss +0 -5
  107. package/dist/theme-chalk/bak/mixins/function.scss +0 -85
  108. package/dist/theme-chalk/bak/mixins/mixins.scss +0 -215
  109. package/dist/theme-chalk/bak/mixins/utils.scss +0 -39
@@ -34,12 +34,10 @@ __export(Cascader_exports, {
34
34
  module.exports = __toCommonJS(Cascader_exports);
35
35
  var import_classnames = __toESM(require("classnames"));
36
36
  var import_find = __toESM(require("lodash/find"));
37
- var import_get = __toESM(require("lodash/get"));
38
37
  var import_isEqual = __toESM(require("lodash/isEqual"));
39
38
  var import_last = __toESM(require("lodash/last"));
40
39
  var import_max = __toESM(require("lodash/max"));
41
40
  var import_omit = __toESM(require("lodash/omit"));
42
- var import_reverse = __toESM(require("lodash/reverse"));
43
41
  var import_trim = __toESM(require("lodash/trim"));
44
42
  var import_react = __toESM(require("react"));
45
43
  var import_Divider = require("../Divider");
@@ -58,32 +56,27 @@ var import_useCascader = require("./useCascader");
58
56
  var Cascader = (0, import_react.memo)(
59
57
  (0, import_react.forwardRef)((props, ref) => {
60
58
  var _a;
61
- props = {
62
- separator: "/",
63
- showAllLevels: true,
64
- props: {
65
- expandTrigger: "click",
66
- emitPath: true,
67
- valueKey: "value",
68
- labelKey: "label",
69
- childrenKey: "children",
70
- disabledKey: "disabled",
71
- leafKey: "leaf"
72
- },
73
- treeMenuProps: {
74
- valueKey: "key",
75
- labelKey: "title",
76
- childrenKey: "children",
77
- disabledKey: "disabled",
78
- leafKey: "leaf"
59
+ props = (0, import_Util.mergeDefaultProps)(
60
+ {
61
+ separator: "/",
62
+ showAllLevels: true,
63
+ props: {
64
+ expandTrigger: "click",
65
+ emitPath: true,
66
+ valueKey: "value",
67
+ labelKey: "label",
68
+ childrenKey: "children",
69
+ disabledKey: "disabled",
70
+ leafKey: "leaf"
71
+ },
72
+ shouldSelect: () => true,
73
+ placeholder: "请选择",
74
+ collapseTags: true,
75
+ collapseTagsTooltip: true,
76
+ maxCollapseTags: 1
79
77
  },
80
- shouldSelect: () => true,
81
- placeholder: "请选择",
82
- collapseTags: true,
83
- collapseTagsTooltip: true,
84
- maxCollapseTags: 1,
85
- ...props
86
- };
78
+ props
79
+ );
87
80
  const {
88
81
  classPrefix = "cascader",
89
82
  options,
@@ -102,7 +95,6 @@ var Cascader = (0, import_react.memo)(
102
95
  afterEnter,
103
96
  afterLeave,
104
97
  props: menuProps,
105
- treeMenuProps,
106
98
  shouldSelect,
107
99
  labelFormatter,
108
100
  error,
@@ -110,7 +102,6 @@ var Cascader = (0, import_react.memo)(
110
102
  ...rest
111
103
  } = props;
112
104
  const { multiple, valueKey = "value", labelKey = "label", childrenKey = "children", lazy, lazyLoad } = menuProps;
113
- const { valueKey: treeValueKey = "key" } = treeMenuProps;
114
105
  const { e, b, m, is } = (0, import_hooks.useClassNames)(classPrefix);
115
106
  const disabled = (0, import_hooks.useDisabled)(props.disabled);
116
107
  const size = (0, import_hooks.useSize)(props.size);
@@ -154,7 +145,6 @@ var Cascader = (0, import_react.memo)(
154
145
  clearSelected,
155
146
  setNodeLeaf,
156
147
  getDataType,
157
- getTreeData,
158
148
  getExpandedKeys,
159
149
  setExpandedKeys,
160
150
  setSelectedValue,
@@ -256,20 +246,6 @@ var Cascader = (0, import_react.memo)(
256
246
  },
257
247
  [searchText]
258
248
  );
259
- const loopGetExpandedKeys = (0, import_react.useCallback)(
260
- (nodeList, node, expandedKeys = []) => {
261
- if (Object.prototype.hasOwnProperty.call(node, "parent")) {
262
- const key = (0, import_get.default)(node, `parent.${treeValueKey}`);
263
- const parent = (0, import_find.default)(nodeList, { [valueKey]: key });
264
- if (parent) {
265
- expandedKeys.push(key);
266
- loopGetExpandedKeys(nodeList, parent, expandedKeys);
267
- }
268
- }
269
- return expandedKeys;
270
- },
271
- [treeValueKey, valueKey]
272
- );
273
249
  const onSelect = (0, import_react.useCallback)(
274
250
  (_level, node) => {
275
251
  if (lazy && lazyLoad && node.__leaf !== true && !node[childrenKey]) {
@@ -277,8 +253,8 @@ var Cascader = (0, import_react.memo)(
277
253
  new Promise((resolve, reject) => {
278
254
  setLoading(node.__id);
279
255
  lazyLoad({ ...node, level: _level + 1 }, resolve, reject);
280
- }).then(({ nodes, isTree }) => {
281
- storeOptionData(nodes, _level + 1, node, { isTree });
256
+ }).then(({ nodes }) => {
257
+ storeOptionData(nodes, _level + 1, node, {});
282
258
  setLoading(null);
283
259
  if (shouldSelect(node, _level)) {
284
260
  setLevel(_level + 1);
@@ -287,7 +263,7 @@ var Cascader = (0, import_react.memo)(
287
263
  setNodeLeaf(node, true);
288
264
  setLoading(null);
289
265
  if (shouldSelect(node, _level)) {
290
- storeOptionData([], _level + 1, node, { isTree: false });
266
+ storeOptionData([], _level + 1, node, {});
291
267
  const _label = getSelectedLabel(labelFormatter == null ? void 0 : labelFormatter.bind(void 0, _level));
292
268
  lastValueRef.current = getSelectedValue();
293
269
  setValue(lastValueRef.current);
@@ -370,8 +346,6 @@ var Cascader = (0, import_react.memo)(
370
346
  }
371
347
  const curNode = (0, import_find.default)(nodes, { [valueKey]: _value[_l] });
372
348
  if (curNode) {
373
- const expandedKeys = loopGetExpandedKeys(nodes, curNode);
374
- setExpandedKeys(_l, (0, import_reverse.default)(expandedKeys));
375
349
  setSelectedNode(_l, curNode);
376
350
  setLabel(getSelectedLabel(labelFormatter == null ? void 0 : labelFormatter.bind(void 0, showAllLevels ? _value.length : allLevel)));
377
351
  loopLazyLoad(_l + 1, curNode, _value, { isCover });
@@ -387,8 +361,8 @@ var Cascader = (0, import_react.memo)(
387
361
  } else {
388
362
  new Promise((resolve, reject) => {
389
363
  lazyLoad({ ...parent, level: l }, resolve, reject);
390
- }).then(({ nodes, isTree }) => {
391
- const newNodes = storeOptionData(nodes, l, parent, { isTree, isCover });
364
+ }).then(({ nodes }) => {
365
+ const newNodes = storeOptionData(nodes, l, parent, { isCover });
392
366
  loopCore(newNodes, l);
393
367
  });
394
368
  }
@@ -406,8 +380,6 @@ var Cascader = (0, import_react.memo)(
406
380
  [
407
381
  stopLazy,
408
382
  valueKey,
409
- loopGetExpandedKeys,
410
- setExpandedKeys,
411
383
  setSelectedNode,
412
384
  setLabel,
413
385
  getSelectedLabel,
@@ -466,8 +438,8 @@ var Cascader = (0, import_react.memo)(
466
438
  if (lazy && lazyLoad && (0, import_Util.isEmpty)(value)) {
467
439
  new Promise((resolve, reject) => {
468
440
  lazyLoad({ level: 0 }, resolve, reject);
469
- }).then(({ nodes, isTree }) => {
470
- storeOptionData(nodes, 0, null, { isTree, isCover: true });
441
+ }).then(({ nodes }) => {
442
+ storeOptionData(nodes, 0, null, { isCover: true });
471
443
  });
472
444
  }
473
445
  if ((0, import_Util.isEmpty)(props.lable)) {
@@ -485,146 +457,139 @@ var Cascader = (0, import_react.memo)(
485
457
  },
486
458
  setVisible
487
459
  }));
488
- return /* @__PURE__ */ import_react.default.createElement(
489
- import_CascaderContext.CascaderContext.Provider,
460
+ return /* @__PURE__ */ import_react.default.createElement(import_CascaderContext.CascaderContext.Provider, { value: { props: menuProps, onSelect, onCheckedChange, loading, getDataType, searchText } }, /* @__PURE__ */ import_react.default.createElement(
461
+ "div",
490
462
  {
491
- value: { menuProps, treeMenuProps, treeProps, onSelect, onCheckedChange, loading, getDataType, getTreeData, getExpandedKeys, setExpandedKeys, searchText }
463
+ className: (0, import_classnames.default)(b(), is({ disabled }), m({ [size]: size }), props.className),
464
+ style: props.style,
465
+ ref: containerRef,
466
+ onClick: (event) => event.stopPropagation()
492
467
  },
493
- /* @__PURE__ */ import_react.default.createElement(
468
+ /* @__PURE__ */ import_react.default.createElement("div", { className: e`trigger` }, multiple && /* @__PURE__ */ import_react.default.createElement(
494
469
  "div",
495
470
  {
496
- className: (0, import_classnames.default)(b(), is({ disabled }), m({ [size]: size }), props.className),
497
- style: props.style,
498
- ref: containerRef,
499
- onClick: (event) => event.stopPropagation()
471
+ className: e`tags`,
472
+ onClick,
473
+ onMouseEnter: () => {
474
+ var _a2;
475
+ return (_a2 = inputRef.current) == null ? void 0 : _a2.showClear(multiple ? multiValue.join(",") : label);
476
+ },
477
+ onMouseLeave: () => {
478
+ var _a2;
479
+ return (_a2 = inputRef.current) == null ? void 0 : _a2.hideClear();
480
+ }
500
481
  },
501
- /* @__PURE__ */ import_react.default.createElement("div", { className: e`trigger` }, multiple && /* @__PURE__ */ import_react.default.createElement(
502
- "div",
482
+ /* @__PURE__ */ import_react.default.createElement("div", { className: (0, import_classnames.default)(b`tags-wrapper`, "has-prefix"), ref: wrapperRef }, (collapseTags ? checkedNodes().slice(0, maxCollapseTags) : checkedNodes()).map((item, i) => {
483
+ return /* @__PURE__ */ import_react.default.createElement(import_Tag.Tag, { key: i, type: "info", closable: !disabled, onClick, onClose: () => onCloseTag(item), disableTransitions: true }, item.map((node) => node[labelKey]).join(separator));
484
+ }), collapseTags && ((_a = multiLabel()) == null ? void 0 : _a.length) > maxCollapseTags && /* @__PURE__ */ import_react.default.createElement(
485
+ import_Tooltip.Tooltip,
503
486
  {
504
- className: e`tags`,
505
- onClick,
506
- onMouseEnter: () => {
507
- var _a2;
508
- return (_a2 = inputRef.current) == null ? void 0 : _a2.showClear(multiple ? multiValue.join(",") : label);
509
- },
510
- onMouseLeave: () => {
511
- var _a2;
512
- return (_a2 = inputRef.current) == null ? void 0 : _a2.hideClear();
513
- }
487
+ popperClass: e`tooltip`,
488
+ placement: "top",
489
+ disabled: !collapseTagsTooltip,
490
+ content: /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, checkedNodes().slice(maxCollapseTags, checkedNodes().length).map((item, i) => /* @__PURE__ */ import_react.default.createElement(import_Tag.Tag, { key: i, type: "info", disableTransitions: true }, item.map((node) => node[labelKey]).join(separator)))),
491
+ effect: "light",
492
+ enterable: true
514
493
  },
515
- /* @__PURE__ */ import_react.default.createElement("div", { className: (0, import_classnames.default)(b`tags-wrapper`, "has-prefix"), ref: wrapperRef }, (collapseTags ? checkedNodes().slice(0, maxCollapseTags) : checkedNodes()).map((item, i) => {
516
- return /* @__PURE__ */ import_react.default.createElement(import_Tag.Tag, { key: i, type: "info", closable: !disabled, onClick, onClose: () => onCloseTag(item), disableTransitions: true }, item.map((node) => node[labelKey]).join(separator));
517
- }), collapseTags && ((_a = multiLabel()) == null ? void 0 : _a.length) > maxCollapseTags && /* @__PURE__ */ import_react.default.createElement(
518
- import_Tooltip.Tooltip,
519
- {
520
- popperClass: e`tooltip`,
521
- placement: "top",
522
- disabled: !collapseTagsTooltip,
523
- content: /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, checkedNodes().slice(maxCollapseTags, checkedNodes().length).map((item, i) => /* @__PURE__ */ import_react.default.createElement(import_Tag.Tag, { key: i, type: "info", disableTransitions: true }, item.map((node) => node[labelKey]).join(separator)))),
524
- effect: "light",
525
- enterable: true
526
- },
527
- /* @__PURE__ */ import_react.default.createElement(import_Tag.Tag, { type: "info", onClick, disableTransitions: true }, collapseTips ? collapseTips(multiLabel().length - maxCollapseTags, multiLabel().length) : `+ ${multiLabel().length - maxCollapseTags}`)
528
- ))
529
- ), /* @__PURE__ */ import_react.default.createElement(
530
- import_Input.Input,
531
- {
532
- ref: inputRef,
533
- value: multiple ? multiValue.join(separator) : label,
534
- placeholder,
535
- readOnly: true,
536
- hiddenValue: multiple,
537
- clearable: clearable && !disabled,
538
- disabled,
539
- size,
540
- onClick,
541
- onClear,
542
- plain: props.plain,
543
- className: is({ active: visible }),
544
- error,
545
- warning,
546
- innerStyle: multiple ? { height: inputHeight } : {},
547
- suffix: /* @__PURE__ */ import_react.default.createElement(import_Icon.Icon, { prefix: "fal", name: "angle-down", className: visible ? "fa-rotate-180" : "", onClick }),
548
- prefix: props.prefix,
549
- append: props.append,
550
- prepend: props.prepend,
551
- ...(0, import_omit.default)(htmlInputProps, [
552
- "value",
553
- "defaultValue",
554
- "onInput",
555
- "size",
556
- "prefix",
557
- "onChange",
558
- "style",
559
- "readOnly",
560
- "disabled",
561
- "className",
562
- "type",
563
- "maxLength",
564
- "minLength",
565
- "name"
566
- ])
567
- }
494
+ /* @__PURE__ */ import_react.default.createElement(import_Tag.Tag, { type: "info", onClick, disableTransitions: true }, collapseTips ? collapseTips(multiLabel().length - maxCollapseTags, multiLabel().length) : `+ ${multiLabel().length - maxCollapseTags}`)
568
495
  ))
569
- ),
570
- /* @__PURE__ */ import_react.default.createElement(
571
- import_Popper.Popper,
496
+ ), /* @__PURE__ */ import_react.default.createElement(
497
+ import_Input.Input,
572
498
  {
573
- referenceElement: () => {
574
- var _a2;
575
- return (_a2 = inputRef == null ? void 0 : inputRef.current) == null ? void 0 : _a2.ref;
576
- },
577
- visible,
578
- popperInstRef,
579
- popperClass: e`dropdown`,
580
- onDestroy: () => setVisible(false),
581
- onEnter: () => {
582
- var _a2;
583
- (_a2 = popperInstRef.current) == null ? void 0 : _a2.update();
584
- onEnter == null ? void 0 : onEnter();
585
- },
586
- afterEnter: () => {
587
- for (const key in menuRefs.current) {
588
- if (Object.prototype.hasOwnProperty.call(menuRefs.current, key)) {
589
- const item = menuRefs.current[key];
590
- item == null ? void 0 : item.scrollToSelected();
591
- }
499
+ ref: inputRef,
500
+ value: multiple ? multiValue.join(separator) : label,
501
+ placeholder,
502
+ readOnly: true,
503
+ hiddenValue: multiple,
504
+ clearable: clearable && !disabled,
505
+ disabled,
506
+ size,
507
+ onClick,
508
+ onClear,
509
+ plain: props.plain,
510
+ className: is({ active: visible }),
511
+ error,
512
+ warning,
513
+ innerStyle: multiple ? { height: inputHeight } : {},
514
+ suffix: /* @__PURE__ */ import_react.default.createElement(import_Icon.Icon, { prefix: "fal", name: "angle-down", className: visible ? "fa-rotate-180" : "", onClick }),
515
+ prefix: props.prefix,
516
+ append: props.append,
517
+ prepend: props.prepend,
518
+ ...(0, import_omit.default)(htmlInputProps, [
519
+ "value",
520
+ "defaultValue",
521
+ "onInput",
522
+ "size",
523
+ "prefix",
524
+ "onChange",
525
+ "style",
526
+ "readOnly",
527
+ "disabled",
528
+ "className",
529
+ "type",
530
+ "maxLength",
531
+ "minLength",
532
+ "name"
533
+ ])
534
+ }
535
+ ))
536
+ ), /* @__PURE__ */ import_react.default.createElement(
537
+ import_Popper.Popper,
538
+ {
539
+ referenceElement: () => {
540
+ var _a2;
541
+ return (_a2 = inputRef == null ? void 0 : inputRef.current) == null ? void 0 : _a2.ref;
542
+ },
543
+ visible,
544
+ popperInstRef,
545
+ popperClass: e`dropdown`,
546
+ onDestroy: () => setVisible(false),
547
+ onEnter: () => {
548
+ var _a2;
549
+ (_a2 = popperInstRef.current) == null ? void 0 : _a2.update();
550
+ onEnter == null ? void 0 : onEnter();
551
+ },
552
+ afterEnter: () => {
553
+ for (const key in menuRefs.current) {
554
+ if (Object.prototype.hasOwnProperty.call(menuRefs.current, key)) {
555
+ const item = menuRefs.current[key];
556
+ item == null ? void 0 : item.scrollToSelected();
592
557
  }
593
- afterEnter == null ? void 0 : afterEnter();
594
- },
595
- afterLeave: handleAfterLeave,
596
- placement: "bottom-start",
597
- transitionAppear: true,
598
- unmountOnExit: true,
599
- ...transitionProps,
600
- ...popperProps
558
+ }
559
+ afterEnter == null ? void 0 : afterEnter();
601
560
  },
602
- /* @__PURE__ */ import_react.default.createElement("div", { className: b`panel` }, filterable && /* @__PURE__ */ import_react.default.createElement("div", { className: e`search`, onClick: (event) => event.stopPropagation() }, /* @__PURE__ */ import_react.default.createElement(
603
- import_Input.Input,
561
+ afterLeave: handleAfterLeave,
562
+ placement: "bottom-start",
563
+ transitionAppear: true,
564
+ unmountOnExit: true,
565
+ ...transitionProps,
566
+ ...popperProps
567
+ },
568
+ /* @__PURE__ */ import_react.default.createElement("div", { className: b`panel` }, filterable && /* @__PURE__ */ import_react.default.createElement("div", { className: e`search`, onClick: (event) => event.stopPropagation() }, /* @__PURE__ */ import_react.default.createElement(
569
+ import_Input.Input,
570
+ {
571
+ ref: searchInstance,
572
+ placeholder: "请输入关键词",
573
+ clearable: true,
574
+ plain: true,
575
+ debounceInput: true,
576
+ onClear: onClearSearch,
577
+ onChange: onSearch,
578
+ prefix: /* @__PURE__ */ import_react.default.createElement(import_Icon.Icon, { prefix: "fal", name: "search" })
579
+ }
580
+ ), /* @__PURE__ */ import_react.default.createElement(import_Divider.Divider, { style: { margin: 0 } })), (0, import_Util.isNotEmpty)(searchText) ? /* @__PURE__ */ import_react.default.createElement(import_CascaderDropdown.default, { options: filterList, separator, value, checkedNodes }) : /* @__PURE__ */ import_react.default.createElement("div", { className: e`panels` }, new Array(level + 1).fill(0).map((_, l) => {
581
+ return /* @__PURE__ */ import_react.default.createElement(
582
+ import_CascaderMenu.default,
604
583
  {
605
- ref: searchInstance,
606
- placeholder: "请输入关键词",
607
- clearable: true,
608
- plain: true,
609
- debounceInput: true,
610
- onClear: onClearSearch,
611
- onChange: onSearch,
612
- prefix: /* @__PURE__ */ import_react.default.createElement(import_Icon.Icon, { prefix: "fal", name: "search" })
584
+ key: getValueOfLevel(l) + "_" + l,
585
+ ref: (_ref) => menuRefs.current[l] = _ref,
586
+ data: getOptions(l),
587
+ level: l,
588
+ value: getValueOfLevel(l)
613
589
  }
614
- ), /* @__PURE__ */ import_react.default.createElement(import_Divider.Divider, { style: { margin: 0 } })), (0, import_Util.isNotEmpty)(searchText) ? /* @__PURE__ */ import_react.default.createElement(import_CascaderDropdown.default, { options: filterList, separator, value, checkedNodes }) : /* @__PURE__ */ import_react.default.createElement("div", { className: e`panels` }, new Array(level + 1).fill(0).map((_, l) => {
615
- return /* @__PURE__ */ import_react.default.createElement(
616
- import_CascaderMenu.default,
617
- {
618
- key: getValueOfLevel(l) + "_" + l,
619
- ref: (_ref) => menuRefs.current[l] = _ref,
620
- data: getOptions(l),
621
- level: l,
622
- value: getValueOfLevel(l)
623
- }
624
- );
625
- })))
626
- )
627
- );
590
+ );
591
+ })))
592
+ ));
628
593
  })
629
594
  );
630
595
  Cascader.displayName = "Cascader";
@@ -1,18 +1,12 @@
1
1
  /// <reference types="react" />
2
- import { DataNode, DirectoryTreeProps, Key } from '../Tree';
3
- import { CascaderMenuProps, TreeMenuProps } from './typings';
4
- interface CascaderContextProps<T = DataNode> {
5
- menuProps: CascaderMenuProps;
6
- treeMenuProps?: TreeMenuProps;
7
- treeProps?: DirectoryTreeProps<T>;
2
+ import { CascaderMenuProps } from './typings';
3
+ interface CascaderContextProps {
4
+ props: CascaderMenuProps;
8
5
  loading?: string;
9
6
  searchText?: string;
10
- getExpandedKeys?: (level: number) => Key[];
11
- setExpandedKeys?: (level: number, keys: Key[]) => void;
12
7
  onSelect: (level: number, node: object) => void;
13
8
  onCheckedChange: (_level: number, node: object, checked: boolean) => void;
14
9
  getDataType: (level: number) => boolean;
15
- getTreeData: (level: number) => DataNode[];
16
10
  }
17
- export declare const CascaderContext: import("react").Context<CascaderContextProps<DataNode<any>>>;
11
+ export declare const CascaderContext: import("react").Context<CascaderContextProps>;
18
12
  export {};
@@ -39,12 +39,8 @@ var CascaderContext = (0, import_react.createContext)({
39
39
  onCheckedChange: import_noop.default,
40
40
  loading: null,
41
41
  searchText: null,
42
- menuProps: {},
43
- treeMenuProps: {},
44
- getExpandedKeys: () => [],
45
- setExpandedKeys: import_noop.default,
46
- getDataType: () => false,
47
- getTreeData: () => []
42
+ props: {},
43
+ getDataType: () => false
48
44
  });
49
45
  // Annotate the CommonJS export names for ESM import in node:
50
46
  0 && (module.exports = {
@@ -40,7 +40,7 @@ var import_Scrollbar = require("../Scrollbar");
40
40
  var import_hooks = require("../hooks");
41
41
  var import_CascaderContext = require("./CascaderContext");
42
42
  var CascaderDropdown = (0, import_react.memo)((props) => {
43
- const { menuProps, onSelect, onCheckedChange } = (0, import_react.useContext)(import_CascaderContext.CascaderContext);
43
+ const { props: menuProps, onSelect, onCheckedChange } = (0, import_react.useContext)(import_CascaderContext.CascaderContext);
44
44
  const { options, separator, value, checkedNodes } = props;
45
45
  const { valueKey = "value", labelKey = "label", multiple } = menuProps;
46
46
  const { e, is } = (0, import_hooks.useClassNames)("cascader");
@@ -8,12 +8,5 @@ interface Props {
8
8
  export interface CascaderMenuRef {
9
9
  scrollToSelected: () => void;
10
10
  }
11
- /**
12
- * @author Parker
13
- * @CreateTime 2022/4/17 14:14:01
14
- * @LastEditor Parker
15
- * @ModifyTime 2025/2/22 16:22:21
16
- * @Description
17
- */
18
11
  declare const CascaderMenu: React.MemoExoticComponent<React.ForwardRefExoticComponent<Props & React.RefAttributes<CascaderMenuRef>>>;
19
12
  export default CascaderMenu;
@@ -33,82 +33,20 @@ __export(CascaderMenu_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(CascaderMenu_exports);
35
35
  var import_classnames = __toESM(require("classnames"));
36
- var import_flattenDeep = __toESM(require("lodash/flattenDeep"));
37
36
  var import_react = __toESM(require("react"));
38
37
  var import_scroll_into_view_if_needed = __toESM(require("scroll-into-view-if-needed"));
39
38
  var import_Checkbox = require("../Checkbox");
40
39
  var import_Icon = require("../Icon");
41
40
  var import_Scrollbar = require("../Scrollbar");
42
- var import_Util = require("../Util");
43
41
  var import_hooks = require("../hooks");
44
42
  var import_CascaderContext = require("./CascaderContext");
45
43
  var CascaderMenu = (0, import_react.memo)(
46
44
  (0, import_react.forwardRef)((props, ref) => {
47
45
  const { data = [], level, value } = props;
48
- const { menuProps, treeMenuProps, onSelect, onCheckedChange, getDataType, loading, getExpandedKeys, searchText } = (0, import_react.useContext)(import_CascaderContext.CascaderContext);
49
- const { valueKey = "value", labelKey = "label", disabledKey = "disabled", multiple } = menuProps;
50
- const { valueKey: treeValueKey = "key", labelKey: treeLabelKey = "title", childrenKey: treeChildrenKey } = treeMenuProps;
46
+ const { props: menuProps, onSelect, onCheckedChange, loading } = (0, import_react.useContext)(import_CascaderContext.CascaderContext);
47
+ const { valueKey = "value", labelKey = "label", disabledKey = "disabled", multiple, expandTrigger } = menuProps;
51
48
  const { b, be, is } = (0, import_hooks.useClassNames)("cascader");
52
- const treeRef = (0, import_react.useRef)();
53
- const dataList = (0, import_react.useRef)([]);
54
49
  const ulRef = (0, import_react.useRef)(null);
55
- const isTree = (0, import_react.useMemo)(() => {
56
- return getDataType(level);
57
- }, [getDataType, level]);
58
- const fieldNames = (0, import_react.useMemo)(() => {
59
- return { title: treeLabelKey, key: treeValueKey, children: treeChildrenKey };
60
- }, [treeChildrenKey, treeLabelKey, treeValueKey]);
61
- const loop = (0, import_react.useCallback)(
62
- (_data, searchValue, parent) => _data.map((item) => {
63
- var _a;
64
- const index = item[fieldNames.title].indexOf(searchValue);
65
- const beforeStr = item[fieldNames.title].substring(0, index);
66
- const afterStr = item[fieldNames.title].slice(index + searchValue.length);
67
- const title = index > -1 ? /* @__PURE__ */ import_react.default.createElement("span", null, beforeStr, /* @__PURE__ */ import_react.default.createElement("span", { className: b("tree-search-value", false) }, searchValue), afterStr) : /* @__PURE__ */ import_react.default.createElement("span", null, item[fieldNames.title]);
68
- const newItem = { ...item, parentId: parent ? [parent.parentId, parent[fieldNames.key]].filter((item1) => !!item1).join(",") : "" };
69
- dataList.current.push(newItem);
70
- if (((_a = item == null ? void 0 : item[fieldNames.children]) == null ? void 0 : _a.length) > 0) {
71
- return {
72
- ...item,
73
- [fieldNames.title]: title,
74
- _title: item[fieldNames.title],
75
- [fieldNames.key]: item[fieldNames.key],
76
- [fieldNames.children]: loop(item.children, searchValue, newItem).filter((item1) => !!item1),
77
- disabled: item.disabled
78
- };
79
- }
80
- return index > -1 ? {
81
- ...item,
82
- [fieldNames.title]: title,
83
- _title: item[fieldNames.title],
84
- [fieldNames.key]: item[fieldNames.key],
85
- disabled: item.disabled
86
- } : null;
87
- }),
88
- [b, fieldNames.children, fieldNames.key, fieldNames.title]
89
- );
90
- const expandByKeys = (0, import_react.useCallback)((expandedKeys) => {
91
- var _a, _b;
92
- const flattenNodes = (_a = treeRef.current) == null ? void 0 : _a.flattenTreeData(expandedKeys);
93
- (_b = treeRef.current) == null ? void 0 : _b.setState({
94
- expandedKeys,
95
- flattenNodes
96
- });
97
- }, []);
98
- const getExpandKeys = (0, import_react.useCallback)(() => {
99
- if (isTree) {
100
- const _expandedKeys = (0, import_flattenDeep.default)(
101
- dataList.current.map((item) => {
102
- var _a;
103
- if (item[fieldNames.title].indexOf(searchText) > -1) {
104
- return ((_a = item.parentId) == null ? void 0 : _a.split(",")) ?? [];
105
- }
106
- return null;
107
- })
108
- ).filter((item, i, self) => item && self.indexOf(item) === i);
109
- expandByKeys(_expandedKeys);
110
- }
111
- }, [expandByKeys, fieldNames.title, isTree, searchText]);
112
50
  const scrollToSelected = (0, import_react.useCallback)(() => {
113
51
  var _a, _b;
114
52
  if ((_b = (_a = ulRef.current) == null ? void 0 : _a.resizeRef) == null ? void 0 : _b.current) {
@@ -123,17 +61,6 @@ var CascaderMenu = (0, import_react.memo)(
123
61
  }
124
62
  }
125
63
  }, []);
126
- (0, import_react.useEffect)(() => {
127
- if (isTree && (0, import_Util.isNotEmpty)(searchText)) {
128
- getExpandKeys();
129
- }
130
- }, [searchText]);
131
- (0, import_react.useEffect)(() => {
132
- if (isTree) {
133
- const expandedKeys = getExpandedKeys(level);
134
- expandByKeys(expandedKeys);
135
- }
136
- }, []);
137
64
  (0, import_react.useImperativeHandle)(ref, () => ({
138
65
  scrollToSelected: () => {
139
66
  scrollToSelected();
@@ -160,13 +87,13 @@ var CascaderMenu = (0, import_react.memo)(
160
87
  ),
161
88
  onClick: () => {
162
89
  if (!item[disabledKey]) {
163
- if (menuProps.expandTrigger === "click" || item.__leaf) {
90
+ if (expandTrigger === "click" || item.__leaf) {
164
91
  onSelect == null ? void 0 : onSelect(level, item);
165
92
  }
166
93
  }
167
94
  },
168
95
  onMouseEnter: () => {
169
- if (menuProps.expandTrigger === "hover" && !item[disabledKey] && !item.__leaf) {
96
+ if (expandTrigger === "hover" && !item[disabledKey] && !item.__leaf) {
170
97
  onSelect == null ? void 0 : onSelect(level, item);
171
98
  }
172
99
  }
@@ -1,3 +1 @@
1
- import { CascaderMenuProps, OptionNode, TreeMenuProps } from './typings';
2
1
  export declare const toArray: (val: string | string[] | string[][], separator?: string) => string[] | string[][];
3
- export declare const reOrgTree: (treeData: object[], level: number, { valueKey, labelKey, leafKey, childrenKey }: CascaderMenuProps, { valueKey: treeValueKey, labelKey: treeLabelKey, childrenKey: treeChildrenKey }: TreeMenuProps, plainData?: OptionNode[], parent?: any) => OptionNode[];