@qsxy/element-plus-react 1.0.2 → 1.0.3

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 (216) hide show
  1. package/dist/Alert/Alert.d.ts +7 -0
  2. package/dist/Alert/Alert.js +98 -0
  3. package/dist/Alert/index.d.ts +2 -0
  4. package/dist/Alert/index.js +1 -0
  5. package/dist/Alert/typings.d.ts +45 -0
  6. package/dist/Alert/typings.js +1 -0
  7. package/dist/Card/Card.js +5 -3
  8. package/dist/Cascader/useCascader.d.ts +0 -14
  9. package/dist/Cascader/useCascader.js +33 -32
  10. package/dist/Checkbox/Checkbox.js +3 -2
  11. package/dist/ConfigProvider/ConfigProvider.js +2 -24
  12. package/dist/ConfigProvider/ConfigProviderContext.js +1 -1
  13. package/dist/ConfigProvider/typings.d.ts +1 -1
  14. package/dist/Container/Main.d.ts +1 -1
  15. package/dist/Container/typings.d.ts +1 -1
  16. package/dist/Dialog/Dialog.js +5 -12
  17. package/dist/Input/Input.js +68 -43
  18. package/dist/Input/TextArea.js +1 -1
  19. package/dist/Input/typings.d.ts +42 -1
  20. package/dist/Input/utils.d.ts +1 -0
  21. package/dist/Input/utils.js +5 -1
  22. package/dist/InputNumber/InputNumber.js +351 -141
  23. package/dist/InputNumber/typings.d.ts +15 -1
  24. package/dist/Loading/Loading.js +5 -2
  25. package/dist/Menu/Menu.js +25 -1
  26. package/dist/Menu/MenuItem.js +4 -2
  27. package/dist/Menu/SubMenu.js +2 -2
  28. package/dist/Menu/SubMenuCollapseTransition.js +14 -9
  29. package/dist/Menu/typings.d.ts +2 -1
  30. package/dist/Message/Message.js +51 -23
  31. package/dist/Message/index.js +8 -10
  32. package/dist/Message/typings.d.ts +8 -5
  33. package/dist/MessageBox/MessageBox.js +52 -30
  34. package/dist/MessageBox/index.d.ts +2 -1
  35. package/dist/MessageBox/index.js +4 -2
  36. package/dist/MessageBox/typings.d.ts +3 -0
  37. package/dist/Notification/Notification.js +26 -19
  38. package/dist/Select/SelectContext.d.ts +2 -1
  39. package/dist/Select/SelectContext.js +2 -1
  40. package/dist/Select/SelectCore.js +13 -7
  41. package/dist/Select/SelectDropdown.js +23 -15
  42. package/dist/Select/index.d.ts +1 -1
  43. package/dist/Select/typings.d.ts +13 -9
  44. package/dist/Select/useSelect.d.ts +13 -10
  45. package/dist/Select/useSelect.js +34 -26
  46. package/dist/Space/Space.d.ts +4 -0
  47. package/dist/Space/Space.js +128 -0
  48. package/dist/Space/SpaceItem.d.ts +7 -0
  49. package/dist/Space/SpaceItem.js +14 -0
  50. package/dist/Space/index.d.ts +3 -0
  51. package/dist/Space/index.js +2 -0
  52. package/dist/Space/typings.d.ts +26 -0
  53. package/dist/Space/typings.js +1 -0
  54. package/dist/Space/useSpace.d.ts +7 -0
  55. package/dist/Space/useSpace.js +104 -0
  56. package/dist/Statistic/Statistic.d.ts +4 -0
  57. package/dist/Statistic/Statistic.js +92 -0
  58. package/dist/Statistic/index.d.ts +2 -0
  59. package/dist/Statistic/index.js +1 -0
  60. package/dist/Statistic/typings.d.ts +28 -0
  61. package/dist/Statistic/typings.js +1 -0
  62. package/dist/Switch/Switch.js +2 -2
  63. package/dist/Table/Table.js +3 -0
  64. package/dist/Table/typings.d.ts +2 -0
  65. package/dist/Tag/typings.d.ts +1 -1
  66. package/dist/Text/Text.d.ts +4 -0
  67. package/dist/Text/Text.js +84 -0
  68. package/dist/Text/index.d.ts +2 -0
  69. package/dist/Text/index.js +1 -0
  70. package/dist/Text/typings.d.ts +15 -0
  71. package/dist/Text/typings.js +1 -0
  72. package/dist/Tree/CollapseTransition.d.ts +7 -0
  73. package/dist/Tree/CollapseTransition.js +60 -0
  74. package/dist/Tree/Tree.d.ts +3 -140
  75. package/dist/Tree/Tree.js +350 -77
  76. package/dist/Tree/TreeContext.d.ts +9 -0
  77. package/dist/Tree/TreeContext.js +14 -0
  78. package/dist/Tree/TreeNode.d.ts +5 -3
  79. package/dist/Tree/TreeNode.js +321 -331
  80. package/dist/Tree/TreeNodeContent.d.ts +9 -0
  81. package/dist/Tree/TreeNodeContent.js +22 -0
  82. package/dist/Tree/index.d.ts +3 -8
  83. package/dist/Tree/index.js +1 -4
  84. package/dist/Tree/model/node.d.ts +62 -0
  85. package/dist/Tree/model/node.js +601 -0
  86. package/dist/Tree/model/tree-store.d.ts +52 -0
  87. package/dist/Tree/model/tree-store.js +510 -0
  88. package/dist/Tree/model/useDragNode.d.ts +30 -0
  89. package/dist/Tree/model/useDragNode.js +293 -0
  90. package/dist/Tree/model/useKeydown.d.ts +0 -0
  91. package/dist/Tree/model/useKeydown.js +104 -0
  92. package/dist/Tree/model/useNodeExpandEventBroadcast.d.ts +15 -0
  93. package/dist/Tree/model/useNodeExpandEventBroadcast.js +54 -0
  94. package/dist/Tree/model/util.d.ts +7 -0
  95. package/dist/Tree/model/util.js +24 -0
  96. package/dist/Tree/typings.d.ts +225 -114
  97. package/dist/TreeSelect/TreeSelect.d.ts +2 -10
  98. package/dist/TreeSelect/TreeSelect.js +90 -566
  99. package/dist/TreeSelect/TreeSelectOption.d.ts +6 -0
  100. package/dist/TreeSelect/TreeSelectOption.js +62 -0
  101. package/dist/TreeSelect/cacheOptions.d.ts +9 -0
  102. package/dist/TreeSelect/cacheOptions.js +22 -0
  103. package/dist/TreeSelect/index.d.ts +0 -1
  104. package/dist/TreeSelect/typings.d.ts +11 -63
  105. package/dist/TreeSelect/useSelect.d.ts +125 -0
  106. package/dist/TreeSelect/useSelect.js +104 -0
  107. package/dist/TreeSelect/useTree.d.ts +130 -0
  108. package/dist/TreeSelect/useTree.js +285 -0
  109. package/dist/TreeSelect/utils.d.ts +10 -0
  110. package/dist/TreeSelect/utils.js +38 -0
  111. package/dist/Upload/UploadContent.js +2 -0
  112. package/dist/Upload/ajax.js +3 -0
  113. package/dist/Upload/typings.d.ts +4 -0
  114. package/dist/Util/aria.js +12 -12
  115. package/dist/Util/base.d.ts +5 -0
  116. package/dist/Util/base.js +140 -1
  117. package/dist/config/Constants.d.ts +3 -0
  118. package/dist/config/Constants.js +8 -0
  119. package/dist/hooks/index.d.ts +1 -0
  120. package/dist/hooks/index.js +1 -0
  121. package/dist/hooks/popperPropsUtils.js +1 -1
  122. package/dist/hooks/treePropsUtils.d.ts +3 -3
  123. package/dist/hooks/treePropsUtils.js +2 -2
  124. package/dist/hooks/useConfigProvider.d.ts +27 -0
  125. package/dist/hooks/useConfigProvider.js +78 -0
  126. package/dist/hooks/useResizeObserver.js +6 -6
  127. package/dist/index.css +1 -1
  128. package/dist/index.d.ts +18 -11
  129. package/dist/index.js +11 -5
  130. package/package.json +1 -1
  131. package/theme-chalk/alert.scss +115 -0
  132. package/theme-chalk/aside.scss +8 -8
  133. package/theme-chalk/button-group.scss +80 -80
  134. package/theme-chalk/button.scss +304 -304
  135. package/theme-chalk/calendar/date-table.scss +164 -164
  136. package/theme-chalk/checkbox.scss +34 -0
  137. package/theme-chalk/color/index.scss +20 -20
  138. package/theme-chalk/common/transition.scss +142 -142
  139. package/theme-chalk/container.scss +14 -14
  140. package/theme-chalk/dark/css-vars.scss +39 -39
  141. package/theme-chalk/dark/var.scss +225 -225
  142. package/theme-chalk/date-picker.scss +12 -12
  143. package/theme-chalk/drawer.scss +1 -0
  144. package/theme-chalk/footer.scss +12 -12
  145. package/theme-chalk/header.scss +12 -12
  146. package/theme-chalk/index.scss +4 -0
  147. package/theme-chalk/input/input-range.scss +2 -1
  148. package/theme-chalk/input/input.scss +439 -424
  149. package/theme-chalk/input-number.bak +172 -0
  150. package/theme-chalk/input-number.scss +192 -172
  151. package/theme-chalk/link.scss +87 -87
  152. package/theme-chalk/main.scss +14 -14
  153. package/theme-chalk/menu.scss +353 -353
  154. package/theme-chalk/message.scss +104 -178
  155. package/theme-chalk/mixins/_button.scss +224 -224
  156. package/theme-chalk/mixins/_col.scss +33 -33
  157. package/theme-chalk/mixins/_var.scss +67 -67
  158. package/theme-chalk/mixins/config.scss +5 -5
  159. package/theme-chalk/mixins/function.scss +99 -99
  160. package/theme-chalk/mixins/mixins.scss +240 -240
  161. package/theme-chalk/mixins/utils.scss +39 -39
  162. package/theme-chalk/notification.bak +156 -0
  163. package/theme-chalk/notification.scss +109 -156
  164. package/theme-chalk/popper.scss +104 -104
  165. package/theme-chalk/radio-button.scss +169 -169
  166. package/theme-chalk/select/index.scss +278 -272
  167. package/theme-chalk/space.scss +20 -0
  168. package/theme-chalk/statistic.scss +35 -0
  169. package/theme-chalk/switch.scss +300 -300
  170. package/theme-chalk/tag.scss +181 -181
  171. package/theme-chalk/text.scss +48 -0
  172. package/theme-chalk/transition.scss +34 -4
  173. package/theme-chalk/tree-select.scss +41 -25
  174. package/theme-chalk/tree.scss +136 -0
  175. package/theme-chalk/var.scss +83 -83
  176. package/dist/Input/Input.1.d.ts +0 -16
  177. package/dist/Input/Input.1.js +0 -376
  178. package/dist/Tree/DirectoryTree.d.ts +0 -15
  179. package/dist/Tree/DirectoryTree.js +0 -183
  180. package/dist/Tree/DropIndicator.d.ts +0 -8
  181. package/dist/Tree/DropIndicator.js +0 -34
  182. package/dist/Tree/Indent.d.ts +0 -9
  183. package/dist/Tree/Indent.js +0 -25
  184. package/dist/Tree/MotionTreeNode.d.ts +0 -14
  185. package/dist/Tree/MotionTreeNode.js +0 -125
  186. package/dist/Tree/NodeList.d.ts +0 -50
  187. package/dist/Tree/NodeList.js +0 -301
  188. package/dist/Tree/RCTree.d.ts +0 -248
  189. package/dist/Tree/RCTree.js +0 -1216
  190. package/dist/Tree/contextTypes.d.ts +0 -69
  191. package/dist/Tree/contextTypes.js +0 -9
  192. package/dist/Tree/typings.tsx--bak +0 -245
  193. package/dist/Tree/useUnmount.d.ts +0 -5
  194. package/dist/Tree/useUnmount.js +0 -34
  195. package/dist/Tree/util.d.ts +0 -51
  196. package/dist/Tree/util.js +0 -303
  197. package/dist/Tree/utils/conductUtil.d.ts +0 -17
  198. package/dist/Tree/utils/conductUtil.js +0 -209
  199. package/dist/Tree/utils/dictUtil.d.ts +0 -13
  200. package/dist/Tree/utils/dictUtil.js +0 -75
  201. package/dist/Tree/utils/diffUtil.d.ts +0 -7
  202. package/dist/Tree/utils/diffUtil.js +0 -48
  203. package/dist/Tree/utils/dropIndicator.d.ts +0 -11
  204. package/dist/Tree/utils/dropIndicator.js +0 -36
  205. package/dist/Tree/utils/iconUtil.d.ts +0 -5
  206. package/dist/Tree/utils/iconUtil.js +0 -62
  207. package/dist/Tree/utils/keyUtil.d.ts +0 -2
  208. package/dist/Tree/utils/keyUtil.js +0 -3
  209. package/dist/Tree/utils/motion.d.ts +0 -10
  210. package/dist/Tree/utils/motion.js +0 -54
  211. package/dist/Tree/utils/pickAttrs.d.ts +0 -11
  212. package/dist/Tree/utils/pickAttrs.js +0 -51
  213. package/dist/Tree/utils/treeUtil.d.ts +0 -86
  214. package/dist/Tree/utils/treeUtil.js +0 -364
  215. package/dist/TreeSelect/Utils.d.ts +0 -3
  216. package/dist/TreeSelect/Utils.js +0 -20
@@ -0,0 +1,60 @@
1
+ export var beforeEnter = function beforeEnter(node) {
2
+ if (node.current) {
3
+ var el = node.current;
4
+ el.style.opacity = '0';
5
+ el.style.height = '0';
6
+ }
7
+ };
8
+ export var onEnter = function onEnter(node) {
9
+ if (node.current) {
10
+ var el = node.current;
11
+ el.style.display = 'block';
12
+ el.dataset.oldOverflow = el.style.overflow;
13
+ if (el.scrollHeight !== 0) {
14
+ el.style.height = "".concat(el.scrollHeight, "px");
15
+ } else {
16
+ el.style.height = '';
17
+ }
18
+ el.style.overflow = 'hidden';
19
+ el.style.opacity = '1';
20
+ }
21
+ };
22
+ export var afterEnter = function afterEnter(node) {
23
+ if (node.current) {
24
+ var el = node.current;
25
+ setTimeout(function () {
26
+ el.style.height = '';
27
+ el.style.overflow = el.dataset.oldOverflow;
28
+ }, 300);
29
+ }
30
+ };
31
+ export var beforeLeave = function beforeLeave(node) {
32
+ if (node.current) {
33
+ var el = node.current;
34
+ if (!el.dataset) {
35
+ el.dataset = {};
36
+ }
37
+ el.dataset.oldOverflow = el.style.overflow;
38
+ el.style.height = "".concat(el.scrollHeight, "px");
39
+ el.style.overflow = 'hidden';
40
+ el.style.margin = 0;
41
+ }
42
+ };
43
+ export var onLeave = function onLeave(node) {
44
+ if (node.current) {
45
+ var el = node.current;
46
+ // el.style.transitionProperty = 'height';
47
+ el.style.height = 0;
48
+ }
49
+ };
50
+ export var afterLeave = function afterLeave(node) {
51
+ if (node.current) {
52
+ var el = node.current;
53
+ el.style.display = 'block';
54
+ setTimeout(function () {
55
+ el.style.height = '';
56
+ el.style.overflow = el.dataset.oldOverflow;
57
+ el.style.display = 'none';
58
+ }, 300);
59
+ }
60
+ };
@@ -1,141 +1,4 @@
1
- import React, { Component, Ref } from 'react';
2
- import DirectoryTree from './DirectoryTree';
3
- import RcTree, { TreeProps as RcTreeProps } from './RCTree';
4
- import TreeNode from './TreeNode';
5
- import { BasicDataNode, DataNode, Key } from './typings';
6
- export interface AntdTreeNodeAttribute {
7
- eventKey: string;
8
- prefixCls: string;
9
- className: string;
10
- expanded: boolean;
11
- selected: boolean;
12
- checked: boolean;
13
- halfChecked: boolean;
14
- children: React.ReactElement;
15
- title: React.ReactElement;
16
- pos: string;
17
- dragOver: boolean;
18
- dragOverGapTop: boolean;
19
- dragOverGapBottom: boolean;
20
- isLeaf: boolean;
21
- selectable: boolean;
22
- disabled: boolean;
23
- disableCheckbox: boolean;
24
- }
25
- export interface AntTreeNodeProps {
26
- className?: string;
27
- checkable?: boolean;
28
- disabled?: boolean;
29
- disableCheckbox?: boolean;
30
- title?: string | React.ReactElement;
31
- key?: Key;
32
- eventKey?: string;
33
- isLeaf?: boolean;
34
- checked?: boolean;
35
- expanded?: boolean;
36
- loading?: boolean;
37
- selected?: boolean;
38
- selectable?: boolean;
39
- icon?: ((treeNode: AntdTreeNodeAttribute) => React.ReactElement) | React.ReactElement;
40
- children?: React.ReactElement;
41
- [customProp: string]: any;
42
- }
43
- export type AntTreeNode = Component<AntTreeNodeProps, {}>;
44
- export interface AntTreeNodeBaseEvent {
45
- node: AntTreeNode;
46
- nativeEvent: MouseEvent;
47
- }
48
- export interface AntTreeNodeCheckedEvent extends AntTreeNodeBaseEvent {
49
- event: 'check';
50
- checked?: boolean;
51
- checkedNodes?: AntTreeNode[];
52
- }
53
- export interface AntTreeNodeSelectedEvent extends AntTreeNodeBaseEvent {
54
- event: 'select';
55
- selected?: boolean;
56
- selectedNodes?: DataNode[];
57
- }
58
- export interface AntTreeNodeExpandedEvent extends AntTreeNodeBaseEvent {
59
- expanded?: boolean;
60
- }
61
- export interface AntTreeNodeMouseEvent {
62
- node: AntTreeNode;
63
- event: any;
64
- }
65
- export interface AntTreeNodeDragEnterEvent extends AntTreeNodeMouseEvent {
66
- expandedKeys: Key[];
67
- }
68
- export interface AntTreeNodeDropEvent {
69
- node: AntTreeNode;
70
- dragNode: AntTreeNode;
71
- dragNodesKeys: Key[];
72
- dropPosition: number;
73
- dropToGap?: boolean;
74
- event: React.MouseEventHandler<HTMLElement>;
75
- }
76
- export type TreeNodeNormal = DataNode;
77
- type DraggableFn = (node: AntTreeNode) => boolean;
78
- interface DraggableConfig {
79
- icon?: React.ReactElement | false;
80
- nodeDraggable?: DraggableFn;
81
- }
82
- export interface TreeProps<T extends BasicDataNode = DataNode> extends Omit<RcTreeProps<T>, 'prefixCls' | 'showLine' | 'direction' | 'draggable'> {
83
- showLine?: boolean | {
84
- showLeafIcon: boolean;
85
- };
86
- className?: string;
87
- /** 是否支持多选 */
88
- multiple?: boolean;
89
- /** 是否自动展开父节点 */
90
- autoExpandParent?: boolean;
91
- /** Checkable状态下节点选择完全受控(父子节点选中状态不再关联) */
92
- checkStrictly?: boolean;
93
- /** 是否支持选中 */
94
- checkable?: boolean;
95
- /** 是否禁用树 */
96
- disabled?: boolean;
97
- /** 默认展开所有树节点 */
98
- defaultExpandAll?: boolean;
99
- /** 默认展开对应树节点 */
100
- defaultExpandParent?: boolean;
101
- /** 默认展开指定的树节点 */
102
- defaultExpandedKeys?: Key[];
103
- /** (受控)展开指定的树节点 */
104
- expandedKeys?: Key[];
105
- /** (受控)选中复选框的树节点 */
106
- checkedKeys?: Key[] | {
107
- checked: Key[];
108
- halfChecked: Key[];
109
- };
110
- /** 默认选中复选框的树节点 */
111
- defaultCheckedKeys?: Key[];
112
- /** (受控)设置选中的树节点 */
113
- selectedKeys?: Key[];
114
- /** 默认选中的树节点 */
115
- defaultSelectedKeys?: Key[];
116
- selectable?: boolean;
117
- /** 点击树节点触发 */
118
- filterAntTreeNode?: (node: AntTreeNode) => boolean;
119
- loadedKeys?: Key[];
120
- /** 设置节点可拖拽(IE>8) */
121
- draggable?: DraggableFn | boolean | DraggableConfig;
122
- style?: React.CSSProperties;
123
- showIcon?: boolean;
124
- icon?: React.ReactNode | ((props: AntdTreeNodeAttribute) => React.ReactNode);
125
- switcherIcon?: React.ReactElement<any>;
126
- prefixCls?: string;
127
- children?: React.ReactElement;
128
- blockNode?: boolean;
129
- }
130
- declare const ForwardTree: <RecordType extends object = any>(props: TreeProps<RecordType> & {
131
- ref?: Ref<RcTree>;
132
- }) => React.ReactElement;
133
- type InternalTreeType = typeof ForwardTree;
134
- interface TreeInterface extends InternalTreeType {
135
- displayName?: string;
136
- defaultProps?: Partial<TreeProps<any>>;
137
- TreeNode: typeof TreeNode;
138
- DirectoryTree: typeof DirectoryTree;
139
- }
140
- declare const Tree: TreeInterface;
1
+ import React from 'react';
2
+ import { TreeProps, TreeRef } from './typings';
3
+ declare const Tree: React.ForwardRefExoticComponent<TreeProps & React.RefAttributes<TreeRef>>;
141
4
  export default Tree;
package/dist/Tree/Tree.js CHANGED
@@ -1,90 +1,363 @@
1
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
2
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
3
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
7
4
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
5
+ function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure " + obj); }
6
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
7
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
8
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
9
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
10
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
11
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
8
12
  import classNames from 'classnames';
9
- import React, { forwardRef, useMemo } from 'react';
10
- import RcTree from "./RCTree";
13
+ import isEqual from 'lodash/isEqual';
14
+ import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
15
+ import { useTranslation } from 'react-i18next';
16
+ import { useConfigProvider } from "../ConfigProvider/ConfigProviderContext";
17
+ import { useClassNames, useForceUpdate } from "../hooks";
18
+ import { mergeDefaultProps } from "../Util";
19
+ import TreeStore from "./model/tree-store";
20
+ import { useDragNodeHandler } from "./model/useDragNode";
21
+ import { useNodeExpandEventBroadcast } from "./model/useNodeExpandEventBroadcast";
22
+ import { getNodeKey as getNodeKeyUtil, handleCurrentChange } from "./model/util";
23
+ import { DragEventsContext, TreeContext, TreeNodeExpandContext } from "./TreeContext";
11
24
  import TreeNode from "./TreeNode";
12
- import DropIndicatorRender from "./utils/dropIndicator";
13
- import renderSwitcherIcon from "./utils/iconUtil";
14
- import collapseMotion from "./utils/motion";
25
+ // 主组件
26
+ var Tree = /*#__PURE__*/forwardRef(function (props, ref) {
27
+ props = mergeDefaultProps({
28
+ renderAfterExpand: true,
29
+ expandOnClickNode: true,
30
+ checkOnClickLeaf: true,
31
+ autoExpandParent: true,
32
+ indent: 18,
33
+ props: {
34
+ children: 'children',
35
+ label: 'label',
36
+ disabled: 'disabled',
37
+ isLeaf: 'isLeaf',
38
+ class: null
39
+ }
40
+ }, props);
41
+ var _props = props,
42
+ nodeKey = _props.nodeKey,
43
+ tableData = _props.data,
44
+ lazy = _props.lazy,
45
+ treeProps = _props.props,
46
+ load = _props.load,
47
+ currentNodeKey = _props.currentNodeKey,
48
+ checkStrictly = _props.checkStrictly,
49
+ checkDescendants = _props.checkDescendants,
50
+ defaultCheckedKeys = _props.defaultCheckedKeys,
51
+ defaultExpandedKeys = _props.defaultExpandedKeys,
52
+ autoExpandParent = _props.autoExpandParent,
53
+ defaultExpandAll = _props.defaultExpandAll,
54
+ filterNodeMethod = _props.filterNodeMethod,
55
+ accordion = _props.accordion,
56
+ renderAfterExpand = _props.renderAfterExpand,
57
+ showCheckbox = _props.showCheckbox,
58
+ renderContent = _props.renderContent,
59
+ highlightCurrent = _props.highlightCurrent,
60
+ emptyText = _props.emptyText,
61
+ renderEmpty = _props.renderEmpty,
62
+ onNodeExpand = _props.onNodeExpand;
63
+ var _useConfigProvider = useConfigProvider(),
64
+ locale = _useConfigProvider.locale;
65
+ var _useTranslation = useTranslation(),
66
+ t = _useTranslation.t;
67
+ var ns = useClassNames('tree');
68
+ var _useForceUpdate = useForceUpdate(),
69
+ forceUpdate = _useForceUpdate.forceUpdate;
15
70
 
16
- // [Legacy] Compatible for v3
71
+ // 初始化 TreeStore
72
+ var _useState = useState(function () {
73
+ var initialStore = new TreeStore({
74
+ key: nodeKey,
75
+ data: tableData,
76
+ lazy: lazy,
77
+ props: treeProps,
78
+ load: load,
79
+ currentNodeKey: currentNodeKey || null,
80
+ checkStrictly: checkStrictly,
81
+ checkDescendants: checkDescendants,
82
+ defaultCheckedKeys: defaultCheckedKeys || [],
83
+ defaultExpandedKeys: defaultExpandedKeys || [],
84
+ autoExpandParent: autoExpandParent,
85
+ defaultExpandAll: defaultExpandAll,
86
+ filterNodeMethod: filterNodeMethod,
87
+ forceUpdate: forceUpdate
88
+ });
89
+ initialStore.initialize();
90
+ return initialStore;
91
+ }),
92
+ _useState2 = _slicedToArray(_useState, 1),
93
+ store = _useState2[0];
94
+ var root = useMemo(function () {
95
+ return store.root;
96
+ }, [store.root]);
97
+ // const [currentNode, setCurNode] = useState<Node>(null);
98
+ var elRef = useRef(null);
99
+ var dropIndicatorRef = useRef(null);
100
+ var oldTableData = useRef(null);
101
+ var _useNodeExpandEventBr = useNodeExpandEventBroadcast(props),
102
+ broadcastExpanded = _useNodeExpandEventBr.broadcastExpanded,
103
+ parentNodeMap = _useNodeExpandEventBr.parentNodeMap;
104
+ var _useDragNodeHandler = useDragNodeHandler({
105
+ props: props,
106
+ elRef: elRef,
107
+ dropIndicatorRef: dropIndicatorRef,
108
+ store: store
109
+ }),
110
+ dragEvents = Object.assign({}, (_objectDestructuringEmpty(_useDragNodeHandler), _useDragNodeHandler));
17
111
 
18
- function InternalTree(props, ref) {
19
- var _props$prefixCls = props.prefixCls,
20
- prefixCls = _props$prefixCls === void 0 ? 'el-tree' : _props$prefixCls,
21
- className = props.className,
22
- showIcon = props.showIcon,
23
- showLine = props.showLine,
24
- _switcherIcon = props.switcherIcon,
25
- blockNode = props.blockNode,
26
- children = props.children,
27
- checkable = props.checkable,
28
- selectable = props.selectable,
29
- draggable = props.draggable;
30
- var newProps = _objectSpread(_objectSpread({}, props), {}, {
31
- showLine: Boolean(showLine),
32
- dropIndicatorRender: DropIndicatorRender
33
- });
34
- var draggableConfig = useMemo(function () {
35
- if (!draggable) {
36
- return false;
112
+ // useKeydown(elRef, store);
113
+
114
+ // 检查是否为选择树
115
+ var isSelectTree = useMemo(function () {
116
+ // let parent = instanceRef.current?.parent;
117
+ // while (parent) {
118
+ // if (parent.type?.name === 'ElTreeSelect') {
119
+ // return true;
120
+ // }
121
+ // parent = parent.parent;
122
+ // }
123
+ return false;
124
+ }, []);
125
+
126
+ // 判断是否为空
127
+ var isEmpty = useCallback(function () {
128
+ var childNodes = root.childNodes;
129
+ return (!childNodes || childNodes.length === 0 || childNodes.every(function (_ref) {
130
+ var visible = _ref.visible;
131
+ return !visible;
132
+ })) && !isSelectTree;
133
+ }, [root, isSelectTree]);
134
+
135
+ // 监听属性变化 - currentNodeKey
136
+ useEffect(function () {
137
+ store.setCurrentNodeKey(currentNodeKey || null);
138
+ }, [currentNodeKey]);
139
+
140
+ // 监听属性变化 - defaultCheckedKeys
141
+ useEffect(function () {
142
+ if (!isEqual(props.defaultCheckedKeys, prevDefaultCheckedKeysRef.current)) {
143
+ store.setDefaultCheckedKey(props.defaultCheckedKeys || []);
37
144
  }
38
- var mergedDraggable = {};
39
- switch (_typeof(draggable)) {
40
- case 'function':
41
- mergedDraggable.nodeDraggable = draggable;
42
- break;
43
- case 'object':
44
- mergedDraggable = _objectSpread({}, draggable);
45
- break;
46
- default:
47
- // Do nothing
145
+ prevDefaultCheckedKeysRef.current = props.defaultCheckedKeys;
146
+ }, [props.defaultCheckedKeys]);
147
+
148
+ // 监听属性变化 - defaultExpandedKeys
149
+ useEffect(function () {
150
+ store.setDefaultExpandedKeys(props.defaultExpandedKeys || []);
151
+ }, [props.defaultExpandedKeys]);
152
+
153
+ // 监听属性变化 - data
154
+ useEffect(function () {
155
+ if (oldTableData.current != null && !isEqual(props.data, oldTableData.current)) {
156
+ store.setData(props.data);
157
+ forceUpdate();
48
158
  }
159
+ oldTableData.current = props.data;
160
+ }, [props.data]);
49
161
 
50
- // if (mergedDraggable.icon !== false) {
51
- // mergedDraggable.icon = mergedDraggable.icon || <HolderOutlined />;
52
- // }
162
+ // 监听属性变化 - checkStrictly
163
+ useEffect(function () {
164
+ store.checkStrictly = props.checkStrictly;
165
+ }, [props.checkStrictly]);
53
166
 
54
- return mergedDraggable;
55
- }, [draggable]);
56
- return (
57
- /*#__PURE__*/
58
- // @ts-ignore
59
- React.createElement(RcTree, _extends({
60
- itemHeight: props.itemHeight,
61
- ref: ref,
62
- virtual: props.virtual
63
- }, newProps, {
64
- prefixCls: prefixCls,
65
- className: classNames(_defineProperty(_defineProperty(_defineProperty({}, "".concat(prefixCls, "-icon-hide"), !showIcon), "".concat(prefixCls, "-block-node"), blockNode), "".concat(prefixCls, "-unselectable"), !selectable), className)
66
- // direction={props.direction}
67
- ,
68
- checkable: checkable ? /*#__PURE__*/React.createElement("span", {
69
- className: "".concat(prefixCls, "-checkbox-inner")
70
- }) : checkable,
71
- selectable: selectable,
72
- switcherIcon: function switcherIcon(nodeProps) {
73
- return renderSwitcherIcon(prefixCls, _switcherIcon, showLine, nodeProps);
74
- },
75
- draggable: draggableConfig
76
- }), children)
77
- );
78
- }
79
- var ForwardTree = /*#__PURE__*/forwardRef(InternalTree);
80
- var Tree = ForwardTree;
81
- Tree.TreeNode = TreeNode;
82
- Tree.defaultProps = {
83
- checkable: false,
84
- selectable: true,
85
- showIcon: false,
86
- motion: collapseMotion,
87
- blockNode: false,
88
- itemHeight: 20
89
- };
167
+ // 保存前一个值的 ref
168
+ var prevDefaultCheckedKeysRef = useRef(props.defaultCheckedKeys);
169
+
170
+ // 方法定义
171
+ var filter = useCallback(function (value) {
172
+ if (!props.filterNodeMethod) {
173
+ throw new Error('[Tree] filterNodeMethod is required when filter');
174
+ }
175
+ store.filter(value);
176
+ }, [props.filterNodeMethod, store]);
177
+ var getNodeKey = useCallback(function (node) {
178
+ return getNodeKeyUtil(props.nodeKey, node.data);
179
+ }, [props.nodeKey]);
180
+ var requireNodeKey = useCallback(function (methodName) {
181
+ if (!props.nodeKey) {
182
+ throw new Error("[Tree] nodeKey is required in ".concat(methodName));
183
+ }
184
+ }, [props.nodeKey]);
185
+ var getNodePath = useCallback(function (data) {
186
+ requireNodeKey('getNodePath');
187
+ var node = store.getNode(data);
188
+ if (!node) {
189
+ return [];
190
+ }
191
+ var path = [node.data];
192
+ var parent = node.parent;
193
+ while (parent && parent !== root) {
194
+ path.push(parent.data);
195
+ parent = parent.parent;
196
+ }
197
+ return path.reverse();
198
+ }, [requireNodeKey, store, root]);
199
+ var getCheckedNodes = useCallback(function (leafOnly, includeHalfChecked) {
200
+ return store.getCheckedNodes(leafOnly, includeHalfChecked);
201
+ }, [store]);
202
+ var getCheckedKeys = useCallback(function (leafOnly) {
203
+ return store.getCheckedKeys(leafOnly);
204
+ }, [store]);
205
+ var getCurrentNode = useCallback(function () {
206
+ var curNode = store.getCurrentNode();
207
+ return curNode ? curNode.data : null;
208
+ }, [store]);
209
+ var getCurrentKey = useCallback(function () {
210
+ requireNodeKey('getCurrentKey');
211
+ var curNode = getCurrentNode();
212
+ return curNode ? curNode[props.nodeKey] : null;
213
+ }, [getCurrentNode, requireNodeKey, props.nodeKey]);
214
+ var setCheckedNodes = useCallback(function (nodes, leafOnly) {
215
+ requireNodeKey('setCheckedNodes');
216
+ store.setCheckedNodes(nodes, leafOnly);
217
+ forceUpdate();
218
+ }, [forceUpdate, requireNodeKey, store]);
219
+ var setCheckedKeys = useCallback(function (keys, leafOnly) {
220
+ requireNodeKey('setCheckedKeys');
221
+ store.setCheckedKeys(keys, leafOnly);
222
+ forceUpdate();
223
+ }, [forceUpdate, requireNodeKey, store]);
224
+ var setChecked = useCallback(function (data, checked, deep) {
225
+ store.setChecked(data, checked, deep);
226
+ forceUpdate();
227
+ }, [forceUpdate, store]);
228
+ var getHalfCheckedNodes = useCallback(function () {
229
+ return store.getHalfCheckedNodes();
230
+ }, [store]);
231
+ var getHalfCheckedKeys = useCallback(function () {
232
+ return store.getHalfCheckedKeys();
233
+ }, [store]);
234
+ var setCurrentNode = useCallback(function (node) {
235
+ var shouldAutoExpandParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
236
+ requireNodeKey('setCurrentNode');
237
+ handleCurrentChange(store, props.onCurrentChange, function () {
238
+ broadcastExpanded(node);
239
+ store.setUserCurrentNode(node, shouldAutoExpandParent);
240
+ forceUpdate();
241
+ });
242
+ }, [requireNodeKey, store, props.onCurrentChange, forceUpdate, broadcastExpanded]);
243
+ var setCurrentKey = useCallback(function () {
244
+ var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
245
+ var shouldAutoExpandParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
246
+ requireNodeKey('setCurrentKey');
247
+ handleCurrentChange(store, props.onCurrentChange, function () {
248
+ broadcastExpanded();
249
+ store.setCurrentNodeKey(key, shouldAutoExpandParent);
250
+ });
251
+ }, [broadcastExpanded, requireNodeKey, store, props]);
252
+ var getNode = useCallback(function (data) {
253
+ return store.getNode(data);
254
+ }, [store]);
255
+ var remove = useCallback(function (data) {
256
+ store.remove(data);
257
+ }, [store]);
258
+ var append = useCallback(function (data, parentNode) {
259
+ store.append(data, parentNode);
260
+ }, [store]);
261
+ var insertBefore = useCallback(function (data, refNode) {
262
+ store.insertBefore(data, refNode);
263
+ }, [store]);
264
+ var insertAfter = useCallback(function (data, refNode) {
265
+ store.insertAfter(data, refNode);
266
+ }, [store]);
267
+ var handleNodeExpand = useCallback(function (nodeData, node, instance) {
268
+ broadcastExpanded(node);
269
+ onNodeExpand === null || onNodeExpand === void 0 || onNodeExpand(nodeData, node, instance);
270
+ }, [broadcastExpanded, onNodeExpand]);
271
+ var updateKeyChildren = useCallback(function (key, data) {
272
+ requireNodeKey('updateKeyChild');
273
+ store.updateChildren(key, data);
274
+ }, [requireNodeKey, store]);
275
+ useImperativeHandle(ref, function () {
276
+ return {
277
+ filter: filter,
278
+ getNodeKey: getNodeKey,
279
+ getNode: getNode,
280
+ getCheckedNodes: getCheckedNodes,
281
+ getCheckedKeys: getCheckedKeys,
282
+ getHalfCheckedNodes: getHalfCheckedNodes,
283
+ getHalfCheckedKeys: getHalfCheckedKeys,
284
+ getCurrentNode: getCurrentNode,
285
+ getCurrentKey: getCurrentKey,
286
+ setCurrentNode: setCurrentNode,
287
+ setCurrentKey: setCurrentKey,
288
+ remove: remove,
289
+ append: append,
290
+ insertBefore: insertBefore,
291
+ insertAfter: insertAfter,
292
+ updateKeyChildren: updateKeyChildren,
293
+ getNodePath: getNodePath,
294
+ setCheckedNodes: setCheckedNodes,
295
+ setCheckedKeys: setCheckedKeys,
296
+ setChecked: setChecked,
297
+ store: store
298
+ };
299
+ });
300
+
301
+ // 提供上下文
302
+ var contextValue = useMemo(function () {
303
+ return {
304
+ // ctx: { emit: noop },
305
+ props: props,
306
+ store: store,
307
+ // storeRef,
308
+ // actions,
309
+ root: root,
310
+ forceUpdate: forceUpdate
311
+ // currentNode,
312
+ // setCurrentNode: setCurNode,
313
+ };
314
+ }, [props, store, root, forceUpdate]);
315
+
316
+ // 渲染函数
317
+ var renderTreeNodes = function renderTreeNodes() {
318
+ if (isEmpty()) {
319
+ return /*#__PURE__*/React.createElement("div", {
320
+ className: ns.e('empty-block')
321
+ }, renderEmpty ? renderEmpty() : /*#__PURE__*/React.createElement("span", {
322
+ className: ns.e('empty-text')
323
+ }, emptyText || t('el.tree.emptyText', {
324
+ lng: locale
325
+ })));
326
+ }
327
+ return root.childNodes.map(function (child) {
328
+ return /*#__PURE__*/React.createElement(TreeNode, {
329
+ key: getNodeKey(child),
330
+ node: child,
331
+ props: treeProps,
332
+ accordion: accordion,
333
+ renderAfterExpand: renderAfterExpand,
334
+ showCheckbox: showCheckbox,
335
+ renderContent: renderContent,
336
+ onNodeExpand: handleNodeExpand
337
+ });
338
+ });
339
+ };
340
+ return /*#__PURE__*/React.createElement(TreeContext.Provider, {
341
+ value: contextValue
342
+ }, /*#__PURE__*/React.createElement(DragEventsContext.Provider, {
343
+ value: dragEvents
344
+ }, /*#__PURE__*/React.createElement(TreeNodeExpandContext.Provider, {
345
+ value: {
346
+ parentNodeMap: parentNodeMap
347
+ }
348
+ }, /*#__PURE__*/React.createElement("div", {
349
+ ref: elRef,
350
+ className: classNames(ns.b(), // ns.is({ dragging: !!dragState.draggingNode, 'drop-not-allow': !dragState.allowDrop, 'drop-inner': dragState.dropType === 'inner' }),
351
+ _defineProperty({}, ns.m('highlight-current'), highlightCurrent), props.className),
352
+ style: props.style,
353
+ role: "tree"
354
+ }, renderTreeNodes(), /*#__PURE__*/React.createElement("div", {
355
+ /* style={{ display: dragState.showDropIndicator ? 'block' : 'none' }} */style: {
356
+ display: 'none'
357
+ },
358
+ ref: dropIndicatorRef,
359
+ className: ns.e('drop-indicator')
360
+ })))));
361
+ });
362
+ Tree.displayName = 'ElTree';
90
363
  export default Tree;
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { DragEventsContextProps, TreeContextProps, TreeNodeExpandContextProps } from './typings';
3
+ export declare const TreeContext: import("react").Context<TreeContextProps>;
4
+ export declare const TreeNodeExpandContext: import("react").Context<TreeNodeExpandContextProps>;
5
+ export declare const DragEventsContext: import("react").Context<DragEventsContextProps>;
6
+ export declare const useTreeContext: () => TreeContextProps;
7
+ export declare const useTreeNodeExpandContext: () => TreeNodeExpandContextProps;
8
+ export declare const useDragEventsContext: () => DragEventsContextProps;
9
+ export default useTreeContext;
@@ -0,0 +1,14 @@
1
+ import { createContext, useContext } from 'react';
2
+ export var TreeContext = /*#__PURE__*/createContext({});
3
+ export var TreeNodeExpandContext = /*#__PURE__*/createContext({});
4
+ export var DragEventsContext = /*#__PURE__*/createContext({});
5
+ export var useTreeContext = function useTreeContext() {
6
+ return useContext(TreeContext);
7
+ };
8
+ export var useTreeNodeExpandContext = function useTreeNodeExpandContext() {
9
+ return useContext(TreeNodeExpandContext);
10
+ };
11
+ export var useDragEventsContext = function useDragEventsContext() {
12
+ return useContext(DragEventsContext);
13
+ };
14
+ export default useTreeContext;