@elliemae/ds-treeview 2.2.0 → 2.3.0-alpha.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 (214) hide show
  1. package/cjs/TreeView.js +47 -31
  2. package/cjs/TreeView.js.map +7 -0
  3. package/cjs/TreeViewContext.js +55 -43
  4. package/cjs/TreeViewContext.js.map +7 -0
  5. package/cjs/config/cssClassesConstants.js +41 -13
  6. package/cjs/config/cssClassesConstants.js.map +7 -0
  7. package/cjs/config/useTreeview.js +102 -88
  8. package/cjs/config/useTreeview.js.map +7 -0
  9. package/cjs/hoc/DnDTreeContext.js +45 -0
  10. package/cjs/hoc/DnDTreeContext.js.map +7 -0
  11. package/cjs/hoc/SortableItemContext.js +46 -0
  12. package/cjs/hoc/SortableItemContext.js.map +7 -0
  13. package/cjs/hoc/WithConditionalDnDContext.js +128 -0
  14. package/cjs/hoc/WithConditionalDnDContext.js.map +7 -0
  15. package/cjs/hoc/WithDnDSortableItemContext.js +69 -0
  16. package/cjs/hoc/WithDnDSortableItemContext.js.map +7 -0
  17. package/cjs/index.js +37 -27
  18. package/cjs/index.js.map +7 -0
  19. package/cjs/parts/CheckboxSelectable.js +70 -59
  20. package/cjs/parts/CheckboxSelectable.js.map +7 -0
  21. package/cjs/parts/ChildrenCountDisplayer.js +45 -28
  22. package/cjs/parts/ChildrenCountDisplayer.js.map +7 -0
  23. package/cjs/parts/DnDHandle.js +57 -0
  24. package/cjs/parts/DnDHandle.js.map +7 -0
  25. package/cjs/parts/DropIndicator.js +80 -0
  26. package/cjs/parts/DropIndicator.js.map +7 -0
  27. package/cjs/parts/ExpandCaret.js +85 -83
  28. package/cjs/parts/ExpandCaret.js.map +7 -0
  29. package/cjs/parts/Icon.js +46 -31
  30. package/cjs/parts/Icon.js.map +7 -0
  31. package/cjs/parts/NestingSpace.js +43 -35
  32. package/cjs/parts/NestingSpace.js.map +7 -0
  33. package/cjs/parts/RadioSelectable.js +52 -37
  34. package/cjs/parts/RadioSelectable.js.map +7 -0
  35. package/cjs/parts/TreeItem.js +121 -165
  36. package/cjs/parts/TreeItem.js.map +7 -0
  37. package/cjs/parts/TreeItemText.js +88 -95
  38. package/cjs/parts/TreeItemText.js.map +7 -0
  39. package/cjs/parts/TreeList.js +114 -132
  40. package/cjs/parts/TreeList.js.map +7 -0
  41. package/cjs/plugins/dnd/TreeDndPlugin.js +34 -43
  42. package/cjs/plugins/dnd/TreeDndPlugin.js.map +7 -0
  43. package/cjs/plugins/dnd/index.js +28 -10
  44. package/cjs/plugins/dnd/index.js.map +7 -0
  45. package/cjs/plugins/index.js +34 -22
  46. package/cjs/plugins/index.js.map +7 -0
  47. package/cjs/plugins/roving/TreeRovingPlugin.js +35 -7
  48. package/cjs/plugins/roving/TreeRovingPlugin.js.map +7 -0
  49. package/cjs/plugins/roving/index.js +28 -9
  50. package/cjs/plugins/roving/index.js.map +7 -0
  51. package/cjs/plugins/searchable/SearchableTreePlugin.js +35 -7
  52. package/cjs/plugins/searchable/SearchableTreePlugin.js.map +7 -0
  53. package/cjs/plugins/searchable/index.js +28 -9
  54. package/cjs/plugins/searchable/index.js.map +7 -0
  55. package/cjs/plugins/selectable/SelectablePluginTree.js +35 -7
  56. package/cjs/plugins/selectable/SelectablePluginTree.js.map +7 -0
  57. package/cjs/plugins/selectable/index.js +28 -9
  58. package/cjs/plugins/selectable/index.js.map +7 -0
  59. package/cjs/plugins/toolbar/TreeToolbarPlugin.js +35 -7
  60. package/cjs/plugins/toolbar/TreeToolbarPlugin.js.map +7 -0
  61. package/cjs/plugins/toolbar/index.js +28 -9
  62. package/cjs/plugins/toolbar/index.js.map +7 -0
  63. package/cjs/plugins/tree/TreeDataPlugin.js +35 -7
  64. package/cjs/plugins/tree/TreeDataPlugin.js.map +7 -0
  65. package/cjs/plugins/tree/index.js +28 -9
  66. package/cjs/plugins/tree/index.js.map +7 -0
  67. package/cjs/plugins/virtualization/TreeVirtualizationPlugin.js +35 -7
  68. package/cjs/plugins/virtualization/TreeVirtualizationPlugin.js.map +7 -0
  69. package/cjs/plugins/virtualization/index.js +28 -9
  70. package/cjs/plugins/virtualization/index.js.map +7 -0
  71. package/cjs/react-desc-prop-types.js +83 -53
  72. package/cjs/react-desc-prop-types.js.map +7 -0
  73. package/cjs/related-components/TreeViewSearchBar.js +42 -40
  74. package/cjs/related-components/TreeViewSearchBar.js.map +7 -0
  75. package/cjs/sharedTypes.js +27 -2
  76. package/cjs/sharedTypes.js.map +7 -0
  77. package/cjs/utils/array-helpers.js +35 -11
  78. package/cjs/utils/array-helpers.js.map +7 -0
  79. package/cjs/utils/group-expands-helpers.js +86 -59
  80. package/cjs/utils/group-expands-helpers.js.map +7 -0
  81. package/cjs/utils/keyboard-helpers.js +86 -90
  82. package/cjs/utils/keyboard-helpers.js.map +7 -0
  83. package/cjs/utils/object-helpers.js +43 -36
  84. package/cjs/utils/object-helpers.js.map +7 -0
  85. package/cjs/utils/refs-helpers.js +43 -22
  86. package/cjs/utils/refs-helpers.js.map +7 -0
  87. package/cjs/utils/selectable-helper.js +61 -53
  88. package/cjs/utils/selectable-helper.js.map +7 -0
  89. package/cjs/utils/string-helpers.js +35 -7
  90. package/cjs/utils/string-helpers.js.map +7 -0
  91. package/cjs/utils/tree-helpers.js +125 -135
  92. package/cjs/utils/tree-helpers.js.map +7 -0
  93. package/cjs/utils/useInstanceRefActions.js +54 -43
  94. package/cjs/utils/useInstanceRefActions.js.map +7 -0
  95. package/cjs/utils/useTree.js +78 -78
  96. package/cjs/utils/useTree.js.map +7 -0
  97. package/esm/TreeView.js +16 -20
  98. package/esm/TreeView.js.map +7 -0
  99. package/esm/TreeViewContext.js +26 -37
  100. package/esm/TreeViewContext.js.map +7 -0
  101. package/esm/config/cssClassesConstants.js +12 -6
  102. package/esm/config/cssClassesConstants.js.map +7 -0
  103. package/esm/config/useTreeview.js +59 -66
  104. package/esm/config/useTreeview.js.map +7 -0
  105. package/esm/hoc/DnDTreeContext.js +16 -0
  106. package/esm/hoc/DnDTreeContext.js.map +7 -0
  107. package/esm/hoc/SortableItemContext.js +17 -0
  108. package/esm/hoc/SortableItemContext.js.map +7 -0
  109. package/esm/hoc/WithConditionalDnDContext.js +99 -0
  110. package/esm/hoc/WithConditionalDnDContext.js.map +7 -0
  111. package/esm/hoc/WithDnDSortableItemContext.js +40 -0
  112. package/esm/hoc/WithDnDSortableItemContext.js.map +7 -0
  113. package/esm/index.js +8 -9
  114. package/esm/index.js.map +7 -0
  115. package/esm/parts/CheckboxSelectable.js +36 -46
  116. package/esm/parts/CheckboxSelectable.js.map +7 -0
  117. package/esm/parts/ChildrenCountDisplayer.js +16 -20
  118. package/esm/parts/ChildrenCountDisplayer.js.map +7 -0
  119. package/esm/parts/DnDHandle.js +28 -0
  120. package/esm/parts/DnDHandle.js.map +7 -0
  121. package/esm/parts/DropIndicator.js +51 -0
  122. package/esm/parts/DropIndicator.js.map +7 -0
  123. package/esm/parts/ExpandCaret.js +54 -72
  124. package/esm/parts/ExpandCaret.js.map +7 -0
  125. package/esm/parts/Icon.js +16 -22
  126. package/esm/parts/Icon.js.map +7 -0
  127. package/esm/parts/NestingSpace.js +14 -27
  128. package/esm/parts/NestingSpace.js.map +7 -0
  129. package/esm/parts/RadioSelectable.js +20 -28
  130. package/esm/parts/RadioSelectable.js.map +7 -0
  131. package/esm/parts/TreeItem.js +89 -150
  132. package/esm/parts/TreeItem.js.map +7 -0
  133. package/esm/parts/TreeItemText.js +58 -85
  134. package/esm/parts/TreeItemText.js.map +7 -0
  135. package/esm/parts/TreeList.js +86 -120
  136. package/esm/parts/TreeList.js.map +7 -0
  137. package/esm/plugins/dnd/TreeDndPlugin.js +5 -34
  138. package/esm/plugins/dnd/TreeDndPlugin.js.map +7 -0
  139. package/esm/plugins/dnd/index.js +3 -1
  140. package/esm/plugins/dnd/index.js.map +7 -0
  141. package/esm/plugins/index.js +9 -7
  142. package/esm/plugins/index.js.map +7 -0
  143. package/esm/plugins/roving/TreeRovingPlugin.js +6 -3
  144. package/esm/plugins/roving/TreeRovingPlugin.js.map +7 -0
  145. package/esm/plugins/roving/index.js +3 -1
  146. package/esm/plugins/roving/index.js.map +7 -0
  147. package/esm/plugins/searchable/SearchableTreePlugin.js +6 -3
  148. package/esm/plugins/searchable/SearchableTreePlugin.js.map +7 -0
  149. package/esm/plugins/searchable/index.js +3 -1
  150. package/esm/plugins/searchable/index.js.map +7 -0
  151. package/esm/plugins/selectable/SelectablePluginTree.js +6 -3
  152. package/esm/plugins/selectable/SelectablePluginTree.js.map +7 -0
  153. package/esm/plugins/selectable/index.js +3 -1
  154. package/esm/plugins/selectable/index.js.map +7 -0
  155. package/esm/plugins/toolbar/TreeToolbarPlugin.js +6 -3
  156. package/esm/plugins/toolbar/TreeToolbarPlugin.js.map +7 -0
  157. package/esm/plugins/toolbar/index.js +3 -1
  158. package/esm/plugins/toolbar/index.js.map +7 -0
  159. package/esm/plugins/tree/TreeDataPlugin.js +6 -3
  160. package/esm/plugins/tree/TreeDataPlugin.js.map +7 -0
  161. package/esm/plugins/tree/index.js +3 -1
  162. package/esm/plugins/tree/index.js.map +7 -0
  163. package/esm/plugins/virtualization/TreeVirtualizationPlugin.js +6 -3
  164. package/esm/plugins/virtualization/TreeVirtualizationPlugin.js.map +7 -0
  165. package/esm/plugins/virtualization/index.js +3 -1
  166. package/esm/plugins/virtualization/index.js.map +7 -0
  167. package/esm/react-desc-prop-types.js +48 -43
  168. package/esm/react-desc-prop-types.js.map +7 -0
  169. package/esm/related-components/TreeViewSearchBar.js +13 -32
  170. package/esm/related-components/TreeViewSearchBar.js.map +7 -0
  171. package/esm/sharedTypes.js +2 -1
  172. package/esm/sharedTypes.js.map +7 -0
  173. package/esm/utils/array-helpers.js +6 -6
  174. package/esm/utils/array-helpers.js.map +7 -0
  175. package/esm/utils/group-expands-helpers.js +56 -46
  176. package/esm/utils/group-expands-helpers.js.map +7 -0
  177. package/esm/utils/keyboard-helpers.js +47 -74
  178. package/esm/utils/keyboard-helpers.js.map +7 -0
  179. package/esm/utils/object-helpers.js +14 -31
  180. package/esm/utils/object-helpers.js.map +7 -0
  181. package/esm/utils/refs-helpers.js +15 -19
  182. package/esm/utils/refs-helpers.js.map +7 -0
  183. package/esm/utils/selectable-helper.js +32 -43
  184. package/esm/utils/selectable-helper.js.map +7 -0
  185. package/esm/utils/string-helpers.js +6 -3
  186. package/esm/utils/string-helpers.js.map +7 -0
  187. package/esm/utils/tree-helpers.js +94 -119
  188. package/esm/utils/tree-helpers.js.map +7 -0
  189. package/esm/utils/useInstanceRefActions.js +21 -35
  190. package/esm/utils/useInstanceRefActions.js.map +7 -0
  191. package/esm/utils/useTree.js +37 -57
  192. package/esm/utils/useTree.js.map +7 -0
  193. package/package.json +34 -18
  194. package/types/hoc/DnDTreeContext.d.ts +14 -0
  195. package/types/hoc/SortableItemContext.d.ts +19 -0
  196. package/types/hoc/WithConditionalDnDContext.d.ts +4 -0
  197. package/types/hoc/WithDnDSortableItemContext.d.ts +4 -0
  198. package/types/parts/DnDHandle.d.ts +6 -0
  199. package/types/parts/DropIndicator.d.ts +10 -0
  200. package/types/parts/TreeItem.d.ts +4 -11
  201. package/types/parts/TreeList.d.ts +0 -4
  202. package/types/plugins/dnd/TreeDndPlugin.d.ts +0 -2
  203. package/types/react-desc-prop-types.d.ts +17 -3
  204. package/types/sharedTypes.d.ts +1 -8
  205. package/types/utils/keyboard-helpers.d.ts +2 -1
  206. package/types/utils/refs-helpers.d.ts +1 -1
  207. package/types/utils/tree-helpers.d.ts +4 -1
  208. package/types/utils/useTree.d.ts +1 -0
  209. package/cjs/utils/dnd-helpers.js +0 -140
  210. package/cjs/utils/useDnDHelpers.js +0 -220
  211. package/esm/utils/dnd-helpers.js +0 -132
  212. package/esm/utils/useDnDHelpers.js +0 -216
  213. package/types/utils/dnd-helpers.d.ts +0 -39
  214. package/types/utils/useDnDHelpers.d.ts +0 -26
@@ -1,16 +1,10 @@
1
- import 'core-js/modules/web.dom-collections.iterator.js';
2
- import { useRef, useMemo, useState, useEffect, useCallback } from 'react';
3
- import { focusItem } from './tree-helpers.js';
4
- import { toggleExpandAllHelper } from './group-expands-helpers.js';
5
-
6
- const useInstanceRefActions = (_ref, ctx) => {
7
- let {
8
- actions
9
- } = _ref;
1
+ import * as React from "react";
2
+ import { useEffect, useMemo, useState, useRef, useCallback } from "react";
3
+ import { focusItem } from "./tree-helpers";
4
+ import { toggleExpandAllHelper } from "./group-expands-helpers";
5
+ const useInstanceRefActions = ({ actions }, ctx) => {
10
6
  const {
11
- props: {
12
- onItemFocus
13
- },
7
+ props: { onItemFocus },
14
8
  virtualListHelpers,
15
9
  treeRoot,
16
10
  visibleItems,
@@ -20,12 +14,8 @@ const useInstanceRefActions = (_ref, ctx) => {
20
14
  setFocusedItem,
21
15
  setLatestToggledItem
22
16
  } = ctx;
23
- const {
24
- current: promises
25
- } = useRef({});
26
- const {
27
- scrollToIndex
28
- } = useMemo(() => virtualListHelpers, [virtualListHelpers]);
17
+ const { current: promises } = useRef({});
18
+ const { scrollToIndex } = useMemo(() => virtualListHelpers, [virtualListHelpers]);
29
19
  const [expandPromise, setPromise] = useState();
30
20
  useEffect(() => {
31
21
  if (expandPromise && promises.expandResolve) {
@@ -34,36 +24,30 @@ const useInstanceRefActions = (_ref, ctx) => {
34
24
  setPromise(null);
35
25
  }
36
26
  }, [visibleItems, expandPromise, promises]);
37
- actions.toggleExpandAll = useCallback(isExpand => {
38
- const p = new Promise(resolve => {
27
+ actions.toggleExpandAll = useCallback((isExpand) => {
28
+ const p = new Promise((resolve) => {
39
29
  promises.expandResolve = resolve;
40
- if (treeRoot) toggleExpandAllHelper(isExpand, treeRoot, triggerTreeRerender, setLatestToggledItem, updateUserExpandedState);
30
+ if (treeRoot)
31
+ toggleExpandAllHelper(isExpand, treeRoot, triggerTreeRerender, setLatestToggledItem, updateUserExpandedState);
41
32
  });
42
33
  setPromise(p);
43
34
  return p;
44
35
  }, [promises, treeRoot, triggerTreeRerender, setLatestToggledItem, updateUserExpandedState]);
45
- actions.scrollTo = useCallback(function (indx) {
46
- let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
47
- align: 'start'
48
- };
49
- if (scrollToIndex) scrollToIndex(indx, opts);
36
+ actions.scrollTo = useCallback((indx, opts = { align: "start" }) => {
37
+ if (scrollToIndex)
38
+ scrollToIndex(indx, opts);
50
39
  }, [scrollToIndex]);
51
- actions.setSelectedItemByVirtualIndex = useCallback(index => {
40
+ actions.setSelectedItemByVirtualIndex = useCallback((index) => {
52
41
  const itemByIndex = visibleItems[index];
53
42
  setSelectedItem(itemByIndex);
54
43
  }, [visibleItems, setSelectedItem]);
55
- actions.setFocusedItemByVirtualIndex = useCallback(function (index) {
56
- let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
57
- align: 'start',
58
- withScroll: false
59
- };
44
+ actions.setFocusedItemByVirtualIndex = useCallback((index, opts = { align: "start", withScroll: false }) => {
60
45
  const itemByIndex = visibleItems[index];
61
46
  const onItemFocusParams = {
62
47
  itemIndex: itemByIndex.virtualIndex,
63
48
  scrollToItem: () => scrollToIndex(index, opts),
64
49
  item: itemByIndex
65
50
  };
66
-
67
51
  if (opts.withScroll && scrollToIndex) {
68
52
  scrollToIndex(index, opts);
69
53
  setTimeout(() => {
@@ -79,5 +63,7 @@ const useInstanceRefActions = (_ref, ctx) => {
79
63
  }, [visibleItems, scrollToIndex, setFocusedItem, onItemFocus]);
80
64
  return actions;
81
65
  };
82
-
83
- export { useInstanceRefActions };
66
+ export {
67
+ useInstanceRefActions
68
+ };
69
+ //# sourceMappingURL=useInstanceRefActions.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/utils/useInstanceRefActions.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useEffect, useMemo, useState, useRef, useCallback } from 'react';\nimport { focusItem } from './tree-helpers';\nimport { toggleExpandAllHelper } from './group-expands-helpers';\nimport type { DSTreeviewT } from '../react-desc-prop-types';\nimport type { DSTreeviewInternalsT } from '../sharedTypes';\n\ninterface PromisesRefT {\n expandResolve?: null | ((value: DSTreeviewT.Item[] | PromiseLike<DSTreeviewT.Item[]>) => void);\n scrollTo?: null | ((value: DSTreeviewT.Item[] | PromiseLike<DSTreeviewT.Item[]>) => void);\n}\n\nexport const useInstanceRefActions = ({ actions }: DSTreeviewT.InstanceRef, ctx: DSTreeviewInternalsT.CTX) => {\n const {\n props: { onItemFocus },\n virtualListHelpers,\n treeRoot,\n visibleItems,\n triggerTreeRerender,\n updateUserExpandedState,\n setSelectedItem,\n setFocusedItem,\n setLatestToggledItem,\n } = ctx;\n const { current: promises } = useRef<PromisesRefT>({});\n const { scrollToIndex } = useMemo(() => virtualListHelpers, [virtualListHelpers]);\n const [expandPromise, setPromise] = useState<Promise<DSTreeviewT.Item[]> | undefined | null>();\n\n useEffect(() => {\n if (expandPromise && promises.expandResolve) {\n promises.expandResolve(visibleItems);\n promises.expandResolve = null;\n setPromise(null);\n }\n }, [visibleItems, expandPromise, promises]);\n\n actions.toggleExpandAll = useCallback(\n (isExpand) => {\n const p = new Promise<DSTreeviewT.Item[]>((resolve) => {\n promises.expandResolve = resolve;\n if (treeRoot)\n toggleExpandAllHelper(isExpand, treeRoot, triggerTreeRerender, setLatestToggledItem, updateUserExpandedState);\n });\n setPromise(p);\n return p;\n },\n [promises, treeRoot, triggerTreeRerender, setLatestToggledItem, updateUserExpandedState],\n );\n actions.scrollTo = useCallback(\n (indx, opts = { align: 'start' }) => {\n if (scrollToIndex) scrollToIndex(indx, opts);\n },\n [scrollToIndex],\n );\n\n actions.setSelectedItemByVirtualIndex = useCallback(\n (index) => {\n const itemByIndex = visibleItems[index];\n setSelectedItem(itemByIndex);\n },\n [visibleItems, setSelectedItem],\n );\n\n actions.setFocusedItemByVirtualIndex = useCallback(\n (index, opts = { align: 'start', withScroll: false }) => {\n const itemByIndex = visibleItems[index];\n const onItemFocusParams = {\n itemIndex: itemByIndex.virtualIndex as number,\n scrollToItem: () => scrollToIndex(index, opts),\n item: itemByIndex,\n };\n\n if (opts.withScroll && scrollToIndex) {\n scrollToIndex(index, opts);\n setTimeout(() => {\n setFocusedItem(itemByIndex);\n focusItem(itemByIndex);\n onItemFocus(onItemFocusParams);\n }, 300);\n } else {\n setFocusedItem(itemByIndex);\n focusItem(itemByIndex);\n onItemFocus(onItemFocusParams);\n }\n },\n [visibleItems, scrollToIndex, setFocusedItem, onItemFocus],\n );\n\n return actions;\n};\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AASO,MAAM,wBAAwB,CAAC,EAAE,WAAoC,QAAkC;AAC5G,QAAM;AAAA,IACJ,OAAO,EAAE;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE;AACJ,QAAM,EAAE,SAAS,aAAa,OAAqB;AACnD,QAAM,EAAE,kBAAkB,QAAQ,MAAM,oBAAoB,CAAC;AAC7D,QAAM,CAAC,eAAe,cAAc;AAEpC,YAAU,MAAM;AACd,QAAI,iBAAiB,SAAS,eAAe;AAC3C,eAAS,cAAc;AACvB,eAAS,gBAAgB;AACzB,iBAAW;AAAA;AAAA,KAEZ,CAAC,cAAc,eAAe;AAEjC,UAAQ,kBAAkB,YACxB,CAAC,aAAa;AACZ,UAAM,IAAI,IAAI,QAA4B,CAAC,YAAY;AACrD,eAAS,gBAAgB;AACzB,UAAI;AACF,8BAAsB,UAAU,UAAU,qBAAqB,sBAAsB;AAAA;AAEzF,eAAW;AACX,WAAO;AAAA,KAET,CAAC,UAAU,UAAU,qBAAqB,sBAAsB;AAElE,UAAQ,WAAW,YACjB,CAAC,MAAM,OAAO,EAAE,OAAO,cAAc;AACnC,QAAI;AAAe,oBAAc,MAAM;AAAA,KAEzC,CAAC;AAGH,UAAQ,gCAAgC,YACtC,CAAC,UAAU;AACT,UAAM,cAAc,aAAa;AACjC,oBAAgB;AAAA,KAElB,CAAC,cAAc;AAGjB,UAAQ,+BAA+B,YACrC,CAAC,OAAO,OAAO,EAAE,OAAO,SAAS,YAAY,YAAY;AACvD,UAAM,cAAc,aAAa;AACjC,UAAM,oBAAoB;AAAA,MACxB,WAAW,YAAY;AAAA,MACvB,cAAc,MAAM,cAAc,OAAO;AAAA,MACzC,MAAM;AAAA;AAGR,QAAI,KAAK,cAAc,eAAe;AACpC,oBAAc,OAAO;AACrB,iBAAW,MAAM;AACf,uBAAe;AACf,kBAAU;AACV,oBAAY;AAAA,SACX;AAAA,WACE;AACL,qBAAe;AACf,gBAAU;AACV,kBAAY;AAAA;AAAA,KAGhB,CAAC,cAAc,eAAe,gBAAgB;AAGhD,SAAO;AAAA;",
6
+ "names": []
7
+ }
@@ -1,91 +1,69 @@
1
- import 'core-js/modules/esnext.async-iterator.filter.js';
2
- import 'core-js/modules/esnext.iterator.constructor.js';
3
- import 'core-js/modules/esnext.iterator.filter.js';
4
- import 'core-js/modules/esnext.async-iterator.for-each.js';
5
- import 'core-js/modules/esnext.iterator.for-each.js';
6
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
7
- import 'core-js/modules/web.dom-collections.iterator.js';
8
- import { useMemo, useState, useEffect, useCallback } from 'react';
9
- import TreeModel from 'tree-model';
10
- import { cloneDeep } from 'lodash';
11
- import { enrichNodeModelInPlace, walkVisibles } from './tree-helpers.js';
12
- import { updateExpandedState } from './group-expands-helpers.js';
13
-
14
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
-
16
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1
+ import * as React from "react";
2
+ import { useState, useCallback, useMemo, useEffect } from "react";
3
+ import TreeModel from "tree-model";
4
+ import { cloneDeep } from "lodash";
5
+ import { walkVisibles, enrichNodeModelInPlace, flattenTreeForDnD } from "./tree-helpers";
6
+ import { updateExpandedState } from "./group-expands-helpers";
17
7
  const useTree = (data, props, states) => {
18
- const {
19
- setExpandedGroups
20
- } = states;
21
- const unfrozenData = useMemo(() => cloneDeep(data), [data]); // convert data into a TreeModel with extra isExpanded prop
22
- // root element type is an exception, children model is based on what the dev passed on
23
- // since root is an excepcion we must typecast
24
-
8
+ const { setExpandedGroups } = states;
9
+ const unfrozenData = useMemo(() => cloneDeep(data), [data]);
25
10
  const tree = useMemo(() => new TreeModel(), []);
26
11
  const [treeData, setTreeData] = useState({
27
- id: '__ds_tree_root',
28
- name: '__root',
12
+ id: "__ds_tree_root",
13
+ name: "__root",
29
14
  isExpanded: true,
30
15
  children: unfrozenData
31
16
  });
32
17
  useEffect(() => {
33
18
  setTreeData({
34
- id: '__ds_tree_root',
35
- name: '__root',
19
+ id: "__ds_tree_root",
20
+ name: "__root",
36
21
  isExpanded: true,
37
22
  children: unfrozenData
38
23
  });
39
- }, [unfrozenData]); // expose a way to rerender the tree
40
- // used for expand functionality
41
-
24
+ }, [unfrozenData]);
42
25
  const [rerenderItems, setRerenderItems] = useState({});
43
26
  const triggerTreeRerender = useCallback(() => {
44
27
  setRerenderItems({});
45
- }, []); // when re-rendering we re-parse the list
46
-
28
+ }, []);
47
29
  const [treeRoot, setTreeRoot] = useState(tree.parse(treeData));
48
30
  useEffect(() => {
49
31
  setTreeRoot(tree.parse(treeData));
50
32
  }, [treeData, rerenderItems, tree]);
51
33
  const [visibleItems, setVisibleItems] = useState([]);
52
- const {
53
- searchQuery,
54
- highlightOnlyQuery,
55
- onVisibleItemsChange,
56
- selection,
57
- expanded,
58
- onExpandChange
59
- } = props;
34
+ const { searchQuery, highlightOnlyQuery, onVisibleItemsChange, selection, expanded, onExpandChange } = props;
60
35
  const updateUserExpandedState = useCallback(() => {
61
36
  updateExpandedState(treeRoot, onExpandChange);
62
- }, [treeRoot, onExpandChange]); // we add missing properties to the received Items
63
- // not the best of the patterns, but it works
64
- // this is where we convert "SimpleItems" to "Items"
65
- // this was done to avoid breaking changes back in v1
66
-
37
+ }, [treeRoot, onExpandChange]);
67
38
  useEffect(() => {
68
39
  const parsedVisibleItems = [];
69
40
  const newExpandedHashMap = {};
70
- treeRoot.walk(node => {
71
- const shouldContinueWalking = true; // tree-model ask we return true if we want to continue walking
72
-
41
+ const shouldContinueWalking = true;
42
+ treeRoot.walk((node) => {
73
43
  enrichNodeModelInPlace(node, searchQuery, selection, expanded);
74
- if (node.model.id && node.model.isGroup && node.model.isExpanded) newExpandedHashMap[node.model.id] = true;
44
+ if (node.model.id && node.model.isGroup && node.model.isExpanded)
45
+ newExpandedHashMap[node.model.id] = true;
75
46
  return shouldContinueWalking;
76
47
  });
77
- walkVisibles(treeRoot, node => {
78
- parsedVisibleItems.push(_objectSpread(_objectSpread({}, node.model), {}, {
79
- node
80
- }));
48
+ walkVisibles(treeRoot, (node) => {
49
+ parsedVisibleItems.push({ ...node.model, node });
81
50
  }, true, highlightOnlyQuery);
82
51
  setVisibleItems(parsedVisibleItems);
83
52
  onVisibleItemsChange(parsedVisibleItems);
84
- setExpandedGroups(newExpandedHashMap); // eslint-disable-next-line react-hooks/exhaustive-deps
85
- }, [treeRoot, rerenderItems, searchQuery, highlightOnlyQuery, selection, expanded, setExpandedGroups // onVisibleItemsChange // evaluate potential performance hit?
53
+ setExpandedGroups(newExpandedHashMap);
54
+ }, [
55
+ treeRoot,
56
+ rerenderItems,
57
+ searchQuery,
58
+ highlightOnlyQuery,
59
+ selection,
60
+ expanded,
61
+ setExpandedGroups
86
62
  ]);
63
+ const flattenedItems = useMemo(() => flattenTreeForDnD(data), [data]);
87
64
  return {
88
65
  visibleItems,
66
+ flattenedItems,
89
67
  tree,
90
68
  treeRoot,
91
69
  rerenderItems,
@@ -93,5 +71,7 @@ const useTree = (data, props, states) => {
93
71
  updateUserExpandedState
94
72
  };
95
73
  };
96
-
97
- export { useTree };
74
+ export {
75
+ useTree
76
+ };
77
+ //# sourceMappingURL=useTree.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/utils/useTree.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useState, useCallback, useMemo, useEffect } from 'react';\nimport TreeModel from 'tree-model';\nimport { cloneDeep } from 'lodash';\n\nimport { walkVisibles, enrichNodeModelInPlace, flattenTreeForDnD } from './tree-helpers';\nimport type { DSTreeviewT } from '../react-desc-prop-types';\nimport type { DSTreeviewInternalsT } from '../sharedTypes';\nimport { updateExpandedState } from './group-expands-helpers';\n\nexport const useTree = (\n data: DSTreeviewT.SimpleItem[],\n props: DSTreeviewT.Props,\n states: {\n setExpandedGroups: DSTreeviewInternalsT.StateSetter<DSTreeviewT.ExpandedItems>;\n },\n) => {\n const { setExpandedGroups } = states;\n const unfrozenData = useMemo(() => cloneDeep(data), [data]);\n\n // convert data into a TreeModel with extra isExpanded prop\n // root element type is an exception, children model is based on what the dev passed on\n // since root is an excepcion we must typecast\n const tree = useMemo(() => new TreeModel(), []);\n const [treeData, setTreeData] = useState({\n id: '__ds_tree_root',\n name: '__root',\n isExpanded: true,\n children: unfrozenData,\n } as unknown as DSTreeviewT.Item);\n\n useEffect(() => {\n setTreeData({\n id: '__ds_tree_root',\n name: '__root',\n isExpanded: true,\n children: unfrozenData,\n } as unknown as DSTreeviewT.Item);\n }, [unfrozenData]);\n\n // expose a way to rerender the tree\n // used for expand functionality\n const [rerenderItems, setRerenderItems] = useState({});\n const triggerTreeRerender = useCallback(() => {\n setRerenderItems({});\n }, []);\n\n // when re-rendering we re-parse the list\n const [treeRoot, setTreeRoot] = useState(tree.parse(treeData));\n useEffect(() => {\n setTreeRoot(tree.parse(treeData));\n }, [treeData, rerenderItems, tree]);\n\n const [visibleItems, setVisibleItems] = useState<DSTreeviewT.Item[]>([]);\n\n const { searchQuery, highlightOnlyQuery, onVisibleItemsChange, selection, expanded, onExpandChange } = props;\n\n const updateUserExpandedState = useCallback(() => {\n updateExpandedState(treeRoot, onExpandChange);\n }, [treeRoot, onExpandChange]);\n // we add missing properties to the received Items\n // not the best of the patterns, but it works\n // this is where we convert \"SimpleItems\" to \"Items\"\n // this was done to avoid breaking changes back in v1\n useEffect(() => {\n const parsedVisibleItems: DSTreeviewT.Item[] = [];\n const newExpandedHashMap: DSTreeviewT.ExpandedItems = {};\n const shouldContinueWalking = true; // tree-model ask we return true if we want to continue walking\n treeRoot.walk((node) => {\n enrichNodeModelInPlace(node, searchQuery, selection, expanded);\n if (node.model.id && node.model.isGroup && node.model.isExpanded) newExpandedHashMap[node.model.id] = true;\n return shouldContinueWalking;\n });\n\n walkVisibles(\n treeRoot,\n (node) => {\n parsedVisibleItems.push({ ...node.model, node });\n },\n true,\n highlightOnlyQuery,\n );\n setVisibleItems(parsedVisibleItems);\n onVisibleItemsChange(parsedVisibleItems);\n\n setExpandedGroups(newExpandedHashMap);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n treeRoot,\n rerenderItems,\n searchQuery,\n highlightOnlyQuery,\n selection,\n expanded,\n setExpandedGroups,\n // onVisibleItemsChange // evaluate potential performance hit?\n ]);\n\n const flattenedItems = useMemo(() => flattenTreeForDnD(data), [data]);\n\n return {\n visibleItems,\n flattenedItems,\n tree,\n treeRoot,\n rerenderItems,\n triggerTreeRerender,\n updateUserExpandedState,\n };\n};\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AAEA;AAGA;AAEO,MAAM,UAAU,CACrB,MACA,OACA,WAGG;AACH,QAAM,EAAE,sBAAsB;AAC9B,QAAM,eAAe,QAAQ,MAAM,UAAU,OAAO,CAAC;AAKrD,QAAM,OAAO,QAAQ,MAAM,IAAI,aAAa;AAC5C,QAAM,CAAC,UAAU,eAAe,SAAS;AAAA,IACvC,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,UAAU;AAAA;AAGZ,YAAU,MAAM;AACd,gBAAY;AAAA,MACV,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,UAAU;AAAA;AAAA,KAEX,CAAC;AAIJ,QAAM,CAAC,eAAe,oBAAoB,SAAS;AACnD,QAAM,sBAAsB,YAAY,MAAM;AAC5C,qBAAiB;AAAA,KAChB;AAGH,QAAM,CAAC,UAAU,eAAe,SAAS,KAAK,MAAM;AACpD,YAAU,MAAM;AACd,gBAAY,KAAK,MAAM;AAAA,KACtB,CAAC,UAAU,eAAe;AAE7B,QAAM,CAAC,cAAc,mBAAmB,SAA6B;AAErE,QAAM,EAAE,aAAa,oBAAoB,sBAAsB,WAAW,UAAU,mBAAmB;AAEvG,QAAM,0BAA0B,YAAY,MAAM;AAChD,wBAAoB,UAAU;AAAA,KAC7B,CAAC,UAAU;AAKd,YAAU,MAAM;AACd,UAAM,qBAAyC;AAC/C,UAAM,qBAAgD;AACtD,UAAM,wBAAwB;AAC9B,aAAS,KAAK,CAAC,SAAS;AACtB,6BAAuB,MAAM,aAAa,WAAW;AACrD,UAAI,KAAK,MAAM,MAAM,KAAK,MAAM,WAAW,KAAK,MAAM;AAAY,2BAAmB,KAAK,MAAM,MAAM;AACtG,aAAO;AAAA;AAGT,iBACE,UACA,CAAC,SAAS;AACR,yBAAmB,KAAK,KAAK,KAAK,OAAO;AAAA,OAE3C,MACA;AAEF,oBAAgB;AAChB,yBAAqB;AAErB,sBAAkB;AAAA,KAEjB;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAIF,QAAM,iBAAiB,QAAQ,MAAM,kBAAkB,OAAO,CAAC;AAE/D,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;",
6
+ "names": []
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-treeview",
3
- "version": "2.2.0",
3
+ "version": "2.3.0-alpha.3",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - Tree View",
6
6
  "module": "./esm/index.js",
@@ -19,10 +19,6 @@
19
19
  "import": "./esm/utils/useInstanceRefActions.js",
20
20
  "require": "./cjs/utils/useInstanceRefActions.js"
21
21
  },
22
- "./utils/useDnDHelpers": {
23
- "import": "./esm/utils/useDnDHelpers.js",
24
- "require": "./cjs/utils/useDnDHelpers.js"
25
- },
26
22
  "./utils/tree-helpers": {
27
23
  "import": "./esm/utils/tree-helpers.js",
28
24
  "require": "./cjs/utils/tree-helpers.js"
@@ -51,10 +47,6 @@
51
47
  "import": "./esm/utils/group-expands-helpers.js",
52
48
  "require": "./cjs/utils/group-expands-helpers.js"
53
49
  },
54
- "./utils/dnd-helpers": {
55
- "import": "./esm/utils/dnd-helpers.js",
56
- "require": "./cjs/utils/dnd-helpers.js"
57
- },
58
50
  "./utils/array-helpers": {
59
51
  "import": "./esm/utils/array-helpers.js",
60
52
  "require": "./cjs/utils/array-helpers.js"
@@ -167,6 +159,14 @@
167
159
  "import": "./esm/parts/ExpandCaret.js",
168
160
  "require": "./cjs/parts/ExpandCaret.js"
169
161
  },
162
+ "./parts/DropIndicator": {
163
+ "import": "./esm/parts/DropIndicator.js",
164
+ "require": "./cjs/parts/DropIndicator.js"
165
+ },
166
+ "./parts/DnDHandle": {
167
+ "import": "./esm/parts/DnDHandle.js",
168
+ "require": "./cjs/parts/DnDHandle.js"
169
+ },
170
170
  "./parts/ChildrenCountDisplayer": {
171
171
  "import": "./esm/parts/ChildrenCountDisplayer.js",
172
172
  "require": "./cjs/parts/ChildrenCountDisplayer.js"
@@ -175,6 +175,22 @@
175
175
  "import": "./esm/parts/CheckboxSelectable.js",
176
176
  "require": "./cjs/parts/CheckboxSelectable.js"
177
177
  },
178
+ "./hoc/WithDnDSortableItemContext": {
179
+ "import": "./esm/hoc/WithDnDSortableItemContext.js",
180
+ "require": "./cjs/hoc/WithDnDSortableItemContext.js"
181
+ },
182
+ "./hoc/WithConditionalDnDContext": {
183
+ "import": "./esm/hoc/WithConditionalDnDContext.js",
184
+ "require": "./cjs/hoc/WithConditionalDnDContext.js"
185
+ },
186
+ "./hoc/SortableItemContext": {
187
+ "import": "./esm/hoc/SortableItemContext.js",
188
+ "require": "./cjs/hoc/SortableItemContext.js"
189
+ },
190
+ "./hoc/DnDTreeContext": {
191
+ "import": "./esm/hoc/DnDTreeContext.js",
192
+ "require": "./cjs/hoc/DnDTreeContext.js"
193
+ },
178
194
  "./config/useTreeview": {
179
195
  "import": "./esm/config/useTreeview.js",
180
196
  "require": "./cjs/config/useTreeview.js"
@@ -211,15 +227,15 @@
211
227
  "generateSubmodules": true
212
228
  },
213
229
  "dependencies": {
214
- "@elliemae/ds-button": "2.2.0",
215
- "@elliemae/ds-circular-progress-indicator": "2.2.0",
216
- "@elliemae/ds-classnames": "2.2.0",
217
- "@elliemae/ds-form": "2.2.0",
218
- "@elliemae/ds-icons": "2.2.0",
219
- "@elliemae/ds-props-helpers": "2.2.0",
220
- "@elliemae/ds-shared": "2.2.0",
221
- "@elliemae/ds-truncated-tooltip-text": "2.2.0",
222
- "@elliemae/ds-utilities": "2.2.0",
230
+ "@elliemae/ds-button": "2.3.0-alpha.3",
231
+ "@elliemae/ds-circular-progress-indicator": "2.3.0-alpha.3",
232
+ "@elliemae/ds-classnames": "2.3.0-alpha.3",
233
+ "@elliemae/ds-form": "2.3.0-alpha.3",
234
+ "@elliemae/ds-icons": "2.3.0-alpha.3",
235
+ "@elliemae/ds-props-helpers": "2.3.0-alpha.3",
236
+ "@elliemae/ds-shared": "2.3.0-alpha.3",
237
+ "@elliemae/ds-truncated-tooltip-text": "2.3.0-alpha.3",
238
+ "@elliemae/ds-utilities": "2.3.0-alpha.3",
223
239
  "@elliemae/react-sortable-hoc": "^1.0.0",
224
240
  "react-desc": "~4.1.3",
225
241
  "react-highlight-words": "~0.17.0",
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ import { DSTreeviewT } from '../react-desc-prop-types';
3
+ import { DropIndicatorPosition } from './SortableItemContext';
4
+ declare type DnDTreeContextType = {
5
+ depth: number | undefined;
6
+ activeIndex: number | undefined;
7
+ visibleItems: DSTreeviewT.Item[] | undefined;
8
+ dropIndicatorPosition: DropIndicatorPosition;
9
+ lastActiveId: string | undefined;
10
+ setLastActiveId: React.Dispatch<React.SetStateAction<string>> | undefined;
11
+ isDropValid: boolean;
12
+ };
13
+ export declare const DnDTreeContext: import("react").Context<DnDTreeContextType>;
14
+ export {};
@@ -0,0 +1,19 @@
1
+ /// <reference types="react" />
2
+ import { useSortable } from '@dnd-kit/sortable';
3
+ export declare enum DropIndicatorPosition {
4
+ None = 0,
5
+ Before = 1,
6
+ After = 2,
7
+ Inside = 3
8
+ }
9
+ export declare type SortableItemContextType = {
10
+ draggableProps: false | (ReturnType<typeof useSortable> & {
11
+ dropIndicatorPosition: DropIndicatorPosition;
12
+ shouldShowDropIndicatorPosition: boolean;
13
+ lastActiveId?: string;
14
+ setLastActiveId?: React.Dispatch<React.SetStateAction<string>>;
15
+ isDropValid: boolean;
16
+ });
17
+ };
18
+ /** Context for cross component communication */
19
+ export declare const SortableItemContext: import("react").Context<SortableItemContextType>;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ declare type FunctionalHOC = <T = unknown>(Component: React.ComponentType<T>, ...other: unknown[]) => (props: T) => JSX.Element;
3
+ export declare const withConditionalDnDRowContext: FunctionalHOC;
4
+ export {};
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ declare type FunctionalHOC = <T = unknown>(Component: React.ComponentType<T>, ...other: unknown[]) => (props: T) => JSX.Element;
3
+ export declare const withDnDSortableItemContext: FunctionalHOC;
4
+ export {};
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import { DSTreeviewT } from '../react-desc-prop-types';
3
+ export declare const DnDHandle: ({ id, isDragOverlay }: {
4
+ id: DSTreeviewT.StringOrNum;
5
+ isDragOverlay: boolean;
6
+ }) => JSX.Element;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { DropIndicatorPosition } from '../hoc/SortableItemContext';
3
+ interface DropIndicatorProps {
4
+ vertical?: boolean;
5
+ dropIndicatorPosition: DropIndicatorPosition | false;
6
+ isLast?: boolean;
7
+ isDropValid?: boolean;
8
+ }
9
+ declare const DropIndicator: React.ComponentType<DropIndicatorProps>;
10
+ export default DropIndicator;
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import React from 'react';
3
2
  import type { DSTreeviewT } from '../react-desc-prop-types';
4
3
  export declare const TreeListItem: React.ComponentType<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>>;
@@ -6,19 +5,13 @@ export declare const TreeListItemAddonsWrapper: React.ComponentType<{}>;
6
5
  interface PropsT {
7
6
  item: DSTreeviewT.Item;
8
7
  itemIndex: number;
9
- virtualItemRef: React.RefObject<HTMLLIElement>;
8
+ isDragOverlay?: boolean;
9
+ virtualItemRef?: React.RefObject<HTMLLIElement>;
10
10
  itemWrapperStyle?: {
11
11
  [key: string]: unknown;
12
12
  };
13
13
  spaceForNestingLevel?: number;
14
- onMouseDragOverItem?: (opts: {
15
- event: React.MouseEvent<HTMLLIElement>;
16
- item: DSTreeviewT.Item;
17
- itemIndex: number;
18
- setIsDraggingOverThis: React.Dispatch<React.SetStateAction<boolean>>;
19
- openFolderOnHoverTimeout: React.MutableRefObject<NodeJS.Timeout | null>;
20
- }) => void;
21
14
  }
22
15
  export declare const TreeItem: (props: PropsT) => JSX.Element;
23
- export declare const DragAndDropTreeItem: React.ComponentClass<PropsT & import("@elliemae/react-sortable-hoc").SortableElementProps, any>;
24
- export {};
16
+ declare const _default: (props: PropsT) => JSX.Element;
17
+ export default _default;
@@ -17,8 +17,4 @@ interface PropsT {
17
17
  }) => void;
18
18
  }
19
19
  export declare const TreeList: (props: PropsT) => JSX.Element;
20
- export declare const DragAndDropTreeList: React.ComponentClass<PropsT & {
21
- disableAnimation?: boolean | undefined;
22
- getContainer: (element: React.ReactElement<unknown>) => HTMLElement | Promise<HTMLElement>;
23
- } & import("@elliemae/react-sortable-hoc").SortableContainerProps, any>;
24
20
  export {};
@@ -1,3 +1 @@
1
- /// <reference types="react" />
2
- export declare const TreeDnD: () => JSX.Element;
3
1
  export declare const TreeDndPlugin = "tree-dnd";
@@ -13,7 +13,7 @@ export declare namespace DSTreeviewT {
13
13
  interface SimpleItem {
14
14
  [key: string]: unknown;
15
15
  name: string;
16
- children: SimpleItem[];
16
+ children?: SimpleItem[];
17
17
  id: StringOrNum;
18
18
  }
19
19
  interface Item extends SimpleItem {
@@ -27,9 +27,19 @@ export declare namespace DSTreeviewT {
27
27
  matchesSearchQuery?: boolean;
28
28
  nodeItemRef?: React.RefObject<HTMLLIElement>;
29
29
  model: TreeModel.Node<Item>['model'];
30
- node: TreeModel.Node<Item>;
30
+ node: TreeModel.Node<Item> & {
31
+ parent?: TreeModel.Node<Item>;
32
+ };
31
33
  nodePath: TreeModel.Node<Item>[];
32
34
  }
35
+ interface DndItem {
36
+ uid: string;
37
+ depth: number;
38
+ realIndex: number;
39
+ childrenCount: number;
40
+ parentId: string | null;
41
+ original: SimpleItem;
42
+ }
33
43
  interface Actions {
34
44
  toggleExpandAll: (isExpand: boolean) => Promise<DSTreeviewT.Item[]>;
35
45
  scrollTo: DSTreeviewT.ScrollToFunc;
@@ -50,6 +60,7 @@ export declare namespace DSTreeviewT {
50
60
  fluid: boolean;
51
61
  isMultiSelect: boolean;
52
62
  isSingleSelect: boolean;
63
+ getIsDropValid: (active: DndItem, over: DndItem, dropIndicatorPosition: 'none' | 'before' | 'after' | 'inside') => boolean;
53
64
  restrictDragAndDrop: boolean;
54
65
  showChildrenAmount: boolean;
55
66
  sortable: boolean;
@@ -62,7 +73,7 @@ export declare namespace DSTreeviewT {
62
73
  item: Item;
63
74
  }) => void;
64
75
  onVisibleItemsChange: (newVisibleItems: Item[]) => void;
65
- onOrderChange: (newData: Item[], oldData: Item[], draggedItem: Item) => void;
76
+ onOrderChange: (newData: SimpleItem[], oldData: SimpleItem[], draggedItem: DndItem) => void;
66
77
  onSelectionChange: (selection: SelectionItems, item: Item, meta: {
67
78
  scrollToItem: ScrollToItemFunc;
68
79
  itemIndex: number;
@@ -124,6 +135,9 @@ export declare const TreeViewPropTypes: {
124
135
  isLoading: {
125
136
  deprecated: import("react-desc").PropTypesDescValidator;
126
137
  };
138
+ getIsDropValid: {
139
+ deprecated: import("react-desc").PropTypesDescValidator;
140
+ };
127
141
  restrictDragAndDrop: {
128
142
  deprecated: import("react-desc").PropTypesDescValidator;
129
143
  };
@@ -19,22 +19,15 @@ export declare namespace DSTreeviewInternalsT {
19
19
  interface CTX {
20
20
  props: DSTreeviewT.Props;
21
21
  visibleItems: DSTreeviewT.Item[];
22
+ flattenedItems: DSTreeviewT.DndItem[];
22
23
  withRadioChecks: boolean;
23
24
  withCheckboxChecks: boolean;
24
25
  withDragAndDrop: boolean;
25
- relativeMouseCord: MouseCoord;
26
- setRelativeMouseCord: StateSetter<MouseCoord>;
27
26
  triggerTreeRerender: () => void;
28
27
  tree?: TreeModel;
29
28
  treeRoot?: TreeModel.Node<DSTreeviewT.Item>;
30
29
  virtualListHelpers: ReturnType<typeof useVirtual>;
31
30
  virtualListRef?: React.MutableRefObject<HTMLUListElement | undefined>;
32
- isDragging: boolean;
33
- setIsDragging: StateSetter<boolean>;
34
- isKeyboardDragging: boolean;
35
- setIsKeyboardDragging: StateSetter<boolean>;
36
- draggedItem: DSTreeviewT.Item | null;
37
- setDraggedItem: StateSetter<DSTreeviewT.Item | null>;
38
31
  uniqueTreeViewUUID: string;
39
32
  selectedItem: DSTreeviewT.Item | null;
40
33
  setSelectedItem: StateSetter<DSTreeviewT.Item | null>;
@@ -1,5 +1,6 @@
1
1
  import type { DSTreeviewT } from '../react-desc-prop-types';
2
2
  import type { DSTreeviewInternalsT } from '../sharedTypes';
3
- export declare const useOnItemKeyDown: (item: DSTreeviewT.Item) => (e: React.KeyboardEvent<HTMLLIElement>) => void;
3
+ import { SortableItemContextType } from '../hoc/SortableItemContext';
4
+ export declare const useOnItemKeyDown: (item: DSTreeviewT.Item, draggableProps: SortableItemContextType['draggableProps']) => (e: React.KeyboardEvent<HTMLLIElement>) => void;
4
5
  export declare const useGlobalKeyboardListener: (func: (e: KeyboardEvent) => void) => void;
5
6
  export declare const useGlobalToggleAllExpandShortcut: (treeRoot: DSTreeviewT.Item['node'], triggerTreeRerender: () => void, setLatestToggledItem: DSTreeviewInternalsT.CTX['setLatestToggledItem'], updateUserExpandedState: DSTreeviewInternalsT.CTX['updateUserExpandedState']) => void;
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
- declare type GenericMergeableRef = null | undefined | React.MutableRefObject<unknown> | ((ref: HTMLElement) => void);
2
+ declare type GenericMergeableRef = null | undefined | React.MutableRefObject<unknown> | ((ref: HTMLElement) => void) | false;
3
3
  export declare const setMultipleRefs: (...refs: GenericMergeableRef[]) => (ref: HTMLElement) => void;
4
4
  export {};
@@ -7,7 +7,9 @@ export declare const walkAllNodeChildren: (node: DSTreeviewT.Item['node'], callb
7
7
  export declare const getNodeById: (treeRoot: DSTreeviewT.Item['node'], id: DSTreeviewT.StringOrNum) => TreeModel.Node<DSTreeviewT.Item>;
8
8
  export declare const cloneNode: (tree: TreeModel, node: DSTreeviewT.Item) => TreeModel.Node<DSTreeviewT.Item>;
9
9
  export declare const itemsShareSameParent: (items?: DSTreeviewT.Item[]) => boolean;
10
- export declare const getItemsParentNode: (items?: DSTreeviewT.Item[], skipSameParentCheck?: boolean) => TreeModel.Node<DSTreeviewT.Item>;
10
+ export declare const getItemsParentNode: (items?: DSTreeviewT.Item[], skipSameParentCheck?: boolean) => TreeModel.Node<DSTreeviewT.Item> & {
11
+ parent?: TreeModel.Node<DSTreeviewT.Item> | undefined;
12
+ };
11
13
  export declare const getNodeMatchesSearchQuery: (node: DSTreeviewT.Item['node'], searchQuery?: string) => boolean;
12
14
  export declare const getChildrenMatchesSearchQuery: (parentNode: DSTreeviewT.Item['node'], searchQuery?: string) => boolean;
13
15
  /**
@@ -22,4 +24,5 @@ export declare const getChildrenMatchesSearchQuery: (parentNode: DSTreeviewT.Ite
22
24
  */
23
25
  export declare const enrichNodeModelInPlace: (node: TreeModel.Node<DSTreeviewT.SimpleItem>, searchQuery?: string, selection?: DSTreeviewT.SelectionItems | null, expanded?: DSTreeviewT.ExpandedItems | null) => void;
24
26
  export declare const focusItem: (item: DSTreeviewT.Item | null) => void;
27
+ export declare const flattenTreeForDnD: (data: DSTreeviewT.SimpleItem[], shouldDescend?: (datum: DSTreeviewT.SimpleItem) => boolean) => DSTreeviewT.DndItem[];
25
28
  export {};
@@ -5,6 +5,7 @@ export declare const useTree: (data: DSTreeviewT.SimpleItem[], props: DSTreeview
5
5
  setExpandedGroups: DSTreeviewInternalsT.StateSetter<DSTreeviewT.ExpandedItems>;
6
6
  }) => {
7
7
  visibleItems: DSTreeviewT.Item[];
8
+ flattenedItems: DSTreeviewT.DndItem[];
8
9
  tree: TreeModel;
9
10
  treeRoot: TreeModel.Node<DSTreeviewT.Item>;
10
11
  rerenderItems: {};