@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.
Files changed (129) hide show
  1. package/CHANGELOG.md +117 -1
  2. package/RichTreeView/RichTreeView.js +22 -22
  3. package/RichTreeView/RichTreeView.types.d.ts +2 -1
  4. package/SimpleTreeView/SimpleTreeView.js +22 -22
  5. package/TreeItem/TreeItem.js +57 -53
  6. package/TreeItem/TreeItem.types.d.ts +10 -8
  7. package/TreeItem/useTreeItemState.js +2 -2
  8. package/TreeItem2/TreeItem2.d.ts +18 -0
  9. package/TreeItem2/TreeItem2.js +301 -0
  10. package/TreeItem2/TreeItem2.types.d.ts +64 -0
  11. package/TreeItem2/TreeItem2.types.js +1 -0
  12. package/TreeItem2/index.d.ts +2 -0
  13. package/TreeItem2/index.js +1 -0
  14. package/TreeItem2/package.json +6 -0
  15. package/TreeItem2Icon/TreeItem2Icon.d.ts +7 -0
  16. package/TreeItem2Icon/TreeItem2Icon.js +68 -0
  17. package/TreeItem2Icon/TreeItem2Icon.types.d.ts +40 -0
  18. package/TreeItem2Icon/TreeItem2Icon.types.js +1 -0
  19. package/TreeItem2Icon/index.d.ts +2 -0
  20. package/TreeItem2Icon/index.js +1 -0
  21. package/TreeItem2Icon/package.json +6 -0
  22. package/TreeItem2Provider/TreeItem2Provider.d.ts +7 -0
  23. package/TreeItem2Provider/TreeItem2Provider.js +24 -0
  24. package/TreeItem2Provider/TreeItem2Provider.types.d.ts +6 -0
  25. package/TreeItem2Provider/TreeItem2Provider.types.js +1 -0
  26. package/TreeItem2Provider/index.d.ts +2 -0
  27. package/TreeItem2Provider/index.js +1 -0
  28. package/TreeItem2Provider/package.json +6 -0
  29. package/TreeView/TreeView.js +22 -22
  30. package/hooks/index.d.ts +1 -0
  31. package/hooks/index.js +2 -1
  32. package/hooks/useTreeItem2Utils/index.d.ts +1 -0
  33. package/hooks/useTreeItem2Utils/index.js +1 -0
  34. package/hooks/useTreeItem2Utils/useTreeItem2Utils.d.ts +15 -0
  35. package/hooks/useTreeItem2Utils/useTreeItem2Utils.js +61 -0
  36. package/index.d.ts +5 -1
  37. package/index.js +9 -2
  38. package/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
  39. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +4 -2
  40. package/internals/hooks/useLazyRef.d.ts +1 -2
  41. package/internals/hooks/useLazyRef.js +1 -11
  42. package/internals/hooks/useOnMount.d.ts +1 -2
  43. package/internals/hooks/useOnMount.js +1 -7
  44. package/internals/hooks/useTimeout.d.ts +1 -11
  45. package/internals/hooks/useTimeout.js +1 -36
  46. package/internals/models/plugin.d.ts +19 -16
  47. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +25 -25
  48. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +11 -11
  49. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +12 -12
  50. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +5 -5
  51. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +17 -17
  52. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +11 -9
  53. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +2 -2
  54. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +34 -34
  55. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +11 -11
  56. package/internals/useTreeView/useTreeView.js +27 -25
  57. package/modern/RichTreeView/RichTreeView.js +22 -22
  58. package/modern/SimpleTreeView/SimpleTreeView.js +22 -22
  59. package/modern/TreeItem/TreeItem.js +57 -53
  60. package/modern/TreeItem/useTreeItemState.js +2 -2
  61. package/modern/TreeItem2/TreeItem2.js +300 -0
  62. package/modern/TreeItem2/TreeItem2.types.js +1 -0
  63. package/modern/TreeItem2/index.js +1 -0
  64. package/modern/TreeItem2Icon/TreeItem2Icon.js +67 -0
  65. package/modern/TreeItem2Icon/TreeItem2Icon.types.js +1 -0
  66. package/modern/TreeItem2Icon/index.js +1 -0
  67. package/modern/TreeItem2Provider/TreeItem2Provider.js +24 -0
  68. package/modern/TreeItem2Provider/TreeItem2Provider.types.js +1 -0
  69. package/modern/TreeItem2Provider/index.js +1 -0
  70. package/modern/TreeView/TreeView.js +22 -22
  71. package/modern/hooks/index.js +2 -1
  72. package/modern/hooks/useTreeItem2Utils/index.js +1 -0
  73. package/modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js +61 -0
  74. package/modern/index.js +9 -2
  75. package/modern/internals/hooks/useLazyRef.js +1 -11
  76. package/modern/internals/hooks/useOnMount.js +1 -7
  77. package/modern/internals/hooks/useTimeout.js +1 -36
  78. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +24 -24
  79. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +12 -12
  80. package/modern/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +16 -16
  81. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +11 -9
  82. package/modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +2 -2
  83. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +34 -34
  84. package/modern/internals/useTreeView/useTreeView.js +27 -25
  85. package/modern/useTreeItem2/index.js +1 -0
  86. package/modern/useTreeItem2/useTreeItem2.js +135 -0
  87. package/modern/useTreeItem2/useTreeItem2.types.js +1 -0
  88. package/node/RichTreeView/RichTreeView.js +22 -22
  89. package/node/SimpleTreeView/SimpleTreeView.js +22 -22
  90. package/node/TreeItem/TreeItem.js +57 -53
  91. package/node/TreeItem/useTreeItemState.js +2 -2
  92. package/node/TreeItem2/TreeItem2.js +308 -0
  93. package/node/TreeItem2/TreeItem2.types.js +5 -0
  94. package/node/TreeItem2/index.js +42 -0
  95. package/node/TreeItem2Icon/TreeItem2Icon.js +75 -0
  96. package/node/TreeItem2Icon/TreeItem2Icon.types.js +5 -0
  97. package/node/TreeItem2Icon/index.js +12 -0
  98. package/node/TreeItem2Provider/TreeItem2Provider.js +30 -0
  99. package/node/TreeItem2Provider/TreeItem2Provider.types.js +5 -0
  100. package/node/TreeItem2Provider/index.js +12 -0
  101. package/node/TreeView/TreeView.js +22 -22
  102. package/node/hooks/index.js +8 -1
  103. package/node/hooks/useTreeItem2Utils/index.js +12 -0
  104. package/node/hooks/useTreeItem2Utils/useTreeItem2Utils.js +68 -0
  105. package/node/index.js +61 -13
  106. package/node/internals/hooks/useLazyRef.js +7 -13
  107. package/node/internals/hooks/useOnMount.js +8 -10
  108. package/node/internals/hooks/useTimeout.js +7 -37
  109. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +24 -24
  110. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +12 -12
  111. package/node/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +16 -16
  112. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +11 -9
  113. package/node/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +2 -2
  114. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +34 -34
  115. package/node/internals/useTreeView/useTreeView.js +27 -25
  116. package/node/useTreeItem2/index.js +12 -0
  117. package/node/useTreeItem2/useTreeItem2.js +143 -0
  118. package/node/useTreeItem2/useTreeItem2.types.js +5 -0
  119. package/package.json +1 -1
  120. package/themeAugmentation/components.d.ts +5 -0
  121. package/themeAugmentation/overrides.d.ts +1 -0
  122. package/themeAugmentation/props.d.ts +2 -0
  123. package/useTreeItem2/index.d.ts +2 -0
  124. package/useTreeItem2/index.js +1 -0
  125. package/useTreeItem2/package.json +6 -0
  126. package/useTreeItem2/useTreeItem2.d.ts +2 -0
  127. package/useTreeItem2/useTreeItem2.js +138 -0
  128. package/useTreeItem2/useTreeItem2.types.d.ts +113 -0
  129. package/useTreeItem2/useTreeItem2.types.js +1 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,102 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 7.0.0-beta.7
7
+
8
+ _Mar 14, 2024_
9
+
10
+ We'd like to offer a big thanks to the 11 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - 🦥 The Lazy loading feature is now stable and the `lazyLoading` feature flag was removed from the `experimentalFeatures` prop.
13
+ - 🌍 Improve Japanese (ja-JP) locale for the Data Grid
14
+ - 🐞 Bugfixes
15
+ - 📚 Documentation improvements
16
+
17
+ ### Data Grid
18
+
19
+ #### Breaking changes
20
+
21
+ - The `columnHeader--showColumnBorder` class was replaced by `columnHeader--withLeftBorder` and `columnHeader--withRightBorder`.
22
+ - The `columnHeadersInner`, `columnHeadersInner--scrollable`, and `columnHeaderDropZone` classes were removed since the inner wrapper was removed in our effort to simplify the DOM structure and improve accessibility.
23
+ - The `pinnedColumnHeaders`, `pinnedColumnHeaders--left`, and `pinnedColumnHeaders--right` classes were removed along with the element they were applied to.
24
+ The pinned column headers now use `position: 'sticky'` and are rendered in the same row element as the regular column headers.
25
+
26
+ #### `@mui/x-data-grid@7.0.0-beta.7`
27
+
28
+ - [DataGrid] Fix focus visible style on scrollbar (#12402) @oliviertassinari
29
+ - [DataGrid] Fix the issue where pressing the Delete key resets various cell values to an empty string. (#12216) @sooster910
30
+ - [DataGrid] Make `rowCount` part of the state (#12381) @MBilalShafi
31
+ - [DataGrid] Make column resizing and autosizing available in Community plan (#12420) @cherniavskii
32
+ - [DataGrid] Remove `baseSwitch` slot (#12439) @romgrk
33
+ - [l10n] Improve Japanese (ja-JP) locale (#12398) @makoto14
34
+
35
+ #### `@mui/x-data-grid-pro@7.0.0-beta.7` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
36
+
37
+ Same changes as in `@mui/x-data-grid@7.0.0-beta.7`, plus:
38
+
39
+ - [DataGridPro] Add `inputRef` to the props passed to `colDef.renderHeaderFilter` (#12328) @vovarudomanenko
40
+ - [DataGridPro] Fix filler rendered for no reason when there are pinned columns (#12440) @cherniavskii
41
+ - [DataGridPro] Make lazy loading feature stable (#12421) @cherniavskii
42
+ - [DataGridPro] Render pinned and non-pinned column headers in one row (#12376) @cherniavskii
43
+
44
+ #### `@mui/x-data-grid-premium@7.0.0-beta.7` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
45
+
46
+ Same changes as in `@mui/x-data-grid-pro@7.0.0-beta.7`, plus:
47
+
48
+ - [DataGridPremium] Fix auto-scroll not working when selecting cell range (#12267) @cherniavskii
49
+
50
+ ### Date and Time Pickers
51
+
52
+ #### `@mui/x-date-pickers@7.0.0-beta.7`
53
+
54
+ - [fields] Fix `tabIndex` on accessible field DOM structure (#12311) @flaviendelangle
55
+ - [fields] Fix items alignment on multi input range fields (#12312) @flaviendelangle
56
+ - [pickers] Improve the customization of the range picker calendar header (#11988) @flaviendelangle
57
+ - [pickers] Keep the existing time when looking for closest enabled date (#12377) @LukasTy
58
+
59
+ #### `@mui/x-date-pickers-pro@7.0.0-beta.7` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
60
+
61
+ Same changes as in `@mui/x-date-pickers@7.0.0-beta.7`.
62
+
63
+ ### Charts
64
+
65
+ #### `@mui/x-charts@7.0.0-beta.7`
66
+
67
+ - [charts] Fix axis highlight when axis is reversed (#12407) @alexfauquette
68
+
69
+ ### Tree View
70
+
71
+ #### Breaking changes
72
+
73
+ The `onNodeFocus` callback has been renamed to `onItemFocus` for consistency:
74
+
75
+ ```diff
76
+ <SimpleTreeView
77
+ - onNodeFocus={onNodeFocus}
78
+ + onItemFocus={onItemFocus}
79
+ />
80
+ ```
81
+
82
+ #### `@mui/x-tree-view@7.0.0-beta.7`
83
+
84
+ - [TreeView] Clean the usage of the term "item" and "node" in API introduced during v7 (#12368) @noraleonte
85
+ - [TreeView] Introduce a new `TreeItem2` component and a new `useTreeItem2` hook (#11721) @flaviendelangle
86
+ - [TreeView] Rename `onNodeFocus` to `onItemFocus` (#12419) @noraleonte
87
+
88
+ ### Docs
89
+
90
+ - [docs] Add `legacy` bundle drop mention in migration pages (#12424) @LukasTy
91
+ - [docs] Add missing luxon `Info` import (#12427) @LukasTy
92
+ - [docs] Improve slots definitions for charts (#12408) @alexfauquette
93
+ - [docs] Polish What's new in MUI X blog titles (#12309) @oliviertassinari
94
+ - [docs] Replace `rel="noreferrer"` by `rel="noopener"` @oliviertassinari
95
+ - [docs] Update `date-fns` `weekStarsOn` overriding example (#12416) @LukasTy
96
+
97
+ ### Core
98
+
99
+ - [core] Fix CI (#12414) @flaviendelangle
100
+ - [core] Fix PR deploy link for Tree View doc pages (#12411) @flaviendelangle
101
+
6
102
  ## 7.0.0-beta.6
7
103
 
8
104
  _Mar 8, 2024_
@@ -1731,7 +1827,7 @@ Same changes as in `@mui/x-data-grid-pro@7.0.0-alpha.3`, plus:
1731
1827
  The Firefox browser currently does not support this behavior because the [getWeekInfo](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/getWeekInfo) API is not yet implemented.
1732
1828
 
1733
1829
  ```ts
1734
- import { Settings } from 'luxon';
1830
+ import { Settings, Info } from 'luxon';
1735
1831
 
1736
1832
  Settings.defaultWeekSettings = {
1737
1833
  firstDay: 1,
@@ -2521,6 +2617,26 @@ Here is an example of the renaming for the `<ChartsTooltip />` component.
2521
2617
  - [core] Update release instructions as per v7 configuration (#10962) @MBilalShafi
2522
2618
  - [license] Correctly throw errors (#10924) @oliviertassinari
2523
2619
 
2620
+ ## 6.19.7
2621
+
2622
+ _Mar 14, 2024_
2623
+
2624
+ We'd like to offer a big thanks to @LukasTy who made this release possible.
2625
+
2626
+ ### Date Pickers
2627
+
2628
+ #### `@mui/x-date-pickers@6.19.7`
2629
+
2630
+ - [pickers] Keep the existing time when looking for closest enabled date (#12410) @LukasTy
2631
+
2632
+ #### `@mui/x-date-pickers-pro@6.19.7` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
2633
+
2634
+ Same changes as in `@mui/x-date-pickers@6.19.7`.
2635
+
2636
+ ### Docs
2637
+
2638
+ - [docs] Add Pickers custom start of week section (#12425) @LukasTy
2639
+
2524
2640
  ## 6.19.6
2525
2641
 
2526
2642
  _Mar 1, 2024_
@@ -139,7 +139,7 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
139
139
  */
140
140
  apiRef: PropTypes.shape({
141
141
  current: PropTypes.shape({
142
- focusNode: PropTypes.func.isRequired,
142
+ focusItem: PropTypes.func.isRequired,
143
143
  getItem: PropTypes.func.isRequired
144
144
  })
145
145
  }),
@@ -149,17 +149,17 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
149
149
  classes: PropTypes.object,
150
150
  className: PropTypes.string,
151
151
  /**
152
- * Expanded node ids.
152
+ * Expanded item ids.
153
153
  * Used when the item's expansion is not controlled.
154
154
  * @default []
155
155
  */
156
- defaultExpandedNodes: PropTypes.arrayOf(PropTypes.string),
156
+ defaultExpandedItems: PropTypes.arrayOf(PropTypes.string),
157
157
  /**
158
- * Selected node ids. (Uncontrolled)
158
+ * Selected item ids. (Uncontrolled)
159
159
  * When `multiSelect` is true this takes an array of strings; when false (default) a string.
160
160
  * @default []
161
161
  */
162
- defaultSelectedNodes: PropTypes.any,
162
+ defaultSelectedItems: PropTypes.any,
163
163
  /**
164
164
  * If `true`, will allow focus on disabled items.
165
165
  * @default false
@@ -171,10 +171,10 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
171
171
  */
172
172
  disableSelection: PropTypes.bool,
173
173
  /**
174
- * Expanded node ids.
174
+ * Expanded item ids.
175
175
  * Used when the item's expansion is controlled.
176
176
  */
177
- expandedNodes: PropTypes.arrayOf(PropTypes.string),
177
+ expandedItems: PropTypes.arrayOf(PropTypes.string),
178
178
  /**
179
179
  * Used to determine the string label for a given item.
180
180
  *
@@ -214,42 +214,42 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
214
214
  /**
215
215
  * Callback fired when tree items are expanded/collapsed.
216
216
  * @param {React.SyntheticEvent} event The event source of the callback.
217
- * @param {array} nodeIds The ids of the expanded nodes.
217
+ * @param {array} itemIds The ids of the expanded items.
218
218
  */
219
- onExpandedNodesChange: PropTypes.func,
219
+ onExpandedItemsChange: PropTypes.func,
220
220
  /**
221
221
  * Callback fired when a tree item is expanded or collapsed.
222
222
  * @param {React.SyntheticEvent} event The event source of the callback.
223
- * @param {array} nodeId The nodeId of the modified node.
224
- * @param {array} isExpanded `true` if the node has just been expanded, `false` if it has just been collapsed.
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.
225
225
  */
226
- onNodeExpansionToggle: PropTypes.func,
226
+ onItemExpansionToggle: PropTypes.func,
227
227
  /**
228
228
  * Callback fired when tree items are focused.
229
229
  * @param {React.SyntheticEvent} event The event source of the callback **Warning**: This is a generic event not a focus event.
230
- * @param {string} nodeId The id of the node focused.
231
- * @param {string} value of the focused node.
230
+ * @param {string} itemId The id of the focused item.
231
+ * @param {string} value of the focused item.
232
232
  */
233
- onNodeFocus: PropTypes.func,
233
+ onItemFocus: PropTypes.func,
234
234
  /**
235
235
  * Callback fired when a tree item is selected or deselected.
236
236
  * @param {React.SyntheticEvent} event The event source of the callback.
237
- * @param {array} nodeId The nodeId of the modified node.
238
- * @param {array} isSelected `true` if the node has just been selected, `false` if it has just been deselected.
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.
239
239
  */
240
- onNodeSelectionToggle: PropTypes.func,
240
+ onItemSelectionToggle: PropTypes.func,
241
241
  /**
242
242
  * Callback fired when tree items are selected/deselected.
243
243
  * @param {React.SyntheticEvent} event The event source of the callback
244
- * @param {string[] | string} nodeIds The ids of the selected nodes.
244
+ * @param {string[] | string} itemIds The ids of the selected items.
245
245
  * When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
246
246
  */
247
- onSelectedNodesChange: PropTypes.func,
247
+ onSelectedItemsChange: PropTypes.func,
248
248
  /**
249
- * Selected node ids. (Controlled)
249
+ * Selected item ids. (Controlled)
250
250
  * When `multiSelect` is true this takes an array of strings; when false (default) a string.
251
251
  */
252
- selectedNodes: PropTypes.any,
252
+ selectedItems: PropTypes.any,
253
253
  /**
254
254
  * The props used for each component slot.
255
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,7 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
96
96
  */
97
97
  apiRef: PropTypes.shape({
98
98
  current: PropTypes.shape({
99
- focusNode: PropTypes.func.isRequired,
99
+ focusItem: PropTypes.func.isRequired,
100
100
  getItem: PropTypes.func.isRequired
101
101
  })
102
102
  }),
@@ -110,17 +110,17 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
110
110
  classes: PropTypes.object,
111
111
  className: PropTypes.string,
112
112
  /**
113
- * Expanded node ids.
113
+ * Expanded item ids.
114
114
  * Used when the item's expansion is not controlled.
115
115
  * @default []
116
116
  */
117
- defaultExpandedNodes: PropTypes.arrayOf(PropTypes.string),
117
+ defaultExpandedItems: PropTypes.arrayOf(PropTypes.string),
118
118
  /**
119
- * Selected node ids. (Uncontrolled)
119
+ * Selected item ids. (Uncontrolled)
120
120
  * When `multiSelect` is true this takes an array of strings; when false (default) a string.
121
121
  * @default []
122
122
  */
123
- defaultSelectedNodes: PropTypes.any,
123
+ defaultSelectedItems: PropTypes.any,
124
124
  /**
125
125
  * If `true`, will allow focus on disabled items.
126
126
  * @default false
@@ -132,10 +132,10 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
132
132
  */
133
133
  disableSelection: PropTypes.bool,
134
134
  /**
135
- * Expanded node ids.
135
+ * Expanded item ids.
136
136
  * Used when the item's expansion is controlled.
137
137
  */
138
- expandedNodes: PropTypes.arrayOf(PropTypes.string),
138
+ expandedItems: PropTypes.arrayOf(PropTypes.string),
139
139
  /**
140
140
  * This prop is used to help implement the accessibility logic.
141
141
  * If you don't provide this prop. It falls back to a randomly generated id.
@@ -149,42 +149,42 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
149
149
  /**
150
150
  * Callback fired when tree items are expanded/collapsed.
151
151
  * @param {React.SyntheticEvent} event The event source of the callback.
152
- * @param {array} nodeIds The ids of the expanded nodes.
152
+ * @param {array} itemIds The ids of the expanded items.
153
153
  */
154
- onExpandedNodesChange: PropTypes.func,
154
+ onExpandedItemsChange: PropTypes.func,
155
155
  /**
156
156
  * Callback fired when a tree item is expanded or collapsed.
157
157
  * @param {React.SyntheticEvent} event The event source of the callback.
158
- * @param {array} nodeId The nodeId of the modified node.
159
- * @param {array} isExpanded `true` if the node has just been expanded, `false` if it has just been collapsed.
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.
160
160
  */
161
- onNodeExpansionToggle: PropTypes.func,
161
+ onItemExpansionToggle: PropTypes.func,
162
162
  /**
163
163
  * Callback fired when tree items are focused.
164
164
  * @param {React.SyntheticEvent} event The event source of the callback **Warning**: This is a generic event not a focus event.
165
- * @param {string} nodeId The id of the node focused.
166
- * @param {string} value of the focused node.
165
+ * @param {string} itemId The id of the focused item.
166
+ * @param {string} value of the focused item.
167
167
  */
168
- onNodeFocus: PropTypes.func,
168
+ onItemFocus: PropTypes.func,
169
169
  /**
170
170
  * Callback fired when a tree item is selected or deselected.
171
171
  * @param {React.SyntheticEvent} event The event source of the callback.
172
- * @param {array} nodeId The nodeId of the modified node.
173
- * @param {array} isSelected `true` if the node has just been selected, `false` if it has just been deselected.
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.
174
174
  */
175
- onNodeSelectionToggle: PropTypes.func,
175
+ onItemSelectionToggle: PropTypes.func,
176
176
  /**
177
177
  * Callback fired when tree items are selected/deselected.
178
178
  * @param {React.SyntheticEvent} event The event source of the callback
179
- * @param {string[] | string} nodeIds The ids of the selected nodes.
179
+ * @param {string[] | string} itemIds The ids of the selected items.
180
180
  * When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
181
181
  */
182
- onSelectedNodesChange: PropTypes.func,
182
+ onSelectedItemsChange: PropTypes.func,
183
183
  /**
184
- * Selected node ids. (Controlled)
184
+ * Selected item ids. (Controlled)
185
185
  * When `multiSelect` is true this takes an array of strings; when false (default) a string.
186
186
  */
187
- selectedNodes: PropTypes.any,
187
+ selectedItems: PropTypes.any,
188
188
  /**
189
189
  * The props used for each component slot.
190
190
  */
@@ -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 => {
@@ -145,18 +147,10 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
145
147
  disabledItemsFocusable,
146
148
  instance
147
149
  } = useTreeViewContext();
148
- const inPropsWithTheme = useThemeProps({
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,
@@ -171,6 +165,12 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
171
165
  onMouseDown
172
166
  } = props,
173
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);
174
174
  const slots = {
175
175
  expandIcon: (_ref = (_inSlots$expandIcon = inSlots == null ? void 0 : inSlots.expandIcon) != null ? _inSlots$expandIcon : contextIcons.slots.expandIcon) != null ? _ref : TreeViewExpandIcon,
176
176
  collapseIcon: (_ref2 = (_inSlots$collapseIcon = inSlots == null ? void 0 : inSlots.collapseIcon) != null ? _inSlots$collapseIcon : contextIcons.slots.collapseIcon) != null ? _ref2 : TreeViewCollapseIcon,
@@ -262,50 +262,54 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
262
262
  }
263
263
  const canBeFocused = !disabled || disabledItemsFocusable;
264
264
  if (!focused && canBeFocused && event.currentTarget === event.target) {
265
- instance.focusNode(event, nodeId);
265
+ instance.focusItem(event, nodeId);
266
266
  }
267
267
  }
268
268
  const idAttribute = instance.getTreeItemId(nodeId, id);
269
- const item = /*#__PURE__*/_jsxs(TreeItemRoot, _extends({
270
- className: clsx(classes.root, className),
271
- role: "treeitem",
272
- "aria-expanded": expandable ? expanded : undefined,
273
- "aria-selected": ariaSelected,
274
- "aria-disabled": disabled || undefined,
275
- id: idAttribute,
276
- tabIndex: -1
277
- }, other, {
278
- ownerState: ownerState,
279
- onFocus: handleFocus,
280
- ref: ref,
281
- children: [/*#__PURE__*/_jsx(StyledTreeItemContent, _extends({
282
- as: ContentComponent,
283
- classes: {
284
- root: classes.content,
285
- expanded: classes.expanded,
286
- selected: classes.selected,
287
- focused: classes.focused,
288
- disabled: classes.disabled,
289
- iconContainer: classes.iconContainer,
290
- label: classes.label
291
- },
292
- label: label,
293
- nodeId: nodeId,
294
- onClick: onClick,
295
- onMouseDown: onMouseDown,
296
- icon: icon,
297
- expansionIcon: expansionIcon,
298
- displayIcon: displayIcon,
299
- ownerState: ownerState
300
- }, ContentProps)), children && /*#__PURE__*/_jsx(TreeItemGroup, _extends({
301
- as: GroupTransition
302
- }, groupTransitionProps, {
303
- children: children
304
- }))]
305
- }));
306
- 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
+ });
307
311
  });
308
- TreeItem.propTypes = {
312
+ process.env.NODE_ENV !== "production" ? TreeItem.propTypes = {
309
313
  // ----------------------------- Warning --------------------------------
310
314
  // | These PropTypes are generated from the TypeScript type definitions |
311
315
  // | To update them edit the TypeScript types and run "yarn proptypes" |
@@ -329,12 +333,12 @@ TreeItem.propTypes = {
329
333
  */
330
334
  ContentProps: PropTypes.object,
331
335
  /**
332
- * If `true`, the node is disabled.
336
+ * If `true`, the item is disabled.
333
337
  * @default false
334
338
  */
335
339
  disabled: PropTypes.bool,
336
340
  /**
337
- * The tree node label.
341
+ * The tree item label.
338
342
  */
339
343
  label: PropTypes.node,
340
344
  /**
@@ -343,7 +347,7 @@ TreeItem.propTypes = {
343
347
  nodeId: PropTypes.string.isRequired,
344
348
  /**
345
349
  * This prop isn't supported.
346
- * Use the `onNodeFocus` callback on the tree if you need to monitor a node's focus.
350
+ * Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.
347
351
  */
348
352
  onFocus: unsupportedProp,
349
353
  /**
@@ -360,4 +364,4 @@ TreeItem.propTypes = {
360
364
  * The system prop that allows defining system overrides as well as additional CSS styles.
361
365
  */
362
366
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
363
- };
367
+ } : void 0;
@@ -9,19 +9,19 @@ import { TreeViewItemId } from '../models';
9
9
  import { SlotComponentPropsFromProps } from '../internals/models';
10
10
  export interface TreeItemSlots {
11
11
  /**
12
- * The icon used to collapse the node.
12
+ * The icon used to collapse the item.
13
13
  */
14
14
  collapseIcon?: React.ElementType;
15
15
  /**
16
- * The icon used to expand the node.
16
+ * The icon used to expand the item.
17
17
  */
18
18
  expandIcon?: React.ElementType;
19
19
  /**
20
- * The icon displayed next to an end node.
20
+ * The icon displayed next to an end item.
21
21
  */
22
22
  endIcon?: React.ElementType;
23
23
  /**
24
- * The icon to display next to the tree node's label.
24
+ * The icon to display next to the tree item's label.
25
25
  */
26
26
  icon?: React.ElementType;
27
27
  /**
@@ -65,19 +65,21 @@ export interface TreeItemProps extends Omit<React.HTMLAttributes<HTMLLIElement>,
65
65
  /**
66
66
  * Props applied to ContentComponent.
67
67
  */
68
- ContentProps?: React.HTMLAttributes<HTMLElement>;
68
+ ContentProps?: React.HTMLAttributes<HTMLElement> & {
69
+ ref?: React.Ref<HTMLElement>;
70
+ };
69
71
  /**
70
- * If `true`, the node is disabled.
72
+ * If `true`, the item is disabled.
71
73
  * @default false
72
74
  */
73
75
  disabled?: boolean;
74
76
  /**
75
77
  * This prop isn't supported.
76
- * Use the `onNodeFocus` callback on the tree if you need to monitor a node's focus.
78
+ * Use the `onItemFocus` callback on the tree if you need to monitor a item's focus.
77
79
  */
78
80
  onFocus?: null;
79
81
  /**
80
- * The tree node label.
82
+ * The tree item label.
81
83
  */
82
84
  label?: React.ReactNode;
83
85
  /**
@@ -14,7 +14,7 @@ export function useTreeItemState(nodeId) {
14
14
  const handleExpansion = event => {
15
15
  if (!disabled) {
16
16
  if (!focused) {
17
- instance.focusNode(event, nodeId);
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.focusNode(event, nodeId);
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>>;