@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,293 @@
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); }
2
+ 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; }
3
+ 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; }
4
+ 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; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ 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); }
7
+ import { useClassNames } from "../../hooks";
8
+ import { addClass, removeClass } from 'dom-lib';
9
+ import { useCallback, useRef } from 'react';
10
+ import { isFunction } from "../../Util";
11
+ export var dragEventsKey = Symbol('dragEvents');
12
+ export function useDragNodeHandler(_ref) {
13
+ var props = _ref.props,
14
+ elRef = _ref.elRef,
15
+ dropIndicatorRef = _ref.dropIndicatorRef,
16
+ store = _ref.store;
17
+ var ns = useClassNames('tree');
18
+ var allowDrag = props.allowDrag,
19
+ allowDrop = props.allowDrop,
20
+ onNodeDragStart = props.onNodeDragStart,
21
+ onNodeDragEnter = props.onNodeDragEnter,
22
+ onNodeDragLeave = props.onNodeDragLeave,
23
+ onNodeDragOver = props.onNodeDragOver,
24
+ onNodeDragEnd = props.onNodeDragEnd,
25
+ onNodeDrop = props.onNodeDrop;
26
+
27
+ // const [dragState, setDragState] = useState<{
28
+ // allowDrop: boolean;
29
+ // dropType: NodeDropType | null;
30
+ // draggingNode: TreeNode | null;
31
+ // showDropIndicator: boolean;
32
+ // dropNode: TreeNode | null;
33
+ // }>({
34
+ // showDropIndicator: false,
35
+ // draggingNode: null,
36
+ // dropNode: null,
37
+ // allowDrop: true,
38
+ // dropType: null,
39
+ // });
40
+
41
+ // 使用ref来保存最新的dragState值
42
+ var dragStateRef = useRef({
43
+ showDropIndicator: false,
44
+ draggingNode: null,
45
+ dropNode: null,
46
+ allowDrop: true,
47
+ dropType: null
48
+ });
49
+ // dragStateRef.current = dragState;
50
+
51
+ var setDragState = useCallback(function (fn) {
52
+ dragStateRef.current = fn(dragStateRef.current);
53
+ if (!dragStateRef.current.allowDrop) {
54
+ elRef.current.classList.add(ns.is('drop-not-allow'));
55
+ } else {
56
+ elRef.current.classList.remove(ns.is('drop-not-allow'));
57
+ }
58
+ if (dragStateRef.current.dropType === 'inner') {
59
+ elRef.current.classList.add(ns.is('drop-inner'));
60
+ } else {
61
+ elRef.current.classList.remove(ns.is('drop-inner'));
62
+ }
63
+ }, [elRef, ns]);
64
+ var treeNodeDragStart = useCallback(function (_ref2) {
65
+ var event = _ref2.event,
66
+ treeNode = _ref2.treeNode;
67
+ if (!event.dataTransfer) {
68
+ return;
69
+ }
70
+ if (isFunction(allowDrag) && !allowDrag(treeNode.node)) {
71
+ event.preventDefault();
72
+ return false;
73
+ }
74
+ event.dataTransfer.effectAllowed = 'move';
75
+
76
+ // wrap in try catch to address IE's error when first param is 'text/plain'
77
+ try {
78
+ // setData is required for draggable to work in FireFox
79
+ // the content has to be '' so dragging a node out of the tree won't open a new tab in FireFox
80
+ event.dataTransfer.setData('text/plain', '');
81
+ } catch (_unused) {
82
+ //
83
+ }
84
+ setDragState(function (prev) {
85
+ return _objectSpread(_objectSpread({}, prev), {}, {
86
+ draggingNode: treeNode
87
+ });
88
+ });
89
+ elRef.current.classList.add(ns.is('dragging'));
90
+ onNodeDragStart === null || onNodeDragStart === void 0 || onNodeDragStart(treeNode.node, event);
91
+ }, [allowDrag, elRef, ns, onNodeDragStart, setDragState]);
92
+ var treeNodeDragOver = useCallback(function (_ref3) {
93
+ var event = _ref3.event,
94
+ treeNode = _ref3.treeNode;
95
+ if (!event.dataTransfer) {
96
+ return;
97
+ }
98
+ var dropNode = treeNode;
99
+ var oldDropNode = dragStateRef.current.dropNode;
100
+ if (oldDropNode && oldDropNode.node.id !== dropNode.node.id && oldDropNode.$el) {
101
+ removeClass(oldDropNode.$el, ns.is('drop-inner'));
102
+ }
103
+ var draggingNode = dragStateRef.current.draggingNode;
104
+ if (!draggingNode || !dropNode) {
105
+ return;
106
+ }
107
+ var dropPrev = true;
108
+ var dropInner = true;
109
+ var dropNext = true;
110
+ var userAllowDropInner = true;
111
+ if (isFunction(allowDrop)) {
112
+ dropPrev = allowDrop(draggingNode.node, dropNode.node, 'prev');
113
+ userAllowDropInner = dropInner = allowDrop(draggingNode.node, dropNode.node, 'inner');
114
+ dropNext = allowDrop(draggingNode.node, dropNode.node, 'next');
115
+ }
116
+ event.dataTransfer.dropEffect = dropInner || dropPrev || dropNext ? 'move' : 'none';
117
+ if ((dropPrev || dropInner || dropNext) && (oldDropNode === null || oldDropNode === void 0 ? void 0 : oldDropNode.node.id) !== dropNode.node.id) {
118
+ if (oldDropNode) {
119
+ onNodeDragLeave === null || onNodeDragLeave === void 0 || onNodeDragLeave(draggingNode.node, oldDropNode.node, event);
120
+ }
121
+ onNodeDragEnter === null || onNodeDragEnter === void 0 || onNodeDragEnter(draggingNode.node, dropNode.node, event);
122
+ }
123
+ if (dropPrev || dropInner || dropNext) {
124
+ setDragState(function (prev) {
125
+ return _objectSpread(_objectSpread({}, prev), {}, {
126
+ dropNode: dropNode
127
+ });
128
+ });
129
+ } else {
130
+ // Reset dragState.value.dropNode to null when allowDrop is transfer from true to false.(For issue #14704)
131
+ setDragState(function (prev) {
132
+ return _objectSpread(_objectSpread({}, prev), {}, {
133
+ dropNode: null
134
+ });
135
+ });
136
+ }
137
+ if (dropNode.node.nextSibling === draggingNode.node) {
138
+ dropNext = false;
139
+ }
140
+ if (dropNode.node.previousSibling === draggingNode.node) {
141
+ dropPrev = false;
142
+ }
143
+ if (dropNode.node.contains(draggingNode.node, false)) {
144
+ dropInner = false;
145
+ }
146
+ if (draggingNode.node === dropNode.node || draggingNode.node.contains(dropNode.node)) {
147
+ dropPrev = false;
148
+ dropInner = false;
149
+ dropNext = false;
150
+ }
151
+ var dropEl = dropNode.$el;
152
+
153
+ // find target node without children, just calc content node height
154
+ var targetPosition = dropEl.querySelector(".".concat(ns.be('node', 'content'))).getBoundingClientRect();
155
+ var treePosition = elRef.current.getBoundingClientRect();
156
+ var treeScrollTop = elRef.current.scrollTop;
157
+ var dropType;
158
+ var getPrevPercent = function getPrevPercent() {
159
+ if (!dropPrev) {
160
+ return Number.NEGATIVE_INFINITY;
161
+ }
162
+ if (dropInner) {
163
+ return 0.25;
164
+ }
165
+ if (dropNext) {
166
+ return 0.45;
167
+ }
168
+ return 1;
169
+ };
170
+ var getNextPercent = function getNextPercent() {
171
+ if (!dropNext) {
172
+ return Number.POSITIVE_INFINITY;
173
+ }
174
+ if (dropInner) {
175
+ return 0.75;
176
+ }
177
+ if (dropPrev) {
178
+ return 0.55;
179
+ }
180
+ return 0;
181
+ };
182
+ var prevPercent = getPrevPercent();
183
+ var nextPercent = getNextPercent();
184
+ var indicatorTop = -9999;
185
+ var distance = event.clientY - targetPosition.top;
186
+ if (distance < targetPosition.height * prevPercent) {
187
+ dropType = 'before';
188
+ } else if (distance > targetPosition.height * nextPercent) {
189
+ dropType = 'after';
190
+ } else if (dropInner) {
191
+ dropType = 'inner';
192
+ } else {
193
+ dropType = 'none';
194
+ }
195
+ var iconPosition = dropEl.querySelector(".".concat(ns.be('node', 'expand-icon'))).getBoundingClientRect();
196
+ var dropIndicator = dropIndicatorRef.current;
197
+ if (dropType === 'before') {
198
+ indicatorTop = iconPosition.top - treePosition.top + treeScrollTop;
199
+ } else if (dropType === 'after') {
200
+ indicatorTop = iconPosition.bottom - treePosition.top + treeScrollTop;
201
+ }
202
+ dropIndicator.style.top = "".concat(indicatorTop, "px");
203
+ dropIndicator.style.left = "".concat(iconPosition.right - treePosition.left, "px");
204
+ if (dropType === 'inner') {
205
+ addClass(dropEl, ns.is('drop-inner'));
206
+ } else {
207
+ removeClass(dropEl, ns.is('drop-inner'));
208
+ }
209
+ var showDropIndicator = dropType === 'before' || dropType === 'after';
210
+ dropIndicatorRef.current.style.display = showDropIndicator ? 'block' : 'none';
211
+ var _allowDrop = showDropIndicator || userAllowDropInner;
212
+ var newDragState = {
213
+ showDropIndicator: showDropIndicator,
214
+ allowDrop: _allowDrop,
215
+ dropType: dropType
216
+ };
217
+ setDragState(function (prev) {
218
+ return _objectSpread(_objectSpread({}, prev), newDragState);
219
+ });
220
+ onNodeDragOver === null || onNodeDragOver === void 0 || onNodeDragOver(draggingNode.node, dropNode.node, event);
221
+ }, [allowDrop, ns, elRef, dropIndicatorRef, setDragState, onNodeDragOver, onNodeDragEnter, onNodeDragLeave]);
222
+ var treeNodeDragEnd = useCallback(function (event) {
223
+ var currentDragState = dragStateRef.current;
224
+ var draggingNode = currentDragState.draggingNode,
225
+ dropType = currentDragState.dropType,
226
+ dropNode = currentDragState.dropNode;
227
+ event.preventDefault();
228
+
229
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1911486
230
+ if (event.dataTransfer) {
231
+ event.dataTransfer.dropEffect = 'move';
232
+ }
233
+ if (draggingNode !== null && draggingNode !== void 0 && draggingNode.node.data && dropNode) {
234
+ var draggingNodeCopy = {
235
+ data: draggingNode.node.data
236
+ };
237
+ if (dropType !== 'none') {
238
+ draggingNode.node.remove();
239
+ }
240
+ if (dropType === 'before') {
241
+ var _dropNode$node$parent;
242
+ (_dropNode$node$parent = dropNode.node.parent) === null || _dropNode$node$parent === void 0 || _dropNode$node$parent.insertBefore(draggingNodeCopy, dropNode.node);
243
+ } else if (dropType === 'after') {
244
+ var _dropNode$node$parent2;
245
+ (_dropNode$node$parent2 = dropNode.node.parent) === null || _dropNode$node$parent2 === void 0 || _dropNode$node$parent2.insertAfter(draggingNodeCopy, dropNode.node);
246
+ } else if (dropType === 'inner') {
247
+ dropNode.node.insertChild(draggingNodeCopy);
248
+ }
249
+ if (dropType !== 'none') {
250
+ store.registerNode(draggingNodeCopy);
251
+ if (store.key) {
252
+ //restore checkbox state after dragging
253
+ draggingNode.node.eachNode(function (node) {
254
+ var _store$nodesMap$node$;
255
+ store === null || store === void 0 || (_store$nodesMap$node$ = store.nodesMap[node.data[store === null || store === void 0 ? void 0 : store.key]]) === null || _store$nodesMap$node$ === void 0 || _store$nodesMap$node$.setChecked(node.checked, !(store !== null && store !== void 0 && store.checkStrictly));
256
+ });
257
+ }
258
+ }
259
+ removeClass(dropNode.$el, ns.is('drop-inner'));
260
+ onNodeDragEnd === null || onNodeDragEnd === void 0 || onNodeDragEnd(draggingNode.node, dropNode.node, dropType, event);
261
+ if (dropType !== 'none') {
262
+ onNodeDrop === null || onNodeDrop === void 0 || onNodeDrop(draggingNode.node, dropNode.node, dropType, event);
263
+ }
264
+ }
265
+ if (draggingNode && !dropNode) {
266
+ onNodeDragEnd === null || onNodeDragEnd === void 0 || onNodeDragEnd(draggingNode.node, null, dropType, event);
267
+ }
268
+
269
+ // setDragState({
270
+ // showDropIndicator: false,
271
+ // draggingNode: null,
272
+ // dropNode: null,
273
+ // allowDrop: true,
274
+ // dropType: null,
275
+ // });
276
+ dropIndicatorRef.current.style.display = 'none';
277
+ elRef.current.classList.remove(ns.is('dragging'));
278
+ elRef.current.classList.remove(ns.is('drop-not-allow'));
279
+ elRef.current.classList.remove(ns.is('drop-inner'));
280
+ dragStateRef.current = {
281
+ showDropIndicator: false,
282
+ draggingNode: null,
283
+ dropNode: null,
284
+ allowDrop: true,
285
+ dropType: null
286
+ };
287
+ }, [dropIndicatorRef, elRef, ns, onNodeDragEnd, onNodeDrop, store]);
288
+ return {
289
+ treeNodeDragStart: treeNodeDragStart,
290
+ treeNodeDragOver: treeNodeDragOver,
291
+ treeNodeDragEnd: treeNodeDragEnd
292
+ };
293
+ }
File without changes
@@ -0,0 +1,104 @@
1
+ // import { RefObject } from 'react';
2
+ // import { EVENT_CODE } from '../../config/Constants';
3
+ // import { useClassNames } from '../../hooks';
4
+ // import TreeStore from './tree-store';
5
+
6
+ // interface UseKeydownOption {
7
+ // elRef: RefObject<HTMLElement | null>;
8
+ // }
9
+ // export function useKeydown({ elRef }: UseKeydownOption, store: TreeStore) {
10
+ // const ns = useClassNames('tree');
11
+
12
+ // onMounted(() => {
13
+ // initTabIndex();
14
+ // });
15
+
16
+ // onUpdated(() => {
17
+ // elRef.current?.querySelectorAll('input[type=checkbox]').forEach(checkbox => {
18
+ // checkbox.setAttribute('tabindex', '-1');
19
+ // });
20
+ // });
21
+
22
+ // function canNodeFocus(treeItems: HTMLElement[], nextIndex: number): boolean {
23
+ // const currentNode = store.getNode(treeItems[nextIndex].dataset.key!);
24
+ // return currentNode.canFocus && currentNode.visible && (currentNode.parent?.expanded || currentNode.parent?.level === 0);
25
+ // }
26
+
27
+ // const handleKeydown = (ev: KeyboardEvent): void => {
28
+ // const currentItem = ev.target as HTMLDivElement;
29
+ // if (!currentItem.className.includes(ns.b('node'))) {
30
+ // return;
31
+ // }
32
+ // const code = getEventCode(ev);
33
+ // const treeItems: HTMLElement[] = Array.from(elRef.current!.querySelectorAll(`.${ns.is('focusable')}[role=treeitem]`));
34
+ // const currentIndex = treeItems.indexOf(currentItem);
35
+ // let nextIndex;
36
+ // if ([EVENT_CODE.up, EVENT_CODE.down].includes(code)) {
37
+ // ev.preventDefault();
38
+ // if (code === EVENT_CODE.up) {
39
+ // nextIndex = currentIndex === -1 ? 0 : currentIndex !== 0 ? currentIndex - 1 : treeItems.length - 1;
40
+ // const startIndex = nextIndex;
41
+ // while (true) {
42
+ // if (canNodeFocus(treeItems, nextIndex)) {
43
+ // break;
44
+ // }
45
+
46
+ // nextIndex--;
47
+ // if (nextIndex === startIndex) {
48
+ // nextIndex = -1;
49
+ // break;
50
+ // }
51
+ // if (nextIndex < 0) {
52
+ // nextIndex = treeItems.length - 1;
53
+ // }
54
+ // }
55
+ // } else {
56
+ // nextIndex = currentIndex === -1 ? 0 : currentIndex < treeItems.length - 1 ? currentIndex + 1 : 0;
57
+ // const startIndex = nextIndex;
58
+ // while (true) {
59
+ // if (canNodeFocus(treeItems, nextIndex)) {
60
+ // break;
61
+ // }
62
+
63
+ // nextIndex++;
64
+ // if (nextIndex === startIndex) {
65
+ // nextIndex = -1;
66
+ // break;
67
+ // }
68
+ // if (nextIndex >= treeItems.length) {
69
+ // nextIndex = 0;
70
+ // }
71
+ // }
72
+ // }
73
+ // nextIndex !== -1 && treeItems[nextIndex].focus();
74
+ // }
75
+ // if ([EVENT_CODE.left, EVENT_CODE.right].includes(code)) {
76
+ // ev.preventDefault();
77
+ // currentItem.click();
78
+ // }
79
+ // const hasInput = currentItem.querySelector('[type="checkbox"]') as Nullable<HTMLInputElement>;
80
+ // if ([EVENT_CODE.enter, EVENT_CODE.numpadEnter, EVENT_CODE.space].includes(code) && hasInput) {
81
+ // ev.preventDefault();
82
+ // hasInput.click();
83
+ // }
84
+ // };
85
+
86
+ // elRef.current.addEventListener('keydown', handleKeydown);
87
+
88
+ // const initTabIndex = (): void => {
89
+ // if (!elRef.current) {
90
+ // return;
91
+ // }
92
+ // const treeItems = Array.from(elRef.current.querySelectorAll(`.${ns.is('focusable')}[role=treeitem]`));
93
+ // const checkboxItems = Array.from(elRef.current.querySelectorAll('input[type=checkbox]'));
94
+ // checkboxItems.forEach(checkbox => {
95
+ // checkbox.setAttribute('tabindex', '-1');
96
+ // });
97
+ // const checkedItem = elRef.current.querySelectorAll(`.${ns.is('checked')}[role=treeitem]`);
98
+ // if (checkedItem.length) {
99
+ // checkedItem[0].setAttribute('tabindex', '0');
100
+ // return;
101
+ // }
102
+ // treeItems[0]?.setAttribute('tabindex', '0');
103
+ // };
104
+ // }
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ import type Node from './node';
3
+ interface NodeMap {
4
+ treeNodeExpand(node?: Node): void;
5
+ children: Set<NodeMap>;
6
+ }
7
+ interface Props {
8
+ node?: Node;
9
+ accordion?: boolean;
10
+ }
11
+ export declare function useNodeExpandEventBroadcast(props: Props): {
12
+ parentNodeMap: import("react").MutableRefObject<NodeMap>;
13
+ broadcastExpanded: (node?: Node) => void;
14
+ };
15
+ export {};
@@ -0,0 +1,54 @@
1
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
2
+ 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); }
3
+ 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; }
4
+ import { useRef } from 'react';
5
+ import { useTreeNodeExpandContext } from "../TreeContext";
6
+ export function useNodeExpandEventBroadcast(props) {
7
+ var _useTreeNodeExpandCon = useTreeNodeExpandContext(),
8
+ parentNodeMap = _useTreeNodeExpandCon.parentNodeMap;
9
+ // const currentNodeMap = useRef(null);
10
+
11
+ var currentNodeMap = useRef({
12
+ treeNodeExpand: function treeNodeExpand(node) {
13
+ if (props.node !== node) {
14
+ var _props$node;
15
+ (_props$node = props.node) === null || _props$node === void 0 || _props$node.collapse();
16
+ }
17
+ },
18
+ children: new Set()
19
+ });
20
+ if (parentNodeMap !== null && parentNodeMap !== void 0 && parentNodeMap.current) {
21
+ parentNodeMap.current.children.add(currentNodeMap.current);
22
+ }
23
+ // useEffect(() => {
24
+ // // parentNodeMap.current = currentNodeMap.current;
25
+
26
+ // return () => {
27
+ // if (parentNodeMap?.current) {
28
+ // parentNodeMap.current.children.delete(currentNodeMap.current);
29
+ // }
30
+ // currentNodeMap.current = null;
31
+ // };
32
+ // });
33
+
34
+ return {
35
+ parentNodeMap: currentNodeMap,
36
+ broadcastExpanded: function broadcastExpanded(node) {
37
+ if (!props.accordion) {
38
+ return;
39
+ }
40
+ var _iterator = _createForOfIteratorHelper(currentNodeMap.current.children),
41
+ _step;
42
+ try {
43
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
44
+ var childNode = _step.value;
45
+ childNode.treeNodeExpand(node);
46
+ }
47
+ } catch (err) {
48
+ _iterator.e(err);
49
+ } finally {
50
+ _iterator.f();
51
+ }
52
+ }
53
+ };
54
+ }
@@ -0,0 +1,7 @@
1
+ import { TreeKey, TreeNodeData } from '../typings';
2
+ import type Node from './node';
3
+ import TreeStore from './tree-store';
4
+ export declare const NODE_KEY = "$treeNodeId";
5
+ export declare const markNodeData: (node: Node, data: TreeNodeData | null) => void;
6
+ export declare const getNodeKey: (key: TreeKey | undefined, data: TreeNodeData) => any;
7
+ export declare const handleCurrentChange: (store: TreeStore, onCurrentChange: (data: TreeNodeData, currentNode: Node) => void, setCurrent: () => void) => void;
@@ -0,0 +1,24 @@
1
+ export var NODE_KEY = '$treeNodeId';
2
+ export var markNodeData = function markNodeData(node, data) {
3
+ if (!data || data[NODE_KEY]) {
4
+ return;
5
+ }
6
+ Object.defineProperty(data, NODE_KEY, {
7
+ value: node.id,
8
+ enumerable: false,
9
+ configurable: false,
10
+ writable: false
11
+ });
12
+ };
13
+ export var getNodeKey = function getNodeKey(key, data) {
14
+ return data === null || data === void 0 ? void 0 : data[key || NODE_KEY];
15
+ };
16
+ export var handleCurrentChange = function handleCurrentChange(store, onCurrentChange, setCurrent) {
17
+ var preCurrentNode = store.currentNode;
18
+ setCurrent();
19
+ var currentNode = store.currentNode;
20
+ if (preCurrentNode === currentNode) {
21
+ return;
22
+ }
23
+ onCurrentChange === null || onCurrentChange === void 0 || onCurrentChange(currentNode ? currentNode.data : null, currentNode);
24
+ };