@mui/x-tree-view 7.11.0 → 7.12.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 +194 -4
- package/RichTreeView/RichTreeView.js +11 -7
- package/RichTreeView/RichTreeView.types.d.ts +1 -1
- package/SimpleTreeView/SimpleTreeView.js +11 -7
- package/SimpleTreeView/SimpleTreeView.types.d.ts +1 -1
- package/TreeItem/TreeItem.js +36 -10
- package/TreeItem/TreeItem.types.d.ts +1 -1
- package/TreeItem/TreeItemContent.d.ts +2 -0
- package/TreeItem/TreeItemContent.js +11 -3
- package/TreeItem/treeItemClasses.d.ts +2 -0
- package/TreeItem/treeItemClasses.js +1 -1
- package/TreeItem/useTreeItemState.d.ts +1 -0
- package/TreeItem/useTreeItemState.js +5 -1
- package/TreeItem2/TreeItem2.js +15 -3
- package/TreeItem2/TreeItem2.types.d.ts +8 -1
- package/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.d.ts +4 -0
- package/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js +69 -0
- package/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.d.ts +6 -0
- package/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js +1 -0
- package/TreeItem2DragAndDropOverlay/index.d.ts +2 -0
- package/TreeItem2DragAndDropOverlay/index.js +1 -0
- package/TreeItem2DragAndDropOverlay/package.json +6 -0
- package/TreeItem2Icon/TreeItem2Icon.js +3 -2
- package/TreeItem2Icon/TreeItem2Icon.types.d.ts +1 -1
- package/TreeItem2Provider/TreeItem2Provider.js +1 -1
- package/TreeView/TreeView.js +8 -3
- package/hooks/useTreeItem2Utils/useTreeItem2Utils.js +1 -1
- package/index.js +1 -1
- package/internals/TreeViewProvider/index.d.ts +1 -0
- package/internals/TreeViewProvider/index.js +2 -1
- package/internals/index.d.ts +6 -5
- package/internals/index.js +4 -3
- package/internals/models/index.d.ts +2 -0
- package/internals/models/index.js +3 -1
- package/internals/models/itemPlugin.d.ts +37 -0
- package/internals/models/itemPlugin.js +1 -0
- package/internals/models/plugin.d.ts +2 -15
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +2 -3
- package/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.d.ts +1 -1
- package/internals/plugins/useTreeViewItems/index.d.ts +2 -1
- package/internals/plugins/useTreeViewItems/index.js +2 -1
- package/internals/plugins/useTreeViewItems/useTreeViewItems.js +6 -2
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +18 -4
- package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +1 -1
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +2 -2
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +1 -2
- package/internals/useTreeView/useTreeView.types.d.ts +1 -1
- package/internals/useTreeView/useTreeViewBuildContext.js +23 -1
- package/internals/utils/tree.d.ts +8 -0
- package/internals/utils/tree.js +11 -0
- package/internals/utils/warning.d.ts +2 -1
- package/internals/utils/warning.js +19 -12
- package/models/items.d.ts +1 -0
- package/modern/RichTreeView/RichTreeView.js +11 -7
- package/modern/SimpleTreeView/SimpleTreeView.js +11 -7
- package/modern/TreeItem/TreeItem.js +36 -10
- package/modern/TreeItem/TreeItemContent.js +11 -3
- package/modern/TreeItem/treeItemClasses.js +1 -1
- package/modern/TreeItem/useTreeItemState.js +5 -1
- package/modern/TreeItem2/TreeItem2.js +15 -3
- package/modern/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js +69 -0
- package/modern/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js +1 -0
- package/modern/TreeItem2DragAndDropOverlay/index.js +1 -0
- package/modern/TreeItem2Icon/TreeItem2Icon.js +3 -2
- package/modern/TreeItem2Provider/TreeItem2Provider.js +1 -1
- package/modern/TreeView/TreeView.js +8 -3
- package/modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js +1 -1
- package/modern/index.js +1 -1
- package/modern/internals/TreeViewProvider/index.js +2 -1
- package/modern/internals/index.js +4 -3
- package/modern/internals/models/index.js +3 -1
- package/modern/internals/models/itemPlugin.js +1 -0
- package/modern/internals/plugins/useTreeViewItems/index.js +2 -1
- package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +6 -2
- package/modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +1 -1
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +2 -2
- package/modern/internals/useTreeView/useTreeViewBuildContext.js +23 -1
- package/modern/internals/utils/tree.js +11 -0
- package/modern/internals/utils/warning.js +19 -12
- package/modern/useTreeItem2/useTreeItem2.js +43 -15
- package/node/RichTreeView/RichTreeView.js +12 -8
- package/node/SimpleTreeView/SimpleTreeView.js +11 -7
- package/node/TreeItem/TreeItem.js +45 -19
- package/node/TreeItem/TreeItemContent.js +11 -3
- package/node/TreeItem/treeItemClasses.js +1 -1
- package/node/TreeItem/useTreeItemState.js +6 -2
- package/node/TreeItem2/TreeItem2.js +21 -9
- package/node/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js +77 -0
- package/node/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js +5 -0
- package/node/TreeItem2DragAndDropOverlay/index.js +12 -0
- package/node/TreeItem2Icon/TreeItem2Icon.js +6 -5
- package/node/TreeItem2Provider/TreeItem2Provider.js +2 -2
- package/node/TreeView/TreeView.js +8 -3
- package/node/hooks/useTreeItem2Utils/useTreeItem2Utils.js +2 -2
- package/node/index.js +1 -1
- package/node/internals/TreeViewProvider/index.js +8 -1
- package/node/internals/index.js +27 -2
- package/node/internals/models/index.js +22 -0
- package/node/internals/models/itemPlugin.js +5 -0
- package/node/internals/plugins/useTreeViewItems/index.js +14 -1
- package/node/internals/plugins/useTreeViewItems/useTreeViewItems.js +6 -2
- package/node/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +2 -2
- package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +1 -1
- package/node/internals/useTreeView/useTreeViewBuildContext.js +23 -1
- package/node/internals/utils/tree.js +14 -2
- package/node/internals/utils/warning.js +21 -14
- package/node/useTreeItem2/useTreeItem2.js +49 -21
- package/package.json +5 -6
- package/useTreeItem2/index.d.ts +1 -1
- package/useTreeItem2/useTreeItem2.js +43 -15
- package/useTreeItem2/useTreeItem2.types.d.ts +17 -4
|
@@ -4,7 +4,7 @@ import useEventCallback from '@mui/utils/useEventCallback';
|
|
|
4
4
|
import useForkRef from '@mui/utils/useForkRef';
|
|
5
5
|
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
6
6
|
import { publishTreeViewEvent } from '../../utils/publishTreeViewEvent';
|
|
7
|
-
import { useTreeViewContext } from '../../TreeViewProvider
|
|
7
|
+
import { useTreeViewContext } from '../../TreeViewProvider';
|
|
8
8
|
import { TreeViewChildrenItemContext, TreeViewChildrenItemProvider } from '../../TreeViewProvider/TreeViewChildrenItemProvider';
|
|
9
9
|
import { buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from '../useTreeViewItems/useTreeViewItems.utils';
|
|
10
10
|
import { TreeViewItemDepthContext } from '../../TreeViewItemDepthContext';
|
package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useRtl } from '@mui/system/RtlProvider';
|
|
3
3
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
4
|
-
import { getFirstNavigableItem, getLastNavigableItem, getNextNavigableItem, getPreviousNavigableItem } from '../../utils/tree';
|
|
4
|
+
import { getFirstNavigableItem, getLastNavigableItem, getNextNavigableItem, getPreviousNavigableItem, isTargetInDescendants } from '../../utils/tree';
|
|
5
5
|
function isPrintableCharacter(string) {
|
|
6
6
|
return !!string && string.length === 1 && !!string.match(/\S/);
|
|
7
7
|
}
|
|
@@ -60,7 +60,7 @@ export const useTreeViewKeyboardNavigation = ({
|
|
|
60
60
|
if (event.defaultMuiPrevented) {
|
|
61
61
|
return;
|
|
62
62
|
}
|
|
63
|
-
if (event.altKey || event.
|
|
63
|
+
if (event.altKey || isTargetInDescendants(event.target, event.currentTarget)) {
|
|
64
64
|
return;
|
|
65
65
|
}
|
|
66
66
|
const ctrlPressed = event.ctrlKey || event.metaKey;
|
|
@@ -7,6 +7,8 @@ export const useTreeViewBuildContext = ({
|
|
|
7
7
|
const runItemPlugins = itemPluginProps => {
|
|
8
8
|
let finalRootRef = null;
|
|
9
9
|
let finalContentRef = null;
|
|
10
|
+
const pluginPropEnhancers = [];
|
|
11
|
+
const pluginPropEnhancersNames = {};
|
|
10
12
|
plugins.forEach(plugin => {
|
|
11
13
|
if (!plugin.itemPlugin) {
|
|
12
14
|
return;
|
|
@@ -22,10 +24,30 @@ export const useTreeViewBuildContext = ({
|
|
|
22
24
|
if (itemPluginResponse?.contentRef) {
|
|
23
25
|
finalContentRef = itemPluginResponse.contentRef;
|
|
24
26
|
}
|
|
27
|
+
if (itemPluginResponse?.propsEnhancers) {
|
|
28
|
+
pluginPropEnhancers.push(itemPluginResponse.propsEnhancers);
|
|
29
|
+
|
|
30
|
+
// Prepare a list of all the slots which are enhanced by at least one plugin
|
|
31
|
+
Object.keys(itemPluginResponse.propsEnhancers).forEach(propsEnhancerName => {
|
|
32
|
+
pluginPropEnhancersNames[propsEnhancerName] = true;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
25
35
|
});
|
|
36
|
+
const resolvePropsEnhancer = currentSlotName => currentSlotParams => {
|
|
37
|
+
const enhancedProps = {};
|
|
38
|
+
pluginPropEnhancers.forEach(propsEnhancersForCurrentPlugin => {
|
|
39
|
+
const propsEnhancerForCurrentPluginAndSlot = propsEnhancersForCurrentPlugin[currentSlotName];
|
|
40
|
+
if (propsEnhancerForCurrentPluginAndSlot != null) {
|
|
41
|
+
Object.assign(enhancedProps, propsEnhancerForCurrentPluginAndSlot(currentSlotParams));
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
return enhancedProps;
|
|
45
|
+
};
|
|
46
|
+
const propsEnhancers = Object.fromEntries(Object.keys(pluginPropEnhancersNames).map(propEnhancerName => [propEnhancerName, resolvePropsEnhancer(propEnhancerName)]));
|
|
26
47
|
return {
|
|
27
48
|
contentRef: finalContentRef,
|
|
28
|
-
rootRef: finalRootRef
|
|
49
|
+
rootRef: finalRootRef,
|
|
50
|
+
propsEnhancers
|
|
29
51
|
};
|
|
30
52
|
};
|
|
31
53
|
const wrapItem = ({
|
|
@@ -181,4 +181,15 @@ export const getAllNavigableItems = instance => {
|
|
|
181
181
|
item = getNextNavigableItem(instance, item);
|
|
182
182
|
}
|
|
183
183
|
return navigableItems;
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Checks if the target is in a descendant of this item.
|
|
188
|
+
* This can prevent from firing some logic on the ancestors on the interacted item when the event handler is on the root.
|
|
189
|
+
* @param {HTMLElement} target The target to check
|
|
190
|
+
* @param {HTMLElement | null} itemRoot The root of the item to check if the event target is in its descendants
|
|
191
|
+
* @returns {boolean} Whether the target is in a descendant of this item
|
|
192
|
+
*/
|
|
193
|
+
export const isTargetInDescendants = (target, itemRoot) => {
|
|
194
|
+
return itemRoot !== target.closest('*[role="treeitem"]');
|
|
184
195
|
};
|
|
@@ -1,14 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
const warnedOnceCache = new Set();
|
|
2
|
+
|
|
3
|
+
// TODO move to @mui/x-internals
|
|
4
|
+
// TODO eventually move to @base_ui/internals. Base UI, etc. too need this helper.
|
|
5
|
+
export function warnOnce(message, gravity = 'warning') {
|
|
6
|
+
if (process.env.NODE_ENV === 'production') {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
3
9
|
const cleanMessage = Array.isArray(message) ? message.join('\n') : message;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
console.warn(cleanMessage);
|
|
11
|
-
}
|
|
10
|
+
if (!warnedOnceCache.has(cleanMessage)) {
|
|
11
|
+
warnedOnceCache.add(cleanMessage);
|
|
12
|
+
if (gravity === 'error') {
|
|
13
|
+
console.error(cleanMessage);
|
|
14
|
+
} else {
|
|
15
|
+
console.warn(cleanMessage);
|
|
12
16
|
}
|
|
13
|
-
}
|
|
14
|
-
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function clearWarningsCache() {
|
|
20
|
+
warnedOnceCache.clear();
|
|
21
|
+
}
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import
|
|
3
|
+
import extractEventHandlers from '@mui/utils/extractEventHandlers';
|
|
4
4
|
import useForkRef from '@mui/utils/useForkRef';
|
|
5
|
-
import { useTreeViewContext } from '../internals/TreeViewProvider
|
|
5
|
+
import { useTreeViewContext } from '../internals/TreeViewProvider';
|
|
6
6
|
import { useTreeItem2Utils } from '../hooks/useTreeItem2Utils';
|
|
7
7
|
import { TreeViewItemDepthContext } from '../internals/TreeViewItemDepthContext';
|
|
8
8
|
export const useTreeItem2 = parameters => {
|
|
9
9
|
const {
|
|
10
10
|
runItemPlugins,
|
|
11
|
+
items: {
|
|
12
|
+
onItemClick,
|
|
13
|
+
disabledItemsFocusable,
|
|
14
|
+
indentationAtItemLevel
|
|
15
|
+
},
|
|
11
16
|
selection: {
|
|
12
17
|
multiSelect,
|
|
13
18
|
disableSelection,
|
|
@@ -16,8 +21,6 @@ export const useTreeItem2 = parameters => {
|
|
|
16
21
|
expansion: {
|
|
17
22
|
expansionTrigger
|
|
18
23
|
},
|
|
19
|
-
disabledItemsFocusable,
|
|
20
|
-
indentationAtItemLevel,
|
|
21
24
|
instance,
|
|
22
25
|
publicAPI
|
|
23
26
|
} = useTreeViewContext();
|
|
@@ -31,7 +34,8 @@ export const useTreeItem2 = parameters => {
|
|
|
31
34
|
} = parameters;
|
|
32
35
|
const {
|
|
33
36
|
rootRef: pluginRootRef,
|
|
34
|
-
contentRef
|
|
37
|
+
contentRef,
|
|
38
|
+
propsEnhancers
|
|
35
39
|
} = runItemPlugins(parameters);
|
|
36
40
|
const {
|
|
37
41
|
interactions,
|
|
@@ -40,8 +44,11 @@ export const useTreeItem2 = parameters => {
|
|
|
40
44
|
itemId,
|
|
41
45
|
children
|
|
42
46
|
});
|
|
47
|
+
const rootRefObject = React.useRef(null);
|
|
48
|
+
const contentRefObject = React.useRef(null);
|
|
43
49
|
const idAttribute = instance.getTreeItemIdAttribute(itemId, id);
|
|
44
|
-
const handleRootRef = useForkRef(rootRef, pluginRootRef);
|
|
50
|
+
const handleRootRef = useForkRef(rootRef, pluginRootRef, rootRefObject);
|
|
51
|
+
const handleContentRef = useForkRef(contentRef, contentRefObject);
|
|
45
52
|
const checkboxRef = React.useRef(null);
|
|
46
53
|
const createRootHandleFocus = otherHandlers => event => {
|
|
47
54
|
otherHandlers.onFocus?.(event);
|
|
@@ -69,6 +76,7 @@ export const useTreeItem2 = parameters => {
|
|
|
69
76
|
};
|
|
70
77
|
const createContentHandleClick = otherHandlers => event => {
|
|
71
78
|
otherHandlers.onClick?.(event);
|
|
79
|
+
onItemClick?.(event, itemId);
|
|
72
80
|
if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target)) {
|
|
73
81
|
return;
|
|
74
82
|
}
|
|
@@ -123,7 +131,7 @@ export const useTreeItem2 = parameters => {
|
|
|
123
131
|
*/
|
|
124
132
|
ariaSelected = true;
|
|
125
133
|
}
|
|
126
|
-
const
|
|
134
|
+
const props = _extends({}, externalEventHandlers, {
|
|
127
135
|
ref: handleRootRef,
|
|
128
136
|
role: 'treeitem',
|
|
129
137
|
tabIndex: instance.canItemBeTabbed(itemId) ? 0 : -1,
|
|
@@ -137,24 +145,34 @@ export const useTreeItem2 = parameters => {
|
|
|
137
145
|
onKeyDown: createRootHandleKeyDown(externalEventHandlers)
|
|
138
146
|
});
|
|
139
147
|
if (indentationAtItemLevel) {
|
|
140
|
-
|
|
148
|
+
props.style = {
|
|
141
149
|
'--TreeView-itemDepth': typeof depthContext === 'function' ? depthContext(itemId) : depthContext
|
|
142
150
|
};
|
|
143
151
|
}
|
|
144
|
-
|
|
152
|
+
const enhancedRootProps = propsEnhancers.root?.({
|
|
153
|
+
rootRefObject,
|
|
154
|
+
contentRefObject,
|
|
155
|
+
externalEventHandlers
|
|
156
|
+
}) ?? {};
|
|
157
|
+
return _extends({}, props, enhancedRootProps);
|
|
145
158
|
};
|
|
146
159
|
const getContentProps = (externalProps = {}) => {
|
|
147
160
|
const externalEventHandlers = extractEventHandlers(externalProps);
|
|
148
|
-
const
|
|
149
|
-
ref:
|
|
161
|
+
const props = _extends({}, externalEventHandlers, externalProps, {
|
|
162
|
+
ref: handleContentRef,
|
|
150
163
|
onClick: createContentHandleClick(externalEventHandlers),
|
|
151
164
|
onMouseDown: createContentHandleMouseDown(externalEventHandlers),
|
|
152
165
|
status
|
|
153
166
|
});
|
|
154
167
|
if (indentationAtItemLevel) {
|
|
155
|
-
|
|
156
|
-
}
|
|
157
|
-
|
|
168
|
+
props.indentationAtItemLevel = true;
|
|
169
|
+
}
|
|
170
|
+
const enhancedContentProps = propsEnhancers.content?.({
|
|
171
|
+
rootRefObject,
|
|
172
|
+
contentRefObject,
|
|
173
|
+
externalEventHandlers
|
|
174
|
+
}) ?? {};
|
|
175
|
+
return _extends({}, props, enhancedContentProps);
|
|
158
176
|
};
|
|
159
177
|
const getCheckboxProps = (externalProps = {}) => {
|
|
160
178
|
const externalEventHandlers = extractEventHandlers(externalProps);
|
|
@@ -169,7 +187,7 @@ export const useTreeItem2 = parameters => {
|
|
|
169
187
|
});
|
|
170
188
|
};
|
|
171
189
|
const getLabelProps = (externalProps = {}) => {
|
|
172
|
-
const externalEventHandlers = _extends({}, extractEventHandlers(
|
|
190
|
+
const externalEventHandlers = _extends({}, extractEventHandlers(externalProps));
|
|
173
191
|
return _extends({}, externalEventHandlers, {
|
|
174
192
|
children: label
|
|
175
193
|
}, externalProps);
|
|
@@ -194,6 +212,15 @@ export const useTreeItem2 = parameters => {
|
|
|
194
212
|
}
|
|
195
213
|
return response;
|
|
196
214
|
};
|
|
215
|
+
const getDragAndDropOverlayProps = (externalProps = {}) => {
|
|
216
|
+
const externalEventHandlers = _extends({}, extractEventHandlers(externalProps));
|
|
217
|
+
const enhancedDragAndDropOverlayProps = propsEnhancers.dragAndDropOverlay?.({
|
|
218
|
+
rootRefObject,
|
|
219
|
+
contentRefObject,
|
|
220
|
+
externalEventHandlers
|
|
221
|
+
}) ?? {};
|
|
222
|
+
return _extends({}, externalProps, enhancedDragAndDropOverlayProps);
|
|
223
|
+
};
|
|
197
224
|
return {
|
|
198
225
|
getRootProps,
|
|
199
226
|
getContentProps,
|
|
@@ -201,6 +228,7 @@ export const useTreeItem2 = parameters => {
|
|
|
201
228
|
getIconContainerProps,
|
|
202
229
|
getCheckboxProps,
|
|
203
230
|
getLabelProps,
|
|
231
|
+
getDragAndDropOverlayProps,
|
|
204
232
|
rootRef: handleRootRef,
|
|
205
233
|
status,
|
|
206
234
|
publicAPI
|
|
@@ -9,7 +9,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
9
9
|
var React = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
12
|
-
var
|
|
12
|
+
var _useSlotProps = _interopRequireDefault(require("@mui/utils/useSlotProps"));
|
|
13
13
|
var _richTreeViewClasses = require("./richTreeViewClasses");
|
|
14
14
|
var _zeroStyled = require("../internals/zero-styled");
|
|
15
15
|
var _useTreeView = require("../internals/useTreeView");
|
|
@@ -50,7 +50,7 @@ function WrappedTreeItem({
|
|
|
50
50
|
children
|
|
51
51
|
}) {
|
|
52
52
|
const Item = slots?.item ?? _TreeItem.TreeItem;
|
|
53
|
-
const itemProps = (0,
|
|
53
|
+
const itemProps = (0, _useSlotProps.default)({
|
|
54
54
|
elementType: Item,
|
|
55
55
|
externalSlotProps: slotProps?.item,
|
|
56
56
|
additionalProps: {
|
|
@@ -67,7 +67,6 @@ function WrappedTreeItem({
|
|
|
67
67
|
children: children
|
|
68
68
|
}));
|
|
69
69
|
}
|
|
70
|
-
const childrenWarning = (0, _warning.buildWarning)(['MUI X: The `RichTreeView` component does not support JSX children.', 'If you want to add items, you need to use the `items` prop', 'Check the documentation for more details: https://mui.com/x/react-tree-view/rich-tree-view/items/']);
|
|
71
70
|
|
|
72
71
|
/**
|
|
73
72
|
*
|
|
@@ -86,7 +85,7 @@ const RichTreeView = exports.RichTreeView = /*#__PURE__*/React.forwardRef(functi
|
|
|
86
85
|
});
|
|
87
86
|
if (process.env.NODE_ENV !== 'production') {
|
|
88
87
|
if (props.children != null) {
|
|
89
|
-
|
|
88
|
+
(0, _warning.warnOnce)(['MUI X: The `RichTreeView` component does not support JSX children.', 'If you want to add items, you need to use the `items` prop.', 'Check the documentation for more details: https://mui.com/x/react-tree-view/rich-tree-view/items/.']);
|
|
90
89
|
}
|
|
91
90
|
}
|
|
92
91
|
const {
|
|
@@ -104,7 +103,7 @@ const RichTreeView = exports.RichTreeView = /*#__PURE__*/React.forwardRef(functi
|
|
|
104
103
|
} = props;
|
|
105
104
|
const classes = useUtilityClasses(props);
|
|
106
105
|
const Root = slots?.root ?? RichTreeViewRoot;
|
|
107
|
-
const rootProps = (0,
|
|
106
|
+
const rootProps = (0, _useSlotProps.default)({
|
|
108
107
|
elementType: Root,
|
|
109
108
|
externalSlotProps: slotProps?.root,
|
|
110
109
|
className: classes.root,
|
|
@@ -251,6 +250,12 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
|
251
250
|
* @param {array} itemIds The ids of the expanded items.
|
|
252
251
|
*/
|
|
253
252
|
onExpandedItemsChange: _propTypes.default.func,
|
|
253
|
+
/**
|
|
254
|
+
* Callback fired when the `content` slot of a given tree item is clicked.
|
|
255
|
+
* @param {React.MouseEvent} event The DOM event that triggered the change.
|
|
256
|
+
* @param {string} itemId The id of the focused item.
|
|
257
|
+
*/
|
|
258
|
+
onItemClick: _propTypes.default.func,
|
|
254
259
|
/**
|
|
255
260
|
* Callback fired when a tree item is expanded or collapsed.
|
|
256
261
|
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
@@ -259,10 +264,9 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
|
259
264
|
*/
|
|
260
265
|
onItemExpansionToggle: _propTypes.default.func,
|
|
261
266
|
/**
|
|
262
|
-
* Callback fired when tree
|
|
263
|
-
* @param {React.SyntheticEvent} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event.
|
|
267
|
+
* Callback fired when a given tree item is focused.
|
|
268
|
+
* @param {React.SyntheticEvent | null} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event.
|
|
264
269
|
* @param {string} itemId The id of the focused item.
|
|
265
|
-
* @param {string} value of the focused item.
|
|
266
270
|
*/
|
|
267
271
|
onItemFocus: _propTypes.default.func,
|
|
268
272
|
/**
|
|
@@ -9,7 +9,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
9
9
|
var React = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
12
|
-
var
|
|
12
|
+
var _useSlotProps = _interopRequireDefault(require("@mui/utils/useSlotProps"));
|
|
13
13
|
var _zeroStyled = require("../internals/zero-styled");
|
|
14
14
|
var _simpleTreeViewClasses = require("./simpleTreeViewClasses");
|
|
15
15
|
var _useTreeView = require("../internals/useTreeView");
|
|
@@ -41,7 +41,6 @@ const SimpleTreeViewRoot = exports.SimpleTreeViewRoot = (0, _zeroStyled.styled)(
|
|
|
41
41
|
position: 'relative'
|
|
42
42
|
});
|
|
43
43
|
const EMPTY_ITEMS = [];
|
|
44
|
-
const itemsPropWarning = (0, _warning.buildWarning)(['MUI X: The `SimpleTreeView` component does not support the `items` prop.', 'If you want to add items, you need to pass them as JSX children.', 'Check the documentation for more details: https://mui.com/x/react-tree-view/simple-tree-view/items/']);
|
|
45
44
|
|
|
46
45
|
/**
|
|
47
46
|
*
|
|
@@ -61,7 +60,7 @@ const SimpleTreeView = exports.SimpleTreeView = /*#__PURE__*/React.forwardRef(fu
|
|
|
61
60
|
const ownerState = props;
|
|
62
61
|
if (process.env.NODE_ENV !== 'production') {
|
|
63
62
|
if (props.items != null) {
|
|
64
|
-
|
|
63
|
+
(0, _warning.warnOnce)(['MUI X: The `SimpleTreeView` component does not support the `items` prop.', 'If you want to add items, you need to pass them as JSX children.', 'Check the documentation for more details: https://mui.com/x/react-tree-view/simple-tree-view/items/.']);
|
|
65
64
|
}
|
|
66
65
|
}
|
|
67
66
|
const {
|
|
@@ -80,7 +79,7 @@ const SimpleTreeView = exports.SimpleTreeView = /*#__PURE__*/React.forwardRef(fu
|
|
|
80
79
|
} = props;
|
|
81
80
|
const classes = useUtilityClasses(props);
|
|
82
81
|
const Root = slots?.root ?? SimpleTreeViewRoot;
|
|
83
|
-
const rootProps = (0,
|
|
82
|
+
const rootProps = (0, _useSlotProps.default)({
|
|
84
83
|
elementType: Root,
|
|
85
84
|
externalSlotProps: slotProps?.root,
|
|
86
85
|
className: classes.root,
|
|
@@ -187,6 +186,12 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
|
187
186
|
* @param {array} itemIds The ids of the expanded items.
|
|
188
187
|
*/
|
|
189
188
|
onExpandedItemsChange: _propTypes.default.func,
|
|
189
|
+
/**
|
|
190
|
+
* Callback fired when the `content` slot of a given tree item is clicked.
|
|
191
|
+
* @param {React.MouseEvent} event The DOM event that triggered the change.
|
|
192
|
+
* @param {string} itemId The id of the focused item.
|
|
193
|
+
*/
|
|
194
|
+
onItemClick: _propTypes.default.func,
|
|
190
195
|
/**
|
|
191
196
|
* Callback fired when a tree item is expanded or collapsed.
|
|
192
197
|
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
@@ -195,10 +200,9 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
|
195
200
|
*/
|
|
196
201
|
onItemExpansionToggle: _propTypes.default.func,
|
|
197
202
|
/**
|
|
198
|
-
* Callback fired when tree
|
|
199
|
-
* @param {React.SyntheticEvent} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event.
|
|
203
|
+
* Callback fired when a given tree item is focused.
|
|
204
|
+
* @param {React.SyntheticEvent | null} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event.
|
|
200
205
|
* @param {string} itemId The id of the focused item.
|
|
201
|
-
* @param {string} value of the focused item.
|
|
202
206
|
*/
|
|
203
207
|
onItemFocus: _propTypes.default.func,
|
|
204
208
|
/**
|
|
@@ -11,17 +11,19 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
11
11
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
12
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
13
13
|
var _Collapse = _interopRequireDefault(require("@mui/material/Collapse"));
|
|
14
|
-
var _utils = require("@mui/base/utils");
|
|
15
14
|
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
16
15
|
var _createStyled = require("@mui/system/createStyled");
|
|
17
16
|
var _styles = require("@mui/material/styles");
|
|
17
|
+
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
18
|
+
var _extractEventHandlers = _interopRequireDefault(require("@mui/utils/extractEventHandlers"));
|
|
19
|
+
var _resolveComponentProps = _interopRequireDefault(require("@mui/utils/resolveComponentProps"));
|
|
20
|
+
var _useSlotProps4 = _interopRequireDefault(require("@mui/utils/useSlotProps"));
|
|
18
21
|
var _unsupportedProp = _interopRequireDefault(require("@mui/utils/unsupportedProp"));
|
|
19
22
|
var _elementTypeAcceptingRef = _interopRequireDefault(require("@mui/utils/elementTypeAcceptingRef"));
|
|
20
|
-
var _base = require("@mui/base");
|
|
21
23
|
var _zeroStyled = require("../internals/zero-styled");
|
|
22
24
|
var _TreeItemContent = require("./TreeItemContent");
|
|
23
25
|
var _treeItemClasses = require("./treeItemClasses");
|
|
24
|
-
var
|
|
26
|
+
var _TreeViewProvider = require("../internals/TreeViewProvider");
|
|
25
27
|
var _icons = require("../icons");
|
|
26
28
|
var _TreeItem2Provider = require("../TreeItem2Provider");
|
|
27
29
|
var _TreeViewItemDepthContext = require("../internals/TreeViewItemDepthContext");
|
|
@@ -50,7 +52,7 @@ const useUtilityClasses = ownerState => {
|
|
|
50
52
|
label: ['label'],
|
|
51
53
|
groupTransition: ['groupTransition']
|
|
52
54
|
};
|
|
53
|
-
return (0,
|
|
55
|
+
return (0, _composeClasses.default)(slots, _treeItemClasses.getTreeItemUtilityClass, classes);
|
|
54
56
|
};
|
|
55
57
|
const TreeItemRoot = (0, _zeroStyled.styled)('li', {
|
|
56
58
|
name: 'MuiTreeItem',
|
|
@@ -81,6 +83,7 @@ const StyledTreeItemContent = (0, _zeroStyled.styled)(_TreeItemContent.TreeItemC
|
|
|
81
83
|
width: '100%',
|
|
82
84
|
boxSizing: 'border-box',
|
|
83
85
|
// prevent width + padding to overflow
|
|
86
|
+
position: 'relative',
|
|
84
87
|
display: 'flex',
|
|
85
88
|
alignItems: 'center',
|
|
86
89
|
gap: theme.spacing(1),
|
|
@@ -175,16 +178,18 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
|
|
|
175
178
|
const {
|
|
176
179
|
icons: contextIcons,
|
|
177
180
|
runItemPlugins,
|
|
181
|
+
items: {
|
|
182
|
+
disabledItemsFocusable,
|
|
183
|
+
indentationAtItemLevel
|
|
184
|
+
},
|
|
178
185
|
selection: {
|
|
179
186
|
multiSelect
|
|
180
187
|
},
|
|
181
188
|
expansion: {
|
|
182
189
|
expansionTrigger
|
|
183
190
|
},
|
|
184
|
-
disabledItemsFocusable,
|
|
185
|
-
indentationAtItemLevel,
|
|
186
191
|
instance
|
|
187
|
-
} = (0,
|
|
192
|
+
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
188
193
|
const depthContext = React.useContext(_TreeViewItemDepthContext.TreeViewItemDepthContext);
|
|
189
194
|
const props = useThemeProps({
|
|
190
195
|
props: inProps,
|
|
@@ -215,10 +220,13 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
|
|
|
215
220
|
} = (0, _useTreeItemState.useTreeItemState)(itemId);
|
|
216
221
|
const {
|
|
217
222
|
contentRef,
|
|
218
|
-
rootRef
|
|
223
|
+
rootRef,
|
|
224
|
+
propsEnhancers
|
|
219
225
|
} = runItemPlugins(props);
|
|
220
|
-
const
|
|
221
|
-
const
|
|
226
|
+
const rootRefObject = React.useRef(null);
|
|
227
|
+
const contentRefObject = React.useRef(null);
|
|
228
|
+
const handleRootRef = (0, _useForkRef.default)(inRef, rootRef, rootRefObject);
|
|
229
|
+
const handleContentRef = (0, _useForkRef.default)(ContentProps?.ref, contentRef, contentRefObject);
|
|
222
230
|
const slots = {
|
|
223
231
|
expandIcon: inSlots?.expandIcon ?? contextIcons.slots.expandIcon ?? _icons.TreeViewExpandIcon,
|
|
224
232
|
collapseIcon: inSlots?.collapseIcon ?? contextIcons.slots.collapseIcon ?? _icons.TreeViewCollapseIcon,
|
|
@@ -242,7 +250,7 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
|
|
|
242
250
|
});
|
|
243
251
|
const classes = useUtilityClasses(ownerState);
|
|
244
252
|
const GroupTransition = slots.groupTransition ?? undefined;
|
|
245
|
-
const groupTransitionProps = (0,
|
|
253
|
+
const groupTransitionProps = (0, _useSlotProps4.default)({
|
|
246
254
|
elementType: GroupTransition,
|
|
247
255
|
ownerState: {},
|
|
248
256
|
externalSlotProps: inSlotProps?.groupTransition,
|
|
@@ -262,14 +270,14 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
|
|
|
262
270
|
}
|
|
263
271
|
};
|
|
264
272
|
const ExpansionIcon = expanded ? slots.collapseIcon : slots.expandIcon;
|
|
265
|
-
const _useSlotProps = (0,
|
|
273
|
+
const _useSlotProps = (0, _useSlotProps4.default)({
|
|
266
274
|
elementType: ExpansionIcon,
|
|
267
275
|
ownerState: {},
|
|
268
276
|
externalSlotProps: tempOwnerState => {
|
|
269
277
|
if (expanded) {
|
|
270
|
-
return (0, _extends2.default)({}, (0,
|
|
278
|
+
return (0, _extends2.default)({}, (0, _resolveComponentProps.default)(contextIcons.slotProps.collapseIcon, tempOwnerState), (0, _resolveComponentProps.default)(inSlotProps?.collapseIcon, tempOwnerState));
|
|
271
279
|
}
|
|
272
|
-
return (0, _extends2.default)({}, (0,
|
|
280
|
+
return (0, _extends2.default)({}, (0, _resolveComponentProps.default)(contextIcons.slotProps.expandIcon, tempOwnerState), (0, _resolveComponentProps.default)(inSlotProps?.expandIcon, tempOwnerState));
|
|
273
281
|
},
|
|
274
282
|
additionalProps: {
|
|
275
283
|
onClick: handleIconContainerClick
|
|
@@ -278,20 +286,20 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
|
|
|
278
286
|
expansionIconProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps, _excluded2);
|
|
279
287
|
const expansionIcon = expandable && !!ExpansionIcon ? /*#__PURE__*/(0, _jsxRuntime.jsx)(ExpansionIcon, (0, _extends2.default)({}, expansionIconProps)) : null;
|
|
280
288
|
const DisplayIcon = expandable ? undefined : slots.endIcon;
|
|
281
|
-
const _useSlotProps2 = (0,
|
|
289
|
+
const _useSlotProps2 = (0, _useSlotProps4.default)({
|
|
282
290
|
elementType: DisplayIcon,
|
|
283
291
|
ownerState: {},
|
|
284
292
|
externalSlotProps: tempOwnerState => {
|
|
285
293
|
if (expandable) {
|
|
286
294
|
return {};
|
|
287
295
|
}
|
|
288
|
-
return (0, _extends2.default)({}, (0,
|
|
296
|
+
return (0, _extends2.default)({}, (0, _resolveComponentProps.default)(contextIcons.slotProps.endIcon, tempOwnerState), (0, _resolveComponentProps.default)(inSlotProps?.endIcon, tempOwnerState));
|
|
289
297
|
}
|
|
290
298
|
}),
|
|
291
299
|
displayIconProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps2, _excluded3);
|
|
292
300
|
const displayIcon = DisplayIcon ? /*#__PURE__*/(0, _jsxRuntime.jsx)(DisplayIcon, (0, _extends2.default)({}, displayIconProps)) : null;
|
|
293
301
|
const Icon = slots.icon;
|
|
294
|
-
const _useSlotProps3 = (0,
|
|
302
|
+
const _useSlotProps3 = (0, _useSlotProps4.default)({
|
|
295
303
|
elementType: Icon,
|
|
296
304
|
ownerState: {},
|
|
297
305
|
externalSlotProps: inSlotProps?.icon
|
|
@@ -326,6 +334,21 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
|
|
|
326
334
|
};
|
|
327
335
|
const idAttribute = instance.getTreeItemIdAttribute(itemId, id);
|
|
328
336
|
const tabIndex = instance.canItemBeTabbed(itemId) ? 0 : -1;
|
|
337
|
+
const enhancedRootProps = propsEnhancers.root?.({
|
|
338
|
+
rootRefObject,
|
|
339
|
+
contentRefObject,
|
|
340
|
+
externalEventHandlers: (0, _extractEventHandlers.default)(other)
|
|
341
|
+
}) ?? {};
|
|
342
|
+
const enhancedContentProps = propsEnhancers.content?.({
|
|
343
|
+
rootRefObject,
|
|
344
|
+
contentRefObject,
|
|
345
|
+
externalEventHandlers: (0, _extractEventHandlers.default)(ContentProps)
|
|
346
|
+
}) ?? {};
|
|
347
|
+
const enhancedDragAndDropOverlayProps = propsEnhancers.dragAndDropOverlay?.({
|
|
348
|
+
rootRefObject,
|
|
349
|
+
contentRefObject,
|
|
350
|
+
externalEventHandlers: {}
|
|
351
|
+
}) ?? {};
|
|
329
352
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeItem2Provider.TreeItem2Provider, {
|
|
330
353
|
itemId: itemId,
|
|
331
354
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(TreeItemRoot, (0, _extends2.default)({
|
|
@@ -344,7 +367,8 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
|
|
|
344
367
|
ref: handleRootRef,
|
|
345
368
|
style: indentationAtItemLevel ? (0, _extends2.default)({}, other.style, {
|
|
346
369
|
'--TreeView-itemDepth': typeof depthContext === 'function' ? depthContext(itemId) : depthContext
|
|
347
|
-
}) : other.style
|
|
370
|
+
}) : other.style
|
|
371
|
+
}, enhancedRootProps, {
|
|
348
372
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(StyledTreeItemContent, (0, _extends2.default)({
|
|
349
373
|
as: ContentComponent,
|
|
350
374
|
classes: {
|
|
@@ -365,7 +389,9 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
|
|
|
365
389
|
expansionIcon: expansionIcon,
|
|
366
390
|
displayIcon: displayIcon,
|
|
367
391
|
ownerState: ownerState
|
|
368
|
-
}, ContentProps, {
|
|
392
|
+
}, ContentProps, enhancedContentProps, enhancedDragAndDropOverlayProps.action == null ? {} : {
|
|
393
|
+
dragAndDropOverlayProps: enhancedDragAndDropOverlayProps
|
|
394
|
+
}, {
|
|
369
395
|
ref: handleContentRef
|
|
370
396
|
})), children && /*#__PURE__*/(0, _jsxRuntime.jsx)(TreeItemGroup, (0, _extends2.default)({
|
|
371
397
|
as: GroupTransition
|
|
@@ -12,8 +12,9 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
12
12
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
13
13
|
var _Checkbox = _interopRequireDefault(require("@mui/material/Checkbox"));
|
|
14
14
|
var _useTreeItemState = require("./useTreeItemState");
|
|
15
|
+
var _TreeItem2DragAndDropOverlay = require("../TreeItem2DragAndDropOverlay");
|
|
15
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
|
-
const _excluded = ["classes", "className", "displayIcon", "expansionIcon", "icon", "label", "itemId", "onClick", "onMouseDown"];
|
|
17
|
+
const _excluded = ["classes", "className", "displayIcon", "expansionIcon", "icon", "label", "itemId", "onClick", "onMouseDown", "dragAndDropOverlayProps"];
|
|
17
18
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
18
19
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
19
20
|
/**
|
|
@@ -29,7 +30,8 @@ const TreeItemContent = exports.TreeItemContent = /*#__PURE__*/React.forwardRef(
|
|
|
29
30
|
label,
|
|
30
31
|
itemId,
|
|
31
32
|
onClick,
|
|
32
|
-
onMouseDown
|
|
33
|
+
onMouseDown,
|
|
34
|
+
dragAndDropOverlayProps
|
|
33
35
|
} = props,
|
|
34
36
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
35
37
|
const {
|
|
@@ -42,6 +44,7 @@ const TreeItemContent = exports.TreeItemContent = /*#__PURE__*/React.forwardRef(
|
|
|
42
44
|
handleExpansion,
|
|
43
45
|
handleSelection,
|
|
44
46
|
handleCheckboxSelection,
|
|
47
|
+
handleContentClick,
|
|
45
48
|
preventSelection,
|
|
46
49
|
expansionTrigger
|
|
47
50
|
} = (0, _useTreeItemState.useTreeItemState)(itemId);
|
|
@@ -54,6 +57,7 @@ const TreeItemContent = exports.TreeItemContent = /*#__PURE__*/React.forwardRef(
|
|
|
54
57
|
}
|
|
55
58
|
};
|
|
56
59
|
const handleClick = event => {
|
|
60
|
+
handleContentClick?.(event, itemId);
|
|
57
61
|
if (checkboxRef.current?.contains(event.target)) {
|
|
58
62
|
return;
|
|
59
63
|
}
|
|
@@ -88,7 +92,7 @@ const TreeItemContent = exports.TreeItemContent = /*#__PURE__*/React.forwardRef(
|
|
|
88
92
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
89
93
|
className: classes.label,
|
|
90
94
|
children: label
|
|
91
|
-
})]
|
|
95
|
+
}), dragAndDropOverlayProps && /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeItem2DragAndDropOverlay.TreeItem2DragAndDropOverlay, (0, _extends2.default)({}, dragAndDropOverlayProps))]
|
|
92
96
|
}))
|
|
93
97
|
);
|
|
94
98
|
});
|
|
@@ -106,6 +110,10 @@ process.env.NODE_ENV !== "production" ? TreeItemContent.propTypes = {
|
|
|
106
110
|
* The icon to display next to the tree item's label. Either a parent or end icon.
|
|
107
111
|
*/
|
|
108
112
|
displayIcon: _propTypes.default.node,
|
|
113
|
+
dragAndDropOverlayProps: _propTypes.default.shape({
|
|
114
|
+
action: _propTypes.default.oneOf(['make-child', 'move-to-parent', 'reorder-above', 'reorder-below']),
|
|
115
|
+
style: _propTypes.default.object
|
|
116
|
+
}),
|
|
109
117
|
/**
|
|
110
118
|
* The icon to display next to the tree item's label. Either an expansion or collapse icon.
|
|
111
119
|
*/
|
|
@@ -11,4 +11,4 @@ var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generat
|
|
|
11
11
|
function getTreeItemUtilityClass(slot) {
|
|
12
12
|
return (0, _generateUtilityClass.default)('MuiTreeItem', slot);
|
|
13
13
|
}
|
|
14
|
-
const treeItemClasses = exports.treeItemClasses = (0, _generateUtilityClasses.default)('MuiTreeItem', ['root', 'groupTransition', 'content', 'expanded', 'selected', 'focused', 'disabled', 'iconContainer', 'label', 'checkbox']);
|
|
14
|
+
const treeItemClasses = exports.treeItemClasses = (0, _generateUtilityClasses.default)('MuiTreeItem', ['root', 'groupTransition', 'content', 'expanded', 'selected', 'focused', 'disabled', 'iconContainer', 'label', 'checkbox', 'dragAndDropOverlay']);
|
|
@@ -4,10 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.useTreeItemState = useTreeItemState;
|
|
7
|
-
var
|
|
7
|
+
var _TreeViewProvider = require("../internals/TreeViewProvider");
|
|
8
8
|
function useTreeItemState(itemId) {
|
|
9
9
|
const {
|
|
10
10
|
instance,
|
|
11
|
+
items: {
|
|
12
|
+
onItemClick
|
|
13
|
+
},
|
|
11
14
|
selection: {
|
|
12
15
|
multiSelect,
|
|
13
16
|
checkboxSelection,
|
|
@@ -16,7 +19,7 @@ function useTreeItemState(itemId) {
|
|
|
16
19
|
expansion: {
|
|
17
20
|
expansionTrigger
|
|
18
21
|
}
|
|
19
|
-
} = (0,
|
|
22
|
+
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
20
23
|
const expandable = instance.isItemExpandable(itemId);
|
|
21
24
|
const expanded = instance.isItemExpanded(itemId);
|
|
22
25
|
const focused = instance.isItemFocused(itemId);
|
|
@@ -92,6 +95,7 @@ function useTreeItemState(itemId) {
|
|
|
92
95
|
handleExpansion,
|
|
93
96
|
handleSelection,
|
|
94
97
|
handleCheckboxSelection,
|
|
98
|
+
handleContentClick: onItemClick,
|
|
95
99
|
preventSelection,
|
|
96
100
|
expansionTrigger
|
|
97
101
|
};
|