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.
Files changed (36) hide show
  1. package/README.md +12 -1
  2. package/lib/commonjs/TreeView.js +4 -0
  3. package/lib/commonjs/TreeView.js.map +1 -1
  4. package/lib/commonjs/components/NodeList.js +1 -1
  5. package/lib/commonjs/helpers/flattenTree.helper.js +2 -2
  6. package/lib/commonjs/helpers/toggleCheckbox.helper.js +80 -71
  7. package/lib/commonjs/helpers/toggleCheckbox.helper.js.map +1 -1
  8. package/lib/commonjs/index.js.map +1 -1
  9. package/lib/commonjs/store/treeView.store.js +16 -1
  10. package/lib/commonjs/store/treeView.store.js.map +1 -1
  11. package/lib/module/TreeView.js +4 -0
  12. package/lib/module/TreeView.js.map +1 -1
  13. package/lib/module/components/NodeList.js +1 -1
  14. package/lib/module/helpers/flattenTree.helper.js +2 -2
  15. package/lib/module/helpers/toggleCheckbox.helper.js +80 -71
  16. package/lib/module/helpers/toggleCheckbox.helper.js.map +1 -1
  17. package/lib/module/index.js.map +1 -1
  18. package/lib/module/store/treeView.store.js +16 -1
  19. package/lib/module/store/treeView.store.js.map +1 -1
  20. package/lib/typescript/TreeView.d.ts.map +1 -1
  21. package/lib/typescript/helpers/flattenTree.helper.d.ts +1 -1
  22. package/lib/typescript/helpers/toggleCheckbox.helper.d.ts.map +1 -1
  23. package/lib/typescript/index.d.ts +2 -2
  24. package/lib/typescript/index.d.ts.map +1 -1
  25. package/lib/typescript/store/treeView.store.d.ts +3 -1
  26. package/lib/typescript/store/treeView.store.d.ts.map +1 -1
  27. package/lib/typescript/types/treeView.types.d.ts +5 -0
  28. package/lib/typescript/types/treeView.types.d.ts.map +1 -1
  29. package/package.json +1 -1
  30. package/src/TreeView.tsx +9 -0
  31. package/src/components/NodeList.tsx +1 -1
  32. package/src/helpers/flattenTree.helper.ts +2 -2
  33. package/src/helpers/toggleCheckbox.helper.ts +82 -74
  34. package/src/index.tsx +4 -2
  35. package/src/store/treeView.store.ts +18 -1
  36. 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
- * Recursive function to check if any descendants of a node are checked.
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
- // If the node has children, recursively check all children.
77
+ // Check if any direct child is checked, without requiring all descendants.
95
78
  for (const childNode of node.children) {
96
- anyChecked = anyChecked || areAnyDescendantsChecked(childNode.id);
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
- * Function to update the indeterminate and checked state of a node and its ancestors.
110
- * @param {string} nodeId - The id of the node to be updated.
111
- */
112
- const updateNodeAndAncestorsState = nodeId => {
113
- const node = nodeMap.get(nodeId);
114
-
115
- // Update the node's state based on the state of its descendants.
116
- if (areAllDescendantsChecked(nodeId)) {
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(nodeId);
142
- tempIndeterminate.delete(nodeId);
105
+ tempChecked.delete(id);
106
+ tempIndeterminate.delete(id);
107
+ if (toChildren) {
108
+ recursivelyUpdateChildren(id, false);
109
+ }
143
110
  }
144
- };
145
111
 
146
- // Toggle the clicked nodes and their children.
147
- ids.forEach(id => {
148
- const isChecked = tempChecked.has(id);
149
- toggleNodeAndChildren(id, forceCheck === undefined ? !isChecked : forceCheck);
112
+ // Skip updating parent nodes if toParents is false
113
+ if (toParents) {
114
+ updateParentNodes(id);
115
+ }
150
116
  });
151
117
 
152
- // Update the state of all affected nodes.
153
- ids.forEach(id => {
154
- let currentNodeId = id;
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
- updateNodeAndAncestorsState(currentNodeId);
157
- currentNodeId = childToParentMap.get(currentNodeId);
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","toggleNodeAndChildren","nodeId","isChecked","add","delete","node","get","children","forEach","childNode","id","areAllDescendantsChecked","has","allChecked","set","areAnyDescendantsChecked","anyChecked","updateNodeAndAncestorsState","every","undefined","currentNodeId"],"sourceRoot":"../../../src","sources":["helpers/toggleCheckbox.helper.ts"],"mappings":"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","ignoreList":[]}
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":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAYA,cAAc,YAAY;AAC1B,cAAc,2BAA2B;AAAC","ignoreList":[]}
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;AA2ChC,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,EAAEA,CAAA,KAClBrB,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;EAC1B,CAAC;AACT,CAAC,CAAC,CAAC","ignoreList":[]}
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;AAyLhC,eAAO,MAAM,QAAQ,8GAAwB,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 level - (optional) for internal recursive use only
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,QA4JnE"}
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,EAChC,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,EAChC,CAAC"}
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;AAIzD,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;IAGrE,oBAAoB,EAAE,MAAM,IAAI,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,gBAAgB,4EA0C1B,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":"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"}
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.4.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 treen to make it "render-compatible" in a "flat" list
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 level - (optional) for internal recursive use only
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(