react-native-tree-multi-select 1.3.2 → 1.3.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 +1 -1
- package/lib/commonjs/TreeView.js +12 -1
- package/lib/commonjs/TreeView.js.map +1 -1
- package/lib/commonjs/components/CheckboxView.js +4 -4
- package/lib/commonjs/components/CheckboxView.js.map +1 -1
- package/lib/commonjs/components/CustomExpandCollapseIcon.js.map +1 -1
- package/lib/commonjs/components/NodeList.js +19 -23
- package/lib/commonjs/components/NodeList.js.map +1 -1
- package/lib/module/TreeView.js +12 -1
- package/lib/module/TreeView.js.map +1 -1
- package/lib/module/components/CheckboxView.js +4 -4
- package/lib/module/components/CheckboxView.js.map +1 -1
- package/lib/module/components/CustomExpandCollapseIcon.js +2 -2
- package/lib/module/components/CustomExpandCollapseIcon.js.map +1 -1
- package/lib/module/components/NodeList.js +19 -23
- package/lib/module/components/NodeList.js.map +1 -1
- package/lib/typescript/TreeView.d.ts.map +1 -1
- package/lib/typescript/components/NodeList.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/TreeView.tsx +19 -1
- package/src/components/CheckboxView.tsx +5 -5
- package/src/components/CustomExpandCollapseIcon.tsx +2 -2
- package/src/components/NodeList.tsx +31 -34
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
⚡️Super-fast Tree view with multi-selection capabilities, using checkboxes and search filtering.
|
|
4
4
|
|
|
5
|
-
[](https://badge.fury.io/js/react-native-tree-multi-select) [](https://github.com/JairajJangle/react-native-tree-multi-select/blob/main/LICENSE) [](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml)    [](https://github.com/JairajJangle/react-native-tree-multi-select/issues?q=is%3Aopen+is%3Aissue) [](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml)  [](https://snack.expo.dev/@futurejj/ludicrous-red-popcorn)
|
|
5
|
+
[](https://badge.fury.io/js/react-native-tree-multi-select) [](https://github.com/JairajJangle/react-native-tree-multi-select/blob/main/LICENSE) [](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml)    [](https://github.com/JairajJangle/react-native-tree-multi-select/issues?q=is%3Aopen+is%3Aissue) [](https://github.com/JairajJangle/react-native-tree-multi-select/actions/workflows/ci.yml)  [](https://snack.expo.dev/@futurejj/ludicrous-red-popcorn)
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
package/lib/commonjs/TreeView.js
CHANGED
|
@@ -10,6 +10,7 @@ var _NodeList = _interopRequireDefault(require("./components/NodeList"));
|
|
|
10
10
|
var _helpers = require("./helpers");
|
|
11
11
|
var _treeView = require("./store/treeView.store");
|
|
12
12
|
var _usePreviousState = _interopRequireDefault(require("./utils/usePreviousState"));
|
|
13
|
+
var _shallow = require("zustand/react/shallow");
|
|
13
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
15
|
const _TreeView = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
15
16
|
const {
|
|
@@ -36,7 +37,17 @@ const _TreeView = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
|
36
37
|
updateSearchKeys,
|
|
37
38
|
checked,
|
|
38
39
|
cleanUpTreeViewStore
|
|
39
|
-
} = (0, _treeView.useTreeViewStore)()
|
|
40
|
+
} = (0, _treeView.useTreeViewStore)((0, _shallow.useShallow)(state => ({
|
|
41
|
+
expanded: state.expanded,
|
|
42
|
+
updateExpanded: state.updateExpanded,
|
|
43
|
+
initialTreeViewData: state.initialTreeViewData,
|
|
44
|
+
updateInitialTreeViewData: state.updateInitialTreeViewData,
|
|
45
|
+
searchText: state.searchText,
|
|
46
|
+
updateSearchText: state.updateSearchText,
|
|
47
|
+
updateSearchKeys: state.updateSearchKeys,
|
|
48
|
+
checked: state.checked,
|
|
49
|
+
cleanUpTreeViewStore: state.cleanUpTreeViewStore
|
|
50
|
+
})));
|
|
40
51
|
_react.default.useImperativeHandle(ref, () => ({
|
|
41
52
|
selectAll: _helpers.selectAll,
|
|
42
53
|
unselectAll: _helpers.unselectAll,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_NodeList","_helpers","_treeView","_usePreviousState","obj","__esModule","default","_TreeView","React","forwardRef","props","ref","data","onCheck","onExpand","preselectedIds","preExpandedIds","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","expanded","updateExpanded","initialTreeViewData","updateInitialTreeViewData","searchText","updateSearchText","updateSearchKeys","checked","cleanUpTreeViewStore","useTreeViewStore","useImperativeHandle","selectAll","unselectAll","selectAllFiltered","unselectAllFiltered","expandAll","collapseAll","expandNodes","collapseNodes","selectNodes","unselectNodes","setSearchText","prevSearchText","usePreviousState","useEffect","initializeNodeMaps","toggleCheckboxes","ids","text","keys","getIds","useCallback","node","children","length","id","flatMap","item","Array","from","InteractionManager","runAfterInteractions","Set","createElement","TreeView","exports","memo"],"sourceRoot":"../../src","sources":["TreeView.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAMA,IAAAE,SAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAYA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,iBAAA,GAAAN,sBAAA,CAAAC,OAAA;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_NodeList","_helpers","_treeView","_usePreviousState","_shallow","obj","__esModule","default","_TreeView","React","forwardRef","props","ref","data","onCheck","onExpand","preselectedIds","preExpandedIds","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","expanded","updateExpanded","initialTreeViewData","updateInitialTreeViewData","searchText","updateSearchText","updateSearchKeys","checked","cleanUpTreeViewStore","useTreeViewStore","useShallow","state","useImperativeHandle","selectAll","unselectAll","selectAllFiltered","unselectAllFiltered","expandAll","collapseAll","expandNodes","collapseNodes","selectNodes","unselectNodes","setSearchText","prevSearchText","usePreviousState","useEffect","initializeNodeMaps","toggleCheckboxes","ids","text","keys","getIds","useCallback","node","children","length","id","flatMap","item","Array","from","InteractionManager","runAfterInteractions","Set","createElement","TreeView","exports","memo"],"sourceRoot":"../../src","sources":["TreeView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -28,9 +28,9 @@ function _CheckboxView(props) {
|
|
|
28
28
|
ellipsizeMode: "middle"
|
|
29
29
|
}
|
|
30
30
|
} = props;
|
|
31
|
-
|
|
31
|
+
const customCheckboxValueTypeToRNPaperType = _react.default.useCallback(customCheckboxValueType => {
|
|
32
32
|
return customCheckboxValueType === 'indeterminate' ? 'indeterminate' : customCheckboxValueType ? 'checked' : 'unchecked';
|
|
33
|
-
}
|
|
33
|
+
}, []);
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* This function modifies the change in value when the previous state was indeterminate.
|
|
@@ -38,10 +38,10 @@ function _CheckboxView(props) {
|
|
|
38
38
|
*
|
|
39
39
|
* @param newValue This represents the updated CheckBox value after it's clicked.
|
|
40
40
|
*/
|
|
41
|
-
|
|
41
|
+
const onValueChangeModifier = _react.default.useCallback(() => {
|
|
42
42
|
// If the previous state was 'indeterminate', set checked to true
|
|
43
43
|
if (value === 'indeterminate') onValueChange(true);else onValueChange(!value);
|
|
44
|
-
}
|
|
44
|
+
}, [onValueChange, value]);
|
|
45
45
|
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
46
46
|
style: outermostParentViewStyle
|
|
47
47
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativePaper","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","arePropsEqual","prevProps","nextProps","value","text","CheckboxView","exports","React","memo","_CheckboxView","props","onValueChange","outermostParentViewStyle","defaultCheckboxViewStyles","mainView","checkboxParentViewStyle","checkboxView","textTouchableStyle","checkboxProps","textProps","style","checkboxTextStyle","numberOfLines","ellipsizeMode","customCheckboxValueTypeToRNPaperType","customCheckboxValueType","onValueChangeModifier","createElement","View","Checkbox","Android","status","onPress","TouchableOpacity","Text","StyleSheet","create","alignSelf","alignItems","flexDirection","marginEnd","marginStart","transform","scale","color","marginTop","Platform","OS","undefined"],"sourceRoot":"../../../src","sources":["components/CheckboxView.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAQA,IAAAE,iBAAA,GAAAF,OAAA;AAA8C,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,SAAA,IAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAI,GAAA,IAAAD,MAAA,QAAAP,MAAA,CAAAS,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAJ,MAAA,EAAAC,GAAA,KAAAL,MAAA,CAAAK,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAL,MAAA,YAAAJ,QAAA,CAAAa,KAAA,OAAAP,SAAA;AAM9C,SAASQ,aAAaA,CAClBC,SAAmC,EACnCC,SAAmC,EACrC;EACE,OACID,SAAS,CAACE,KAAK,KAAKD,SAAS,CAACC,KAAK,IACnCF,SAAS,CAACG,IAAI,KAAKF,SAAS,CAACE,IAAI;AAEzC;AAEO,MAAMC,YAAY,GAAAC,OAAA,CAAAD,YAAA,gBAAGE,cAAK,CAACC,IAAI,CAACC,aAAa,EAAET,aAAa,CAAC;AAEpE,SAASS,aAAaA,CAACC,KAA+B,EAAE;EACpD,MAAM;IACFP,KAAK;IACLQ,aAAa;IACbP,IAAI;IAEJQ,wBAAwB,GAAGC,yBAAyB,CAACC,QAAQ;IAC7DC,uBAAuB,GAAGF,yBAAyB,CAACG,YAAY;IAChEC,kBAAkB;IAElBC,aAAa;IACbC,SAAS,GAAG;MACRC,KAAK,EAAEP,yBAAyB,CAACQ,iBAAiB;MAClDC,aAAa,EAAE,CAAC;MAChBC,aAAa,EAAE;IACnB;EACJ,CAAC,GAAGb,KAAK;EAET,
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativePaper","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","arePropsEqual","prevProps","nextProps","value","text","CheckboxView","exports","React","memo","_CheckboxView","props","onValueChange","outermostParentViewStyle","defaultCheckboxViewStyles","mainView","checkboxParentViewStyle","checkboxView","textTouchableStyle","checkboxProps","textProps","style","checkboxTextStyle","numberOfLines","ellipsizeMode","customCheckboxValueTypeToRNPaperType","useCallback","customCheckboxValueType","onValueChangeModifier","createElement","View","Checkbox","Android","status","onPress","TouchableOpacity","Text","StyleSheet","create","alignSelf","alignItems","flexDirection","marginEnd","marginStart","transform","scale","color","marginTop","Platform","OS","undefined"],"sourceRoot":"../../../src","sources":["components/CheckboxView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_FontAwesome","obj","__esModule","default","CustomExpandCollapseIcon","exports","React","memo","_CustomExpandCollapseIcon","props","isExpanded","createElement","name","size","color"],"sourceRoot":"../../../src","sources":["components/CustomExpandCollapseIcon.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAF,sBAAA,CAAAC,OAAA;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_FontAwesome","obj","__esModule","default","CustomExpandCollapseIcon","exports","React","memo","_CustomExpandCollapseIcon","props","isExpanded","createElement","name","size","color"],"sourceRoot":"../../../src","sources":["components/CustomExpandCollapseIcon.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAoE,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAI7D,MAAMG,wBAAwB,GAAAC,OAAA,CAAAD,wBAAA,gBAAGE,cAAK,CAACC,IAAI,CAC9CC,yBACJ,CAAC;AAED,SAASA,yBAAyBA,CAACC,KAAsB,EAAE;EACvD,MAAM;IAAEC;EAAW,CAAC,GAAGD,KAAK;EAE5B,oBACIZ,MAAA,CAAAM,OAAA,CAAAQ,aAAA,CAACX,YAAA,CAAAG,OAAe;IACZS,IAAI,EACAF,UAAU,GACJ,YAAY,GACZ,aACT;IACDG,IAAI,EAAE,EAAG;IACTC,KAAK,EAAC;EAAO,CAChB,CAAC;AAEV","ignoreList":[]}
|
|
@@ -12,6 +12,7 @@ var _helpers = require("../helpers");
|
|
|
12
12
|
var _CheckboxView = require("./CheckboxView");
|
|
13
13
|
var _CustomExpandCollapseIcon = require("./CustomExpandCollapseIcon");
|
|
14
14
|
var _treeView2 = require("../constants/treeView.constants");
|
|
15
|
+
var _shallow = require("zustand/react/shallow");
|
|
15
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
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);
|
|
@@ -32,22 +33,19 @@ function _NodeList(props) {
|
|
|
32
33
|
updateInnerMostChildrenIds,
|
|
33
34
|
searchKeys,
|
|
34
35
|
searchText
|
|
35
|
-
} = (0, _treeView.useTreeViewStore)()
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
} = (0, _treeView.useTreeViewStore)((0, _shallow.useShallow)(state => ({
|
|
37
|
+
expanded: state.expanded,
|
|
38
|
+
initialTreeViewData: state.initialTreeViewData,
|
|
39
|
+
updateInnerMostChildrenIds: state.updateInnerMostChildrenIds,
|
|
40
|
+
searchKeys: state.searchKeys,
|
|
41
|
+
searchText: state.searchText
|
|
42
|
+
})));
|
|
38
43
|
|
|
39
44
|
// First we filter the tree as per the search term and keys
|
|
40
|
-
_react.default.
|
|
41
|
-
const searchTrimmed = searchText.trim().toLowerCase();
|
|
42
|
-
const tempFilterTree = (0, _helpers.getFilteredTreeData)(initialTreeViewData, searchTrimmed, searchKeys);
|
|
43
|
-
setFilteredTree(tempFilterTree);
|
|
44
|
-
}, [searchText, searchKeys, initialTreeViewData]);
|
|
45
|
+
const filteredTree = _react.default.useMemo(() => (0, _helpers.getFilteredTreeData)(initialTreeViewData, searchText.trim().toLowerCase(), searchKeys), [initialTreeViewData, searchText, searchKeys]);
|
|
45
46
|
|
|
46
47
|
// Then we flatten the treen to make it "render-compatible" in a "flat" list
|
|
47
|
-
_react.default.
|
|
48
|
-
const tempFlattenTreeData = (0, _helpers.getFlattenedTreeData)(filteredTree, expanded);
|
|
49
|
-
setFlattenedFilteredNodes(tempFlattenTreeData);
|
|
50
|
-
}, [filteredTree, expanded]);
|
|
48
|
+
const flattenedFilteredNodes = _react.default.useMemo(() => (0, _helpers.getFlattenedTreeData)(filteredTree, expanded), [filteredTree, expanded]);
|
|
51
49
|
|
|
52
50
|
// And update the innermost children id -> required to un/select filtered tree
|
|
53
51
|
_react.default.useEffect(() => {
|
|
@@ -107,17 +105,15 @@ function _Node(props) {
|
|
|
107
105
|
CustomNodeRowComponent
|
|
108
106
|
} = props;
|
|
109
107
|
const {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
setValue(getValue(isChecked, isIndeterminate));
|
|
120
|
-
}, [isChecked, isIndeterminate]);
|
|
108
|
+
isExpanded,
|
|
109
|
+
value
|
|
110
|
+
} = (0, _treeView.useTreeViewStore)((0, _shallow.useShallow)(state => ({
|
|
111
|
+
isExpanded: state.expanded.has(node.id),
|
|
112
|
+
value: getValue(state.checked.has(node.id),
|
|
113
|
+
// isChecked
|
|
114
|
+
state.indeterminate.has(node.id) // isIndeterminate
|
|
115
|
+
)
|
|
116
|
+
})));
|
|
121
117
|
const _onToggleExpand = _react.default.useCallback(() => {
|
|
122
118
|
(0, _helpers.handleToggleExpand)(node.id);
|
|
123
119
|
}, [node.id]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_flashList","_treeView","_helpers","_CheckboxView","_CustomExpandCollapseIcon","_treeView2","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","NodeList","React","memo","_NodeList","_default","exports","props","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","expanded","initialTreeViewData","updateInnerMostChildrenIds","searchKeys","searchText","useTreeViewStore","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_flashList","_treeView","_helpers","_CheckboxView","_CustomExpandCollapseIcon","_treeView2","_shallow","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","NodeList","React","memo","_NodeList","_default","exports","props","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","expanded","initialTreeViewData","updateInnerMostChildrenIds","searchKeys","searchText","useTreeViewStore","useShallow","state","filteredTree","useMemo","getFilteredTreeData","trim","toLowerCase","flattenedFilteredNodes","getFlattenedTreeData","useEffect","updatedInnerMostChildrenIds","getInnerMostChildrenIdsInTree","nodeRenderer","useCallback","item","createElement","Node","node","level","FlashList","estimatedItemSize","removeClippedSubviews","keyboardShouldPersistTaps","drawDistance","data","renderItem","ListHeaderComponent","HeaderFooterView","ListFooterComponent","View","style","styles","defaultHeaderFooter","getValue","isChecked","isIndeterminate","_Node","defaultIndentationMultiplier","CustomExpandCollapseIcon","CheckboxView","TouchableOpacity","isExpanded","value","has","id","checked","indeterminate","_onToggleExpand","handleToggleExpand","_onCheck","toggleCheckboxes","_node$children","nodeCheckboxAndArrowRow","paddingStart","text","name","onValueChange","children","nodeExpandableArrowTouchable","onPress","checkedValue","onCheck","onExpand","StyleSheet","create","padding","flex","flexDirection","alignItems","minWidth"],"sourceRoot":"../../../src","sources":["components/NodeList.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/TreeView.js
CHANGED
|
@@ -4,6 +4,7 @@ import NodeList from './components/NodeList';
|
|
|
4
4
|
import { selectAll, selectAllFiltered, unselectAll, unselectAllFiltered, initializeNodeMaps, expandAll, collapseAll, toggleCheckboxes, expandNodes, collapseNodes } from './helpers';
|
|
5
5
|
import { useTreeViewStore } from './store/treeView.store';
|
|
6
6
|
import usePreviousState from './utils/usePreviousState';
|
|
7
|
+
import { useShallow } from "zustand/react/shallow";
|
|
7
8
|
const _TreeView = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
8
9
|
const {
|
|
9
10
|
data,
|
|
@@ -29,7 +30,17 @@ const _TreeView = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
29
30
|
updateSearchKeys,
|
|
30
31
|
checked,
|
|
31
32
|
cleanUpTreeViewStore
|
|
32
|
-
} = useTreeViewStore(
|
|
33
|
+
} = useTreeViewStore(useShallow(state => ({
|
|
34
|
+
expanded: state.expanded,
|
|
35
|
+
updateExpanded: state.updateExpanded,
|
|
36
|
+
initialTreeViewData: state.initialTreeViewData,
|
|
37
|
+
updateInitialTreeViewData: state.updateInitialTreeViewData,
|
|
38
|
+
searchText: state.searchText,
|
|
39
|
+
updateSearchText: state.updateSearchText,
|
|
40
|
+
updateSearchKeys: state.updateSearchKeys,
|
|
41
|
+
checked: state.checked,
|
|
42
|
+
cleanUpTreeViewStore: state.cleanUpTreeViewStore
|
|
43
|
+
})));
|
|
33
44
|
React.useImperativeHandle(ref, () => ({
|
|
34
45
|
selectAll,
|
|
35
46
|
unselectAll,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","InteractionManager","NodeList","selectAll","selectAllFiltered","unselectAll","unselectAllFiltered","initializeNodeMaps","expandAll","collapseAll","toggleCheckboxes","expandNodes","collapseNodes","useTreeViewStore","usePreviousState","_TreeView","forwardRef","props","ref","data","onCheck","onExpand","preselectedIds","preExpandedIds","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","expanded","updateExpanded","initialTreeViewData","updateInitialTreeViewData","searchText","updateSearchText","updateSearchKeys","checked","cleanUpTreeViewStore","useImperativeHandle","selectNodes","unselectNodes","setSearchText","prevSearchText","useEffect","ids","text","keys","getIds","useCallback","node","children","length","id","flatMap","item","Array","from","runAfterInteractions","Set","createElement","TreeView","memo"],"sourceRoot":"../../src","sources":["TreeView.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,kBAAkB,QAAQ,cAAc;AAMjD,OAAOC,QAAQ,MAAM,uBAAuB;AAC5C,SACEC,SAAS,EACTC,iBAAiB,EACjBC,WAAW,EACXC,mBAAmB,EACnBC,kBAAkB,EAClBC,SAAS,EACTC,WAAW,EACXC,gBAAgB,EAChBC,WAAW,EACXC,aAAa,QACR,WAAW;AAClB,SAASC,gBAAgB,QAAQ,wBAAwB;AACzD,OAAOC,gBAAgB,MAAM,0BAA0B;
|
|
1
|
+
{"version":3,"names":["React","InteractionManager","NodeList","selectAll","selectAllFiltered","unselectAll","unselectAllFiltered","initializeNodeMaps","expandAll","collapseAll","toggleCheckboxes","expandNodes","collapseNodes","useTreeViewStore","usePreviousState","useShallow","_TreeView","forwardRef","props","ref","data","onCheck","onExpand","preselectedIds","preExpandedIds","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","expanded","updateExpanded","initialTreeViewData","updateInitialTreeViewData","searchText","updateSearchText","updateSearchKeys","checked","cleanUpTreeViewStore","state","useImperativeHandle","selectNodes","unselectNodes","setSearchText","prevSearchText","useEffect","ids","text","keys","getIds","useCallback","node","children","length","id","flatMap","item","Array","from","runAfterInteractions","Set","createElement","TreeView","memo"],"sourceRoot":"../../src","sources":["TreeView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -21,9 +21,9 @@ function _CheckboxView(props) {
|
|
|
21
21
|
ellipsizeMode: "middle"
|
|
22
22
|
}
|
|
23
23
|
} = props;
|
|
24
|
-
|
|
24
|
+
const customCheckboxValueTypeToRNPaperType = React.useCallback(customCheckboxValueType => {
|
|
25
25
|
return customCheckboxValueType === 'indeterminate' ? 'indeterminate' : customCheckboxValueType ? 'checked' : 'unchecked';
|
|
26
|
-
}
|
|
26
|
+
}, []);
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
29
|
* This function modifies the change in value when the previous state was indeterminate.
|
|
@@ -31,10 +31,10 @@ function _CheckboxView(props) {
|
|
|
31
31
|
*
|
|
32
32
|
* @param newValue This represents the updated CheckBox value after it's clicked.
|
|
33
33
|
*/
|
|
34
|
-
|
|
34
|
+
const onValueChangeModifier = React.useCallback(() => {
|
|
35
35
|
// If the previous state was 'indeterminate', set checked to true
|
|
36
36
|
if (value === 'indeterminate') onValueChange(true);else onValueChange(!value);
|
|
37
|
-
}
|
|
37
|
+
}, [onValueChange, value]);
|
|
38
38
|
return /*#__PURE__*/React.createElement(View, {
|
|
39
39
|
style: outermostParentViewStyle
|
|
40
40
|
}, /*#__PURE__*/React.createElement(View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Platform","StyleSheet","Text","TouchableOpacity","View","Checkbox","arePropsEqual","prevProps","nextProps","value","text","CheckboxView","memo","_CheckboxView","props","onValueChange","outermostParentViewStyle","defaultCheckboxViewStyles","mainView","checkboxParentViewStyle","checkboxView","textTouchableStyle","checkboxProps","textProps","style","checkboxTextStyle","numberOfLines","ellipsizeMode","customCheckboxValueTypeToRNPaperType","customCheckboxValueType","onValueChangeModifier","createElement","Android","_extends","status","onPress","create","alignSelf","alignItems","flexDirection","marginEnd","marginStart","transform","scale","color","marginTop","OS","undefined"],"sourceRoot":"../../../src","sources":["components/CheckboxView.tsx"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACIC,QAAQ,EACRC,UAAU,EACVC,IAAI,EACJC,gBAAgB,EAChBC,IAAI,QACD,cAAc;AAErB,SAASC,QAAQ,QAAQ,oBAAoB;AAM7C,SAASC,aAAaA,CAClBC,SAAmC,EACnCC,SAAmC,EACrC;EACE,OACID,SAAS,CAACE,KAAK,KAAKD,SAAS,CAACC,KAAK,IACnCF,SAAS,CAACG,IAAI,KAAKF,SAAS,CAACE,IAAI;AAEzC;AAEA,OAAO,MAAMC,YAAY,gBAAGZ,KAAK,CAACa,IAAI,CAACC,aAAa,EAAEP,aAAa,CAAC;AAEpE,SAASO,aAAaA,CAACC,KAA+B,EAAE;EACpD,MAAM;IACFL,KAAK;IACLM,aAAa;IACbL,IAAI;IAEJM,wBAAwB,GAAGC,yBAAyB,CAACC,QAAQ;IAC7DC,uBAAuB,GAAGF,yBAAyB,CAACG,YAAY;IAChEC,kBAAkB;IAElBC,aAAa;IACbC,SAAS,GAAG;MACRC,KAAK,EAAEP,yBAAyB,CAACQ,iBAAiB;MAClDC,aAAa,EAAE,CAAC;MAChBC,aAAa,EAAE;IACnB;EACJ,CAAC,GAAGb,KAAK;EAET,
|
|
1
|
+
{"version":3,"names":["React","Platform","StyleSheet","Text","TouchableOpacity","View","Checkbox","arePropsEqual","prevProps","nextProps","value","text","CheckboxView","memo","_CheckboxView","props","onValueChange","outermostParentViewStyle","defaultCheckboxViewStyles","mainView","checkboxParentViewStyle","checkboxView","textTouchableStyle","checkboxProps","textProps","style","checkboxTextStyle","numberOfLines","ellipsizeMode","customCheckboxValueTypeToRNPaperType","useCallback","customCheckboxValueType","onValueChangeModifier","createElement","Android","_extends","status","onPress","create","alignSelf","alignItems","flexDirection","marginEnd","marginStart","transform","scale","color","marginTop","OS","undefined"],"sourceRoot":"../../../src","sources":["components/CheckboxView.tsx"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACIC,QAAQ,EACRC,UAAU,EACVC,IAAI,EACJC,gBAAgB,EAChBC,IAAI,QACD,cAAc;AAErB,SAASC,QAAQ,QAAQ,oBAAoB;AAM7C,SAASC,aAAaA,CAClBC,SAAmC,EACnCC,SAAmC,EACrC;EACE,OACID,SAAS,CAACE,KAAK,KAAKD,SAAS,CAACC,KAAK,IACnCF,SAAS,CAACG,IAAI,KAAKF,SAAS,CAACE,IAAI;AAEzC;AAEA,OAAO,MAAMC,YAAY,gBAAGZ,KAAK,CAACa,IAAI,CAACC,aAAa,EAAEP,aAAa,CAAC;AAEpE,SAASO,aAAaA,CAACC,KAA+B,EAAE;EACpD,MAAM;IACFL,KAAK;IACLM,aAAa;IACbL,IAAI;IAEJM,wBAAwB,GAAGC,yBAAyB,CAACC,QAAQ;IAC7DC,uBAAuB,GAAGF,yBAAyB,CAACG,YAAY;IAChEC,kBAAkB;IAElBC,aAAa;IACbC,SAAS,GAAG;MACRC,KAAK,EAAEP,yBAAyB,CAACQ,iBAAiB;MAClDC,aAAa,EAAE,CAAC;MAChBC,aAAa,EAAE;IACnB;EACJ,CAAC,GAAGb,KAAK;EAET,MAAMc,oCAAoC,GAAG7B,KAAK,CAAC8B,WAAW,CAC1DC,uBAA0C,IACzC;IACD,OAAOA,uBAAuB,KAAK,eAAe,GAC5C,eAAe,GACfA,uBAAuB,GACnB,SAAS,GACT,WAAW;EACzB,CAAC,EAAE,EAAE,CAAC;;EAEN;AACJ;AACA;AACA;AACA;AACA;EACI,MAAMC,qBAAqB,GAAGhC,KAAK,CAAC8B,WAAW,CAAC,MAAM;IAClD;IACA,IAAIpB,KAAK,KAAK,eAAe,EAAEM,aAAa,CAAC,IAAI,CAAC,CAAC,KAC9CA,aAAa,CAAC,CAACN,KAAK,CAAC;EAC9B,CAAC,EAAE,CAACM,aAAa,EAAEN,KAAK,CAAC,CAAC;EAE1B,oBACIV,KAAA,CAAAiC,aAAA,CAAC5B,IAAI;IACDoB,KAAK,EAAER;EAAyB,gBAChCjB,KAAA,CAAAiC,aAAA,CAAC5B,IAAI;IACDoB,KAAK,EAAEL;EAAwB,gBAC/BpB,KAAA,CAAAiC,aAAA,CAAC3B,QAAQ,CAAC4B,OAAO,EAAAC,QAAA,KACTZ,aAAa;IACjBa,MAAM,EAAEP,oCAAoC,CAACnB,KAAK,CAAE;IACpD2B,OAAO,EAAEL;EAAsB,EAAE,CACnC,CAAC,EAENrB,IAAI,gBACDX,KAAA,CAAAiC,aAAA,CAAC7B,gBAAgB;IACbqB,KAAK,EAAEH,kBAAmB;IAC1Be,OAAO,EAAEL;EAAsB,gBAC/BhC,KAAA,CAAAiC,aAAA,CAAC9B,IAAI,EACGqB,SAAS,EACZb,IACC,CACQ,CAAC,GACnB,IACF,CAAC;AAEf;AAEA,OAAO,MAAMO,yBAAyB,GAAGhB,UAAU,CAACoC,MAAM,CAAC;EACvDnB,QAAQ,EAAE;IACNoB,SAAS,EAAE,QAAQ;IACnBC,UAAU,EAAE,QAAQ;IACpBC,aAAa,EAAE,KAAK;IAEpBC,SAAS,EAAE;EACf,CAAC;EACDrB,YAAY,EAAE;IACVsB,WAAW,EAAE,CAAC;IACdC,SAAS,EAAE,CAAC;MAAEC,KAAK,EAAE;IAAI,CAAC;EAC9B,CAAC;EACDnB,iBAAiB,EAAE;IACfoB,KAAK,EAAE,OAAO;IACdC,SAAS,EAAE9C,QAAQ,CAAC+C,EAAE,KAAK,SAAS,GAAG,CAAC,GAAGC;EAC/C;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import
|
|
2
|
+
import FontAwesomeIcon from 'react-native-vector-icons/FontAwesome';
|
|
3
3
|
export const CustomExpandCollapseIcon = /*#__PURE__*/React.memo(_CustomExpandCollapseIcon);
|
|
4
4
|
function _CustomExpandCollapseIcon(props) {
|
|
5
5
|
const {
|
|
6
6
|
isExpanded
|
|
7
7
|
} = props;
|
|
8
|
-
return /*#__PURE__*/React.createElement(
|
|
8
|
+
return /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
9
9
|
name: isExpanded ? 'caret-down' : 'caret-right',
|
|
10
10
|
size: 20,
|
|
11
11
|
color: "black"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","FontAwesomeIcon","CustomExpandCollapseIcon","memo","_CustomExpandCollapseIcon","props","isExpanded","createElement","name","size","color"],"sourceRoot":"../../../src","sources":["components/CustomExpandCollapseIcon.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,eAAe,MAAM,uCAAuC;AAInE,OAAO,MAAMC,wBAAwB,gBAAGF,KAAK,CAACG,IAAI,CAC9CC,yBACJ,CAAC;AAED,SAASA,yBAAyBA,CAACC,KAAsB,EAAE;EACvD,MAAM;IAAEC;EAAW,CAAC,GAAGD,KAAK;EAE5B,oBACIL,KAAA,CAAAO,aAAA,CAACN,eAAe;IACZO,IAAI,EACAF,UAAU,GACJ,YAAY,GACZ,aACT;IACDG,IAAI,EAAE,EAAG;IACTC,KAAK,EAAC;EAAO,CAChB,CAAC;AAEV","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ import { getFilteredTreeData, getFlattenedTreeData, getInnerMostChildrenIdsInTre
|
|
|
7
7
|
import { CheckboxView } from "./CheckboxView";
|
|
8
8
|
import { CustomExpandCollapseIcon } from "./CustomExpandCollapseIcon";
|
|
9
9
|
import { defaultIndentationMultiplier } from "../constants/treeView.constants";
|
|
10
|
+
import { useShallow } from 'zustand/react/shallow';
|
|
10
11
|
const NodeList = /*#__PURE__*/React.memo(_NodeList);
|
|
11
12
|
export default NodeList;
|
|
12
13
|
function _NodeList(props) {
|
|
@@ -25,22 +26,19 @@ function _NodeList(props) {
|
|
|
25
26
|
updateInnerMostChildrenIds,
|
|
26
27
|
searchKeys,
|
|
27
28
|
searchText
|
|
28
|
-
} = useTreeViewStore(
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
} = useTreeViewStore(useShallow(state => ({
|
|
30
|
+
expanded: state.expanded,
|
|
31
|
+
initialTreeViewData: state.initialTreeViewData,
|
|
32
|
+
updateInnerMostChildrenIds: state.updateInnerMostChildrenIds,
|
|
33
|
+
searchKeys: state.searchKeys,
|
|
34
|
+
searchText: state.searchText
|
|
35
|
+
})));
|
|
31
36
|
|
|
32
37
|
// First we filter the tree as per the search term and keys
|
|
33
|
-
React.
|
|
34
|
-
const searchTrimmed = searchText.trim().toLowerCase();
|
|
35
|
-
const tempFilterTree = getFilteredTreeData(initialTreeViewData, searchTrimmed, searchKeys);
|
|
36
|
-
setFilteredTree(tempFilterTree);
|
|
37
|
-
}, [searchText, searchKeys, initialTreeViewData]);
|
|
38
|
+
const filteredTree = React.useMemo(() => getFilteredTreeData(initialTreeViewData, searchText.trim().toLowerCase(), searchKeys), [initialTreeViewData, searchText, searchKeys]);
|
|
38
39
|
|
|
39
40
|
// Then we flatten the treen to make it "render-compatible" in a "flat" list
|
|
40
|
-
React.
|
|
41
|
-
const tempFlattenTreeData = getFlattenedTreeData(filteredTree, expanded);
|
|
42
|
-
setFlattenedFilteredNodes(tempFlattenTreeData);
|
|
43
|
-
}, [filteredTree, expanded]);
|
|
41
|
+
const flattenedFilteredNodes = React.useMemo(() => getFlattenedTreeData(filteredTree, expanded), [filteredTree, expanded]);
|
|
44
42
|
|
|
45
43
|
// And update the innermost children id -> required to un/select filtered tree
|
|
46
44
|
React.useEffect(() => {
|
|
@@ -100,17 +98,15 @@ function _Node(props) {
|
|
|
100
98
|
CustomNodeRowComponent
|
|
101
99
|
} = props;
|
|
102
100
|
const {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
setValue(getValue(isChecked, isIndeterminate));
|
|
113
|
-
}, [isChecked, isIndeterminate]);
|
|
101
|
+
isExpanded,
|
|
102
|
+
value
|
|
103
|
+
} = useTreeViewStore(useShallow(state => ({
|
|
104
|
+
isExpanded: state.expanded.has(node.id),
|
|
105
|
+
value: getValue(state.checked.has(node.id),
|
|
106
|
+
// isChecked
|
|
107
|
+
state.indeterminate.has(node.id) // isIndeterminate
|
|
108
|
+
)
|
|
109
|
+
})));
|
|
114
110
|
const _onToggleExpand = React.useCallback(() => {
|
|
115
111
|
handleToggleExpand(node.id);
|
|
116
112
|
}, [node.id]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","StyleSheet","TouchableOpacity","FlashList","useTreeViewStore","getFilteredTreeData","getFlattenedTreeData","getInnerMostChildrenIdsInTree","handleToggleExpand","toggleCheckboxes","CheckboxView","CustomExpandCollapseIcon","defaultIndentationMultiplier","NodeList","memo","_NodeList","props","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","expanded","initialTreeViewData","updateInnerMostChildrenIds","searchKeys","searchText","
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","TouchableOpacity","FlashList","useTreeViewStore","getFilteredTreeData","getFlattenedTreeData","getInnerMostChildrenIdsInTree","handleToggleExpand","toggleCheckboxes","CheckboxView","CustomExpandCollapseIcon","defaultIndentationMultiplier","useShallow","NodeList","memo","_NodeList","props","treeFlashListProps","checkBoxViewStyleProps","indentationMultiplier","CheckboxComponent","ExpandCollapseIconComponent","ExpandCollapseTouchableComponent","CustomNodeRowComponent","expanded","initialTreeViewData","updateInnerMostChildrenIds","searchKeys","searchText","state","filteredTree","useMemo","trim","toLowerCase","flattenedFilteredNodes","useEffect","updatedInnerMostChildrenIds","nodeRenderer","useCallback","item","createElement","Node","node","level","_extends","estimatedItemSize","removeClippedSubviews","keyboardShouldPersistTaps","drawDistance","data","renderItem","ListHeaderComponent","HeaderFooterView","ListFooterComponent","style","styles","defaultHeaderFooter","getValue","isChecked","isIndeterminate","_Node","isExpanded","value","has","id","checked","indeterminate","_onToggleExpand","_onCheck","_node$children","nodeCheckboxAndArrowRow","paddingStart","text","name","onValueChange","children","length","nodeExpandableArrowTouchable","onPress","checkedValue","onCheck","onExpand","create","padding","flex","flexDirection","alignItems","minWidth"],"sourceRoot":"../../../src","sources":["components/NodeList.tsx"],"mappings":"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","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;AAuLhC,eAAO,MAAM,QAAQ,8GAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeList.d.ts","sourceRoot":"","sources":["../../../src/components/NodeList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"NodeList.d.ts","sourceRoot":"","sources":["../../../src/components/NodeList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,KAAK,EAGR,aAAa,EAEhB,MAAM,yBAAyB,CAAC;AAejC,QAAA,MAAM,QAAQ,6CAAwB,CAAC;AACvC,eAAe,QAAQ,CAAC;AAExB,iBAAS,SAAS,CAAC,KAAK,EAAE,aAAa,qBAwFtC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-tree-multi-select",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.3",
|
|
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",
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"pod-install": "^0.1.0",
|
|
105
105
|
"prettier": "^2.0.5",
|
|
106
106
|
"react": "18.2.0",
|
|
107
|
-
"react-native": "0.72.
|
|
107
|
+
"react-native": "^0.72.15",
|
|
108
108
|
"react-native-builder-bob": "^0.20.0",
|
|
109
109
|
"react-native-paper": "5.x.x",
|
|
110
110
|
"react-test-renderer": "18.2.0",
|
package/src/TreeView.tsx
CHANGED
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
} from './helpers';
|
|
21
21
|
import { useTreeViewStore } from './store/treeView.store';
|
|
22
22
|
import usePreviousState from './utils/usePreviousState';
|
|
23
|
+
import { useShallow } from "zustand/react/shallow";
|
|
23
24
|
|
|
24
25
|
const _TreeView = React.forwardRef<TreeViewRef, TreeViewProps>(
|
|
25
26
|
(props, ref) => {
|
|
@@ -59,7 +60,24 @@ const _TreeView = React.forwardRef<TreeViewRef, TreeViewProps>(
|
|
|
59
60
|
checked,
|
|
60
61
|
|
|
61
62
|
cleanUpTreeViewStore,
|
|
62
|
-
} = useTreeViewStore(
|
|
63
|
+
} = useTreeViewStore(useShallow(
|
|
64
|
+
state => ({
|
|
65
|
+
expanded: state.expanded,
|
|
66
|
+
updateExpanded: state.updateExpanded,
|
|
67
|
+
|
|
68
|
+
initialTreeViewData: state.initialTreeViewData,
|
|
69
|
+
updateInitialTreeViewData: state.updateInitialTreeViewData,
|
|
70
|
+
|
|
71
|
+
searchText: state.searchText,
|
|
72
|
+
updateSearchText: state.updateSearchText,
|
|
73
|
+
|
|
74
|
+
updateSearchKeys: state.updateSearchKeys,
|
|
75
|
+
|
|
76
|
+
checked: state.checked,
|
|
77
|
+
|
|
78
|
+
cleanUpTreeViewStore: state.cleanUpTreeViewStore,
|
|
79
|
+
})
|
|
80
|
+
));
|
|
63
81
|
|
|
64
82
|
React.useImperativeHandle(ref, () => ({
|
|
65
83
|
selectAll,
|
|
@@ -43,15 +43,15 @@ function _CheckboxView(props: BuiltInCheckBoxViewProps) {
|
|
|
43
43
|
},
|
|
44
44
|
} = props;
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
const customCheckboxValueTypeToRNPaperType = React.useCallback((
|
|
47
47
|
customCheckboxValueType: CheckboxValueType
|
|
48
|
-
) {
|
|
48
|
+
) => {
|
|
49
49
|
return customCheckboxValueType === 'indeterminate'
|
|
50
50
|
? 'indeterminate'
|
|
51
51
|
: customCheckboxValueType
|
|
52
52
|
? 'checked'
|
|
53
53
|
: 'unchecked';
|
|
54
|
-
}
|
|
54
|
+
}, []);
|
|
55
55
|
|
|
56
56
|
/**
|
|
57
57
|
* This function modifies the change in value when the previous state was indeterminate.
|
|
@@ -59,11 +59,11 @@ function _CheckboxView(props: BuiltInCheckBoxViewProps) {
|
|
|
59
59
|
*
|
|
60
60
|
* @param newValue This represents the updated CheckBox value after it's clicked.
|
|
61
61
|
*/
|
|
62
|
-
|
|
62
|
+
const onValueChangeModifier = React.useCallback(() => {
|
|
63
63
|
// If the previous state was 'indeterminate', set checked to true
|
|
64
64
|
if (value === 'indeterminate') onValueChange(true);
|
|
65
65
|
else onValueChange(!value);
|
|
66
|
-
}
|
|
66
|
+
}, [onValueChange, value]);
|
|
67
67
|
|
|
68
68
|
return (
|
|
69
69
|
<View
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import
|
|
2
|
+
import FontAwesomeIcon from 'react-native-vector-icons/FontAwesome';
|
|
3
3
|
|
|
4
4
|
import { ExpandIconProps } from "src/types/treeView.types";
|
|
5
5
|
|
|
@@ -11,7 +11,7 @@ function _CustomExpandCollapseIcon(props: ExpandIconProps) {
|
|
|
11
11
|
const { isExpanded } = props;
|
|
12
12
|
|
|
13
13
|
return (
|
|
14
|
-
<
|
|
14
|
+
<FontAwesomeIcon
|
|
15
15
|
name={
|
|
16
16
|
isExpanded
|
|
17
17
|
? 'caret-down'
|
|
@@ -8,8 +8,6 @@ import {
|
|
|
8
8
|
import { FlashList } from "@shopify/flash-list";
|
|
9
9
|
|
|
10
10
|
import type {
|
|
11
|
-
TreeNode,
|
|
12
|
-
|
|
13
11
|
CheckboxValueType,
|
|
14
12
|
__FlattenedTreeNode__,
|
|
15
13
|
NodeListProps,
|
|
@@ -27,6 +25,7 @@ import {
|
|
|
27
25
|
import { CheckboxView } from "./CheckboxView";
|
|
28
26
|
import { CustomExpandCollapseIcon } from "./CustomExpandCollapseIcon";
|
|
29
27
|
import { defaultIndentationMultiplier } from "../constants/treeView.constants";
|
|
28
|
+
import { useShallow } from 'zustand/react/shallow';
|
|
30
29
|
|
|
31
30
|
const NodeList = React.memo(_NodeList);
|
|
32
31
|
export default NodeList;
|
|
@@ -49,31 +48,28 @@ function _NodeList(props: NodeListProps) {
|
|
|
49
48
|
updateInnerMostChildrenIds,
|
|
50
49
|
searchKeys,
|
|
51
50
|
searchText
|
|
52
|
-
} = useTreeViewStore(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
} = useTreeViewStore(useShallow(
|
|
52
|
+
state => ({
|
|
53
|
+
expanded: state.expanded,
|
|
54
|
+
initialTreeViewData: state.initialTreeViewData,
|
|
55
|
+
updateInnerMostChildrenIds: state.updateInnerMostChildrenIds,
|
|
56
|
+
searchKeys: state.searchKeys,
|
|
57
|
+
searchText: state.searchText,
|
|
58
|
+
})
|
|
59
|
+
));
|
|
57
60
|
|
|
58
61
|
// First we filter the tree as per the search term and keys
|
|
59
|
-
React.
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
searchKeys
|
|
65
|
-
);
|
|
66
|
-
setFilteredTree(tempFilterTree);
|
|
67
|
-
}, [searchText, searchKeys, initialTreeViewData]);
|
|
62
|
+
const filteredTree = React.useMemo(() => getFilteredTreeData(
|
|
63
|
+
initialTreeViewData,
|
|
64
|
+
searchText.trim().toLowerCase(),
|
|
65
|
+
searchKeys
|
|
66
|
+
), [initialTreeViewData, searchText, searchKeys]);
|
|
68
67
|
|
|
69
68
|
// Then we flatten the treen to make it "render-compatible" in a "flat" list
|
|
70
|
-
React.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
);
|
|
75
|
-
setFlattenedFilteredNodes(tempFlattenTreeData);
|
|
76
|
-
}, [filteredTree, expanded]);
|
|
69
|
+
const flattenedFilteredNodes = React.useMemo(() => getFlattenedTreeData(
|
|
70
|
+
filteredTree,
|
|
71
|
+
expanded,
|
|
72
|
+
), [filteredTree, expanded]);
|
|
77
73
|
|
|
78
74
|
// And update the innermost children id -> required to un/select filtered tree
|
|
79
75
|
React.useEffect(() => {
|
|
@@ -158,17 +154,18 @@ function _Node(props: NodeProps) {
|
|
|
158
154
|
CustomNodeRowComponent
|
|
159
155
|
} = props;
|
|
160
156
|
|
|
161
|
-
const {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
157
|
+
const {
|
|
158
|
+
isExpanded,
|
|
159
|
+
value,
|
|
160
|
+
} = useTreeViewStore(useShallow(
|
|
161
|
+
state => ({
|
|
162
|
+
isExpanded: state.expanded.has(node.id),
|
|
163
|
+
value: getValue(
|
|
164
|
+
state.checked.has(node.id), // isChecked
|
|
165
|
+
state.indeterminate.has(node.id) // isIndeterminate
|
|
166
|
+
),
|
|
167
|
+
})
|
|
168
|
+
));
|
|
172
169
|
|
|
173
170
|
const _onToggleExpand = React.useCallback(() => {
|
|
174
171
|
handleToggleExpand(node.id);
|