@mui/x-tree-view 9.9.0 → 9.10.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 +217 -0
- package/RichTreeView/useExtractRichTreeViewParameters.d.mts +109 -109
- package/RichTreeView/useExtractRichTreeViewParameters.d.ts +109 -109
- package/SimpleTreeView/useExtractSimpleTreeViewParameters.d.mts +110 -110
- package/SimpleTreeView/useExtractSimpleTreeViewParameters.d.ts +110 -110
- package/TreeItem/TreeItem.d.mts +1 -1
- package/TreeItem/TreeItem.d.ts +1 -1
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.d.mts +18 -18
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.d.ts +18 -18
- package/internals/RichTreeViewStore/RichTreeViewStore.d.mts +17 -17
- package/internals/RichTreeViewStore/RichTreeViewStore.d.ts +17 -17
- package/internals/hooks/useTreeViewRootProps.d.mts +110 -110
- package/internals/hooks/useTreeViewRootProps.d.ts +110 -110
- package/internals/plugins/expansion/utils.d.mts +1 -1
- package/internals/plugins/expansion/utils.d.ts +1 -1
- package/internals/plugins/items/TreeViewItemsPlugin.d.mts +1 -1
- package/internals/plugins/items/TreeViewItemsPlugin.d.ts +1 -1
- package/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.d.mts +1 -1
- package/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.d.ts +1 -1
- package/internals/plugins/selection/TreeViewSelectionPlugin.js +16 -7
- package/internals/plugins/selection/TreeViewSelectionPlugin.mjs +16 -7
- package/internals/plugins/selection/itemPlugin.js +17 -6
- package/internals/plugins/selection/itemPlugin.mjs +17 -6
- package/package.json +3 -3
|
@@ -16,10 +16,12 @@ const selectorCheckboxSelectionStatus = (0, _store.createSelector)((state, itemI
|
|
|
16
16
|
let hasUnSelectedDescendant = false;
|
|
17
17
|
const traverseDescendants = itemToTraverseId => {
|
|
18
18
|
if (itemToTraverseId !== itemId) {
|
|
19
|
-
if (_selectors2.selectionSelectors.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
if (_selectors2.selectionSelectors.canItemBeSelected(state, itemToTraverseId)) {
|
|
20
|
+
if (_selectors2.selectionSelectors.isItemSelected(state, itemToTraverseId)) {
|
|
21
|
+
hasSelectedDescendant = true;
|
|
22
|
+
} else {
|
|
23
|
+
hasUnSelectedDescendant = true;
|
|
24
|
+
}
|
|
23
25
|
}
|
|
24
26
|
}
|
|
25
27
|
_selectors.itemsSelectors.itemOrderedChildrenIds(state, itemToTraverseId).forEach(traverseDescendants);
|
|
@@ -52,19 +54,28 @@ const useSelectionItemPlugin = ({
|
|
|
52
54
|
const isCheckboxSelectionEnabled = (0, _store.useStore)(store, _selectors2.selectionSelectors.isCheckboxSelectionEnabled);
|
|
53
55
|
const isFeatureEnabledForItem = (0, _store.useStore)(store, _selectors2.selectionSelectors.isFeatureEnabledForItem, itemId);
|
|
54
56
|
const canItemBeSelected = (0, _store.useStore)(store, _selectors2.selectionSelectors.canItemBeSelected, itemId);
|
|
57
|
+
const isItemDisabled = (0, _store.useStore)(store, _selectors.itemsSelectors.isItemDisabled, itemId);
|
|
58
|
+
const isItemSelectable = (0, _store.useStore)(store, _selectors2.selectionSelectors.isItemSelectable, itemId);
|
|
55
59
|
const selectionStatus = (0, _store.useStore)(store, selectorCheckboxSelectionStatus, itemId);
|
|
60
|
+
|
|
61
|
+
// An item is "inherently not selectable" when disabled or excluded via isItemSelectionDisabled,
|
|
62
|
+
// regardless of the global disableSelection flag. Such items must not have aria-checked.
|
|
63
|
+
const isItemInherentlyNotSelectable = isItemDisabled || !isItemSelectable;
|
|
56
64
|
return {
|
|
57
65
|
propsEnhancers: {
|
|
58
66
|
root: () => {
|
|
59
67
|
// https://www.w3.org/WAI/ARIA/apg/patterns/treeview/
|
|
60
68
|
let ariaChecked;
|
|
61
|
-
if (
|
|
69
|
+
if (isItemInherentlyNotSelectable) {
|
|
70
|
+
// - if the tree contains nodes that are not selectable, aria-checked is not present on those nodes.
|
|
71
|
+
ariaChecked = undefined;
|
|
72
|
+
} else if (selectionStatus === 'checked') {
|
|
62
73
|
// - each selected node has aria-checked set to true.
|
|
63
74
|
ariaChecked = true;
|
|
64
75
|
} else if (selectionStatus === 'indeterminate') {
|
|
65
76
|
ariaChecked = 'mixed';
|
|
66
77
|
} else if (!canItemBeSelected) {
|
|
67
|
-
//
|
|
78
|
+
// disableSelection=true with an unselected item: aria-checked is not present.
|
|
68
79
|
ariaChecked = undefined;
|
|
69
80
|
} else {
|
|
70
81
|
// - all nodes that are selectable but not selected have aria-checked set to false.
|
|
@@ -10,10 +10,12 @@ const selectorCheckboxSelectionStatus = createSelector((state, itemId) => {
|
|
|
10
10
|
let hasUnSelectedDescendant = false;
|
|
11
11
|
const traverseDescendants = itemToTraverseId => {
|
|
12
12
|
if (itemToTraverseId !== itemId) {
|
|
13
|
-
if (selectionSelectors.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
if (selectionSelectors.canItemBeSelected(state, itemToTraverseId)) {
|
|
14
|
+
if (selectionSelectors.isItemSelected(state, itemToTraverseId)) {
|
|
15
|
+
hasSelectedDescendant = true;
|
|
16
|
+
} else {
|
|
17
|
+
hasUnSelectedDescendant = true;
|
|
18
|
+
}
|
|
17
19
|
}
|
|
18
20
|
}
|
|
19
21
|
itemsSelectors.itemOrderedChildrenIds(state, itemToTraverseId).forEach(traverseDescendants);
|
|
@@ -46,19 +48,28 @@ export const useSelectionItemPlugin = ({
|
|
|
46
48
|
const isCheckboxSelectionEnabled = useStore(store, selectionSelectors.isCheckboxSelectionEnabled);
|
|
47
49
|
const isFeatureEnabledForItem = useStore(store, selectionSelectors.isFeatureEnabledForItem, itemId);
|
|
48
50
|
const canItemBeSelected = useStore(store, selectionSelectors.canItemBeSelected, itemId);
|
|
51
|
+
const isItemDisabled = useStore(store, itemsSelectors.isItemDisabled, itemId);
|
|
52
|
+
const isItemSelectable = useStore(store, selectionSelectors.isItemSelectable, itemId);
|
|
49
53
|
const selectionStatus = useStore(store, selectorCheckboxSelectionStatus, itemId);
|
|
54
|
+
|
|
55
|
+
// An item is "inherently not selectable" when disabled or excluded via isItemSelectionDisabled,
|
|
56
|
+
// regardless of the global disableSelection flag. Such items must not have aria-checked.
|
|
57
|
+
const isItemInherentlyNotSelectable = isItemDisabled || !isItemSelectable;
|
|
50
58
|
return {
|
|
51
59
|
propsEnhancers: {
|
|
52
60
|
root: () => {
|
|
53
61
|
// https://www.w3.org/WAI/ARIA/apg/patterns/treeview/
|
|
54
62
|
let ariaChecked;
|
|
55
|
-
if (
|
|
63
|
+
if (isItemInherentlyNotSelectable) {
|
|
64
|
+
// - if the tree contains nodes that are not selectable, aria-checked is not present on those nodes.
|
|
65
|
+
ariaChecked = undefined;
|
|
66
|
+
} else if (selectionStatus === 'checked') {
|
|
56
67
|
// - each selected node has aria-checked set to true.
|
|
57
68
|
ariaChecked = true;
|
|
58
69
|
} else if (selectionStatus === 'indeterminate') {
|
|
59
70
|
ariaChecked = 'mixed';
|
|
60
71
|
} else if (!canItemBeSelected) {
|
|
61
|
-
//
|
|
72
|
+
// disableSelection=true with an unselected item: aria-checked is not present.
|
|
62
73
|
ariaChecked = undefined;
|
|
63
74
|
} else {
|
|
64
75
|
// - all nodes that are selectable but not selected have aria-checked set to false.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-tree-view",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.10.1",
|
|
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,13 @@
|
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@babel/runtime": "^7.29.7",
|
|
35
|
-
"@base-ui/utils": "^0.3.
|
|
35
|
+
"@base-ui/utils": "^0.3.1",
|
|
36
36
|
"@mui/utils": "^9.2.0",
|
|
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
|
-
"@mui/x-internals": "^9.
|
|
41
|
+
"@mui/x-internals": "^9.10.1"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"@emotion/react": "^11.9.0",
|