react-native-tree-multi-select 0.5.4 → 0.8.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/README.md +5 -6
- package/lib/commonjs/TreeView.js +42 -48
- package/lib/commonjs/TreeView.js.map +1 -1
- package/lib/commonjs/components/NodeList.js +98 -92
- package/lib/commonjs/components/NodeList.js.map +1 -1
- package/lib/commonjs/helpers/expandCollapse.helper.js +21 -8
- package/lib/commonjs/helpers/expandCollapse.helper.js.map +1 -1
- package/lib/commonjs/helpers/initNodeMap.helper.js +14 -3
- package/lib/commonjs/helpers/initNodeMap.helper.js.map +1 -1
- package/lib/commonjs/helpers/selectAll.helper.js +32 -14
- package/lib/commonjs/helpers/selectAll.helper.js.map +1 -1
- package/lib/commonjs/helpers/toggleCheckbox.helper.js +34 -27
- package/lib/commonjs/helpers/toggleCheckbox.helper.js.map +1 -1
- package/lib/commonjs/store/global.store.js +92 -0
- package/lib/commonjs/store/global.store.js.map +1 -0
- package/lib/module/TreeView.js +42 -46
- package/lib/module/TreeView.js.map +1 -1
- package/lib/module/components/NodeList.js +96 -92
- package/lib/module/components/NodeList.js.map +1 -1
- package/lib/module/helpers/expandCollapse.helper.js +21 -8
- package/lib/module/helpers/expandCollapse.helper.js.map +1 -1
- package/lib/module/helpers/initNodeMap.helper.js +14 -3
- package/lib/module/helpers/initNodeMap.helper.js.map +1 -1
- package/lib/module/helpers/selectAll.helper.js +32 -14
- package/lib/module/helpers/selectAll.helper.js.map +1 -1
- package/lib/module/helpers/toggleCheckbox.helper.js +34 -27
- package/lib/module/helpers/toggleCheckbox.helper.js.map +1 -1
- package/lib/module/store/global.store.js +85 -0
- package/lib/module/store/global.store.js.map +1 -0
- package/lib/typescript/TreeView.d.ts.map +1 -1
- package/lib/typescript/components/NodeList.d.ts.map +1 -1
- package/lib/typescript/helpers/expandCollapse.helper.d.ts.map +1 -1
- package/lib/typescript/helpers/initNodeMap.helper.d.ts.map +1 -1
- package/lib/typescript/helpers/selectAll.helper.d.ts.map +1 -1
- package/lib/typescript/helpers/toggleCheckbox.helper.d.ts.map +1 -1
- package/lib/typescript/store/global.store.d.ts +24 -0
- package/lib/typescript/store/global.store.d.ts.map +1 -0
- package/lib/typescript/types/treeView.types.d.ts +0 -4
- package/lib/typescript/types/treeView.types.d.ts.map +1 -1
- package/package.json +9 -10
- package/src/TreeView.tsx +53 -62
- package/src/components/NodeList.tsx +102 -107
- package/src/helpers/expandCollapse.helper.ts +12 -12
- package/src/helpers/initNodeMap.helper.ts +15 -5
- package/src/helpers/selectAll.helper.ts +20 -13
- package/src/helpers/toggleCheckbox.helper.ts +36 -24
- package/src/store/global.store.ts +111 -0
- package/src/types/treeView.types.ts +0 -5
- package/lib/commonjs/signals/global.signals.js +0 -42
- package/lib/commonjs/signals/global.signals.js.map +0 -1
- package/lib/module/signals/global.signals.js +0 -26
- package/lib/module/signals/global.signals.js.map +0 -1
- package/lib/typescript/signals/global.signals.d.ts +0 -11
- package/lib/typescript/signals/global.signals.d.ts.map +0 -1
- package/src/signals/global.signals.ts +0 -36
package/README.md
CHANGED
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Tree view with multi selection using checkbox + search filtering.
|
|
4
4
|
|
|
5
|
-
[](https://badge.fury.io/js/react-native-tree-multi-select)
|
|
8
6
|
|
|
9
7
|
<div align="left">
|
|
10
8
|
<img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExNHFleDNleTZsMXVoMjk1YnlpdXFtanZyZGprMDkwcDdteGhqYTNhcCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/L0w26RrC32gdfWZ8Ux/giphy.gif" alt="demo" style="border: 1px solid gray;" />
|
|
@@ -15,19 +13,20 @@ Tree view with multi selection using checkbox + search filtering.
|
|
|
15
13
|
Using yarn
|
|
16
14
|
|
|
17
15
|
```sh
|
|
18
|
-
yarn add react-native-tree-multi-select
|
|
16
|
+
yarn add react-native-tree-multi-select && cd ios && pod install
|
|
19
17
|
```
|
|
20
18
|
|
|
21
19
|
using npm:
|
|
22
20
|
|
|
23
21
|
```sh
|
|
24
|
-
npm install react-native-tree-multi-select
|
|
22
|
+
npm install react-native-tree-multi-select && cd ios && pod install
|
|
25
23
|
```
|
|
26
24
|
|
|
27
25
|
Dependencies required to be installed for this library to work:
|
|
28
26
|
|
|
29
27
|
1. [@shopify/flash-list](https://github.com/Shopify/flash-list)
|
|
30
|
-
2. [react-native-
|
|
28
|
+
2. [react-native-paper](https://github.com/callstack/react-native-paper)
|
|
29
|
+
3. [react-native-vector-icons](https://github.com/oblador/react-native-vector-icons)
|
|
31
30
|
|
|
32
31
|
Make sure to follow the native-related installation for these dependencies.
|
|
33
32
|
|
package/lib/commonjs/TreeView.js
CHANGED
|
@@ -4,16 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.TreeView = void 0;
|
|
7
|
-
var _react =
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _NodeList = _interopRequireDefault(require("./components/NodeList"));
|
|
9
9
|
var _helpers = require("./helpers");
|
|
10
|
-
var
|
|
11
|
-
var _global = require("./signals/global.signals");
|
|
10
|
+
var _global = require("./store/global.store");
|
|
12
11
|
var _reactNative = require("react-native");
|
|
13
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
-
|
|
15
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
|
-
const _TreeView = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
|
|
13
|
+
const _TreeView = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
17
14
|
const {
|
|
18
15
|
data,
|
|
19
16
|
onCheck,
|
|
@@ -25,7 +22,18 @@ const _TreeView = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
|
|
|
25
22
|
ExpandCollapseIconComponent,
|
|
26
23
|
ExpandCollapseTouchableComponent
|
|
27
24
|
} = props;
|
|
28
|
-
|
|
25
|
+
const {
|
|
26
|
+
cleanUpGlobalSignals,
|
|
27
|
+
expanded,
|
|
28
|
+
updateExpanded,
|
|
29
|
+
globalData,
|
|
30
|
+
updateGlobalData,
|
|
31
|
+
searchText,
|
|
32
|
+
updatedSearchText,
|
|
33
|
+
updatedSearchKeys,
|
|
34
|
+
checked
|
|
35
|
+
} = (0, _global.useStore)();
|
|
36
|
+
_react.default.useImperativeHandle(ref, () => ({
|
|
29
37
|
selectAll: _helpers.selectAll,
|
|
30
38
|
unselectAll: _helpers.unselectAll,
|
|
31
39
|
selectAllFiltered: _helpers.selectAllFiltered,
|
|
@@ -36,49 +44,13 @@ const _TreeView = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
|
|
|
36
44
|
}));
|
|
37
45
|
function setSearchText(text) {
|
|
38
46
|
let keys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ["name"];
|
|
39
|
-
|
|
40
|
-
|
|
47
|
+
updatedSearchText(text);
|
|
48
|
+
updatedSearchKeys(keys);
|
|
41
49
|
}
|
|
42
|
-
|
|
43
|
-
|
|
50
|
+
_react.default.useEffect(() => {
|
|
51
|
+
updateGlobalData(data);
|
|
44
52
|
(0, _helpers.initializeNodeMaps)(data, preselectedIds);
|
|
45
|
-
}, [data, preselectedIds]);
|
|
46
|
-
const disposeCheckedStateEffect = _react.default.useMemo(() => {
|
|
47
|
-
return (0, _signalsReact.effect)(() => {
|
|
48
|
-
onCheck && onCheck(Array.from(_global.state.value.checked));
|
|
49
|
-
});
|
|
50
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
51
|
-
}, []);
|
|
52
|
-
const disposeExpandedStateEffect = _react.default.useMemo(() => {
|
|
53
|
-
return (0, _signalsReact.effect)(() => {
|
|
54
|
-
onExpand && onExpand(Array.from(_global.expanded.value));
|
|
55
|
-
});
|
|
56
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
57
|
-
}, []);
|
|
58
|
-
const disposeSearchStateEffect = _react.default.useMemo(() => {
|
|
59
|
-
return (0, _signalsReact.effect)(() => {
|
|
60
|
-
if (_global.searchText.value) {
|
|
61
|
-
_reactNative.InteractionManager.runAfterInteractions(() => {
|
|
62
|
-
_global.expanded.value = new Set(_global.globalData.value.flatMap(item => getIds(item)));
|
|
63
|
-
});
|
|
64
|
-
} else {
|
|
65
|
-
_reactNative.InteractionManager.runAfterInteractions(() => {
|
|
66
|
-
_global.expanded.value = new Set();
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
71
|
-
}, []);
|
|
72
|
-
(0, _react.useEffect)(() => {
|
|
73
|
-
return () => {
|
|
74
|
-
// Cleanup all global signals and signal effects
|
|
75
|
-
disposeCheckedStateEffect();
|
|
76
|
-
disposeExpandedStateEffect();
|
|
77
|
-
disposeSearchStateEffect();
|
|
78
|
-
(0, _global.cleanUpGlobalSignals)();
|
|
79
|
-
};
|
|
80
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
81
|
-
}, []);
|
|
53
|
+
}, [updateGlobalData, data, preselectedIds]);
|
|
82
54
|
const getIds = _react.default.useCallback(node => {
|
|
83
55
|
if (!node.children || node.children.length === 0) {
|
|
84
56
|
return [node.id];
|
|
@@ -86,6 +58,28 @@ const _TreeView = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
|
|
|
86
58
|
return [node.id, ...node.children.flatMap(item => getIds(item))];
|
|
87
59
|
}
|
|
88
60
|
}, []);
|
|
61
|
+
_react.default.useEffect(() => {
|
|
62
|
+
onCheck && onCheck(Array.from(checked));
|
|
63
|
+
}, [onCheck, checked]);
|
|
64
|
+
_react.default.useEffect(() => {
|
|
65
|
+
onExpand && onExpand(Array.from(expanded));
|
|
66
|
+
}, [onExpand, expanded]);
|
|
67
|
+
_react.default.useEffect(() => {
|
|
68
|
+
if (searchText) {
|
|
69
|
+
_reactNative.InteractionManager.runAfterInteractions(() => {
|
|
70
|
+
updateExpanded(new Set(globalData.flatMap(item => getIds(item))));
|
|
71
|
+
});
|
|
72
|
+
} else {
|
|
73
|
+
_reactNative.InteractionManager.runAfterInteractions(() => {
|
|
74
|
+
updateExpanded(new Set());
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}, [getIds, globalData, searchText, updateExpanded]);
|
|
78
|
+
_react.default.useEffect(() => {
|
|
79
|
+
return () => {
|
|
80
|
+
cleanUpGlobalSignals();
|
|
81
|
+
};
|
|
82
|
+
}, [cleanUpGlobalSignals]);
|
|
89
83
|
return /*#__PURE__*/_react.default.createElement(_NodeList.default, {
|
|
90
84
|
treeFlashListProps: treeFlashListProps,
|
|
91
85
|
checkBoxViewStyleProps: checkBoxViewStyleProps,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_NodeList","_helpers","_global","_reactNative","obj","__esModule","default","_TreeView","React","forwardRef","props","ref","data","onCheck","onExpand","preselectedIds","treeFlashListProps","checkBoxViewStyleProps","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","cleanUpGlobalSignals","expanded","updateExpanded","globalData","updateGlobalData","searchText","updatedSearchText","updatedSearchKeys","checked","useStore","useImperativeHandle","selectAll","unselectAll","selectAllFiltered","unselectAllFiltered","expandAll","collapseAll","setSearchText","text","keys","arguments","length","undefined","useEffect","initializeNodeMaps","getIds","useCallback","node","children","id","flatMap","item","Array","from","InteractionManager","runAfterInteractions","Set","createElement","TreeView","memo","exports"],"sourceRoot":"../../src","sources":["TreeView.tsx"],"mappings":"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"}
|
|
@@ -4,15 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _react =
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
|
-
var _signalsReact = require("@preact/signals-react");
|
|
10
9
|
var _flashList = require("@shopify/flash-list");
|
|
11
|
-
var _global = require("../
|
|
10
|
+
var _global = require("../store/global.store");
|
|
12
11
|
var _helpers = require("../helpers");
|
|
13
12
|
var _CheckboxView = require("./CheckboxView");
|
|
14
13
|
var _CustomExpandCollapseIcon = _interopRequireDefault(require("./CustomExpandCollapseIcon"));
|
|
15
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
17
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
17
18
|
const NodeList = /*#__PURE__*/_react.default.memo(_NodeList);
|
|
18
19
|
var _default = NodeList;
|
|
@@ -25,69 +26,72 @@ function _NodeList(props) {
|
|
|
25
26
|
ExpandCollapseIconComponent,
|
|
26
27
|
ExpandCollapseTouchableComponent
|
|
27
28
|
} = props;
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const flattenedFilteredNodes = _react.default.useMemo(() => {
|
|
55
|
-
return (0, _signalsReact.computed)(() => {
|
|
56
|
-
const flattenTreeData = function (_nodes) {
|
|
57
|
-
let level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
58
|
-
let flattened = [];
|
|
59
|
-
for (let node of _nodes) {
|
|
60
|
-
flattened.push({
|
|
61
|
-
...node,
|
|
62
|
-
level
|
|
63
|
-
});
|
|
64
|
-
if (node.children && _global.expanded.value.has(node.id)) {
|
|
65
|
-
flattened = [...flattened, ...flattenTreeData(node.children, level + 1)];
|
|
29
|
+
const {
|
|
30
|
+
expanded,
|
|
31
|
+
globalData,
|
|
32
|
+
updatedInnerMostChildrenIds,
|
|
33
|
+
searchKeys,
|
|
34
|
+
searchText
|
|
35
|
+
} = (0, _global.useStore)();
|
|
36
|
+
const [filteredTree, setFilteredTree] = (0, _react.useState)([]);
|
|
37
|
+
const [flattenedFilteredNodes, setFlattenedFilteredNodes] = (0, _react.useState)([]);
|
|
38
|
+
(0, _react.useEffect)(() => {
|
|
39
|
+
const searchTrimmed = searchText.trim().toLowerCase();
|
|
40
|
+
const filterTreeData = _nodes => {
|
|
41
|
+
let filtered = [];
|
|
42
|
+
for (let node of _nodes) {
|
|
43
|
+
if (!searchTrimmed || (0, _helpers.doesNodeContainSearchTerm)(node, searchTrimmed, searchKeys)) {
|
|
44
|
+
// If node itself matches, include it and all its descendants
|
|
45
|
+
filtered.push(node);
|
|
46
|
+
} else if (node.children) {
|
|
47
|
+
// If node does not match, check its children and include them if they match
|
|
48
|
+
const childMatches = filterTreeData(node.children);
|
|
49
|
+
if (childMatches.length > 0) {
|
|
50
|
+
// If any children match, include the node, replacing its children with the matching ones
|
|
51
|
+
filtered.push({
|
|
52
|
+
...node,
|
|
53
|
+
children: childMatches
|
|
54
|
+
});
|
|
66
55
|
}
|
|
67
56
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}, []);
|
|
57
|
+
}
|
|
58
|
+
return filtered;
|
|
59
|
+
};
|
|
60
|
+
const tempFilterTree = filterTreeData(globalData);
|
|
61
|
+
setFilteredTree(tempFilterTree);
|
|
62
|
+
}, [searchText, searchKeys, globalData]);
|
|
74
63
|
_react.default.useEffect(() => {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
64
|
+
const flattenTreeData = function (_nodes) {
|
|
65
|
+
let level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
66
|
+
let flattened = [];
|
|
67
|
+
for (let node of _nodes) {
|
|
68
|
+
flattened.push({
|
|
69
|
+
...node,
|
|
70
|
+
level
|
|
71
|
+
});
|
|
72
|
+
if (node.children && expanded.has(node.id)) {
|
|
73
|
+
flattened = [...flattened, ...flattenTreeData(node.children, level + 1)];
|
|
84
74
|
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}, []);
|
|
75
|
+
}
|
|
76
|
+
return flattened;
|
|
77
|
+
};
|
|
78
|
+
const tempFlattenTreeData = flattenTreeData(filteredTree);
|
|
79
|
+
setFlattenedFilteredNodes(tempFlattenTreeData);
|
|
80
|
+
}, [filteredTree, expanded]);
|
|
81
|
+
(0, _react.useEffect)(() => {
|
|
82
|
+
const allLeafIds = [];
|
|
83
|
+
const getLeafNodes = _nodes => {
|
|
84
|
+
for (let node of _nodes) {
|
|
85
|
+
if (node.children) {
|
|
86
|
+
getLeafNodes(node.children);
|
|
87
|
+
} else {
|
|
88
|
+
allLeafIds.push(node.id);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
getLeafNodes(filteredTree);
|
|
93
|
+
updatedInnerMostChildrenIds(allLeafIds);
|
|
94
|
+
}, [filteredTree, updatedInnerMostChildrenIds]);
|
|
91
95
|
const nodeRenderer = _react.default.useCallback(_ref => {
|
|
92
96
|
let {
|
|
93
97
|
item
|
|
@@ -107,7 +111,7 @@ function _NodeList(props) {
|
|
|
107
111
|
removeClippedSubviews: true,
|
|
108
112
|
keyboardShouldPersistTaps: "handled",
|
|
109
113
|
drawDistance: 50,
|
|
110
|
-
data: flattenedFilteredNodes
|
|
114
|
+
data: flattenedFilteredNodes,
|
|
111
115
|
renderItem: nodeRenderer,
|
|
112
116
|
keyExtractor: keyExtractor,
|
|
113
117
|
ListHeaderComponent: /*#__PURE__*/_react.default.createElement(HeaderFooterView, null),
|
|
@@ -120,42 +124,44 @@ function HeaderFooterView() {
|
|
|
120
124
|
style: styles.defaultHeaderFooter
|
|
121
125
|
});
|
|
122
126
|
}
|
|
127
|
+
function getValue(isChecked, isIndeterminate) {
|
|
128
|
+
if (isIndeterminate) {
|
|
129
|
+
return 'indeterminate';
|
|
130
|
+
} else if (isChecked) {
|
|
131
|
+
return true;
|
|
132
|
+
} else {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
123
136
|
const Node = /*#__PURE__*/_react.default.memo(_Node);
|
|
124
137
|
function _Node(props) {
|
|
125
|
-
var _node$
|
|
138
|
+
var _node$children;
|
|
126
139
|
const {
|
|
127
|
-
node
|
|
140
|
+
node,
|
|
128
141
|
level,
|
|
129
142
|
checkBoxViewStyleProps,
|
|
130
143
|
ExpandCollapseIconComponent = _CustomExpandCollapseIcon.default,
|
|
131
144
|
CheckboxComponent = _CheckboxView.CheckboxView,
|
|
132
145
|
ExpandCollapseTouchableComponent = _reactNative.TouchableOpacity
|
|
133
146
|
} = props;
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
},
|
|
139
|
-
const isChecked =
|
|
140
|
-
const isIndeterminate =
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
} else {
|
|
147
|
-
return false;
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
const isExpanded = (0, _signalsReact.useComputed)(() => _global.expanded.value.has(node.value.id));
|
|
147
|
+
const {
|
|
148
|
+
expanded,
|
|
149
|
+
checked,
|
|
150
|
+
indeterminate
|
|
151
|
+
} = (0, _global.useStore)();
|
|
152
|
+
const isChecked = checked.has(node.id);
|
|
153
|
+
const isIndeterminate = indeterminate.has(node.id);
|
|
154
|
+
const isExpanded = expanded.has(node.id);
|
|
155
|
+
const [value, setValue] = (0, _react.useState)(getValue(isChecked, isIndeterminate));
|
|
156
|
+
(0, _react.useEffect)(() => {
|
|
157
|
+
setValue(getValue(isChecked, isIndeterminate));
|
|
158
|
+
}, [isChecked, isIndeterminate]);
|
|
151
159
|
const _onToggleExpand = _react.default.useCallback(() => {
|
|
152
|
-
(0, _helpers.handleToggleExpand)(node.
|
|
153
|
-
|
|
154
|
-
}, []);
|
|
160
|
+
(0, _helpers.handleToggleExpand)(node.id);
|
|
161
|
+
}, [node.id]);
|
|
155
162
|
const _onCheck = _react.default.useCallback(() => {
|
|
156
|
-
(0, _helpers.toggleCheckboxes)([node.
|
|
157
|
-
|
|
158
|
-
}, []);
|
|
163
|
+
(0, _helpers.toggleCheckboxes)([node.id]);
|
|
164
|
+
}, [node.id]);
|
|
159
165
|
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
160
166
|
style: [styles.nodeParentView, {
|
|
161
167
|
marginLeft: level * 15
|
|
@@ -163,14 +169,14 @@ function _Node(props) {
|
|
|
163
169
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
164
170
|
style: styles.nodeCheckboxAndArrowRow
|
|
165
171
|
}, /*#__PURE__*/_react.default.createElement(CheckboxComponent, _extends({
|
|
166
|
-
text: node.
|
|
172
|
+
text: node.name,
|
|
167
173
|
onValueChange: _onCheck,
|
|
168
|
-
value: value
|
|
169
|
-
}, checkBoxViewStyleProps)), (_node$
|
|
174
|
+
value: value
|
|
175
|
+
}, checkBoxViewStyleProps)), (_node$children = node.children) !== null && _node$children !== void 0 && _node$children.length ? /*#__PURE__*/_react.default.createElement(ExpandCollapseTouchableComponent, {
|
|
170
176
|
style: styles.nodeExpandableArrowTouchable,
|
|
171
177
|
onPress: _onToggleExpand
|
|
172
178
|
}, /*#__PURE__*/_react.default.createElement(ExpandCollapseIconComponent, {
|
|
173
|
-
isExpanded: isExpanded
|
|
179
|
+
isExpanded: isExpanded
|
|
174
180
|
})) : null));
|
|
175
181
|
}
|
|
176
182
|
;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_flashList","_global","_helpers","_CheckboxView","_CustomExpandCollapseIcon","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","NodeList","React","memo","_NodeList","_default","exports","props","treeFlashListProps","checkBoxViewStyleProps","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","expanded","globalData","updatedInnerMostChildrenIds","searchKeys","searchText","useStore","filteredTree","setFilteredTree","useState","flattenedFilteredNodes","setFlattenedFilteredNodes","useEffect","searchTrimmed","trim","toLowerCase","filterTreeData","_nodes","filtered","node","doesNodeContainSearchTerm","push","children","childMatches","tempFilterTree","flattenTreeData","level","undefined","flattened","id","tempFlattenTreeData","allLeafIds","getLeafNodes","nodeRenderer","useCallback","_ref","item","createElement","Node","keyExtractor","FlashList","estimatedItemSize","removeClippedSubviews","keyboardShouldPersistTaps","drawDistance","data","renderItem","ListHeaderComponent","HeaderFooterView","ListFooterComponent","View","style","styles","defaultHeaderFooter","getValue","isChecked","isIndeterminate","_Node","_node$children","CustomExpandCollapseIcon","CheckboxView","TouchableOpacity","checked","indeterminate","isExpanded","value","setValue","_onToggleExpand","handleToggleExpand","_onCheck","toggleCheckboxes","nodeParentView","marginLeft","nodeCheckboxAndArrowRow","text","name","onValueChange","nodeExpandableArrowTouchable","onPress","StyleSheet","create","padding","flex","flexDirection","alignItems","minWidth"],"sourceRoot":"../../../src","sources":["components/NodeList.tsx"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.collapseAll = collapseAll;
|
|
7
7
|
exports.expandAll = expandAll;
|
|
8
8
|
exports.handleToggleExpand = handleToggleExpand;
|
|
9
|
-
var _global = require("../
|
|
9
|
+
var _global = require("../store/global.store");
|
|
10
10
|
/**
|
|
11
11
|
* Toggle the expanded state of a tree node by its ID.
|
|
12
12
|
*
|
|
@@ -16,8 +16,14 @@ var _global = require("../signals/global.signals");
|
|
|
16
16
|
* @param id - The ID of the tree node to toggle.
|
|
17
17
|
*/
|
|
18
18
|
function handleToggleExpand(id) {
|
|
19
|
+
const {
|
|
20
|
+
globalData,
|
|
21
|
+
expanded,
|
|
22
|
+
updateExpanded
|
|
23
|
+
} = _global.useStore.getState();
|
|
24
|
+
|
|
19
25
|
// Create a new Set based on the current expanded state
|
|
20
|
-
const newExpanded = new Set(
|
|
26
|
+
const newExpanded = new Set(expanded);
|
|
21
27
|
|
|
22
28
|
/**
|
|
23
29
|
* Recursively deletes a node and its descendants from the expanded set.
|
|
@@ -54,8 +60,8 @@ function handleToggleExpand(id) {
|
|
|
54
60
|
}
|
|
55
61
|
|
|
56
62
|
// Find the node to expand or collapse
|
|
57
|
-
const node = findNode(
|
|
58
|
-
if (
|
|
63
|
+
const node = findNode(globalData);
|
|
64
|
+
if (expanded.has(id)) {
|
|
59
65
|
// If the node is currently expanded, collapse it and its descendants
|
|
60
66
|
newExpanded.delete(id);
|
|
61
67
|
if (node) {
|
|
@@ -67,7 +73,7 @@ function handleToggleExpand(id) {
|
|
|
67
73
|
}
|
|
68
74
|
|
|
69
75
|
// Set the new expanded state
|
|
70
|
-
|
|
76
|
+
updateExpanded(newExpanded);
|
|
71
77
|
}
|
|
72
78
|
;
|
|
73
79
|
|
|
@@ -75,9 +81,13 @@ function handleToggleExpand(id) {
|
|
|
75
81
|
* Expand all nodes in the tree.
|
|
76
82
|
*/
|
|
77
83
|
function expandAll() {
|
|
84
|
+
const {
|
|
85
|
+
nodeMap,
|
|
86
|
+
updateExpanded
|
|
87
|
+
} = _global.useStore.getState();
|
|
78
88
|
// Create a new Set containing the IDs of all nodes
|
|
79
|
-
const newExpanded = new Set(
|
|
80
|
-
|
|
89
|
+
const newExpanded = new Set(nodeMap.keys());
|
|
90
|
+
updateExpanded(newExpanded);
|
|
81
91
|
}
|
|
82
92
|
;
|
|
83
93
|
|
|
@@ -85,9 +95,12 @@ function expandAll() {
|
|
|
85
95
|
* Collapse all nodes in the tree.
|
|
86
96
|
*/
|
|
87
97
|
function collapseAll() {
|
|
98
|
+
const {
|
|
99
|
+
updateExpanded
|
|
100
|
+
} = _global.useStore.getState();
|
|
88
101
|
// Create an empty Set
|
|
89
102
|
const newExpanded = new Set();
|
|
90
|
-
|
|
103
|
+
updateExpanded(newExpanded);
|
|
91
104
|
}
|
|
92
105
|
;
|
|
93
106
|
//# sourceMappingURL=expandCollapse.helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_global","require","handleToggleExpand","id","
|
|
1
|
+
{"version":3,"names":["_global","require","handleToggleExpand","id","globalData","expanded","updateExpanded","useStore","getState","newExpanded","Set","deleteChildrenFromExpanded","node","children","child","delete","findNode","nodes","found","undefined","has","add","expandAll","nodeMap","keys","collapseAll"],"sourceRoot":"../../../src","sources":["helpers/expandCollapse.helper.ts"],"mappings":";;;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAACC,EAAU,EAAE;EAC3C,MAAM;IAAEC,UAAU;IAAEC,QAAQ;IAAEC;EAAe,CAAC,GAAGC,gBAAQ,CAACC,QAAQ,CAAC,CAAC;;EAEpE;EACA,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAACL,QAAQ,CAAC;;EAErC;AACJ;AACA;AACA;AACA;EACI,SAASM,0BAA0BA,CAACC,IAAc,EAAE;IAChD,IAAIA,IAAI,CAACC,QAAQ,EAAE;MACf,KAAK,IAAIC,KAAK,IAAIF,IAAI,CAACC,QAAQ,EAAE;QAC7BJ,WAAW,CAACM,MAAM,CAACD,KAAK,CAACX,EAAE,CAAC;QAC5BQ,0BAA0B,CAACG,KAAK,CAAC;MACrC;IACJ;EACJ;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACI,SAASE,QAAQA,CAACC,KAAiB,EAAwB;IACvD,KAAK,IAAIL,IAAI,IAAIK,KAAK,EAAE;MACpB,IAAIL,IAAI,CAACT,EAAE,KAAKA,EAAE,EAAE;QAChB,OAAOS,IAAI;MACf,CAAC,MAAM,IAAIA,IAAI,CAACC,QAAQ,EAAE;QACtB,MAAMK,KAAK,GAAGF,QAAQ,CAACJ,IAAI,CAACC,QAAQ,CAAC;QACrC,IAAIK,KAAK,EAAE;UACP,OAAOA,KAAK;QAChB;MACJ;IACJ;IACA,OAAOC,SAAS;EACpB;;EAEA;EACA,MAAMP,IAAI,GAAGI,QAAQ,CAACZ,UAAU,CAAC;EAEjC,IAAIC,QAAQ,CAACe,GAAG,CAACjB,EAAE,CAAC,EAAE;IAClB;IACAM,WAAW,CAACM,MAAM,CAACZ,EAAE,CAAC;IACtB,IAAIS,IAAI,EAAE;MACND,0BAA0B,CAACC,IAAI,CAAC;IACpC;EACJ,CAAC,MAAM;IACH;IACAH,WAAW,CAACY,GAAG,CAAClB,EAAE,CAAC;EACvB;;EAEA;EACAG,cAAc,CAACG,WAAW,CAAC;AAC/B;AAAC;;AAED;AACA;AACA;AACO,SAASa,SAASA,CAAA,EAAG;EACxB,MAAM;IAAEC,OAAO;IAAEjB;EAAe,CAAC,GAAGC,gBAAQ,CAACC,QAAQ,CAAC,CAAC;EACvD;EACA,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAACa,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;EAC3ClB,cAAc,CAACG,WAAW,CAAC;AAC/B;AAAC;;AAED;AACA;AACA;AACO,SAASgB,WAAWA,CAAA,EAAG;EAC1B,MAAM;IAAEnB;EAAe,CAAC,GAAGC,gBAAQ,CAACC,QAAQ,CAAC,CAAC;EAC9C;EACA,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAAS,CAAC;EACrCJ,cAAc,CAACG,WAAW,CAAC;AAC/B;AAAC"}
|