@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
|
@@ -7,9 +7,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.useTreeItem2 = void 0;
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
9
|
var React = _interopRequireWildcard(require("react"));
|
|
10
|
-
var
|
|
10
|
+
var _extractEventHandlers = _interopRequireDefault(require("@mui/utils/extractEventHandlers"));
|
|
11
11
|
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
12
|
-
var
|
|
12
|
+
var _TreeViewProvider = require("../internals/TreeViewProvider");
|
|
13
13
|
var _useTreeItem2Utils = require("../hooks/useTreeItem2Utils");
|
|
14
14
|
var _TreeViewItemDepthContext = require("../internals/TreeViewItemDepthContext");
|
|
15
15
|
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); }
|
|
@@ -17,6 +17,11 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
17
17
|
const useTreeItem2 = parameters => {
|
|
18
18
|
const {
|
|
19
19
|
runItemPlugins,
|
|
20
|
+
items: {
|
|
21
|
+
onItemClick,
|
|
22
|
+
disabledItemsFocusable,
|
|
23
|
+
indentationAtItemLevel
|
|
24
|
+
},
|
|
20
25
|
selection: {
|
|
21
26
|
multiSelect,
|
|
22
27
|
disableSelection,
|
|
@@ -25,11 +30,9 @@ const useTreeItem2 = parameters => {
|
|
|
25
30
|
expansion: {
|
|
26
31
|
expansionTrigger
|
|
27
32
|
},
|
|
28
|
-
disabledItemsFocusable,
|
|
29
|
-
indentationAtItemLevel,
|
|
30
33
|
instance,
|
|
31
34
|
publicAPI
|
|
32
|
-
} = (0,
|
|
35
|
+
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
33
36
|
const depthContext = React.useContext(_TreeViewItemDepthContext.TreeViewItemDepthContext);
|
|
34
37
|
const {
|
|
35
38
|
id,
|
|
@@ -40,7 +43,8 @@ const useTreeItem2 = parameters => {
|
|
|
40
43
|
} = parameters;
|
|
41
44
|
const {
|
|
42
45
|
rootRef: pluginRootRef,
|
|
43
|
-
contentRef
|
|
46
|
+
contentRef,
|
|
47
|
+
propsEnhancers
|
|
44
48
|
} = runItemPlugins(parameters);
|
|
45
49
|
const {
|
|
46
50
|
interactions,
|
|
@@ -49,8 +53,11 @@ const useTreeItem2 = parameters => {
|
|
|
49
53
|
itemId,
|
|
50
54
|
children
|
|
51
55
|
});
|
|
56
|
+
const rootRefObject = React.useRef(null);
|
|
57
|
+
const contentRefObject = React.useRef(null);
|
|
52
58
|
const idAttribute = instance.getTreeItemIdAttribute(itemId, id);
|
|
53
|
-
const handleRootRef = (0, _useForkRef.default)(rootRef, pluginRootRef);
|
|
59
|
+
const handleRootRef = (0, _useForkRef.default)(rootRef, pluginRootRef, rootRefObject);
|
|
60
|
+
const handleContentRef = (0, _useForkRef.default)(contentRef, contentRefObject);
|
|
54
61
|
const checkboxRef = React.useRef(null);
|
|
55
62
|
const createRootHandleFocus = otherHandlers => event => {
|
|
56
63
|
otherHandlers.onFocus?.(event);
|
|
@@ -78,6 +85,7 @@ const useTreeItem2 = parameters => {
|
|
|
78
85
|
};
|
|
79
86
|
const createContentHandleClick = otherHandlers => event => {
|
|
80
87
|
otherHandlers.onClick?.(event);
|
|
88
|
+
onItemClick?.(event, itemId);
|
|
81
89
|
if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target)) {
|
|
82
90
|
return;
|
|
83
91
|
}
|
|
@@ -119,7 +127,7 @@ const useTreeItem2 = parameters => {
|
|
|
119
127
|
}
|
|
120
128
|
};
|
|
121
129
|
const getRootProps = (externalProps = {}) => {
|
|
122
|
-
const externalEventHandlers = (0, _extends2.default)({}, (0,
|
|
130
|
+
const externalEventHandlers = (0, _extends2.default)({}, (0, _extractEventHandlers.default)(parameters), (0, _extractEventHandlers.default)(externalProps));
|
|
123
131
|
let ariaSelected;
|
|
124
132
|
if (multiSelect) {
|
|
125
133
|
ariaSelected = status.selected;
|
|
@@ -132,7 +140,7 @@ const useTreeItem2 = parameters => {
|
|
|
132
140
|
*/
|
|
133
141
|
ariaSelected = true;
|
|
134
142
|
}
|
|
135
|
-
const
|
|
143
|
+
const props = (0, _extends2.default)({}, externalEventHandlers, {
|
|
136
144
|
ref: handleRootRef,
|
|
137
145
|
role: 'treeitem',
|
|
138
146
|
tabIndex: instance.canItemBeTabbed(itemId) ? 0 : -1,
|
|
@@ -146,27 +154,37 @@ const useTreeItem2 = parameters => {
|
|
|
146
154
|
onKeyDown: createRootHandleKeyDown(externalEventHandlers)
|
|
147
155
|
});
|
|
148
156
|
if (indentationAtItemLevel) {
|
|
149
|
-
|
|
157
|
+
props.style = {
|
|
150
158
|
'--TreeView-itemDepth': typeof depthContext === 'function' ? depthContext(itemId) : depthContext
|
|
151
159
|
};
|
|
152
160
|
}
|
|
153
|
-
|
|
161
|
+
const enhancedRootProps = propsEnhancers.root?.({
|
|
162
|
+
rootRefObject,
|
|
163
|
+
contentRefObject,
|
|
164
|
+
externalEventHandlers
|
|
165
|
+
}) ?? {};
|
|
166
|
+
return (0, _extends2.default)({}, props, enhancedRootProps);
|
|
154
167
|
};
|
|
155
168
|
const getContentProps = (externalProps = {}) => {
|
|
156
|
-
const externalEventHandlers = (0,
|
|
157
|
-
const
|
|
158
|
-
ref:
|
|
169
|
+
const externalEventHandlers = (0, _extractEventHandlers.default)(externalProps);
|
|
170
|
+
const props = (0, _extends2.default)({}, externalEventHandlers, externalProps, {
|
|
171
|
+
ref: handleContentRef,
|
|
159
172
|
onClick: createContentHandleClick(externalEventHandlers),
|
|
160
173
|
onMouseDown: createContentHandleMouseDown(externalEventHandlers),
|
|
161
174
|
status
|
|
162
175
|
});
|
|
163
176
|
if (indentationAtItemLevel) {
|
|
164
|
-
|
|
165
|
-
}
|
|
166
|
-
|
|
177
|
+
props.indentationAtItemLevel = true;
|
|
178
|
+
}
|
|
179
|
+
const enhancedContentProps = propsEnhancers.content?.({
|
|
180
|
+
rootRefObject,
|
|
181
|
+
contentRefObject,
|
|
182
|
+
externalEventHandlers
|
|
183
|
+
}) ?? {};
|
|
184
|
+
return (0, _extends2.default)({}, props, enhancedContentProps);
|
|
167
185
|
};
|
|
168
186
|
const getCheckboxProps = (externalProps = {}) => {
|
|
169
|
-
const externalEventHandlers = (0,
|
|
187
|
+
const externalEventHandlers = (0, _extractEventHandlers.default)(externalProps);
|
|
170
188
|
return (0, _extends2.default)({}, externalEventHandlers, {
|
|
171
189
|
visible: checkboxSelection,
|
|
172
190
|
ref: checkboxRef,
|
|
@@ -178,19 +196,19 @@ const useTreeItem2 = parameters => {
|
|
|
178
196
|
});
|
|
179
197
|
};
|
|
180
198
|
const getLabelProps = (externalProps = {}) => {
|
|
181
|
-
const externalEventHandlers = (0, _extends2.default)({}, (0,
|
|
199
|
+
const externalEventHandlers = (0, _extends2.default)({}, (0, _extractEventHandlers.default)(externalProps));
|
|
182
200
|
return (0, _extends2.default)({}, externalEventHandlers, {
|
|
183
201
|
children: label
|
|
184
202
|
}, externalProps);
|
|
185
203
|
};
|
|
186
204
|
const getIconContainerProps = (externalProps = {}) => {
|
|
187
|
-
const externalEventHandlers = (0,
|
|
205
|
+
const externalEventHandlers = (0, _extractEventHandlers.default)(externalProps);
|
|
188
206
|
return (0, _extends2.default)({}, externalEventHandlers, externalProps, {
|
|
189
207
|
onClick: createIconContainerHandleClick(externalEventHandlers)
|
|
190
208
|
});
|
|
191
209
|
};
|
|
192
210
|
const getGroupTransitionProps = (externalProps = {}) => {
|
|
193
|
-
const externalEventHandlers = (0,
|
|
211
|
+
const externalEventHandlers = (0, _extractEventHandlers.default)(externalProps);
|
|
194
212
|
const response = (0, _extends2.default)({}, externalEventHandlers, {
|
|
195
213
|
unmountOnExit: true,
|
|
196
214
|
component: 'ul',
|
|
@@ -203,6 +221,15 @@ const useTreeItem2 = parameters => {
|
|
|
203
221
|
}
|
|
204
222
|
return response;
|
|
205
223
|
};
|
|
224
|
+
const getDragAndDropOverlayProps = (externalProps = {}) => {
|
|
225
|
+
const externalEventHandlers = (0, _extends2.default)({}, (0, _extractEventHandlers.default)(externalProps));
|
|
226
|
+
const enhancedDragAndDropOverlayProps = propsEnhancers.dragAndDropOverlay?.({
|
|
227
|
+
rootRefObject,
|
|
228
|
+
contentRefObject,
|
|
229
|
+
externalEventHandlers
|
|
230
|
+
}) ?? {};
|
|
231
|
+
return (0, _extends2.default)({}, externalProps, enhancedDragAndDropOverlayProps);
|
|
232
|
+
};
|
|
206
233
|
return {
|
|
207
234
|
getRootProps,
|
|
208
235
|
getContentProps,
|
|
@@ -210,6 +237,7 @@ const useTreeItem2 = parameters => {
|
|
|
210
237
|
getIconContainerProps,
|
|
211
238
|
getCheckboxProps,
|
|
212
239
|
getLabelProps,
|
|
240
|
+
getDragAndDropOverlayProps,
|
|
213
241
|
rootRef: handleRootRef,
|
|
214
242
|
status,
|
|
215
243
|
publicAPI
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-tree-view",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.12.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,15 +33,14 @@
|
|
|
33
33
|
"directory": "packages/x-tree-view"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@babel/runtime": "^7.
|
|
37
|
-
"@mui/
|
|
38
|
-
"@mui/
|
|
39
|
-
"@mui/utils": "^5.16.2",
|
|
36
|
+
"@babel/runtime": "^7.25.0",
|
|
37
|
+
"@mui/system": "^5.16.5",
|
|
38
|
+
"@mui/utils": "^5.16.5",
|
|
40
39
|
"@types/react-transition-group": "^4.4.10",
|
|
41
40
|
"clsx": "^2.1.1",
|
|
42
41
|
"prop-types": "^15.8.1",
|
|
43
42
|
"react-transition-group": "^4.4.5",
|
|
44
|
-
"@mui/x-internals": "7.
|
|
43
|
+
"@mui/x-internals": "7.12.0"
|
|
45
44
|
},
|
|
46
45
|
"peerDependencies": {
|
|
47
46
|
"@emotion/react": "^11.9.0",
|
package/useTreeItem2/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { useTreeItem2 as unstable_useTreeItem2 } from './useTreeItem2';
|
|
2
|
-
export type { UseTreeItem2Parameters, UseTreeItem2ReturnValue, UseTreeItem2Status, UseTreeItem2ContentSlotOwnProps, } from './useTreeItem2.types';
|
|
2
|
+
export type { UseTreeItem2Parameters, UseTreeItem2ReturnValue, UseTreeItem2Status, UseTreeItem2RootSlotOwnProps, UseTreeItem2ContentSlotOwnProps, UseTreeItem2LabelSlotOwnProps, UseTreeItem2IconContainerSlotOwnProps, UseTreeItem2GroupTransitionSlotOwnProps, UseTreeItem2DragAndDropOverlaySlotOwnProps, } from './useTreeItem2.types';
|
|
@@ -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
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { TreeViewItemId } from '../models';
|
|
3
|
-
import { MuiCancellableEventHandler } from '../internals/models
|
|
4
|
-
import { TreeViewPublicAPI } from '../internals/models';
|
|
3
|
+
import { TreeViewPublicAPI, MuiCancellableEventHandler } from '../internals/models';
|
|
5
4
|
import { UseTreeViewSelectionSignature } from '../internals/plugins/useTreeViewSelection';
|
|
6
5
|
import { UseTreeViewItemsSignature } from '../internals/plugins/useTreeViewItems';
|
|
7
6
|
import { UseTreeViewFocusSignature } from '../internals/plugins/useTreeViewFocus';
|
|
@@ -32,7 +31,7 @@ export interface UseTreeItem2Parameters {
|
|
|
32
31
|
*/
|
|
33
32
|
children?: React.ReactNode;
|
|
34
33
|
}
|
|
35
|
-
export interface
|
|
34
|
+
export interface UseTreeItem2RootSlotPropsFromUseTreeItem {
|
|
36
35
|
role: 'treeitem';
|
|
37
36
|
tabIndex: 0 | -1;
|
|
38
37
|
id: string;
|
|
@@ -48,8 +47,10 @@ export interface UseTreeItem2RootSlotOwnProps {
|
|
|
48
47
|
*/
|
|
49
48
|
style?: React.CSSProperties;
|
|
50
49
|
}
|
|
50
|
+
export interface UseTreeItem2RootSlotOwnProps extends UseTreeItem2RootSlotPropsFromUseTreeItem {
|
|
51
|
+
}
|
|
51
52
|
export type UseTreeItem2RootSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItem2RootSlotOwnProps;
|
|
52
|
-
export interface
|
|
53
|
+
export interface UseTreeItem2ContentSlotPropsFromUseTreeItem {
|
|
53
54
|
onClick: MuiCancellableEventHandler<React.MouseEvent>;
|
|
54
55
|
onMouseDown: MuiCancellableEventHandler<React.MouseEvent>;
|
|
55
56
|
ref: React.RefCallback<HTMLDivElement> | null;
|
|
@@ -59,6 +60,8 @@ export interface UseTreeItem2ContentSlotOwnProps {
|
|
|
59
60
|
*/
|
|
60
61
|
indentationAtItemLevel?: true;
|
|
61
62
|
}
|
|
63
|
+
export interface UseTreeItem2ContentSlotOwnProps extends UseTreeItem2ContentSlotPropsFromUseTreeItem {
|
|
64
|
+
}
|
|
62
65
|
export type UseTreeItem2ContentSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItem2ContentSlotOwnProps;
|
|
63
66
|
export interface UseTreeItem2IconContainerSlotOwnProps {
|
|
64
67
|
onClick: MuiCancellableEventHandler<React.MouseEvent>;
|
|
@@ -89,6 +92,9 @@ export interface UseTreeItem2GroupTransitionSlotOwnProps {
|
|
|
89
92
|
indentationAtItemLevel?: true;
|
|
90
93
|
}
|
|
91
94
|
export type UseTreeItem2GroupTransitionSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItem2GroupTransitionSlotOwnProps;
|
|
95
|
+
export interface UseTreeItem2DragAndDropOverlaySlotOwnProps {
|
|
96
|
+
}
|
|
97
|
+
export type UseTreeItem2DragAndDropOverlaySlotProps<ExternalProps = {}> = ExternalProps & UseTreeItem2DragAndDropOverlaySlotOwnProps;
|
|
92
98
|
export interface UseTreeItem2Status {
|
|
93
99
|
expandable: boolean;
|
|
94
100
|
expanded: boolean;
|
|
@@ -133,6 +139,13 @@ export interface UseTreeItem2ReturnValue<TSignatures extends UseTreeItem2Minimal
|
|
|
133
139
|
* @returns {UseTreeItem2GroupTransitionSlotProps<ExternalProps>} Props that should be spread on the GroupTransition slot
|
|
134
140
|
*/
|
|
135
141
|
getGroupTransitionProps: <ExternalProps extends Record<string, any> = {}>(externalProps?: ExternalProps) => UseTreeItem2GroupTransitionSlotProps<ExternalProps>;
|
|
142
|
+
/**
|
|
143
|
+
* Resolver for the DragAndDropOverlay slot's props.
|
|
144
|
+
* Warning: This slot is only useful when using the `RichTreeViewPro` component.
|
|
145
|
+
* @param {ExternalProps} externalProps Additional props for the DragAndDropOverlay slot
|
|
146
|
+
* @returns {UseTreeItem2DragAndDropOverlaySlotProps<ExternalProps>} Props that should be spread on the DragAndDropOverlay slot
|
|
147
|
+
*/
|
|
148
|
+
getDragAndDropOverlayProps: <ExternalProps extends Record<string, any> = {}>(externalProps?: ExternalProps) => UseTreeItem2DragAndDropOverlaySlotProps<ExternalProps>;
|
|
136
149
|
/**
|
|
137
150
|
* A ref to the component's root DOM element.
|
|
138
151
|
*/
|