@kdcloudjs/kdesign 1.7.35 → 1.7.37

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 (88) hide show
  1. package/dist/kdesign-complete.less +185 -26
  2. package/dist/kdesign.css +228 -24
  3. package/dist/kdesign.css.map +1 -1
  4. package/dist/kdesign.js +565 -119
  5. package/dist/kdesign.js.map +1 -1
  6. package/dist/kdesign.min.css +3 -3
  7. package/dist/kdesign.min.js +5 -5
  8. package/dist/kdesign.min.js.map +1 -1
  9. package/es/city-picker/city-picker.js +1 -1
  10. package/es/clipboard/clipboard.d.ts +21 -0
  11. package/es/clipboard/clipboard.js +106 -0
  12. package/es/clipboard/index.d.ts +4 -0
  13. package/es/clipboard/index.js +3 -0
  14. package/es/clipboard/style/css.js +2 -0
  15. package/es/clipboard/style/index.css +190 -0
  16. package/es/clipboard/style/index.d.ts +2 -0
  17. package/es/clipboard/style/index.js +2 -0
  18. package/es/clipboard/style/index.less +32 -0
  19. package/es/clipboard/style/mixin.less +39 -0
  20. package/es/clipboard/style/token.less +52 -0
  21. package/es/clipboard/util.d.ts +13 -0
  22. package/es/clipboard/util.js +197 -0
  23. package/es/config-provider/compDefaultProps.d.ts +5 -0
  24. package/es/config-provider/compDefaultProps.js +5 -0
  25. package/es/index.d.ts +1 -0
  26. package/es/index.js +2 -1
  27. package/es/message/content.js +1 -4
  28. package/es/select/interface.d.ts +1 -0
  29. package/es/select/select.js +3 -8
  30. package/es/select/style/index.css +7 -4
  31. package/es/select/style/index.less +12 -4
  32. package/es/select/style/token.less +1 -0
  33. package/es/tree/style/index.css +22 -15
  34. package/es/tree/style/index.less +33 -18
  35. package/es/tree/tree.d.ts +1 -0
  36. package/es/tree/tree.js +29 -13
  37. package/es/tree/treeHooks.d.ts +2 -2
  38. package/es/tree/treeHooks.js +11 -6
  39. package/es/tree/treeNode.d.ts +2 -3
  40. package/es/tree/treeNode.js +6 -5
  41. package/es/tree/utils/treeUtils.d.ts +2 -2
  42. package/es/tree/utils/treeUtils.js +5 -6
  43. package/es/tree-select/interface.d.ts +1 -0
  44. package/es/tree-select/style/index.css +7 -4
  45. package/es/tree-select/style/index.less +12 -4
  46. package/es/tree-select/style/token.less +1 -0
  47. package/es/tree-select/tree-select.js +6 -2
  48. package/lib/city-picker/city-picker.js +1 -1
  49. package/lib/clipboard/clipboard.d.ts +21 -0
  50. package/lib/clipboard/clipboard.js +121 -0
  51. package/lib/clipboard/index.d.ts +4 -0
  52. package/lib/clipboard/index.js +11 -0
  53. package/lib/clipboard/style/css.js +4 -0
  54. package/lib/clipboard/style/index.css +190 -0
  55. package/lib/clipboard/style/index.d.ts +2 -0
  56. package/lib/clipboard/style/index.js +4 -0
  57. package/lib/clipboard/style/index.less +32 -0
  58. package/lib/clipboard/style/mixin.less +39 -0
  59. package/lib/clipboard/style/token.less +52 -0
  60. package/lib/clipboard/util.d.ts +13 -0
  61. package/lib/clipboard/util.js +204 -0
  62. package/lib/config-provider/compDefaultProps.d.ts +5 -0
  63. package/lib/config-provider/compDefaultProps.js +5 -0
  64. package/lib/index.d.ts +1 -0
  65. package/lib/index.js +7 -0
  66. package/lib/message/content.js +1 -4
  67. package/lib/select/interface.d.ts +1 -0
  68. package/lib/select/select.js +3 -8
  69. package/lib/select/style/index.css +7 -4
  70. package/lib/select/style/index.less +12 -4
  71. package/lib/select/style/token.less +1 -0
  72. package/lib/style/components.less +1 -0
  73. package/lib/tree/style/index.css +22 -15
  74. package/lib/tree/style/index.less +33 -18
  75. package/lib/tree/tree.d.ts +1 -0
  76. package/lib/tree/tree.js +28 -12
  77. package/lib/tree/treeHooks.d.ts +2 -2
  78. package/lib/tree/treeHooks.js +10 -5
  79. package/lib/tree/treeNode.d.ts +2 -3
  80. package/lib/tree/treeNode.js +6 -5
  81. package/lib/tree/utils/treeUtils.d.ts +2 -2
  82. package/lib/tree/utils/treeUtils.js +5 -6
  83. package/lib/tree-select/interface.d.ts +1 -0
  84. package/lib/tree-select/style/index.css +7 -4
  85. package/lib/tree-select/style/index.less +12 -4
  86. package/lib/tree-select/style/token.less +1 -0
  87. package/lib/tree-select/tree-select.js +6 -2
  88. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
- import { TreeNodeData, KeysDataType } from './tree';
1
+ import { TreeNodeData, KeysDataType, SearchStatus } 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
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, searchExpandedKeys: string[]) => readonly [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, searchStatus: SearchStatus) => 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[]>>];
@@ -1,7 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
2
2
  import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
3
3
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
4
- import React, { useEffect, useState } from 'react';
4
+ import React, { useEffect, useState, useRef } from 'react';
5
5
  import { getInitCheckededKeys, getDataCheckededStateStrictly, getInitExpandedKeys, getPos, getAllParentKeys } from './utils/treeUtils';
6
6
  export var useViewportHeight = function useViewportHeight(height, listRef) {
7
7
  var _React$useState = React.useState(0),
@@ -59,22 +59,22 @@ export var useChecked = function useChecked(checkStrictly, checkedKeysProps, def
59
59
  }, [nextHalfCheckedKeys]);
60
60
  return [checkedKeys, halfCheckedKeys, setCheckedKeys, setHalfCheckedKeys];
61
61
  };
62
- export var useExpand = function useExpand(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, isInit, filterTreeNode, isSearching, keysData, searchExpandedKeys) {
62
+ export var useExpand = function useExpand(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, isInit, filterTreeNode, isSearching, keysData, searchStatus) {
63
63
  var expandScrollkeys = [];
64
64
  if (scrollKey) {
65
65
  var pos = getPos(flattenAllData, scrollKey);
66
66
  expandScrollkeys = getAllParentKeys(flattenAllData, pos);
67
67
  }
68
68
  var initialExpandedKeys = React.useMemo(function () {
69
- return getInitExpandedKeys(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, expandScrollkeys, filterTreeNode, isSearching, keysData, searchExpandedKeys, isInit);
70
- }, [flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, filterTreeNode, isSearching, keysData, searchExpandedKeys, isInit]);
69
+ return getInitExpandedKeys(flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, expandScrollkeys, filterTreeNode, isSearching, keysData, isInit, searchStatus);
70
+ }, [flattenAllData, expandedKeysProps, defaultExpandedKeys, defaultExpandAll, defaultExpandRoot, defaultExpandParent, scrollKey, filterTreeNode, isSearching, keysData, isInit, searchStatus]);
71
71
  var _React$useState7 = React.useState(initialExpandedKeys),
72
72
  _React$useState8 = _slicedToArray(_React$useState7, 2),
73
73
  expandedKeys = _React$useState8[0],
74
74
  setExpandedKeys = _React$useState8[1];
75
75
  React.useEffect(function () {
76
76
  setExpandedKeys(initialExpandedKeys);
77
- }, [flattenAllData, expandedKeysProps, searchExpandedKeys, defaultExpandAll, defaultExpandedKeys, defaultExpandRoot, defaultExpandParent, scrollKey]);
77
+ }, [flattenAllData, expandedKeysProps, defaultExpandAll, defaultExpandedKeys, defaultExpandRoot, defaultExpandParent, scrollKey, searchStatus]);
78
78
  return [expandedKeys, setExpandedKeys];
79
79
  };
80
80
  export var useScrollToKey = function useScrollToKey(scrollKey, index, estimatedItemSize, scrollRef, viewportHeight, treeNodePrefixCls) {
@@ -115,8 +115,13 @@ export var useSelect = function useSelect(selectedKeysProps, defaultSelectedKeys
115
115
  _useState2 = _slicedToArray(_useState, 2),
116
116
  selectedKeys = _useState2[0],
117
117
  setSelectedKeys = _useState2[1];
118
+ var mounting = useRef(true);
118
119
  useEffect(function () {
119
- selectedKeysProps && setSelectedKeys(selectedKeysProps);
120
+ if (mounting.current) {
121
+ mounting.current = false;
122
+ return;
123
+ }
124
+ setSelectedKeys(selectedKeysProps);
120
125
  }, [selectedKeysProps]);
121
126
  return [selectedKeys, setSelectedKeys];
122
127
  };
@@ -10,9 +10,8 @@ export interface TreeNodeProps {
10
10
  draggable?: boolean;
11
11
  disableCheckbox?: boolean;
12
12
  icon?: React.ReactNode | ((props: any) => React.ReactNode);
13
- showLine?: boolean | {
14
- showLeafIcon: boolean;
15
- };
13
+ isActiveLine?: boolean;
14
+ activeLevel?: number;
16
15
  showIcon?: boolean;
17
16
  selected?: boolean;
18
17
  style?: Map<string, string>;
@@ -41,7 +41,8 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props) {
41
41
  hasChildNode = TreeNodeProps.hasChildNode,
42
42
  expand = TreeNodeProps.expand,
43
43
  title = TreeNodeProps.title,
44
- showLine = TreeNodeProps.showLine,
44
+ isActiveLine = TreeNodeProps.isActiveLine,
45
+ activeLevel = TreeNodeProps.activeLevel,
45
46
  showIcon = TreeNodeProps.showIcon,
46
47
  selected = TreeNodeProps.selected,
47
48
  setDragNode = TreeNodeProps.setDragNode,
@@ -62,7 +63,7 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props) {
62
63
  onDragEnd = TreeNodeProps.onDragEnd,
63
64
  onDrop = TreeNodeProps.onDrop,
64
65
  onSelect = TreeNodeProps.onSelect,
65
- others = __rest(TreeNodeProps, ["nodeKey", "prefixCls", "selectable", "checkable", "className", "icon", "switcherIcon", "disabled", "draggable", "pos", "checked", "level", "getDragNode", "hasChildNode", "expand", "title", "showLine", "showIcon", "selected", "setDragNode", "style", "indeterminate", "estimatedItemSize", "dragOver", "dropPosition", "expandOnClickNode", "onlyExpandOnClickIcon", "loading", "onExpand", "onCheck", "onDragStart", "onDragOver", "onDragLeave", "onDragEnter", "onDragEnd", "onDrop", "onSelect"]);
66
+ others = __rest(TreeNodeProps, ["nodeKey", "prefixCls", "selectable", "checkable", "className", "icon", "switcherIcon", "disabled", "draggable", "pos", "checked", "level", "getDragNode", "hasChildNode", "expand", "title", "isActiveLine", "activeLevel", "showIcon", "selected", "setDragNode", "style", "indeterminate", "estimatedItemSize", "dragOver", "dropPosition", "expandOnClickNode", "onlyExpandOnClickIcon", "loading", "onExpand", "onCheck", "onDragStart", "onDragOver", "onDragLeave", "onDragEnter", "onDragEnd", "onDrop", "onSelect"]);
66
67
  var nodeData = React.useMemo(function () {
67
68
  return _extends({
68
69
  selectable: selectable,
@@ -133,12 +134,11 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props) {
133
134
  return icon;
134
135
  };
135
136
  var indent = function indent() {
136
- var _classNames;
137
137
  var indentArr = [];
138
- var className = classNames((_classNames = {}, _defineProperty(_classNames, "".concat(treeNodePrefixCls, "-indent"), true), _defineProperty(_classNames, "".concat(treeNodePrefixCls, "-indent-line"), !!showLine), _classNames));
139
138
  for (var i = 0; i < level; i++) {
139
+ var _classNames;
140
140
  indentArr.push( /*#__PURE__*/React.createElement("span", {
141
- className: className,
141
+ className: classNames((_classNames = {}, _defineProperty(_classNames, "".concat(treeNodePrefixCls, "-indent"), true), _defineProperty(_classNames, "".concat(treeNodePrefixCls, "-indent-active"), !!isActiveLine && i === activeLevel), _classNames)),
142
142
  key: i,
143
143
  style: {
144
144
  height: "".concat(estimatedItemSize)
@@ -244,6 +244,7 @@ var TreeNode = /*#__PURE__*/React.forwardRef(function (props) {
244
244
  }, [expandOnClickNode, handleExpandIconClick, handleSelect, onlyExpandOnClickIcon]);
245
245
  var handleDragStart = React.useCallback(function (e) {
246
246
  if (!draggable) return;
247
+ e.target.classList.add("".concat(treeNodePrefixCls, "-dragging"));
247
248
  setDragNode(nodeData);
248
249
  onDragStart && onDragStart(e, props);
249
250
  }, [draggable, setDragNode, nodeData, onDragStart, props]);
@@ -1,4 +1,4 @@
1
- import { TreeNodeData, KeysDataType } from '../tree';
1
+ import { TreeNodeData, KeysDataType, SearchStatus } from '../tree';
2
2
  /**
3
3
  * 打平所有数组,并添加pos位置信息,
4
4
  * 方便根据expandKeys等计算节点的expand,checkedKeys计算节点checked状态
@@ -60,6 +60,6 @@ export declare const getDataCheckededStateStrictly: (checkedKeys: string[]) => {
60
60
  };
61
61
  export declare const delKey: (prevKeys: string[], delKeys: string[]) => never[] & string[];
62
62
  export declare const getAllNodeKeys: (data: any[]) => string[];
63
- 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, searchExpandedKeys: string[], isInit: boolean) => string[];
63
+ 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, isInit: boolean, searchStatus: SearchStatus) => string[];
64
64
  export declare const getExpandedKeys: (expandedKeys: string[], expandScrollkeys?: string[]) => string[];
65
65
  export declare const calcDropPosition: (event: React.MouseEvent, dropNode: HTMLElement) => 0 | 1 | -1;
@@ -583,8 +583,8 @@ export var getInitExpandedKeys = function getInitExpandedKeys(data, expandedKeys
583
583
  var filterTreeNode = arguments.length > 7 ? arguments[7] : undefined;
584
584
  var isSearching = arguments.length > 8 ? arguments[8] : undefined;
585
585
  var keysData = arguments.length > 9 ? arguments[9] : undefined;
586
- var searchExpandedKeys = arguments.length > 10 ? arguments[10] : undefined;
587
- var isInit = arguments.length > 11 ? arguments[11] : undefined;
586
+ var isInit = arguments.length > 10 ? arguments[10] : undefined;
587
+ var searchStatus = arguments.length > 11 ? arguments[11] : undefined;
588
588
  var keys = (expandedKeys === null || expandedKeys === void 0 ? void 0 : _concatInstanceProperty(expandedKeys).call(expandedKeys, expandScrollkeys)) || (defaultExpandedKeys === null || defaultExpandedKeys === void 0 ? void 0 : _concatInstanceProperty(defaultExpandedKeys).call(defaultExpandedKeys, expandScrollkeys)) || [];
589
589
  if (isInit) {
590
590
  if (defaultExpandAll) {
@@ -605,11 +605,10 @@ export var getInitExpandedKeys = function getInitExpandedKeys(data, expandedKeys
605
605
  }
606
606
  }
607
607
  }
608
- if (isSearching) {
609
- var _context6;
610
- keys = _concatInstanceProperty(_context6 = []).call(_context6, _toConsumableArray(searchExpandedKeys), _toConsumableArray(getAllFilterKeys(data, filterTreeNode, keysData).filterExpandKeys));
608
+ if (isSearching && searchStatus === 'SEARCH_START') {
609
+ keys = _toConsumableArray(getAllFilterKeys(data, filterTreeNode, keysData).filterExpandKeys);
611
610
  }
612
- return _Array$from(new _Set(_toConsumableArray(keys)));
611
+ return keys;
613
612
  };
614
613
  export var getExpandedKeys = function getExpandedKeys(expandedKeys) {
615
614
  var expandScrollkeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
@@ -56,6 +56,7 @@ export interface ITreeSelectProps<T extends TreeSelectValue> extends AbstractSel
56
56
  defaultValue?: T;
57
57
  mode?: Mode;
58
58
  autoFocus?: boolean;
59
+ status?: 'error';
59
60
  onlyExpandOnClickIcon?: boolean;
60
61
  onChange?: (value: T, treeNode: TreeNodeData) => void;
61
62
  onSelect?: (value: T extends (infer I)[] ? I : T, { checked, node, event }: any) => void;
@@ -163,7 +163,7 @@
163
163
  .kd-tree-select-icon-clear:hover {
164
164
  color: var(--kd-c-tree-select-color-border-hover, var(--kd-g-color-theme, #5582f3));
165
165
  }
166
- .kd-tree-select-focused {
166
+ .kd-tree-select-focused:not(.kd-tree-select-error) {
167
167
  border-color: var(--kd-c-tree-select-color-border-foucs, var(--kd-g-color-theme, #5582f3)) !important;
168
168
  }
169
169
  .kd-tree-select-placeholder {
@@ -181,7 +181,7 @@
181
181
  .kd-tree-select-underline {
182
182
  border-bottom: 1px solid var(--kd-c-tree-select-color-border, var(--kd-g-color-input, #999));
183
183
  }
184
- .kd-tree-select-underline:hover:not(.kd-tree-select-multiple-disabled):not(.kd-tree-select-single-disabled) {
184
+ .kd-tree-select-underline:hover:not(.kd-tree-select-multiple-disabled):not(.kd-tree-select-single-disabled):not( .kd-tree-select-error) {
185
185
  border-bottom: 1px solid var(--kd-c-tree-select-color-border-hover, var(--kd-g-color-theme, #5582f3));
186
186
  }
187
187
  .kd-tree-select-bordered {
@@ -189,7 +189,7 @@
189
189
  padding-left: var(--kd-c-tree-select-bordered-spacing-padding-left, 8px) !important;
190
190
  border-radius: var(--kd-c-tree-select-bordered-radius-border, 2px);
191
191
  }
192
- .kd-tree-select-bordered:hover:not(.kd-tree-select-multiple-disabled):not(.kd-tree-select-single-disabled) {
192
+ .kd-tree-select-bordered:hover:not(.kd-tree-select-multiple-disabled):not(.kd-tree-select-single-disabled):not( .kd-tree-select-error) {
193
193
  border: 1px solid var(--kd-c-tree-select-color-border-hover, var(--kd-g-color-theme, #5582f3));
194
194
  }
195
195
  .kd-tree-select-bordered .kd-tree-select-suffix {
@@ -312,7 +312,7 @@
312
312
  white-space: nowrap;
313
313
  text-overflow: ellipsis;
314
314
  }
315
- .kd-tree-select .kd-tree-select-single-focused {
315
+ .kd-tree-select .kd-tree-select-single-focused:not(.kd-tree-select-error) {
316
316
  border-color: var(--kd-c-tree-select-color-border-foucs, var(--kd-g-color-theme, #5582f3)) !important;
317
317
  }
318
318
  .kd-tree-select .kd-tree-select-single-disabled {
@@ -495,6 +495,9 @@
495
495
  color: var(--kd-c-tree-select-footer-color-text-selected, #0e5fd8);
496
496
  padding: 0 2px;
497
497
  }
498
+ .kd-tree-select-error:not(.kd-tree-select-single-disabled):not(.kd-tree-select-multiple-disabled) {
499
+ border-color: var(--kd-c-tree-select-color-error, var(--kd-g-color-error, #fb2323));
500
+ }
498
501
  .kd-tree-select.topLeft.hidden,
499
502
  .kd-tree-select.bottomLeft.hidden,
500
503
  .kd-tree-select.topRight.hidden,
@@ -59,7 +59,7 @@
59
59
  }
60
60
  }
61
61
 
62
- &-focused {
62
+ &-focused:not(.@{tree-select-prefix-cls}-error) {
63
63
  .focusColor();
64
64
  }
65
65
  &-placeholder {
@@ -78,7 +78,9 @@
78
78
 
79
79
  &-underline {
80
80
  border-bottom: 1px solid @tree-select-g-color-border;
81
- &:hover:not(.@{tree-select-prefix-cls}-multiple-disabled):not(.@{tree-select-prefix-cls}-single-disabled) {
81
+ &:hover:not(.@{tree-select-prefix-cls}-multiple-disabled):not(.@{tree-select-prefix-cls}-single-disabled):not(
82
+ .@{tree-select-prefix-cls}-error
83
+ ) {
82
84
  border-bottom: 1px solid @tree-select-g-color-border-hover;
83
85
  }
84
86
  }
@@ -87,7 +89,9 @@
87
89
  border: 1px solid @tree-select-border-g-color-border;
88
90
  padding-left: @tree-select-bordered !important;
89
91
  border-radius: @tree-select-border-radius-border;
90
- &:hover:not(.@{tree-select-prefix-cls}-multiple-disabled):not(.@{tree-select-prefix-cls}-single-disabled) {
92
+ &:hover:not(.@{tree-select-prefix-cls}-multiple-disabled):not(.@{tree-select-prefix-cls}-single-disabled):not(
93
+ .@{tree-select-prefix-cls}-error
94
+ ) {
91
95
  border: 1px solid @tree-select-g-color-border-hover;
92
96
  }
93
97
 
@@ -206,7 +210,7 @@
206
210
  .over();
207
211
  }
208
212
  }
209
- &-focused {
213
+ &-focused:not(.@{tree-select-prefix-cls}-error) {
210
214
  .focusColor();
211
215
  }
212
216
  &-disabled {
@@ -383,6 +387,10 @@
383
387
  }
384
388
  }
385
389
 
390
+ &-error:not(.@{tree-select-prefix-cls}-single-disabled):not(.@{tree-select-prefix-cls}-multiple-disabled) {
391
+ border-color: @tree-select-error-color;
392
+ }
393
+
386
394
  &.topLeft.hidden,
387
395
  &.bottomLeft.hidden,
388
396
  &.topRight.hidden,
@@ -22,6 +22,7 @@
22
22
  @tree-select-single-color-text: var(~'@{tree-select-custom-prefix}-single-color-text', @color-text-primary);
23
23
  @tree-select-clear-color: var(~'@{tree-select-custom-prefix}-icon-clear-color-text', #d9d9d9);
24
24
  @tree-select-clear-color-hover: var(~'@{tree-select-custom-prefix}-icon-clear-color-text-hover', #999);
25
+ @tree-select-error-color: var(~'@{tree-select-custom-prefix}-color-error', @color-error);
25
26
 
26
27
  // font
27
28
  @tree-select-list-font-size: var(~'@{tree-select-custom-prefix}-dropdown-font-size', 12px); // 下拉列表文字大小
@@ -98,7 +98,8 @@ var InternalTreeSelect = function InternalTreeSelect(props, ref) {
98
98
  onCheck = treeSelectProps.onCheck,
99
99
  dropdownRender = treeSelectProps.dropdownRender,
100
100
  onlyExpandOnClickIcon = treeSelectProps.onlyExpandOnClickIcon,
101
- listHeight = treeSelectProps.listHeight;
101
+ listHeight = treeSelectProps.listHeight,
102
+ status = treeSelectProps.status;
102
103
  var isMultiple = mode === 'multiple'; // 是否多选
103
104
  var _useMergedState = useMergedState(isMultiple ? [] : undefined, {
104
105
  value: value,
@@ -154,7 +155,7 @@ var InternalTreeSelect = function InternalTreeSelect(props, ref) {
154
155
  // 下拉列表框样式
155
156
  var dropDownCls = classNames(dropdownClassName, _defineProperty({}, "".concat(selectPrefixCls, "-dropdown"), true));
156
157
  // 多选,单选公共样式
157
- var commCls = classNames((_classNames4 = {}, _defineProperty(_classNames4, "".concat(selectPrefixCls, "-bordered"), borderType === 'bordered'), _defineProperty(_classNames4, "".concat(selectPrefixCls, "-underline"), borderType === 'underline'), _defineProperty(_classNames4, "".concat(selectPrefixCls, "-borderless"), borderType === 'none'), _defineProperty(_classNames4, _concatInstanceProperty(_context3 = "".concat(selectPrefixCls, "-size-")).call(_context3, size), size), _defineProperty(_classNames4, "".concat(selectPrefixCls, "-wrapper"), true), _classNames4));
158
+ var commCls = classNames((_classNames4 = {}, _defineProperty(_classNames4, "".concat(selectPrefixCls, "-bordered"), borderType === 'bordered'), _defineProperty(_classNames4, "".concat(selectPrefixCls, "-underline"), borderType === 'underline'), _defineProperty(_classNames4, "".concat(selectPrefixCls, "-borderless"), borderType === 'none'), _defineProperty(_classNames4, _concatInstanceProperty(_context3 = "".concat(selectPrefixCls, "-size-")).call(_context3, size), size), _defineProperty(_classNames4, "".concat(selectPrefixCls, "-wrapper"), true), _defineProperty(_classNames4, "".concat(selectPrefixCls, "-error"), status === 'error'), _classNames4));
158
159
  useEffect(function () {
159
160
  var arr = [];
160
161
  if (isMultiple) {
@@ -353,6 +354,9 @@ var InternalTreeSelect = function InternalTreeSelect(props, ref) {
353
354
  (_a = searchRef.current) === null || _a === void 0 ? void 0 : _a.focus();
354
355
  }
355
356
  }, [showSearch, autoFocus, disabled]);
357
+ useEffect(function () {
358
+ setSelectedKeys(initValue);
359
+ }, [initValue]);
356
360
  // 渲染下拉列表框
357
361
  var renderContent = function renderContent() {
358
362
  var dropDownStyle = _extends({
@@ -201,7 +201,7 @@ var InternalSelect = function InternalSelect(props, ref) {
201
201
  if (disabled) return null;
202
202
  var suffixIcon = selectProps.suffixIcon;
203
203
  var arrowIconCls = (0, _classnames.default)((_classNames4 = {}, (0, _defineProperty2.default)(_classNames4, "".concat(selectPrefixCls, "-icon-arrow"), true), (0, _defineProperty2.default)(_classNames4, "".concat(selectPrefixCls, "-icon-arrow-up"), optionShow), (0, _defineProperty2.default)(_classNames4, "".concat(selectPrefixCls, "-icon-arrow-down"), !optionShow), (0, _defineProperty2.default)(_classNames4, "".concat(selectPrefixCls, "-icon-arrow-focus"), optionShow), _classNames4));
204
- var iconShow = allowClear && !disabled && ((initValue !== null && initValue !== void 0 ? initValue : '') !== '' || searchValue);
204
+ var iconShow = allowClear && !disabled && (initValue !== null && initValue !== void 0 ? initValue : '') !== '';
205
205
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, iconShow && /*#__PURE__*/_react.default.createElement("span", {
206
206
  onClick: handleReset,
207
207
  onMouseDown: function onMouseDown(e) {
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ export declare const ClipboardActions: ["copy", "cut"];
3
+ export declare type ClipboardAction = typeof ClipboardActions[number];
4
+ export declare const ClipboardSizes: ["large", "middle", "small"];
5
+ export declare type ClipboardSize = typeof ClipboardSizes[number];
6
+ export interface IClipboardProps {
7
+ action?: ClipboardAction;
8
+ content?: string;
9
+ children?: React.ReactNode;
10
+ className?: string;
11
+ disabled?: boolean;
12
+ icon?: React.ReactNode | false;
13
+ prefixCls?: string;
14
+ size?: ClipboardSize;
15
+ style?: Record<string, unknown>;
16
+ target?: () => HTMLElement | string;
17
+ onError?: (error: Error) => void;
18
+ onSuccess?: (content: string) => void;
19
+ }
20
+ declare const Clipboard: React.ForwardRefExoticComponent<IClipboardProps & React.RefAttributes<unknown>>;
21
+ export default Clipboard;
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
5
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
6
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = exports.ClipboardSizes = exports.ClipboardActions = void 0;
11
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
13
+ var _getOwnPropertySymbols = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols"));
14
+ var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
15
+ var _classnames = _interopRequireDefault(require("classnames"));
16
+ var _react = _interopRequireWildcard(require("react"));
17
+ var _utils = require("../_utils");
18
+ var _devwarning = _interopRequireDefault(require("../_utils/devwarning"));
19
+ var _type = require("../_utils/type");
20
+ var _ConfigContext = _interopRequireDefault(require("../config-provider/ConfigContext"));
21
+ var _icon = _interopRequireDefault(require("../icon"));
22
+ var _util = require("./util");
23
+ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
+ 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; }
25
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
28
+ if (s != null && typeof _getOwnPropertySymbols.default === "function") for (var i = 0, p = (0, _getOwnPropertySymbols.default)(s); i < p.length; i++) {
29
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
30
+ }
31
+ return t;
32
+ };
33
+ var ClipboardActions = (0, _type.tuple)('copy', 'cut');
34
+ exports.ClipboardActions = ClipboardActions;
35
+ var ClipboardSizes = (0, _type.tuple)('large', 'middle', 'small');
36
+ exports.ClipboardSizes = ClipboardSizes;
37
+ var InternalClipboard = function InternalClipboard(props, ref) {
38
+ var _context, _classNames;
39
+ var _useContext = (0, _react.useContext)(_ConfigContext.default),
40
+ getPrefixCls = _useContext.getPrefixCls,
41
+ prefixCls = _useContext.prefixCls,
42
+ userDefaultProps = _useContext.compDefaultProps;
43
+ // 剪贴板参数,合并了系统默认参数、用户定义组件统一参数及组件传参
44
+ var clipboardProps = (0, _utils.getCompProps)('Clipboard', userDefaultProps, props);
45
+ var className = clipboardProps.className,
46
+ customPrefixcls = clipboardProps.prefixCls,
47
+ action = clipboardProps.action,
48
+ content = clipboardProps.content,
49
+ children = clipboardProps.children,
50
+ disabled = clipboardProps.disabled,
51
+ icon = clipboardProps.icon,
52
+ size = clipboardProps.size,
53
+ target = clipboardProps.target,
54
+ onError = clipboardProps.onError,
55
+ onSuccess = clipboardProps.onSuccess,
56
+ others = __rest(clipboardProps, ["className", "prefixCls", "action", "content", "children", "disabled", "icon", "size", "target", "onError", "onSuccess"]);
57
+ (0, _devwarning.default)(ClipboardActions.indexOf(action) === -1, 'clipboard', "cannot found clipboard action '".concat(action, "'"));
58
+ (0, _devwarning.default)(ClipboardSizes.indexOf(size) === -1, 'clipboard', "cannot found clipboard size '".concat(size, "'"));
59
+ // 剪贴板样式前缀
60
+ var clipboardPrefixCls = getPrefixCls(prefixCls, 'clipboard', customPrefixcls);
61
+ var clipboardClass = (0, _classnames.default)(clipboardPrefixCls, className, (_classNames = {}, (0, _defineProperty2.default)(_classNames, (0, _concat.default)(_context = "".concat(clipboardPrefixCls, "-size-")).call(_context, size), size), (0, _defineProperty2.default)(_classNames, "".concat(clipboardPrefixCls, "-icon-only"), !children && children !== 0 && icon !== null), _classNames));
62
+ // ref
63
+ var clipboardRef = ref || /*#__PURE__*/_react.default.createRef();
64
+ // 如果没有传 icon,则使用默认图标
65
+ // 如果 icon 传 null,则不使用图标
66
+ var iconNode = icon || (icon === undefined ? /*#__PURE__*/_react.default.createElement(_icon.default, {
67
+ type: "copy-code"
68
+ }) : null);
69
+ // 如果传的 children 为 string,则将 children 包装成块标签
70
+ var childrenNode = typeof children === 'string' ? /*#__PURE__*/_react.default.createElement("span", null, children) : children;
71
+ /**
72
+ * 剪贴板 click 事件处理
73
+ */
74
+ var handleClick = (0, _react.useCallback)(function () {
75
+ if (disabled) {
76
+ // 禁用状态不触发点击事件
77
+ return;
78
+ }
79
+ var selectedText;
80
+ try {
81
+ if (content) {
82
+ // 如果传了 content,则直接复制 content
83
+ selectedText = (0, _util.onClipboardCopy)(content);
84
+ } else {
85
+ var targetElement = typeof target === 'string' ? document.querySelector(target) : target();
86
+ if (!targetElement) {
87
+ // 没有获取到元素,抛出异常
88
+ throw new Error("target element '".concat(target, "' does not exist"));
89
+ } else {
90
+ if (action === 'copy' && targetElement.hasAttribute('disabled')) {
91
+ // 复制被置为 disabled 的元素,抛出异常
92
+ throw new Error("invalid \"target\" attribute of element '".concat(targetElement, "'. Please use \"readonly\" instead of \"disabled\" attribute"));
93
+ }
94
+ if (action === 'cut' && (targetElement.hasAttribute('readonly') || targetElement.hasAttribute('disabled'))) {
95
+ // 剪切被置为 readonly 或 disabled 的元素,抛出异常
96
+ throw new Error("invalid \"target\" attribute of element '".concat(targetElement, "'. You can't cut text from elements with \"readonly\" or \"disabled\" attributes"));
97
+ }
98
+ }
99
+ // 对 targetElement 的值进行复制或剪切
100
+ selectedText = action === 'copy' ? (0, _util.onClipboardCopy)(targetElement) : (0, _util.onClipboardCut)(targetElement);
101
+ }
102
+ } catch (error) {
103
+ // 触发失败的回调
104
+ onError === null || onError === void 0 ? void 0 : onError(error);
105
+ // 退出处理器
106
+ return;
107
+ }
108
+ // 触发成功的回调
109
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(selectedText);
110
+ }, [action, content, disabled, onError, onSuccess, target]);
111
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
112
+ className: clipboardClass,
113
+ disabled: disabled,
114
+ onClick: handleClick,
115
+ ref: clipboardRef
116
+ }, others), iconNode, childrenNode);
117
+ };
118
+ var Clipboard = /*#__PURE__*/_react.default.forwardRef(InternalClipboard);
119
+ Clipboard.displayName = 'Clipboard';
120
+ var _default = Clipboard;
121
+ exports.default = _default;
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ declare const Clipboard: import("react").ForwardRefExoticComponent<import("./clipboard").IClipboardProps & import("react").RefAttributes<unknown>>;
3
+ export { ClipboardAction, IClipboardProps } from './clipboard';
4
+ export default Clipboard;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _clipboard = _interopRequireDefault(require("./clipboard"));
9
+ var Clipboard = _clipboard.default;
10
+ var _default = Clipboard;
11
+ exports.default = _default;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ require("../../style/index.css");
4
+ require("./index.css");