@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
|
@@ -139,7 +139,8 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
|
139
139
|
*/
|
|
140
140
|
apiRef: PropTypes.shape({
|
|
141
141
|
current: PropTypes.shape({
|
|
142
|
-
|
|
142
|
+
focusItem: PropTypes.func.isRequired,
|
|
143
|
+
getItem: PropTypes.func.isRequired
|
|
143
144
|
})
|
|
144
145
|
}),
|
|
145
146
|
/**
|
|
@@ -148,17 +149,17 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
|
148
149
|
classes: PropTypes.object,
|
|
149
150
|
className: PropTypes.string,
|
|
150
151
|
/**
|
|
151
|
-
* Expanded
|
|
152
|
+
* Expanded item ids.
|
|
152
153
|
* Used when the item's expansion is not controlled.
|
|
153
154
|
* @default []
|
|
154
155
|
*/
|
|
155
|
-
|
|
156
|
+
defaultExpandedItems: PropTypes.arrayOf(PropTypes.string),
|
|
156
157
|
/**
|
|
157
|
-
* Selected
|
|
158
|
+
* Selected item ids. (Uncontrolled)
|
|
158
159
|
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
159
160
|
* @default []
|
|
160
161
|
*/
|
|
161
|
-
|
|
162
|
+
defaultSelectedItems: PropTypes.any,
|
|
162
163
|
/**
|
|
163
164
|
* If `true`, will allow focus on disabled items.
|
|
164
165
|
* @default false
|
|
@@ -170,10 +171,10 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
|
170
171
|
*/
|
|
171
172
|
disableSelection: PropTypes.bool,
|
|
172
173
|
/**
|
|
173
|
-
* Expanded
|
|
174
|
+
* Expanded item ids.
|
|
174
175
|
* Used when the item's expansion is controlled.
|
|
175
176
|
*/
|
|
176
|
-
|
|
177
|
+
expandedItems: PropTypes.arrayOf(PropTypes.string),
|
|
177
178
|
/**
|
|
178
179
|
* Used to determine the string label for a given item.
|
|
179
180
|
*
|
|
@@ -213,42 +214,42 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
|
213
214
|
/**
|
|
214
215
|
* Callback fired when tree items are expanded/collapsed.
|
|
215
216
|
* @param {React.SyntheticEvent} event The event source of the callback.
|
|
216
|
-
* @param {array}
|
|
217
|
+
* @param {array} itemIds The ids of the expanded items.
|
|
217
218
|
*/
|
|
218
|
-
|
|
219
|
+
onExpandedItemsChange: PropTypes.func,
|
|
219
220
|
/**
|
|
220
221
|
* Callback fired when a tree item is expanded or collapsed.
|
|
221
222
|
* @param {React.SyntheticEvent} event The event source of the callback.
|
|
222
|
-
* @param {array}
|
|
223
|
-
* @param {array} isExpanded `true` if the
|
|
223
|
+
* @param {array} itemId The itemId of the modified item.
|
|
224
|
+
* @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.
|
|
224
225
|
*/
|
|
225
|
-
|
|
226
|
+
onItemExpansionToggle: PropTypes.func,
|
|
226
227
|
/**
|
|
227
228
|
* Callback fired when tree items are focused.
|
|
228
229
|
* @param {React.SyntheticEvent} event The event source of the callback **Warning**: This is a generic event not a focus event.
|
|
229
|
-
* @param {string}
|
|
230
|
-
* @param {string} value of the focused
|
|
230
|
+
* @param {string} itemId The id of the focused item.
|
|
231
|
+
* @param {string} value of the focused item.
|
|
231
232
|
*/
|
|
232
|
-
|
|
233
|
+
onItemFocus: PropTypes.func,
|
|
233
234
|
/**
|
|
234
235
|
* Callback fired when a tree item is selected or deselected.
|
|
235
236
|
* @param {React.SyntheticEvent} event The event source of the callback.
|
|
236
|
-
* @param {array}
|
|
237
|
-
* @param {array} isSelected `true` if the
|
|
237
|
+
* @param {array} itemId The itemId of the modified item.
|
|
238
|
+
* @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
|
|
238
239
|
*/
|
|
239
|
-
|
|
240
|
+
onItemSelectionToggle: PropTypes.func,
|
|
240
241
|
/**
|
|
241
242
|
* Callback fired when tree items are selected/deselected.
|
|
242
243
|
* @param {React.SyntheticEvent} event The event source of the callback
|
|
243
|
-
* @param {string[] | string}
|
|
244
|
+
* @param {string[] | string} itemIds The ids of the selected items.
|
|
244
245
|
* When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
|
|
245
246
|
*/
|
|
246
|
-
|
|
247
|
+
onSelectedItemsChange: PropTypes.func,
|
|
247
248
|
/**
|
|
248
|
-
* Selected
|
|
249
|
+
* Selected item ids. (Controlled)
|
|
249
250
|
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
250
251
|
*/
|
|
251
|
-
|
|
252
|
+
selectedItems: PropTypes.any,
|
|
252
253
|
/**
|
|
253
254
|
* The props used for each component slot.
|
|
254
255
|
* @default {}
|
|
@@ -5,6 +5,7 @@ import { SlotComponentProps } from '@mui/base/utils';
|
|
|
5
5
|
import { RichTreeViewClasses } from './richTreeViewClasses';
|
|
6
6
|
import { DefaultTreeViewPluginParameters, DefaultTreeViewPluginSlotProps, DefaultTreeViewPluginSlots, DefaultTreeViewPlugins } from '../internals/plugins/defaultPlugins';
|
|
7
7
|
import { TreeItem, TreeItemProps } from '../TreeItem';
|
|
8
|
+
import { TreeItem2Props } from '../TreeItem2';
|
|
8
9
|
import { TreeViewItemId } from '../models';
|
|
9
10
|
import { TreeViewPublicAPI } from '../internals/models';
|
|
10
11
|
interface RichTreeViewItemSlotOwnerState {
|
|
@@ -21,7 +22,7 @@ export interface RichTreeViewSlots extends DefaultTreeViewPluginSlots {
|
|
|
21
22
|
* Custom component for the item.
|
|
22
23
|
* @default TreeItem.
|
|
23
24
|
*/
|
|
24
|
-
item?: React.JSXElementConstructor<TreeItemProps>;
|
|
25
|
+
item?: React.JSXElementConstructor<TreeItemProps> | React.JSXElementConstructor<TreeItem2Props>;
|
|
25
26
|
}
|
|
26
27
|
export interface RichTreeViewSlotProps<R extends {}, Multiple extends boolean | undefined> extends DefaultTreeViewPluginSlotProps {
|
|
27
28
|
root?: SlotComponentProps<'ul', {}, RichTreeViewProps<R, Multiple>>;
|
|
@@ -96,7 +96,8 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
|
96
96
|
*/
|
|
97
97
|
apiRef: PropTypes.shape({
|
|
98
98
|
current: PropTypes.shape({
|
|
99
|
-
|
|
99
|
+
focusItem: PropTypes.func.isRequired,
|
|
100
|
+
getItem: PropTypes.func.isRequired
|
|
100
101
|
})
|
|
101
102
|
}),
|
|
102
103
|
/**
|
|
@@ -109,17 +110,17 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
|
109
110
|
classes: PropTypes.object,
|
|
110
111
|
className: PropTypes.string,
|
|
111
112
|
/**
|
|
112
|
-
* Expanded
|
|
113
|
+
* Expanded item ids.
|
|
113
114
|
* Used when the item's expansion is not controlled.
|
|
114
115
|
* @default []
|
|
115
116
|
*/
|
|
116
|
-
|
|
117
|
+
defaultExpandedItems: PropTypes.arrayOf(PropTypes.string),
|
|
117
118
|
/**
|
|
118
|
-
* Selected
|
|
119
|
+
* Selected item ids. (Uncontrolled)
|
|
119
120
|
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
120
121
|
* @default []
|
|
121
122
|
*/
|
|
122
|
-
|
|
123
|
+
defaultSelectedItems: PropTypes.any,
|
|
123
124
|
/**
|
|
124
125
|
* If `true`, will allow focus on disabled items.
|
|
125
126
|
* @default false
|
|
@@ -131,10 +132,10 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
|
131
132
|
*/
|
|
132
133
|
disableSelection: PropTypes.bool,
|
|
133
134
|
/**
|
|
134
|
-
* Expanded
|
|
135
|
+
* Expanded item ids.
|
|
135
136
|
* Used when the item's expansion is controlled.
|
|
136
137
|
*/
|
|
137
|
-
|
|
138
|
+
expandedItems: PropTypes.arrayOf(PropTypes.string),
|
|
138
139
|
/**
|
|
139
140
|
* This prop is used to help implement the accessibility logic.
|
|
140
141
|
* If you don't provide this prop. It falls back to a randomly generated id.
|
|
@@ -148,42 +149,42 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
|
148
149
|
/**
|
|
149
150
|
* Callback fired when tree items are expanded/collapsed.
|
|
150
151
|
* @param {React.SyntheticEvent} event The event source of the callback.
|
|
151
|
-
* @param {array}
|
|
152
|
+
* @param {array} itemIds The ids of the expanded items.
|
|
152
153
|
*/
|
|
153
|
-
|
|
154
|
+
onExpandedItemsChange: PropTypes.func,
|
|
154
155
|
/**
|
|
155
156
|
* Callback fired when a tree item is expanded or collapsed.
|
|
156
157
|
* @param {React.SyntheticEvent} event The event source of the callback.
|
|
157
|
-
* @param {array}
|
|
158
|
-
* @param {array} isExpanded `true` if the
|
|
158
|
+
* @param {array} itemId The itemId of the modified item.
|
|
159
|
+
* @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.
|
|
159
160
|
*/
|
|
160
|
-
|
|
161
|
+
onItemExpansionToggle: PropTypes.func,
|
|
161
162
|
/**
|
|
162
163
|
* Callback fired when tree items are focused.
|
|
163
164
|
* @param {React.SyntheticEvent} event The event source of the callback **Warning**: This is a generic event not a focus event.
|
|
164
|
-
* @param {string}
|
|
165
|
-
* @param {string} value of the focused
|
|
165
|
+
* @param {string} itemId The id of the focused item.
|
|
166
|
+
* @param {string} value of the focused item.
|
|
166
167
|
*/
|
|
167
|
-
|
|
168
|
+
onItemFocus: PropTypes.func,
|
|
168
169
|
/**
|
|
169
170
|
* Callback fired when a tree item is selected or deselected.
|
|
170
171
|
* @param {React.SyntheticEvent} event The event source of the callback.
|
|
171
|
-
* @param {array}
|
|
172
|
-
* @param {array} isSelected `true` if the
|
|
172
|
+
* @param {array} itemId The itemId of the modified item.
|
|
173
|
+
* @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
|
|
173
174
|
*/
|
|
174
|
-
|
|
175
|
+
onItemSelectionToggle: PropTypes.func,
|
|
175
176
|
/**
|
|
176
177
|
* Callback fired when tree items are selected/deselected.
|
|
177
178
|
* @param {React.SyntheticEvent} event The event source of the callback
|
|
178
|
-
* @param {string[] | string}
|
|
179
|
+
* @param {string[] | string} itemIds The ids of the selected items.
|
|
179
180
|
* When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
|
|
180
181
|
*/
|
|
181
|
-
|
|
182
|
+
onSelectedItemsChange: PropTypes.func,
|
|
182
183
|
/**
|
|
183
|
-
* Selected
|
|
184
|
+
* Selected item ids. (Controlled)
|
|
184
185
|
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
185
186
|
*/
|
|
186
|
-
|
|
187
|
+
selectedItems: PropTypes.any,
|
|
187
188
|
/**
|
|
188
189
|
* The props used for each component slot.
|
|
189
190
|
*/
|
package/TreeItem/TreeItem.js
CHANGED
|
@@ -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,
|
|
@@ -135,7 +137,7 @@ const TreeItemGroup = styled(Collapse, {
|
|
|
135
137
|
* - [TreeItem API](https://mui.com/x/api/tree-view/tree-item/)
|
|
136
138
|
*/
|
|
137
139
|
export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps, inRef) {
|
|
138
|
-
var _ref, _inSlots$expandIcon, _ref2, _inSlots$collapseIcon, _inSlots$endIcon;
|
|
140
|
+
var _ref, _inSlots$expandIcon, _ref2, _inSlots$collapseIcon, _inSlots$endIcon, _slots$groupTransitio;
|
|
139
141
|
const {
|
|
140
142
|
icons: contextIcons,
|
|
141
143
|
runItemPlugins,
|
|
@@ -145,18 +147,10 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
145
147
|
disabledItemsFocusable,
|
|
146
148
|
instance
|
|
147
149
|
} = useTreeViewContext();
|
|
148
|
-
const
|
|
150
|
+
const props = useThemeProps({
|
|
149
151
|
props: inProps,
|
|
150
152
|
name: 'MuiTreeItem'
|
|
151
153
|
});
|
|
152
|
-
const {
|
|
153
|
-
props,
|
|
154
|
-
ref,
|
|
155
|
-
wrapItem
|
|
156
|
-
} = runItemPlugins({
|
|
157
|
-
props: inPropsWithTheme,
|
|
158
|
-
ref: inRef
|
|
159
|
-
});
|
|
160
154
|
const {
|
|
161
155
|
children,
|
|
162
156
|
className,
|
|
@@ -168,16 +162,21 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
168
162
|
id,
|
|
169
163
|
label,
|
|
170
164
|
onClick,
|
|
171
|
-
onMouseDown
|
|
172
|
-
TransitionComponent = Collapse,
|
|
173
|
-
TransitionProps
|
|
165
|
+
onMouseDown
|
|
174
166
|
} = props,
|
|
175
167
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
168
|
+
const {
|
|
169
|
+
contentRef,
|
|
170
|
+
rootRef
|
|
171
|
+
} = runItemPlugins(props);
|
|
172
|
+
const handleRootRef = useForkRef(inRef, rootRef);
|
|
173
|
+
const handleContentRef = useForkRef(ContentProps == null ? void 0 : ContentProps.ref, contentRef);
|
|
176
174
|
const slots = {
|
|
177
175
|
expandIcon: (_ref = (_inSlots$expandIcon = inSlots == null ? void 0 : inSlots.expandIcon) != null ? _inSlots$expandIcon : contextIcons.slots.expandIcon) != null ? _ref : TreeViewExpandIcon,
|
|
178
176
|
collapseIcon: (_ref2 = (_inSlots$collapseIcon = inSlots == null ? void 0 : inSlots.collapseIcon) != null ? _inSlots$collapseIcon : contextIcons.slots.collapseIcon) != null ? _ref2 : TreeViewCollapseIcon,
|
|
179
177
|
endIcon: (_inSlots$endIcon = inSlots == null ? void 0 : inSlots.endIcon) != null ? _inSlots$endIcon : contextIcons.slots.endIcon,
|
|
180
|
-
icon: inSlots == null ? void 0 : inSlots.icon
|
|
178
|
+
icon: inSlots == null ? void 0 : inSlots.icon,
|
|
179
|
+
groupTransition: inSlots == null ? void 0 : inSlots.groupTransition
|
|
181
180
|
};
|
|
182
181
|
const isExpandable = reactChildren => {
|
|
183
182
|
if (Array.isArray(reactChildren)) {
|
|
@@ -197,6 +196,19 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
197
196
|
disabled
|
|
198
197
|
});
|
|
199
198
|
const classes = useUtilityClasses(ownerState);
|
|
199
|
+
const GroupTransition = (_slots$groupTransitio = slots.groupTransition) != null ? _slots$groupTransitio : undefined;
|
|
200
|
+
const groupTransitionProps = useSlotProps({
|
|
201
|
+
elementType: GroupTransition,
|
|
202
|
+
ownerState: {},
|
|
203
|
+
externalSlotProps: inSlotProps == null ? void 0 : inSlotProps.groupTransition,
|
|
204
|
+
additionalProps: {
|
|
205
|
+
unmountOnExit: true,
|
|
206
|
+
in: expanded,
|
|
207
|
+
component: 'ul',
|
|
208
|
+
role: 'group'
|
|
209
|
+
},
|
|
210
|
+
className: classes.groupTransition
|
|
211
|
+
});
|
|
200
212
|
const ExpansionIcon = expanded ? slots.collapseIcon : slots.expandIcon;
|
|
201
213
|
const _useSlotProps = useSlotProps({
|
|
202
214
|
elementType: ExpansionIcon,
|
|
@@ -250,55 +262,54 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
250
262
|
}
|
|
251
263
|
const canBeFocused = !disabled || disabledItemsFocusable;
|
|
252
264
|
if (!focused && canBeFocused && event.currentTarget === event.target) {
|
|
253
|
-
instance.
|
|
265
|
+
instance.focusItem(event, nodeId);
|
|
254
266
|
}
|
|
255
267
|
}
|
|
256
268
|
const idAttribute = instance.getTreeItemId(nodeId, id);
|
|
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
|
-
})
|
|
299
|
-
return wrapItem(item);
|
|
269
|
+
return /*#__PURE__*/_jsx(TreeItem2Provider, {
|
|
270
|
+
nodeId: nodeId,
|
|
271
|
+
children: /*#__PURE__*/_jsxs(TreeItemRoot, _extends({
|
|
272
|
+
className: clsx(classes.root, className),
|
|
273
|
+
role: "treeitem",
|
|
274
|
+
"aria-expanded": expandable ? expanded : undefined,
|
|
275
|
+
"aria-selected": ariaSelected,
|
|
276
|
+
"aria-disabled": disabled || undefined,
|
|
277
|
+
id: idAttribute,
|
|
278
|
+
tabIndex: -1
|
|
279
|
+
}, other, {
|
|
280
|
+
ownerState: ownerState,
|
|
281
|
+
onFocus: handleFocus,
|
|
282
|
+
ref: handleRootRef,
|
|
283
|
+
children: [/*#__PURE__*/_jsx(StyledTreeItemContent, _extends({
|
|
284
|
+
as: ContentComponent,
|
|
285
|
+
classes: {
|
|
286
|
+
root: classes.content,
|
|
287
|
+
expanded: classes.expanded,
|
|
288
|
+
selected: classes.selected,
|
|
289
|
+
focused: classes.focused,
|
|
290
|
+
disabled: classes.disabled,
|
|
291
|
+
iconContainer: classes.iconContainer,
|
|
292
|
+
label: classes.label
|
|
293
|
+
},
|
|
294
|
+
label: label,
|
|
295
|
+
nodeId: nodeId,
|
|
296
|
+
onClick: onClick,
|
|
297
|
+
onMouseDown: onMouseDown,
|
|
298
|
+
icon: icon,
|
|
299
|
+
expansionIcon: expansionIcon,
|
|
300
|
+
displayIcon: displayIcon,
|
|
301
|
+
ownerState: ownerState
|
|
302
|
+
}, ContentProps, {
|
|
303
|
+
ref: handleContentRef
|
|
304
|
+
})), children && /*#__PURE__*/_jsx(TreeItemGroup, _extends({
|
|
305
|
+
as: GroupTransition
|
|
306
|
+
}, groupTransitionProps, {
|
|
307
|
+
children: children
|
|
308
|
+
}))]
|
|
309
|
+
}))
|
|
310
|
+
});
|
|
300
311
|
});
|
|
301
|
-
TreeItem.propTypes = {
|
|
312
|
+
process.env.NODE_ENV !== "production" ? TreeItem.propTypes = {
|
|
302
313
|
// ----------------------------- Warning --------------------------------
|
|
303
314
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
304
315
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
@@ -322,12 +333,12 @@ TreeItem.propTypes = {
|
|
|
322
333
|
*/
|
|
323
334
|
ContentProps: PropTypes.object,
|
|
324
335
|
/**
|
|
325
|
-
* If `true`, the
|
|
336
|
+
* If `true`, the item is disabled.
|
|
326
337
|
* @default false
|
|
327
338
|
*/
|
|
328
339
|
disabled: PropTypes.bool,
|
|
329
340
|
/**
|
|
330
|
-
* The tree
|
|
341
|
+
* The tree item label.
|
|
331
342
|
*/
|
|
332
343
|
label: PropTypes.node,
|
|
333
344
|
/**
|
|
@@ -336,7 +347,7 @@ TreeItem.propTypes = {
|
|
|
336
347
|
nodeId: PropTypes.string.isRequired,
|
|
337
348
|
/**
|
|
338
349
|
* This prop isn't supported.
|
|
339
|
-
* Use the `
|
|
350
|
+
* Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.
|
|
340
351
|
*/
|
|
341
352
|
onFocus: unsupportedProp,
|
|
342
353
|
/**
|
|
@@ -352,16 +363,5 @@ TreeItem.propTypes = {
|
|
|
352
363
|
/**
|
|
353
364
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
354
365
|
*/
|
|
355
|
-
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
|
|
356
|
-
|
|
357
|
-
* The component used for the transition.
|
|
358
|
-
* [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.
|
|
359
|
-
* @default Collapse
|
|
360
|
-
*/
|
|
361
|
-
TransitionComponent: PropTypes.elementType,
|
|
362
|
-
/**
|
|
363
|
-
* Props applied to the transition element.
|
|
364
|
-
* By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.
|
|
365
|
-
*/
|
|
366
|
-
TransitionProps: PropTypes.object
|
|
367
|
-
};
|
|
366
|
+
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
|
|
367
|
+
} : void 0;
|
|
@@ -6,29 +6,36 @@ import { SxProps } from '@mui/system';
|
|
|
6
6
|
import { TreeItemContentProps } from './TreeItemContent';
|
|
7
7
|
import { TreeItemClasses } from './treeItemClasses';
|
|
8
8
|
import { TreeViewItemId } from '../models';
|
|
9
|
+
import { SlotComponentPropsFromProps } from '../internals/models';
|
|
9
10
|
export interface TreeItemSlots {
|
|
10
11
|
/**
|
|
11
|
-
* The icon used to collapse the
|
|
12
|
+
* The icon used to collapse the item.
|
|
12
13
|
*/
|
|
13
14
|
collapseIcon?: React.ElementType;
|
|
14
15
|
/**
|
|
15
|
-
* The icon used to expand the
|
|
16
|
+
* The icon used to expand the item.
|
|
16
17
|
*/
|
|
17
18
|
expandIcon?: React.ElementType;
|
|
18
19
|
/**
|
|
19
|
-
* The icon displayed next to an end
|
|
20
|
+
* The icon displayed next to an end item.
|
|
20
21
|
*/
|
|
21
22
|
endIcon?: React.ElementType;
|
|
22
23
|
/**
|
|
23
|
-
* The icon to display next to the tree
|
|
24
|
+
* The icon to display next to the tree item's label.
|
|
24
25
|
*/
|
|
25
26
|
icon?: React.ElementType;
|
|
27
|
+
/**
|
|
28
|
+
* The component that animates to appearance / disappearance of the item's children.
|
|
29
|
+
* @default TreeItem2Group
|
|
30
|
+
*/
|
|
31
|
+
groupTransition?: React.ElementType;
|
|
26
32
|
}
|
|
27
33
|
export interface TreeItemSlotProps {
|
|
28
34
|
collapseIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
29
35
|
expandIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
30
36
|
endIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
31
37
|
icon?: SlotComponentProps<'svg', {}, {}>;
|
|
38
|
+
groupTransition?: SlotComponentPropsFromProps<TransitionProps, {}, {}>;
|
|
32
39
|
}
|
|
33
40
|
export interface TreeItemProps extends Omit<React.HTMLAttributes<HTMLLIElement>, 'onFocus'> {
|
|
34
41
|
/**
|
|
@@ -58,36 +65,27 @@ export interface TreeItemProps extends Omit<React.HTMLAttributes<HTMLLIElement>,
|
|
|
58
65
|
/**
|
|
59
66
|
* Props applied to ContentComponent.
|
|
60
67
|
*/
|
|
61
|
-
ContentProps?: React.HTMLAttributes<HTMLElement
|
|
68
|
+
ContentProps?: React.HTMLAttributes<HTMLElement> & {
|
|
69
|
+
ref?: React.Ref<HTMLElement>;
|
|
70
|
+
};
|
|
62
71
|
/**
|
|
63
|
-
* If `true`, the
|
|
72
|
+
* If `true`, the item is disabled.
|
|
64
73
|
* @default false
|
|
65
74
|
*/
|
|
66
75
|
disabled?: boolean;
|
|
67
76
|
/**
|
|
68
77
|
* This prop isn't supported.
|
|
69
|
-
* Use the `
|
|
78
|
+
* Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.
|
|
70
79
|
*/
|
|
71
80
|
onFocus?: null;
|
|
72
81
|
/**
|
|
73
|
-
* The tree
|
|
82
|
+
* The tree item label.
|
|
74
83
|
*/
|
|
75
84
|
label?: React.ReactNode;
|
|
76
85
|
/**
|
|
77
86
|
* The id of the node.
|
|
78
87
|
*/
|
|
79
88
|
nodeId: TreeViewItemId;
|
|
80
|
-
/**
|
|
81
|
-
* The component used for the transition.
|
|
82
|
-
* [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.
|
|
83
|
-
* @default Collapse
|
|
84
|
-
*/
|
|
85
|
-
TransitionComponent?: React.JSXElementConstructor<TransitionProps>;
|
|
86
|
-
/**
|
|
87
|
-
* Props applied to the transition element.
|
|
88
|
-
* By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.
|
|
89
|
-
*/
|
|
90
|
-
TransitionProps?: TransitionProps;
|
|
91
89
|
/**
|
|
92
90
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
93
91
|
*/
|
|
@@ -2,7 +2,7 @@ export interface TreeItemClasses {
|
|
|
2
2
|
/** Styles applied to the root element. */
|
|
3
3
|
root: string;
|
|
4
4
|
/** Styles applied to the transition component. */
|
|
5
|
-
|
|
5
|
+
groupTransition: string;
|
|
6
6
|
/** Styles applied to the content element. */
|
|
7
7
|
content: string;
|
|
8
8
|
/** State class applied to the content element when expanded. */
|
|
@@ -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) {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { TreeItem2Props } from './TreeItem2.types';
|
|
3
|
+
export declare const TreeItem2Root: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, Pick<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, keyof React.ClassAttributes<HTMLLIElement> | keyof React.LiHTMLAttributes<HTMLLIElement>>, {}>;
|
|
4
|
+
export declare const TreeItem2Content: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
5
|
+
export declare const TreeItem2Label: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
|
|
6
|
+
export declare const TreeItem2IconContainer: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
|
|
7
|
+
export declare const TreeItem2GroupTransition: import("@emotion/styled").StyledComponent<Pick<import("@mui/material/Collapse").CollapseProps, keyof import("@mui/material/Collapse").CollapseProps> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* Demos:
|
|
11
|
+
*
|
|
12
|
+
* - [Tree View](https://mui.com/x/react-tree-view/)
|
|
13
|
+
*
|
|
14
|
+
* API:
|
|
15
|
+
*
|
|
16
|
+
* - [TreeItem2 API](https://mui.com/x/api/tree-view/tree-item-2/)
|
|
17
|
+
*/
|
|
18
|
+
export declare const TreeItem2: React.ForwardRefExoticComponent<TreeItem2Props & React.RefAttributes<HTMLLIElement>>;
|