@mui/x-tree-view 8.10.2 → 8.11.1
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/CHANGELOG.md +214 -13
- package/RichTreeView/RichTreeView.js +16 -15
- package/RichTreeView/RichTreeView.types.d.ts +3 -2
- package/SimpleTreeView/SimpleTreeView.js +10 -9
- package/SimpleTreeView/SimpleTreeView.types.d.ts +3 -2
- package/TreeItem/TreeItem.d.ts +1 -1
- package/TreeItem/TreeItem.types.d.ts +3 -1
- package/TreeItemProvider/TreeItemProvider.js +3 -3
- package/esm/RichTreeView/RichTreeView.js +16 -15
- package/esm/RichTreeView/RichTreeView.types.d.ts +3 -2
- package/esm/SimpleTreeView/SimpleTreeView.js +10 -9
- package/esm/SimpleTreeView/SimpleTreeView.types.d.ts +3 -2
- package/esm/TreeItem/TreeItem.d.ts +1 -1
- package/esm/TreeItem/TreeItem.types.d.ts +3 -1
- package/esm/TreeItemProvider/TreeItemProvider.js +3 -3
- package/esm/hooks/useTreeItemModel.js +3 -3
- package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +24 -25
- package/esm/index.js +1 -1
- package/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +2 -2
- package/esm/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
- package/esm/internals/components/RichTreeViewItems.js +5 -5
- package/esm/internals/corePlugins/useTreeViewId/index.d.ts +2 -1
- package/esm/internals/corePlugins/useTreeViewId/index.js +2 -1
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.js +10 -13
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +8 -34
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +9 -9
- package/esm/internals/index.d.ts +6 -14
- package/esm/internals/index.js +6 -13
- package/esm/internals/models/plugin.d.ts +2 -3
- package/esm/internals/models/treeView.d.ts +4 -6
- package/esm/internals/plugins/useTreeViewExpansion/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewExpansion/index.js +2 -1
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +26 -30
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +24 -316
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +27 -38
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +7 -1
- package/esm/internals/plugins/useTreeViewFocus/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewFocus/index.js +2 -1
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +17 -21
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +20 -628
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +25 -37
- package/esm/internals/plugins/useTreeViewItems/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewItems/index.js +2 -1
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +78 -99
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +52 -1142
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +58 -98
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +1 -1
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +1 -1
- package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +32 -42
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +22 -22
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -0
- package/esm/internals/plugins/useTreeViewLabel/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewLabel/index.js +2 -1
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +4 -4
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +17 -25
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -100
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +24 -34
- package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewLazyLoading/index.js +1 -1
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +18 -245
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +15 -27
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +20 -6
- package/esm/internals/plugins/useTreeViewSelection/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewSelection/index.js +2 -1
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +25 -38
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +30 -34
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +38 -517
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +46 -71
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +1 -0
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +10 -10
- package/esm/internals/useTreeView/useTreeView.d.ts +1 -1
- package/esm/internals/useTreeView/useTreeView.js +11 -18
- package/esm/internals/useTreeView/useTreeView.types.d.ts +1 -1
- package/esm/internals/useTreeView/useTreeViewBuildContext.d.ts +2 -3
- package/esm/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -2
- package/esm/internals/utils/tree.js +33 -33
- package/esm/useTreeItem/useTreeItem.js +14 -14
- package/esm/useTreeItem/useTreeItem.types.d.ts +2 -1
- package/hooks/useTreeItemModel.js +3 -3
- package/hooks/useTreeItemUtils/useTreeItemUtils.js +18 -19
- package/index.js +1 -1
- package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +1 -1
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
- package/internals/components/RichTreeViewItems.js +5 -5
- package/internals/corePlugins/useTreeViewId/index.d.ts +2 -1
- package/internals/corePlugins/useTreeViewId/index.js +8 -1
- package/internals/corePlugins/useTreeViewId/useTreeViewId.js +9 -12
- package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +8 -34
- package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +10 -10
- package/internals/index.d.ts +6 -14
- package/internals/index.js +12 -73
- package/internals/models/plugin.d.ts +2 -3
- package/internals/models/treeView.d.ts +4 -6
- package/internals/plugins/useTreeViewExpansion/index.d.ts +2 -1
- package/internals/plugins/useTreeViewExpansion/index.js +8 -1
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +24 -28
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +24 -316
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +27 -38
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +7 -1
- package/internals/plugins/useTreeViewFocus/index.d.ts +2 -1
- package/internals/plugins/useTreeViewFocus/index.js +8 -1
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +14 -18
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +20 -628
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +23 -35
- package/internals/plugins/useTreeViewItems/index.d.ts +2 -1
- package/internals/plugins/useTreeViewItems/index.js +8 -1
- package/internals/plugins/useTreeViewItems/useTreeViewItems.js +77 -98
- package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +52 -1142
- package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +59 -99
- package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +1 -1
- package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +1 -1
- package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +32 -42
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +18 -18
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -0
- package/internals/plugins/useTreeViewLabel/index.d.ts +2 -1
- package/internals/plugins/useTreeViewLabel/index.js +8 -1
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +3 -3
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -24
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -100
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +24 -34
- package/internals/plugins/useTreeViewLazyLoading/index.d.ts +2 -1
- package/internals/plugins/useTreeViewLazyLoading/index.js +8 -1
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +18 -245
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +16 -28
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +20 -6
- package/internals/plugins/useTreeViewSelection/index.d.ts +2 -1
- package/internals/plugins/useTreeViewSelection/index.js +8 -1
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +23 -37
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +29 -33
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +38 -517
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +46 -71
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +1 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +8 -8
- package/internals/useTreeView/useTreeView.d.ts +1 -1
- package/internals/useTreeView/useTreeView.js +11 -18
- package/internals/useTreeView/useTreeView.types.d.ts +1 -1
- package/internals/useTreeView/useTreeViewBuildContext.d.ts +2 -3
- package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -2
- package/internals/utils/tree.js +31 -31
- package/package.json +12 -13
- package/useTreeItem/useTreeItem.js +14 -14
- package/useTreeItem/useTreeItem.types.d.ts +2 -1
- package/esm/internals/hooks/useSelector.d.ts +0 -4
- package/esm/internals/hooks/useSelector.js +0 -8
- package/esm/internals/utils/TreeViewStore.d.ts +0 -12
- package/esm/internals/utils/TreeViewStore.js +0 -22
- package/esm/internals/utils/selectors.d.ts +0 -21
- package/esm/internals/utils/selectors.js +0 -51
- package/internals/hooks/useSelector.d.ts +0 -4
- package/internals/hooks/useSelector.js +0 -16
- package/internals/utils/TreeViewStore.d.ts +0 -12
- package/internals/utils/TreeViewStore.js +0 -29
- package/internals/utils/selectors.d.ts +0 -21
- package/internals/utils/selectors.js +0 -58
|
@@ -1,56 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.useTreeViewSelectionItemPlugin = void 0;
|
|
8
|
-
var
|
|
9
|
-
var _fastObjectShallowCompare = require("@mui/x-internals/fastObjectShallowCompare");
|
|
7
|
+
var _store = require("@mui/x-internals/store");
|
|
10
8
|
var _TreeViewProvider = require("../../TreeViewProvider");
|
|
11
9
|
var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
|
|
12
10
|
var _useTreeViewSelection = require("./useTreeViewSelection.selectors");
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const isSelectionEnabledForItem = (0, _useTreeViewSelection.selectorIsItemSelectionEnabled)(state, itemId);
|
|
17
|
-
if ((0, _useTreeViewSelection.selectorIsItemSelected)(state, itemId)) {
|
|
18
|
-
return {
|
|
19
|
-
disabled: !isSelectionEnabledForItem,
|
|
20
|
-
visible: isCheckboxSelectionEnabled,
|
|
21
|
-
indeterminate: false,
|
|
22
|
-
checked: true
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
const children = (0, _useTreeViewItems.selectorItemOrderedChildrenIds)(state, itemId);
|
|
26
|
-
if (children.length === 0) {
|
|
27
|
-
return {
|
|
28
|
-
disabled: !isSelectionEnabledForItem,
|
|
29
|
-
visible: isCheckboxSelectionEnabled,
|
|
30
|
-
indeterminate: false,
|
|
31
|
-
checked: false
|
|
32
|
-
};
|
|
11
|
+
const selectorCheckboxSelectionStatus = (0, _store.createSelector)((state, itemId) => {
|
|
12
|
+
if (_useTreeViewSelection.selectionSelectors.isItemSelected(state, itemId)) {
|
|
13
|
+
return 'checked';
|
|
33
14
|
}
|
|
34
15
|
let hasSelectedDescendant = false;
|
|
35
16
|
let hasUnSelectedDescendant = false;
|
|
36
17
|
const traverseDescendants = itemToTraverseId => {
|
|
37
18
|
if (itemToTraverseId !== itemId) {
|
|
38
|
-
if (
|
|
19
|
+
if (_useTreeViewSelection.selectionSelectors.isItemSelected(state, itemToTraverseId)) {
|
|
39
20
|
hasSelectedDescendant = true;
|
|
40
21
|
} else {
|
|
41
22
|
hasUnSelectedDescendant = true;
|
|
42
23
|
}
|
|
43
24
|
}
|
|
44
|
-
|
|
25
|
+
_useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(state, itemToTraverseId).forEach(traverseDescendants);
|
|
45
26
|
};
|
|
46
27
|
traverseDescendants(itemId);
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
28
|
+
if (hasSelectedDescendant && hasUnSelectedDescendant) {
|
|
29
|
+
return 'indeterminate';
|
|
30
|
+
}
|
|
31
|
+
const shouldSelectBasedOnDescendants = _useTreeViewSelection.selectionSelectors.propagationRules(state).parents;
|
|
32
|
+
return shouldSelectBasedOnDescendants && hasSelectedDescendant && !hasUnSelectedDescendant ? 'checked' : 'empty';
|
|
33
|
+
});
|
|
54
34
|
const useTreeViewSelectionItemPlugin = ({
|
|
55
35
|
props
|
|
56
36
|
}) => {
|
|
@@ -60,7 +40,9 @@ const useTreeViewSelectionItemPlugin = ({
|
|
|
60
40
|
const {
|
|
61
41
|
store
|
|
62
42
|
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
63
|
-
const
|
|
43
|
+
const isCheckboxSelectionEnabled = (0, _store.useStore)(store, _useTreeViewSelection.selectionSelectors.isCheckboxSelectionEnabled);
|
|
44
|
+
const isItemSelectionEnabled = (0, _store.useStore)(store, _useTreeViewSelection.selectionSelectors.canItemBeSelected, itemId);
|
|
45
|
+
const checkboxSelectionStatus = (0, _store.useStore)(store, selectorCheckboxSelectionStatus, itemId);
|
|
64
46
|
return {
|
|
65
47
|
propsEnhancers: {
|
|
66
48
|
checkbox: ({
|
|
@@ -72,15 +54,19 @@ const useTreeViewSelectionItemPlugin = ({
|
|
|
72
54
|
if (event.defaultMuiPrevented) {
|
|
73
55
|
return;
|
|
74
56
|
}
|
|
75
|
-
if (!
|
|
57
|
+
if (!_useTreeViewSelection.selectionSelectors.canItemBeSelected(store.state, itemId)) {
|
|
76
58
|
return;
|
|
77
59
|
}
|
|
78
60
|
interactions.handleCheckboxSelection(event);
|
|
79
61
|
};
|
|
80
|
-
return
|
|
62
|
+
return {
|
|
81
63
|
tabIndex: -1,
|
|
82
|
-
onChange: handleChange
|
|
83
|
-
|
|
64
|
+
onChange: handleChange,
|
|
65
|
+
visible: isCheckboxSelectionEnabled,
|
|
66
|
+
disabled: !isItemSelectionEnabled,
|
|
67
|
+
checked: checkboxSelectionStatus === 'checked',
|
|
68
|
+
indeterminate: checkboxSelectionStatus === 'indeterminate'
|
|
69
|
+
};
|
|
84
70
|
}
|
|
85
71
|
}
|
|
86
72
|
};
|
|
@@ -27,9 +27,9 @@ const useTreeViewSelection = ({
|
|
|
27
27
|
const lastSelectedItem = React.useRef(null);
|
|
28
28
|
const lastSelectedRange = React.useRef({});
|
|
29
29
|
const setSelectedItems = (event, newModel, additionalItemsToPropagate) => {
|
|
30
|
-
const oldModel =
|
|
30
|
+
const oldModel = _useTreeViewSelection2.selectionSelectors.selectedItemsRaw(store.state);
|
|
31
31
|
let cleanModel;
|
|
32
|
-
const isMultiSelectEnabled =
|
|
32
|
+
const isMultiSelectEnabled = _useTreeViewSelection2.selectionSelectors.isMultiSelectEnabled(store.state);
|
|
33
33
|
if (isMultiSelectEnabled && (params.selectionPropagation.descendants || params.selectionPropagation.parents)) {
|
|
34
34
|
cleanModel = (0, _useTreeViewSelection.propagateSelection)({
|
|
35
35
|
store,
|
|
@@ -66,10 +66,8 @@ const useTreeViewSelection = ({
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
if (params.selectedItems === undefined) {
|
|
69
|
-
store.
|
|
70
|
-
|
|
71
|
-
selectedItems: cleanModel
|
|
72
|
-
})
|
|
69
|
+
store.set('selection', (0, _extends2.default)({}, store.state.selection, {
|
|
70
|
+
selectedItems: cleanModel
|
|
73
71
|
}));
|
|
74
72
|
}
|
|
75
73
|
params.onSelectedItemsChange?.(event, cleanModel);
|
|
@@ -80,14 +78,14 @@ const useTreeViewSelection = ({
|
|
|
80
78
|
keepExistingSelection = false,
|
|
81
79
|
shouldBeSelected
|
|
82
80
|
}) => {
|
|
83
|
-
if (!
|
|
81
|
+
if (!_useTreeViewSelection2.selectionSelectors.enabled(store.state)) {
|
|
84
82
|
return;
|
|
85
83
|
}
|
|
86
84
|
let newSelected;
|
|
87
|
-
const isMultiSelectEnabled =
|
|
85
|
+
const isMultiSelectEnabled = _useTreeViewSelection2.selectionSelectors.isMultiSelectEnabled(store.state);
|
|
88
86
|
if (keepExistingSelection) {
|
|
89
|
-
const oldSelected =
|
|
90
|
-
const isSelectedBefore =
|
|
87
|
+
const oldSelected = _useTreeViewSelection2.selectionSelectors.selectedItems(store.state);
|
|
88
|
+
const isSelectedBefore = _useTreeViewSelection2.selectionSelectors.isItemSelected(store.state, itemId);
|
|
91
89
|
if (isSelectedBefore && (shouldBeSelected === false || shouldBeSelected == null)) {
|
|
92
90
|
newSelected = oldSelected.filter(id => id !== itemId);
|
|
93
91
|
} else if (!isSelectedBefore && (shouldBeSelected === true || shouldBeSelected == null)) {
|
|
@@ -97,25 +95,25 @@ const useTreeViewSelection = ({
|
|
|
97
95
|
}
|
|
98
96
|
} else {
|
|
99
97
|
// eslint-disable-next-line no-lonely-if
|
|
100
|
-
if (shouldBeSelected === false || shouldBeSelected == null &&
|
|
98
|
+
if (shouldBeSelected === false || shouldBeSelected == null && _useTreeViewSelection2.selectionSelectors.isItemSelected(store.state, itemId)) {
|
|
101
99
|
newSelected = isMultiSelectEnabled ? [] : null;
|
|
102
100
|
} else {
|
|
103
101
|
newSelected = isMultiSelectEnabled ? [itemId] : itemId;
|
|
104
102
|
}
|
|
105
103
|
}
|
|
106
104
|
setSelectedItems(event, newSelected,
|
|
107
|
-
// If shouldBeSelected ===
|
|
105
|
+
// If shouldBeSelected === selectionSelectors.isItemSelected(store, itemId), we still want to propagate the select.
|
|
108
106
|
// This is useful when the element is in an indeterminate state.
|
|
109
107
|
[itemId]);
|
|
110
108
|
lastSelectedItem.current = itemId;
|
|
111
109
|
lastSelectedRange.current = {};
|
|
112
110
|
};
|
|
113
111
|
const selectRange = (event, [start, end]) => {
|
|
114
|
-
const isMultiSelectEnabled =
|
|
112
|
+
const isMultiSelectEnabled = _useTreeViewSelection2.selectionSelectors.isMultiSelectEnabled(store.state);
|
|
115
113
|
if (!isMultiSelectEnabled) {
|
|
116
114
|
return;
|
|
117
115
|
}
|
|
118
|
-
let newSelectedItems =
|
|
116
|
+
let newSelectedItems = _useTreeViewSelection2.selectionSelectors.selectedItems(store.state).slice();
|
|
119
117
|
|
|
120
118
|
// If the last selection was a range selection,
|
|
121
119
|
// remove the items that were part of the last range from the model
|
|
@@ -125,7 +123,7 @@ const useTreeViewSelection = ({
|
|
|
125
123
|
|
|
126
124
|
// Add to the model the items that are part of the new range and not already part of the model.
|
|
127
125
|
const selectedItemsLookup = (0, _useTreeViewSelection.getLookupFromArray)(newSelectedItems);
|
|
128
|
-
const range = (0, _tree.getNonDisabledItemsInRange)(store.
|
|
126
|
+
const range = (0, _tree.getNonDisabledItemsInRange)(store.state, start, end);
|
|
129
127
|
const itemsToAddToModel = range.filter(id => !selectedItemsLookup[id]);
|
|
130
128
|
newSelectedItems = newSelectedItems.concat(itemsToAddToModel);
|
|
131
129
|
setSelectedItems(event, newSelectedItems);
|
|
@@ -133,31 +131,31 @@ const useTreeViewSelection = ({
|
|
|
133
131
|
};
|
|
134
132
|
const expandSelectionRange = (event, itemId) => {
|
|
135
133
|
if (lastSelectedItem.current != null) {
|
|
136
|
-
const [start, end] = (0, _tree.findOrderInTremauxTree)(store.
|
|
134
|
+
const [start, end] = (0, _tree.findOrderInTremauxTree)(store.state, itemId, lastSelectedItem.current);
|
|
137
135
|
selectRange(event, [start, end]);
|
|
138
136
|
}
|
|
139
137
|
};
|
|
140
138
|
const selectRangeFromStartToItem = (event, itemId) => {
|
|
141
|
-
selectRange(event, [(0, _tree.getFirstNavigableItem)(store.
|
|
139
|
+
selectRange(event, [(0, _tree.getFirstNavigableItem)(store.state), itemId]);
|
|
142
140
|
};
|
|
143
141
|
const selectRangeFromItemToEnd = (event, itemId) => {
|
|
144
|
-
selectRange(event, [itemId, (0, _tree.getLastNavigableItem)(store.
|
|
142
|
+
selectRange(event, [itemId, (0, _tree.getLastNavigableItem)(store.state)]);
|
|
145
143
|
};
|
|
146
144
|
const selectAllNavigableItems = event => {
|
|
147
|
-
const isMultiSelectEnabled =
|
|
145
|
+
const isMultiSelectEnabled = _useTreeViewSelection2.selectionSelectors.isMultiSelectEnabled(store.state);
|
|
148
146
|
if (!isMultiSelectEnabled) {
|
|
149
147
|
return;
|
|
150
148
|
}
|
|
151
|
-
const navigableItems = (0, _tree.getAllNavigableItems)(store.
|
|
149
|
+
const navigableItems = (0, _tree.getAllNavigableItems)(store.state);
|
|
152
150
|
setSelectedItems(event, navigableItems);
|
|
153
151
|
lastSelectedRange.current = (0, _useTreeViewSelection.getLookupFromArray)(navigableItems);
|
|
154
152
|
};
|
|
155
153
|
const selectItemFromArrowNavigation = (event, currentItem, nextItem) => {
|
|
156
|
-
const isMultiSelectEnabled =
|
|
154
|
+
const isMultiSelectEnabled = _useTreeViewSelection2.selectionSelectors.isMultiSelectEnabled(store.state);
|
|
157
155
|
if (!isMultiSelectEnabled) {
|
|
158
156
|
return;
|
|
159
157
|
}
|
|
160
|
-
let newSelectedItems =
|
|
158
|
+
let newSelectedItems = _useTreeViewSelection2.selectionSelectors.selectedItems(store.state).slice();
|
|
161
159
|
if (Object.keys(lastSelectedRange.current).length === 0) {
|
|
162
160
|
newSelectedItems.push(nextItem);
|
|
163
161
|
lastSelectedRange.current = {
|
|
@@ -179,18 +177,16 @@ const useTreeViewSelection = ({
|
|
|
179
177
|
setSelectedItems(event, newSelectedItems);
|
|
180
178
|
};
|
|
181
179
|
(0, _useEnhancedEffect.default)(() => {
|
|
182
|
-
store.
|
|
183
|
-
selection:
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
parents: params.selectionPropagation.parents
|
|
191
|
-
}
|
|
180
|
+
store.set('selection', {
|
|
181
|
+
selectedItems: params.selectedItems === undefined ? store.state.selection.selectedItems : params.selectedItems,
|
|
182
|
+
isEnabled: !params.disableSelection,
|
|
183
|
+
isMultiSelectEnabled: params.multiSelect,
|
|
184
|
+
isCheckboxSelectionEnabled: params.checkboxSelection,
|
|
185
|
+
selectionPropagation: {
|
|
186
|
+
descendants: params.selectionPropagation.descendants,
|
|
187
|
+
parents: params.selectionPropagation.parents
|
|
192
188
|
}
|
|
193
|
-
})
|
|
189
|
+
});
|
|
194
190
|
}, [store, params.selectedItems, params.multiSelect, params.checkboxSelection, params.disableSelection, params.selectionPropagation.descendants, params.selectionPropagation.parents]);
|
|
195
191
|
return {
|
|
196
192
|
getRootProps: () => ({
|