react-native-tree-multi-select 1.4.1 → 1.5.0-beta.2
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/README.md +12 -1
- package/lib/commonjs/TreeView.js +4 -0
- package/lib/commonjs/TreeView.js.map +1 -1
- package/lib/commonjs/components/NodeList.js +1 -1
- package/lib/commonjs/helpers/flattenTree.helper.js +2 -2
- package/lib/commonjs/helpers/toggleCheckbox.helper.js +80 -71
- package/lib/commonjs/helpers/toggleCheckbox.helper.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/store/treeView.store.js +16 -1
- package/lib/commonjs/store/treeView.store.js.map +1 -1
- package/lib/module/TreeView.js +4 -0
- package/lib/module/TreeView.js.map +1 -1
- package/lib/module/components/NodeList.js +1 -1
- package/lib/module/helpers/flattenTree.helper.js +2 -2
- package/lib/module/helpers/toggleCheckbox.helper.js +80 -71
- package/lib/module/helpers/toggleCheckbox.helper.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/store/treeView.store.js +16 -1
- package/lib/module/store/treeView.store.js.map +1 -1
- package/lib/typescript/TreeView.d.ts.map +1 -1
- package/lib/typescript/helpers/flattenTree.helper.d.ts +1 -1
- package/lib/typescript/helpers/toggleCheckbox.helper.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +2 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/store/treeView.store.d.ts +3 -1
- package/lib/typescript/store/treeView.store.d.ts.map +1 -1
- package/lib/typescript/types/treeView.types.d.ts +5 -0
- package/lib/typescript/types/treeView.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/TreeView.tsx +9 -0
- package/src/components/NodeList.tsx +1 -1
- package/src/helpers/flattenTree.helper.ts +2 -2
- package/src/helpers/toggleCheckbox.helper.ts +82 -74
- package/src/index.tsx +4 -2
- package/src/store/treeView.store.ts +18 -1
- package/src/types/treeView.types.ts +7 -0
|
@@ -16,8 +16,13 @@ export function toggleCheckboxes(ids, forceCheck) {
|
|
|
16
16
|
indeterminate,
|
|
17
17
|
updateIndeterminate,
|
|
18
18
|
nodeMap,
|
|
19
|
-
childToParentMap
|
|
19
|
+
childToParentMap,
|
|
20
|
+
selectionPropagation
|
|
20
21
|
} = useTreeViewStore.getState();
|
|
22
|
+
const {
|
|
23
|
+
toChildren,
|
|
24
|
+
toParents
|
|
25
|
+
} = selectionPropagation;
|
|
21
26
|
|
|
22
27
|
// Create new sets for checked and indeterminate state so as not to mutate the original state.
|
|
23
28
|
const tempChecked = new Set(checked);
|
|
@@ -27,28 +32,6 @@ export function toggleCheckboxes(ids, forceCheck) {
|
|
|
27
32
|
const memoAllDescendantsChecked = new Map();
|
|
28
33
|
const memoAnyDescendantsChecked = new Map();
|
|
29
34
|
|
|
30
|
-
/**
|
|
31
|
-
* Recursive function to check/uncheck a node and all its children.
|
|
32
|
-
* @param {string} nodeId - The id of the node to be checked or unchecked.
|
|
33
|
-
* @param {boolean} isChecked - Whether the node should be checked or unchecked.
|
|
34
|
-
*/
|
|
35
|
-
const toggleNodeAndChildren = (nodeId, isChecked) => {
|
|
36
|
-
// Set or unset this node in the checked set, and remove it from the indeterminate set.
|
|
37
|
-
if (isChecked) {
|
|
38
|
-
tempChecked.add(nodeId);
|
|
39
|
-
tempIndeterminate.delete(nodeId);
|
|
40
|
-
} else {
|
|
41
|
-
tempChecked.delete(nodeId);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// Get the node from the node map and recursively apply the same state to all its children.
|
|
45
|
-
const node = nodeMap.get(nodeId);
|
|
46
|
-
node?.children?.forEach(childNode => {
|
|
47
|
-
if (isChecked) tempIndeterminate.delete(childNode.id);
|
|
48
|
-
toggleNodeAndChildren(childNode.id, isChecked);
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
|
|
52
35
|
/**
|
|
53
36
|
* Recursive function to check if all descendants of a node are checked.
|
|
54
37
|
* It uses memoization to avoid redundant calculations.
|
|
@@ -78,8 +61,8 @@ export function toggleCheckboxes(ids, forceCheck) {
|
|
|
78
61
|
};
|
|
79
62
|
|
|
80
63
|
/**
|
|
81
|
-
*
|
|
82
|
-
* It uses memoization to avoid redundant calculations.
|
|
64
|
+
* Updated function to check if any descendants of a node are checked.
|
|
65
|
+
* It uses memoization to avoid redundant calculations and avoids unnecessarily deep recursion.
|
|
83
66
|
* @param {string} nodeId - The id of the node to be checked.
|
|
84
67
|
* @returns {boolean} - Whether any descendants of the node are checked.
|
|
85
68
|
*/
|
|
@@ -91,9 +74,12 @@ export function toggleCheckboxes(ids, forceCheck) {
|
|
|
91
74
|
const node = nodeMap.get(nodeId);
|
|
92
75
|
let anyChecked = false;
|
|
93
76
|
if (node?.children) {
|
|
94
|
-
//
|
|
77
|
+
// Check if any direct child is checked, without requiring all descendants.
|
|
95
78
|
for (const childNode of node.children) {
|
|
96
|
-
|
|
79
|
+
if (tempChecked.has(childNode.id) || areAnyDescendantsChecked(childNode.id)) {
|
|
80
|
+
anyChecked = true;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
97
83
|
}
|
|
98
84
|
} else {
|
|
99
85
|
// If the node has no children, its state is equal to whether it is in the checked set.
|
|
@@ -105,58 +91,81 @@ export function toggleCheckboxes(ids, forceCheck) {
|
|
|
105
91
|
return anyChecked;
|
|
106
92
|
};
|
|
107
93
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
tempChecked.add(nodeId);
|
|
118
|
-
tempIndeterminate.delete(nodeId);
|
|
119
|
-
} else if (areAnyDescendantsChecked(nodeId)) {
|
|
120
|
-
// Condition to check if all direct children and all descendants are checked.
|
|
121
|
-
|
|
122
|
-
/*
|
|
123
|
-
istanbul ignore next
|
|
124
|
-
|
|
125
|
-
NOTE: Below 2 lines in the condition are not covered in unit test
|
|
126
|
-
This condition will only be true if for some reason areAllDescendantsChecked(nodeId)
|
|
127
|
-
is false, while node?.children && node.children.every(childNode => areAllDescendantsChecked(childNode.id))
|
|
128
|
-
is true. Given the current logic of areAllDescendantsChecked,
|
|
129
|
-
this scenario is very unlikely to occur.
|
|
130
|
-
*/
|
|
131
|
-
if (node?.children && node.children.every(childNode => areAllDescendantsChecked(childNode.id))) {
|
|
132
|
-
// If a node's all direct children and all descendants are checked,
|
|
133
|
-
// remove this node from both checked and indeterminate sets.
|
|
134
|
-
tempChecked.delete(nodeId);
|
|
135
|
-
tempIndeterminate.delete(nodeId);
|
|
136
|
-
} else {
|
|
137
|
-
tempChecked.delete(nodeId);
|
|
138
|
-
tempIndeterminate.add(nodeId);
|
|
94
|
+
// Toggle the clicked nodes and their children.
|
|
95
|
+
ids.forEach(id => {
|
|
96
|
+
const isChecked = tempChecked.has(id);
|
|
97
|
+
const newCheckedState = forceCheck === undefined ? !isChecked : forceCheck;
|
|
98
|
+
if (newCheckedState) {
|
|
99
|
+
tempChecked.add(id);
|
|
100
|
+
tempIndeterminate.delete(id);
|
|
101
|
+
if (toChildren) {
|
|
102
|
+
recursivelyUpdateChildren(id, true);
|
|
139
103
|
}
|
|
140
104
|
} else {
|
|
141
|
-
tempChecked.delete(
|
|
142
|
-
tempIndeterminate.delete(
|
|
105
|
+
tempChecked.delete(id);
|
|
106
|
+
tempIndeterminate.delete(id);
|
|
107
|
+
if (toChildren) {
|
|
108
|
+
recursivelyUpdateChildren(id, false);
|
|
109
|
+
}
|
|
143
110
|
}
|
|
144
|
-
};
|
|
145
111
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
112
|
+
// Skip updating parent nodes if toParents is false
|
|
113
|
+
if (toParents) {
|
|
114
|
+
updateParentNodes(id);
|
|
115
|
+
}
|
|
150
116
|
});
|
|
151
117
|
|
|
152
|
-
//
|
|
153
|
-
|
|
154
|
-
|
|
118
|
+
// Function to recursively update children nodes as per childrenChecked value
|
|
119
|
+
function recursivelyUpdateChildren(nodeId, childrenChecked) {
|
|
120
|
+
const node = nodeMap.get(nodeId);
|
|
121
|
+
if (node && node.children) {
|
|
122
|
+
node.children.forEach(childNode => {
|
|
123
|
+
if (childrenChecked) {
|
|
124
|
+
tempChecked.add(childNode.id);
|
|
125
|
+
tempIndeterminate.delete(childNode.id);
|
|
126
|
+
} else {
|
|
127
|
+
tempChecked.delete(childNode.id);
|
|
128
|
+
tempIndeterminate.delete(childNode.id);
|
|
129
|
+
}
|
|
130
|
+
recursivelyUpdateChildren(childNode.id, childrenChecked);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Function to update parent nodes
|
|
136
|
+
function updateParentNodes(nodeId) {
|
|
137
|
+
let currentNodeId = nodeId;
|
|
155
138
|
while (currentNodeId) {
|
|
156
|
-
|
|
157
|
-
|
|
139
|
+
const parentNodeId = childToParentMap.get(currentNodeId);
|
|
140
|
+
if (parentNodeId) {
|
|
141
|
+
if (tempChecked.has(parentNodeId)) {
|
|
142
|
+
// If the parent node is currently checked, but not all child nodes are checked,
|
|
143
|
+
// move the parent node to an indeterminate state
|
|
144
|
+
if (!areAllDescendantsChecked(parentNodeId)) {
|
|
145
|
+
tempChecked.delete(parentNodeId);
|
|
146
|
+
tempIndeterminate.add(parentNodeId);
|
|
147
|
+
}
|
|
148
|
+
} else if (tempIndeterminate.has(parentNodeId)) {
|
|
149
|
+
// If the parent node is currently in an indeterminate state,
|
|
150
|
+
// then check if all descendants are checked
|
|
151
|
+
if (areAllDescendantsChecked(parentNodeId)) {
|
|
152
|
+
tempIndeterminate.delete(parentNodeId);
|
|
153
|
+
tempChecked.add(parentNodeId);
|
|
154
|
+
} else if (!areAnyDescendantsChecked(parentNodeId)) {
|
|
155
|
+
// If no descendants are checked, remove from indeterminate set
|
|
156
|
+
tempIndeterminate.delete(parentNodeId);
|
|
157
|
+
}
|
|
158
|
+
} else {
|
|
159
|
+
// If the parent node is not checked or indeterminate,
|
|
160
|
+
// check if any descendants are checked and update appropriately
|
|
161
|
+
if (areAnyDescendantsChecked(parentNodeId)) {
|
|
162
|
+
tempIndeterminate.add(parentNodeId);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
currentNodeId = parentNodeId;
|
|
158
167
|
}
|
|
159
|
-
}
|
|
168
|
+
}
|
|
160
169
|
|
|
161
170
|
// Update the state object with the new checked and indeterminate sets.
|
|
162
171
|
updateChecked(tempChecked);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useTreeViewStore","toggleCheckboxes","ids","forceCheck","checked","updateChecked","indeterminate","updateIndeterminate","nodeMap","childToParentMap","getState","tempChecked","Set","tempIndeterminate","memoAllDescendantsChecked","Map","memoAnyDescendantsChecked","
|
|
1
|
+
{"version":3,"names":["useTreeViewStore","toggleCheckboxes","ids","forceCheck","checked","updateChecked","indeterminate","updateIndeterminate","nodeMap","childToParentMap","selectionPropagation","getState","toChildren","toParents","tempChecked","Set","tempIndeterminate","memoAllDescendantsChecked","Map","memoAnyDescendantsChecked","areAllDescendantsChecked","nodeId","has","get","node","allChecked","children","childNode","id","set","areAnyDescendantsChecked","anyChecked","forEach","isChecked","newCheckedState","undefined","add","delete","recursivelyUpdateChildren","updateParentNodes","childrenChecked","currentNodeId","parentNodeId"],"sourceRoot":"../../../src","sources":["helpers/toggleCheckbox.helper.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAaA,cAAc,YAAY;AAC1B,cAAc,2BAA2B;AAAC","ignoreList":[]}
|
|
@@ -38,6 +38,17 @@ export const useTreeViewStore = create(set => ({
|
|
|
38
38
|
updateInnerMostChildrenIds: innerMostChildrenIds => set({
|
|
39
39
|
innerMostChildrenIds
|
|
40
40
|
}),
|
|
41
|
+
selectionPropagation: {
|
|
42
|
+
toChildren: true,
|
|
43
|
+
toParents: true
|
|
44
|
+
},
|
|
45
|
+
setSelectionPropagation: selectionPropagation => set({
|
|
46
|
+
selectionPropagation: {
|
|
47
|
+
// Default selection propagation for parent and children to true if not mentioned
|
|
48
|
+
toChildren: selectionPropagation.toChildren ?? true,
|
|
49
|
+
toParents: selectionPropagation.toParents ?? true
|
|
50
|
+
}
|
|
51
|
+
}),
|
|
41
52
|
cleanUpTreeViewStore: () => set({
|
|
42
53
|
checked: new Set(),
|
|
43
54
|
indeterminate: new Set(),
|
|
@@ -47,7 +58,11 @@ export const useTreeViewStore = create(set => ({
|
|
|
47
58
|
childToParentMap: new Map(),
|
|
48
59
|
searchText: "",
|
|
49
60
|
searchKeys: [""],
|
|
50
|
-
innerMostChildrenIds: []
|
|
61
|
+
innerMostChildrenIds: [],
|
|
62
|
+
selectionPropagation: {
|
|
63
|
+
toChildren: true,
|
|
64
|
+
toParents: true
|
|
65
|
+
}
|
|
51
66
|
})
|
|
52
67
|
}));
|
|
53
68
|
//# sourceMappingURL=treeView.store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["create","useTreeViewStore","set","checked","Set","updateChecked","indeterminate","updateIndeterminate","expanded","updateExpanded","initialTreeViewData","updateInitialTreeViewData","nodeMap","Map","updateNodeMap","childToParentMap","updateChildToParentMap","searchText","updateSearchText","searchKeys","updateSearchKeys","innerMostChildrenIds","updateInnerMostChildrenIds","cleanUpTreeViewStore"],"sourceRoot":"../../../src","sources":["store/treeView.store.ts"],"mappings":";;AAEA,SAASA,MAAM,QAAQ,SAAS;
|
|
1
|
+
{"version":3,"names":["create","useTreeViewStore","set","checked","Set","updateChecked","indeterminate","updateIndeterminate","expanded","updateExpanded","initialTreeViewData","updateInitialTreeViewData","nodeMap","Map","updateNodeMap","childToParentMap","updateChildToParentMap","searchText","updateSearchText","searchKeys","updateSearchKeys","innerMostChildrenIds","updateInnerMostChildrenIds","selectionPropagation","toChildren","toParents","setSelectionPropagation","cleanUpTreeViewStore"],"sourceRoot":"../../../src","sources":["store/treeView.store.ts"],"mappings":";;AAEA,SAASA,MAAM,QAAQ,SAAS;AAgDhC,OAAO,MAAMC,gBAAgB,GAAGD,MAAM,CAAiBE,GAAG,KAAM;EAC5DC,OAAO,EAAE,IAAIC,GAAG,CAAC,CAAC;EAClBC,aAAa,EAAGF,OAAoB,IAAKD,GAAG,CAAC;IAAEC;EAAQ,CAAC,CAAC;EAEzDG,aAAa,EAAE,IAAIF,GAAG,CAAC,CAAC;EACxBG,mBAAmB,EAAGD,aAA0B,IAAKJ,GAAG,CAAC;IAAEI;EAAc,CAAC,CAAC;EAE3EE,QAAQ,EAAE,IAAIJ,GAAG,CAAS,CAAC;EAC3BK,cAAc,EAAGD,QAAqB,IAAKN,GAAG,CAAC;IAAEM;EAAS,CAAC,CAAC;EAE5DE,mBAAmB,EAAE,EAAE;EACvBC,yBAAyB,EAAGD,mBAA+B,IAAKR,GAAG,CAAC;IAChEQ;EACJ,CAAC,CAAC;EAEFE,OAAO,EAAE,IAAIC,GAAG,CAAmB,CAAC;EACpCC,aAAa,EAAGF,OAA8B,IAAKV,GAAG,CAAC;IAAEU;EAAQ,CAAC,CAAC;EAEnEG,gBAAgB,EAAE,IAAIF,GAAG,CAAiB,CAAC;EAC3CG,sBAAsB,EAAGD,gBAAqC,IAAKb,GAAG,CAAC;IAAEa;EAAiB,CAAC,CAAC;EAE5FE,UAAU,EAAE,EAAE;EACdC,gBAAgB,EAAGD,UAAkB,IAAKf,GAAG,CAAC;IAAEe;EAAW,CAAC,CAAC;EAE7DE,UAAU,EAAE,CAAC,EAAE,CAAC;EAChBC,gBAAgB,EAAGD,UAAoB,IAAKjB,GAAG,CAAC;IAAEiB;EAAW,CAAC,CAAC;EAE/DE,oBAAoB,EAAE,EAAE;EACxBC,0BAA0B,EAAGD,oBAA8B,IAAKnB,GAAG,CAAC;IAAEmB;EAAqB,CAAC,CAAC;EAE7FE,oBAAoB,EAAE;IAAEC,UAAU,EAAE,IAAI;IAAEC,SAAS,EAAE;EAAK,CAAC;EAC3DC,uBAAuB,EAAGH,oBAAoB,IAAKrB,GAAG,CAClD;IACIqB,oBAAoB,EAAE;MAClB;MACAC,UAAU,EAAED,oBAAoB,CAACC,UAAU,IAAI,IAAI;MACnDC,SAAS,EAAEF,oBAAoB,CAACE,SAAS,IAAI;IACjD;EACJ,CACJ,CAAC;EAEDE,oBAAoB,EAAEA,CAAA,KAClBzB,GAAG,CAAC;IACAC,OAAO,EAAE,IAAIC,GAAG,CAAC,CAAC;IAClBE,aAAa,EAAE,IAAIF,GAAG,CAAC,CAAC;IACxBI,QAAQ,EAAE,IAAIJ,GAAG,CAAS,CAAC;IAC3BM,mBAAmB,EAAE,EAAE;IACvBE,OAAO,EAAE,IAAIC,GAAG,CAAmB,CAAC;IACpCE,gBAAgB,EAAE,IAAIF,GAAG,CAAiB,CAAC;IAC3CI,UAAU,EAAE,EAAE;IACdE,UAAU,EAAE,CAAC,EAAE,CAAC;IAChBE,oBAAoB,EAAE,EAAE;IACxBE,oBAAoB,EAAE;MAAEC,UAAU,EAAE,IAAI;MAAEC,SAAS,EAAE;IAAK;EAC9D,CAAC;AACT,CAAC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeView.d.ts","sourceRoot":"","sources":["../../src/TreeView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAEV,aAAa,EACb,WAAW,EACZ,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"TreeView.d.ts","sourceRoot":"","sources":["../../src/TreeView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAEV,aAAa,EACb,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAkMhC,eAAO,MAAM,QAAQ,8GAAwB,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { TreeNode, __FlattenedTreeNode__ } from "../types/treeView.types";
|
|
|
6
6
|
*
|
|
7
7
|
* @param nodes - Input recursive tree
|
|
8
8
|
* @param expandedIds - ids of currently expanded nodes
|
|
9
|
-
* @param
|
|
9
|
+
* @param __level__ - (optional) for internal recursive use only
|
|
10
10
|
* @returns Flattened tree data with expanded ids only
|
|
11
11
|
*/
|
|
12
12
|
export declare function getFlattenedTreeData(nodes: TreeNode[], expandedIds: Set<string>, __level__?: number): __FlattenedTreeNode__[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggleCheckbox.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/toggleCheckbox.helper.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"toggleCheckbox.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/toggleCheckbox.helper.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,OAAO,QAoKnE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { TreeNode, NodeRowProps, TreeViewProps, TreeViewRef, TreeFlatListProps, ExpandIconProps, CheckBoxViewProps, CheckboxValueType, BuiltInCheckBoxViewStyleProps } from "./types/treeView.types";
|
|
1
|
+
import type { TreeNode, NodeRowProps, TreeViewProps, TreeViewRef, TreeFlatListProps, ExpandIconProps, CheckBoxViewProps, CheckboxValueType, BuiltInCheckBoxViewStyleProps, SelectionPropagation } from "./types/treeView.types";
|
|
2
2
|
export * from "./TreeView";
|
|
3
3
|
export * from "./components/CheckboxView";
|
|
4
|
-
export type { TreeNode, NodeRowProps, TreeViewProps, TreeViewRef, TreeFlatListProps, ExpandIconProps, CheckBoxViewProps, CheckboxValueType, BuiltInCheckBoxViewStyleProps };
|
|
4
|
+
export type { TreeNode, NodeRowProps, TreeViewProps, TreeViewRef, TreeFlatListProps, ExpandIconProps, CheckBoxViewProps, CheckboxValueType, BuiltInCheckBoxViewStyleProps, SelectionPropagation };
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,6BAA6B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,6BAA6B,EAC7B,oBAAoB,EACvB,MAAM,wBAAwB,CAAC;AAEhC,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAE1C,YAAY,EACR,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,6BAA6B,EAC7B,oBAAoB,EACvB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TreeNode } from "src/types/treeView.types";
|
|
1
|
+
import type { SelectionPropagation, TreeNode } from "src/types/treeView.types";
|
|
2
2
|
export type TreeViewState = {
|
|
3
3
|
checked: Set<string>;
|
|
4
4
|
updateChecked: (checked: Set<string>) => void;
|
|
@@ -18,6 +18,8 @@ export type TreeViewState = {
|
|
|
18
18
|
updateSearchKeys: (searchKeys: string[]) => void;
|
|
19
19
|
innerMostChildrenIds: string[];
|
|
20
20
|
updateInnerMostChildrenIds: (innerMostChildrenIds: string[]) => void;
|
|
21
|
+
selectionPropagation: SelectionPropagation;
|
|
22
|
+
setSelectionPropagation: (selectionPropagation: SelectionPropagation) => void;
|
|
21
23
|
cleanUpTreeViewStore: () => void;
|
|
22
24
|
};
|
|
23
25
|
export declare const useTreeViewStore: import("zustand").UseBoundStore<import("zustand").StoreApi<TreeViewState>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeView.store.d.ts","sourceRoot":"","sources":["../../../src/store/treeView.store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"treeView.store.d.ts","sourceRoot":"","sources":["../../../src/store/treeView.store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAI/E,MAAM,MAAM,aAAa,GAAG;IAExB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,aAAa,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAG9C,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,mBAAmB,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAG1D,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,cAAc,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAGhD,mBAAmB,EAAE,QAAQ,EAAE,CAAC;IAChC,yBAAyB,EAAE,CAAC,mBAAmB,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IAGrE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/B,aAAa,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC;IAGxD,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,sBAAsB,EAAE,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAGxE,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAG/C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAGjD,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,0BAA0B,EAAE,CAAC,oBAAoB,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAErE,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,uBAAuB,EAAE,CACrB,oBAAoB,EAAE,oBAAoB,KACzC,IAAI,CAAC;IAGV,oBAAoB,EAAE,MAAM,IAAI,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,gBAAgB,4EAsD1B,CAAC"}
|
|
@@ -44,6 +44,7 @@ export interface TreeViewProps extends NodeListProps {
|
|
|
44
44
|
onExpand?: (expandedIds: string[]) => void;
|
|
45
45
|
preselectedIds?: string[];
|
|
46
46
|
preExpandedIds?: string[];
|
|
47
|
+
selectionPropagation?: SelectionPropagation;
|
|
47
48
|
}
|
|
48
49
|
type CheckboxProps = Omit<RNPaperCheckboxAndroidProps, "onPress" | "status">;
|
|
49
50
|
export interface CheckBoxViewProps {
|
|
@@ -72,5 +73,9 @@ export interface TreeViewRef {
|
|
|
72
73
|
unselectNodes: (ids: string[]) => void;
|
|
73
74
|
setSearchText: (searchText: string, searchKeys?: string[]) => void;
|
|
74
75
|
}
|
|
76
|
+
export interface SelectionPropagation {
|
|
77
|
+
toChildren?: boolean;
|
|
78
|
+
toParents?: boolean;
|
|
79
|
+
}
|
|
75
80
|
export {};
|
|
76
81
|
//# sourceMappingURL=treeView.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeView.types.d.ts","sourceRoot":"","sources":["../../../src/types/treeView.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,SAAS,EACT,SAAS,EACT,qBAAqB,EACrB,SAAS,EACZ,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EACH,KAAK,KAAK,IAAI,2BAA2B,EAC5C,MAAM,4DAA4D,CAAC;AAEpE,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,eAAe,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,MAAM,WAAW,qBAAsB,SAAQ,QAAQ;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,MAAM,iBAAiB,CAAC,KAAK,GAAG,GAAG,IAAI,IAAI,CAC7C,cAAc,CAAC,KAAK,CAAC,EACrB,MAAM,GACJ,YAAY,CACjB,CAAC;AAEF,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IAEd,YAAY,EAAE,iBAAiB,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IAEpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACnC,sBAAsB,CAAC,EAAE,6BAA6B,CAAC;IAEvD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,iBAAiB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC3D,2BAA2B,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IACnE,gCAAgC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAE9E,sBAAsB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,SAAU,SAAQ,sBAAsB;IACrD,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAc,SAAQ,sBAAsB;IACzD,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;CAC1C;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa;IAChD,IAAI,EAAE,QAAQ,EAAE,CAAC;IAEjB,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACrE,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAE3C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"treeView.types.d.ts","sourceRoot":"","sources":["../../../src/types/treeView.types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-tree-multi-select",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0-beta.2",
|
|
4
4
|
"description": "Super-fast Tree view with multi-selection capabilities, using checkboxes and search filtering.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
package/src/TreeView.tsx
CHANGED
|
@@ -30,6 +30,8 @@ const _TreeView = React.forwardRef<TreeViewRef, TreeViewProps>(
|
|
|
30
30
|
onCheck,
|
|
31
31
|
onExpand,
|
|
32
32
|
|
|
33
|
+
selectionPropagation,
|
|
34
|
+
|
|
33
35
|
preselectedIds = [],
|
|
34
36
|
|
|
35
37
|
preExpandedIds = [],
|
|
@@ -60,6 +62,8 @@ const _TreeView = React.forwardRef<TreeViewRef, TreeViewProps>(
|
|
|
60
62
|
checked,
|
|
61
63
|
indeterminate,
|
|
62
64
|
|
|
65
|
+
setSelectionPropagation,
|
|
66
|
+
|
|
63
67
|
cleanUpTreeViewStore,
|
|
64
68
|
} = useTreeViewStore(useShallow(
|
|
65
69
|
state => ({
|
|
@@ -77,6 +81,8 @@ const _TreeView = React.forwardRef<TreeViewRef, TreeViewProps>(
|
|
|
77
81
|
checked: state.checked,
|
|
78
82
|
indeterminate: state.indeterminate,
|
|
79
83
|
|
|
84
|
+
setSelectionPropagation: state.setSelectionPropagation,
|
|
85
|
+
|
|
80
86
|
cleanUpTreeViewStore: state.cleanUpTreeViewStore,
|
|
81
87
|
})
|
|
82
88
|
));
|
|
@@ -105,6 +111,9 @@ const _TreeView = React.forwardRef<TreeViewRef, TreeViewProps>(
|
|
|
105
111
|
React.useEffect(() => {
|
|
106
112
|
updateInitialTreeViewData(data);
|
|
107
113
|
|
|
114
|
+
if (selectionPropagation)
|
|
115
|
+
setSelectionPropagation(selectionPropagation);
|
|
116
|
+
|
|
108
117
|
initializeNodeMaps(data);
|
|
109
118
|
|
|
110
119
|
// Check any pre-selected nodes
|
|
@@ -65,7 +65,7 @@ function _NodeList(props: NodeListProps) {
|
|
|
65
65
|
searchKeys
|
|
66
66
|
), [initialTreeViewData, searchText, searchKeys]);
|
|
67
67
|
|
|
68
|
-
// Then we flatten the
|
|
68
|
+
// Then we flatten the tree to make it "render-compatible" in a "flat" list
|
|
69
69
|
const flattenedFilteredNodes = React.useMemo(() => getFlattenedTreeData(
|
|
70
70
|
filteredTree,
|
|
71
71
|
expanded,
|
|
@@ -4,10 +4,10 @@ import { TreeNode, __FlattenedTreeNode__ } from "../types/treeView.types";
|
|
|
4
4
|
* Flatten the tree and attach a "level" key to object to indicate it's depth. This
|
|
5
5
|
* returns the flattened tree data of expanded ids only. We do not prune the tree off the
|
|
6
6
|
* children after the flattening as it would be unnecessary computation.
|
|
7
|
-
*
|
|
7
|
+
*
|
|
8
8
|
* @param nodes - Input recursive tree
|
|
9
9
|
* @param expandedIds - ids of currently expanded nodes
|
|
10
|
-
* @param
|
|
10
|
+
* @param __level__ - (optional) for internal recursive use only
|
|
11
11
|
* @returns Flattened tree data with expanded ids only
|
|
12
12
|
*/
|
|
13
13
|
export function getFlattenedTreeData(
|