@mui/x-tree-view 8.15.0 → 8.17.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.
- package/CHANGELOG.md +207 -0
- package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.d.ts +1 -2
- package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +0 -2
- package/TreeItemIcon/TreeItemIcon.d.ts +1 -2
- package/TreeItemProvider/TreeItemProvider.d.ts +1 -2
- package/esm/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.d.ts +1 -2
- package/esm/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +0 -1
- package/esm/TreeItemIcon/TreeItemIcon.d.ts +1 -2
- package/esm/TreeItemProvider/TreeItemProvider.d.ts +1 -2
- package/esm/icons/icons.js +0 -1
- package/esm/index.js +1 -1
- package/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.d.ts +1 -1
- package/esm/internals/TreeViewProvider/TreeViewProvider.d.ts +1 -2
- package/esm/internals/components/RichTreeViewItems.d.ts +1 -1
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +1 -1
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +3 -3
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +1 -1
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +23 -3
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +4 -0
- package/esm/useTreeItem/useTreeItem.js +0 -15
- package/esm/useTreeItem/useTreeItem.types.d.ts +0 -1
- package/icons/icons.js +0 -2
- package/index.js +1 -1
- package/internals/TreeViewProvider/TreeViewChildrenItemProvider.d.ts +1 -1
- package/internals/TreeViewProvider/TreeViewProvider.d.ts +1 -2
- package/internals/components/RichTreeViewItems.d.ts +1 -1
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +1 -1
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +3 -3
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +1 -1
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +23 -3
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +4 -0
- package/package.json +2 -2
- package/useTreeItem/useTreeItem.js +0 -15
- package/useTreeItem/useTreeItem.types.d.ts +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,213 @@
|
|
|
5
5
|
All notable changes to this project will be documented in this file.
|
|
6
6
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
7
7
|
|
|
8
|
+
## 8.17.0
|
|
9
|
+
|
|
10
|
+
_Nov 5, 2025_
|
|
11
|
+
|
|
12
|
+
We'd like to extend a big thank you to the 13 contributors who made this release possible. Here are some highlights ✨:
|
|
13
|
+
|
|
14
|
+
- Add `colorGetter` prop to cartesian charts series
|
|
15
|
+
|
|
16
|
+
<img width="400" alt="Image" src="https://github.com/user-attachments/assets/d8b1263f-794e-4939-b17e-87350fdd1746" />
|
|
17
|
+
|
|
18
|
+
- 🌎 Add Catalan (ca-ES) locale on the Data Grid
|
|
19
|
+
- 🌎 Add Norwegian Bokmål (nb-NO) locale on the Charts
|
|
20
|
+
- 🐞 Bugfixes
|
|
21
|
+
- 📚 Documentation improvements
|
|
22
|
+
|
|
23
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
24
|
+
@frncesc, @Methuselah96, @samuelwalk, @htollefsen
|
|
25
|
+
|
|
26
|
+
The following team members contributed to this release:
|
|
27
|
+
@alexfauquette, @bernardobelchior, @flaviendelangle, @Janpot, @JCQuintas, @mnajdova, @rita-codes, @arminmeh, @brijeshb42
|
|
28
|
+
|
|
29
|
+
### Data Grid
|
|
30
|
+
|
|
31
|
+
#### `@mui/x-data-grid@8.17.0`
|
|
32
|
+
|
|
33
|
+
- [DataGrid] Stop event propagation on data grid action buttons (GridActionsCellItem) (#19513) @Copilot
|
|
34
|
+
- [DataGrid] Update cell editable state if `editable` prop is updated in the column definition (#20147) @arminmeh
|
|
35
|
+
- [DataGrid] Wait for external model updates before resetting pagination after sort/filter (#20162) @arminmeh
|
|
36
|
+
- [l10n] Add Catalan (ca-ES) locale (#20154) @frncesc
|
|
37
|
+
- [l10n] Improve Arabic (ar-SD) locale (#20185) @samuelwalk
|
|
38
|
+
|
|
39
|
+
#### `@mui/x-data-grid-pro@8.17.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
40
|
+
|
|
41
|
+
Same changes as in `@mui/x-data-grid@8.17.0`.
|
|
42
|
+
|
|
43
|
+
#### `@mui/x-data-grid-premium@8.17.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
44
|
+
|
|
45
|
+
Same changes as in `@mui/x-data-grid-pro@8.17.0`.
|
|
46
|
+
|
|
47
|
+
### Date and Time Pickers
|
|
48
|
+
|
|
49
|
+
#### `@mui/x-date-pickers@8.17.0`
|
|
50
|
+
|
|
51
|
+
Internal changes.
|
|
52
|
+
|
|
53
|
+
#### `@mui/x-date-pickers-pro@8.17.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
54
|
+
|
|
55
|
+
Same changes as in `@mui/x-date-pickers@8.17.0`.
|
|
56
|
+
|
|
57
|
+
### Charts
|
|
58
|
+
|
|
59
|
+
#### `@mui/x-charts@8.17.0`
|
|
60
|
+
|
|
61
|
+
- [charts] Add `barLabel` to bar series. Deprecate `barLabel` in `BarPlot`. (#20184) @bernardobelchior
|
|
62
|
+
- [charts] Add series color callback (#20084) @bernardobelchior
|
|
63
|
+
- [charts] Expose `ChartsSurface` classes (#20180) @bernardobelchior
|
|
64
|
+
- [charts] Fix chart cut off when inside `overflow: scroll` container (#20182) @bernardobelchior
|
|
65
|
+
- [charts] Fix tick label overflow on multiple axes and series demo (#20152) @bernardobelchior
|
|
66
|
+
- [charts] Organize series config (#20155) @bernardobelchior
|
|
67
|
+
- [charts] Use selectors from `@mui/x-internals` (#20052) @alexfauquette
|
|
68
|
+
- [charts] Use store from `@mui/x-internals` (#20121) @alexfauquette
|
|
69
|
+
- [charts] Add `useDataset` hook (#20205) @JCQuintas
|
|
70
|
+
- [l10n] Add Norwegian Bokmål (nb-NO) locale (#20197) @htollefsen
|
|
71
|
+
|
|
72
|
+
#### `@mui/x-charts-pro@8.17.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
73
|
+
|
|
74
|
+
Same changes as in `@mui/x-charts@8.17.0`, plus:
|
|
75
|
+
|
|
76
|
+
- [charts-pro] Fix zoom pan issue when controlled (#20163) @JCQuintas
|
|
77
|
+
|
|
78
|
+
#### `@mui/x-charts-premium@8.17.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
79
|
+
|
|
80
|
+
Same changes as in `@mui/x-charts-pro@8.17.0`.
|
|
81
|
+
|
|
82
|
+
### Tree View
|
|
83
|
+
|
|
84
|
+
#### `@mui/x-tree-view@8.17.0`
|
|
85
|
+
|
|
86
|
+
- [tree view] Accept read only arrays in `expandedItems` prop (#20181) @Methuselah96
|
|
87
|
+
- [tree view] Use `aria-checked` instead of `aria-selected` on items (#19851) @flaviendelangle
|
|
88
|
+
|
|
89
|
+
#### `@mui/x-tree-view-pro@8.17.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
90
|
+
|
|
91
|
+
Same changes as in `@mui/x-tree-view@8.17.0`.
|
|
92
|
+
|
|
93
|
+
### Codemod
|
|
94
|
+
|
|
95
|
+
#### `@mui/x-codemod@8.17.0`
|
|
96
|
+
|
|
97
|
+
Internal changes.
|
|
98
|
+
|
|
99
|
+
### Docs
|
|
100
|
+
|
|
101
|
+
- [docs] Fix focus issues in the action column demo (#20178) @arminmeh
|
|
102
|
+
- [docs] Remove hidden Tree View headless page (#20119) @flaviendelangle
|
|
103
|
+
- [docs] Fix some external redirects (#20211) @Janpot
|
|
104
|
+
|
|
105
|
+
### Core
|
|
106
|
+
|
|
107
|
+
- [code-infra] Fix cci job timeout due to buffered test output (#20193) @Janpot
|
|
108
|
+
- [code-infra] Fix publish workflow (#20140) @bernardobelchior
|
|
109
|
+
- [code-infra] Increase JSDOM test parallelism (#20179) @Janpot
|
|
110
|
+
- [code-infra] Remove React import requirement for jsx (#20144) @brijeshb42
|
|
111
|
+
- [code-infra] Replace `getInitialProps` with `getStaticProps` (#20192) @Janpot
|
|
112
|
+
- [code-infra] git-ignore next-env.d.ts (#20177) @Janpot
|
|
113
|
+
- [code-infra] Stabilize screenshot testing (#19868) @Janpot
|
|
114
|
+
|
|
115
|
+
## 8.16.0
|
|
116
|
+
|
|
117
|
+
_Oct 29, 2025_
|
|
118
|
+
|
|
119
|
+
We'd like to extend a big thank you to the 14 contributors who made this release possible. Here are some highlights ✨:
|
|
120
|
+
|
|
121
|
+
- 🖌️ Add `brush` zoom interaction to charts
|
|
122
|
+
- 🔁 [Server-side update](https://mui.com/x/react-data-grid/server-side-data/#updating-server-side-data) in a grid with tree data/row grouping and aggregation will trigger re-fetch for all parent levels of that row to update aggregated values. See the [demo](https://mui.com/x/react-data-grid/server-side-data/aggregation/#usage-with-tree-data).
|
|
123
|
+
|
|
124
|
+
Special thanks go out to the community members for their valuable contributions:
|
|
125
|
+
@felix-wg, @frncesc, @sai6855
|
|
126
|
+
|
|
127
|
+
The following are all team members who have contributed to this release:
|
|
128
|
+
@alexfauquette, @arminmeh, @bernardobelchior, @brijeshb42, @flaviendelangle, @JCQuintas, @MBilalShafi, @mbrookes, @michelengelen, @noraleonte, @rita-codes
|
|
129
|
+
|
|
130
|
+
### Data Grid
|
|
131
|
+
|
|
132
|
+
#### `@mui/x-data-grid@8.16.0`
|
|
133
|
+
|
|
134
|
+
- [DataGrid] Ignore `Ctrl+A` key combination for the row selection in the community version (#20110) @felix-wg
|
|
135
|
+
- [DataGrid][l10n] Improve Spanish (es-ES) locale (#20134) @frncesc
|
|
136
|
+
|
|
137
|
+
#### `@mui/x-data-grid-pro@8.16.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
138
|
+
|
|
139
|
+
Same changes as in `@mui/x-data-grid@8.16.0`, plus:
|
|
140
|
+
|
|
141
|
+
- [DataGridPro] Add explicit return type to `getVisibleRowsLookup()` to fix the build with `tsc` (#20116) @arminmeh
|
|
142
|
+
- [DataGridPro] Retain the expansion state with expansion configuration props (#20126) @MBilalShafi
|
|
143
|
+
|
|
144
|
+
#### `@mui/x-data-grid-premium@8.16.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
145
|
+
|
|
146
|
+
Same changes as in `@mui/x-data-grid-pro@8.16.0`, plus:
|
|
147
|
+
|
|
148
|
+
- [DataGridPremium] Export and restore chart integration state (#20079) @arminmeh
|
|
149
|
+
- [DataGridPremium] Fix grouping column `valueFormatter()` crash (#20070) @sai6855
|
|
150
|
+
- [DataGridPremium] Refetch aggregation data after row update with server-side aggregation (#20039) @arminmeh
|
|
151
|
+
|
|
152
|
+
### Date and Time Pickers
|
|
153
|
+
|
|
154
|
+
#### `@mui/x-date-pickers@8.16.0`
|
|
155
|
+
|
|
156
|
+
- [pickers] Prevent blur event propagation on individual sections (#19825) @michelengelen
|
|
157
|
+
|
|
158
|
+
#### `@mui/x-date-pickers-pro@8.16.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
159
|
+
|
|
160
|
+
Same changes as in `@mui/x-date-pickers@8.16.0`.
|
|
161
|
+
|
|
162
|
+
### Charts
|
|
163
|
+
|
|
164
|
+
#### `@mui/x-charts@8.16.0`
|
|
165
|
+
|
|
166
|
+
- [charts] Allow tooltip to anchor items (#19954) @alexfauquette
|
|
167
|
+
- [charts] Fix behavior of grouped axis (#20118) @JCQuintas
|
|
168
|
+
- [charts] Move scale symlog inside scales (#20137) @JCQuintas
|
|
169
|
+
- [charts] Fix AreaChartConnectNulls demo height not correctly resizing (#20078) @sai6855
|
|
170
|
+
- [charts] Fix charts resizing overflow (#20080) @alexfauquette
|
|
171
|
+
- [charts] Fix tooltip not showing on first render (#20115) @bernardobelchior
|
|
172
|
+
- [charts] Handle `undefined` id and color in series (#20087) @bernardobelchior
|
|
173
|
+
- [charts] Remove `useMemo` from isZoomOn*Enabled and isPanOn*Enabled hooks (#20132) @Copilot
|
|
174
|
+
- [charts] Use static data for perf (#20072) @JCQuintas
|
|
175
|
+
- [charts] Move scale symlog inside scales (#20137) @JCQuintas
|
|
176
|
+
|
|
177
|
+
#### `@mui/x-charts-pro@8.16.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
178
|
+
|
|
179
|
+
Same changes as in `@mui/x-charts@8.16.0`, plus:
|
|
180
|
+
|
|
181
|
+
- [charts-pro] Add `brush` zoom interaction (#19899) @JCQuintas
|
|
182
|
+
- [charts-pro] Add sankey performance check (#20069) @JCQuintas
|
|
183
|
+
|
|
184
|
+
#### `@mui/x-charts-premium@8.16.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
185
|
+
|
|
186
|
+
Same changes as in `@mui/x-charts-pro@8.16.0`.
|
|
187
|
+
|
|
188
|
+
### Tree View
|
|
189
|
+
|
|
190
|
+
#### `@mui/x-tree-view@8.16.0`
|
|
191
|
+
|
|
192
|
+
Internal changes.
|
|
193
|
+
|
|
194
|
+
#### `@mui/x-tree-view-pro@8.16.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
195
|
+
|
|
196
|
+
Same changes as in `@mui/x-tree-view@8.16.0`.
|
|
197
|
+
|
|
198
|
+
### Codemod
|
|
199
|
+
|
|
200
|
+
#### `@mui/x-codemod@8.16.0`
|
|
201
|
+
|
|
202
|
+
Internal changes.
|
|
203
|
+
|
|
204
|
+
### Core
|
|
205
|
+
|
|
206
|
+
- [code-infra] Setup eslint compat plugin (#20105) @brijeshb42
|
|
207
|
+
- [code-infra] Improve store types (#20129) @JCQuintas
|
|
208
|
+
- [docs] Update the callout in `rows` prop documentation (#20127) @MBilalShafi
|
|
209
|
+
- [docs-infra] Refine changelog contributor acknowledgment messages (#20123) @mbrookes
|
|
210
|
+
|
|
211
|
+
### Miscellaneous
|
|
212
|
+
|
|
213
|
+
- [x-telemetry] Skip telemetry tests on browser mode (#20122) @bernardobelchior
|
|
214
|
+
|
|
8
215
|
## 8.15.0
|
|
9
216
|
|
|
10
217
|
_Oct 23, 2025_
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { TreeItemDragAndDropOverlayProps } from "./TreeItemDragAndDropOverlay.types.js";
|
|
3
|
-
declare function TreeItemDragAndDropOverlay(props: TreeItemDragAndDropOverlayProps):
|
|
2
|
+
declare function TreeItemDragAndDropOverlay(props: TreeItemDragAndDropOverlayProps): import("react/jsx-runtime").JSX.Element | null;
|
|
4
3
|
declare namespace TreeItemDragAndDropOverlay {
|
|
5
4
|
var propTypes: any;
|
|
6
5
|
}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
'use client';
|
|
3
3
|
|
|
4
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
6
5
|
Object.defineProperty(exports, "__esModule", {
|
|
7
6
|
value: true
|
|
8
7
|
});
|
|
9
8
|
exports.TreeItemDragAndDropOverlay = TreeItemDragAndDropOverlay;
|
|
10
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
var React = _interopRequireWildcard(require("react"));
|
|
12
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
11
|
var _styles = require("@mui/material/styles");
|
|
14
12
|
var _createStyled = require("@mui/system/createStyled");
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { TreeItemIconProps } from "./TreeItemIcon.types.js";
|
|
3
|
-
declare function TreeItemIcon(props: TreeItemIconProps):
|
|
2
|
+
declare function TreeItemIcon(props: TreeItemIconProps): import("react/jsx-runtime").JSX.Element | null;
|
|
4
3
|
declare namespace TreeItemIcon {
|
|
5
4
|
var propTypes: any;
|
|
6
5
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { TreeItemProviderProps } from "./TreeItemProvider.types.js";
|
|
3
|
-
declare function TreeItemProvider(props: TreeItemProviderProps):
|
|
2
|
+
declare function TreeItemProvider(props: TreeItemProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
4
3
|
declare namespace TreeItemProvider {
|
|
5
4
|
var propTypes: any;
|
|
6
5
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { TreeItemDragAndDropOverlayProps } from "./TreeItemDragAndDropOverlay.types.js";
|
|
3
|
-
declare function TreeItemDragAndDropOverlay(props: TreeItemDragAndDropOverlayProps):
|
|
2
|
+
declare function TreeItemDragAndDropOverlay(props: TreeItemDragAndDropOverlayProps): import("react/jsx-runtime").JSX.Element | null;
|
|
4
3
|
declare namespace TreeItemDragAndDropOverlay {
|
|
5
4
|
var propTypes: any;
|
|
6
5
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { TreeItemIconProps } from "./TreeItemIcon.types.js";
|
|
3
|
-
declare function TreeItemIcon(props: TreeItemIconProps):
|
|
2
|
+
declare function TreeItemIcon(props: TreeItemIconProps): import("react/jsx-runtime").JSX.Element | null;
|
|
4
3
|
declare namespace TreeItemIcon {
|
|
5
4
|
var propTypes: any;
|
|
6
5
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { TreeItemProviderProps } from "./TreeItemProvider.types.js";
|
|
3
|
-
declare function TreeItemProvider(props: TreeItemProviderProps):
|
|
2
|
+
declare function TreeItemProvider(props: TreeItemProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
4
3
|
declare namespace TreeItemProvider {
|
|
5
4
|
var propTypes: any;
|
|
6
5
|
}
|
package/esm/icons/icons.js
CHANGED
package/esm/index.js
CHANGED
|
@@ -5,7 +5,7 @@ interface TreeViewChildrenItemProviderProps {
|
|
|
5
5
|
idAttribute: string | null;
|
|
6
6
|
children: React.ReactNode;
|
|
7
7
|
}
|
|
8
|
-
export declare function TreeViewChildrenItemProvider(props: TreeViewChildrenItemProviderProps):
|
|
8
|
+
export declare function TreeViewChildrenItemProvider(props: TreeViewChildrenItemProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
9
9
|
export declare namespace TreeViewChildrenItemProvider {
|
|
10
10
|
var propTypes: any;
|
|
11
11
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { TreeViewProviderProps } from "./TreeViewProvider.types.js";
|
|
3
2
|
import { TreeViewAnyPluginSignature } from "../models/index.js";
|
|
4
3
|
/**
|
|
@@ -6,4 +5,4 @@ import { TreeViewAnyPluginSignature } from "../models/index.js";
|
|
|
6
5
|
*
|
|
7
6
|
* @ignore - do not document.
|
|
8
7
|
*/
|
|
9
|
-
export declare function TreeViewProvider<TSignatures extends readonly TreeViewAnyPluginSignature[]>(props: TreeViewProviderProps<TSignatures>):
|
|
8
|
+
export declare function TreeViewProvider<TSignatures extends readonly TreeViewAnyPluginSignature[]>(props: TreeViewProviderProps<TSignatures>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { SlotComponentProps } from '@mui/utils/types';
|
|
3
3
|
import { TreeItem, TreeItemProps } from "../../TreeItem/index.js";
|
|
4
4
|
import { TreeViewItemId } from "../../models/index.js";
|
|
5
|
-
export declare function RichTreeViewItems(props: RichTreeViewItemsProps):
|
|
5
|
+
export declare function RichTreeViewItems(props: RichTreeViewItemsProps): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
interface RichTreeViewItemsOwnerState {
|
|
7
7
|
itemId: TreeViewItemId;
|
|
8
8
|
label: string;
|
|
@@ -4,7 +4,7 @@ export declare const expansionSelectors: {
|
|
|
4
4
|
/**
|
|
5
5
|
* Gets the expanded items as provided to the component.
|
|
6
6
|
*/
|
|
7
|
-
expandedItemsRaw: (state: TreeViewState<[UseTreeViewExpansionSignature]>) => string[];
|
|
7
|
+
expandedItemsRaw: (state: TreeViewState<[UseTreeViewExpansionSignature]>) => readonly string[];
|
|
8
8
|
/**
|
|
9
9
|
* Gets the expanded items as a Map.
|
|
10
10
|
*/
|
|
@@ -55,13 +55,13 @@ export interface UseTreeViewExpansionParameters {
|
|
|
55
55
|
* Expanded item ids.
|
|
56
56
|
* Used when the item's expansion is controlled.
|
|
57
57
|
*/
|
|
58
|
-
expandedItems?: string[];
|
|
58
|
+
expandedItems?: readonly string[];
|
|
59
59
|
/**
|
|
60
60
|
* Expanded item ids.
|
|
61
61
|
* Used when the item's expansion is not controlled.
|
|
62
62
|
* @default []
|
|
63
63
|
*/
|
|
64
|
-
defaultExpandedItems?: string[];
|
|
64
|
+
defaultExpandedItems?: readonly string[];
|
|
65
65
|
/**
|
|
66
66
|
* Callback fired when Tree Items are expanded/collapsed.
|
|
67
67
|
* @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemExpansion()` method.
|
|
@@ -84,7 +84,7 @@ export interface UseTreeViewExpansionParameters {
|
|
|
84
84
|
export type UseTreeViewExpansionParametersWithDefaults = DefaultizedProps<UseTreeViewExpansionParameters, 'defaultExpandedItems'>;
|
|
85
85
|
export interface UseTreeViewExpansionState {
|
|
86
86
|
expansion: {
|
|
87
|
-
expandedItems: string[];
|
|
87
|
+
expandedItems: readonly string[];
|
|
88
88
|
expansionTrigger: 'content' | 'iconContainer';
|
|
89
89
|
};
|
|
90
90
|
}
|
|
@@ -37,7 +37,7 @@ export const useTreeViewLabel = ({
|
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
useIsoLayoutEffect(() => {
|
|
40
|
-
store.set('label', _extends({}, store.state.
|
|
40
|
+
store.set('label', _extends({}, store.state.label, {
|
|
41
41
|
isItemEditable: params.isItemEditable
|
|
42
42
|
}));
|
|
43
43
|
}, [store, params.isItemEditable]);
|
|
@@ -45,9 +45,29 @@ export const useTreeViewSelectionItemPlugin = ({
|
|
|
45
45
|
} = useTreeViewContext();
|
|
46
46
|
const isCheckboxSelectionEnabled = useStore(store, selectionSelectors.isCheckboxSelectionEnabled);
|
|
47
47
|
const isItemSelectionEnabled = useStore(store, selectionSelectors.canItemBeSelected, itemId);
|
|
48
|
-
const
|
|
48
|
+
const selectionStatus = useStore(store, selectorCheckboxSelectionStatus, itemId);
|
|
49
|
+
const isSelectionEnabledForItem = useStore(store, selectionSelectors.canItemBeSelected, itemId);
|
|
49
50
|
return {
|
|
50
51
|
propsEnhancers: {
|
|
52
|
+
root: () => {
|
|
53
|
+
// https://www.w3.org/WAI/ARIA/apg/patterns/treeview/
|
|
54
|
+
let ariaChecked;
|
|
55
|
+
if (selectionStatus === 'checked') {
|
|
56
|
+
// - each selected node has aria-checked set to true.
|
|
57
|
+
ariaChecked = true;
|
|
58
|
+
} else if (selectionStatus === 'indeterminate') {
|
|
59
|
+
ariaChecked = 'mixed';
|
|
60
|
+
} else if (!isSelectionEnabledForItem) {
|
|
61
|
+
// - if the tree contains nodes that are not selectable, aria-checked is not present on those nodes.
|
|
62
|
+
ariaChecked = undefined;
|
|
63
|
+
} else {
|
|
64
|
+
// - all nodes that are selectable but not selected have aria-checked set to false.
|
|
65
|
+
ariaChecked = false;
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
'aria-checked': ariaChecked
|
|
69
|
+
};
|
|
70
|
+
},
|
|
51
71
|
checkbox: ({
|
|
52
72
|
externalEventHandlers,
|
|
53
73
|
interactions
|
|
@@ -67,8 +87,8 @@ export const useTreeViewSelectionItemPlugin = ({
|
|
|
67
87
|
onChange: handleChange,
|
|
68
88
|
visible: isCheckboxSelectionEnabled,
|
|
69
89
|
disabled: !isItemSelectionEnabled,
|
|
70
|
-
checked:
|
|
71
|
-
indeterminate:
|
|
90
|
+
checked: selectionStatus === 'checked',
|
|
91
|
+
indeterminate: selectionStatus === 'indeterminate'
|
|
72
92
|
};
|
|
73
93
|
}
|
|
74
94
|
}
|
|
@@ -130,6 +130,9 @@ export type UseTreeViewSelectionSignature = TreeViewPluginSignature<{
|
|
|
130
130
|
state: UseTreeViewSelectionState;
|
|
131
131
|
dependencies: [UseTreeViewItemsSignature, UseTreeViewExpansionSignature, UseTreeViewItemsSignature];
|
|
132
132
|
}>;
|
|
133
|
+
export interface UseTreeItemRootSlotPropsFromSelection {
|
|
134
|
+
'aria-checked': React.AriaAttributes['aria-checked'];
|
|
135
|
+
}
|
|
133
136
|
export interface UseTreeItemCheckboxSlotPropsFromSelection {
|
|
134
137
|
visible?: boolean;
|
|
135
138
|
checked?: boolean;
|
|
@@ -139,5 +142,6 @@ export interface UseTreeItemCheckboxSlotPropsFromSelection {
|
|
|
139
142
|
onChange?: TreeViewCancellableEventHandler<React.ChangeEvent<HTMLInputElement>>;
|
|
140
143
|
}
|
|
141
144
|
declare module '@mui/x-tree-view/useTreeItem' {
|
|
145
|
+
interface UseTreeItemRootSlotOwnProps extends UseTreeItemRootSlotPropsFromSelection {}
|
|
142
146
|
interface UseTreeItemCheckboxSlotOwnProps extends UseTreeItemCheckboxSlotPropsFromSelection {}
|
|
143
147
|
}
|
|
@@ -54,7 +54,6 @@ export const useTreeItem = parameters => {
|
|
|
54
54
|
const handleContentRef = useMergedRefs(contentRef, contentRefObject);
|
|
55
55
|
const checkboxRef = React.useRef(null);
|
|
56
56
|
const treeId = useStore(store, idSelectors.treeId);
|
|
57
|
-
const isSelectionEnabledForItem = useStore(store, selectionSelectors.canItemBeSelected, itemId);
|
|
58
57
|
const isCheckboxSelectionEnabled = useStore(store, selectionSelectors.isCheckboxSelectionEnabled);
|
|
59
58
|
const idAttribute = generateTreeItemIdAttribute({
|
|
60
59
|
itemId,
|
|
@@ -147,26 +146,12 @@ export const useTreeItem = parameters => {
|
|
|
147
146
|
});
|
|
148
147
|
const getRootProps = (externalProps = {}) => {
|
|
149
148
|
const externalEventHandlers = _extends({}, extractEventHandlers(parameters), extractEventHandlers(externalProps));
|
|
150
|
-
|
|
151
|
-
// https://www.w3.org/WAI/ARIA/apg/patterns/treeview/
|
|
152
|
-
let ariaSelected;
|
|
153
|
-
if (status.selected) {
|
|
154
|
-
// - each selected node has aria-selected set to true.
|
|
155
|
-
ariaSelected = true;
|
|
156
|
-
} else if (!isSelectionEnabledForItem) {
|
|
157
|
-
// - if the tree contains nodes that are not selectable, aria-selected is not present on those nodes.
|
|
158
|
-
ariaSelected = undefined;
|
|
159
|
-
} else {
|
|
160
|
-
// - all nodes that are selectable but not selected have aria-selected set to false.
|
|
161
|
-
ariaSelected = false;
|
|
162
|
-
}
|
|
163
149
|
const props = _extends({}, externalEventHandlers, {
|
|
164
150
|
ref: handleRootRef,
|
|
165
151
|
role: 'treeitem',
|
|
166
152
|
tabIndex: shouldBeAccessibleWithTab ? 0 : -1,
|
|
167
153
|
id: idAttribute,
|
|
168
154
|
'aria-expanded': status.expandable ? status.expanded : undefined,
|
|
169
|
-
'aria-selected': ariaSelected,
|
|
170
155
|
'aria-disabled': status.disabled || undefined
|
|
171
156
|
}, externalProps, {
|
|
172
157
|
style: _extends({}, externalProps.style ?? {}, {
|
|
@@ -42,7 +42,6 @@ export interface UseTreeItemRootSlotPropsFromUseTreeItem {
|
|
|
42
42
|
tabIndex: 0 | -1;
|
|
43
43
|
id: string;
|
|
44
44
|
'aria-expanded': React.AriaAttributes['aria-expanded'];
|
|
45
|
-
'aria-selected': React.AriaAttributes['aria-selected'];
|
|
46
45
|
'aria-disabled': React.AriaAttributes['aria-disabled'];
|
|
47
46
|
onFocus: TreeViewCancellableEventHandler<React.FocusEvent<HTMLElement>>;
|
|
48
47
|
onBlur: TreeViewCancellableEventHandler<React.FocusEvent<HTMLElement>>;
|
package/icons/icons.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.TreeViewExpandIcon = exports.TreeViewCollapseIcon = void 0;
|
|
8
7
|
var _utils = require("@mui/material/utils");
|
|
9
|
-
var React = _interopRequireWildcard(require("react"));
|
|
10
8
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
9
|
const TreeViewExpandIcon = exports.TreeViewExpandIcon = (0, _utils.createSvgIcon)(/*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
|
|
12
10
|
d: "M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"
|
package/index.js
CHANGED
|
@@ -5,7 +5,7 @@ interface TreeViewChildrenItemProviderProps {
|
|
|
5
5
|
idAttribute: string | null;
|
|
6
6
|
children: React.ReactNode;
|
|
7
7
|
}
|
|
8
|
-
export declare function TreeViewChildrenItemProvider(props: TreeViewChildrenItemProviderProps):
|
|
8
|
+
export declare function TreeViewChildrenItemProvider(props: TreeViewChildrenItemProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
9
9
|
export declare namespace TreeViewChildrenItemProvider {
|
|
10
10
|
var propTypes: any;
|
|
11
11
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { TreeViewProviderProps } from "./TreeViewProvider.types.js";
|
|
3
2
|
import { TreeViewAnyPluginSignature } from "../models/index.js";
|
|
4
3
|
/**
|
|
@@ -6,4 +5,4 @@ import { TreeViewAnyPluginSignature } from "../models/index.js";
|
|
|
6
5
|
*
|
|
7
6
|
* @ignore - do not document.
|
|
8
7
|
*/
|
|
9
|
-
export declare function TreeViewProvider<TSignatures extends readonly TreeViewAnyPluginSignature[]>(props: TreeViewProviderProps<TSignatures>):
|
|
8
|
+
export declare function TreeViewProvider<TSignatures extends readonly TreeViewAnyPluginSignature[]>(props: TreeViewProviderProps<TSignatures>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { SlotComponentProps } from '@mui/utils/types';
|
|
3
3
|
import { TreeItem, TreeItemProps } from "../../TreeItem/index.js";
|
|
4
4
|
import { TreeViewItemId } from "../../models/index.js";
|
|
5
|
-
export declare function RichTreeViewItems(props: RichTreeViewItemsProps):
|
|
5
|
+
export declare function RichTreeViewItems(props: RichTreeViewItemsProps): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
interface RichTreeViewItemsOwnerState {
|
|
7
7
|
itemId: TreeViewItemId;
|
|
8
8
|
label: string;
|
|
@@ -4,7 +4,7 @@ export declare const expansionSelectors: {
|
|
|
4
4
|
/**
|
|
5
5
|
* Gets the expanded items as provided to the component.
|
|
6
6
|
*/
|
|
7
|
-
expandedItemsRaw: (state: TreeViewState<[UseTreeViewExpansionSignature]>) => string[];
|
|
7
|
+
expandedItemsRaw: (state: TreeViewState<[UseTreeViewExpansionSignature]>) => readonly string[];
|
|
8
8
|
/**
|
|
9
9
|
* Gets the expanded items as a Map.
|
|
10
10
|
*/
|
|
@@ -55,13 +55,13 @@ export interface UseTreeViewExpansionParameters {
|
|
|
55
55
|
* Expanded item ids.
|
|
56
56
|
* Used when the item's expansion is controlled.
|
|
57
57
|
*/
|
|
58
|
-
expandedItems?: string[];
|
|
58
|
+
expandedItems?: readonly string[];
|
|
59
59
|
/**
|
|
60
60
|
* Expanded item ids.
|
|
61
61
|
* Used when the item's expansion is not controlled.
|
|
62
62
|
* @default []
|
|
63
63
|
*/
|
|
64
|
-
defaultExpandedItems?: string[];
|
|
64
|
+
defaultExpandedItems?: readonly string[];
|
|
65
65
|
/**
|
|
66
66
|
* Callback fired when Tree Items are expanded/collapsed.
|
|
67
67
|
* @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemExpansion()` method.
|
|
@@ -84,7 +84,7 @@ export interface UseTreeViewExpansionParameters {
|
|
|
84
84
|
export type UseTreeViewExpansionParametersWithDefaults = DefaultizedProps<UseTreeViewExpansionParameters, 'defaultExpandedItems'>;
|
|
85
85
|
export interface UseTreeViewExpansionState {
|
|
86
86
|
expansion: {
|
|
87
|
-
expandedItems: string[];
|
|
87
|
+
expandedItems: readonly string[];
|
|
88
88
|
expansionTrigger: 'content' | 'iconContainer';
|
|
89
89
|
};
|
|
90
90
|
}
|
|
@@ -44,7 +44,7 @@ const useTreeViewLabel = ({
|
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
46
|
(0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
|
|
47
|
-
store.set('label', (0, _extends2.default)({}, store.state.
|
|
47
|
+
store.set('label', (0, _extends2.default)({}, store.state.label, {
|
|
48
48
|
isItemEditable: params.isItemEditable
|
|
49
49
|
}));
|
|
50
50
|
}, [store, params.isItemEditable]);
|
|
@@ -51,9 +51,29 @@ const useTreeViewSelectionItemPlugin = ({
|
|
|
51
51
|
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
52
52
|
const isCheckboxSelectionEnabled = (0, _store.useStore)(store, _useTreeViewSelection.selectionSelectors.isCheckboxSelectionEnabled);
|
|
53
53
|
const isItemSelectionEnabled = (0, _store.useStore)(store, _useTreeViewSelection.selectionSelectors.canItemBeSelected, itemId);
|
|
54
|
-
const
|
|
54
|
+
const selectionStatus = (0, _store.useStore)(store, selectorCheckboxSelectionStatus, itemId);
|
|
55
|
+
const isSelectionEnabledForItem = (0, _store.useStore)(store, _useTreeViewSelection.selectionSelectors.canItemBeSelected, itemId);
|
|
55
56
|
return {
|
|
56
57
|
propsEnhancers: {
|
|
58
|
+
root: () => {
|
|
59
|
+
// https://www.w3.org/WAI/ARIA/apg/patterns/treeview/
|
|
60
|
+
let ariaChecked;
|
|
61
|
+
if (selectionStatus === 'checked') {
|
|
62
|
+
// - each selected node has aria-checked set to true.
|
|
63
|
+
ariaChecked = true;
|
|
64
|
+
} else if (selectionStatus === 'indeterminate') {
|
|
65
|
+
ariaChecked = 'mixed';
|
|
66
|
+
} else if (!isSelectionEnabledForItem) {
|
|
67
|
+
// - if the tree contains nodes that are not selectable, aria-checked is not present on those nodes.
|
|
68
|
+
ariaChecked = undefined;
|
|
69
|
+
} else {
|
|
70
|
+
// - all nodes that are selectable but not selected have aria-checked set to false.
|
|
71
|
+
ariaChecked = false;
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
'aria-checked': ariaChecked
|
|
75
|
+
};
|
|
76
|
+
},
|
|
57
77
|
checkbox: ({
|
|
58
78
|
externalEventHandlers,
|
|
59
79
|
interactions
|
|
@@ -73,8 +93,8 @@ const useTreeViewSelectionItemPlugin = ({
|
|
|
73
93
|
onChange: handleChange,
|
|
74
94
|
visible: isCheckboxSelectionEnabled,
|
|
75
95
|
disabled: !isItemSelectionEnabled,
|
|
76
|
-
checked:
|
|
77
|
-
indeterminate:
|
|
96
|
+
checked: selectionStatus === 'checked',
|
|
97
|
+
indeterminate: selectionStatus === 'indeterminate'
|
|
78
98
|
};
|
|
79
99
|
}
|
|
80
100
|
}
|
|
@@ -130,6 +130,9 @@ export type UseTreeViewSelectionSignature = TreeViewPluginSignature<{
|
|
|
130
130
|
state: UseTreeViewSelectionState;
|
|
131
131
|
dependencies: [UseTreeViewItemsSignature, UseTreeViewExpansionSignature, UseTreeViewItemsSignature];
|
|
132
132
|
}>;
|
|
133
|
+
export interface UseTreeItemRootSlotPropsFromSelection {
|
|
134
|
+
'aria-checked': React.AriaAttributes['aria-checked'];
|
|
135
|
+
}
|
|
133
136
|
export interface UseTreeItemCheckboxSlotPropsFromSelection {
|
|
134
137
|
visible?: boolean;
|
|
135
138
|
checked?: boolean;
|
|
@@ -139,5 +142,6 @@ export interface UseTreeItemCheckboxSlotPropsFromSelection {
|
|
|
139
142
|
onChange?: TreeViewCancellableEventHandler<React.ChangeEvent<HTMLInputElement>>;
|
|
140
143
|
}
|
|
141
144
|
declare module '@mui/x-tree-view/useTreeItem' {
|
|
145
|
+
interface UseTreeItemRootSlotOwnProps extends UseTreeItemRootSlotPropsFromSelection {}
|
|
142
146
|
interface UseTreeItemCheckboxSlotOwnProps extends UseTreeItemCheckboxSlotPropsFromSelection {}
|
|
143
147
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-tree-view",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.17.0",
|
|
4
4
|
"author": "MUI Team",
|
|
5
5
|
"description": "The community edition of the MUI X Tree View components.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"clsx": "^2.1.1",
|
|
39
39
|
"prop-types": "^15.8.1",
|
|
40
40
|
"react-transition-group": "^4.4.5",
|
|
41
|
-
"@mui/x-internals": "8.
|
|
41
|
+
"@mui/x-internals": "8.17.0"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"@emotion/react": "^11.9.0",
|
|
@@ -61,7 +61,6 @@ const useTreeItem = parameters => {
|
|
|
61
61
|
const handleContentRef = (0, _useMergedRefs.useMergedRefs)(contentRef, contentRefObject);
|
|
62
62
|
const checkboxRef = React.useRef(null);
|
|
63
63
|
const treeId = (0, _store.useStore)(store, _useTreeViewId2.idSelectors.treeId);
|
|
64
|
-
const isSelectionEnabledForItem = (0, _store.useStore)(store, _useTreeViewSelection.selectionSelectors.canItemBeSelected, itemId);
|
|
65
64
|
const isCheckboxSelectionEnabled = (0, _store.useStore)(store, _useTreeViewSelection.selectionSelectors.isCheckboxSelectionEnabled);
|
|
66
65
|
const idAttribute = (0, _useTreeViewId.generateTreeItemIdAttribute)({
|
|
67
66
|
itemId,
|
|
@@ -154,26 +153,12 @@ const useTreeItem = parameters => {
|
|
|
154
153
|
});
|
|
155
154
|
const getRootProps = (externalProps = {}) => {
|
|
156
155
|
const externalEventHandlers = (0, _extends2.default)({}, (0, _extractEventHandlers.default)(parameters), (0, _extractEventHandlers.default)(externalProps));
|
|
157
|
-
|
|
158
|
-
// https://www.w3.org/WAI/ARIA/apg/patterns/treeview/
|
|
159
|
-
let ariaSelected;
|
|
160
|
-
if (status.selected) {
|
|
161
|
-
// - each selected node has aria-selected set to true.
|
|
162
|
-
ariaSelected = true;
|
|
163
|
-
} else if (!isSelectionEnabledForItem) {
|
|
164
|
-
// - if the tree contains nodes that are not selectable, aria-selected is not present on those nodes.
|
|
165
|
-
ariaSelected = undefined;
|
|
166
|
-
} else {
|
|
167
|
-
// - all nodes that are selectable but not selected have aria-selected set to false.
|
|
168
|
-
ariaSelected = false;
|
|
169
|
-
}
|
|
170
156
|
const props = (0, _extends2.default)({}, externalEventHandlers, {
|
|
171
157
|
ref: handleRootRef,
|
|
172
158
|
role: 'treeitem',
|
|
173
159
|
tabIndex: shouldBeAccessibleWithTab ? 0 : -1,
|
|
174
160
|
id: idAttribute,
|
|
175
161
|
'aria-expanded': status.expandable ? status.expanded : undefined,
|
|
176
|
-
'aria-selected': ariaSelected,
|
|
177
162
|
'aria-disabled': status.disabled || undefined
|
|
178
163
|
}, externalProps, {
|
|
179
164
|
style: (0, _extends2.default)({}, externalProps.style ?? {}, {
|
|
@@ -42,7 +42,6 @@ export interface UseTreeItemRootSlotPropsFromUseTreeItem {
|
|
|
42
42
|
tabIndex: 0 | -1;
|
|
43
43
|
id: string;
|
|
44
44
|
'aria-expanded': React.AriaAttributes['aria-expanded'];
|
|
45
|
-
'aria-selected': React.AriaAttributes['aria-selected'];
|
|
46
45
|
'aria-disabled': React.AriaAttributes['aria-disabled'];
|
|
47
46
|
onFocus: TreeViewCancellableEventHandler<React.FocusEvent<HTMLElement>>;
|
|
48
47
|
onBlur: TreeViewCancellableEventHandler<React.FocusEvent<HTMLElement>>;
|