@mui/x-tree-view 7.0.0-beta.6 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/CHANGELOG.md +311 -12
  2. package/README.md +1 -1
  3. package/RichTreeView/RichTreeView.js +34 -36
  4. package/RichTreeView/RichTreeView.types.d.ts +3 -2
  5. package/SimpleTreeView/SimpleTreeView.js +25 -26
  6. package/TreeItem/TreeItem.js +94 -82
  7. package/TreeItem/TreeItem.types.d.ts +13 -11
  8. package/TreeItem/TreeItemContent.d.ts +7 -7
  9. package/TreeItem/TreeItemContent.js +10 -10
  10. package/TreeItem/useTreeItemState.d.ts +1 -1
  11. package/TreeItem/useTreeItemState.js +13 -13
  12. package/TreeItem2/TreeItem2.d.ts +18 -0
  13. package/TreeItem2/TreeItem2.js +300 -0
  14. package/TreeItem2/TreeItem2.types.d.ts +64 -0
  15. package/TreeItem2/TreeItem2.types.js +1 -0
  16. package/TreeItem2/index.d.ts +2 -0
  17. package/TreeItem2/index.js +1 -0
  18. package/TreeItem2/package.json +6 -0
  19. package/TreeItem2Icon/TreeItem2Icon.d.ts +7 -0
  20. package/TreeItem2Icon/TreeItem2Icon.js +67 -0
  21. package/TreeItem2Icon/TreeItem2Icon.types.d.ts +40 -0
  22. package/TreeItem2Icon/TreeItem2Icon.types.js +1 -0
  23. package/TreeItem2Icon/index.d.ts +2 -0
  24. package/TreeItem2Icon/index.js +1 -0
  25. package/TreeItem2Icon/package.json +6 -0
  26. package/TreeItem2Provider/TreeItem2Provider.d.ts +7 -0
  27. package/TreeItem2Provider/TreeItem2Provider.js +24 -0
  28. package/TreeItem2Provider/TreeItem2Provider.types.d.ts +6 -0
  29. package/TreeItem2Provider/TreeItem2Provider.types.js +1 -0
  30. package/TreeItem2Provider/index.d.ts +2 -0
  31. package/TreeItem2Provider/index.js +1 -0
  32. package/TreeItem2Provider/package.json +6 -0
  33. package/TreeView/TreeView.d.ts +1 -1
  34. package/TreeView/TreeView.js +23 -23
  35. package/hooks/index.d.ts +1 -0
  36. package/hooks/index.js +2 -1
  37. package/hooks/useTreeItem2Utils/index.d.ts +1 -0
  38. package/hooks/useTreeItem2Utils/index.js +1 -0
  39. package/hooks/useTreeItem2Utils/useTreeItem2Utils.d.ts +15 -0
  40. package/hooks/useTreeItem2Utils/useTreeItem2Utils.js +61 -0
  41. package/index.d.ts +5 -1
  42. package/index.js +9 -2
  43. package/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
  44. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +4 -2
  45. package/internals/hooks/useInstanceEventHandler.js +5 -10
  46. package/internals/hooks/useLazyRef.d.ts +1 -2
  47. package/internals/hooks/useLazyRef.js +1 -11
  48. package/internals/hooks/useOnMount.d.ts +1 -2
  49. package/internals/hooks/useOnMount.js +1 -7
  50. package/internals/hooks/useTimeout.d.ts +1 -11
  51. package/internals/hooks/useTimeout.js +1 -36
  52. package/internals/models/plugin.d.ts +19 -16
  53. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +31 -38
  54. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +14 -14
  55. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +67 -51
  56. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +9 -8
  57. package/internals/plugins/useTreeViewId/useTreeViewId.js +1 -1
  58. package/internals/plugins/useTreeViewId/useTreeViewId.types.d.ts +1 -1
  59. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +30 -31
  60. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.d.ts +2 -2
  61. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +75 -80
  62. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +4 -1
  63. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +26 -31
  64. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.d.ts +11 -11
  65. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +47 -50
  66. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +15 -15
  67. package/internals/useTreeView/useTreeView.js +28 -27
  68. package/internals/useTreeView/useTreeView.utils.d.ts +2 -2
  69. package/internals/useTreeView/useTreeView.utils.js +22 -22
  70. package/internals/utils/extractPluginParamsFromProps.js +2 -2
  71. package/internals/utils/utils.js +1 -0
  72. package/modern/RichTreeView/RichTreeView.js +29 -29
  73. package/modern/SimpleTreeView/SimpleTreeView.js +23 -23
  74. package/modern/TreeItem/TreeItem.js +83 -70
  75. package/modern/TreeItem/TreeItemContent.js +10 -10
  76. package/modern/TreeItem/useTreeItemState.js +13 -13
  77. package/modern/TreeItem2/TreeItem2.js +300 -0
  78. package/modern/TreeItem2/TreeItem2.types.js +1 -0
  79. package/modern/TreeItem2/index.js +1 -0
  80. package/modern/TreeItem2Icon/TreeItem2Icon.js +67 -0
  81. package/modern/TreeItem2Icon/TreeItem2Icon.types.js +1 -0
  82. package/modern/TreeItem2Icon/index.js +1 -0
  83. package/modern/TreeItem2Provider/TreeItem2Provider.js +24 -0
  84. package/modern/TreeItem2Provider/TreeItem2Provider.types.js +1 -0
  85. package/modern/TreeItem2Provider/index.js +1 -0
  86. package/modern/TreeView/TreeView.js +23 -23
  87. package/modern/hooks/index.js +2 -1
  88. package/modern/hooks/useTreeItem2Utils/index.js +1 -0
  89. package/modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js +61 -0
  90. package/modern/index.js +9 -2
  91. package/modern/internals/hooks/useLazyRef.js +1 -11
  92. package/modern/internals/hooks/useOnMount.js +1 -7
  93. package/modern/internals/hooks/useTimeout.js +1 -36
  94. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +29 -29
  95. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +65 -46
  96. package/modern/internals/plugins/useTreeViewId/useTreeViewId.js +1 -1
  97. package/modern/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +30 -30
  98. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +74 -77
  99. package/modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +21 -22
  100. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -43
  101. package/modern/internals/useTreeView/useTreeView.js +28 -27
  102. package/modern/internals/useTreeView/useTreeView.utils.js +22 -22
  103. package/modern/internals/utils/utils.js +1 -0
  104. package/modern/useTreeItem2/index.js +1 -0
  105. package/modern/useTreeItem2/useTreeItem2.js +146 -0
  106. package/modern/useTreeItem2/useTreeItem2.types.js +1 -0
  107. package/node/RichTreeView/RichTreeView.js +29 -29
  108. package/node/SimpleTreeView/SimpleTreeView.js +23 -23
  109. package/node/TreeItem/TreeItem.js +83 -70
  110. package/node/TreeItem/TreeItemContent.js +10 -10
  111. package/node/TreeItem/useTreeItemState.js +13 -13
  112. package/node/TreeItem2/TreeItem2.js +308 -0
  113. package/node/TreeItem2/TreeItem2.types.js +5 -0
  114. package/node/TreeItem2/index.js +42 -0
  115. package/node/TreeItem2Icon/TreeItem2Icon.js +75 -0
  116. package/node/TreeItem2Icon/TreeItem2Icon.types.js +5 -0
  117. package/node/TreeItem2Icon/index.js +12 -0
  118. package/node/TreeItem2Provider/TreeItem2Provider.js +30 -0
  119. package/node/TreeItem2Provider/TreeItem2Provider.types.js +5 -0
  120. package/node/TreeItem2Provider/index.js +12 -0
  121. package/node/TreeView/TreeView.js +23 -23
  122. package/node/hooks/index.js +8 -1
  123. package/node/hooks/useTreeItem2Utils/index.js +12 -0
  124. package/node/hooks/useTreeItem2Utils/useTreeItem2Utils.js +68 -0
  125. package/node/index.js +61 -13
  126. package/node/internals/hooks/useLazyRef.js +7 -13
  127. package/node/internals/hooks/useOnMount.js +8 -10
  128. package/node/internals/hooks/useTimeout.js +7 -37
  129. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +29 -29
  130. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +65 -46
  131. package/node/internals/plugins/useTreeViewId/useTreeViewId.js +1 -1
  132. package/node/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +30 -30
  133. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +74 -77
  134. package/node/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +21 -22
  135. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -43
  136. package/node/internals/useTreeView/useTreeView.js +28 -27
  137. package/node/internals/useTreeView/useTreeView.utils.js +22 -22
  138. package/node/internals/utils/utils.js +1 -0
  139. package/node/useTreeItem2/index.js +12 -0
  140. package/node/useTreeItem2/useTreeItem2.js +154 -0
  141. package/node/useTreeItem2/useTreeItem2.types.js +5 -0
  142. package/package.json +5 -5
  143. package/themeAugmentation/components.d.ts +5 -0
  144. package/themeAugmentation/overrides.d.ts +1 -0
  145. package/themeAugmentation/props.d.ts +2 -0
  146. package/useTreeItem2/index.d.ts +2 -0
  147. package/useTreeItem2/index.js +1 -0
  148. package/useTreeItem2/package.json +6 -0
  149. package/useTreeItem2/useTreeItem2.d.ts +2 -0
  150. package/useTreeItem2/useTreeItem2.js +146 -0
  151. package/useTreeItem2/useTreeItem2.types.d.ts +115 -0
  152. package/useTreeItem2/useTreeItem2.types.js +1 -0
@@ -1,45 +1,45 @@
1
1
  import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';
2
- export function useTreeItemState(nodeId) {
2
+ export function useTreeItemState(itemId) {
3
3
  const {
4
4
  instance,
5
5
  selection: {
6
6
  multiSelect
7
7
  }
8
8
  } = useTreeViewContext();
9
- const expandable = instance.isNodeExpandable(nodeId);
10
- const expanded = instance.isNodeExpanded(nodeId);
11
- const focused = instance.isNodeFocused(nodeId);
12
- const selected = instance.isNodeSelected(nodeId);
13
- const disabled = instance.isNodeDisabled(nodeId);
9
+ const expandable = instance.isNodeExpandable(itemId);
10
+ const expanded = instance.isNodeExpanded(itemId);
11
+ const focused = instance.isNodeFocused(itemId);
12
+ const selected = instance.isNodeSelected(itemId);
13
+ const disabled = instance.isNodeDisabled(itemId);
14
14
  const handleExpansion = event => {
15
15
  if (!disabled) {
16
16
  if (!focused) {
17
- instance.focusNode(event, nodeId);
17
+ instance.focusItem(event, itemId);
18
18
  }
19
19
  const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
20
20
 
21
21
  // If already expanded and trying to toggle selection don't close
22
- if (expandable && !(multiple && instance.isNodeExpanded(nodeId))) {
23
- instance.toggleNodeExpansion(event, nodeId);
22
+ if (expandable && !(multiple && instance.isNodeExpanded(itemId))) {
23
+ instance.toggleNodeExpansion(event, itemId);
24
24
  }
25
25
  }
26
26
  };
27
27
  const handleSelection = event => {
28
28
  if (!disabled) {
29
29
  if (!focused) {
30
- instance.focusNode(event, nodeId);
30
+ instance.focusItem(event, itemId);
31
31
  }
32
32
  const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
33
33
  if (multiple) {
34
34
  if (event.shiftKey) {
35
35
  instance.selectRange(event, {
36
- end: nodeId
36
+ end: itemId
37
37
  });
38
38
  } else {
39
- instance.selectNode(event, nodeId, true);
39
+ instance.selectNode(event, itemId, true);
40
40
  }
41
41
  } else {
42
- instance.selectNode(event, nodeId);
42
+ instance.selectNode(event, itemId);
43
43
  }
44
44
  }
45
45
  };
@@ -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>>;
@@ -0,0 +1,300 @@
1
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ const _excluded = ["id", "itemId", "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
+ const props = useThemeProps({
163
+ props: inProps,
164
+ name: 'MuiTreeItem2'
165
+ });
166
+ const {
167
+ id,
168
+ itemId,
169
+ label,
170
+ disabled,
171
+ children,
172
+ slots = {},
173
+ slotProps = {}
174
+ } = props,
175
+ other = _objectWithoutPropertiesLoose(props, _excluded);
176
+ const {
177
+ getRootProps,
178
+ getContentProps,
179
+ getIconContainerProps,
180
+ getLabelProps,
181
+ getGroupTransitionProps,
182
+ status
183
+ } = useTreeItem2({
184
+ id,
185
+ itemId,
186
+ children,
187
+ label,
188
+ disabled
189
+ });
190
+ const ownerState = _extends({}, props, status);
191
+ const classes = useUtilityClasses(ownerState);
192
+ const Root = slots.root ?? TreeItem2Root;
193
+ const rootProps = useSlotProps({
194
+ elementType: Root,
195
+ getSlotProps: getRootProps,
196
+ externalForwardedProps: other,
197
+ externalSlotProps: slotProps.root,
198
+ additionalProps: {
199
+ ref: forwardedRef
200
+ },
201
+ ownerState: {},
202
+ className: classes.root
203
+ });
204
+ const Content = slots.content ?? TreeItem2Content;
205
+ const contentProps = useSlotProps({
206
+ elementType: Content,
207
+ getSlotProps: getContentProps,
208
+ externalSlotProps: slotProps.content,
209
+ ownerState: {},
210
+ className: clsx(classes.content, status.expanded && classes.expanded, status.selected && classes.selected, status.focused && classes.focused, status.disabled && classes.disabled)
211
+ });
212
+ const IconContainer = slots.iconContainer ?? TreeItem2IconContainer;
213
+ const iconContainerProps = useSlotProps({
214
+ elementType: IconContainer,
215
+ getSlotProps: getIconContainerProps,
216
+ externalSlotProps: slotProps.iconContainer,
217
+ ownerState: {},
218
+ className: classes.iconContainer
219
+ });
220
+ const Label = slots.label ?? TreeItem2Label;
221
+ const labelProps = useSlotProps({
222
+ elementType: Label,
223
+ getSlotProps: getLabelProps,
224
+ externalSlotProps: slotProps.label,
225
+ ownerState: {},
226
+ className: classes.label
227
+ });
228
+ const GroupTransition = slots.groupTransition ?? undefined;
229
+ const groupTransitionProps = useSlotProps({
230
+ elementType: GroupTransition,
231
+ getSlotProps: getGroupTransitionProps,
232
+ externalSlotProps: slotProps.groupTransition,
233
+ ownerState: {},
234
+ className: classes.groupTransition
235
+ });
236
+ return /*#__PURE__*/_jsx(TreeItem2Provider, {
237
+ itemId: itemId,
238
+ children: /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {
239
+ children: [/*#__PURE__*/_jsxs(Content, _extends({}, contentProps, {
240
+ children: [/*#__PURE__*/_jsx(IconContainer, _extends({}, iconContainerProps, {
241
+ children: /*#__PURE__*/_jsx(TreeItem2Icon, {
242
+ status: status,
243
+ slots: slots,
244
+ slotProps: slotProps
245
+ })
246
+ })), /*#__PURE__*/_jsx(Label, _extends({}, labelProps))]
247
+ })), children && /*#__PURE__*/_jsx(TreeItem2GroupTransition, _extends({
248
+ as: GroupTransition
249
+ }, groupTransitionProps))]
250
+ }))
251
+ });
252
+ });
253
+ process.env.NODE_ENV !== "production" ? TreeItem2.propTypes = {
254
+ // ----------------------------- Warning --------------------------------
255
+ // | These PropTypes are generated from the TypeScript type definitions |
256
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
257
+ // ----------------------------------------------------------------------
258
+ /**
259
+ * The content of the component.
260
+ */
261
+ children: PropTypes.node,
262
+ /**
263
+ * Override or extend the styles applied to the component.
264
+ */
265
+ classes: PropTypes.object,
266
+ className: PropTypes.string,
267
+ /**
268
+ * If `true`, the item is disabled.
269
+ * @default false
270
+ */
271
+ disabled: PropTypes.bool,
272
+ /**
273
+ * The id attribute of the item. If not provided, it will be generated.
274
+ */
275
+ id: PropTypes.string,
276
+ /**
277
+ * The id of the item.
278
+ * Must be unique.
279
+ */
280
+ itemId: PropTypes.string.isRequired,
281
+ /**
282
+ * The label of the item.
283
+ */
284
+ label: PropTypes.node,
285
+ /**
286
+ * This prop isn't supported.
287
+ * Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.
288
+ */
289
+ onFocus: unsupportedProp,
290
+ /**
291
+ * The props used for each component slot.
292
+ * @default {}
293
+ */
294
+ slotProps: PropTypes.object,
295
+ /**
296
+ * Overridable component slots.
297
+ * @default {}
298
+ */
299
+ slots: PropTypes.object
300
+ } : 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,2 @@
1
+ export { TreeItem2, TreeItem2Root, TreeItem2Content, TreeItem2IconContainer, TreeItem2GroupTransition, TreeItem2Label, } from './TreeItem2';
2
+ export type { TreeItem2Props, TreeItem2Slots, TreeItem2SlotProps } from './TreeItem2.types';
@@ -0,0 +1 @@
1
+ export { TreeItem2, TreeItem2Root, TreeItem2Content, TreeItem2IconContainer, TreeItem2GroupTransition, TreeItem2Label } from './TreeItem2';
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "./index.js",
4
+ "main": "../node/TreeItem2/index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -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,67 @@
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
+ const {
10
+ slots,
11
+ slotProps,
12
+ status
13
+ } = props;
14
+ const context = useTreeViewContext();
15
+ const contextIcons = _extends({}, context.icons.slots, {
16
+ expandIcon: context.icons.slots.expandIcon ?? TreeViewExpandIcon,
17
+ collapseIcon: context.icons.slots.collapseIcon ?? TreeViewCollapseIcon
18
+ });
19
+ const contextIconProps = context.icons.slotProps;
20
+ let iconName;
21
+ if (slots?.icon) {
22
+ iconName = 'icon';
23
+ } else if (status.expandable) {
24
+ if (status.expanded) {
25
+ iconName = 'collapseIcon';
26
+ } else {
27
+ iconName = 'expandIcon';
28
+ }
29
+ } else {
30
+ iconName = 'endIcon';
31
+ }
32
+ const Icon = slots?.[iconName] ?? contextIcons[iconName];
33
+ const iconProps = useSlotProps({
34
+ elementType: Icon,
35
+ externalSlotProps: tempOwnerState => _extends({}, resolveComponentProps(contextIconProps[iconName], tempOwnerState), resolveComponentProps(slotProps?.[iconName], tempOwnerState)),
36
+ // TODO: Add proper ownerState
37
+ ownerState: {}
38
+ });
39
+ if (!Icon) {
40
+ return null;
41
+ }
42
+ return /*#__PURE__*/_jsx(Icon, _extends({}, iconProps));
43
+ }
44
+ process.env.NODE_ENV !== "production" ? TreeItem2Icon.propTypes = {
45
+ // ----------------------------- Warning --------------------------------
46
+ // | These PropTypes are generated from the TypeScript type definitions |
47
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
48
+ // ----------------------------------------------------------------------
49
+ /**
50
+ * The props used for each component slot.
51
+ * @default {}
52
+ */
53
+ slotProps: PropTypes.object,
54
+ /**
55
+ * Overridable component slots.
56
+ * @default {}
57
+ */
58
+ slots: PropTypes.object,
59
+ status: PropTypes.shape({
60
+ disabled: PropTypes.bool.isRequired,
61
+ expandable: PropTypes.bool.isRequired,
62
+ expanded: PropTypes.bool.isRequired,
63
+ focused: PropTypes.bool.isRequired,
64
+ selected: PropTypes.bool.isRequired
65
+ }).isRequired
66
+ } : void 0;
67
+ 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,2 @@
1
+ export { TreeItem2Icon } from './TreeItem2Icon';
2
+ export type { TreeItem2IconProps, TreeItem2IconSlots, TreeItem2IconSlotProps, } from './TreeItem2Icon.types';
@@ -0,0 +1 @@
1
+ export { TreeItem2Icon } from './TreeItem2Icon';
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "./index.js",
4
+ "main": "../node/TreeItem2Icon/index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -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
+ itemId
7
+ } = props;
8
+ const {
9
+ wrapItem
10
+ } = useTreeViewContext();
11
+ return wrapItem({
12
+ children,
13
+ itemId
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
+ itemId: PropTypes.string.isRequired
23
+ };
24
+ export { TreeItem2Provider };
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ import { TreeViewItemId } from '../models';
3
+ export interface TreeItem2ProviderProps {
4
+ children: React.ReactNode;
5
+ itemId: TreeViewItemId;
6
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export { TreeItem2Provider } from './TreeItem2Provider';
2
+ export type { TreeItem2ProviderProps } from './TreeItem2Provider.types';
@@ -0,0 +1 @@
1
+ export { TreeItem2Provider } from './TreeItem2Provider';
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "./index.js",
4
+ "main": "../node/TreeItem2Provider/index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -5,7 +5,7 @@ type TreeViewComponent = (<Multiple extends boolean | undefined = undefined>(pro
5
5
  };
6
6
  /**
7
7
  * This component has been deprecated in favor of the new `SimpleTreeView` component.
8
- * You can have a look at how to migrate to the new component in the v7 [migration guide](https://next.mui.com/x/migration/migration-tree-view-v6/#use-simpletreeview-instead-of-treeview)
8
+ * You can have a look at how to migrate to the new component in the v7 [migration guide](https://mui.com/x/migration/migration-tree-view-v6/#use-simpletreeview-instead-of-treeview)
9
9
  *
10
10
  * Demos:
11
11
  *