@mui/x-tree-view 7.4.0 → 7.5.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 +132 -5395
- package/RichTreeView/RichTreeView.js +7 -2
- package/SimpleTreeView/SimpleTreeView.js +7 -2
- package/TreeItem/TreeItem.js +8 -3
- package/TreeItem/TreeItemContent.d.ts +2 -0
- package/TreeItem/TreeItemContent.js +19 -2
- 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/TreeItem2Icon/TreeItem2Icon.js +1 -1
- package/TreeItem2Provider/TreeItem2Provider.js +1 -1
- package/TreeView/TreeView.js +7 -2
- package/hooks/useTreeItem2Utils/useTreeItem2Utils.d.ts +1 -0
- package/hooks/useTreeItem2Utils/useTreeItem2Utils.js +18 -3
- package/index.js +1 -1
- package/internals/models/plugin.d.ts +0 -6
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +1 -0
- 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/internals/useTreeView/useTreeViewModels.d.ts +1 -1
- package/internals/useTreeView/useTreeViewModels.js +1 -1
- package/modern/RichTreeView/RichTreeView.js +7 -2
- package/modern/SimpleTreeView/SimpleTreeView.js +7 -2
- package/modern/TreeItem/TreeItem.js +8 -3
- package/modern/TreeItem/TreeItemContent.js +19 -2
- 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/TreeItem2Icon/TreeItem2Icon.js +1 -1
- package/modern/TreeItem2Provider/TreeItem2Provider.js +1 -1
- package/modern/TreeView/TreeView.js +7 -2
- package/modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js +18 -3
- 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/internals/useTreeView/useTreeViewModels.js +1 -1
- package/modern/useTreeItem2/useTreeItem2.js +32 -3
- package/node/RichTreeView/RichTreeView.js +7 -2
- package/node/SimpleTreeView/SimpleTreeView.js +7 -2
- package/node/TreeItem/TreeItem.js +8 -3
- package/node/TreeItem/TreeItemContent.js +19 -2
- 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/TreeItem2Icon/TreeItem2Icon.js +1 -1
- package/node/TreeItem2Provider/TreeItem2Provider.js +1 -1
- package/node/TreeView/TreeView.js +7 -2
- package/node/hooks/useTreeItem2Utils/useTreeItem2Utils.js +18 -3
- 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/internals/useTreeView/useTreeViewModels.js +1 -1
- package/node/useTreeItem2/useTreeItem2.js +34 -3
- package/package.json +2 -2
- package/useTreeItem2/useTreeItem2.js +32 -3
- package/useTreeItem2/useTreeItem2.types.d.ts +15 -0
|
@@ -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;
|
|
@@ -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, {
|
|
@@ -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
|