@mui/x-tree-view 9.11.0 → 9.13.0
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 +317 -0
- package/RichTreeView/RichTreeView.js +30 -25
- package/RichTreeView/RichTreeView.mjs +30 -25
- package/RichTreeView/RichTreeView.types.d.mts +27 -1
- package/RichTreeView/RichTreeView.types.d.ts +27 -1
- package/RichTreeView/richTreeViewClasses.d.mts +4 -1
- package/RichTreeView/richTreeViewClasses.d.ts +4 -1
- package/RichTreeView/richTreeViewClasses.js +1 -1
- package/RichTreeView/richTreeViewClasses.mjs +1 -1
- package/RichTreeView/useExtractRichTreeViewParameters.d.mts +1 -0
- package/RichTreeView/useExtractRichTreeViewParameters.d.ts +1 -0
- package/RichTreeView/useExtractRichTreeViewParameters.js +6 -3
- package/RichTreeView/useExtractRichTreeViewParameters.mjs +6 -3
- package/SimpleTreeView/simpleTreeViewClasses.d.mts +1 -1
- package/SimpleTreeView/simpleTreeViewClasses.d.ts +1 -1
- package/TreeItem/TreeItem.js +2 -1
- package/TreeItem/TreeItem.mjs +2 -1
- package/TreeItemLoader/TreeItemLoader.d.mts +20 -0
- package/TreeItemLoader/TreeItemLoader.d.ts +20 -0
- package/TreeItemLoader/TreeItemLoader.js +152 -0
- package/TreeItemLoader/TreeItemLoader.mjs +146 -0
- package/TreeItemLoader/TreeItemLoader.types.d.mts +36 -0
- package/TreeItemLoader/TreeItemLoader.types.d.ts +36 -0
- package/TreeItemLoader/TreeItemLoader.types.js +5 -0
- package/TreeItemLoader/TreeItemLoader.types.mjs +1 -0
- package/TreeItemLoader/TreeItemLoaderContext.d.mts +24 -0
- package/TreeItemLoader/TreeItemLoaderContext.d.ts +24 -0
- package/TreeItemLoader/TreeItemLoaderContext.js +22 -0
- package/TreeItemLoader/TreeItemLoaderContext.mjs +16 -0
- package/TreeItemLoader/index.d.mts +3 -0
- package/TreeItemLoader/index.d.ts +3 -0
- package/TreeItemLoader/index.js +34 -0
- package/TreeItemLoader/index.mjs +2 -0
- package/TreeItemLoader/treeItemLoaderClasses.d.mts +13 -0
- package/TreeItemLoader/treeItemLoaderClasses.d.ts +13 -0
- package/TreeItemLoader/treeItemLoaderClasses.js +14 -0
- package/TreeItemLoader/treeItemLoaderClasses.mjs +6 -0
- package/index.d.mts +1 -0
- package/index.d.ts +1 -0
- package/index.js +12 -1
- package/index.mjs +2 -1
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.js +2 -2
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.mjs +3 -3
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.mts +4 -0
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.ts +4 -0
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.mts +1 -2
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.ts +1 -2
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.js +2 -9
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.mjs +2 -7
- package/internals/TreeViewProvider/TreeViewProvider.js +7 -3
- package/internals/TreeViewProvider/TreeViewProvider.mjs +7 -3
- package/internals/TreeViewProvider/TreeViewProvider.types.d.mts +3 -3
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
- package/internals/TreeViewProvider/TreeViewStyleContext.d.mts +30 -2
- package/internals/TreeViewProvider/TreeViewStyleContext.d.ts +30 -2
- package/internals/TreeViewProvider/TreeViewStyleContext.js +12 -0
- package/internals/TreeViewProvider/TreeViewStyleContext.mjs +13 -0
- package/internals/components/RichTreeViewItems.js +59 -2
- package/internals/components/RichTreeViewItems.mjs +59 -2
- package/internals/components/RichTreeViewLoading.d.mts +97 -0
- package/internals/components/RichTreeViewLoading.d.ts +97 -0
- package/internals/components/RichTreeViewLoading.js +171 -0
- package/internals/components/RichTreeViewLoading.mjs +160 -0
- package/internals/constants.d.mts +6 -0
- package/internals/constants.d.ts +6 -0
- package/internals/constants.js +12 -0
- package/internals/constants.mjs +6 -0
- package/internals/hooks/useTreeViewStore.d.mts +1 -1
- package/internals/hooks/useTreeViewStore.d.ts +1 -1
- package/internals/hooks/useTreeViewStore.js +7 -3
- package/internals/hooks/useTreeViewStore.mjs +7 -3
- package/internals/index.d.mts +2 -0
- package/internals/index.d.ts +2 -0
- package/internals/index.js +13 -0
- package/internals/index.mjs +1 -0
- package/internals/plugins/expansion/selectors.d.mts +3 -2
- package/internals/plugins/expansion/selectors.d.ts +3 -2
- package/internals/plugins/expansion/selectors.js +4 -4
- package/internals/plugins/expansion/selectors.mjs +5 -5
- package/internals/plugins/focus/selectors.d.mts +3 -2
- package/internals/plugins/focus/selectors.d.ts +3 -2
- package/internals/plugins/focus/selectors.js +3 -3
- package/internals/plugins/focus/selectors.mjs +4 -4
- package/internals/plugins/id/selectors.d.mts +6 -3
- package/internals/plugins/id/selectors.d.ts +6 -3
- package/internals/plugins/id/selectors.js +4 -5
- package/internals/plugins/id/selectors.mjs +4 -5
- package/internals/plugins/items/selectors.d.mts +9 -8
- package/internals/plugins/items/selectors.d.ts +9 -8
- package/internals/plugins/items/selectors.js +15 -16
- package/internals/plugins/items/selectors.mjs +15 -16
- package/internals/plugins/labelEditing/selectors.d.mts +3 -2
- package/internals/plugins/labelEditing/selectors.d.ts +3 -2
- package/internals/plugins/labelEditing/selectors.js +6 -5
- package/internals/plugins/labelEditing/selectors.mjs +6 -5
- package/internals/plugins/lazyLoading/selectors.d.mts +9 -3
- package/internals/plugins/lazyLoading/selectors.d.ts +9 -3
- package/internals/plugins/lazyLoading/selectors.js +10 -6
- package/internals/plugins/lazyLoading/selectors.mjs +10 -6
- package/internals/plugins/lazyLoading/types.d.mts +5 -1
- package/internals/plugins/lazyLoading/types.d.ts +5 -1
- package/internals/plugins/selection/selectors.d.mts +15 -9
- package/internals/plugins/selection/selectors.d.ts +15 -9
- package/internals/plugins/selection/selectors.js +12 -12
- package/internals/plugins/selection/selectors.mjs +13 -13
- package/package.json +19 -7
- package/useTreeItem/useTreeItem.js +3 -3
- package/useTreeItem/useTreeItem.mjs +3 -3
|
@@ -1,68 +1,67 @@
|
|
|
1
|
-
import { createSelector } from '@mui/x-internals/store';
|
|
2
1
|
import { isItemDisabled, TREE_VIEW_ROOT_PARENT_ID } from "./utils.mjs";
|
|
3
2
|
const EMPTY_CHILDREN = [];
|
|
4
3
|
export const itemsSelectors = {
|
|
5
4
|
/**
|
|
6
5
|
* Gets the DOM structure of the Tree View.
|
|
7
6
|
*/
|
|
8
|
-
domStructure:
|
|
7
|
+
domStructure: state => state.domStructure,
|
|
9
8
|
/**
|
|
10
9
|
* Checks whether the disabled items are focusable.
|
|
11
10
|
*/
|
|
12
|
-
disabledItemFocusable:
|
|
11
|
+
disabledItemFocusable: state => state.disabledItemsFocusable,
|
|
13
12
|
/**
|
|
14
13
|
* Gets the meta-information of all items.
|
|
15
14
|
*/
|
|
16
|
-
itemMetaLookup:
|
|
15
|
+
itemMetaLookup: state => state.itemMetaLookup,
|
|
17
16
|
/**
|
|
18
17
|
* Gets the ordered children ids of all items.
|
|
19
18
|
*/
|
|
20
|
-
itemOrderedChildrenIdsLookup:
|
|
19
|
+
itemOrderedChildrenIdsLookup: state => state.itemOrderedChildrenIdsLookup,
|
|
21
20
|
/**
|
|
22
21
|
* Gets the meta-information of an item.
|
|
23
22
|
*/
|
|
24
|
-
itemMeta:
|
|
23
|
+
itemMeta: (state, itemId) => state.itemMetaLookup[itemId ?? TREE_VIEW_ROOT_PARENT_ID] ?? null,
|
|
25
24
|
/**
|
|
26
25
|
* Gets the ordered children ids of an item.
|
|
27
26
|
*/
|
|
28
|
-
itemOrderedChildrenIds:
|
|
27
|
+
itemOrderedChildrenIds: (state, itemId) => state.itemOrderedChildrenIdsLookup[itemId ?? TREE_VIEW_ROOT_PARENT_ID] ?? EMPTY_CHILDREN,
|
|
29
28
|
/**
|
|
30
29
|
* Gets the model of an item.
|
|
31
30
|
*/
|
|
32
|
-
itemModel:
|
|
31
|
+
itemModel: (state, itemId) => state.itemModelLookup[itemId],
|
|
33
32
|
/**
|
|
34
33
|
* Checks whether an item is disabled.
|
|
35
34
|
*/
|
|
36
|
-
isItemDisabled:
|
|
35
|
+
isItemDisabled: (state, itemId) => isItemDisabled(state.itemMetaLookup, itemId),
|
|
37
36
|
/**
|
|
38
37
|
* Gets the index of an item in its parent's children.
|
|
39
38
|
*/
|
|
40
|
-
itemIndex:
|
|
39
|
+
itemIndex: (state, itemId) => {
|
|
41
40
|
const itemMeta = state.itemMetaLookup[itemId];
|
|
42
41
|
if (itemMeta == null) {
|
|
43
42
|
return -1;
|
|
44
43
|
}
|
|
45
44
|
const parentIndexes = state.itemChildrenIndexesLookup[itemMeta.parentId ?? TREE_VIEW_ROOT_PARENT_ID];
|
|
46
45
|
return parentIndexes[itemMeta.id];
|
|
47
|
-
}
|
|
46
|
+
},
|
|
48
47
|
/**
|
|
49
48
|
* Gets the id of an item's parent.
|
|
50
49
|
*/
|
|
51
|
-
itemParentId:
|
|
50
|
+
itemParentId: (state, itemId) => state.itemMetaLookup[itemId]?.parentId ?? null,
|
|
52
51
|
/**
|
|
53
52
|
* Gets the depth of an item (items at the root level have a depth of 0).
|
|
54
53
|
*/
|
|
55
|
-
itemDepth:
|
|
54
|
+
itemDepth: (state, itemId) => state.itemMetaLookup[itemId]?.depth ?? 0,
|
|
56
55
|
/**
|
|
57
56
|
* Checks whether an item can be focused.
|
|
58
57
|
*/
|
|
59
|
-
canItemBeFocused:
|
|
58
|
+
canItemBeFocused: (state, itemId) => state.disabledItemsFocusable || state.itemModelLookup[itemId] != null && !isItemDisabled(state.itemMetaLookup, itemId),
|
|
60
59
|
/**
|
|
61
60
|
* Gets the identation between an item and its children.
|
|
62
61
|
*/
|
|
63
|
-
itemChildrenIndentation:
|
|
62
|
+
itemChildrenIndentation: state => state.itemChildrenIndentation,
|
|
64
63
|
/**
|
|
65
64
|
* Gets the height of an individual item.
|
|
66
65
|
*/
|
|
67
|
-
itemHeight:
|
|
66
|
+
itemHeight: state => state.itemHeight
|
|
68
67
|
};
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import type { RichTreeViewState } from "../../RichTreeViewStore/index.mjs";
|
|
2
|
+
import type { TreeViewItemId } from "../../../models/index.mjs";
|
|
2
3
|
export declare const labelSelectors: {
|
|
3
4
|
/**
|
|
4
5
|
* Checks whether an item is editable.
|
|
5
6
|
*/
|
|
6
|
-
isItemEditable: (
|
|
7
|
+
isItemEditable: (state: RichTreeViewState<any, any>, itemId: TreeViewItemId) => boolean;
|
|
7
8
|
/**
|
|
8
9
|
* Checks whether an item is being edited.
|
|
9
10
|
*/
|
|
10
|
-
isItemBeingEdited: (state: RichTreeViewState<any, any>, itemId:
|
|
11
|
+
isItemBeingEdited: (state: RichTreeViewState<any, any>, itemId: TreeViewItemId | null) => boolean;
|
|
11
12
|
/**
|
|
12
13
|
* Checks whether any item is being edited.
|
|
13
14
|
*/
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import type { RichTreeViewState } from "../../RichTreeViewStore/index.js";
|
|
2
|
+
import type { TreeViewItemId } from "../../../models/index.js";
|
|
2
3
|
export declare const labelSelectors: {
|
|
3
4
|
/**
|
|
4
5
|
* Checks whether an item is editable.
|
|
5
6
|
*/
|
|
6
|
-
isItemEditable: (
|
|
7
|
+
isItemEditable: (state: RichTreeViewState<any, any>, itemId: TreeViewItemId) => boolean;
|
|
7
8
|
/**
|
|
8
9
|
* Checks whether an item is being edited.
|
|
9
10
|
*/
|
|
10
|
-
isItemBeingEdited: (state: RichTreeViewState<any, any>, itemId:
|
|
11
|
+
isItemBeingEdited: (state: RichTreeViewState<any, any>, itemId: TreeViewItemId | null) => boolean;
|
|
11
12
|
/**
|
|
12
13
|
* Checks whether any item is being edited.
|
|
13
14
|
*/
|
|
@@ -4,13 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.labelSelectors = void 0;
|
|
7
|
-
var _store = require("@mui/x-internals/store");
|
|
8
7
|
var _selectors = require("../items/selectors");
|
|
9
8
|
const labelSelectors = exports.labelSelectors = {
|
|
10
9
|
/**
|
|
11
10
|
* Checks whether an item is editable.
|
|
12
11
|
*/
|
|
13
|
-
isItemEditable: (
|
|
12
|
+
isItemEditable: (state, itemId) => {
|
|
13
|
+
const isItemEditable = state.isItemEditable;
|
|
14
|
+
const itemModel = _selectors.itemsSelectors.itemModel(state, itemId);
|
|
14
15
|
if (!itemModel || isItemEditable == null) {
|
|
15
16
|
return false;
|
|
16
17
|
}
|
|
@@ -18,13 +19,13 @@ const labelSelectors = exports.labelSelectors = {
|
|
|
18
19
|
return isItemEditable;
|
|
19
20
|
}
|
|
20
21
|
return isItemEditable(itemModel);
|
|
21
|
-
}
|
|
22
|
+
},
|
|
22
23
|
/**
|
|
23
24
|
* Checks whether an item is being edited.
|
|
24
25
|
*/
|
|
25
|
-
isItemBeingEdited: (
|
|
26
|
+
isItemBeingEdited: (state, itemId) => itemId == null ? false : state.editedItemId === itemId,
|
|
26
27
|
/**
|
|
27
28
|
* Checks whether any item is being edited.
|
|
28
29
|
*/
|
|
29
|
-
isAnyItemBeingEdited:
|
|
30
|
+
isAnyItemBeingEdited: state => !!state.editedItemId
|
|
30
31
|
};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { createSelector } from '@mui/x-internals/store';
|
|
2
1
|
import { itemsSelectors } from "../items/selectors.mjs";
|
|
3
2
|
export const labelSelectors = {
|
|
4
3
|
/**
|
|
5
4
|
* Checks whether an item is editable.
|
|
6
5
|
*/
|
|
7
|
-
isItemEditable:
|
|
6
|
+
isItemEditable: (state, itemId) => {
|
|
7
|
+
const isItemEditable = state.isItemEditable;
|
|
8
|
+
const itemModel = itemsSelectors.itemModel(state, itemId);
|
|
8
9
|
if (!itemModel || isItemEditable == null) {
|
|
9
10
|
return false;
|
|
10
11
|
}
|
|
@@ -12,13 +13,13 @@ export const labelSelectors = {
|
|
|
12
13
|
return isItemEditable;
|
|
13
14
|
}
|
|
14
15
|
return isItemEditable(itemModel);
|
|
15
|
-
}
|
|
16
|
+
},
|
|
16
17
|
/**
|
|
17
18
|
* Checks whether an item is being edited.
|
|
18
19
|
*/
|
|
19
|
-
isItemBeingEdited:
|
|
20
|
+
isItemBeingEdited: (state, itemId) => itemId == null ? false : state.editedItemId === itemId,
|
|
20
21
|
/**
|
|
21
22
|
* Checks whether any item is being edited.
|
|
22
23
|
*/
|
|
23
|
-
isAnyItemBeingEdited:
|
|
24
|
+
isAnyItemBeingEdited: state => !!state.editedItemId
|
|
24
25
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TreeViewItemId } from "../../../models/index.mjs";
|
|
1
2
|
import type { RichTreeViewState } from "../../RichTreeViewStore/index.mjs";
|
|
2
3
|
export declare const lazyLoadingSelectors: {
|
|
3
4
|
/**
|
|
@@ -7,13 +8,18 @@ export declare const lazyLoadingSelectors: {
|
|
|
7
8
|
/**
|
|
8
9
|
* Checks whether an item is loading.
|
|
9
10
|
*/
|
|
10
|
-
isItemLoading: (state: RichTreeViewState<any, any>, itemId:
|
|
11
|
+
isItemLoading: (state: RichTreeViewState<any, any>, itemId: TreeViewItemId | null) => boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Gets the expected children count of an item currently loading its children.
|
|
14
|
+
* Returns `-1` when the count is unknown or the item is not loading.
|
|
15
|
+
*/
|
|
16
|
+
itemLoadingChildrenCount: (state: RichTreeViewState<any, any>, itemId: TreeViewItemId | null) => number;
|
|
11
17
|
/**
|
|
12
18
|
* Checks whether an item has errors.
|
|
13
19
|
*/
|
|
14
|
-
itemHasError: (state: RichTreeViewState<any, any>, itemId:
|
|
20
|
+
itemHasError: (state: RichTreeViewState<any, any>, itemId: TreeViewItemId | null) => boolean;
|
|
15
21
|
/**
|
|
16
22
|
* Get an item error.
|
|
17
23
|
*/
|
|
18
|
-
itemError: (state: RichTreeViewState<any, any>, itemId:
|
|
24
|
+
itemError: (state: RichTreeViewState<any, any>, itemId: TreeViewItemId | null) => Error | null | undefined;
|
|
19
25
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TreeViewItemId } from "../../../models/index.js";
|
|
1
2
|
import type { RichTreeViewState } from "../../RichTreeViewStore/index.js";
|
|
2
3
|
export declare const lazyLoadingSelectors: {
|
|
3
4
|
/**
|
|
@@ -7,13 +8,18 @@ export declare const lazyLoadingSelectors: {
|
|
|
7
8
|
/**
|
|
8
9
|
* Checks whether an item is loading.
|
|
9
10
|
*/
|
|
10
|
-
isItemLoading: (state: RichTreeViewState<any, any>, itemId:
|
|
11
|
+
isItemLoading: (state: RichTreeViewState<any, any>, itemId: TreeViewItemId | null) => boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Gets the expected children count of an item currently loading its children.
|
|
14
|
+
* Returns `-1` when the count is unknown or the item is not loading.
|
|
15
|
+
*/
|
|
16
|
+
itemLoadingChildrenCount: (state: RichTreeViewState<any, any>, itemId: TreeViewItemId | null) => number;
|
|
11
17
|
/**
|
|
12
18
|
* Checks whether an item has errors.
|
|
13
19
|
*/
|
|
14
|
-
itemHasError: (state: RichTreeViewState<any, any>, itemId:
|
|
20
|
+
itemHasError: (state: RichTreeViewState<any, any>, itemId: TreeViewItemId | null) => boolean;
|
|
15
21
|
/**
|
|
16
22
|
* Get an item error.
|
|
17
23
|
*/
|
|
18
|
-
itemError: (state: RichTreeViewState<any, any>, itemId:
|
|
24
|
+
itemError: (state: RichTreeViewState<any, any>, itemId: TreeViewItemId | null) => Error | null | undefined;
|
|
19
25
|
};
|
|
@@ -4,28 +4,32 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.lazyLoadingSelectors = void 0;
|
|
7
|
-
var _store = require("@mui/x-internals/store");
|
|
8
7
|
var _items = require("../items");
|
|
9
8
|
const lazyLoadingSelectors = exports.lazyLoadingSelectors = {
|
|
10
9
|
/**
|
|
11
10
|
* Checks if the lazy loaded state is empty.
|
|
12
11
|
*/
|
|
13
|
-
isEmpty:
|
|
12
|
+
isEmpty: state => {
|
|
14
13
|
if (state.lazyLoadedItems == null) {
|
|
15
14
|
return true;
|
|
16
15
|
}
|
|
17
16
|
return Object.keys(state.lazyLoadedItems.loading).length === 0 && Object.keys(state.lazyLoadedItems.errors).length === 0;
|
|
18
|
-
}
|
|
17
|
+
},
|
|
19
18
|
/**
|
|
20
19
|
* Checks whether an item is loading.
|
|
21
20
|
*/
|
|
22
|
-
isItemLoading: (
|
|
21
|
+
isItemLoading: (state, itemId) => state.lazyLoadedItems?.loading[itemId ?? _items.TREE_VIEW_ROOT_PARENT_ID] != null,
|
|
22
|
+
/**
|
|
23
|
+
* Gets the expected children count of an item currently loading its children.
|
|
24
|
+
* Returns `-1` when the count is unknown or the item is not loading.
|
|
25
|
+
*/
|
|
26
|
+
itemLoadingChildrenCount: (state, itemId) => state.lazyLoadedItems?.loading[itemId ?? _items.TREE_VIEW_ROOT_PARENT_ID] ?? -1,
|
|
23
27
|
/**
|
|
24
28
|
* Checks whether an item has errors.
|
|
25
29
|
*/
|
|
26
|
-
itemHasError: (
|
|
30
|
+
itemHasError: (state, itemId) => !!state.lazyLoadedItems?.errors[itemId ?? _items.TREE_VIEW_ROOT_PARENT_ID],
|
|
27
31
|
/**
|
|
28
32
|
* Get an item error.
|
|
29
33
|
*/
|
|
30
|
-
itemError: (
|
|
34
|
+
itemError: (state, itemId) => state.lazyLoadedItems?.errors[itemId ?? _items.TREE_VIEW_ROOT_PARENT_ID]
|
|
31
35
|
};
|
|
@@ -1,25 +1,29 @@
|
|
|
1
|
-
import { createSelector } from '@mui/x-internals/store';
|
|
2
1
|
import { TREE_VIEW_ROOT_PARENT_ID } from "../items/index.mjs";
|
|
3
2
|
export const lazyLoadingSelectors = {
|
|
4
3
|
/**
|
|
5
4
|
* Checks if the lazy loaded state is empty.
|
|
6
5
|
*/
|
|
7
|
-
isEmpty:
|
|
6
|
+
isEmpty: state => {
|
|
8
7
|
if (state.lazyLoadedItems == null) {
|
|
9
8
|
return true;
|
|
10
9
|
}
|
|
11
10
|
return Object.keys(state.lazyLoadedItems.loading).length === 0 && Object.keys(state.lazyLoadedItems.errors).length === 0;
|
|
12
|
-
}
|
|
11
|
+
},
|
|
13
12
|
/**
|
|
14
13
|
* Checks whether an item is loading.
|
|
15
14
|
*/
|
|
16
|
-
isItemLoading:
|
|
15
|
+
isItemLoading: (state, itemId) => state.lazyLoadedItems?.loading[itemId ?? TREE_VIEW_ROOT_PARENT_ID] != null,
|
|
16
|
+
/**
|
|
17
|
+
* Gets the expected children count of an item currently loading its children.
|
|
18
|
+
* Returns `-1` when the count is unknown or the item is not loading.
|
|
19
|
+
*/
|
|
20
|
+
itemLoadingChildrenCount: (state, itemId) => state.lazyLoadedItems?.loading[itemId ?? TREE_VIEW_ROOT_PARENT_ID] ?? -1,
|
|
17
21
|
/**
|
|
18
22
|
* Checks whether an item has errors.
|
|
19
23
|
*/
|
|
20
|
-
itemHasError:
|
|
24
|
+
itemHasError: (state, itemId) => !!state.lazyLoadedItems?.errors[itemId ?? TREE_VIEW_ROOT_PARENT_ID],
|
|
21
25
|
/**
|
|
22
26
|
* Get an item error.
|
|
23
27
|
*/
|
|
24
|
-
itemError:
|
|
28
|
+
itemError: (state, itemId) => state.lazyLoadedItems?.errors[itemId ?? TREE_VIEW_ROOT_PARENT_ID]
|
|
25
29
|
};
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { TreeViewItemId } from "../../../models/index.mjs";
|
|
2
2
|
export interface RichTreeViewLazyLoadedItemsStatus {
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* For each item currently loading its children, the expected children count.
|
|
5
|
+
* `-1` when the count is unknown.
|
|
6
|
+
*/
|
|
7
|
+
loading: Record<TreeViewItemId, number>;
|
|
4
8
|
errors: Record<TreeViewItemId, Error | null>;
|
|
5
9
|
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { TreeViewItemId } from "../../../models/index.js";
|
|
2
2
|
export interface RichTreeViewLazyLoadedItemsStatus {
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* For each item currently loading its children, the expected children count.
|
|
5
|
+
* `-1` when the count is unknown.
|
|
6
|
+
*/
|
|
7
|
+
loading: Record<TreeViewItemId, number>;
|
|
4
8
|
errors: Record<TreeViewItemId, Error | null>;
|
|
5
9
|
}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import type { TreeViewItemSelectionStatus } from "../../../models/index.mjs";
|
|
1
|
+
import type { TreeViewItemId, TreeViewItemSelectionStatus } from "../../../models/index.mjs";
|
|
2
2
|
import type { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.mjs";
|
|
3
|
+
declare const isItemSelectableSelector: (state: MinimalTreeViewState<any, any>, itemId: TreeViewItemId) => boolean;
|
|
4
|
+
declare const isItemSelectedSelector: (state: MinimalTreeViewState<any, any>, itemId: TreeViewItemId) => boolean;
|
|
5
|
+
declare const canItemBeSelectedSelector: (state: MinimalTreeViewState<any, any>, itemId: TreeViewItemId) => boolean;
|
|
6
|
+
declare const propagationRulesSelector: (state: MinimalTreeViewState<any, any>) => import("../../../index.mjs").TreeViewSelectionPropagation;
|
|
7
|
+
declare const itemSelectionStatusSelector: (state: MinimalTreeViewState<any, any>, itemId: TreeViewItemId) => TreeViewItemSelectionStatus;
|
|
3
8
|
export declare const selectionSelectors: {
|
|
4
9
|
/**
|
|
5
10
|
* Gets the selected items as provided to the component.
|
|
@@ -28,32 +33,33 @@ export declare const selectionSelectors: {
|
|
|
28
33
|
/**
|
|
29
34
|
* Gets the selection propagation rules.
|
|
30
35
|
*/
|
|
31
|
-
propagationRules:
|
|
36
|
+
propagationRules: typeof propagationRulesSelector;
|
|
32
37
|
/**
|
|
33
38
|
* Checks whether an item is selected.
|
|
34
39
|
*/
|
|
35
|
-
isItemSelected:
|
|
40
|
+
isItemSelected: typeof isItemSelectedSelector;
|
|
36
41
|
/**
|
|
37
42
|
* Gets the selection status of an item.
|
|
38
43
|
* An item that is not selected is `indeterminate` when some of its selectable descendants are selected.
|
|
39
44
|
* When `selectionPropagation.parents` is enabled, an item whose selectable descendants are all selected is `selected`.
|
|
40
45
|
*/
|
|
41
|
-
itemSelectionStatus:
|
|
46
|
+
itemSelectionStatus: typeof itemSelectionStatusSelector;
|
|
42
47
|
/**
|
|
43
48
|
* Checks whether an item is indeterminate (it is not selected but some of its selectable descendants are).
|
|
44
49
|
*/
|
|
45
|
-
isItemIndeterminate: (
|
|
50
|
+
isItemIndeterminate: (state: MinimalTreeViewState<any, any>, itemId: TreeViewItemId) => boolean;
|
|
46
51
|
/**
|
|
47
52
|
* Checks whether the selection feature is enabled for an item.
|
|
48
53
|
* Returns `true` when selection is enabled on the Tree View and the item is selectable (even if the item is disabled).
|
|
49
54
|
*/
|
|
50
|
-
isFeatureEnabledForItem: (
|
|
55
|
+
isFeatureEnabledForItem: (state: MinimalTreeViewState<any, any>, itemId: TreeViewItemId) => boolean;
|
|
51
56
|
/**
|
|
52
57
|
* Checks whether an item can be selected (if selection is enabled, if the item is not disabled, and if the item is selectable).
|
|
53
58
|
*/
|
|
54
|
-
canItemBeSelected:
|
|
59
|
+
canItemBeSelected: typeof canItemBeSelectedSelector;
|
|
55
60
|
/**
|
|
56
61
|
* Checks whether an item is selectable based on the `isItemSelectionDisabled` prop.
|
|
57
62
|
*/
|
|
58
|
-
isItemSelectable:
|
|
59
|
-
};
|
|
63
|
+
isItemSelectable: typeof isItemSelectableSelector;
|
|
64
|
+
};
|
|
65
|
+
export {};
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import type { TreeViewItemSelectionStatus } from "../../../models/index.js";
|
|
1
|
+
import type { TreeViewItemId, TreeViewItemSelectionStatus } from "../../../models/index.js";
|
|
2
2
|
import type { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.js";
|
|
3
|
+
declare const isItemSelectableSelector: (state: MinimalTreeViewState<any, any>, itemId: TreeViewItemId) => boolean;
|
|
4
|
+
declare const isItemSelectedSelector: (state: MinimalTreeViewState<any, any>, itemId: TreeViewItemId) => boolean;
|
|
5
|
+
declare const canItemBeSelectedSelector: (state: MinimalTreeViewState<any, any>, itemId: TreeViewItemId) => boolean;
|
|
6
|
+
declare const propagationRulesSelector: (state: MinimalTreeViewState<any, any>) => import("../../../index.js").TreeViewSelectionPropagation;
|
|
7
|
+
declare const itemSelectionStatusSelector: (state: MinimalTreeViewState<any, any>, itemId: TreeViewItemId) => TreeViewItemSelectionStatus;
|
|
3
8
|
export declare const selectionSelectors: {
|
|
4
9
|
/**
|
|
5
10
|
* Gets the selected items as provided to the component.
|
|
@@ -28,32 +33,33 @@ export declare const selectionSelectors: {
|
|
|
28
33
|
/**
|
|
29
34
|
* Gets the selection propagation rules.
|
|
30
35
|
*/
|
|
31
|
-
propagationRules:
|
|
36
|
+
propagationRules: typeof propagationRulesSelector;
|
|
32
37
|
/**
|
|
33
38
|
* Checks whether an item is selected.
|
|
34
39
|
*/
|
|
35
|
-
isItemSelected:
|
|
40
|
+
isItemSelected: typeof isItemSelectedSelector;
|
|
36
41
|
/**
|
|
37
42
|
* Gets the selection status of an item.
|
|
38
43
|
* An item that is not selected is `indeterminate` when some of its selectable descendants are selected.
|
|
39
44
|
* When `selectionPropagation.parents` is enabled, an item whose selectable descendants are all selected is `selected`.
|
|
40
45
|
*/
|
|
41
|
-
itemSelectionStatus:
|
|
46
|
+
itemSelectionStatus: typeof itemSelectionStatusSelector;
|
|
42
47
|
/**
|
|
43
48
|
* Checks whether an item is indeterminate (it is not selected but some of its selectable descendants are).
|
|
44
49
|
*/
|
|
45
|
-
isItemIndeterminate: (
|
|
50
|
+
isItemIndeterminate: (state: MinimalTreeViewState<any, any>, itemId: TreeViewItemId) => boolean;
|
|
46
51
|
/**
|
|
47
52
|
* Checks whether the selection feature is enabled for an item.
|
|
48
53
|
* Returns `true` when selection is enabled on the Tree View and the item is selectable (even if the item is disabled).
|
|
49
54
|
*/
|
|
50
|
-
isFeatureEnabledForItem: (
|
|
55
|
+
isFeatureEnabledForItem: (state: MinimalTreeViewState<any, any>, itemId: TreeViewItemId) => boolean;
|
|
51
56
|
/**
|
|
52
57
|
* Checks whether an item can be selected (if selection is enabled, if the item is not disabled, and if the item is selectable).
|
|
53
58
|
*/
|
|
54
|
-
canItemBeSelected:
|
|
59
|
+
canItemBeSelected: typeof canItemBeSelectedSelector;
|
|
55
60
|
/**
|
|
56
61
|
* Checks whether an item is selectable based on the `isItemSelectionDisabled` prop.
|
|
57
62
|
*/
|
|
58
|
-
isItemSelectable:
|
|
59
|
-
};
|
|
63
|
+
isItemSelectable: typeof isItemSelectableSelector;
|
|
64
|
+
};
|
|
65
|
+
export {};
|
|
@@ -22,11 +22,11 @@ const selectedItemsMapSelector = (0, _store.createSelectorMemoized)(selectedItem
|
|
|
22
22
|
});
|
|
23
23
|
return selectedItemsMap;
|
|
24
24
|
});
|
|
25
|
-
const isItemSelectableSelector = (
|
|
26
|
-
const isItemSelectedSelector = (
|
|
27
|
-
const canItemBeSelectedSelector = (
|
|
28
|
-
const propagationRulesSelector =
|
|
29
|
-
const itemSelectionStatusSelector = (
|
|
25
|
+
const isItemSelectableSelector = (state, itemId) => state.itemMetaLookup[itemId]?.selectable ?? true;
|
|
26
|
+
const isItemSelectedSelector = (state, itemId) => selectedItemsMapSelector(state).has(itemId);
|
|
27
|
+
const canItemBeSelectedSelector = (state, itemId) => !state.disableSelection && !_selectors.itemsSelectors.isItemDisabled(state, itemId) && isItemSelectableSelector(state, itemId);
|
|
28
|
+
const propagationRulesSelector = state => state.selectionPropagation;
|
|
29
|
+
const itemSelectionStatusSelector = (state, itemId) => {
|
|
30
30
|
if (isItemSelectedSelector(state, itemId)) {
|
|
31
31
|
return 'selected';
|
|
32
32
|
}
|
|
@@ -65,12 +65,12 @@ const itemSelectionStatusSelector = (0, _store.createSelector)((state, itemId) =
|
|
|
65
65
|
return 'indeterminate';
|
|
66
66
|
}
|
|
67
67
|
return 'unselected';
|
|
68
|
-
}
|
|
68
|
+
};
|
|
69
69
|
const selectionSelectors = exports.selectionSelectors = {
|
|
70
70
|
/**
|
|
71
71
|
* Gets the selected items as provided to the component.
|
|
72
72
|
*/
|
|
73
|
-
selectedItemsRaw:
|
|
73
|
+
selectedItemsRaw: state => state.selectedItems,
|
|
74
74
|
/**
|
|
75
75
|
* Gets the selected items as an array.
|
|
76
76
|
*/
|
|
@@ -82,15 +82,15 @@ const selectionSelectors = exports.selectionSelectors = {
|
|
|
82
82
|
/**
|
|
83
83
|
* Checks whether selection is enabled.
|
|
84
84
|
*/
|
|
85
|
-
enabled:
|
|
85
|
+
enabled: state => !state.disableSelection,
|
|
86
86
|
/**
|
|
87
87
|
* Checks whether multi selection is enabled.
|
|
88
88
|
*/
|
|
89
|
-
isMultiSelectEnabled:
|
|
89
|
+
isMultiSelectEnabled: state => state.multiSelect,
|
|
90
90
|
/**
|
|
91
91
|
* Checks whether checkbox selection is enabled.
|
|
92
92
|
*/
|
|
93
|
-
isCheckboxSelectionEnabled:
|
|
93
|
+
isCheckboxSelectionEnabled: state => state.checkboxSelection,
|
|
94
94
|
/**
|
|
95
95
|
* Gets the selection propagation rules.
|
|
96
96
|
*/
|
|
@@ -108,12 +108,12 @@ const selectionSelectors = exports.selectionSelectors = {
|
|
|
108
108
|
/**
|
|
109
109
|
* Checks whether an item is indeterminate (it is not selected but some of its selectable descendants are).
|
|
110
110
|
*/
|
|
111
|
-
isItemIndeterminate: (
|
|
111
|
+
isItemIndeterminate: (state, itemId) => itemSelectionStatusSelector(state, itemId) === 'indeterminate',
|
|
112
112
|
/**
|
|
113
113
|
* Checks whether the selection feature is enabled for an item.
|
|
114
114
|
* Returns `true` when selection is enabled on the Tree View and the item is selectable (even if the item is disabled).
|
|
115
115
|
*/
|
|
116
|
-
isFeatureEnabledForItem: (
|
|
116
|
+
isFeatureEnabledForItem: (state, itemId) => !state.disableSelection && isItemSelectableSelector(state, itemId),
|
|
117
117
|
/**
|
|
118
118
|
* Checks whether an item can be selected (if selection is enabled, if the item is not disabled, and if the item is selectable).
|
|
119
119
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createSelectorMemoized } from '@mui/x-internals/store';
|
|
2
2
|
import { itemsSelectors } from "../items/selectors.mjs";
|
|
3
3
|
const selectedItemsSelector = createSelectorMemoized(state => state.selectedItems, selectedItemsRaw => {
|
|
4
4
|
if (Array.isArray(selectedItemsRaw)) {
|
|
@@ -16,11 +16,11 @@ const selectedItemsMapSelector = createSelectorMemoized(selectedItemsSelector, s
|
|
|
16
16
|
});
|
|
17
17
|
return selectedItemsMap;
|
|
18
18
|
});
|
|
19
|
-
const isItemSelectableSelector =
|
|
20
|
-
const isItemSelectedSelector =
|
|
21
|
-
const canItemBeSelectedSelector =
|
|
22
|
-
const propagationRulesSelector =
|
|
23
|
-
const itemSelectionStatusSelector =
|
|
19
|
+
const isItemSelectableSelector = (state, itemId) => state.itemMetaLookup[itemId]?.selectable ?? true;
|
|
20
|
+
const isItemSelectedSelector = (state, itemId) => selectedItemsMapSelector(state).has(itemId);
|
|
21
|
+
const canItemBeSelectedSelector = (state, itemId) => !state.disableSelection && !itemsSelectors.isItemDisabled(state, itemId) && isItemSelectableSelector(state, itemId);
|
|
22
|
+
const propagationRulesSelector = state => state.selectionPropagation;
|
|
23
|
+
const itemSelectionStatusSelector = (state, itemId) => {
|
|
24
24
|
if (isItemSelectedSelector(state, itemId)) {
|
|
25
25
|
return 'selected';
|
|
26
26
|
}
|
|
@@ -59,12 +59,12 @@ const itemSelectionStatusSelector = createSelector((state, itemId) => {
|
|
|
59
59
|
return 'indeterminate';
|
|
60
60
|
}
|
|
61
61
|
return 'unselected';
|
|
62
|
-
}
|
|
62
|
+
};
|
|
63
63
|
export const selectionSelectors = {
|
|
64
64
|
/**
|
|
65
65
|
* Gets the selected items as provided to the component.
|
|
66
66
|
*/
|
|
67
|
-
selectedItemsRaw:
|
|
67
|
+
selectedItemsRaw: state => state.selectedItems,
|
|
68
68
|
/**
|
|
69
69
|
* Gets the selected items as an array.
|
|
70
70
|
*/
|
|
@@ -76,15 +76,15 @@ export const selectionSelectors = {
|
|
|
76
76
|
/**
|
|
77
77
|
* Checks whether selection is enabled.
|
|
78
78
|
*/
|
|
79
|
-
enabled:
|
|
79
|
+
enabled: state => !state.disableSelection,
|
|
80
80
|
/**
|
|
81
81
|
* Checks whether multi selection is enabled.
|
|
82
82
|
*/
|
|
83
|
-
isMultiSelectEnabled:
|
|
83
|
+
isMultiSelectEnabled: state => state.multiSelect,
|
|
84
84
|
/**
|
|
85
85
|
* Checks whether checkbox selection is enabled.
|
|
86
86
|
*/
|
|
87
|
-
isCheckboxSelectionEnabled:
|
|
87
|
+
isCheckboxSelectionEnabled: state => state.checkboxSelection,
|
|
88
88
|
/**
|
|
89
89
|
* Gets the selection propagation rules.
|
|
90
90
|
*/
|
|
@@ -102,12 +102,12 @@ export const selectionSelectors = {
|
|
|
102
102
|
/**
|
|
103
103
|
* Checks whether an item is indeterminate (it is not selected but some of its selectable descendants are).
|
|
104
104
|
*/
|
|
105
|
-
isItemIndeterminate:
|
|
105
|
+
isItemIndeterminate: (state, itemId) => itemSelectionStatusSelector(state, itemId) === 'indeterminate',
|
|
106
106
|
/**
|
|
107
107
|
* Checks whether the selection feature is enabled for an item.
|
|
108
108
|
* Returns `true` when selection is enabled on the Tree View and the item is selectable (even if the item is disabled).
|
|
109
109
|
*/
|
|
110
|
-
isFeatureEnabledForItem:
|
|
110
|
+
isFeatureEnabledForItem: (state, itemId) => !state.disableSelection && isItemSelectableSelector(state, itemId),
|
|
111
111
|
/**
|
|
112
112
|
* Checks whether an item can be selected (if selection is enabled, if the item is not disabled, and if the item is selectable).
|
|
113
113
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-tree-view",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.13.0",
|
|
4
4
|
"author": "MUI Team",
|
|
5
5
|
"description": "The community edition of the MUI X Tree View components.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -32,13 +32,11 @@
|
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@babel/runtime": "^7.29.7",
|
|
35
|
-
"@base-ui/utils": "^0.3.
|
|
36
|
-
"@mui/utils": "^9.
|
|
37
|
-
"@
|
|
35
|
+
"@base-ui/utils": "^0.3.2",
|
|
36
|
+
"@mui/utils": "^9.4.0",
|
|
37
|
+
"@mui/x-internals": "^9.13.0",
|
|
38
38
|
"clsx": "^2.1.1",
|
|
39
|
-
"prop-types": "^15.8.1"
|
|
40
|
-
"react-transition-group": "^4.4.5",
|
|
41
|
-
"@mui/x-internals": "^9.11.0"
|
|
39
|
+
"prop-types": "^15.8.1"
|
|
42
40
|
},
|
|
43
41
|
"peerDependencies": {
|
|
44
42
|
"@emotion/react": "^11.9.0",
|
|
@@ -160,6 +158,20 @@
|
|
|
160
158
|
"default": "./TreeItemLabelInput/index.mjs"
|
|
161
159
|
}
|
|
162
160
|
},
|
|
161
|
+
"./TreeItemLoader": {
|
|
162
|
+
"import": {
|
|
163
|
+
"types": "./TreeItemLoader/index.d.mts",
|
|
164
|
+
"default": "./TreeItemLoader/index.mjs"
|
|
165
|
+
},
|
|
166
|
+
"require": {
|
|
167
|
+
"types": "./TreeItemLoader/index.d.ts",
|
|
168
|
+
"default": "./TreeItemLoader/index.js"
|
|
169
|
+
},
|
|
170
|
+
"default": {
|
|
171
|
+
"types": "./TreeItemLoader/index.d.mts",
|
|
172
|
+
"default": "./TreeItemLoader/index.mjs"
|
|
173
|
+
}
|
|
174
|
+
},
|
|
163
175
|
"./TreeItemProvider": {
|
|
164
176
|
"import": {
|
|
165
177
|
"types": "./TreeItemProvider/index.d.mts",
|