@mui/x-tree-view 7.3.1 → 7.5.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 +234 -5
- package/RichTreeView/RichTreeView.js +6 -1
- package/SimpleTreeView/SimpleTreeView.js +6 -1
- package/TreeItem/TreeItem.js +7 -2
- package/TreeItem/TreeItemContent.d.ts +2 -0
- package/TreeItem/TreeItemContent.js +18 -1
- package/TreeItem/treeItemClasses.d.ts +2 -0
- package/TreeItem/treeItemClasses.js +1 -1
- package/TreeItem/useTreeItemState.d.ts +4 -1
- package/TreeItem/useTreeItemState.js +18 -2
- package/TreeItem2/TreeItem2.d.ts +4 -0
- package/TreeItem2/TreeItem2.js +34 -4
- package/TreeItem2/TreeItem2.types.d.ts +6 -0
- package/TreeItem2/index.d.ts +1 -1
- package/TreeItem2/index.js +1 -1
- package/TreeView/TreeView.js +6 -1
- package/hooks/useTreeItem2Utils/useTreeItem2Utils.d.ts +1 -0
- package/hooks/useTreeItem2Utils/useTreeItem2Utils.js +11 -2
- package/index.js +1 -1
- package/internals/models/plugin.d.ts +0 -6
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +3 -3
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +18 -6
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +16 -4
- package/modern/RichTreeView/RichTreeView.js +6 -1
- package/modern/SimpleTreeView/SimpleTreeView.js +6 -1
- package/modern/TreeItem/TreeItem.js +7 -2
- package/modern/TreeItem/TreeItemContent.js +18 -1
- package/modern/TreeItem/treeItemClasses.js +1 -1
- package/modern/TreeItem/useTreeItemState.js +18 -2
- package/modern/TreeItem2/TreeItem2.js +34 -4
- package/modern/TreeItem2/index.js +1 -1
- package/modern/TreeView/TreeView.js +6 -1
- package/modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js +11 -2
- package/modern/index.js +1 -1
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +3 -3
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +18 -6
- package/modern/useTreeItem2/useTreeItem2.js +35 -6
- package/node/RichTreeView/RichTreeView.js +6 -1
- package/node/SimpleTreeView/SimpleTreeView.js +6 -1
- package/node/TreeItem/TreeItem.js +7 -2
- package/node/TreeItem/TreeItemContent.js +18 -1
- package/node/TreeItem/treeItemClasses.js +1 -1
- package/node/TreeItem/useTreeItemState.js +18 -2
- package/node/TreeItem2/TreeItem2.js +35 -5
- package/node/TreeItem2/index.js +6 -0
- package/node/TreeView/TreeView.js +6 -1
- package/node/hooks/useTreeItem2Utils/useTreeItem2Utils.js +11 -2
- package/node/index.js +1 -1
- package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +3 -3
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +18 -6
- package/node/useTreeItem2/useTreeItem2.js +37 -6
- package/package.json +3 -3
- package/useTreeItem2/useTreeItem2.js +35 -6
- package/useTreeItem2/useTreeItem2.types.d.ts +15 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-tree-view",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.5.0",
|
|
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,12 +33,12 @@
|
|
|
33
33
|
"directory": "packages/x-tree-view"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@babel/runtime": "^7.24.
|
|
36
|
+
"@babel/runtime": "^7.24.5",
|
|
37
37
|
"@mui/base": "^5.0.0-beta.40",
|
|
38
38
|
"@mui/system": "^5.15.14",
|
|
39
39
|
"@mui/utils": "^5.15.14",
|
|
40
40
|
"@types/react-transition-group": "^4.4.10",
|
|
41
|
-
"clsx": "^2.1.
|
|
41
|
+
"clsx": "^2.1.1",
|
|
42
42
|
"prop-types": "^15.8.1",
|
|
43
43
|
"react-transition-group": "^4.4.5"
|
|
44
44
|
},
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
2
3
|
import { extractEventHandlers } from '@mui/base/utils';
|
|
3
4
|
import useForkRef from '@mui/utils/useForkRef';
|
|
4
5
|
import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';
|
|
@@ -7,7 +8,9 @@ export const useTreeItem2 = parameters => {
|
|
|
7
8
|
const {
|
|
8
9
|
runItemPlugins,
|
|
9
10
|
selection: {
|
|
10
|
-
multiSelect
|
|
11
|
+
multiSelect,
|
|
12
|
+
disableSelection,
|
|
13
|
+
checkboxSelection
|
|
11
14
|
},
|
|
12
15
|
disabledItemsFocusable,
|
|
13
16
|
instance,
|
|
@@ -33,6 +36,7 @@ export const useTreeItem2 = parameters => {
|
|
|
33
36
|
});
|
|
34
37
|
const idAttribute = instance.getTreeItemIdAttribute(itemId, id);
|
|
35
38
|
const handleRootRef = useForkRef(rootRef, pluginRootRef);
|
|
39
|
+
const checkboxRef = React.useRef(null);
|
|
36
40
|
const createRootHandleFocus = otherHandlers => event => {
|
|
37
41
|
otherHandlers.onFocus?.(event);
|
|
38
42
|
if (event.defaultMuiPrevented) {
|
|
@@ -59,11 +63,13 @@ export const useTreeItem2 = parameters => {
|
|
|
59
63
|
};
|
|
60
64
|
const createContentHandleClick = otherHandlers => event => {
|
|
61
65
|
otherHandlers.onClick?.(event);
|
|
62
|
-
if (event.defaultMuiPrevented) {
|
|
66
|
+
if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target)) {
|
|
63
67
|
return;
|
|
64
68
|
}
|
|
65
69
|
interactions.handleExpansion(event);
|
|
66
|
-
|
|
70
|
+
if (!checkboxSelection) {
|
|
71
|
+
interactions.handleSelection(event);
|
|
72
|
+
}
|
|
67
73
|
};
|
|
68
74
|
const createContentHandleMouseDown = otherHandlers => event => {
|
|
69
75
|
otherHandlers.onMouseDown?.(event);
|
|
@@ -76,6 +82,16 @@ export const useTreeItem2 = parameters => {
|
|
|
76
82
|
event.preventDefault();
|
|
77
83
|
}
|
|
78
84
|
};
|
|
85
|
+
const createCheckboxHandleChange = otherHandlers => event => {
|
|
86
|
+
otherHandlers.onChange?.(event);
|
|
87
|
+
if (event.defaultMuiPrevented) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (disableSelection || status.disabled) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
interactions.handleCheckboxSelection(event);
|
|
94
|
+
};
|
|
79
95
|
const getRootProps = (externalProps = {}) => {
|
|
80
96
|
const externalEventHandlers = _extends({}, extractEventHandlers(parameters), extractEventHandlers(externalProps));
|
|
81
97
|
let ariaSelected;
|
|
@@ -105,7 +121,7 @@ export const useTreeItem2 = parameters => {
|
|
|
105
121
|
});
|
|
106
122
|
};
|
|
107
123
|
const getContentProps = (externalProps = {}) => {
|
|
108
|
-
const externalEventHandlers =
|
|
124
|
+
const externalEventHandlers = extractEventHandlers(externalProps);
|
|
109
125
|
return _extends({}, externalEventHandlers, externalProps, {
|
|
110
126
|
ref: contentRef,
|
|
111
127
|
onClick: createContentHandleClick(externalEventHandlers),
|
|
@@ -113,6 +129,18 @@ export const useTreeItem2 = parameters => {
|
|
|
113
129
|
status
|
|
114
130
|
});
|
|
115
131
|
};
|
|
132
|
+
const getCheckboxProps = (externalProps = {}) => {
|
|
133
|
+
const externalEventHandlers = extractEventHandlers(externalProps);
|
|
134
|
+
return _extends({}, externalEventHandlers, {
|
|
135
|
+
visible: checkboxSelection,
|
|
136
|
+
ref: checkboxRef,
|
|
137
|
+
checked: status.selected,
|
|
138
|
+
disabled: disableSelection || status.disabled,
|
|
139
|
+
tabIndex: -1
|
|
140
|
+
}, externalProps, {
|
|
141
|
+
onChange: createCheckboxHandleChange(externalEventHandlers)
|
|
142
|
+
});
|
|
143
|
+
};
|
|
116
144
|
const getLabelProps = (externalProps = {}) => {
|
|
117
145
|
const externalEventHandlers = _extends({}, extractEventHandlers(parameters), extractEventHandlers(externalProps));
|
|
118
146
|
return _extends({}, externalEventHandlers, {
|
|
@@ -120,11 +148,11 @@ export const useTreeItem2 = parameters => {
|
|
|
120
148
|
}, externalProps);
|
|
121
149
|
};
|
|
122
150
|
const getIconContainerProps = (externalProps = {}) => {
|
|
123
|
-
const externalEventHandlers =
|
|
151
|
+
const externalEventHandlers = extractEventHandlers(externalProps);
|
|
124
152
|
return _extends({}, externalEventHandlers, externalProps);
|
|
125
153
|
};
|
|
126
154
|
const getGroupTransitionProps = (externalProps = {}) => {
|
|
127
|
-
const externalEventHandlers =
|
|
155
|
+
const externalEventHandlers = extractEventHandlers(externalProps);
|
|
128
156
|
return _extends({}, externalEventHandlers, {
|
|
129
157
|
unmountOnExit: true,
|
|
130
158
|
component: 'ul',
|
|
@@ -138,6 +166,7 @@ export const useTreeItem2 = parameters => {
|
|
|
138
166
|
getContentProps,
|
|
139
167
|
getGroupTransitionProps,
|
|
140
168
|
getIconContainerProps,
|
|
169
|
+
getCheckboxProps,
|
|
141
170
|
getLabelProps,
|
|
142
171
|
rootRef: handleRootRef,
|
|
143
172
|
status,
|
|
@@ -54,6 +54,15 @@ export interface UseTreeItem2LabelSlotOwnProps {
|
|
|
54
54
|
children: React.ReactNode;
|
|
55
55
|
}
|
|
56
56
|
export type UseTreeItem2LabelSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItem2LabelSlotOwnProps;
|
|
57
|
+
export interface UseTreeItem2CheckboxSlotOwnProps {
|
|
58
|
+
visible: boolean;
|
|
59
|
+
checked: boolean;
|
|
60
|
+
onChange: React.ChangeEventHandler<HTMLInputElement>;
|
|
61
|
+
disabled: boolean;
|
|
62
|
+
ref: React.RefObject<HTMLButtonElement>;
|
|
63
|
+
tabIndex: -1;
|
|
64
|
+
}
|
|
65
|
+
export type UseTreeItem2CheckboxSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItem2CheckboxSlotOwnProps;
|
|
57
66
|
export interface UseTreeItem2GroupTransitionSlotOwnProps {
|
|
58
67
|
unmountOnExit: boolean;
|
|
59
68
|
in: boolean;
|
|
@@ -88,6 +97,12 @@ export interface UseTreeItem2ReturnValue<TPlugins extends readonly TreeViewAnyPl
|
|
|
88
97
|
* @returns {UseTreeItem2LabelSlotProps<ExternalProps>} Props that should be spread on the label slot
|
|
89
98
|
*/
|
|
90
99
|
getLabelProps: <ExternalProps extends Record<string, any> = {}>(externalProps?: ExternalProps) => UseTreeItem2LabelSlotProps<ExternalProps>;
|
|
100
|
+
/**
|
|
101
|
+
* Resolver for the checkbox slot's props.
|
|
102
|
+
* @param {ExternalProps} externalProps Additional props for the checkbox slot
|
|
103
|
+
* @returns {UseTreeItem2CheckboxSlotProps<ExternalProps>} Props that should be spread on the checkbox slot
|
|
104
|
+
*/
|
|
105
|
+
getCheckboxProps: <ExternalProps extends Record<string, any> = {}>(externalProps?: ExternalProps) => UseTreeItem2CheckboxSlotProps<ExternalProps>;
|
|
91
106
|
/**
|
|
92
107
|
* Resolver for the iconContainer slot's props.
|
|
93
108
|
* @param {ExternalProps} externalProps Additional props for the iconContainer slot
|