@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
|
@@ -3,85 +3,60 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
var
|
|
6
|
+
exports.selectionSelectors = void 0;
|
|
7
|
+
var _store = require("@mui/x-internals/store");
|
|
8
8
|
var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
* Get the selected items.
|
|
13
|
-
* @param {TreeViewState<[UseTreeViewSelectionSignature]>} state The state of the tree view.
|
|
14
|
-
* @returns {TreeViewSelectionValue<boolean>} The selected items.
|
|
15
|
-
*/
|
|
16
|
-
const selectorSelectionModel = exports.selectorSelectionModel = (0, _selectors.createSelector)([selectorTreeViewSelectionState], selectionState => selectionState.selectedItems);
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Get the selected items as an array.
|
|
20
|
-
* @param {TreeViewState<[UseTreeViewSelectionSignature]>} state The state of the tree view.
|
|
21
|
-
* @returns {TreeViewItemId[]} The selected items as an array.
|
|
22
|
-
*/
|
|
23
|
-
const selectorSelectionModelArray = exports.selectorSelectionModelArray = (0, _selectors.createSelector)([selectorSelectionModel], selectedItems => {
|
|
24
|
-
if (Array.isArray(selectedItems)) {
|
|
25
|
-
return selectedItems;
|
|
9
|
+
const selectedItemsSelector = (0, _store.createSelectorMemoized)(state => state.selection.selectedItems, selectedItemsRaw => {
|
|
10
|
+
if (Array.isArray(selectedItemsRaw)) {
|
|
11
|
+
return selectedItemsRaw;
|
|
26
12
|
}
|
|
27
|
-
if (
|
|
28
|
-
return [
|
|
13
|
+
if (selectedItemsRaw != null) {
|
|
14
|
+
return [selectedItemsRaw];
|
|
29
15
|
}
|
|
30
16
|
return [];
|
|
31
17
|
});
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Get the selected items as a map.
|
|
35
|
-
* @param {TreeViewState<[UseTreeViewSelectionSignature]>} state The state of the tree view.
|
|
36
|
-
* @returns {Map<TreeViewItemId, true>} The selected items as a Map.
|
|
37
|
-
*/
|
|
38
|
-
const selectorSelectionModelMap = (0, _selectors.createSelector)([selectorSelectionModelArray], selectedItems => {
|
|
18
|
+
const selectedItemsMapSelector = (0, _store.createSelectorMemoized)(selectedItemsSelector, selectedItems => {
|
|
39
19
|
const selectedItemsMap = new Map();
|
|
40
20
|
selectedItems.forEach(id => {
|
|
41
21
|
selectedItemsMap.set(id, true);
|
|
42
22
|
});
|
|
43
23
|
return selectedItemsMap;
|
|
44
24
|
});
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
* Get the selection propagation rules.
|
|
84
|
-
* @param {TreeViewState<[UseTreeViewSelectionSignature]>} state The state of the tree view.
|
|
85
|
-
* @returns {TreeViewSelectionPropagation} The selection propagation rules.
|
|
86
|
-
*/
|
|
87
|
-
const selectorSelectionPropagationRules = exports.selectorSelectionPropagationRules = (0, _selectors.createSelector)([selectorTreeViewSelectionState], selectionState => selectionState.selectionPropagation);
|
|
25
|
+
const selectionSelectors = exports.selectionSelectors = {
|
|
26
|
+
/**
|
|
27
|
+
* Gets the selected items as provided to the component.
|
|
28
|
+
*/
|
|
29
|
+
selectedItemsRaw: (0, _store.createSelector)(state => state.selection.selectedItems),
|
|
30
|
+
/**
|
|
31
|
+
* Gets the selected items as an array.
|
|
32
|
+
*/
|
|
33
|
+
selectedItems: selectedItemsSelector,
|
|
34
|
+
/**
|
|
35
|
+
* Gets the selected items as a Map.
|
|
36
|
+
*/
|
|
37
|
+
selectedItemsMap: selectedItemsMapSelector,
|
|
38
|
+
/**
|
|
39
|
+
* Checks whether selection is enabled.
|
|
40
|
+
*/
|
|
41
|
+
enabled: (0, _store.createSelector)(state => state.selection.isEnabled),
|
|
42
|
+
/**
|
|
43
|
+
* Checks whether multi selection is enabled.
|
|
44
|
+
*/
|
|
45
|
+
isMultiSelectEnabled: (0, _store.createSelector)(state => state.selection.isMultiSelectEnabled),
|
|
46
|
+
/**
|
|
47
|
+
* Checks whether checkbox selection is enabled.
|
|
48
|
+
*/
|
|
49
|
+
isCheckboxSelectionEnabled: (0, _store.createSelector)(state => state.selection.isCheckboxSelectionEnabled),
|
|
50
|
+
/**
|
|
51
|
+
* Gets the selection propagation rules.
|
|
52
|
+
*/
|
|
53
|
+
propagationRules: (0, _store.createSelector)(state => state.selection.selectionPropagation),
|
|
54
|
+
/**
|
|
55
|
+
* Checks whether an item is selected.
|
|
56
|
+
*/
|
|
57
|
+
isItemSelected: (0, _store.createSelector)(selectedItemsMapSelector, (selectedItemsMap, itemId) => selectedItemsMap.has(itemId)),
|
|
58
|
+
/**
|
|
59
|
+
* Checks whether an item can be selected (if selection is enabled and if the item is not disabled).
|
|
60
|
+
*/
|
|
61
|
+
canItemBeSelected: (0, _store.createSelector)(_useTreeViewItems.itemsSelectors.isItemDisabled, state => state.selection.isEnabled, (isItemDisabled, isSelectionEnabled, _itemId) => isSelectionEnabled && !isItemDisabled)
|
|
62
|
+
};
|
|
@@ -133,6 +133,7 @@ export type UseTreeViewSelectionSignature = TreeViewPluginSignature<{
|
|
|
133
133
|
export interface UseTreeItemCheckboxSlotPropsFromSelection {
|
|
134
134
|
visible?: boolean;
|
|
135
135
|
checked?: boolean;
|
|
136
|
+
indeterminate?: boolean;
|
|
136
137
|
disabled?: boolean;
|
|
137
138
|
tabIndex?: -1;
|
|
138
139
|
onChange?: TreeViewCancellableEventHandler<React.ChangeEvent<HTMLInputElement>>;
|
|
@@ -24,7 +24,7 @@ const getAddedAndRemovedItems = ({
|
|
|
24
24
|
newModelMap.set(id, true);
|
|
25
25
|
});
|
|
26
26
|
return {
|
|
27
|
-
added: newModel.filter(itemId => !
|
|
27
|
+
added: newModel.filter(itemId => !_useTreeViewSelection.selectionSelectors.isItemSelected(store.state, itemId)),
|
|
28
28
|
removed: oldModel.filter(itemId => !newModelMap.has(itemId))
|
|
29
29
|
};
|
|
30
30
|
};
|
|
@@ -62,7 +62,7 @@ const propagateSelection = ({
|
|
|
62
62
|
shouldRegenerateModel = true;
|
|
63
63
|
newModelLookup[itemId] = true;
|
|
64
64
|
}
|
|
65
|
-
|
|
65
|
+
_useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(store.state, itemId).forEach(selectDescendants);
|
|
66
66
|
};
|
|
67
67
|
selectDescendants(addedItemId);
|
|
68
68
|
}
|
|
@@ -71,15 +71,15 @@ const propagateSelection = ({
|
|
|
71
71
|
if (!newModelLookup[itemId]) {
|
|
72
72
|
return false;
|
|
73
73
|
}
|
|
74
|
-
const children =
|
|
74
|
+
const children = _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(store.state, itemId);
|
|
75
75
|
return children.every(checkAllDescendantsSelected);
|
|
76
76
|
};
|
|
77
77
|
const selectParents = itemId => {
|
|
78
|
-
const parentId =
|
|
78
|
+
const parentId = _useTreeViewItems.itemsSelectors.itemParentId(store.state, itemId);
|
|
79
79
|
if (parentId == null) {
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
82
|
-
const siblings =
|
|
82
|
+
const siblings = _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(store.state, parentId);
|
|
83
83
|
if (siblings.every(checkAllDescendantsSelected)) {
|
|
84
84
|
shouldRegenerateModel = true;
|
|
85
85
|
newModelLookup[parentId] = true;
|
|
@@ -91,13 +91,13 @@ const propagateSelection = ({
|
|
|
91
91
|
});
|
|
92
92
|
changes.removed.forEach(removedItemId => {
|
|
93
93
|
if (selectionPropagation.parents) {
|
|
94
|
-
let parentId =
|
|
94
|
+
let parentId = _useTreeViewItems.itemsSelectors.itemParentId(store.state, removedItemId);
|
|
95
95
|
while (parentId != null) {
|
|
96
96
|
if (newModelLookup[parentId]) {
|
|
97
97
|
shouldRegenerateModel = true;
|
|
98
98
|
delete newModelLookup[parentId];
|
|
99
99
|
}
|
|
100
|
-
parentId =
|
|
100
|
+
parentId = _useTreeViewItems.itemsSelectors.itemParentId(store.state, parentId);
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
if (selectionPropagation.descendants) {
|
|
@@ -106,7 +106,7 @@ const propagateSelection = ({
|
|
|
106
106
|
shouldRegenerateModel = true;
|
|
107
107
|
delete newModelLookup[itemId];
|
|
108
108
|
}
|
|
109
|
-
|
|
109
|
+
_useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(store.state, itemId).forEach(deSelectDescendants);
|
|
110
110
|
};
|
|
111
111
|
deSelectDescendants(removedItemId);
|
|
112
112
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { TreeViewAnyPluginSignature } from "../models/index.js";
|
|
3
3
|
import { UseTreeViewBaseProps, UseTreeViewParameters, UseTreeViewReturnValue } from "./useTreeView.types.js";
|
|
4
|
-
export declare function useTreeViewApiInitialization<T>(inputApiRef: React.RefObject<T | undefined> | undefined): React.RefObject<T>;
|
|
4
|
+
export declare function useTreeViewApiInitialization<T>(inputApiRef: React.RefObject<Partial<T> | undefined> | undefined): React.RefObject<T>;
|
|
5
5
|
/**
|
|
6
6
|
* This is the main hook that sets the plugin system up for the tree-view.
|
|
7
7
|
*
|
|
@@ -9,11 +9,12 @@ exports.useTreeView = void 0;
|
|
|
9
9
|
exports.useTreeViewApiInitialization = useTreeViewApiInitialization;
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
var React = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _useRefWithInit = require("@base-ui-components/utils/useRefWithInit");
|
|
13
|
+
var _store = require("@mui/x-internals/store");
|
|
12
14
|
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
13
15
|
var _corePlugins = require("../corePlugins");
|
|
14
16
|
var _useExtractPluginParamsFromProps = require("./useExtractPluginParamsFromProps");
|
|
15
17
|
var _useTreeViewBuildContext = require("./useTreeViewBuildContext");
|
|
16
|
-
var _TreeViewStore = require("../utils/TreeViewStore");
|
|
17
18
|
function initializeInputApiRef(inputApiRef) {
|
|
18
19
|
if (inputApiRef.current == null) {
|
|
19
20
|
inputApiRef.current = {};
|
|
@@ -27,7 +28,6 @@ function useTreeViewApiInitialization(inputApiRef) {
|
|
|
27
28
|
}
|
|
28
29
|
return fallbackPublicApiRef;
|
|
29
30
|
}
|
|
30
|
-
let globalId = 0;
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* This is the main hook that sets the plugin system up for the tree-view.
|
|
@@ -52,31 +52,24 @@ const useTreeView = ({
|
|
|
52
52
|
plugins,
|
|
53
53
|
props
|
|
54
54
|
});
|
|
55
|
-
const
|
|
56
|
-
const instance = instanceRef.current;
|
|
55
|
+
const instance = (0, _useRefWithInit.useRefWithInit)(() => ({})).current;
|
|
57
56
|
const publicAPI = useTreeViewApiInitialization(apiRef);
|
|
58
57
|
const innerRootRef = React.useRef(null);
|
|
59
58
|
const handleRootRef = (0, _useForkRef.default)(innerRootRef, rootRef);
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const initialState = {
|
|
64
|
-
cacheKey: {
|
|
65
|
-
id: globalId
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
plugins.forEach(plugin => {
|
|
59
|
+
const store = (0, _useRefWithInit.useRefWithInit)(() => {
|
|
60
|
+
const initialState = {};
|
|
61
|
+
for (const plugin of plugins) {
|
|
69
62
|
if (plugin.getInitialState) {
|
|
70
63
|
Object.assign(initialState, plugin.getInitialState(pluginParams));
|
|
71
64
|
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
}
|
|
65
|
+
}
|
|
66
|
+
return new _store.Store(initialState);
|
|
67
|
+
}).current;
|
|
75
68
|
const contextValue = (0, _useTreeViewBuildContext.useTreeViewBuildContext)({
|
|
76
69
|
plugins,
|
|
77
70
|
instance,
|
|
78
71
|
publicAPI: publicAPI.current,
|
|
79
|
-
store
|
|
72
|
+
store,
|
|
80
73
|
rootRef: innerRootRef
|
|
81
74
|
});
|
|
82
75
|
const rootPropsGetters = [];
|
|
@@ -86,7 +79,7 @@ const useTreeView = ({
|
|
|
86
79
|
params: pluginParams,
|
|
87
80
|
rootRef: innerRootRef,
|
|
88
81
|
plugins,
|
|
89
|
-
store
|
|
82
|
+
store
|
|
90
83
|
});
|
|
91
84
|
if (pluginResponse.getRootProps) {
|
|
92
85
|
rootPropsGetters.push(pluginResponse.getRootProps);
|
|
@@ -8,7 +8,7 @@ export interface UseTreeViewParameters<TSignatures extends readonly TreeViewAnyP
|
|
|
8
8
|
props: TProps;
|
|
9
9
|
}
|
|
10
10
|
export interface UseTreeViewBaseProps<TSignatures extends readonly TreeViewAnyPluginSignature[]> {
|
|
11
|
-
apiRef: React.RefObject<TreeViewPublicAPI<TSignatures
|
|
11
|
+
apiRef: React.RefObject<Partial<TreeViewPublicAPI<TSignatures>> | undefined> | undefined;
|
|
12
12
|
}
|
|
13
13
|
export interface UseTreeViewRootSlotProps extends Pick<React.HTMLAttributes<HTMLUListElement>, 'onFocus' | 'onBlur' | 'onKeyDown' | 'id' | 'aria-multiselectable' | 'role' | 'tabIndex'> {
|
|
14
14
|
ref: React.Ref<HTMLUListElement>;
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { TreeViewContextValue } from "../TreeViewProvider/index.js";
|
|
3
|
-
import { ConvertSignaturesIntoPlugins, TreeViewAnyPluginSignature, TreeViewInstance, TreeViewPublicAPI } from "../models/index.js";
|
|
3
|
+
import { ConvertSignaturesIntoPlugins, TreeViewAnyPluginSignature, TreeViewInstance, TreeViewPublicAPI, TreeViewStore } from "../models/index.js";
|
|
4
4
|
import { TreeViewCorePluginSignatures } from "../corePlugins/index.js";
|
|
5
|
-
import { TreeViewStore } from "../utils/TreeViewStore.js";
|
|
6
5
|
export declare const useTreeViewBuildContext: <TSignatures extends readonly TreeViewAnyPluginSignature[]>(parameters: UseTreeViewBuildContextParameters<TSignatures>) => TreeViewContextValue<TSignatures>;
|
|
7
6
|
interface UseTreeViewBuildContextParameters<TSignatures extends readonly TreeViewAnyPluginSignature[]> {
|
|
8
7
|
plugins: ConvertSignaturesIntoPlugins<readonly [...TreeViewCorePluginSignatures, ...TSignatures]>;
|
|
9
8
|
instance: TreeViewInstance<TSignatures>;
|
|
10
9
|
publicAPI: TreeViewPublicAPI<TSignatures>;
|
|
11
|
-
store: TreeViewStore<TSignatures>;
|
|
10
|
+
store: TreeViewStore<readonly [...TreeViewCorePluginSignatures, ...TSignatures]>;
|
|
12
11
|
rootRef: React.RefObject<HTMLUListElement | null>;
|
|
13
12
|
}
|
|
14
13
|
export {};
|
|
@@ -16,8 +16,6 @@ class FinalizationRegistryBasedCleanupTracking {
|
|
|
16
16
|
unregister(unregisterToken) {
|
|
17
17
|
this.registry.unregister(unregisterToken);
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
// eslint-disable-next-line class-methods-use-this
|
|
21
19
|
reset() {}
|
|
22
20
|
}
|
|
23
21
|
exports.FinalizationRegistryBasedCleanupTracking = FinalizationRegistryBasedCleanupTracking;
|
package/internals/utils/tree.js
CHANGED
|
@@ -9,7 +9,7 @@ var _useTreeViewItems = require("../plugins/useTreeViewItems/useTreeViewItems.se
|
|
|
9
9
|
const getLastNavigableItemInArray = (state, items) => {
|
|
10
10
|
// Equivalent to Array.prototype.findLastIndex
|
|
11
11
|
let itemIndex = items.length - 1;
|
|
12
|
-
while (itemIndex >= 0 && !
|
|
12
|
+
while (itemIndex >= 0 && !_useTreeViewItems.itemsSelectors.canItemBeFocused(state, items[itemIndex])) {
|
|
13
13
|
itemIndex -= 1;
|
|
14
14
|
}
|
|
15
15
|
if (itemIndex === -1) {
|
|
@@ -18,12 +18,12 @@ const getLastNavigableItemInArray = (state, items) => {
|
|
|
18
18
|
return items[itemIndex];
|
|
19
19
|
};
|
|
20
20
|
const getPreviousNavigableItem = (state, itemId) => {
|
|
21
|
-
const itemMeta =
|
|
21
|
+
const itemMeta = _useTreeViewItems.itemsSelectors.itemMeta(state, itemId);
|
|
22
22
|
if (!itemMeta) {
|
|
23
23
|
return null;
|
|
24
24
|
}
|
|
25
|
-
const siblings =
|
|
26
|
-
const itemIndex =
|
|
25
|
+
const siblings = _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(state, itemMeta.parentId);
|
|
26
|
+
const itemIndex = _useTreeViewItems.itemsSelectors.itemIndex(state, itemId);
|
|
27
27
|
|
|
28
28
|
// TODO: What should we do if the parent is not navigable?
|
|
29
29
|
if (itemIndex === 0) {
|
|
@@ -32,7 +32,7 @@ const getPreviousNavigableItem = (state, itemId) => {
|
|
|
32
32
|
|
|
33
33
|
// Finds the previous navigable sibling.
|
|
34
34
|
let previousNavigableSiblingIndex = itemIndex - 1;
|
|
35
|
-
while (!
|
|
35
|
+
while (!_useTreeViewItems.itemsSelectors.canItemBeFocused(state, siblings[previousNavigableSiblingIndex]) && previousNavigableSiblingIndex >= 0) {
|
|
36
36
|
previousNavigableSiblingIndex -= 1;
|
|
37
37
|
}
|
|
38
38
|
if (previousNavigableSiblingIndex === -1) {
|
|
@@ -47,47 +47,47 @@ const getPreviousNavigableItem = (state, itemId) => {
|
|
|
47
47
|
|
|
48
48
|
// Finds the last navigable ancestor of the previous navigable sibling.
|
|
49
49
|
let currentItemId = siblings[previousNavigableSiblingIndex];
|
|
50
|
-
let lastNavigableChild = getLastNavigableItemInArray(state,
|
|
51
|
-
while (
|
|
50
|
+
let lastNavigableChild = getLastNavigableItemInArray(state, _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(state, currentItemId));
|
|
51
|
+
while (_useTreeViewExpansion.expansionSelectors.isItemExpanded(state, currentItemId) && lastNavigableChild != null) {
|
|
52
52
|
currentItemId = lastNavigableChild;
|
|
53
|
-
lastNavigableChild = getLastNavigableItemInArray(state,
|
|
53
|
+
lastNavigableChild = getLastNavigableItemInArray(state, _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(state, currentItemId));
|
|
54
54
|
}
|
|
55
55
|
return currentItemId;
|
|
56
56
|
};
|
|
57
57
|
exports.getPreviousNavigableItem = getPreviousNavigableItem;
|
|
58
58
|
const getNextNavigableItem = (state, itemId) => {
|
|
59
59
|
// If the item is expanded and has some navigable children, return the first of them.
|
|
60
|
-
if (
|
|
61
|
-
const firstNavigableChild =
|
|
60
|
+
if (_useTreeViewExpansion.expansionSelectors.isItemExpanded(state, itemId)) {
|
|
61
|
+
const firstNavigableChild = _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(state, itemId).find(childId => _useTreeViewItems.itemsSelectors.canItemBeFocused(state, childId));
|
|
62
62
|
if (firstNavigableChild != null) {
|
|
63
63
|
return firstNavigableChild;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
let itemMeta =
|
|
66
|
+
let itemMeta = _useTreeViewItems.itemsSelectors.itemMeta(state, itemId);
|
|
67
67
|
while (itemMeta != null) {
|
|
68
68
|
// Try to find the first navigable sibling after the current item.
|
|
69
|
-
const siblings =
|
|
70
|
-
const currentItemIndex =
|
|
69
|
+
const siblings = _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(state, itemMeta.parentId);
|
|
70
|
+
const currentItemIndex = _useTreeViewItems.itemsSelectors.itemIndex(state, itemMeta.id);
|
|
71
71
|
if (currentItemIndex < siblings.length - 1) {
|
|
72
72
|
let nextItemIndex = currentItemIndex + 1;
|
|
73
|
-
while (!
|
|
73
|
+
while (!_useTreeViewItems.itemsSelectors.canItemBeFocused(state, siblings[nextItemIndex]) && nextItemIndex < siblings.length - 1) {
|
|
74
74
|
nextItemIndex += 1;
|
|
75
75
|
}
|
|
76
|
-
if (
|
|
76
|
+
if (_useTreeViewItems.itemsSelectors.canItemBeFocused(state, siblings[nextItemIndex])) {
|
|
77
77
|
return siblings[nextItemIndex];
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
// If the sibling does not exist, go up a level to the parent and try again.
|
|
82
|
-
itemMeta =
|
|
82
|
+
itemMeta = _useTreeViewItems.itemsSelectors.itemMeta(state, itemMeta.parentId);
|
|
83
83
|
}
|
|
84
84
|
return null;
|
|
85
85
|
};
|
|
86
86
|
exports.getNextNavigableItem = getNextNavigableItem;
|
|
87
87
|
const getLastNavigableItem = state => {
|
|
88
88
|
let itemId = null;
|
|
89
|
-
while (itemId == null ||
|
|
90
|
-
const children =
|
|
89
|
+
while (itemId == null || _useTreeViewExpansion.expansionSelectors.isItemExpanded(state, itemId)) {
|
|
90
|
+
const children = _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(state, itemId);
|
|
91
91
|
const lastNavigableChild = getLastNavigableItemInArray(state, children);
|
|
92
92
|
|
|
93
93
|
// The item has no navigable children.
|
|
@@ -99,7 +99,7 @@ const getLastNavigableItem = state => {
|
|
|
99
99
|
return itemId;
|
|
100
100
|
};
|
|
101
101
|
exports.getLastNavigableItem = getLastNavigableItem;
|
|
102
|
-
const getFirstNavigableItem = state =>
|
|
102
|
+
const getFirstNavigableItem = state => _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(state, null).find(itemId => _useTreeViewItems.itemsSelectors.canItemBeFocused(state, itemId));
|
|
103
103
|
|
|
104
104
|
/**
|
|
105
105
|
* This is used to determine the start and end of a selection range so
|
|
@@ -120,8 +120,8 @@ const findOrderInTremauxTree = (state, itemAId, itemBId) => {
|
|
|
120
120
|
if (itemAId === itemBId) {
|
|
121
121
|
return [itemAId, itemBId];
|
|
122
122
|
}
|
|
123
|
-
const itemMetaA =
|
|
124
|
-
const itemMetaB =
|
|
123
|
+
const itemMetaA = _useTreeViewItems.itemsSelectors.itemMeta(state, itemAId);
|
|
124
|
+
const itemMetaB = _useTreeViewItems.itemsSelectors.itemMeta(state, itemBId);
|
|
125
125
|
if (!itemMetaA || !itemMetaB) {
|
|
126
126
|
return [itemAId, itemBId];
|
|
127
127
|
}
|
|
@@ -142,7 +142,7 @@ const findOrderInTremauxTree = (state, itemAId, itemBId) => {
|
|
|
142
142
|
aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;
|
|
143
143
|
continueA = aAncestor !== null;
|
|
144
144
|
if (!aAncestorIsCommon && continueA) {
|
|
145
|
-
aAncestor =
|
|
145
|
+
aAncestor = _useTreeViewItems.itemsSelectors.itemParentId(state, aAncestor);
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
148
|
if (continueB && !aAncestorIsCommon) {
|
|
@@ -150,12 +150,12 @@ const findOrderInTremauxTree = (state, itemAId, itemBId) => {
|
|
|
150
150
|
bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;
|
|
151
151
|
continueB = bAncestor !== null;
|
|
152
152
|
if (!bAncestorIsCommon && continueB) {
|
|
153
|
-
bAncestor =
|
|
153
|
+
bAncestor = _useTreeViewItems.itemsSelectors.itemParentId(state, bAncestor);
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
157
|
const commonAncestor = aAncestorIsCommon ? aAncestor : bAncestor;
|
|
158
|
-
const ancestorFamily =
|
|
158
|
+
const ancestorFamily = _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(state, commonAncestor);
|
|
159
159
|
const aSide = aFamily[aFamily.indexOf(commonAncestor) - 1];
|
|
160
160
|
const bSide = bFamily[bFamily.indexOf(commonAncestor) - 1];
|
|
161
161
|
return ancestorFamily.indexOf(aSide) < ancestorFamily.indexOf(bSide) ? [itemAId, itemBId] : [itemBId, itemAId];
|
|
@@ -164,20 +164,20 @@ exports.findOrderInTremauxTree = findOrderInTremauxTree;
|
|
|
164
164
|
const getNonDisabledItemsInRange = (state, itemAId, itemBId) => {
|
|
165
165
|
const getNextItem = itemId => {
|
|
166
166
|
// If the item is expanded and has some children, return the first of them.
|
|
167
|
-
if (
|
|
168
|
-
return
|
|
167
|
+
if (_useTreeViewExpansion.expansionSelectors.isItemExpandable(state, itemId) && _useTreeViewExpansion.expansionSelectors.isItemExpanded(state, itemId)) {
|
|
168
|
+
return _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(state, itemId)[0];
|
|
169
169
|
}
|
|
170
|
-
let itemMeta =
|
|
170
|
+
let itemMeta = _useTreeViewItems.itemsSelectors.itemMeta(state, itemId);
|
|
171
171
|
while (itemMeta != null) {
|
|
172
172
|
// Try to find the first navigable sibling after the current item.
|
|
173
|
-
const siblings =
|
|
174
|
-
const currentItemIndex =
|
|
173
|
+
const siblings = _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(state, itemMeta.parentId);
|
|
174
|
+
const currentItemIndex = _useTreeViewItems.itemsSelectors.itemIndex(state, itemMeta.id);
|
|
175
175
|
if (currentItemIndex < siblings.length - 1) {
|
|
176
176
|
return siblings[currentItemIndex + 1];
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
// If the item is the last of its siblings, go up a level to the parent and try again.
|
|
180
|
-
itemMeta = itemMeta.parentId ?
|
|
180
|
+
itemMeta = itemMeta.parentId ? _useTreeViewItems.itemsSelectors.itemMeta(state, itemMeta.parentId) : null;
|
|
181
181
|
}
|
|
182
182
|
throw new Error('Invalid range');
|
|
183
183
|
};
|
|
@@ -186,7 +186,7 @@ const getNonDisabledItemsInRange = (state, itemAId, itemBId) => {
|
|
|
186
186
|
let current = first;
|
|
187
187
|
while (current !== last) {
|
|
188
188
|
current = getNextItem(current);
|
|
189
|
-
if (!
|
|
189
|
+
if (!_useTreeViewItems.itemsSelectors.isItemDisabled(state, current)) {
|
|
190
190
|
items.push(current);
|
|
191
191
|
}
|
|
192
192
|
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-tree-view",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.11.1",
|
|
4
4
|
"author": "MUI Team",
|
|
5
5
|
"description": "The community edition of the MUI X Tree View components.",
|
|
6
|
-
"main": "./index.js",
|
|
7
6
|
"license": "MIT",
|
|
8
7
|
"bugs": {
|
|
9
8
|
"url": "https://github.com/mui/mui-x/issues"
|
|
@@ -33,14 +32,13 @@
|
|
|
33
32
|
},
|
|
34
33
|
"dependencies": {
|
|
35
34
|
"@babel/runtime": "^7.28.2",
|
|
35
|
+
"@base-ui-components/utils": "0.1.0",
|
|
36
36
|
"@mui/utils": "^7.3.1",
|
|
37
37
|
"@types/react-transition-group": "^4.4.12",
|
|
38
38
|
"clsx": "^2.1.1",
|
|
39
39
|
"prop-types": "^15.8.1",
|
|
40
40
|
"react-transition-group": "^4.4.5",
|
|
41
|
-
"
|
|
42
|
-
"use-sync-external-store": "^1.5.0",
|
|
43
|
-
"@mui/x-internals": "8.10.2"
|
|
41
|
+
"@mui/x-internals": "8.11.1"
|
|
44
42
|
},
|
|
45
43
|
"peerDependencies": {
|
|
46
44
|
"@emotion/react": "^11.9.0",
|
|
@@ -62,27 +60,28 @@
|
|
|
62
60
|
"node": ">=14.0.0"
|
|
63
61
|
},
|
|
64
62
|
"type": "commonjs",
|
|
63
|
+
"main": "./index.js",
|
|
65
64
|
"types": "./index.d.ts",
|
|
66
65
|
"exports": {
|
|
67
66
|
"./package.json": "./package.json",
|
|
68
67
|
".": {
|
|
69
|
-
"import": {
|
|
70
|
-
"types": "./esm/index.d.ts",
|
|
71
|
-
"default": "./esm/index.js"
|
|
72
|
-
},
|
|
73
68
|
"require": {
|
|
74
69
|
"types": "./index.d.ts",
|
|
75
70
|
"default": "./index.js"
|
|
71
|
+
},
|
|
72
|
+
"default": {
|
|
73
|
+
"types": "./esm/index.d.ts",
|
|
74
|
+
"default": "./esm/index.js"
|
|
76
75
|
}
|
|
77
76
|
},
|
|
78
77
|
"./*": {
|
|
79
|
-
"import": {
|
|
80
|
-
"types": "./esm/*/index.d.ts",
|
|
81
|
-
"default": "./esm/*/index.js"
|
|
82
|
-
},
|
|
83
78
|
"require": {
|
|
84
79
|
"types": "./*/index.d.ts",
|
|
85
80
|
"default": "./*/index.js"
|
|
81
|
+
},
|
|
82
|
+
"default": {
|
|
83
|
+
"types": "./esm/*/index.d.ts",
|
|
84
|
+
"default": "./esm/*/index.js"
|
|
86
85
|
}
|
|
87
86
|
},
|
|
88
87
|
"./esm": null
|
|
@@ -9,19 +9,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
exports.useTreeItem = void 0;
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
var React = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _store = require("@mui/x-internals/store");
|
|
12
13
|
var _extractEventHandlers = _interopRequireDefault(require("@mui/utils/extractEventHandlers"));
|
|
13
14
|
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
14
15
|
var _TreeViewProvider = require("../internals/TreeViewProvider");
|
|
15
16
|
var _useTreeItemUtils = require("../hooks/useTreeItemUtils");
|
|
16
17
|
var _TreeViewItemDepthContext = require("../internals/TreeViewItemDepthContext");
|
|
17
18
|
var _tree = require("../internals/utils/tree");
|
|
18
|
-
var _useSelector = require("../internals/hooks/useSelector");
|
|
19
|
-
var _useTreeViewFocus = require("../internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors");
|
|
20
19
|
var _useTreeViewId = require("../internals/corePlugins/useTreeViewId/useTreeViewId.utils");
|
|
21
|
-
var
|
|
22
|
-
var
|
|
23
|
-
var
|
|
24
|
-
var
|
|
20
|
+
var _useTreeViewFocus = require("../internals/plugins/useTreeViewFocus");
|
|
21
|
+
var _useTreeViewItems = require("../internals/plugins/useTreeViewItems");
|
|
22
|
+
var _useTreeViewId2 = require("../internals/corePlugins/useTreeViewId");
|
|
23
|
+
var _useTreeViewExpansion = require("../internals/plugins/useTreeViewExpansion");
|
|
24
|
+
var _useTreeViewSelection = require("../internals/plugins/useTreeViewSelection");
|
|
25
25
|
const useTreeItem = parameters => {
|
|
26
26
|
const {
|
|
27
27
|
runItemPlugins,
|
|
@@ -30,7 +30,7 @@ const useTreeItem = parameters => {
|
|
|
30
30
|
store
|
|
31
31
|
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
32
32
|
const depthContext = React.useContext(_TreeViewItemDepthContext.TreeViewItemDepthContext);
|
|
33
|
-
const depth = (0,
|
|
33
|
+
const depth = (0, _store.useStore)(store, (...params) => {
|
|
34
34
|
if (typeof depthContext === 'function') {
|
|
35
35
|
return depthContext(...params);
|
|
36
36
|
}
|
|
@@ -60,15 +60,15 @@ const useTreeItem = parameters => {
|
|
|
60
60
|
const handleRootRef = (0, _useForkRef.default)(rootRef, pluginRootRef, rootRefObject);
|
|
61
61
|
const handleContentRef = (0, _useForkRef.default)(contentRef, contentRefObject);
|
|
62
62
|
const checkboxRef = React.useRef(null);
|
|
63
|
-
const treeId = (0,
|
|
64
|
-
const isSelectionEnabledForItem = (0,
|
|
65
|
-
const isCheckboxSelectionEnabled = (0,
|
|
63
|
+
const treeId = (0, _store.useStore)(store, _useTreeViewId2.idSelectors.treeId);
|
|
64
|
+
const isSelectionEnabledForItem = (0, _store.useStore)(store, _useTreeViewSelection.selectionSelectors.canItemBeSelected, itemId);
|
|
65
|
+
const isCheckboxSelectionEnabled = (0, _store.useStore)(store, _useTreeViewSelection.selectionSelectors.isCheckboxSelectionEnabled);
|
|
66
66
|
const idAttribute = (0, _useTreeViewId.generateTreeItemIdAttribute)({
|
|
67
67
|
itemId,
|
|
68
68
|
treeId,
|
|
69
69
|
id
|
|
70
70
|
});
|
|
71
|
-
const shouldBeAccessibleWithTab = (0,
|
|
71
|
+
const shouldBeAccessibleWithTab = (0, _store.useStore)(store, _useTreeViewFocus.focusSelectors.isItemTheDefaultFocusableItem, itemId);
|
|
72
72
|
const sharedPropsEnhancerParams = {
|
|
73
73
|
rootRefObject,
|
|
74
74
|
contentRefObject,
|
|
@@ -79,7 +79,7 @@ const useTreeItem = parameters => {
|
|
|
79
79
|
if (event.defaultMuiPrevented) {
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
82
|
-
if (!status.focused &&
|
|
82
|
+
if (!status.focused && _useTreeViewItems.itemsSelectors.canItemBeFocused(store.state, itemId) && event.currentTarget === event.target) {
|
|
83
83
|
instance.focusItem(event, itemId);
|
|
84
84
|
}
|
|
85
85
|
};
|
|
@@ -121,7 +121,7 @@ const useTreeItem = parameters => {
|
|
|
121
121
|
if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target)) {
|
|
122
122
|
return;
|
|
123
123
|
}
|
|
124
|
-
if (
|
|
124
|
+
if (_useTreeViewExpansion.expansionSelectors.triggerSlot(store.state) === 'content') {
|
|
125
125
|
interactions.handleExpansion(event);
|
|
126
126
|
}
|
|
127
127
|
if (!isCheckboxSelectionEnabled) {
|
|
@@ -144,7 +144,7 @@ const useTreeItem = parameters => {
|
|
|
144
144
|
if (event.defaultMuiPrevented) {
|
|
145
145
|
return;
|
|
146
146
|
}
|
|
147
|
-
if (
|
|
147
|
+
if (_useTreeViewExpansion.expansionSelectors.triggerSlot(store.state) === 'iconContainer') {
|
|
148
148
|
interactions.handleExpansion(event);
|
|
149
149
|
}
|
|
150
150
|
};
|