@mui/x-tree-view 8.0.0-alpha.1 → 8.0.0-alpha.10
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 +1903 -231
- package/README.md +1 -1
- package/RichTreeView/RichTreeView.types.d.ts +3 -3
- package/SimpleTreeView/SimpleTreeView.types.d.ts +3 -3
- package/TreeItem/TreeItem.d.ts +1 -1
- package/TreeItem/TreeItem.types.d.ts +1 -1
- package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +1 -1
- package/TreeItemIcon/TreeItemIcon.types.d.ts +1 -1
- package/TreeItemProvider/TreeItemProvider.d.ts +2 -4
- package/TreeItemProvider/TreeItemProvider.js +13 -11
- package/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +4 -4
- package/hooks/useTreeViewApiRef.d.ts +2 -1
- package/index.js +1 -1
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +1 -1
- package/internals/components/RichTreeViewItems.d.ts +1 -1
- package/internals/hooks/useInstanceEventHandler.js +1 -1
- package/internals/models/itemPlugin.d.ts +3 -3
- package/internals/models/plugin.d.ts +3 -3
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +23 -24
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +66 -10
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +8 -1
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +1 -5
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +3 -0
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +12 -0
- package/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.d.ts +1 -1
- package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +252 -84
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +26 -8
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +13 -16
- package/internals/useTreeView/useTreeView.d.ts +1 -1
- package/internals/useTreeView/useTreeView.types.d.ts +2 -2
- package/internals/useTreeView/useTreeViewBuildContext.d.ts +1 -1
- package/modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +1 -1
- package/modern/TreeItemProvider/TreeItemProvider.js +13 -11
- package/modern/index.js +1 -1
- package/modern/internals/hooks/useInstanceEventHandler.js +1 -1
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +23 -24
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +8 -1
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +12 -0
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +13 -16
- package/modern/useTreeItem/useTreeItem.js +3 -5
- package/node/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +2 -2
- package/node/TreeItemProvider/TreeItemProvider.js +13 -10
- package/node/index.js +1 -1
- package/node/internals/hooks/useInstanceEventHandler.js +1 -1
- package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +22 -24
- package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +9 -2
- package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +15 -2
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +13 -16
- package/node/useTreeItem/useTreeItem.js +3 -5
- package/package.json +5 -5
- package/useTreeItem/useTreeItem.js +3 -5
- package/useTreeItem/useTreeItem.types.d.ts +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.createExpandedItemsMap = void 0;
|
|
6
|
+
exports.getExpansionTrigger = exports.createExpandedItemsMap = void 0;
|
|
7
7
|
const createExpandedItemsMap = expandedItems => {
|
|
8
8
|
const expandedItemsMap = new Map();
|
|
9
9
|
expandedItems.forEach(id => {
|
|
@@ -11,4 +11,17 @@ const createExpandedItemsMap = expandedItems => {
|
|
|
11
11
|
});
|
|
12
12
|
return expandedItemsMap;
|
|
13
13
|
};
|
|
14
|
-
exports.createExpandedItemsMap = createExpandedItemsMap;
|
|
14
|
+
exports.createExpandedItemsMap = createExpandedItemsMap;
|
|
15
|
+
const getExpansionTrigger = ({
|
|
16
|
+
isItemEditable,
|
|
17
|
+
expansionTrigger
|
|
18
|
+
}) => {
|
|
19
|
+
if (expansionTrigger) {
|
|
20
|
+
return expansionTrigger;
|
|
21
|
+
}
|
|
22
|
+
if (isItemEditable) {
|
|
23
|
+
return 'iconContainer';
|
|
24
|
+
}
|
|
25
|
+
return 'content';
|
|
26
|
+
};
|
|
27
|
+
exports.getExpansionTrigger = getExpansionTrigger;
|
|
@@ -9,19 +9,18 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
9
9
|
var _TreeViewProvider = require("../../TreeViewProvider");
|
|
10
10
|
var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
|
|
11
11
|
var _useTreeViewSelection = require("./useTreeViewSelection.selectors");
|
|
12
|
-
|
|
12
|
+
var _useSelector = require("../../hooks/useSelector");
|
|
13
|
+
function selectorItemCheckboxStatus(state, {
|
|
13
14
|
itemId,
|
|
14
|
-
|
|
15
|
-
selectionPropagation,
|
|
16
|
-
selected
|
|
15
|
+
selectionPropagation
|
|
17
16
|
}) {
|
|
18
|
-
if (
|
|
17
|
+
if ((0, _useTreeViewSelection.selectorIsItemSelected)(state, itemId)) {
|
|
19
18
|
return {
|
|
20
19
|
indeterminate: false,
|
|
21
20
|
checked: true
|
|
22
21
|
};
|
|
23
22
|
}
|
|
24
|
-
const children = (0, _useTreeViewItems.selectorItemOrderedChildrenIds)(
|
|
23
|
+
const children = (0, _useTreeViewItems.selectorItemOrderedChildrenIds)(state, itemId);
|
|
25
24
|
if (children.length === 0) {
|
|
26
25
|
return {
|
|
27
26
|
indeterminate: false,
|
|
@@ -32,18 +31,18 @@ function getCheckboxStatus({
|
|
|
32
31
|
let hasUnSelectedDescendant = false;
|
|
33
32
|
const traverseDescendants = itemToTraverseId => {
|
|
34
33
|
if (itemToTraverseId !== itemId) {
|
|
35
|
-
if ((0, _useTreeViewSelection.selectorIsItemSelected)(
|
|
34
|
+
if ((0, _useTreeViewSelection.selectorIsItemSelected)(state, itemToTraverseId)) {
|
|
36
35
|
hasSelectedDescendant = true;
|
|
37
36
|
} else {
|
|
38
37
|
hasUnSelectedDescendant = true;
|
|
39
38
|
}
|
|
40
39
|
}
|
|
41
|
-
(0, _useTreeViewItems.selectorItemOrderedChildrenIds)(
|
|
40
|
+
(0, _useTreeViewItems.selectorItemOrderedChildrenIds)(state, itemToTraverseId).forEach(traverseDescendants);
|
|
42
41
|
};
|
|
43
42
|
traverseDescendants(itemId);
|
|
44
43
|
return {
|
|
45
|
-
indeterminate: hasSelectedDescendant && hasUnSelectedDescendant || !hasUnSelectedDescendant
|
|
46
|
-
checked: selectionPropagation.parents ? hasSelectedDescendant :
|
|
44
|
+
indeterminate: hasSelectedDescendant && hasUnSelectedDescendant || !hasUnSelectedDescendant,
|
|
45
|
+
checked: selectionPropagation.parents ? hasSelectedDescendant : false
|
|
47
46
|
};
|
|
48
47
|
}
|
|
49
48
|
const useTreeViewSelectionItemPlugin = ({
|
|
@@ -60,6 +59,10 @@ const useTreeViewSelectionItemPlugin = ({
|
|
|
60
59
|
selectionPropagation
|
|
61
60
|
}
|
|
62
61
|
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
62
|
+
const checkboxStatus = (0, _useSelector.useSelector)(store, selectorItemCheckboxStatus, {
|
|
63
|
+
itemId,
|
|
64
|
+
selectionPropagation
|
|
65
|
+
}, (a, b) => a.checked === b.checked && a.indeterminate === b.indeterminate);
|
|
63
66
|
return {
|
|
64
67
|
propsEnhancers: {
|
|
65
68
|
checkbox: ({
|
|
@@ -77,12 +80,6 @@ const useTreeViewSelectionItemPlugin = ({
|
|
|
77
80
|
}
|
|
78
81
|
interactions.handleCheckboxSelection(event);
|
|
79
82
|
};
|
|
80
|
-
const checkboxStatus = getCheckboxStatus({
|
|
81
|
-
store,
|
|
82
|
-
itemId,
|
|
83
|
-
selectionPropagation,
|
|
84
|
-
selected: status.selected
|
|
85
|
-
});
|
|
86
83
|
return (0, _extends2.default)({
|
|
87
84
|
visible: checkboxSelection,
|
|
88
85
|
disabled: disableSelection || status.disabled,
|
|
@@ -20,6 +20,7 @@ var _useTreeViewFocus = require("../internals/plugins/useTreeViewFocus/useTreeVi
|
|
|
20
20
|
var _useTreeViewId = require("../internals/corePlugins/useTreeViewId/useTreeViewId.utils");
|
|
21
21
|
var _useTreeViewItems = require("../internals/plugins/useTreeViewItems/useTreeViewItems.selectors");
|
|
22
22
|
var _useTreeViewId2 = require("../internals/corePlugins/useTreeViewId/useTreeViewId.selectors");
|
|
23
|
+
var _useTreeViewExpansion = require("../internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors");
|
|
23
24
|
const useTreeItem = parameters => {
|
|
24
25
|
const {
|
|
25
26
|
runItemPlugins,
|
|
@@ -30,9 +31,6 @@ const useTreeItem = parameters => {
|
|
|
30
31
|
disableSelection,
|
|
31
32
|
checkboxSelection
|
|
32
33
|
},
|
|
33
|
-
expansion: {
|
|
34
|
-
expansionTrigger
|
|
35
|
-
},
|
|
36
34
|
label: labelContext,
|
|
37
35
|
instance,
|
|
38
36
|
publicAPI,
|
|
@@ -129,7 +127,7 @@ const useTreeItem = parameters => {
|
|
|
129
127
|
if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target)) {
|
|
130
128
|
return;
|
|
131
129
|
}
|
|
132
|
-
if (
|
|
130
|
+
if ((0, _useTreeViewExpansion.selectorItemExpansionTrigger)(store.value) === 'content') {
|
|
133
131
|
interactions.handleExpansion(event);
|
|
134
132
|
}
|
|
135
133
|
if (!checkboxSelection) {
|
|
@@ -152,7 +150,7 @@ const useTreeItem = parameters => {
|
|
|
152
150
|
if (event.defaultMuiPrevented) {
|
|
153
151
|
return;
|
|
154
152
|
}
|
|
155
|
-
if (
|
|
153
|
+
if ((0, _useTreeViewExpansion.selectorItemExpansionTrigger)(store.value) === 'iconContainer') {
|
|
156
154
|
interactions.handleExpansion(event);
|
|
157
155
|
}
|
|
158
156
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-tree-view",
|
|
3
|
-
"version": "8.0.0-alpha.
|
|
3
|
+
"version": "8.0.0-alpha.10",
|
|
4
4
|
"description": "The community edition of the Tree View components (MUI X).",
|
|
5
5
|
"author": "MUI Team",
|
|
6
6
|
"main": "./node/index.js",
|
|
@@ -33,15 +33,15 @@
|
|
|
33
33
|
"directory": "packages/x-tree-view"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@babel/runtime": "^7.26.
|
|
36
|
+
"@babel/runtime": "^7.26.7",
|
|
37
37
|
"@mui/utils": "^5.16.6 || ^6.0.0",
|
|
38
|
-
"@types/react-transition-group": "^4.4.
|
|
38
|
+
"@types/react-transition-group": "^4.4.12",
|
|
39
39
|
"clsx": "^2.1.1",
|
|
40
40
|
"prop-types": "^15.8.1",
|
|
41
41
|
"react-transition-group": "^4.4.5",
|
|
42
42
|
"reselect": "^5.1.1",
|
|
43
|
-
"use-sync-external-store": "^1.
|
|
44
|
-
"@mui/x-internals": "8.0.0-alpha.
|
|
43
|
+
"use-sync-external-store": "^1.4.0",
|
|
44
|
+
"@mui/x-internals": "8.0.0-alpha.10"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"@emotion/react": "^11.9.0",
|
|
@@ -13,6 +13,7 @@ import { selectorIsItemTheDefaultFocusableItem } from "../internals/plugins/useT
|
|
|
13
13
|
import { generateTreeItemIdAttribute } from "../internals/corePlugins/useTreeViewId/useTreeViewId.utils.js";
|
|
14
14
|
import { selectorCanItemBeFocused } from "../internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js";
|
|
15
15
|
import { selectorTreeViewId } from "../internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js";
|
|
16
|
+
import { selectorItemExpansionTrigger } from "../internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js";
|
|
16
17
|
export const useTreeItem = parameters => {
|
|
17
18
|
const {
|
|
18
19
|
runItemPlugins,
|
|
@@ -23,9 +24,6 @@ export const useTreeItem = parameters => {
|
|
|
23
24
|
disableSelection,
|
|
24
25
|
checkboxSelection
|
|
25
26
|
},
|
|
26
|
-
expansion: {
|
|
27
|
-
expansionTrigger
|
|
28
|
-
},
|
|
29
27
|
label: labelContext,
|
|
30
28
|
instance,
|
|
31
29
|
publicAPI,
|
|
@@ -122,7 +120,7 @@ export const useTreeItem = parameters => {
|
|
|
122
120
|
if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target)) {
|
|
123
121
|
return;
|
|
124
122
|
}
|
|
125
|
-
if (
|
|
123
|
+
if (selectorItemExpansionTrigger(store.value) === 'content') {
|
|
126
124
|
interactions.handleExpansion(event);
|
|
127
125
|
}
|
|
128
126
|
if (!checkboxSelection) {
|
|
@@ -145,7 +143,7 @@ export const useTreeItem = parameters => {
|
|
|
145
143
|
if (event.defaultMuiPrevented) {
|
|
146
144
|
return;
|
|
147
145
|
}
|
|
148
|
-
if (
|
|
146
|
+
if (selectorItemExpansionTrigger(store.value) === 'iconContainer') {
|
|
149
147
|
interactions.handleExpansion(event);
|
|
150
148
|
}
|
|
151
149
|
};
|
|
@@ -78,7 +78,7 @@ export interface UseTreeItemLabelInputSlotOwnProps {
|
|
|
78
78
|
}
|
|
79
79
|
export type UseTreeItemLabelInputSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItemLabelInputSlotOwnProps;
|
|
80
80
|
export interface UseTreeItemCheckboxSlotOwnProps {
|
|
81
|
-
ref: React.RefObject<HTMLButtonElement>;
|
|
81
|
+
ref: React.RefObject<HTMLButtonElement | null>;
|
|
82
82
|
}
|
|
83
83
|
export type UseTreeItemCheckboxSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItemCheckboxSlotOwnProps;
|
|
84
84
|
export interface UseTreeItemGroupTransitionSlotOwnProps {
|