@kdcloudjs/kdesign 1.6.13 → 1.6.15

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 (104) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/kdesign-complete.less +326 -249
  3. package/dist/kdesign.css +88 -17
  4. package/dist/kdesign.css.map +1 -1
  5. package/dist/kdesign.js +732 -399
  6. package/dist/kdesign.js.map +1 -1
  7. package/dist/kdesign.min.css +4 -4
  8. package/dist/kdesign.min.js +5 -5
  9. package/dist/kdesign.min.js.map +1 -1
  10. package/es/_utils/usePopper.d.ts +1 -0
  11. package/es/_utils/usePopper.js +3 -1
  12. package/es/button/button.js +1 -1
  13. package/es/button/style/index.css +3 -0
  14. package/es/button/style/index.less +4 -0
  15. package/es/button/style/token.less +1 -0
  16. package/es/carousel/carousel.d.ts +1 -0
  17. package/es/carousel/carousel.js +66 -3
  18. package/es/carousel/style/index.css +39 -0
  19. package/es/carousel/style/index.less +40 -0
  20. package/es/carousel/style/token.less +2 -0
  21. package/es/config-provider/compDefaultProps.d.ts +2 -0
  22. package/es/config-provider/compDefaultProps.js +4 -2
  23. package/es/date-picker/range-picker.js +6 -17
  24. package/es/date-picker/style/index.css +9 -9
  25. package/es/date-picker/style/index.less +1 -1
  26. package/es/date-picker/style/token.less +1 -1
  27. package/es/form/Field.js +67 -33
  28. package/es/form/FieldContext.js +1 -1
  29. package/es/form/hooks/useForm.js +29 -42
  30. package/es/form/interface.d.ts +7 -3
  31. package/es/icon/icon.js +23 -4
  32. package/es/image/preview.d.ts +1 -0
  33. package/es/image/preview.js +31 -6
  34. package/es/input/style/index.css +4 -3
  35. package/es/input/style/index.less +230 -227
  36. package/es/input/style/token.less +11 -12
  37. package/es/modal/modal.js +4 -8
  38. package/es/modal/style/index.css +7 -0
  39. package/es/modal/style/index.less +8 -0
  40. package/es/select/select.js +11 -8
  41. package/es/select/style/index.css +6 -3
  42. package/es/select/style/index.less +9 -3
  43. package/es/select/style/token.less +10 -5
  44. package/es/style/core/motion/other.less +9 -0
  45. package/es/style/icon/kdicon.css +3 -1
  46. package/es/style/icon/kdicon.woff +0 -0
  47. package/es/style/index.css +16 -0
  48. package/es/table/interface.d.ts +1 -0
  49. package/es/tooltip/tooltip.d.ts +1 -1
  50. package/es/tooltip/tooltip.js +9 -2
  51. package/es/tree/tree.d.ts +8 -0
  52. package/es/tree/tree.js +32 -17
  53. package/es/tree/treeHooks.d.ts +3 -3
  54. package/es/tree/treeHooks.js +7 -7
  55. package/es/tree/utils/treeUtils.d.ts +19 -6
  56. package/es/tree/utils/treeUtils.js +183 -33
  57. package/lib/_utils/usePopper.d.ts +1 -0
  58. package/lib/_utils/usePopper.js +3 -1
  59. package/lib/button/button.js +1 -1
  60. package/lib/button/style/index.css +3 -0
  61. package/lib/button/style/index.less +4 -0
  62. package/lib/button/style/token.less +1 -0
  63. package/lib/carousel/carousel.d.ts +1 -0
  64. package/lib/carousel/carousel.js +69 -2
  65. package/lib/carousel/style/index.css +39 -0
  66. package/lib/carousel/style/index.less +40 -0
  67. package/lib/carousel/style/token.less +2 -0
  68. package/lib/config-provider/compDefaultProps.d.ts +2 -0
  69. package/lib/config-provider/compDefaultProps.js +4 -2
  70. package/lib/date-picker/range-picker.js +6 -17
  71. package/lib/date-picker/style/index.css +9 -9
  72. package/lib/date-picker/style/index.less +1 -1
  73. package/lib/date-picker/style/token.less +1 -1
  74. package/lib/form/Field.js +68 -33
  75. package/lib/form/FieldContext.js +1 -1
  76. package/lib/form/hooks/useForm.js +28 -42
  77. package/lib/form/interface.d.ts +7 -3
  78. package/lib/icon/icon.js +22 -4
  79. package/lib/image/preview.d.ts +1 -0
  80. package/lib/image/preview.js +31 -6
  81. package/lib/input/style/index.css +4 -3
  82. package/lib/input/style/index.less +230 -227
  83. package/lib/input/style/token.less +11 -12
  84. package/lib/modal/modal.js +4 -8
  85. package/lib/modal/style/index.css +7 -0
  86. package/lib/modal/style/index.less +8 -0
  87. package/lib/select/select.js +11 -11
  88. package/lib/select/style/index.css +6 -3
  89. package/lib/select/style/index.less +9 -3
  90. package/lib/select/style/token.less +10 -5
  91. package/lib/style/core/motion/other.less +9 -0
  92. package/lib/style/icon/kdicon.css +3 -1
  93. package/lib/style/icon/kdicon.woff +0 -0
  94. package/lib/style/index.css +16 -0
  95. package/lib/table/interface.d.ts +1 -0
  96. package/lib/tooltip/tooltip.d.ts +1 -1
  97. package/lib/tooltip/tooltip.js +15 -5
  98. package/lib/tree/tree.d.ts +8 -0
  99. package/lib/tree/tree.js +30 -16
  100. package/lib/tree/treeHooks.d.ts +3 -3
  101. package/lib/tree/treeHooks.js +6 -6
  102. package/lib/tree/utils/treeUtils.d.ts +19 -6
  103. package/lib/tree/utils/treeUtils.js +193 -33
  104. package/package.json +1 -1
@@ -57,7 +57,7 @@ var ModalTypes = (0, _type.tuple)('confirm', 'warning', 'error', 'normal');
57
57
  exports.ModalTypes = ModalTypes;
58
58
 
59
59
  var Modal = function Modal(props) {
60
- var _classNames4, _context2, _context3;
60
+ var _classNames3, _classNames4, _context2, _context3;
61
61
 
62
62
  var _useContext = (0, _react.useContext)(_ConfigContext.default),
63
63
  getPrefixCls = _useContext.getPrefixCls,
@@ -223,7 +223,8 @@ var Modal = function Modal(props) {
223
223
  proxyCloseModal(onCancel);
224
224
  }
225
225
  }, [proxyCloseModal, onCancel, maskClosable]);
226
- var modalClasses = (0, _classnames.default)(modalPrefixCls, className, (0, _defineProperty2.default)({}, "".concat(modalPrefixCls, "-container"), true));
226
+ var isHidden = !destroyOnClose && !(isForceController ? visible : innerVisible);
227
+ var modalClasses = (0, _classnames.default)(modalPrefixCls, className, (_classNames3 = {}, (0, _defineProperty2.default)(_classNames3, "".concat(modalPrefixCls, "-container"), true), (0, _defineProperty2.default)(_classNames3, "".concat(modalPrefixCls, "-container-hidden"), isHidden), (0, _defineProperty2.default)(_classNames3, "".concat(modalPrefixCls, "-container-show"), !isHidden), _classNames3));
227
228
  var headerClass = "".concat(modalPrefixCls, "-header");
228
229
 
229
230
  var container = /*#__PURE__*/_react.default.createElement("div", {
@@ -269,14 +270,9 @@ var Modal = function Modal(props) {
269
270
  x: 0,
270
271
  y: 0
271
272
  };
272
- var isHidden = !destroyOnClose && !(isForceController ? visible : innerVisible);
273
- var compStyle = isHidden ? {
274
- display: 'none'
275
- } : {};
276
273
 
277
274
  var comp = /*#__PURE__*/_react.default.createElement("div", {
278
- className: modalClasses,
279
- style: compStyle
275
+ className: modalClasses
280
276
  }, mask && /*#__PURE__*/_react.default.createElement("div", {
281
277
  onClick: handleMaskClick,
282
278
  className: "".concat(modalPrefixCls, "-mask"),
@@ -111,6 +111,13 @@
111
111
  position: relative;
112
112
  z-index: var(--kd-c-modal-z-index, var(--kd-g-z-index-dialog, 1050));
113
113
  }
114
+ .kd-modal-container-show {
115
+ -webkit-animation: kdModalEffect calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1) both;
116
+ animation: kdModalEffect calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1) both;
117
+ }
118
+ .kd-modal-container-hidden {
119
+ display: none;
120
+ }
114
121
  .kd-modal-mask {
115
122
  position: fixed;
116
123
  background-color: var(--kd-c-modal-mask-color-background, rgba(55, 55, 55, 0.5));
@@ -23,6 +23,14 @@
23
23
  &-container {
24
24
  position: relative;
25
25
  z-index: @modal-z-index-dialog;
26
+
27
+ &-show {
28
+ animation: kdModalEffect calc(@transition-duration - 0.1s) @ease both;
29
+ }
30
+
31
+ &-hidden {
32
+ display: none
33
+ }
26
34
  }
27
35
  &-mask {
28
36
  .overlay(@modal-mask-color-background, 0);
@@ -111,8 +111,7 @@ var InternalSelect = function InternalSelect(props, ref) {
111
111
 
112
112
  var realChildren = Array.isArray(options) ? options : (0, _reactChildren.toArray)(children); // options配置项和默认children
113
113
 
114
- var innerRef = _react.default.useRef();
115
-
114
+ var innerRef = (0, _react.useRef)();
116
115
  var selectRef = ref || innerRef;
117
116
  var searchRef = (0, _react.useRef)(null); // 搜索框ref
118
117
 
@@ -123,7 +122,7 @@ var InternalSelect = function InternalSelect(props, ref) {
123
122
  selectMulOpts: []
124
123
  }); // 多选ref已选中项
125
124
 
126
- var measureRef = _react.default.useRef(null);
125
+ var measureRef = (0, _react.useRef)(null);
127
126
 
128
127
  var _useState = (0, _react.useState)([]),
129
128
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -166,12 +165,10 @@ var InternalSelect = function InternalSelect(props, ref) {
166
165
  var multipleFooterCls = (0, _classnames.default)((0, _defineProperty2.default)({}, "".concat(selectPrefixCls, "-multiple-footer"), true)); // 多选,单选公共样式
167
166
 
168
167
  var commCls = (0, _classnames.default)((_classNames6 = {}, (0, _defineProperty2.default)(_classNames6, "".concat(selectPrefixCls, "-bordered"), borderType === 'bordered'), (0, _defineProperty2.default)(_classNames6, "".concat(selectPrefixCls, "-underline"), borderType === 'underline'), (0, _defineProperty2.default)(_classNames6, "".concat(selectPrefixCls, "-borderless"), borderType === 'none'), (0, _defineProperty2.default)(_classNames6, (0, _concat.default)(_context = "".concat(selectPrefixCls, "-size-")).call(_context, size), size), (0, _defineProperty2.default)(_classNames6, "".concat(selectPrefixCls, "-wrapper"), true), _classNames6));
169
-
170
- _react.default.useEffect(function () {
168
+ (0, _react.useEffect)(function () {
171
169
  setOptionShow(!!props.visible);
172
170
  }, [props.visible]); // realchildren更新时数据处理---待解决
173
171
 
174
-
175
172
  (0, _react.useEffect)(function () {
176
173
  if (isMultiple) {
177
174
  multipleRef.current.selectedVal = initValue || [];
@@ -257,9 +254,9 @@ var InternalSelect = function InternalSelect(props, ref) {
257
254
  var handleClick = function handleClick() {
258
255
  if (disabled) return;
259
256
 
260
- if (!optionShow) {
257
+ if (optionShow) {
261
258
  var onDropdownVisibleChange = selectProps.onDropdownVisibleChange;
262
- onDropdownVisibleChange && onDropdownVisibleChange(!optionShow);
259
+ onDropdownVisibleChange && onDropdownVisibleChange(true);
263
260
  }
264
261
  };
265
262
 
@@ -767,8 +764,10 @@ var InternalSelect = function InternalSelect(props, ref) {
767
764
  };
768
765
 
769
766
  var handleVisibleChange = function handleVisibleChange(visible) {
770
- props.visible === undefined && setOptionShow(visible);
771
- onVisibleChange && onVisibleChange(visible);
767
+ if (visible !== optionShow) {
768
+ props.visible === undefined && setOptionShow(visible);
769
+ onVisibleChange && onVisibleChange(visible);
770
+ }
772
771
  };
773
772
 
774
773
  var popperProps = (0, _extends2.default)((0, _extends2.default)({}, selectProps), {
@@ -777,7 +776,8 @@ var InternalSelect = function InternalSelect(props, ref) {
777
776
  popperStyle: catchStyle(),
778
777
  defaultVisible: optionShow,
779
778
  visible: optionShow,
780
- onVisibleChange: handleVisibleChange
779
+ onVisibleChange: handleVisibleChange,
780
+ clickToClose: !isShowSearch
781
781
  });
782
782
  return (0, _usePopper.default)(renderSelect(), renderContent(), popperProps);
783
783
  };
@@ -311,8 +311,8 @@
311
311
  }
312
312
  .kd-select-bordered {
313
313
  border: 1px solid var(--kd-c-select-border-color-border, var(--kd-g-color-border-strong, #d9d9d9));
314
- padding-left: 8px !important;
315
- border-radius: 2px;
314
+ padding-left: var(--kd-c-select-bordered-spacing-padding-left, 8px) !important;
315
+ border-radius: var(--kd-c-select-bordered-radius-border, 2px);
316
316
  }
317
317
  .kd-select-bordered:hover:not(.kd-select-multiple-disabled):not(.kd-select-single-disabled) {
318
318
  border: 1px solid var(--kd-c-select-color-border-hover, var(--kd-g-color-theme, #5582f3));
@@ -320,10 +320,13 @@
320
320
  .kd-select-bordered .kd-select-suffix {
321
321
  padding-right: 8px;
322
322
  }
323
+ .kd-select-bordered.kd-select-single .kd-select-selection-search {
324
+ left: var(--kd-c-select-bordered-spacing-padding-left, 8px);
325
+ }
323
326
  .kd-select-wrapper {
324
327
  -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
325
328
  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
326
- padding: 1px 28px 1px 0;
329
+ padding: var(--kd-c-select-wrapper-spacing-padding, 1px 28px 1px 0);
327
330
  max-width: 100%;
328
331
  color: #212121;
329
332
  display: -webkit-box;
@@ -83,8 +83,8 @@
83
83
 
84
84
  &-bordered {
85
85
  border: 1px solid @select-border-g-color-border;
86
- padding-left: 8px !important;
87
- border-radius: 2px;
86
+ padding-left: @select-bordered !important;
87
+ border-radius: @select-border-radius-border;
88
88
  &:hover:not(.@{select-prefix-cls}-multiple-disabled):not(.@{select-prefix-cls}-single-disabled) {
89
89
  border: 1px solid @select-g-color-border-hover;
90
90
  }
@@ -92,11 +92,17 @@
92
92
  .@{select-prefix-cls}-suffix {
93
93
  padding-right: 8px;
94
94
  }
95
+
96
+ &.@{select-prefix-cls}-single {
97
+ .@{select-prefix-cls}-selection-search {
98
+ left: @select-bordered;
99
+ }
100
+ }
95
101
  }
96
102
 
97
103
  &-wrapper {
98
104
  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
99
- padding: 1px 28px 1px 0;
105
+ padding: @select-wrapper-padding;
100
106
  max-width: 100%;
101
107
  color: #212121;
102
108
  display: flex;
@@ -30,20 +30,25 @@
30
30
  @select-middle-font-size: var(~'@{select-custom-prefix}-font-size-middle', 14px); // 中号高度
31
31
  @select-small-font-size: var(~'@{select-custom-prefix}-font-size-small', 12px); // 小号高度
32
32
 
33
+ // line-height
34
+ @select-dropdown-line-height: var(~'@{select-custom-prefix}-dropdown-line-height', 22px);
35
+ @select-large-line-height: var(~'@{select-custom-prefix}-line-height-large', 28px);
36
+ @select-middle-line-height: var(~'@{select-custom-prefix}-line-height-middle', 22px);
37
+ @select-small-line-height: var(~'@{select-custom-prefix}-line-height-small', 14px);
38
+
33
39
  // sizing
34
40
  @select-dropdown-height: var(~'@{select-custom-prefix}-item-sizing-height', 22px);
35
41
  @select-large-height: var(~'@{select-custom-prefix}-sizing-height-large', 36px); // 大号高度 lh:28px
36
42
  @select-middle-height: var(~'@{select-custom-prefix}-sizing-height-middle', 30px); // 中号高度lh:22px
37
43
  @select-small-height: var(~'@{select-custom-prefix}-sizing-height-small', 24px); // 小号高度lh:12px
38
44
 
39
- // line-height
40
- @select-dropdown-line-height: var(~'@{select-custom-prefix}-dropdown-line-height', 22px);
41
- @select-large-line-height: var(~'@{select-custom-prefix}-line-height-large', 28px);
42
- @select-middle-line-height: var(~'@{select-custom-prefix}-line-height-middle', 22px);
43
- @select-small-line-height: var(~'@{select-custom-prefix}-line-height-small', 14px);
45
+ // spacing
46
+ @select-bordered: var(~'@{select-custom-prefix}-bordered-spacing-padding-left', 8px);
47
+ @select-wrapper-padding: var(~'@{select-custom-prefix}-wrapper-spacing-padding', 1px 28px 1px 0);
44
48
 
45
49
  // radius
46
50
  @select-g-radius-border: var(~'@{select-custom-prefix}-radius-border', @radius-border);
51
+ @select-border-radius-border: var(~'@{select-custom-prefix}-bordered-radius-border', 2px);
47
52
 
48
53
  // z-index
49
54
  @select-z-index: var(~'@{select-custom-prefix}-z-index', @z-index-popper);
@@ -123,4 +123,13 @@
123
123
  transform: translateY(-15px) scale(0.8);
124
124
  opacity: 0;
125
125
  }
126
+ }
127
+
128
+ @keyframes kdModalEffect {
129
+ 0% {
130
+ opacity: 0;
131
+ }
132
+ 100% {
133
+ opacity: 1;
134
+ }
126
135
  }
@@ -1,6 +1,6 @@
1
1
  @font-face {
2
2
  font-family: "kdicon";
3
- src: url("kdicon.woff?t=1654677347390") format("woff");
3
+ src: url("kdicon.woff?t=1668600442688") format("woff")
4
4
  }
5
5
  .kdicon {
6
6
  font-family: 'kdicon' !important;
@@ -24,8 +24,10 @@
24
24
  .kdicon-analysis:before { content: "\e6ce"; }
25
25
  .kdicon-arrow-down-solid:before { content: "\e656"; }
26
26
  .kdicon-arrow-down:before { content: "\e627"; }
27
+ .kdicon-arrow-left-circle-solid:before { content: "\e720"; }
27
28
  .kdicon-arrow-left-solid:before { content: "\e657"; }
28
29
  .kdicon-arrow-left:before { content: "\e63f"; }
30
+ .kdicon-arrow-right-circle-solid:before { content: "\e71f"; }
29
31
  .kdicon-arrow-right-solid:before { content: "\e655"; }
30
32
  .kdicon-arrow-right:before { content: "\e62c"; }
31
33
  .kdicon-arrow-up-solid:before { content: "\e654"; }
Binary file
@@ -383,6 +383,22 @@
383
383
  opacity: 0;
384
384
  }
385
385
  }
386
+ @-webkit-keyframes kdModalEffect {
387
+ 0% {
388
+ opacity: 0;
389
+ }
390
+ 100% {
391
+ opacity: 1;
392
+ }
393
+ }
394
+ @keyframes kdModalEffect {
395
+ 0% {
396
+ opacity: 0;
397
+ }
398
+ 100% {
399
+ opacity: 1;
400
+ }
401
+ }
386
402
  .top-active {
387
403
  -webkit-animation-name: kdZoomBottomIn;
388
404
  animation-name: kdZoomBottomIn;
@@ -44,6 +44,7 @@ export interface TableRowSelection {
44
44
  column?: Partial<ArtColumnStaticPart>;
45
45
  onChange?: (selectedRowKeys: string[], actionRowkey?: string, actionRowskeys?: string[], action?: string) => void;
46
46
  isDisabled?(row: any, rowIndex: number): boolean;
47
+ highlightRowWhenSelected?: boolean;
47
48
  }
48
49
  export declare type TableRowDetail = RowDetailFeatureOptions;
49
50
  export declare type TableFilter = FilterFeatureOptions;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import { PopperProps } from '../_utils/usePopper';
3
3
  export declare type RenderFunction = () => React.ReactNode;
4
4
  export interface TooltipProps extends PopperProps {
@@ -15,7 +15,7 @@ exports.default = void 0;
15
15
 
16
16
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
17
17
 
18
- var React = _interopRequireWildcard(require("react"));
18
+ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _utils = require("../_utils");
21
21
 
@@ -27,29 +27,39 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "functi
27
27
 
28
28
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
29
 
30
- var Tooltip = /*#__PURE__*/React.forwardRef(function (props, ref) {
31
- var _React$useContext = React.useContext(_configProvider.ConfigContext),
30
+ var Tooltip = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
31
+ var _React$useContext = _react.default.useContext(_configProvider.ConfigContext),
32
32
  getPrefixCls = _React$useContext.getPrefixCls,
33
33
  pkgPrefixCls = _React$useContext.prefixCls,
34
34
  userDefaultProps = _React$useContext.compDefaultProps; // 属性需要合并一遍用户定义的默认属性
35
35
 
36
36
 
37
37
  var allProps = (0, _utils.getCompProps)('ToolTip', userDefaultProps, props);
38
+ var status = (0, _react.useRef)();
38
39
  var tip = allProps.tip,
39
40
  children = allProps.children,
40
41
  customPrefixcls = allProps.prefixCls; // className前缀
41
42
 
42
43
  var prefixCls = getPrefixCls(pkgPrefixCls, 'tooltip', customPrefixcls);
43
- var tiplocator = /*#__PURE__*/React.cloneElement(React.Children.count(children) === 1 && children.type ? children : /*#__PURE__*/React.createElement("span", null, children), {
44
+
45
+ var tiplocator = /*#__PURE__*/_react.default.cloneElement(_react.default.Children.count(children) === 1 && children.type ? children : /*#__PURE__*/_react.default.createElement("span", null, children), {
44
46
  ref: children.ref || ref
45
47
  });
48
+
49
+ var onVisibleChange = function onVisibleChange(v) {
50
+ if (status.current === v) return;
51
+ status.current = v;
52
+ props.onVisibleChange && props.onVisibleChange(v);
53
+ };
54
+
46
55
  var popperProps = (0, _extends2.default)((0, _extends2.default)({}, allProps), {
47
56
  prefixCls: prefixCls,
48
- arrow: true
57
+ onVisibleChange: onVisibleChange
49
58
  });
50
59
  var tipPopper = typeof tip === 'function' ? tip() : tip;
51
60
  return (0, _usePopper.default)(tiplocator, tipPopper, popperProps);
52
61
  });
62
+
53
63
  Tooltip.displayName = 'Tooltip';
54
64
  var _default = Tooltip;
55
65
  exports.default = _default;
@@ -57,5 +57,13 @@ export declare type TreeNodeData = {
57
57
  showIcon?: boolean;
58
58
  selectable?: boolean;
59
59
  };
60
+ export declare type KeysDataType = {
61
+ [key: string]: TreeNodeData & {
62
+ pathParentKeys: string[];
63
+ };
64
+ };
65
+ export declare type PosDataType = {
66
+ [key: string]: TreeNodeData;
67
+ };
60
68
  declare const Tree: React.ForwardRefExoticComponent<TreeProps & React.RefAttributes<unknown>>;
61
69
  export default Tree;
package/lib/tree/tree.js CHANGED
@@ -115,14 +115,8 @@ var InternalTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
115
115
  return (0, _treeUtils.flattenAll)(treeData, []);
116
116
  }, [treeData]),
117
117
  flattenAllData = _React$useMemo.flattenAllData,
118
- maxLevel = _React$useMemo.maxLevel;
119
-
120
- var _useChecked = (0, _treeHooks.useChecked)(checkStrictly, checkedKeysProps, defaultCheckedKeys, flattenAllData, maxLevel, checkable),
121
- _useChecked2 = (0, _slicedToArray2.default)(_useChecked, 4),
122
- checkedKeys = _useChecked2[0],
123
- halfCheckedKeys = _useChecked2[1],
124
- setCheckedKeys = _useChecked2[2],
125
- setHalfCheckedKeys = _useChecked2[3];
118
+ maxLevel = _React$useMemo.maxLevel,
119
+ keysData = _React$useMemo.keysData;
126
120
 
127
121
  var _React$useState = _react.default.useState(scrollToKey),
128
122
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
@@ -182,18 +176,27 @@ var InternalTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
182
176
  return typeof filterTreeNode === 'function' && filterValue;
183
177
  }, [filterValue]);
184
178
 
185
- var _useExpand = (0, _treeHooks.useExpand)(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, isInit, filterTreeNode, isSearching),
179
+ var _useExpand = (0, _treeHooks.useExpand)(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, isInit, filterTreeNode, isSearching, keysData),
186
180
  _useExpand2 = (0, _slicedToArray2.default)(_useExpand, 2),
187
181
  expandedKeys = _useExpand2[0],
188
182
  setExpandedKeys = _useExpand2[1];
189
183
 
190
- var spreadAttrData = _react.default.useMemo(function () {
184
+ var _React$useMemo2 = _react.default.useMemo(function () {
191
185
  return (0, _treeUtils.getSpreadAttrData)(flattenAllData, expandedKeys);
192
- }, [flattenAllData, expandedKeys]);
186
+ }, [flattenAllData, expandedKeys]),
187
+ spreadAttrData = _React$useMemo2.spreadAttrData,
188
+ posData = _React$useMemo2.posData;
189
+
190
+ var _useChecked = (0, _treeHooks.useChecked)(checkStrictly, checkedKeysProps, defaultCheckedKeys, flattenAllData, maxLevel, checkable, keysData),
191
+ _useChecked2 = (0, _slicedToArray2.default)(_useChecked, 4),
192
+ checkedKeys = _useChecked2[0],
193
+ halfCheckedKeys = _useChecked2[1],
194
+ setCheckedKeys = _useChecked2[2],
195
+ setHalfCheckedKeys = _useChecked2[3];
193
196
 
194
197
  var filterData = _react.default.useMemo(function () {
195
- return (0, _treeUtils.getFilterData)(spreadAttrData, filterTreeNode, isSearching);
196
- }, [spreadAttrData, isSearching]);
198
+ return (0, _treeUtils.getFilterData)(spreadAttrData, filterTreeNode, isSearching, posData, keysData);
199
+ }, [spreadAttrData, isSearching, posData, keysData]);
197
200
 
198
201
  var _useViewportHeight = (0, _treeHooks.useViewportHeight)(height, listRef),
199
202
  _useViewportHeight2 = (0, _slicedToArray2.default)(_useViewportHeight, 1),
@@ -278,9 +281,17 @@ var InternalTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
278
281
  }
279
282
  }, [expandedKeys, onExpand, loadData, handleNodeLoad, loadedKeys, loadingKeys]);
280
283
 
281
- var handleCheck = _react.default.useCallback(function (key, value, node, event, pos) {
284
+ var handleCheck = _react.default.useCallback(function (key, value, node, event, _pos) {
282
285
  var newCheckedKeys = value ? (0, _treeUtils.addKeys)(checkedKeys, [key]) : (0, _treeUtils.delKey)(checkedKeys, [key]);
283
- var checkState = checkStrictly ? (0, _treeUtils.getDataCheckededStateStrictly)(newCheckedKeys) : (0, _treeUtils.getDataCheckededState)(spreadAttrData, newCheckedKeys, halfCheckedKeys, maxLevel, false, pos, value);
286
+ var checkState = checkStrictly ? (0, _treeUtils.getDataCheckededStateStrictly)(newCheckedKeys) : (0, _treeUtils.getAllCheckedKeys)(key, value, checkedKeys, keysData, halfCheckedKeys);
287
+
288
+ if (!('checkedKeys' in TreeProps)) {
289
+ setCheckedKeys(checkState.checkedKeys);
290
+ setHalfCheckedKeys(checkState.halfCheckedKeys);
291
+ } else {
292
+ setHalfCheckedKeys(checkState.halfCheckedKeys);
293
+ }
294
+
284
295
  onCheck && onCheck(checkState.checkedKeys, {
285
296
  event: event,
286
297
  node: node,
@@ -440,7 +451,10 @@ var InternalTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
440
451
  }, [scrollToKey]);
441
452
  (0, _react.useEffect)(function () {
442
453
  setHalfCheckedKeys(halfCheckedKeys);
443
- }, [halfCheckedKeys]);
454
+ }, [halfCheckedKeys, setHalfCheckedKeys]);
455
+ (0, _react.useEffect)(function () {
456
+ setCheckedKeys(checkedKeys);
457
+ }, [checkedKeys, setCheckedKeys]);
444
458
  return /*#__PURE__*/_react.default.createElement("div", {
445
459
  className: treeNodeClassName,
446
460
  style: style,
@@ -1,9 +1,9 @@
1
- import { TreeNodeData } from './tree';
1
+ import { TreeNodeData, KeysDataType } from './tree';
2
2
  import React from 'react';
3
3
  export declare const useViewportHeight: (height: number, listRef: React.RefObject<HTMLElement>) => number[];
4
4
  export declare const useVisibleDataMemo: (virtual: boolean, filterData: TreeNodeData[], viewportHeight: number, estimatedItemSize: number, start: number) => TreeNodeData[][];
5
5
  export declare const usePlantomHeightEffect: (plantomRef: React.RefObject<HTMLElement>, filterData: TreeNodeData[], estimatedItemSize: number) => void;
6
- export declare const useChecked: (checkStrictly: boolean, checkedKeysProps: string[], defaultCheckedKeys: string[], flattenAllData: any[], maxLevel: number, checkable: boolean) => readonly [string[], string[], React.Dispatch<React.SetStateAction<string[]>>, React.Dispatch<React.SetStateAction<string[]>>];
7
- export declare const useExpand: (flattenAllData: any[], expandedKeysProps: string[], defaultExpandedKeys: string[], defaultExpandAll: boolean, defaultExpandRoot: boolean, defaultExpandParent: boolean, scrollKey: string, isInit: boolean, filterTreeNode: FunctionConstructor, isSearching: boolean) => readonly [string[], React.Dispatch<React.SetStateAction<string[]>>];
6
+ export declare const useChecked: (checkStrictly: boolean, checkedKeysProps: string[], defaultCheckedKeys: string[], _flattenAllData: any[], _maxLevel: number, checkable: boolean, keysData: KeysDataType) => readonly [string[], string[], React.Dispatch<React.SetStateAction<string[]>>, React.Dispatch<React.SetStateAction<string[]>>];
7
+ export declare const useExpand: (flattenAllData: any[], expandedKeysProps: string[], defaultExpandedKeys: string[], defaultExpandAll: boolean, defaultExpandRoot: boolean, defaultExpandParent: boolean, scrollKey: string, isInit: boolean, filterTreeNode: FunctionConstructor, isSearching: boolean, keysData: KeysDataType) => readonly [string[], React.Dispatch<React.SetStateAction<string[]>>];
8
8
  export declare const useScrollToKey: (scrollKey: string, index: number, estimatedItemSize: number, scrollRef: any, viewportHeight: number, treeNodePrefixCls: string) => void;
9
9
  export declare const useSelect: (selectedKeysProps: string[], defaultSelectedKeys: string[]) => readonly [string[], React.Dispatch<React.SetStateAction<string[]>>];
@@ -72,14 +72,14 @@ var usePlantomHeightEffect = function usePlantomHeightEffect(plantomRef, filterD
72
72
 
73
73
  exports.usePlantomHeightEffect = usePlantomHeightEffect;
74
74
 
75
- var useChecked = function useChecked(checkStrictly, checkedKeysProps, defaultCheckedKeys, flattenAllData, maxLevel, checkable) {
75
+ var useChecked = function useChecked(checkStrictly, checkedKeysProps, defaultCheckedKeys, _flattenAllData, _maxLevel, checkable, keysData) {
76
76
  var initialCheckedState = _react.default.useMemo(function () {
77
77
  if (!checkable) return {
78
78
  checkedKeys: [],
79
79
  halfCheckedKeys: []
80
80
  };
81
- return checkStrictly ? (0, _treeUtils.getDataCheckededStateStrictly)(checkedKeysProps || defaultCheckedKeys) : (0, _treeUtils.getInitCheckededState)(flattenAllData, checkedKeysProps || defaultCheckedKeys, maxLevel, true);
82
- }, [flattenAllData, checkedKeysProps, defaultCheckedKeys, checkStrictly, maxLevel, checkable]);
81
+ return checkStrictly ? (0, _treeUtils.getDataCheckededStateStrictly)(checkedKeysProps || defaultCheckedKeys) : (0, _treeUtils.getInitCheckededKeys)(checkedKeysProps || defaultCheckedKeys, keysData);
82
+ }, [checkable, checkStrictly, checkedKeysProps, defaultCheckedKeys, keysData]);
83
83
 
84
84
  var _React$useState3 = _react.default.useState(initialCheckedState.checkedKeys),
85
85
  _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
@@ -104,7 +104,7 @@ var useChecked = function useChecked(checkStrictly, checkedKeysProps, defaultChe
104
104
 
105
105
  exports.useChecked = useChecked;
106
106
 
107
- var useExpand = function useExpand(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, isInit, filterTreeNode, isSearching) {
107
+ var useExpand = function useExpand(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, isInit, filterTreeNode, isSearching, keysData) {
108
108
  var expandScrollkeys = [];
109
109
 
110
110
  if (scrollKey) {
@@ -113,8 +113,8 @@ var useExpand = function useExpand(flattenAllData, expandedKeysProps, defaultExp
113
113
  }
114
114
 
115
115
  var initialExpandedKeys = _react.default.useMemo(function () {
116
- return (0, _treeUtils.getInitExpandedKeys)(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, expandScrollkeys, filterTreeNode, isSearching);
117
- }, [flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, filterTreeNode, isSearching]);
116
+ return (0, _treeUtils.getInitExpandedKeys)(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, expandScrollkeys, filterTreeNode, isSearching, keysData);
117
+ }, [flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, filterTreeNode, isSearching, keysData]);
118
118
 
119
119
  var newExpandedKeys = _react.default.useMemo(function () {
120
120
  return (0, _treeUtils.getExpandedKeys)(expandedKeysProps, expandScrollkeys);
@@ -1,4 +1,4 @@
1
- import { TreeNodeData } from '../tree';
1
+ import { TreeNodeData, KeysDataType } from '../tree';
2
2
  /**
3
3
  * 打平所有数组,并添加pos位置信息,
4
4
  * 方便根据expandKeys等计算节点的expand,checkedKeys计算节点checked状态
@@ -10,13 +10,14 @@ import { TreeNodeData } from '../tree';
10
10
  export declare const flattenAll: (treeData: any[], newTreeData?: TreeNodeData[], level?: number, pos?: string | undefined) => {
11
11
  flattenAllData: TreeNodeData[];
12
12
  maxLevel: number;
13
+ keysData: KeysDataType;
13
14
  };
14
15
  export declare const getExpand: (expandedKeys: string[], key: string) => boolean;
15
16
  export declare const getChecked: (checkedKeys: string[], key: string) => boolean;
16
17
  export declare const getSelected: (selectedKeys: string[], key: string) => boolean;
17
18
  export declare const getHalfChecked: (halfCheckedKeys: string[], key: string) => boolean;
18
- export declare const getAllFilterKeys: (data: any[], filterTreeNode: FunctionConstructor) => any[];
19
- export declare const getFilterData: (data: any[], filterTreeNode: FunctionConstructor, isSearching: boolean) => any[];
19
+ export declare const getAllFilterKeys: (data: any[], filterTreeNode: FunctionConstructor, keysData: KeysDataType) => any[];
20
+ export declare const getFilterData: (data: any[], filterTreeNode: FunctionConstructor, isSearching: boolean, posData?: {}, keysData?: {}) => any[];
20
21
  export declare const getMaxLevel: (data: any[]) => number;
21
22
  /**
22
23
  *计算node的属性后返回新的 treedata
@@ -25,14 +26,26 @@ export declare const getMaxLevel: (data: any[]) => number;
25
26
  * @param expandedKeys
26
27
  * @param defaultExpandAll
27
28
  */
28
- export declare const getSpreadAttrData: (treeData: any[], expandedKeys: string[]) => any[];
29
+ export declare const getSpreadAttrData: (treeData: any[], expandedKeys: string[]) => {
30
+ spreadAttrData: any[];
31
+ posData: any;
32
+ };
29
33
  export declare const addKeys: (prevKeys?: string[], newKeys?: string[]) => string[];
30
34
  export declare const getAllParentKeys: (data: any[], pos?: string) => string[];
31
35
  export declare const getAllParentPos: (data: any[], pos?: string) => string[];
32
36
  export declare const getAllChildKeys: (data: any[], pos?: string) => string[];
33
37
  export declare const getPos: (data: any[], key: string) => any;
34
38
  export declare const getInitCheckedKeys: (data: any[], keys: string[]) => any[];
35
- export declare const getInitCheckededState: (data: any[], checkedKeys: string[] | undefined, maxLevel: number, init?: boolean) => {
39
+ export declare const getInitCheckededState: (data: any[], checkedKeys: string[] | undefined, maxLevel: number, init: boolean | undefined, posData: any, _keysData: KeysDataType) => {
40
+ checkedKeys: string[];
41
+ halfCheckedKeys: string[];
42
+ };
43
+ export declare function getChildNodeKeys(node: TreeNodeData, keysNodeProps: KeysDataType): Set<string>;
44
+ export declare const getInitCheckededKeys: (checkedKeys: string[] | undefined, keysNodeProps: KeysDataType) => {
45
+ checkedKeys: string[];
46
+ halfCheckedKeys: string[];
47
+ };
48
+ export declare function getAllCheckedKeys(key: string, checked: boolean, checkedKeys: string[], keysNodeProps: KeysDataType, halfCheckedKeys: string[]): {
36
49
  checkedKeys: string[];
37
50
  halfCheckedKeys: string[];
38
51
  };
@@ -46,6 +59,6 @@ export declare const getDataCheckededStateStrictly: (checkedKeys: string[]) => {
46
59
  };
47
60
  export declare const delKey: (prevKeys: string[], delKeys: string[]) => never[] & string[];
48
61
  export declare const getAllNodeKeys: (data: any[]) => string[];
49
- export declare const getInitExpandedKeys: (data: any[], expandedKeys: string[], defaultExpandedKeys: string[], defaultExpandAll: boolean, defaultExpandRoot: boolean, defaultExpandParent: boolean, expandScrollkeys: string[] | undefined, filterTreeNode: FunctionConstructor, isSearching: boolean) => string[];
62
+ export declare const getInitExpandedKeys: (data: any[], expandedKeys: string[], defaultExpandedKeys: string[], defaultExpandAll: boolean, defaultExpandRoot: boolean, defaultExpandParent: boolean, expandScrollkeys: string[] | undefined, filterTreeNode: FunctionConstructor, isSearching: boolean, keysData: KeysDataType) => string[];
50
63
  export declare const getExpandedKeys: (expandedKeys: string[], expandScrollkeys?: string[]) => string[];
51
64
  export declare const calcDropPosition: (event: React.MouseEvent, dropNode: HTMLElement) => 0 | 1 | -1;