@mui/x-tree-view 8.11.0 → 8.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +169 -0
- 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/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/TreeItemProvider/TreeItemProvider.js +3 -3
- package/esm/hooks/index.d.ts +2 -1
- package/esm/hooks/index.js +2 -1
- package/esm/hooks/useApplyPropagationToSelectedItemsOnMount.d.ts +53 -0
- package/esm/hooks/useApplyPropagationToSelectedItemsOnMount.js +80 -0
- 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 +82 -102
- 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/tree.js +33 -33
- package/esm/useTreeItem/useTreeItem.js +14 -14
- package/esm/useTreeItem/useTreeItem.types.d.ts +2 -1
- package/hooks/index.d.ts +2 -1
- package/hooks/index.js +8 -1
- package/hooks/useApplyPropagationToSelectedItemsOnMount.d.ts +53 -0
- package/hooks/useApplyPropagationToSelectedItemsOnMount.js +87 -0
- 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 +81 -101
- 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/tree.js +31 -31
- package/package.json +13 -14
- 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,12 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { EventHandlers } from '@mui/utils/types';
|
|
3
|
-
import { TreeViewInstance } from "./treeView.js";
|
|
3
|
+
import { TreeViewInstance, TreeViewStore } from "./treeView.js";
|
|
4
4
|
import type { MergeSignaturesProperty, OptionalIfEmpty } from "./helpers.js";
|
|
5
5
|
import { TreeViewEventLookupElement } from "./events.js";
|
|
6
6
|
import type { TreeViewCorePluginSignatures } from "../corePlugins/index.js";
|
|
7
7
|
import { TreeViewItemPlugin } from "./itemPlugin.js";
|
|
8
8
|
import { TreeViewItemId } from "../../models/index.js";
|
|
9
|
-
import { TreeViewStore } from "../utils/TreeViewStore.js";
|
|
10
9
|
export interface TreeViewPluginOptions<TSignature extends TreeViewAnyPluginSignature> {
|
|
11
10
|
/**
|
|
12
11
|
* An imperative API available for internal use. Used to access methods from other plugins.
|
|
@@ -109,7 +108,7 @@ export type TreeViewUsedInstance<TSignature extends TreeViewAnyPluginSignature>
|
|
|
109
108
|
*/
|
|
110
109
|
$$signature: TSignature;
|
|
111
110
|
};
|
|
112
|
-
export type TreeViewUsedStore<TSignature extends TreeViewAnyPluginSignature> = TreeViewStore<[TSignature, ...TSignature['dependencies']]>;
|
|
111
|
+
export type TreeViewUsedStore<TSignature extends TreeViewAnyPluginSignature> = TreeViewStore<[TSignature, ...TSignature['dependencies']], TSignature['optionalDependencies']>;
|
|
113
112
|
export type TreeViewUsedEvents<TSignature extends TreeViewAnyPluginSignature> = TSignature['events'] & MergeSignaturesProperty<TreeViewRequiredPlugins<TSignature>, 'events'>;
|
|
114
113
|
export type TreeItemWrapper<TSignatures extends readonly TreeViewAnyPluginSignature[]> = (params: {
|
|
115
114
|
itemId: TreeViewItemId;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ReadonlyStore, Store } from '@mui/x-internals/store';
|
|
1
2
|
import type { TreeViewAnyPluginSignature } from "./plugin.js";
|
|
2
3
|
import type { MergeSignaturesProperty } from "./helpers.js";
|
|
3
4
|
import type { TreeViewCorePluginSignatures } from "../corePlugins/index.js";
|
|
@@ -18,9 +19,6 @@ export interface TreeViewItemMeta {
|
|
|
18
19
|
}
|
|
19
20
|
export type TreeViewInstance<TSignatures extends readonly TreeViewAnyPluginSignature[], TOptionalSignatures extends readonly TreeViewAnyPluginSignature[] = []> = MergeSignaturesProperty<[...TreeViewCorePluginSignatures, ...TSignatures], 'instance'> & Partial<MergeSignaturesProperty<TOptionalSignatures, 'instance'>>;
|
|
20
21
|
export type TreeViewPublicAPI<TSignatures extends readonly TreeViewAnyPluginSignature[], TOptionalSignatures extends readonly TreeViewAnyPluginSignature[] = []> = MergeSignaturesProperty<[...TreeViewCorePluginSignatures, ...TSignatures], 'publicAPI'> & Partial<MergeSignaturesProperty<TOptionalSignatures, 'instance'>>;
|
|
21
|
-
export type
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
export type TreeViewState<TSignatures extends readonly TreeViewAnyPluginSignature[], TOptionalSignatures extends readonly TreeViewAnyPluginSignature[] = []> = MergeSignaturesProperty<[...TreeViewCorePluginSignatures, ...TSignatures], 'state'> & Partial<MergeSignaturesProperty<TOptionalSignatures, 'state'>> & {
|
|
25
|
-
cacheKey: TreeViewStateCacheKey;
|
|
26
|
-
};
|
|
22
|
+
export type TreeViewState<TSignatures extends readonly TreeViewAnyPluginSignature[], TOptionalSignatures extends readonly TreeViewAnyPluginSignature[] = []> = MergeSignaturesProperty<[...TreeViewCorePluginSignatures, ...TSignatures], 'state'> & Partial<MergeSignaturesProperty<TOptionalSignatures, 'state'>>;
|
|
23
|
+
export type TreeViewStore<TSignatures extends readonly TreeViewAnyPluginSignature[], TOptionalSignatures extends readonly TreeViewAnyPluginSignature[] = []> = Store<TreeViewState<TSignatures, TOptionalSignatures>>;
|
|
24
|
+
export type TreeViewReadonlyStore<TSignatures extends readonly TreeViewAnyPluginSignature[], TOptionalSignatures extends readonly TreeViewAnyPluginSignature[] = []> = ReadonlyStore<TreeViewState<TSignatures, TOptionalSignatures>>;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { useTreeViewExpansion } from "./useTreeViewExpansion.js";
|
|
2
|
-
export type { UseTreeViewExpansionSignature, UseTreeViewExpansionParameters, UseTreeViewExpansionParametersWithDefaults } from "./useTreeViewExpansion.types.js";
|
|
2
|
+
export type { UseTreeViewExpansionSignature, UseTreeViewExpansionParameters, UseTreeViewExpansionParametersWithDefaults } from "./useTreeViewExpansion.types.js";
|
|
3
|
+
export { expansionSelectors } from "./useTreeViewExpansion.selectors.js";
|
|
@@ -3,10 +3,17 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "expansionSelectors", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _useTreeViewExpansion2.expansionSelectors;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
Object.defineProperty(exports, "useTreeViewExpansion", {
|
|
7
13
|
enumerable: true,
|
|
8
14
|
get: function () {
|
|
9
15
|
return _useTreeViewExpansion.useTreeViewExpansion;
|
|
10
16
|
}
|
|
11
17
|
});
|
|
12
|
-
var _useTreeViewExpansion = require("./useTreeViewExpansion");
|
|
18
|
+
var _useTreeViewExpansion = require("./useTreeViewExpansion");
|
|
19
|
+
var _useTreeViewExpansion2 = require("./useTreeViewExpansion.selectors");
|
|
@@ -25,27 +25,21 @@ const useTreeViewExpansion = ({
|
|
|
25
25
|
defaultValue: params.defaultExpandedItems
|
|
26
26
|
});
|
|
27
27
|
(0, _useEnhancedEffect.default)(() => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
expansionTrigger: params.expansionTrigger
|
|
32
|
-
});
|
|
33
|
-
if (prevState.expansion.expansionTrigger === newExpansionTrigger) {
|
|
34
|
-
return prevState;
|
|
35
|
-
}
|
|
36
|
-
return (0, _extends2.default)({}, prevState, {
|
|
37
|
-
expansion: (0, _extends2.default)({}, prevState.expansion, {
|
|
38
|
-
expansionTrigger: newExpansionTrigger
|
|
39
|
-
})
|
|
40
|
-
});
|
|
28
|
+
const newExpansionTrigger = (0, _useTreeViewExpansion2.getExpansionTrigger)({
|
|
29
|
+
isItemEditable: params.isItemEditable,
|
|
30
|
+
expansionTrigger: params.expansionTrigger
|
|
41
31
|
});
|
|
32
|
+
if (store.state.expansion.expansionTrigger === newExpansionTrigger) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
store.set('expansion', (0, _extends2.default)({}, store.state.expansion, {
|
|
36
|
+
expansionTrigger: newExpansionTrigger
|
|
37
|
+
}));
|
|
42
38
|
}, [store, params.isItemEditable, params.expansionTrigger]);
|
|
43
39
|
const setExpandedItems = (event, value) => {
|
|
44
40
|
if (params.expandedItems === undefined) {
|
|
45
|
-
store.
|
|
46
|
-
|
|
47
|
-
expandedItems: value
|
|
48
|
-
})
|
|
41
|
+
store.set('expansion', (0, _extends2.default)({}, store.state.expansion, {
|
|
42
|
+
expandedItems: value
|
|
49
43
|
}));
|
|
50
44
|
}
|
|
51
45
|
params.onExpandedItemsChange?.(event, value);
|
|
@@ -58,7 +52,7 @@ const useTreeViewExpansion = ({
|
|
|
58
52
|
event,
|
|
59
53
|
shouldBeExpanded
|
|
60
54
|
}) => {
|
|
61
|
-
const oldExpanded =
|
|
55
|
+
const oldExpanded = _useTreeViewExpansion.expansionSelectors.expandedItemsRaw(store.state);
|
|
62
56
|
let newExpanded;
|
|
63
57
|
if (shouldBeExpanded) {
|
|
64
58
|
newExpanded = [itemId].concat(oldExpanded);
|
|
@@ -75,7 +69,7 @@ const useTreeViewExpansion = ({
|
|
|
75
69
|
event = null,
|
|
76
70
|
shouldBeExpanded
|
|
77
71
|
}) => {
|
|
78
|
-
const isExpandedBefore =
|
|
72
|
+
const isExpandedBefore = _useTreeViewExpansion.expansionSelectors.isItemExpanded(store.state, itemId);
|
|
79
73
|
const cleanShouldBeExpanded = shouldBeExpanded ?? !isExpandedBefore;
|
|
80
74
|
if (isExpandedBefore === cleanShouldBeExpanded) {
|
|
81
75
|
return;
|
|
@@ -96,14 +90,17 @@ const useTreeViewExpansion = ({
|
|
|
96
90
|
shouldBeExpanded: cleanShouldBeExpanded
|
|
97
91
|
});
|
|
98
92
|
});
|
|
93
|
+
const isItemExpanded = (0, _useEventCallback.default)(itemId => {
|
|
94
|
+
return _useTreeViewExpansion.expansionSelectors.isItemExpandable(store.state, itemId);
|
|
95
|
+
});
|
|
99
96
|
const expandAllSiblings = (event, itemId) => {
|
|
100
|
-
const itemMeta =
|
|
97
|
+
const itemMeta = _useTreeViewItems.itemsSelectors.itemMeta(store.state, itemId);
|
|
101
98
|
if (itemMeta == null) {
|
|
102
99
|
return;
|
|
103
100
|
}
|
|
104
|
-
const siblings =
|
|
105
|
-
const diff = siblings.filter(child =>
|
|
106
|
-
const newExpanded =
|
|
101
|
+
const siblings = _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(store.state, itemMeta.parentId);
|
|
102
|
+
const diff = siblings.filter(child => _useTreeViewExpansion.expansionSelectors.isItemExpandable(store.state, child) && !_useTreeViewExpansion.expansionSelectors.isItemExpanded(store.state, child));
|
|
103
|
+
const newExpanded = _useTreeViewExpansion.expansionSelectors.expandedItemsRaw(store.state).concat(diff);
|
|
107
104
|
if (diff.length > 0) {
|
|
108
105
|
if (params.onItemExpansionToggle) {
|
|
109
106
|
diff.forEach(newlyExpandedItemId => {
|
|
@@ -120,16 +117,15 @@ const useTreeViewExpansion = ({
|
|
|
120
117
|
(0, _useEnhancedEffect.default)(() => {
|
|
121
118
|
const expandedItems = params.expandedItems;
|
|
122
119
|
if (expandedItems !== undefined) {
|
|
123
|
-
store.
|
|
124
|
-
|
|
125
|
-
expandedItems
|
|
126
|
-
})
|
|
120
|
+
store.set('expansion', (0, _extends2.default)({}, store.state.expansion, {
|
|
121
|
+
expandedItems
|
|
127
122
|
}));
|
|
128
123
|
}
|
|
129
124
|
}, [store, params.expandedItems]);
|
|
130
125
|
return {
|
|
131
126
|
publicAPI: {
|
|
132
|
-
setItemExpansion
|
|
127
|
+
setItemExpansion,
|
|
128
|
+
isItemExpanded
|
|
133
129
|
},
|
|
134
130
|
instance: {
|
|
135
131
|
setItemExpansion,
|
|
@@ -1,318 +1,26 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TreeViewState } from "../../models/index.js";
|
|
2
2
|
import { UseTreeViewExpansionSignature } from "./useTreeViewExpansion.types.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
};
|
|
27
|
-
lastResult: () => string[];
|
|
28
|
-
dependencies: [TreeViewRootSelector<UseTreeViewExpansionSignature>];
|
|
29
|
-
recomputations: () => number;
|
|
30
|
-
resetRecomputations: () => void;
|
|
31
|
-
dependencyRecomputations: () => number;
|
|
32
|
-
resetDependencyRecomputations: () => void;
|
|
33
|
-
} & {
|
|
34
|
-
memoize: typeof import("reselect").weakMapMemoize;
|
|
35
|
-
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* Get the expanded items as a Map.
|
|
39
|
-
* @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
|
|
40
|
-
* @returns {TreeViewExpansionValue} The expanded items as a Map.
|
|
41
|
-
*/
|
|
42
|
-
export declare const selectorExpandedItemsMap: ((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewExpansion.types.js").UseTreeViewExpansionState & Partial<{}> & {
|
|
43
|
-
cacheKey: import("../../models/index.js").TreeViewStateCacheKey;
|
|
44
|
-
}) => Map<string, true>) & {
|
|
45
|
-
clearCache: () => void;
|
|
46
|
-
resultsCount: () => number;
|
|
47
|
-
resetResultsCount: () => void;
|
|
48
|
-
} & {
|
|
49
|
-
resultFunc: (resultFuncArgs_0: string[]) => Map<string, true>;
|
|
50
|
-
memoizedResultFunc: ((resultFuncArgs_0: string[]) => Map<string, true>) & {
|
|
51
|
-
clearCache: () => void;
|
|
52
|
-
resultsCount: () => number;
|
|
53
|
-
resetResultsCount: () => void;
|
|
54
|
-
};
|
|
55
|
-
lastResult: () => Map<string, true>;
|
|
56
|
-
dependencies: [((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewExpansion.types.js").UseTreeViewExpansionState & Partial<{}> & {
|
|
57
|
-
cacheKey: import("../../models/index.js").TreeViewStateCacheKey;
|
|
58
|
-
}) => string[]) & {
|
|
59
|
-
clearCache: () => void;
|
|
60
|
-
resultsCount: () => number;
|
|
61
|
-
resetResultsCount: () => void;
|
|
62
|
-
} & {
|
|
63
|
-
resultFunc: (resultFuncArgs_0: {
|
|
64
|
-
expandedItems: string[];
|
|
65
|
-
expansionTrigger: "content" | "iconContainer";
|
|
66
|
-
}) => string[];
|
|
67
|
-
memoizedResultFunc: ((resultFuncArgs_0: {
|
|
68
|
-
expandedItems: string[];
|
|
69
|
-
expansionTrigger: "content" | "iconContainer";
|
|
70
|
-
}) => string[]) & {
|
|
71
|
-
clearCache: () => void;
|
|
72
|
-
resultsCount: () => number;
|
|
73
|
-
resetResultsCount: () => void;
|
|
74
|
-
};
|
|
75
|
-
lastResult: () => string[];
|
|
76
|
-
dependencies: [TreeViewRootSelector<UseTreeViewExpansionSignature>];
|
|
77
|
-
recomputations: () => number;
|
|
78
|
-
resetRecomputations: () => void;
|
|
79
|
-
dependencyRecomputations: () => number;
|
|
80
|
-
resetDependencyRecomputations: () => void;
|
|
81
|
-
} & {
|
|
82
|
-
memoize: typeof import("reselect").weakMapMemoize;
|
|
83
|
-
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
84
|
-
}];
|
|
85
|
-
recomputations: () => number;
|
|
86
|
-
resetRecomputations: () => void;
|
|
87
|
-
dependencyRecomputations: () => number;
|
|
88
|
-
resetDependencyRecomputations: () => void;
|
|
89
|
-
} & {
|
|
90
|
-
memoize: typeof import("reselect").weakMapMemoize;
|
|
91
|
-
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
92
|
-
};
|
|
93
|
-
/**
|
|
94
|
-
* Check if an item is expanded.
|
|
95
|
-
* @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
|
|
96
|
-
* @returns {boolean} `true` if the item is expanded, `false` otherwise.
|
|
97
|
-
*/
|
|
98
|
-
export declare const selectorIsItemExpanded: ((state: any, itemId: string) => boolean) & {
|
|
99
|
-
clearCache: () => void;
|
|
100
|
-
resultsCount: () => number;
|
|
101
|
-
resetResultsCount: () => void;
|
|
102
|
-
} & {
|
|
103
|
-
resultFunc: (resultFuncArgs_0: Map<string, true>, resultFuncArgs_1: string) => boolean;
|
|
104
|
-
memoizedResultFunc: ((resultFuncArgs_0: Map<string, true>, resultFuncArgs_1: string) => boolean) & {
|
|
105
|
-
clearCache: () => void;
|
|
106
|
-
resultsCount: () => number;
|
|
107
|
-
resetResultsCount: () => void;
|
|
108
|
-
};
|
|
109
|
-
lastResult: () => boolean;
|
|
110
|
-
dependencies: [((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewExpansion.types.js").UseTreeViewExpansionState & Partial<{}> & {
|
|
111
|
-
cacheKey: import("../../models/index.js").TreeViewStateCacheKey;
|
|
112
|
-
}) => Map<string, true>) & {
|
|
113
|
-
clearCache: () => void;
|
|
114
|
-
resultsCount: () => number;
|
|
115
|
-
resetResultsCount: () => void;
|
|
116
|
-
} & {
|
|
117
|
-
resultFunc: (resultFuncArgs_0: string[]) => Map<string, true>;
|
|
118
|
-
memoizedResultFunc: ((resultFuncArgs_0: string[]) => Map<string, true>) & {
|
|
119
|
-
clearCache: () => void;
|
|
120
|
-
resultsCount: () => number;
|
|
121
|
-
resetResultsCount: () => void;
|
|
122
|
-
};
|
|
123
|
-
lastResult: () => Map<string, true>;
|
|
124
|
-
dependencies: [((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewExpansion.types.js").UseTreeViewExpansionState & Partial<{}> & {
|
|
125
|
-
cacheKey: import("../../models/index.js").TreeViewStateCacheKey;
|
|
126
|
-
}) => string[]) & {
|
|
127
|
-
clearCache: () => void;
|
|
128
|
-
resultsCount: () => number;
|
|
129
|
-
resetResultsCount: () => void;
|
|
130
|
-
} & {
|
|
131
|
-
resultFunc: (resultFuncArgs_0: {
|
|
132
|
-
expandedItems: string[];
|
|
133
|
-
expansionTrigger: "content" | "iconContainer";
|
|
134
|
-
}) => string[];
|
|
135
|
-
memoizedResultFunc: ((resultFuncArgs_0: {
|
|
136
|
-
expandedItems: string[];
|
|
137
|
-
expansionTrigger: "content" | "iconContainer";
|
|
138
|
-
}) => string[]) & {
|
|
139
|
-
clearCache: () => void;
|
|
140
|
-
resultsCount: () => number;
|
|
141
|
-
resetResultsCount: () => void;
|
|
142
|
-
};
|
|
143
|
-
lastResult: () => string[];
|
|
144
|
-
dependencies: [TreeViewRootSelector<UseTreeViewExpansionSignature>];
|
|
145
|
-
recomputations: () => number;
|
|
146
|
-
resetRecomputations: () => void;
|
|
147
|
-
dependencyRecomputations: () => number;
|
|
148
|
-
resetDependencyRecomputations: () => void;
|
|
149
|
-
} & {
|
|
150
|
-
memoize: typeof import("reselect").weakMapMemoize;
|
|
151
|
-
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
152
|
-
}];
|
|
153
|
-
recomputations: () => number;
|
|
154
|
-
resetRecomputations: () => void;
|
|
155
|
-
dependencyRecomputations: () => number;
|
|
156
|
-
resetDependencyRecomputations: () => void;
|
|
157
|
-
} & {
|
|
158
|
-
memoize: typeof import("reselect").weakMapMemoize;
|
|
159
|
-
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
160
|
-
}, (_: any, itemId: string) => string];
|
|
161
|
-
recomputations: () => number;
|
|
162
|
-
resetRecomputations: () => void;
|
|
163
|
-
dependencyRecomputations: () => number;
|
|
164
|
-
resetDependencyRecomputations: () => void;
|
|
165
|
-
} & {
|
|
166
|
-
memoize: typeof import("reselect").weakMapMemoize;
|
|
167
|
-
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
168
|
-
};
|
|
169
|
-
/**
|
|
170
|
-
* Check if an item is expandable.
|
|
171
|
-
* @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
|
|
172
|
-
* @returns {boolean} `true` if the item is expandable, `false` otherwise.
|
|
173
|
-
*/
|
|
174
|
-
export declare const selectorIsItemExpandable: ((state: any, itemId: string | null) => boolean) & {
|
|
175
|
-
clearCache: () => void;
|
|
176
|
-
resultsCount: () => number;
|
|
177
|
-
resetResultsCount: () => void;
|
|
178
|
-
} & {
|
|
179
|
-
resultFunc: (resultFuncArgs_0: import("../../index.js").TreeViewItemMeta | null) => boolean;
|
|
180
|
-
memoizedResultFunc: ((resultFuncArgs_0: import("../../index.js").TreeViewItemMeta | null) => boolean) & {
|
|
181
|
-
clearCache: () => void;
|
|
182
|
-
resultsCount: () => number;
|
|
183
|
-
resetResultsCount: () => void;
|
|
184
|
-
};
|
|
185
|
-
lastResult: () => boolean;
|
|
186
|
-
dependencies: [((state: any, itemId: string | null) => import("../../index.js").TreeViewItemMeta | null) & {
|
|
187
|
-
clearCache: () => void;
|
|
188
|
-
resultsCount: () => number;
|
|
189
|
-
resetResultsCount: () => void;
|
|
190
|
-
} & {
|
|
191
|
-
resultFunc: (resultFuncArgs_0: {
|
|
192
|
-
[itemId: string]: import("../../index.js").TreeViewItemMeta;
|
|
193
|
-
}, resultFuncArgs_1: string | null) => import("../../index.js").TreeViewItemMeta | null;
|
|
194
|
-
memoizedResultFunc: ((resultFuncArgs_0: {
|
|
195
|
-
[itemId: string]: import("../../index.js").TreeViewItemMeta;
|
|
196
|
-
}, resultFuncArgs_1: string | null) => import("../../index.js").TreeViewItemMeta | null) & {
|
|
197
|
-
clearCache: () => void;
|
|
198
|
-
resultsCount: () => number;
|
|
199
|
-
resetResultsCount: () => void;
|
|
200
|
-
};
|
|
201
|
-
lastResult: () => import("../../index.js").TreeViewItemMeta | null;
|
|
202
|
-
dependencies: [((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("../useTreeViewItems/index.js").UseTreeViewItemsState<import("../../../index.js").TreeViewDefaultItemModelProperties> & Partial<{}> & {
|
|
203
|
-
cacheKey: import("../../models/index.js").TreeViewStateCacheKey;
|
|
204
|
-
}) => {
|
|
205
|
-
[itemId: string]: import("../../index.js").TreeViewItemMeta;
|
|
206
|
-
}) & {
|
|
207
|
-
clearCache: () => void;
|
|
208
|
-
resultsCount: () => number;
|
|
209
|
-
resetResultsCount: () => void;
|
|
210
|
-
} & {
|
|
211
|
-
resultFunc: (resultFuncArgs_0: {
|
|
212
|
-
disabledItemsFocusable: boolean;
|
|
213
|
-
itemModelLookup: {
|
|
214
|
-
[itemId: string]: import("../../../index.js").TreeViewBaseItem<import("../../../index.js").TreeViewDefaultItemModelProperties>;
|
|
215
|
-
};
|
|
216
|
-
itemMetaLookup: {
|
|
217
|
-
[itemId: string]: import("../../index.js").TreeViewItemMeta;
|
|
218
|
-
};
|
|
219
|
-
itemOrderedChildrenIdsLookup: {
|
|
220
|
-
[parentItemId: string]: string[];
|
|
221
|
-
};
|
|
222
|
-
itemChildrenIndexesLookup: {
|
|
223
|
-
[parentItemId: string]: {
|
|
224
|
-
[itemId: string]: number;
|
|
225
|
-
};
|
|
226
|
-
};
|
|
227
|
-
loading: boolean;
|
|
228
|
-
error: Error | null;
|
|
229
|
-
}) => {
|
|
230
|
-
[itemId: string]: import("../../index.js").TreeViewItemMeta;
|
|
231
|
-
};
|
|
232
|
-
memoizedResultFunc: ((resultFuncArgs_0: {
|
|
233
|
-
disabledItemsFocusable: boolean;
|
|
234
|
-
itemModelLookup: {
|
|
235
|
-
[itemId: string]: import("../../../index.js").TreeViewBaseItem<import("../../../index.js").TreeViewDefaultItemModelProperties>;
|
|
236
|
-
};
|
|
237
|
-
itemMetaLookup: {
|
|
238
|
-
[itemId: string]: import("../../index.js").TreeViewItemMeta;
|
|
239
|
-
};
|
|
240
|
-
itemOrderedChildrenIdsLookup: {
|
|
241
|
-
[parentItemId: string]: string[];
|
|
242
|
-
};
|
|
243
|
-
itemChildrenIndexesLookup: {
|
|
244
|
-
[parentItemId: string]: {
|
|
245
|
-
[itemId: string]: number;
|
|
246
|
-
};
|
|
247
|
-
};
|
|
248
|
-
loading: boolean;
|
|
249
|
-
error: Error | null;
|
|
250
|
-
}) => {
|
|
251
|
-
[itemId: string]: import("../../index.js").TreeViewItemMeta;
|
|
252
|
-
}) & {
|
|
253
|
-
clearCache: () => void;
|
|
254
|
-
resultsCount: () => number;
|
|
255
|
-
resetResultsCount: () => void;
|
|
256
|
-
};
|
|
257
|
-
lastResult: () => {
|
|
258
|
-
[itemId: string]: import("../../index.js").TreeViewItemMeta;
|
|
259
|
-
};
|
|
260
|
-
dependencies: [TreeViewRootSelector<import("../useTreeViewItems/index.js").UseTreeViewItemsSignature>];
|
|
261
|
-
recomputations: () => number;
|
|
262
|
-
resetRecomputations: () => void;
|
|
263
|
-
dependencyRecomputations: () => number;
|
|
264
|
-
resetDependencyRecomputations: () => void;
|
|
265
|
-
} & {
|
|
266
|
-
memoize: typeof import("reselect").weakMapMemoize;
|
|
267
|
-
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
268
|
-
}, (_: any, itemId: string | null) => string | null];
|
|
269
|
-
recomputations: () => number;
|
|
270
|
-
resetRecomputations: () => void;
|
|
271
|
-
dependencyRecomputations: () => number;
|
|
272
|
-
resetDependencyRecomputations: () => void;
|
|
273
|
-
} & {
|
|
274
|
-
memoize: typeof import("reselect").weakMapMemoize;
|
|
275
|
-
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
276
|
-
}];
|
|
277
|
-
recomputations: () => number;
|
|
278
|
-
resetRecomputations: () => void;
|
|
279
|
-
dependencyRecomputations: () => number;
|
|
280
|
-
resetDependencyRecomputations: () => void;
|
|
281
|
-
} & {
|
|
282
|
-
memoize: typeof import("reselect").weakMapMemoize;
|
|
283
|
-
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
284
|
-
};
|
|
285
|
-
/**
|
|
286
|
-
* Get the slot that triggers the item's expansion when clicked.
|
|
287
|
-
* @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
|
|
288
|
-
* @returns {'content' | 'iconContainer'} The slot that triggers the item's expansion when clicked. Is `null` if the item is not expandable.
|
|
289
|
-
*/
|
|
290
|
-
export declare const selectorItemExpansionTrigger: ((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewExpansion.types.js").UseTreeViewExpansionState & Partial<{}> & {
|
|
291
|
-
cacheKey: import("../../models/index.js").TreeViewStateCacheKey;
|
|
292
|
-
}) => "content" | "iconContainer") & {
|
|
293
|
-
clearCache: () => void;
|
|
294
|
-
resultsCount: () => number;
|
|
295
|
-
resetResultsCount: () => void;
|
|
296
|
-
} & {
|
|
297
|
-
resultFunc: (resultFuncArgs_0: {
|
|
298
|
-
expandedItems: string[];
|
|
299
|
-
expansionTrigger: "content" | "iconContainer";
|
|
300
|
-
}) => "content" | "iconContainer";
|
|
301
|
-
memoizedResultFunc: ((resultFuncArgs_0: {
|
|
302
|
-
expandedItems: string[];
|
|
303
|
-
expansionTrigger: "content" | "iconContainer";
|
|
304
|
-
}) => "content" | "iconContainer") & {
|
|
305
|
-
clearCache: () => void;
|
|
306
|
-
resultsCount: () => number;
|
|
307
|
-
resetResultsCount: () => void;
|
|
308
|
-
};
|
|
309
|
-
lastResult: () => "content" | "iconContainer";
|
|
310
|
-
dependencies: [TreeViewRootSelector<UseTreeViewExpansionSignature>];
|
|
311
|
-
recomputations: () => number;
|
|
312
|
-
resetRecomputations: () => void;
|
|
313
|
-
dependencyRecomputations: () => number;
|
|
314
|
-
resetDependencyRecomputations: () => void;
|
|
315
|
-
} & {
|
|
316
|
-
memoize: typeof import("reselect").weakMapMemoize;
|
|
317
|
-
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
3
|
+
export declare const expansionSelectors: {
|
|
4
|
+
/**
|
|
5
|
+
* Gets the expanded items as provided to the component.
|
|
6
|
+
*/
|
|
7
|
+
expandedItemsRaw: (state: TreeViewState<[UseTreeViewExpansionSignature]>) => string[];
|
|
8
|
+
/**
|
|
9
|
+
* Get the expanded items as a Map.
|
|
10
|
+
* @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
|
|
11
|
+
* @returns {TreeViewExpansionValue} The expanded items as a Map.
|
|
12
|
+
*/
|
|
13
|
+
expandedItemsMap: (args_0: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewExpansion.types.js").UseTreeViewExpansionState & Partial<{}>) => Map<string, true>;
|
|
14
|
+
/**
|
|
15
|
+
* Gets the slot that triggers the item's expansion when clicked.
|
|
16
|
+
*/
|
|
17
|
+
triggerSlot: (state: TreeViewState<[UseTreeViewExpansionSignature]>) => "content" | "iconContainer";
|
|
18
|
+
/**
|
|
19
|
+
* Checks whether an item is expanded.
|
|
20
|
+
*/
|
|
21
|
+
isItemExpanded: (args_0: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewExpansion.types.js").UseTreeViewExpansionState & Partial<{}>, itemId: string) => boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Checks whether an item is expandable.
|
|
24
|
+
*/
|
|
25
|
+
isItemExpandable: (args_0: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("../useTreeViewItems/index.js").UseTreeViewItemsState<import("../../../index.js").TreeViewDefaultItemModelProperties> & Partial<{}>, _itemId: string) => boolean;
|
|
318
26
|
};
|
|
@@ -3,48 +3,37 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
var
|
|
6
|
+
exports.expansionSelectors = 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 expanded items.
|
|
13
|
-
* @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
|
|
14
|
-
* @returns {TreeViewItemId[]} The expanded items.
|
|
15
|
-
*/
|
|
16
|
-
const selectorExpandedItems = exports.selectorExpandedItems = (0, _selectors.createSelector)([selectorExpansion], expansionState => expansionState.expandedItems);
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Get the expanded items as a Map.
|
|
20
|
-
* @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
|
|
21
|
-
* @returns {TreeViewExpansionValue} The expanded items as a Map.
|
|
22
|
-
*/
|
|
23
|
-
const selectorExpandedItemsMap = exports.selectorExpandedItemsMap = (0, _selectors.createSelector)([selectorExpandedItems], expandedItems => {
|
|
9
|
+
const expandedItemMapSelector = (0, _store.createSelectorMemoized)(state => state.expansion.expandedItems, expandedItems => {
|
|
24
10
|
const expandedItemsMap = new Map();
|
|
25
11
|
expandedItems.forEach(id => {
|
|
26
12
|
expandedItemsMap.set(id, true);
|
|
27
13
|
});
|
|
28
14
|
return expandedItemsMap;
|
|
29
15
|
});
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
16
|
+
const expansionSelectors = exports.expansionSelectors = {
|
|
17
|
+
/**
|
|
18
|
+
* Gets the expanded items as provided to the component.
|
|
19
|
+
*/
|
|
20
|
+
expandedItemsRaw: (0, _store.createSelector)(state => state.expansion.expandedItems),
|
|
21
|
+
/**
|
|
22
|
+
* Get the expanded items as a Map.
|
|
23
|
+
* @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
|
|
24
|
+
* @returns {TreeViewExpansionValue} The expanded items as a Map.
|
|
25
|
+
*/
|
|
26
|
+
expandedItemsMap: expandedItemMapSelector,
|
|
27
|
+
/**
|
|
28
|
+
* Gets the slot that triggers the item's expansion when clicked.
|
|
29
|
+
*/
|
|
30
|
+
triggerSlot: (0, _store.createSelector)(state => state.expansion.expansionTrigger),
|
|
31
|
+
/**
|
|
32
|
+
* Checks whether an item is expanded.
|
|
33
|
+
*/
|
|
34
|
+
isItemExpanded: (0, _store.createSelector)(expandedItemMapSelector, (expandedItemsMap, itemId) => expandedItemsMap.has(itemId)),
|
|
35
|
+
/**
|
|
36
|
+
* Checks whether an item is expandable.
|
|
37
|
+
*/
|
|
38
|
+
isItemExpandable: (0, _store.createSelector)(_useTreeViewItems.itemsSelectors.itemMeta, (itemMeta, _itemId) => itemMeta?.expandable ?? false)
|
|
39
|
+
};
|
|
@@ -17,8 +17,14 @@ export interface UseTreeViewExpansionPublicAPI {
|
|
|
17
17
|
event?: React.SyntheticEvent;
|
|
18
18
|
shouldBeExpanded?: boolean;
|
|
19
19
|
}) => void;
|
|
20
|
+
/**
|
|
21
|
+
* Check if an item is expanded.
|
|
22
|
+
* @param {TreeViewItemId} itemId The id of the item to check.
|
|
23
|
+
* @returns {boolean} `true` if the item is expanded, `false` otherwise.
|
|
24
|
+
*/
|
|
25
|
+
isItemExpanded: (itemId: TreeViewItemId) => boolean;
|
|
20
26
|
}
|
|
21
|
-
export interface UseTreeViewExpansionInstance extends UseTreeViewExpansionPublicAPI {
|
|
27
|
+
export interface UseTreeViewExpansionInstance extends Omit<UseTreeViewExpansionPublicAPI, 'isItemExpanded'> {
|
|
22
28
|
/**
|
|
23
29
|
* Expand all the siblings (i.e.: the items that have the same parent) of a given item.
|
|
24
30
|
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { useTreeViewFocus } from "./useTreeViewFocus.js";
|
|
2
|
-
export type { UseTreeViewFocusSignature, UseTreeViewFocusParameters, UseTreeViewFocusParametersWithDefaults } from "./useTreeViewFocus.types.js";
|
|
2
|
+
export type { UseTreeViewFocusSignature, UseTreeViewFocusParameters, UseTreeViewFocusParametersWithDefaults } from "./useTreeViewFocus.types.js";
|
|
3
|
+
export { focusSelectors } from "./useTreeViewFocus.selectors.js";
|
|
@@ -3,10 +3,17 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "focusSelectors", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _useTreeViewFocus2.focusSelectors;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
Object.defineProperty(exports, "useTreeViewFocus", {
|
|
7
13
|
enumerable: true,
|
|
8
14
|
get: function () {
|
|
9
15
|
return _useTreeViewFocus.useTreeViewFocus;
|
|
10
16
|
}
|
|
11
17
|
});
|
|
12
|
-
var _useTreeViewFocus = require("./useTreeViewFocus");
|
|
18
|
+
var _useTreeViewFocus = require("./useTreeViewFocus");
|
|
19
|
+
var _useTreeViewFocus2 = require("./useTreeViewFocus.selectors");
|