@mui/x-tree-view 7.0.0-beta.5 → 7.0.0-beta.7
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 +252 -50
- package/RichTreeView/RichTreeView.js +23 -22
- package/RichTreeView/RichTreeView.types.d.ts +2 -1
- package/SimpleTreeView/SimpleTreeView.js +23 -22
- package/TreeItem/TreeItem.js +79 -79
- package/TreeItem/TreeItem.types.d.ts +17 -19
- package/TreeItem/treeItemClasses.d.ts +1 -1
- package/TreeItem/treeItemClasses.js +1 -1
- package/TreeItem/useTreeItemState.js +2 -2
- package/TreeItem2/TreeItem2.d.ts +18 -0
- package/TreeItem2/TreeItem2.js +301 -0
- package/TreeItem2/TreeItem2.types.d.ts +64 -0
- package/TreeItem2/TreeItem2.types.js +1 -0
- package/TreeItem2/index.d.ts +2 -0
- package/TreeItem2/index.js +1 -0
- package/TreeItem2/package.json +6 -0
- package/TreeItem2Icon/TreeItem2Icon.d.ts +7 -0
- package/TreeItem2Icon/TreeItem2Icon.js +68 -0
- package/TreeItem2Icon/TreeItem2Icon.types.d.ts +40 -0
- package/TreeItem2Icon/TreeItem2Icon.types.js +1 -0
- package/TreeItem2Icon/index.d.ts +2 -0
- package/TreeItem2Icon/index.js +1 -0
- package/TreeItem2Icon/package.json +6 -0
- package/TreeItem2Provider/TreeItem2Provider.d.ts +7 -0
- package/TreeItem2Provider/TreeItem2Provider.js +24 -0
- package/TreeItem2Provider/TreeItem2Provider.types.d.ts +6 -0
- package/TreeItem2Provider/TreeItem2Provider.types.js +1 -0
- package/TreeItem2Provider/index.d.ts +2 -0
- package/TreeItem2Provider/index.js +1 -0
- package/TreeItem2Provider/package.json +6 -0
- package/TreeView/TreeView.js +23 -22
- package/hooks/index.d.ts +1 -0
- package/hooks/index.js +2 -1
- package/hooks/useTreeItem2Utils/index.d.ts +1 -0
- package/hooks/useTreeItem2Utils/index.js +1 -0
- package/hooks/useTreeItem2Utils/useTreeItem2Utils.d.ts +15 -0
- package/hooks/useTreeItem2Utils/useTreeItem2Utils.js +61 -0
- package/hooks/useTreeViewApiRef.d.ts +2 -2
- package/index.d.ts +5 -1
- package/index.js +9 -2
- package/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +4 -2
- package/internals/hooks/useLazyRef.d.ts +1 -2
- package/internals/hooks/useLazyRef.js +1 -11
- package/internals/hooks/useOnMount.d.ts +1 -2
- package/internals/hooks/useOnMount.js +1 -7
- package/internals/hooks/useTimeout.d.ts +1 -11
- package/internals/hooks/useTimeout.js +1 -36
- package/internals/models/helpers.d.ts +1 -0
- package/internals/models/plugin.d.ts +19 -16
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +25 -25
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +11 -11
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +12 -12
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +5 -6
- package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +37 -23
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +11 -9
- package/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +31 -18
- package/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.d.ts +16 -6
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +34 -34
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +11 -11
- package/internals/useTreeView/useTreeView.js +27 -25
- package/modern/RichTreeView/RichTreeView.js +23 -22
- package/modern/SimpleTreeView/SimpleTreeView.js +23 -22
- package/modern/TreeItem/TreeItem.js +78 -78
- package/modern/TreeItem/treeItemClasses.js +1 -1
- package/modern/TreeItem/useTreeItemState.js +2 -2
- package/modern/TreeItem2/TreeItem2.js +300 -0
- package/modern/TreeItem2/TreeItem2.types.js +1 -0
- package/modern/TreeItem2/index.js +1 -0
- package/modern/TreeItem2Icon/TreeItem2Icon.js +67 -0
- package/modern/TreeItem2Icon/TreeItem2Icon.types.js +1 -0
- package/modern/TreeItem2Icon/index.js +1 -0
- package/modern/TreeItem2Provider/TreeItem2Provider.js +24 -0
- package/modern/TreeItem2Provider/TreeItem2Provider.types.js +1 -0
- package/modern/TreeItem2Provider/index.js +1 -0
- package/modern/TreeView/TreeView.js +23 -22
- package/modern/hooks/index.js +2 -1
- package/modern/hooks/useTreeItem2Utils/index.js +1 -0
- package/modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js +61 -0
- package/modern/index.js +9 -2
- package/modern/internals/hooks/useLazyRef.js +1 -11
- package/modern/internals/hooks/useOnMount.js +1 -7
- package/modern/internals/hooks/useTimeout.js +1 -36
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +24 -24
- package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +12 -12
- package/modern/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +36 -22
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +11 -9
- package/modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +31 -18
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +34 -34
- package/modern/internals/useTreeView/useTreeView.js +27 -25
- package/modern/useTreeItem2/index.js +1 -0
- package/modern/useTreeItem2/useTreeItem2.js +135 -0
- package/modern/useTreeItem2/useTreeItem2.types.js +1 -0
- package/node/RichTreeView/RichTreeView.js +23 -22
- package/node/SimpleTreeView/SimpleTreeView.js +23 -22
- package/node/TreeItem/TreeItem.js +78 -78
- package/node/TreeItem/treeItemClasses.js +1 -1
- package/node/TreeItem/useTreeItemState.js +2 -2
- package/node/TreeItem2/TreeItem2.js +308 -0
- package/node/TreeItem2/TreeItem2.types.js +5 -0
- package/node/TreeItem2/index.js +42 -0
- package/node/TreeItem2Icon/TreeItem2Icon.js +75 -0
- package/node/TreeItem2Icon/TreeItem2Icon.types.js +5 -0
- package/node/TreeItem2Icon/index.js +12 -0
- package/node/TreeItem2Provider/TreeItem2Provider.js +30 -0
- package/node/TreeItem2Provider/TreeItem2Provider.types.js +5 -0
- package/node/TreeItem2Provider/index.js +12 -0
- package/node/TreeView/TreeView.js +23 -22
- package/node/hooks/index.js +8 -1
- package/node/hooks/useTreeItem2Utils/index.js +12 -0
- package/node/hooks/useTreeItem2Utils/useTreeItem2Utils.js +68 -0
- package/node/index.js +61 -13
- package/node/internals/hooks/useLazyRef.js +7 -13
- package/node/internals/hooks/useOnMount.js +8 -10
- package/node/internals/hooks/useTimeout.js +7 -37
- package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +24 -24
- package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +12 -12
- package/node/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +36 -22
- package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +11 -9
- package/node/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +30 -17
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +34 -34
- package/node/internals/useTreeView/useTreeView.js +27 -25
- package/node/useTreeItem2/index.js +12 -0
- package/node/useTreeItem2/useTreeItem2.js +143 -0
- package/node/useTreeItem2/useTreeItem2.types.js +5 -0
- package/package.json +2 -2
- package/themeAugmentation/components.d.ts +5 -0
- package/themeAugmentation/overrides.d.ts +1 -0
- package/themeAugmentation/props.d.ts +2 -0
- package/useTreeItem2/index.d.ts +2 -0
- package/useTreeItem2/index.js +1 -0
- package/useTreeItem2/package.json +6 -0
- package/useTreeItem2/useTreeItem2.d.ts +2 -0
- package/useTreeItem2/useTreeItem2.js +138 -0
- package/useTreeItem2/useTreeItem2.types.d.ts +113 -0
- package/useTreeItem2/useTreeItem2.types.js +1 -0
|
@@ -38,6 +38,7 @@ export const useTreeView = inParams => {
|
|
|
38
38
|
});
|
|
39
39
|
const rootPropsGetters = [];
|
|
40
40
|
const contextValue = {
|
|
41
|
+
publicAPI,
|
|
41
42
|
instance: instance
|
|
42
43
|
};
|
|
43
44
|
const runPlugin = plugin => {
|
|
@@ -60,43 +61,44 @@ export const useTreeView = inParams => {
|
|
|
60
61
|
}
|
|
61
62
|
};
|
|
62
63
|
plugins.forEach(runPlugin);
|
|
63
|
-
contextValue.runItemPlugins =
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}) => {
|
|
67
|
-
let finalProps = props;
|
|
68
|
-
let finalRef = ref;
|
|
69
|
-
const itemWrappers = [];
|
|
64
|
+
contextValue.runItemPlugins = itemPluginProps => {
|
|
65
|
+
let finalRootRef = null;
|
|
66
|
+
let finalContentRef = null;
|
|
70
67
|
plugins.forEach(plugin => {
|
|
71
68
|
if (!plugin.itemPlugin) {
|
|
72
69
|
return;
|
|
73
70
|
}
|
|
74
71
|
const itemPluginResponse = plugin.itemPlugin({
|
|
75
|
-
props:
|
|
76
|
-
|
|
72
|
+
props: itemPluginProps,
|
|
73
|
+
rootRef: finalRootRef,
|
|
74
|
+
contentRef: finalContentRef
|
|
77
75
|
});
|
|
78
|
-
if (itemPluginResponse != null && itemPluginResponse.
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
if (itemPluginResponse != null && itemPluginResponse.ref) {
|
|
82
|
-
finalRef = itemPluginResponse.ref;
|
|
76
|
+
if (itemPluginResponse != null && itemPluginResponse.rootRef) {
|
|
77
|
+
finalRootRef = itemPluginResponse.rootRef;
|
|
83
78
|
}
|
|
84
|
-
if (itemPluginResponse != null && itemPluginResponse.
|
|
85
|
-
|
|
79
|
+
if (itemPluginResponse != null && itemPluginResponse.contentRef) {
|
|
80
|
+
finalContentRef = itemPluginResponse.contentRef;
|
|
86
81
|
}
|
|
87
82
|
});
|
|
88
83
|
return {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
wrapItem: children => {
|
|
92
|
-
let finalChildren = children;
|
|
93
|
-
itemWrappers.forEach(itemWrapper => {
|
|
94
|
-
finalChildren = itemWrapper(finalChildren);
|
|
95
|
-
});
|
|
96
|
-
return finalChildren;
|
|
97
|
-
}
|
|
84
|
+
contentRef: finalContentRef,
|
|
85
|
+
rootRef: finalRootRef
|
|
98
86
|
};
|
|
99
87
|
};
|
|
88
|
+
const itemWrappers = plugins.map(plugin => plugin.wrapItem).filter(wrapItem => !!wrapItem);
|
|
89
|
+
contextValue.wrapItem = ({
|
|
90
|
+
nodeId,
|
|
91
|
+
children
|
|
92
|
+
}) => {
|
|
93
|
+
let finalChildren = children;
|
|
94
|
+
itemWrappers.forEach(itemWrapper => {
|
|
95
|
+
finalChildren = itemWrapper({
|
|
96
|
+
nodeId,
|
|
97
|
+
children: finalChildren
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
return finalChildren;
|
|
101
|
+
};
|
|
100
102
|
const getRootProps = (otherHandlers = {}) => {
|
|
101
103
|
const rootProps = _extends({
|
|
102
104
|
role: 'tree',
|
|
@@ -137,7 +137,8 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
|
137
137
|
*/
|
|
138
138
|
apiRef: PropTypes.shape({
|
|
139
139
|
current: PropTypes.shape({
|
|
140
|
-
|
|
140
|
+
focusItem: PropTypes.func.isRequired,
|
|
141
|
+
getItem: PropTypes.func.isRequired
|
|
141
142
|
})
|
|
142
143
|
}),
|
|
143
144
|
/**
|
|
@@ -146,17 +147,17 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
|
146
147
|
classes: PropTypes.object,
|
|
147
148
|
className: PropTypes.string,
|
|
148
149
|
/**
|
|
149
|
-
* Expanded
|
|
150
|
+
* Expanded item ids.
|
|
150
151
|
* Used when the item's expansion is not controlled.
|
|
151
152
|
* @default []
|
|
152
153
|
*/
|
|
153
|
-
|
|
154
|
+
defaultExpandedItems: PropTypes.arrayOf(PropTypes.string),
|
|
154
155
|
/**
|
|
155
|
-
* Selected
|
|
156
|
+
* Selected item ids. (Uncontrolled)
|
|
156
157
|
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
157
158
|
* @default []
|
|
158
159
|
*/
|
|
159
|
-
|
|
160
|
+
defaultSelectedItems: PropTypes.any,
|
|
160
161
|
/**
|
|
161
162
|
* If `true`, will allow focus on disabled items.
|
|
162
163
|
* @default false
|
|
@@ -168,10 +169,10 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
|
168
169
|
*/
|
|
169
170
|
disableSelection: PropTypes.bool,
|
|
170
171
|
/**
|
|
171
|
-
* Expanded
|
|
172
|
+
* Expanded item ids.
|
|
172
173
|
* Used when the item's expansion is controlled.
|
|
173
174
|
*/
|
|
174
|
-
|
|
175
|
+
expandedItems: PropTypes.arrayOf(PropTypes.string),
|
|
175
176
|
/**
|
|
176
177
|
* Used to determine the string label for a given item.
|
|
177
178
|
*
|
|
@@ -211,42 +212,42 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
|
211
212
|
/**
|
|
212
213
|
* Callback fired when tree items are expanded/collapsed.
|
|
213
214
|
* @param {React.SyntheticEvent} event The event source of the callback.
|
|
214
|
-
* @param {array}
|
|
215
|
+
* @param {array} itemIds The ids of the expanded items.
|
|
215
216
|
*/
|
|
216
|
-
|
|
217
|
+
onExpandedItemsChange: PropTypes.func,
|
|
217
218
|
/**
|
|
218
219
|
* Callback fired when a tree item is expanded or collapsed.
|
|
219
220
|
* @param {React.SyntheticEvent} event The event source of the callback.
|
|
220
|
-
* @param {array}
|
|
221
|
-
* @param {array} isExpanded `true` if the
|
|
221
|
+
* @param {array} itemId The itemId of the modified item.
|
|
222
|
+
* @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.
|
|
222
223
|
*/
|
|
223
|
-
|
|
224
|
+
onItemExpansionToggle: PropTypes.func,
|
|
224
225
|
/**
|
|
225
226
|
* Callback fired when tree items are focused.
|
|
226
227
|
* @param {React.SyntheticEvent} event The event source of the callback **Warning**: This is a generic event not a focus event.
|
|
227
|
-
* @param {string}
|
|
228
|
-
* @param {string} value of the focused
|
|
228
|
+
* @param {string} itemId The id of the focused item.
|
|
229
|
+
* @param {string} value of the focused item.
|
|
229
230
|
*/
|
|
230
|
-
|
|
231
|
+
onItemFocus: PropTypes.func,
|
|
231
232
|
/**
|
|
232
233
|
* Callback fired when a tree item is selected or deselected.
|
|
233
234
|
* @param {React.SyntheticEvent} event The event source of the callback.
|
|
234
|
-
* @param {array}
|
|
235
|
-
* @param {array} isSelected `true` if the
|
|
235
|
+
* @param {array} itemId The itemId of the modified item.
|
|
236
|
+
* @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
|
|
236
237
|
*/
|
|
237
|
-
|
|
238
|
+
onItemSelectionToggle: PropTypes.func,
|
|
238
239
|
/**
|
|
239
240
|
* Callback fired when tree items are selected/deselected.
|
|
240
241
|
* @param {React.SyntheticEvent} event The event source of the callback
|
|
241
|
-
* @param {string[] | string}
|
|
242
|
+
* @param {string[] | string} itemIds The ids of the selected items.
|
|
242
243
|
* When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
|
|
243
244
|
*/
|
|
244
|
-
|
|
245
|
+
onSelectedItemsChange: PropTypes.func,
|
|
245
246
|
/**
|
|
246
|
-
* Selected
|
|
247
|
+
* Selected item ids. (Controlled)
|
|
247
248
|
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
248
249
|
*/
|
|
249
|
-
|
|
250
|
+
selectedItems: PropTypes.any,
|
|
250
251
|
/**
|
|
251
252
|
* The props used for each component slot.
|
|
252
253
|
* @default {}
|
|
@@ -95,7 +95,8 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
|
95
95
|
*/
|
|
96
96
|
apiRef: PropTypes.shape({
|
|
97
97
|
current: PropTypes.shape({
|
|
98
|
-
|
|
98
|
+
focusItem: PropTypes.func.isRequired,
|
|
99
|
+
getItem: PropTypes.func.isRequired
|
|
99
100
|
})
|
|
100
101
|
}),
|
|
101
102
|
/**
|
|
@@ -108,17 +109,17 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
|
108
109
|
classes: PropTypes.object,
|
|
109
110
|
className: PropTypes.string,
|
|
110
111
|
/**
|
|
111
|
-
* Expanded
|
|
112
|
+
* Expanded item ids.
|
|
112
113
|
* Used when the item's expansion is not controlled.
|
|
113
114
|
* @default []
|
|
114
115
|
*/
|
|
115
|
-
|
|
116
|
+
defaultExpandedItems: PropTypes.arrayOf(PropTypes.string),
|
|
116
117
|
/**
|
|
117
|
-
* Selected
|
|
118
|
+
* Selected item ids. (Uncontrolled)
|
|
118
119
|
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
119
120
|
* @default []
|
|
120
121
|
*/
|
|
121
|
-
|
|
122
|
+
defaultSelectedItems: PropTypes.any,
|
|
122
123
|
/**
|
|
123
124
|
* If `true`, will allow focus on disabled items.
|
|
124
125
|
* @default false
|
|
@@ -130,10 +131,10 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
|
130
131
|
*/
|
|
131
132
|
disableSelection: PropTypes.bool,
|
|
132
133
|
/**
|
|
133
|
-
* Expanded
|
|
134
|
+
* Expanded item ids.
|
|
134
135
|
* Used when the item's expansion is controlled.
|
|
135
136
|
*/
|
|
136
|
-
|
|
137
|
+
expandedItems: PropTypes.arrayOf(PropTypes.string),
|
|
137
138
|
/**
|
|
138
139
|
* This prop is used to help implement the accessibility logic.
|
|
139
140
|
* If you don't provide this prop. It falls back to a randomly generated id.
|
|
@@ -147,42 +148,42 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
|
147
148
|
/**
|
|
148
149
|
* Callback fired when tree items are expanded/collapsed.
|
|
149
150
|
* @param {React.SyntheticEvent} event The event source of the callback.
|
|
150
|
-
* @param {array}
|
|
151
|
+
* @param {array} itemIds The ids of the expanded items.
|
|
151
152
|
*/
|
|
152
|
-
|
|
153
|
+
onExpandedItemsChange: PropTypes.func,
|
|
153
154
|
/**
|
|
154
155
|
* Callback fired when a tree item is expanded or collapsed.
|
|
155
156
|
* @param {React.SyntheticEvent} event The event source of the callback.
|
|
156
|
-
* @param {array}
|
|
157
|
-
* @param {array} isExpanded `true` if the
|
|
157
|
+
* @param {array} itemId The itemId of the modified item.
|
|
158
|
+
* @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.
|
|
158
159
|
*/
|
|
159
|
-
|
|
160
|
+
onItemExpansionToggle: PropTypes.func,
|
|
160
161
|
/**
|
|
161
162
|
* Callback fired when tree items are focused.
|
|
162
163
|
* @param {React.SyntheticEvent} event The event source of the callback **Warning**: This is a generic event not a focus event.
|
|
163
|
-
* @param {string}
|
|
164
|
-
* @param {string} value of the focused
|
|
164
|
+
* @param {string} itemId The id of the focused item.
|
|
165
|
+
* @param {string} value of the focused item.
|
|
165
166
|
*/
|
|
166
|
-
|
|
167
|
+
onItemFocus: PropTypes.func,
|
|
167
168
|
/**
|
|
168
169
|
* Callback fired when a tree item is selected or deselected.
|
|
169
170
|
* @param {React.SyntheticEvent} event The event source of the callback.
|
|
170
|
-
* @param {array}
|
|
171
|
-
* @param {array} isSelected `true` if the
|
|
171
|
+
* @param {array} itemId The itemId of the modified item.
|
|
172
|
+
* @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
|
|
172
173
|
*/
|
|
173
|
-
|
|
174
|
+
onItemSelectionToggle: PropTypes.func,
|
|
174
175
|
/**
|
|
175
176
|
* Callback fired when tree items are selected/deselected.
|
|
176
177
|
* @param {React.SyntheticEvent} event The event source of the callback
|
|
177
|
-
* @param {string[] | string}
|
|
178
|
+
* @param {string[] | string} itemIds The ids of the selected items.
|
|
178
179
|
* When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
|
|
179
180
|
*/
|
|
180
|
-
|
|
181
|
+
onSelectedItemsChange: PropTypes.func,
|
|
181
182
|
/**
|
|
182
|
-
* Selected
|
|
183
|
+
* Selected item ids. (Controlled)
|
|
183
184
|
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
184
185
|
*/
|
|
185
|
-
|
|
186
|
+
selectedItems: PropTypes.any,
|
|
186
187
|
/**
|
|
187
188
|
* The props used for each component slot.
|
|
188
189
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
const _excluded = ["children", "className", "slots", "slotProps", "ContentComponent", "ContentProps", "nodeId", "id", "label", "onClick", "onMouseDown"
|
|
3
|
+
const _excluded = ["children", "className", "slots", "slotProps", "ContentComponent", "ContentProps", "nodeId", "id", "label", "onClick", "onMouseDown"],
|
|
4
4
|
_excluded2 = ["ownerState"],
|
|
5
5
|
_excluded3 = ["ownerState"],
|
|
6
6
|
_excluded4 = ["ownerState"];
|
|
@@ -9,6 +9,7 @@ import PropTypes from 'prop-types';
|
|
|
9
9
|
import clsx from 'clsx';
|
|
10
10
|
import Collapse from '@mui/material/Collapse';
|
|
11
11
|
import { resolveComponentProps, useSlotProps } from '@mui/base/utils';
|
|
12
|
+
import useForkRef from '@mui/utils/useForkRef';
|
|
12
13
|
import { alpha, styled, useThemeProps } from '@mui/material/styles';
|
|
13
14
|
import unsupportedProp from '@mui/utils/unsupportedProp';
|
|
14
15
|
import elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';
|
|
@@ -17,6 +18,7 @@ import { TreeItemContent } from './TreeItemContent';
|
|
|
17
18
|
import { treeItemClasses, getTreeItemUtilityClass } from './treeItemClasses';
|
|
18
19
|
import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';
|
|
19
20
|
import { TreeViewCollapseIcon, TreeViewExpandIcon } from '../icons';
|
|
21
|
+
import { TreeItem2Provider } from '../TreeItem2Provider';
|
|
20
22
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
21
23
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
24
|
const useUtilityClasses = ownerState => {
|
|
@@ -32,7 +34,7 @@ const useUtilityClasses = ownerState => {
|
|
|
32
34
|
disabled: ['disabled'],
|
|
33
35
|
iconContainer: ['iconContainer'],
|
|
34
36
|
label: ['label'],
|
|
35
|
-
|
|
37
|
+
groupTransition: ['groupTransition']
|
|
36
38
|
};
|
|
37
39
|
return composeClasses(slots, getTreeItemUtilityClass, classes);
|
|
38
40
|
};
|
|
@@ -116,8 +118,8 @@ const StyledTreeItemContent = styled(TreeItemContent, {
|
|
|
116
118
|
}));
|
|
117
119
|
const TreeItemGroup = styled(Collapse, {
|
|
118
120
|
name: 'MuiTreeItem',
|
|
119
|
-
slot: '
|
|
120
|
-
overridesResolver: (props, styles) => styles.
|
|
121
|
+
slot: 'GroupTransition',
|
|
122
|
+
overridesResolver: (props, styles) => styles.groupTransition
|
|
121
123
|
})({
|
|
122
124
|
margin: 0,
|
|
123
125
|
padding: 0,
|
|
@@ -144,18 +146,10 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
144
146
|
disabledItemsFocusable,
|
|
145
147
|
instance
|
|
146
148
|
} = useTreeViewContext();
|
|
147
|
-
const
|
|
149
|
+
const props = useThemeProps({
|
|
148
150
|
props: inProps,
|
|
149
151
|
name: 'MuiTreeItem'
|
|
150
152
|
});
|
|
151
|
-
const {
|
|
152
|
-
props,
|
|
153
|
-
ref,
|
|
154
|
-
wrapItem
|
|
155
|
-
} = runItemPlugins({
|
|
156
|
-
props: inPropsWithTheme,
|
|
157
|
-
ref: inRef
|
|
158
|
-
});
|
|
159
153
|
const {
|
|
160
154
|
children,
|
|
161
155
|
className,
|
|
@@ -167,16 +161,21 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
167
161
|
id,
|
|
168
162
|
label,
|
|
169
163
|
onClick,
|
|
170
|
-
onMouseDown
|
|
171
|
-
TransitionComponent = Collapse,
|
|
172
|
-
TransitionProps
|
|
164
|
+
onMouseDown
|
|
173
165
|
} = props,
|
|
174
166
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
167
|
+
const {
|
|
168
|
+
contentRef,
|
|
169
|
+
rootRef
|
|
170
|
+
} = runItemPlugins(props);
|
|
171
|
+
const handleRootRef = useForkRef(inRef, rootRef);
|
|
172
|
+
const handleContentRef = useForkRef(ContentProps?.ref, contentRef);
|
|
175
173
|
const slots = {
|
|
176
174
|
expandIcon: inSlots?.expandIcon ?? contextIcons.slots.expandIcon ?? TreeViewExpandIcon,
|
|
177
175
|
collapseIcon: inSlots?.collapseIcon ?? contextIcons.slots.collapseIcon ?? TreeViewCollapseIcon,
|
|
178
176
|
endIcon: inSlots?.endIcon ?? contextIcons.slots.endIcon,
|
|
179
|
-
icon: inSlots?.icon
|
|
177
|
+
icon: inSlots?.icon,
|
|
178
|
+
groupTransition: inSlots?.groupTransition
|
|
180
179
|
};
|
|
181
180
|
const isExpandable = reactChildren => {
|
|
182
181
|
if (Array.isArray(reactChildren)) {
|
|
@@ -196,6 +195,19 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
196
195
|
disabled
|
|
197
196
|
});
|
|
198
197
|
const classes = useUtilityClasses(ownerState);
|
|
198
|
+
const GroupTransition = slots.groupTransition ?? undefined;
|
|
199
|
+
const groupTransitionProps = useSlotProps({
|
|
200
|
+
elementType: GroupTransition,
|
|
201
|
+
ownerState: {},
|
|
202
|
+
externalSlotProps: inSlotProps?.groupTransition,
|
|
203
|
+
additionalProps: {
|
|
204
|
+
unmountOnExit: true,
|
|
205
|
+
in: expanded,
|
|
206
|
+
component: 'ul',
|
|
207
|
+
role: 'group'
|
|
208
|
+
},
|
|
209
|
+
className: classes.groupTransition
|
|
210
|
+
});
|
|
199
211
|
const ExpansionIcon = expanded ? slots.collapseIcon : slots.expandIcon;
|
|
200
212
|
const _useSlotProps = useSlotProps({
|
|
201
213
|
elementType: ExpansionIcon,
|
|
@@ -249,55 +261,54 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
249
261
|
}
|
|
250
262
|
const canBeFocused = !disabled || disabledItemsFocusable;
|
|
251
263
|
if (!focused && canBeFocused && event.currentTarget === event.target) {
|
|
252
|
-
instance.
|
|
264
|
+
instance.focusItem(event, nodeId);
|
|
253
265
|
}
|
|
254
266
|
}
|
|
255
267
|
const idAttribute = instance.getTreeItemId(nodeId, id);
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
}))
|
|
297
|
-
})
|
|
298
|
-
return wrapItem(item);
|
|
268
|
+
return /*#__PURE__*/_jsx(TreeItem2Provider, {
|
|
269
|
+
nodeId: nodeId,
|
|
270
|
+
children: /*#__PURE__*/_jsxs(TreeItemRoot, _extends({
|
|
271
|
+
className: clsx(classes.root, className),
|
|
272
|
+
role: "treeitem",
|
|
273
|
+
"aria-expanded": expandable ? expanded : undefined,
|
|
274
|
+
"aria-selected": ariaSelected,
|
|
275
|
+
"aria-disabled": disabled || undefined,
|
|
276
|
+
id: idAttribute,
|
|
277
|
+
tabIndex: -1
|
|
278
|
+
}, other, {
|
|
279
|
+
ownerState: ownerState,
|
|
280
|
+
onFocus: handleFocus,
|
|
281
|
+
ref: handleRootRef,
|
|
282
|
+
children: [/*#__PURE__*/_jsx(StyledTreeItemContent, _extends({
|
|
283
|
+
as: ContentComponent,
|
|
284
|
+
classes: {
|
|
285
|
+
root: classes.content,
|
|
286
|
+
expanded: classes.expanded,
|
|
287
|
+
selected: classes.selected,
|
|
288
|
+
focused: classes.focused,
|
|
289
|
+
disabled: classes.disabled,
|
|
290
|
+
iconContainer: classes.iconContainer,
|
|
291
|
+
label: classes.label
|
|
292
|
+
},
|
|
293
|
+
label: label,
|
|
294
|
+
nodeId: nodeId,
|
|
295
|
+
onClick: onClick,
|
|
296
|
+
onMouseDown: onMouseDown,
|
|
297
|
+
icon: icon,
|
|
298
|
+
expansionIcon: expansionIcon,
|
|
299
|
+
displayIcon: displayIcon,
|
|
300
|
+
ownerState: ownerState
|
|
301
|
+
}, ContentProps, {
|
|
302
|
+
ref: handleContentRef
|
|
303
|
+
})), children && /*#__PURE__*/_jsx(TreeItemGroup, _extends({
|
|
304
|
+
as: GroupTransition
|
|
305
|
+
}, groupTransitionProps, {
|
|
306
|
+
children: children
|
|
307
|
+
}))]
|
|
308
|
+
}))
|
|
309
|
+
});
|
|
299
310
|
});
|
|
300
|
-
TreeItem.propTypes = {
|
|
311
|
+
process.env.NODE_ENV !== "production" ? TreeItem.propTypes = {
|
|
301
312
|
// ----------------------------- Warning --------------------------------
|
|
302
313
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
303
314
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
@@ -321,12 +332,12 @@ TreeItem.propTypes = {
|
|
|
321
332
|
*/
|
|
322
333
|
ContentProps: PropTypes.object,
|
|
323
334
|
/**
|
|
324
|
-
* If `true`, the
|
|
335
|
+
* If `true`, the item is disabled.
|
|
325
336
|
* @default false
|
|
326
337
|
*/
|
|
327
338
|
disabled: PropTypes.bool,
|
|
328
339
|
/**
|
|
329
|
-
* The tree
|
|
340
|
+
* The tree item label.
|
|
330
341
|
*/
|
|
331
342
|
label: PropTypes.node,
|
|
332
343
|
/**
|
|
@@ -335,7 +346,7 @@ TreeItem.propTypes = {
|
|
|
335
346
|
nodeId: PropTypes.string.isRequired,
|
|
336
347
|
/**
|
|
337
348
|
* This prop isn't supported.
|
|
338
|
-
* Use the `
|
|
349
|
+
* Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.
|
|
339
350
|
*/
|
|
340
351
|
onFocus: unsupportedProp,
|
|
341
352
|
/**
|
|
@@ -351,16 +362,5 @@ TreeItem.propTypes = {
|
|
|
351
362
|
/**
|
|
352
363
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
353
364
|
*/
|
|
354
|
-
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
|
|
355
|
-
|
|
356
|
-
* The component used for the transition.
|
|
357
|
-
* [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.
|
|
358
|
-
* @default Collapse
|
|
359
|
-
*/
|
|
360
|
-
TransitionComponent: PropTypes.elementType,
|
|
361
|
-
/**
|
|
362
|
-
* Props applied to the transition element.
|
|
363
|
-
* By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.
|
|
364
|
-
*/
|
|
365
|
-
TransitionProps: PropTypes.object
|
|
366
|
-
};
|
|
365
|
+
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
|
|
366
|
+
} : void 0;
|
|
@@ -3,4 +3,4 @@ import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
|
|
|
3
3
|
export function getTreeItemUtilityClass(slot) {
|
|
4
4
|
return generateUtilityClass('MuiTreeItem', slot);
|
|
5
5
|
}
|
|
6
|
-
export const treeItemClasses = generateUtilityClasses('MuiTreeItem', ['root', '
|
|
6
|
+
export const treeItemClasses = generateUtilityClasses('MuiTreeItem', ['root', 'groupTransition', 'content', 'expanded', 'selected', 'focused', 'disabled', 'iconContainer', 'label']);
|
|
@@ -14,7 +14,7 @@ export function useTreeItemState(nodeId) {
|
|
|
14
14
|
const handleExpansion = event => {
|
|
15
15
|
if (!disabled) {
|
|
16
16
|
if (!focused) {
|
|
17
|
-
instance.
|
|
17
|
+
instance.focusItem(event, nodeId);
|
|
18
18
|
}
|
|
19
19
|
const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
|
|
20
20
|
|
|
@@ -27,7 +27,7 @@ export function useTreeItemState(nodeId) {
|
|
|
27
27
|
const handleSelection = event => {
|
|
28
28
|
if (!disabled) {
|
|
29
29
|
if (!focused) {
|
|
30
|
-
instance.
|
|
30
|
+
instance.focusItem(event, nodeId);
|
|
31
31
|
}
|
|
32
32
|
const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
|
|
33
33
|
if (multiple) {
|