@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.
- package/cjs/TreeView.js +47 -31
- package/cjs/TreeView.js.map +7 -0
- package/cjs/TreeViewContext.js +55 -43
- package/cjs/TreeViewContext.js.map +7 -0
- package/cjs/config/cssClassesConstants.js +41 -13
- package/cjs/config/cssClassesConstants.js.map +7 -0
- package/cjs/config/useTreeview.js +102 -88
- package/cjs/config/useTreeview.js.map +7 -0
- package/cjs/hoc/DnDTreeContext.js +45 -0
- package/cjs/hoc/DnDTreeContext.js.map +7 -0
- package/cjs/hoc/SortableItemContext.js +46 -0
- package/cjs/hoc/SortableItemContext.js.map +7 -0
- package/cjs/hoc/WithConditionalDnDContext.js +128 -0
- package/cjs/hoc/WithConditionalDnDContext.js.map +7 -0
- package/cjs/hoc/WithDnDSortableItemContext.js +69 -0
- package/cjs/hoc/WithDnDSortableItemContext.js.map +7 -0
- package/cjs/index.js +37 -27
- package/cjs/index.js.map +7 -0
- package/cjs/parts/CheckboxSelectable.js +70 -59
- package/cjs/parts/CheckboxSelectable.js.map +7 -0
- package/cjs/parts/ChildrenCountDisplayer.js +45 -28
- package/cjs/parts/ChildrenCountDisplayer.js.map +7 -0
- package/cjs/parts/DnDHandle.js +57 -0
- package/cjs/parts/DnDHandle.js.map +7 -0
- package/cjs/parts/DropIndicator.js +80 -0
- package/cjs/parts/DropIndicator.js.map +7 -0
- package/cjs/parts/ExpandCaret.js +85 -83
- package/cjs/parts/ExpandCaret.js.map +7 -0
- package/cjs/parts/Icon.js +46 -31
- package/cjs/parts/Icon.js.map +7 -0
- package/cjs/parts/NestingSpace.js +43 -35
- package/cjs/parts/NestingSpace.js.map +7 -0
- package/cjs/parts/RadioSelectable.js +52 -37
- package/cjs/parts/RadioSelectable.js.map +7 -0
- package/cjs/parts/TreeItem.js +121 -165
- package/cjs/parts/TreeItem.js.map +7 -0
- package/cjs/parts/TreeItemText.js +88 -95
- package/cjs/parts/TreeItemText.js.map +7 -0
- package/cjs/parts/TreeList.js +114 -132
- package/cjs/parts/TreeList.js.map +7 -0
- package/cjs/plugins/dnd/TreeDndPlugin.js +34 -43
- package/cjs/plugins/dnd/TreeDndPlugin.js.map +7 -0
- package/cjs/plugins/dnd/index.js +28 -10
- package/cjs/plugins/dnd/index.js.map +7 -0
- package/cjs/plugins/index.js +34 -22
- package/cjs/plugins/index.js.map +7 -0
- package/cjs/plugins/roving/TreeRovingPlugin.js +35 -7
- package/cjs/plugins/roving/TreeRovingPlugin.js.map +7 -0
- package/cjs/plugins/roving/index.js +28 -9
- package/cjs/plugins/roving/index.js.map +7 -0
- package/cjs/plugins/searchable/SearchableTreePlugin.js +35 -7
- package/cjs/plugins/searchable/SearchableTreePlugin.js.map +7 -0
- package/cjs/plugins/searchable/index.js +28 -9
- package/cjs/plugins/searchable/index.js.map +7 -0
- package/cjs/plugins/selectable/SelectablePluginTree.js +35 -7
- package/cjs/plugins/selectable/SelectablePluginTree.js.map +7 -0
- package/cjs/plugins/selectable/index.js +28 -9
- package/cjs/plugins/selectable/index.js.map +7 -0
- package/cjs/plugins/toolbar/TreeToolbarPlugin.js +35 -7
- package/cjs/plugins/toolbar/TreeToolbarPlugin.js.map +7 -0
- package/cjs/plugins/toolbar/index.js +28 -9
- package/cjs/plugins/toolbar/index.js.map +7 -0
- package/cjs/plugins/tree/TreeDataPlugin.js +35 -7
- package/cjs/plugins/tree/TreeDataPlugin.js.map +7 -0
- package/cjs/plugins/tree/index.js +28 -9
- package/cjs/plugins/tree/index.js.map +7 -0
- package/cjs/plugins/virtualization/TreeVirtualizationPlugin.js +35 -7
- package/cjs/plugins/virtualization/TreeVirtualizationPlugin.js.map +7 -0
- package/cjs/plugins/virtualization/index.js +28 -9
- package/cjs/plugins/virtualization/index.js.map +7 -0
- package/cjs/react-desc-prop-types.js +83 -53
- package/cjs/react-desc-prop-types.js.map +7 -0
- package/cjs/related-components/TreeViewSearchBar.js +42 -40
- package/cjs/related-components/TreeViewSearchBar.js.map +7 -0
- package/cjs/sharedTypes.js +27 -2
- package/cjs/sharedTypes.js.map +7 -0
- package/cjs/utils/array-helpers.js +35 -11
- package/cjs/utils/array-helpers.js.map +7 -0
- package/cjs/utils/group-expands-helpers.js +86 -59
- package/cjs/utils/group-expands-helpers.js.map +7 -0
- package/cjs/utils/keyboard-helpers.js +86 -90
- package/cjs/utils/keyboard-helpers.js.map +7 -0
- package/cjs/utils/object-helpers.js +43 -36
- package/cjs/utils/object-helpers.js.map +7 -0
- package/cjs/utils/refs-helpers.js +43 -22
- package/cjs/utils/refs-helpers.js.map +7 -0
- package/cjs/utils/selectable-helper.js +61 -53
- package/cjs/utils/selectable-helper.js.map +7 -0
- package/cjs/utils/string-helpers.js +35 -7
- package/cjs/utils/string-helpers.js.map +7 -0
- package/cjs/utils/tree-helpers.js +125 -135
- package/cjs/utils/tree-helpers.js.map +7 -0
- package/cjs/utils/useInstanceRefActions.js +54 -43
- package/cjs/utils/useInstanceRefActions.js.map +7 -0
- package/cjs/utils/useTree.js +78 -78
- package/cjs/utils/useTree.js.map +7 -0
- package/esm/TreeView.js +16 -20
- package/esm/TreeView.js.map +7 -0
- package/esm/TreeViewContext.js +26 -37
- package/esm/TreeViewContext.js.map +7 -0
- package/esm/config/cssClassesConstants.js +12 -6
- package/esm/config/cssClassesConstants.js.map +7 -0
- package/esm/config/useTreeview.js +59 -66
- package/esm/config/useTreeview.js.map +7 -0
- package/esm/hoc/DnDTreeContext.js +16 -0
- package/esm/hoc/DnDTreeContext.js.map +7 -0
- package/esm/hoc/SortableItemContext.js +17 -0
- package/esm/hoc/SortableItemContext.js.map +7 -0
- package/esm/hoc/WithConditionalDnDContext.js +99 -0
- package/esm/hoc/WithConditionalDnDContext.js.map +7 -0
- package/esm/hoc/WithDnDSortableItemContext.js +40 -0
- package/esm/hoc/WithDnDSortableItemContext.js.map +7 -0
- package/esm/index.js +8 -9
- package/esm/index.js.map +7 -0
- package/esm/parts/CheckboxSelectable.js +36 -46
- package/esm/parts/CheckboxSelectable.js.map +7 -0
- package/esm/parts/ChildrenCountDisplayer.js +16 -20
- package/esm/parts/ChildrenCountDisplayer.js.map +7 -0
- package/esm/parts/DnDHandle.js +28 -0
- package/esm/parts/DnDHandle.js.map +7 -0
- package/esm/parts/DropIndicator.js +51 -0
- package/esm/parts/DropIndicator.js.map +7 -0
- package/esm/parts/ExpandCaret.js +54 -72
- package/esm/parts/ExpandCaret.js.map +7 -0
- package/esm/parts/Icon.js +16 -22
- package/esm/parts/Icon.js.map +7 -0
- package/esm/parts/NestingSpace.js +14 -27
- package/esm/parts/NestingSpace.js.map +7 -0
- package/esm/parts/RadioSelectable.js +20 -28
- package/esm/parts/RadioSelectable.js.map +7 -0
- package/esm/parts/TreeItem.js +89 -150
- package/esm/parts/TreeItem.js.map +7 -0
- package/esm/parts/TreeItemText.js +58 -85
- package/esm/parts/TreeItemText.js.map +7 -0
- package/esm/parts/TreeList.js +86 -120
- package/esm/parts/TreeList.js.map +7 -0
- package/esm/plugins/dnd/TreeDndPlugin.js +5 -34
- package/esm/plugins/dnd/TreeDndPlugin.js.map +7 -0
- package/esm/plugins/dnd/index.js +3 -1
- package/esm/plugins/dnd/index.js.map +7 -0
- package/esm/plugins/index.js +9 -7
- package/esm/plugins/index.js.map +7 -0
- package/esm/plugins/roving/TreeRovingPlugin.js +6 -3
- package/esm/plugins/roving/TreeRovingPlugin.js.map +7 -0
- package/esm/plugins/roving/index.js +3 -1
- package/esm/plugins/roving/index.js.map +7 -0
- package/esm/plugins/searchable/SearchableTreePlugin.js +6 -3
- package/esm/plugins/searchable/SearchableTreePlugin.js.map +7 -0
- package/esm/plugins/searchable/index.js +3 -1
- package/esm/plugins/searchable/index.js.map +7 -0
- package/esm/plugins/selectable/SelectablePluginTree.js +6 -3
- package/esm/plugins/selectable/SelectablePluginTree.js.map +7 -0
- package/esm/plugins/selectable/index.js +3 -1
- package/esm/plugins/selectable/index.js.map +7 -0
- package/esm/plugins/toolbar/TreeToolbarPlugin.js +6 -3
- package/esm/plugins/toolbar/TreeToolbarPlugin.js.map +7 -0
- package/esm/plugins/toolbar/index.js +3 -1
- package/esm/plugins/toolbar/index.js.map +7 -0
- package/esm/plugins/tree/TreeDataPlugin.js +6 -3
- package/esm/plugins/tree/TreeDataPlugin.js.map +7 -0
- package/esm/plugins/tree/index.js +3 -1
- package/esm/plugins/tree/index.js.map +7 -0
- package/esm/plugins/virtualization/TreeVirtualizationPlugin.js +6 -3
- package/esm/plugins/virtualization/TreeVirtualizationPlugin.js.map +7 -0
- package/esm/plugins/virtualization/index.js +3 -1
- package/esm/plugins/virtualization/index.js.map +7 -0
- package/esm/react-desc-prop-types.js +48 -43
- package/esm/react-desc-prop-types.js.map +7 -0
- package/esm/related-components/TreeViewSearchBar.js +13 -32
- package/esm/related-components/TreeViewSearchBar.js.map +7 -0
- package/esm/sharedTypes.js +2 -1
- package/esm/sharedTypes.js.map +7 -0
- package/esm/utils/array-helpers.js +6 -6
- package/esm/utils/array-helpers.js.map +7 -0
- package/esm/utils/group-expands-helpers.js +56 -46
- package/esm/utils/group-expands-helpers.js.map +7 -0
- package/esm/utils/keyboard-helpers.js +47 -74
- package/esm/utils/keyboard-helpers.js.map +7 -0
- package/esm/utils/object-helpers.js +14 -31
- package/esm/utils/object-helpers.js.map +7 -0
- package/esm/utils/refs-helpers.js +15 -19
- package/esm/utils/refs-helpers.js.map +7 -0
- package/esm/utils/selectable-helper.js +32 -43
- package/esm/utils/selectable-helper.js.map +7 -0
- package/esm/utils/string-helpers.js +6 -3
- package/esm/utils/string-helpers.js.map +7 -0
- package/esm/utils/tree-helpers.js +94 -119
- package/esm/utils/tree-helpers.js.map +7 -0
- package/esm/utils/useInstanceRefActions.js +21 -35
- package/esm/utils/useInstanceRefActions.js.map +7 -0
- package/esm/utils/useTree.js +37 -57
- package/esm/utils/useTree.js.map +7 -0
- package/package.json +34 -18
- package/types/hoc/DnDTreeContext.d.ts +14 -0
- package/types/hoc/SortableItemContext.d.ts +19 -0
- package/types/hoc/WithConditionalDnDContext.d.ts +4 -0
- package/types/hoc/WithDnDSortableItemContext.d.ts +4 -0
- package/types/parts/DnDHandle.d.ts +6 -0
- package/types/parts/DropIndicator.d.ts +10 -0
- package/types/parts/TreeItem.d.ts +4 -11
- package/types/parts/TreeList.d.ts +0 -4
- package/types/plugins/dnd/TreeDndPlugin.d.ts +0 -2
- package/types/react-desc-prop-types.d.ts +17 -3
- package/types/sharedTypes.d.ts +1 -8
- package/types/utils/keyboard-helpers.d.ts +2 -1
- package/types/utils/refs-helpers.d.ts +1 -1
- package/types/utils/tree-helpers.d.ts +4 -1
- package/types/utils/useTree.d.ts +1 -0
- package/cjs/utils/dnd-helpers.js +0 -140
- package/cjs/utils/useDnDHelpers.js +0 -220
- package/esm/utils/dnd-helpers.js +0 -132
- package/esm/utils/useDnDHelpers.js +0 -216
- package/types/utils/dnd-helpers.d.ts +0 -39
- package/types/utils/useDnDHelpers.d.ts +0 -26
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { focusItem } from
|
|
4
|
-
import { toggleExpandAllHelper } from
|
|
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
|
-
|
|
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)
|
|
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(
|
|
46
|
-
|
|
47
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
+
}
|
package/esm/utils/useTree.js
CHANGED
|
@@ -1,91 +1,69 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
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
|
-
|
|
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:
|
|
28
|
-
name:
|
|
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:
|
|
35
|
-
name:
|
|
19
|
+
id: "__ds_tree_root",
|
|
20
|
+
name: "__root",
|
|
36
21
|
isExpanded: true,
|
|
37
22
|
children: unfrozenData
|
|
38
23
|
});
|
|
39
|
-
}, [unfrozenData]);
|
|
40
|
-
// used for expand functionality
|
|
41
|
-
|
|
24
|
+
}, [unfrozenData]);
|
|
42
25
|
const [rerenderItems, setRerenderItems] = useState({});
|
|
43
26
|
const triggerTreeRerender = useCallback(() => {
|
|
44
27
|
setRerenderItems({});
|
|
45
|
-
}, []);
|
|
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]);
|
|
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
|
-
|
|
71
|
-
|
|
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)
|
|
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(
|
|
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);
|
|
85
|
-
}, [
|
|
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
|
-
|
|
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.
|
|
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.
|
|
215
|
-
"@elliemae/ds-circular-progress-indicator": "2.
|
|
216
|
-
"@elliemae/ds-classnames": "2.
|
|
217
|
-
"@elliemae/ds-form": "2.
|
|
218
|
-
"@elliemae/ds-icons": "2.
|
|
219
|
-
"@elliemae/ds-props-helpers": "2.
|
|
220
|
-
"@elliemae/ds-shared": "2.
|
|
221
|
-
"@elliemae/ds-truncated-tooltip-text": "2.
|
|
222
|
-
"@elliemae/ds-utilities": "2.
|
|
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,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
|
-
|
|
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
|
-
|
|
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 {};
|
|
@@ -13,7 +13,7 @@ export declare namespace DSTreeviewT {
|
|
|
13
13
|
interface SimpleItem {
|
|
14
14
|
[key: string]: unknown;
|
|
15
15
|
name: string;
|
|
16
|
-
children
|
|
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:
|
|
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
|
};
|
package/types/sharedTypes.d.ts
CHANGED
|
@@ -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
|
-
|
|
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 {};
|
package/types/utils/useTree.d.ts
CHANGED
|
@@ -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: {};
|