@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
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` [](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` [](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` [](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` [](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
|
-
|
|
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
|
|
152
|
+
* Expanded item ids.
|
|
153
153
|
* Used when the item's expansion is not controlled.
|
|
154
154
|
* @default []
|
|
155
155
|
*/
|
|
156
|
-
|
|
156
|
+
defaultExpandedItems: PropTypes.arrayOf(PropTypes.string),
|
|
157
157
|
/**
|
|
158
|
-
* Selected
|
|
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
|
-
|
|
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
|
|
174
|
+
* Expanded item ids.
|
|
175
175
|
* Used when the item's expansion is controlled.
|
|
176
176
|
*/
|
|
177
|
-
|
|
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}
|
|
217
|
+
* @param {array} itemIds The ids of the expanded items.
|
|
218
218
|
*/
|
|
219
|
-
|
|
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}
|
|
224
|
-
* @param {array} isExpanded `true` if the
|
|
223
|
+
* @param {array} itemId The itemId of the modified item.
|
|
224
|
+
* @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.
|
|
225
225
|
*/
|
|
226
|
-
|
|
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}
|
|
231
|
-
* @param {string} value of the focused
|
|
230
|
+
* @param {string} itemId The id of the focused item.
|
|
231
|
+
* @param {string} value of the focused item.
|
|
232
232
|
*/
|
|
233
|
-
|
|
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}
|
|
238
|
-
* @param {array} isSelected `true` if the
|
|
237
|
+
* @param {array} itemId The itemId of the modified item.
|
|
238
|
+
* @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
|
|
239
239
|
*/
|
|
240
|
-
|
|
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}
|
|
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
|
-
|
|
247
|
+
onSelectedItemsChange: PropTypes.func,
|
|
248
248
|
/**
|
|
249
|
-
* Selected
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
113
|
+
* Expanded item ids.
|
|
114
114
|
* Used when the item's expansion is not controlled.
|
|
115
115
|
* @default []
|
|
116
116
|
*/
|
|
117
|
-
|
|
117
|
+
defaultExpandedItems: PropTypes.arrayOf(PropTypes.string),
|
|
118
118
|
/**
|
|
119
|
-
* Selected
|
|
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
|
-
|
|
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
|
|
135
|
+
* Expanded item ids.
|
|
136
136
|
* Used when the item's expansion is controlled.
|
|
137
137
|
*/
|
|
138
|
-
|
|
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}
|
|
152
|
+
* @param {array} itemIds The ids of the expanded items.
|
|
153
153
|
*/
|
|
154
|
-
|
|
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}
|
|
159
|
-
* @param {array} isExpanded `true` if the
|
|
158
|
+
* @param {array} itemId The itemId of the modified item.
|
|
159
|
+
* @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.
|
|
160
160
|
*/
|
|
161
|
-
|
|
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}
|
|
166
|
-
* @param {string} value of the focused
|
|
165
|
+
* @param {string} itemId The id of the focused item.
|
|
166
|
+
* @param {string} value of the focused item.
|
|
167
167
|
*/
|
|
168
|
-
|
|
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}
|
|
173
|
-
* @param {array} isSelected `true` if the
|
|
172
|
+
* @param {array} itemId The itemId of the modified item.
|
|
173
|
+
* @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
|
|
174
174
|
*/
|
|
175
|
-
|
|
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}
|
|
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
|
-
|
|
182
|
+
onSelectedItemsChange: PropTypes.func,
|
|
183
183
|
/**
|
|
184
|
-
* Selected
|
|
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
|
-
|
|
187
|
+
selectedItems: PropTypes.any,
|
|
188
188
|
/**
|
|
189
189
|
* The props used for each component slot.
|
|
190
190
|
*/
|
package/TreeItem/TreeItem.js
CHANGED
|
@@ -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
|
|
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.
|
|
265
|
+
instance.focusItem(event, nodeId);
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
268
|
const idAttribute = instance.getTreeItemId(nodeId, id);
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
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
|
|
336
|
+
* If `true`, the item is disabled.
|
|
333
337
|
* @default false
|
|
334
338
|
*/
|
|
335
339
|
disabled: PropTypes.bool,
|
|
336
340
|
/**
|
|
337
|
-
* The tree
|
|
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 `
|
|
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
|
|
12
|
+
* The icon used to collapse the item.
|
|
13
13
|
*/
|
|
14
14
|
collapseIcon?: React.ElementType;
|
|
15
15
|
/**
|
|
16
|
-
* The icon used to expand the
|
|
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
|
|
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
|
|
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
|
|
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 `
|
|
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
|
|
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.
|
|
17
|
+
instance.focusItem(event, nodeId);
|
|
18
18
|
}
|
|
19
19
|
const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
|
|
20
20
|
|
|
@@ -27,7 +27,7 @@ export function useTreeItemState(nodeId) {
|
|
|
27
27
|
const handleSelection = event => {
|
|
28
28
|
if (!disabled) {
|
|
29
29
|
if (!focused) {
|
|
30
|
-
instance.
|
|
30
|
+
instance.focusItem(event, nodeId);
|
|
31
31
|
}
|
|
32
32
|
const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
|
|
33
33
|
if (multiple) {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { TreeItem2Props } from './TreeItem2.types';
|
|
3
|
+
export declare const TreeItem2Root: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, Pick<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, keyof React.ClassAttributes<HTMLLIElement> | keyof React.LiHTMLAttributes<HTMLLIElement>>, {}>;
|
|
4
|
+
export declare const TreeItem2Content: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
5
|
+
export declare const TreeItem2Label: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
|
|
6
|
+
export declare const TreeItem2IconContainer: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
|
|
7
|
+
export declare const TreeItem2GroupTransition: import("@emotion/styled").StyledComponent<Pick<import("@mui/material/Collapse").CollapseProps, keyof import("@mui/material/Collapse").CollapseProps> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* Demos:
|
|
11
|
+
*
|
|
12
|
+
* - [Tree View](https://mui.com/x/react-tree-view/)
|
|
13
|
+
*
|
|
14
|
+
* API:
|
|
15
|
+
*
|
|
16
|
+
* - [TreeItem2 API](https://mui.com/x/api/tree-view/tree-item-2/)
|
|
17
|
+
*/
|
|
18
|
+
export declare const TreeItem2: React.ForwardRefExoticComponent<TreeItem2Props & React.RefAttributes<HTMLLIElement>>;
|