@mui/x-tree-view 7.0.0-beta.6 → 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 +117 -1
- package/RichTreeView/RichTreeView.js +22 -22
- package/RichTreeView/RichTreeView.types.d.ts +2 -1
- package/SimpleTreeView/SimpleTreeView.js +22 -22
- package/TreeItem/TreeItem.js +57 -53
- package/TreeItem/TreeItem.types.d.ts +10 -8
- 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 +22 -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/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/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 -5
- package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +17 -17
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +11 -9
- package/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +2 -2
- 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 +22 -22
- package/modern/SimpleTreeView/SimpleTreeView.js +22 -22
- package/modern/TreeItem/TreeItem.js +57 -53
- 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 +22 -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 +16 -16
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +11 -9
- package/modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +2 -2
- 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 +22 -22
- package/node/SimpleTreeView/SimpleTreeView.js +22 -22
- package/node/TreeItem/TreeItem.js +57 -53
- 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 +22 -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 +16 -16
- package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +11 -9
- package/node/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +2 -2
- 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 +1 -1
- 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
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
+
const _excluded = ["id", "nodeId", "label", "disabled", "children", "slots", "slotProps"];
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import clsx from 'clsx';
|
|
7
|
+
import unsupportedProp from '@mui/utils/unsupportedProp';
|
|
8
|
+
import { alpha, styled, useThemeProps } from '@mui/material/styles';
|
|
9
|
+
import Collapse from '@mui/material/Collapse';
|
|
10
|
+
import { useSlotProps } from '@mui/base/utils';
|
|
11
|
+
import { shouldForwardProp } from '@mui/system';
|
|
12
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
13
|
+
import { unstable_useTreeItem2 as useTreeItem2 } from '../useTreeItem2';
|
|
14
|
+
import { getTreeItemUtilityClass, treeItemClasses } from '../TreeItem';
|
|
15
|
+
import { TreeItem2Icon } from '../TreeItem2Icon';
|
|
16
|
+
import { TreeItem2Provider } from '../TreeItem2Provider';
|
|
17
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
18
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
19
|
+
export const TreeItem2Root = styled('li', {
|
|
20
|
+
name: 'MuiTreeItem2',
|
|
21
|
+
slot: 'Root',
|
|
22
|
+
overridesResolver: (props, styles) => styles.root
|
|
23
|
+
})({
|
|
24
|
+
listStyle: 'none',
|
|
25
|
+
margin: 0,
|
|
26
|
+
padding: 0,
|
|
27
|
+
outline: 0
|
|
28
|
+
});
|
|
29
|
+
export const TreeItem2Content = styled('div', {
|
|
30
|
+
name: 'MuiTreeItem2',
|
|
31
|
+
slot: 'Content',
|
|
32
|
+
overridesResolver: (props, styles) => styles.content,
|
|
33
|
+
shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'status'
|
|
34
|
+
})(({
|
|
35
|
+
theme
|
|
36
|
+
}) => ({
|
|
37
|
+
padding: theme.spacing(0.5, 1),
|
|
38
|
+
borderRadius: theme.shape.borderRadius,
|
|
39
|
+
width: '100%',
|
|
40
|
+
boxSizing: 'border-box',
|
|
41
|
+
// prevent width + padding to overflow
|
|
42
|
+
display: 'flex',
|
|
43
|
+
alignItems: 'center',
|
|
44
|
+
gap: theme.spacing(1),
|
|
45
|
+
cursor: 'pointer',
|
|
46
|
+
WebkitTapHighlightColor: 'transparent',
|
|
47
|
+
'&:hover': {
|
|
48
|
+
backgroundColor: (theme.vars || theme).palette.action.hover,
|
|
49
|
+
// Reset on touch devices, it doesn't add specificity
|
|
50
|
+
'@media (hover: none)': {
|
|
51
|
+
backgroundColor: 'transparent'
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
[`& .${treeItemClasses.groupTransition}`]: {
|
|
55
|
+
margin: 0,
|
|
56
|
+
padding: 0,
|
|
57
|
+
paddingLeft: 12
|
|
58
|
+
},
|
|
59
|
+
variants: [{
|
|
60
|
+
props: ({
|
|
61
|
+
status
|
|
62
|
+
}) => status.disabled,
|
|
63
|
+
style: {
|
|
64
|
+
opacity: (theme.vars || theme).palette.action.disabledOpacity,
|
|
65
|
+
backgroundColor: 'transparent'
|
|
66
|
+
}
|
|
67
|
+
}, {
|
|
68
|
+
props: ({
|
|
69
|
+
status
|
|
70
|
+
}) => status.focused,
|
|
71
|
+
style: {
|
|
72
|
+
backgroundColor: (theme.vars || theme).palette.action.focus
|
|
73
|
+
}
|
|
74
|
+
}, {
|
|
75
|
+
props: ({
|
|
76
|
+
status
|
|
77
|
+
}) => status.selected,
|
|
78
|
+
style: {
|
|
79
|
+
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),
|
|
80
|
+
'&:hover': {
|
|
81
|
+
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),
|
|
82
|
+
// Reset on touch devices, it doesn't add specificity
|
|
83
|
+
'@media (hover: none)': {
|
|
84
|
+
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}, {
|
|
89
|
+
props: ({
|
|
90
|
+
status
|
|
91
|
+
}) => status.selected && status.focused,
|
|
92
|
+
style: {
|
|
93
|
+
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)
|
|
94
|
+
}
|
|
95
|
+
}]
|
|
96
|
+
}));
|
|
97
|
+
export const TreeItem2Label = styled('div', {
|
|
98
|
+
name: 'MuiTreeItem2',
|
|
99
|
+
slot: 'Label',
|
|
100
|
+
overridesResolver: (props, styles) => styles.label
|
|
101
|
+
})(({
|
|
102
|
+
theme
|
|
103
|
+
}) => _extends({
|
|
104
|
+
width: '100%',
|
|
105
|
+
boxSizing: 'border-box',
|
|
106
|
+
// prevent width + padding to overflow
|
|
107
|
+
// fixes overflow - see https://github.com/mui/material-ui/issues/27372
|
|
108
|
+
minWidth: 0,
|
|
109
|
+
position: 'relative'
|
|
110
|
+
}, theme.typography.body1));
|
|
111
|
+
export const TreeItem2IconContainer = styled('div', {
|
|
112
|
+
name: 'MuiTreeItem2',
|
|
113
|
+
slot: 'IconContainer',
|
|
114
|
+
overridesResolver: (props, styles) => styles.iconContainer
|
|
115
|
+
})({
|
|
116
|
+
width: 16,
|
|
117
|
+
display: 'flex',
|
|
118
|
+
flexShrink: 0,
|
|
119
|
+
justifyContent: 'center',
|
|
120
|
+
'& svg': {
|
|
121
|
+
fontSize: 18
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
export const TreeItem2GroupTransition = styled(Collapse, {
|
|
125
|
+
name: 'MuiTreeItem2GroupTransition',
|
|
126
|
+
slot: 'GroupTransition',
|
|
127
|
+
overridesResolver: (props, styles) => styles.groupTransition
|
|
128
|
+
})({
|
|
129
|
+
margin: 0,
|
|
130
|
+
padding: 0,
|
|
131
|
+
paddingLeft: 12
|
|
132
|
+
});
|
|
133
|
+
const useUtilityClasses = ownerState => {
|
|
134
|
+
const {
|
|
135
|
+
classes
|
|
136
|
+
} = ownerState;
|
|
137
|
+
const slots = {
|
|
138
|
+
root: ['root'],
|
|
139
|
+
content: ['content'],
|
|
140
|
+
expanded: ['expanded'],
|
|
141
|
+
selected: ['selected'],
|
|
142
|
+
focused: ['focused'],
|
|
143
|
+
disabled: ['disabled'],
|
|
144
|
+
iconContainer: ['iconContainer'],
|
|
145
|
+
label: ['label'],
|
|
146
|
+
groupTransition: ['groupTransition']
|
|
147
|
+
};
|
|
148
|
+
return composeClasses(slots, getTreeItemUtilityClass, classes);
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
*
|
|
153
|
+
* Demos:
|
|
154
|
+
*
|
|
155
|
+
* - [Tree View](https://mui.com/x/react-tree-view/)
|
|
156
|
+
*
|
|
157
|
+
* API:
|
|
158
|
+
*
|
|
159
|
+
* - [TreeItem2 API](https://mui.com/x/api/tree-view/tree-item-2/)
|
|
160
|
+
*/
|
|
161
|
+
export const TreeItem2 = /*#__PURE__*/React.forwardRef(function TreeItem2(inProps, forwardedRef) {
|
|
162
|
+
var _slots$root, _slots$content, _slots$iconContainer, _slots$label, _slots$groupTransitio;
|
|
163
|
+
const props = useThemeProps({
|
|
164
|
+
props: inProps,
|
|
165
|
+
name: 'MuiTreeItem2'
|
|
166
|
+
});
|
|
167
|
+
const {
|
|
168
|
+
id,
|
|
169
|
+
nodeId,
|
|
170
|
+
label,
|
|
171
|
+
disabled,
|
|
172
|
+
children,
|
|
173
|
+
slots = {},
|
|
174
|
+
slotProps = {}
|
|
175
|
+
} = props,
|
|
176
|
+
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
177
|
+
const {
|
|
178
|
+
getRootProps,
|
|
179
|
+
getContentProps,
|
|
180
|
+
getIconContainerProps,
|
|
181
|
+
getLabelProps,
|
|
182
|
+
getGroupTransitionProps,
|
|
183
|
+
status
|
|
184
|
+
} = useTreeItem2({
|
|
185
|
+
id,
|
|
186
|
+
nodeId,
|
|
187
|
+
children,
|
|
188
|
+
label,
|
|
189
|
+
disabled
|
|
190
|
+
});
|
|
191
|
+
const ownerState = _extends({}, props, status);
|
|
192
|
+
const classes = useUtilityClasses(ownerState);
|
|
193
|
+
const Root = (_slots$root = slots.root) != null ? _slots$root : TreeItem2Root;
|
|
194
|
+
const rootProps = useSlotProps({
|
|
195
|
+
elementType: Root,
|
|
196
|
+
getSlotProps: getRootProps,
|
|
197
|
+
externalForwardedProps: other,
|
|
198
|
+
externalSlotProps: slotProps.root,
|
|
199
|
+
additionalProps: {
|
|
200
|
+
ref: forwardedRef
|
|
201
|
+
},
|
|
202
|
+
ownerState: {},
|
|
203
|
+
className: classes.root
|
|
204
|
+
});
|
|
205
|
+
const Content = (_slots$content = slots.content) != null ? _slots$content : TreeItem2Content;
|
|
206
|
+
const contentProps = useSlotProps({
|
|
207
|
+
elementType: Content,
|
|
208
|
+
getSlotProps: getContentProps,
|
|
209
|
+
externalSlotProps: slotProps.content,
|
|
210
|
+
ownerState: {},
|
|
211
|
+
className: clsx(classes.content, status.expanded && classes.expanded, status.selected && classes.selected, status.focused && classes.focused, status.disabled && classes.disabled)
|
|
212
|
+
});
|
|
213
|
+
const IconContainer = (_slots$iconContainer = slots.iconContainer) != null ? _slots$iconContainer : TreeItem2IconContainer;
|
|
214
|
+
const iconContainerProps = useSlotProps({
|
|
215
|
+
elementType: IconContainer,
|
|
216
|
+
getSlotProps: getIconContainerProps,
|
|
217
|
+
externalSlotProps: slotProps.iconContainer,
|
|
218
|
+
ownerState: {},
|
|
219
|
+
className: classes.iconContainer
|
|
220
|
+
});
|
|
221
|
+
const Label = (_slots$label = slots.label) != null ? _slots$label : TreeItem2Label;
|
|
222
|
+
const labelProps = useSlotProps({
|
|
223
|
+
elementType: Label,
|
|
224
|
+
getSlotProps: getLabelProps,
|
|
225
|
+
externalSlotProps: slotProps.label,
|
|
226
|
+
ownerState: {},
|
|
227
|
+
className: classes.label
|
|
228
|
+
});
|
|
229
|
+
const GroupTransition = (_slots$groupTransitio = slots.groupTransition) != null ? _slots$groupTransitio : undefined;
|
|
230
|
+
const groupTransitionProps = useSlotProps({
|
|
231
|
+
elementType: GroupTransition,
|
|
232
|
+
getSlotProps: getGroupTransitionProps,
|
|
233
|
+
externalSlotProps: slotProps.groupTransition,
|
|
234
|
+
ownerState: {},
|
|
235
|
+
className: classes.groupTransition
|
|
236
|
+
});
|
|
237
|
+
return /*#__PURE__*/_jsx(TreeItem2Provider, {
|
|
238
|
+
nodeId: nodeId,
|
|
239
|
+
children: /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {
|
|
240
|
+
children: [/*#__PURE__*/_jsxs(Content, _extends({}, contentProps, {
|
|
241
|
+
children: [/*#__PURE__*/_jsx(IconContainer, _extends({}, iconContainerProps, {
|
|
242
|
+
children: /*#__PURE__*/_jsx(TreeItem2Icon, {
|
|
243
|
+
status: status,
|
|
244
|
+
slots: slots,
|
|
245
|
+
slotProps: slotProps
|
|
246
|
+
})
|
|
247
|
+
})), /*#__PURE__*/_jsx(Label, _extends({}, labelProps))]
|
|
248
|
+
})), children && /*#__PURE__*/_jsx(TreeItem2GroupTransition, _extends({
|
|
249
|
+
as: GroupTransition
|
|
250
|
+
}, groupTransitionProps))]
|
|
251
|
+
}))
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
process.env.NODE_ENV !== "production" ? TreeItem2.propTypes = {
|
|
255
|
+
// ----------------------------- Warning --------------------------------
|
|
256
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
257
|
+
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
258
|
+
// ----------------------------------------------------------------------
|
|
259
|
+
/**
|
|
260
|
+
* The content of the component.
|
|
261
|
+
*/
|
|
262
|
+
children: PropTypes.node,
|
|
263
|
+
/**
|
|
264
|
+
* Override or extend the styles applied to the component.
|
|
265
|
+
*/
|
|
266
|
+
classes: PropTypes.object,
|
|
267
|
+
className: PropTypes.string,
|
|
268
|
+
/**
|
|
269
|
+
* If `true`, the node is disabled.
|
|
270
|
+
* @default false
|
|
271
|
+
*/
|
|
272
|
+
disabled: PropTypes.bool,
|
|
273
|
+
/**
|
|
274
|
+
* The id attribute of the node. If not provided, it will be generated.
|
|
275
|
+
*/
|
|
276
|
+
id: PropTypes.string,
|
|
277
|
+
/**
|
|
278
|
+
* The label of the node.
|
|
279
|
+
*/
|
|
280
|
+
label: PropTypes.node,
|
|
281
|
+
/**
|
|
282
|
+
* The id of the node.
|
|
283
|
+
* Must be unique.
|
|
284
|
+
*/
|
|
285
|
+
nodeId: PropTypes.string.isRequired,
|
|
286
|
+
/**
|
|
287
|
+
* This prop isn't supported.
|
|
288
|
+
* Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.
|
|
289
|
+
*/
|
|
290
|
+
onFocus: unsupportedProp,
|
|
291
|
+
/**
|
|
292
|
+
* The props used for each component slot.
|
|
293
|
+
* @default {}
|
|
294
|
+
*/
|
|
295
|
+
slotProps: PropTypes.object,
|
|
296
|
+
/**
|
|
297
|
+
* Overridable component slots.
|
|
298
|
+
* @default {}
|
|
299
|
+
*/
|
|
300
|
+
slots: PropTypes.object
|
|
301
|
+
} : void 0;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { SlotComponentProps } from '@mui/base/utils';
|
|
3
|
+
import { UseTreeItem2Parameters, UseTreeItem2Status } from '../useTreeItem2';
|
|
4
|
+
import { TreeItemClasses } from '../TreeItem';
|
|
5
|
+
import { TreeItem2IconSlotProps, TreeItem2IconSlots } from '../TreeItem2Icon';
|
|
6
|
+
export interface TreeItem2Slots extends TreeItem2IconSlots {
|
|
7
|
+
/**
|
|
8
|
+
* The component that renders the root.
|
|
9
|
+
* @default TreeItem2Root
|
|
10
|
+
*/
|
|
11
|
+
root?: React.ElementType;
|
|
12
|
+
/**
|
|
13
|
+
* The component that renders the content of the item.
|
|
14
|
+
* (e.g.: everything related to this item, not to its children).
|
|
15
|
+
* @default TreeItem2Content
|
|
16
|
+
*/
|
|
17
|
+
content?: React.ElementType;
|
|
18
|
+
/**
|
|
19
|
+
* The component that renders the children of the item.
|
|
20
|
+
* @default TreeItem2GroupTransition
|
|
21
|
+
*/
|
|
22
|
+
groupTransition?: React.ElementType;
|
|
23
|
+
/**
|
|
24
|
+
* The component that renders the icon.
|
|
25
|
+
* @default TreeItem2IconContainer
|
|
26
|
+
*/
|
|
27
|
+
iconContainer?: React.ElementType;
|
|
28
|
+
/**
|
|
29
|
+
* The component that renders the item label.
|
|
30
|
+
* @default TreeItem2Label
|
|
31
|
+
*/
|
|
32
|
+
label?: React.ElementType;
|
|
33
|
+
}
|
|
34
|
+
export interface TreeItem2SlotProps extends TreeItem2IconSlotProps {
|
|
35
|
+
root?: SlotComponentProps<'li', {}, {}>;
|
|
36
|
+
content?: SlotComponentProps<'div', {}, {}>;
|
|
37
|
+
groupTransition?: SlotComponentProps<'div', {}, {}>;
|
|
38
|
+
iconContainer?: SlotComponentProps<'div', {}, {}>;
|
|
39
|
+
label?: SlotComponentProps<'div', {}, {}>;
|
|
40
|
+
}
|
|
41
|
+
export interface TreeItem2Props extends Omit<UseTreeItem2Parameters, 'rootRef'>, Omit<React.HTMLAttributes<HTMLLIElement>, 'onFocus'> {
|
|
42
|
+
className?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Override or extend the styles applied to the component.
|
|
45
|
+
*/
|
|
46
|
+
classes?: Partial<TreeItemClasses>;
|
|
47
|
+
/**
|
|
48
|
+
* Overridable component slots.
|
|
49
|
+
* @default {}
|
|
50
|
+
*/
|
|
51
|
+
slots?: TreeItem2Slots;
|
|
52
|
+
/**
|
|
53
|
+
* The props used for each component slot.
|
|
54
|
+
* @default {}
|
|
55
|
+
*/
|
|
56
|
+
slotProps?: TreeItem2SlotProps;
|
|
57
|
+
/**
|
|
58
|
+
* This prop isn't supported.
|
|
59
|
+
* Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.
|
|
60
|
+
*/
|
|
61
|
+
onFocus?: null;
|
|
62
|
+
}
|
|
63
|
+
export interface TreeItem2OwnerState extends Omit<TreeItem2Props, 'disabled'>, UseTreeItem2Status {
|
|
64
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TreeItem2, TreeItem2Root, TreeItem2Content, TreeItem2IconContainer, TreeItem2GroupTransition, TreeItem2Label } from './TreeItem2';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { TreeItem2IconProps } from './TreeItem2Icon.types';
|
|
3
|
+
declare function TreeItem2Icon(props: TreeItem2IconProps): React.JSX.Element | null;
|
|
4
|
+
declare namespace TreeItem2Icon {
|
|
5
|
+
var propTypes: any;
|
|
6
|
+
}
|
|
7
|
+
export { TreeItem2Icon };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import PropTypes from 'prop-types';
|
|
4
|
+
import { resolveComponentProps, useSlotProps } from '@mui/base/utils';
|
|
5
|
+
import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';
|
|
6
|
+
import { TreeViewCollapseIcon, TreeViewExpandIcon } from '../icons';
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
function TreeItem2Icon(props) {
|
|
9
|
+
var _context$icons$slots$, _context$icons$slots$2, _slots$iconName;
|
|
10
|
+
const {
|
|
11
|
+
slots,
|
|
12
|
+
slotProps,
|
|
13
|
+
status
|
|
14
|
+
} = props;
|
|
15
|
+
const context = useTreeViewContext();
|
|
16
|
+
const contextIcons = _extends({}, context.icons.slots, {
|
|
17
|
+
expandIcon: (_context$icons$slots$ = context.icons.slots.expandIcon) != null ? _context$icons$slots$ : TreeViewExpandIcon,
|
|
18
|
+
collapseIcon: (_context$icons$slots$2 = context.icons.slots.collapseIcon) != null ? _context$icons$slots$2 : TreeViewCollapseIcon
|
|
19
|
+
});
|
|
20
|
+
const contextIconProps = context.icons.slotProps;
|
|
21
|
+
let iconName;
|
|
22
|
+
if (slots != null && slots.icon) {
|
|
23
|
+
iconName = 'icon';
|
|
24
|
+
} else if (status.expandable) {
|
|
25
|
+
if (status.expanded) {
|
|
26
|
+
iconName = 'collapseIcon';
|
|
27
|
+
} else {
|
|
28
|
+
iconName = 'expandIcon';
|
|
29
|
+
}
|
|
30
|
+
} else {
|
|
31
|
+
iconName = 'endIcon';
|
|
32
|
+
}
|
|
33
|
+
const Icon = (_slots$iconName = slots == null ? void 0 : slots[iconName]) != null ? _slots$iconName : contextIcons[iconName];
|
|
34
|
+
const iconProps = useSlotProps({
|
|
35
|
+
elementType: Icon,
|
|
36
|
+
externalSlotProps: tempOwnerState => _extends({}, resolveComponentProps(contextIconProps[iconName], tempOwnerState), resolveComponentProps(slotProps == null ? void 0 : slotProps[iconName], tempOwnerState)),
|
|
37
|
+
// TODO: Add proper ownerState
|
|
38
|
+
ownerState: {}
|
|
39
|
+
});
|
|
40
|
+
if (!Icon) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
return /*#__PURE__*/_jsx(Icon, _extends({}, iconProps));
|
|
44
|
+
}
|
|
45
|
+
process.env.NODE_ENV !== "production" ? TreeItem2Icon.propTypes = {
|
|
46
|
+
// ----------------------------- Warning --------------------------------
|
|
47
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
48
|
+
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
49
|
+
// ----------------------------------------------------------------------
|
|
50
|
+
/**
|
|
51
|
+
* The props used for each component slot.
|
|
52
|
+
* @default {}
|
|
53
|
+
*/
|
|
54
|
+
slotProps: PropTypes.object,
|
|
55
|
+
/**
|
|
56
|
+
* Overridable component slots.
|
|
57
|
+
* @default {}
|
|
58
|
+
*/
|
|
59
|
+
slots: PropTypes.object,
|
|
60
|
+
status: PropTypes.shape({
|
|
61
|
+
disabled: PropTypes.bool.isRequired,
|
|
62
|
+
expandable: PropTypes.bool.isRequired,
|
|
63
|
+
expanded: PropTypes.bool.isRequired,
|
|
64
|
+
focused: PropTypes.bool.isRequired,
|
|
65
|
+
selected: PropTypes.bool.isRequired
|
|
66
|
+
}).isRequired
|
|
67
|
+
} : void 0;
|
|
68
|
+
export { TreeItem2Icon };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { SlotComponentProps } from '@mui/base/utils';
|
|
3
|
+
import { UseTreeItem2Status } from '../useTreeItem2';
|
|
4
|
+
export interface TreeItem2IconSlots {
|
|
5
|
+
/**
|
|
6
|
+
* The icon used to collapse the node.
|
|
7
|
+
*/
|
|
8
|
+
collapseIcon?: React.ElementType;
|
|
9
|
+
/**
|
|
10
|
+
* The icon used to expand the node.
|
|
11
|
+
*/
|
|
12
|
+
expandIcon?: React.ElementType;
|
|
13
|
+
/**
|
|
14
|
+
* The icon displayed next to an end node.
|
|
15
|
+
*/
|
|
16
|
+
endIcon?: React.ElementType;
|
|
17
|
+
/**
|
|
18
|
+
* The icon to display next to the tree node's label.
|
|
19
|
+
*/
|
|
20
|
+
icon?: React.ElementType;
|
|
21
|
+
}
|
|
22
|
+
export interface TreeItem2IconSlotProps {
|
|
23
|
+
collapseIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
24
|
+
expandIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
25
|
+
endIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
26
|
+
icon?: SlotComponentProps<'svg', {}, {}>;
|
|
27
|
+
}
|
|
28
|
+
export interface TreeItem2IconProps {
|
|
29
|
+
status: UseTreeItem2Status;
|
|
30
|
+
/**
|
|
31
|
+
* Overridable component slots.
|
|
32
|
+
* @default {}
|
|
33
|
+
*/
|
|
34
|
+
slots?: TreeItem2IconSlots;
|
|
35
|
+
/**
|
|
36
|
+
* The props used for each component slot.
|
|
37
|
+
* @default {}
|
|
38
|
+
*/
|
|
39
|
+
slotProps?: TreeItem2IconSlotProps;
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TreeItem2Icon } from './TreeItem2Icon';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { TreeItem2ProviderProps } from './TreeItem2Provider.types';
|
|
3
|
+
declare function TreeItem2Provider(props: TreeItem2ProviderProps): import("react").ReactNode;
|
|
4
|
+
declare namespace TreeItem2Provider {
|
|
5
|
+
var propTypes: any;
|
|
6
|
+
}
|
|
7
|
+
export { TreeItem2Provider };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import PropTypes from 'prop-types';
|
|
2
|
+
import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';
|
|
3
|
+
function TreeItem2Provider(props) {
|
|
4
|
+
const {
|
|
5
|
+
children,
|
|
6
|
+
nodeId
|
|
7
|
+
} = props;
|
|
8
|
+
const {
|
|
9
|
+
wrapItem
|
|
10
|
+
} = useTreeViewContext();
|
|
11
|
+
return wrapItem({
|
|
12
|
+
children,
|
|
13
|
+
nodeId
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
TreeItem2Provider.propTypes = {
|
|
17
|
+
// ----------------------------- Warning --------------------------------
|
|
18
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
19
|
+
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
20
|
+
// ----------------------------------------------------------------------
|
|
21
|
+
children: PropTypes.node,
|
|
22
|
+
nodeId: PropTypes.string.isRequired
|
|
23
|
+
};
|
|
24
|
+
export { TreeItem2Provider };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TreeItem2Provider } from './TreeItem2Provider';
|