@mui/x-tree-view 9.4.0 → 9.7.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 +361 -0
- package/RichTreeView/RichTreeView.js +1 -1
- package/RichTreeView/RichTreeView.mjs +1 -1
- package/SimpleTreeView/SimpleTreeView.js +1 -1
- package/SimpleTreeView/SimpleTreeView.mjs +1 -1
- package/TreeItem/TreeItem.d.mts +1 -1
- package/TreeItem/TreeItem.d.ts +1 -1
- package/TreeItem/TreeItem.js +1 -1
- package/TreeItem/TreeItem.mjs +1 -1
- package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +1 -1
- package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.mjs +1 -1
- package/TreeItemIcon/TreeItemIcon.js +1 -1
- package/TreeItemIcon/TreeItemIcon.mjs +1 -1
- package/TreeItemProvider/TreeItemProvider.js +1 -1
- package/TreeItemProvider/TreeItemProvider.mjs +1 -1
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.d.mts +12 -2
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.d.ts +12 -2
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.js +32 -8
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.mjs +32 -8
- package/internals/TreeViewProvider/TreeViewProvider.types.d.mts +2 -1
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +2 -1
- package/internals/components/RichTreeViewItems.d.mts +6 -1
- package/internals/components/RichTreeViewItems.d.ts +6 -1
- package/internals/hooks/useTreeViewStore.js +7 -4
- package/internals/hooks/useTreeViewStore.mjs +7 -4
- package/internals/plugins/focus/TreeViewFocusPlugin.js +2 -2
- package/internals/plugins/focus/TreeViewFocusPlugin.mjs +2 -2
- package/internals/plugins/labelEditing/itemPlugin.js +6 -5
- package/internals/plugins/labelEditing/itemPlugin.mjs +6 -5
- package/package.json +7 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,366 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 9.7.0
|
|
4
|
+
|
|
5
|
+
_Jun 25, 2026_
|
|
6
|
+
|
|
7
|
+
We'd like to extend a big thank you to the 13 contributors who made this release possible. Here are some highlights ✨:
|
|
8
|
+
|
|
9
|
+
- 🐞 Bugfixes
|
|
10
|
+
- 📚 Documentation improvements
|
|
11
|
+
|
|
12
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
13
|
+
@Anexus5919, @mustafajw07
|
|
14
|
+
|
|
15
|
+
The following team members contributed to this release:
|
|
16
|
+
@alexfauquette, @arminmeh, @brijeshb42, @Janpot, @JCQuintas, @LukasTy, @MBilalShafi, @michelengelen, @romgrk, @sai6855, @siriwatknp
|
|
17
|
+
|
|
18
|
+
### Data Grid
|
|
19
|
+
|
|
20
|
+
#### `@mui/x-data-grid@9.7.0`
|
|
21
|
+
|
|
22
|
+
- [DataGrid] Fix `CustomColumnMenuGrid` demo crashing (#22897) @sai6855
|
|
23
|
+
- [DataGrid] Fix crash in `getRowValue` when `colDef` is `undefined` (#22838) @LukasTy
|
|
24
|
+
- [DataGrid] Fix `longText` expand button submitting surrounding form (#22450) @siriwatknp
|
|
25
|
+
- [DataGrid] Remove filename ignore list from `removePropTypesPlugin` in Babel config (#22727) @sai6855
|
|
26
|
+
- [DataGrid] Deduplicate scroll-preserving focus logic (#22916) @sai6855
|
|
27
|
+
- [DataGrid] Fix `singleSelect` clearing to use empty string instead of `null` (#22881) @michelengelen
|
|
28
|
+
- [DataGrid] Wait for rows before reacting on `autosizeOnMount` (#22698) @MBilalShafi
|
|
29
|
+
|
|
30
|
+
#### `@mui/x-data-grid-pro@9.7.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
31
|
+
|
|
32
|
+
Same changes as in `@mui/x-data-grid@9.7.0`.
|
|
33
|
+
|
|
34
|
+
#### `@mui/x-data-grid-premium@9.7.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
35
|
+
|
|
36
|
+
Same changes as in `@mui/x-data-grid-pro@9.7.0`.
|
|
37
|
+
|
|
38
|
+
### Date and Time Pickers
|
|
39
|
+
|
|
40
|
+
#### `@mui/x-date-pickers@9.7.0`
|
|
41
|
+
|
|
42
|
+
- [fields] Announce cardinal day in the day section `aria-valuetext` (#22922) @LukasTy
|
|
43
|
+
- [fields] Avoid focusing the field on blank space clicks (#22285) @LukasTy
|
|
44
|
+
- [pickers] Commit `TimeClock` value when the drag ends outside the clock (#22877) @LukasTy
|
|
45
|
+
- [pickers] Respect explicit `notched` prop on the outlined PickersTextField (#22875) @LukasTy
|
|
46
|
+
|
|
47
|
+
#### `@mui/x-date-pickers-pro@9.7.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
48
|
+
|
|
49
|
+
Same changes as in `@mui/x-date-pickers@9.7.0`.
|
|
50
|
+
|
|
51
|
+
### Charts
|
|
52
|
+
|
|
53
|
+
#### `@mui/x-charts@9.7.0`
|
|
54
|
+
|
|
55
|
+
- [charts] Add demo for displaying the sum of all values from the stacked series on top of the stacked bars (#22879) @sai6855
|
|
56
|
+
- [charts] Add `zAxis` custom scatter component demo (#22746) @mustafajw07
|
|
57
|
+
- [charts] Apply axis `colorMap` to radial bar fill (#22800) @JCQuintas
|
|
58
|
+
- [charts] Simplify classes type (#22626) @alexfauquette
|
|
59
|
+
- [charts] Stable progressive scatter batching + responsive zoom/pan (#22862) @JCQuintas
|
|
60
|
+
- [charts] Strip dev-only console diagnostics from production (#22917) @sai6855
|
|
61
|
+
- [docs] Fix scatter renderer table blocking column (#22904) @JCQuintas
|
|
62
|
+
- [docs] Make `ScatterAsyncRenderer` button bar responsive (#22905) @JCQuintas
|
|
63
|
+
|
|
64
|
+
#### `@mui/x-charts-pro@9.7.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
65
|
+
|
|
66
|
+
Same changes as in `@mui/x-charts@9.7.0`.
|
|
67
|
+
|
|
68
|
+
#### `@mui/x-charts-premium@9.7.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
69
|
+
|
|
70
|
+
Same changes as in `@mui/x-charts-pro@9.7.0`.
|
|
71
|
+
|
|
72
|
+
### Tree View
|
|
73
|
+
|
|
74
|
+
#### `@mui/x-tree-view@9.7.0`
|
|
75
|
+
|
|
76
|
+
Internal changes.
|
|
77
|
+
|
|
78
|
+
#### `@mui/x-tree-view-pro@9.7.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
79
|
+
|
|
80
|
+
Same changes as in `@mui/x-tree-view@9.7.0`.
|
|
81
|
+
|
|
82
|
+
### Scheduler
|
|
83
|
+
|
|
84
|
+
#### `@mui/x-scheduler@9.0.0-beta.3`
|
|
85
|
+
|
|
86
|
+
- [scheduler] Highlight only the edited occurrence of a recurring event (#22873) @Anexus5919
|
|
87
|
+
|
|
88
|
+
#### `@mui/x-scheduler-premium@9.0.0-beta.3` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
89
|
+
|
|
90
|
+
Same changes as in `@mui/x-scheduler@9.0.0-beta.3`.
|
|
91
|
+
|
|
92
|
+
### Codemod
|
|
93
|
+
|
|
94
|
+
#### `@mui/x-codemod@9.7.0`
|
|
95
|
+
|
|
96
|
+
Internal changes.
|
|
97
|
+
|
|
98
|
+
### Core
|
|
99
|
+
|
|
100
|
+
- [code-infra] Fix react@^18 CI failing on nanoid trust-downgrade (#22923) @LukasTy
|
|
101
|
+
- [code-infra] Reduce Netlify build parallelism to 2 (#22925) @LukasTy
|
|
102
|
+
- [code-infra] Use Turbopack for docs in dev (#22882) @brijeshb42
|
|
103
|
+
- [docs-infra] Pre-render API page descriptions (#22919) @brijeshb42
|
|
104
|
+
- [internal] Use `@base-ui/utils/platform` for platform detection (#22710) @romgrk
|
|
105
|
+
- [internal] Enforce top-level type imports (#22679) @Janpot
|
|
106
|
+
|
|
107
|
+
### Miscellaneous
|
|
108
|
+
|
|
109
|
+
- [internal] Enable mui/no-floating-cleanup and fix leaks (#22872) @romgrk
|
|
110
|
+
- [infra] Update `.gitignore` to exclude `.claude` sub-directories (#22435) @michelengelen
|
|
111
|
+
- [virtualizer] Improve the dimensions' initial state (#22885) @arminmeh
|
|
112
|
+
|
|
113
|
+
## 9.6.0
|
|
114
|
+
|
|
115
|
+
_Jun 18, 2026_
|
|
116
|
+
|
|
117
|
+
We'd like to extend a big thank you to the 17 contributors who made this release possible. Here are some highlights ✨:
|
|
118
|
+
|
|
119
|
+
- 📊 New features for the radial bar charts, like percentage min radius and disabling tick labels.
|
|
120
|
+
|
|
121
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
122
|
+
@adamowski10, @Anexus5919, @Morteza-hp, @mustafajw07, @TargiX
|
|
123
|
+
|
|
124
|
+
The following team members contributed to this release:
|
|
125
|
+
@alexfauquette, @arminmeh, @brijeshb42, @cherniavskii, @hasdfa, @Janpot, @JCQuintas, @michelengelen, @noraleonte, @oliviertassinari, @rita-codes, @sai6855
|
|
126
|
+
|
|
127
|
+
### Data Grid
|
|
128
|
+
|
|
129
|
+
#### `@mui/x-data-grid@9.6.0`
|
|
130
|
+
|
|
131
|
+
- [DataGrid] Define `overflowAnchor` style at the right element (#22849) @arminmeh
|
|
132
|
+
- [DataGrid] Fix scrollbars not showing up on scroll on iOS (#22832) @cherniavskii
|
|
133
|
+
|
|
134
|
+
#### `@mui/x-data-grid-pro@9.6.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
135
|
+
|
|
136
|
+
Same changes as in `@mui/x-data-grid@9.6.0`, plus:
|
|
137
|
+
|
|
138
|
+
- [DataGridPro] Prevent incorrect row range capping on the first page with known `rowCount` (#22808) @michelengelen
|
|
139
|
+
|
|
140
|
+
#### `@mui/x-data-grid-premium@9.6.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
141
|
+
|
|
142
|
+
Same changes as in `@mui/x-data-grid-pro@9.6.0`.
|
|
143
|
+
|
|
144
|
+
### Date and Time Pickers
|
|
145
|
+
|
|
146
|
+
#### `@mui/x-date-pickers@9.6.0`
|
|
147
|
+
|
|
148
|
+
- [pickers] Fix `AdapterMomentHijri.getDaysInMonth` returning the Gregorian month length (#22774) @Anexus5919
|
|
149
|
+
- [l10n] Improve Persian (fa-IR) locale (#22454) @Morteza-hp
|
|
150
|
+
|
|
151
|
+
#### `@mui/x-date-pickers-pro@9.6.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
152
|
+
|
|
153
|
+
Same changes as in `@mui/x-date-pickers@9.6.0`.
|
|
154
|
+
|
|
155
|
+
### Charts
|
|
156
|
+
|
|
157
|
+
#### `@mui/x-charts@9.6.0`
|
|
158
|
+
|
|
159
|
+
- [charts] Add `disableTickLabel` prop to radial axes (#22801) @JCQuintas
|
|
160
|
+
- [charts] Fix bug when `min` is in axis domain (#22827) @alexfauquette
|
|
161
|
+
- [charts] Fix wheel zoom not centering on cursor position (#22811) @JCQuintas
|
|
162
|
+
- [charts] Remove zoom gesture registration from community package (#22753) @sai6855
|
|
163
|
+
- [charts] Support percentage values for radial axis `minRadius`/`maxRadius` (#22803) @JCQuintas
|
|
164
|
+
- [charts] Support `unknownColor` in color scale (#22813) @alexfauquette
|
|
165
|
+
- [charts] Document click listener for scatter composition (#22809) @sai6855
|
|
166
|
+
|
|
167
|
+
#### `@mui/x-charts-pro@9.6.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
168
|
+
|
|
169
|
+
Same changes as in `@mui/x-charts@9.6.0`.
|
|
170
|
+
|
|
171
|
+
#### `@mui/x-charts-premium@9.6.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
172
|
+
|
|
173
|
+
Same changes as in `@mui/x-charts-pro@9.6.0`, plus:
|
|
174
|
+
|
|
175
|
+
- [charts-premium] Add `geoFeatureKey` to transform features identifier (#22848) @alexfauquette
|
|
176
|
+
- [charts-premium] Allow to remove Antartica (#22815) @alexfauquette
|
|
177
|
+
- [charts-premium] Regenerate `ScatterPlotPremium` `propTypes` (#22829) @rita-codes
|
|
178
|
+
- [charts-premium] Support maps tooltip positioned on items (#22648) @alexfauquette
|
|
179
|
+
- [docs] Show how to export maps (#22837) @alexfauquette
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
### Tree View
|
|
183
|
+
|
|
184
|
+
#### `@mui/x-tree-view@9.6.0`
|
|
185
|
+
|
|
186
|
+
Internal changes.
|
|
187
|
+
|
|
188
|
+
#### `@mui/x-tree-view-pro@9.6.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
189
|
+
|
|
190
|
+
Same changes as in `@mui/x-tree-view@9.6.0`.
|
|
191
|
+
|
|
192
|
+
### Scheduler
|
|
193
|
+
|
|
194
|
+
#### `@mui/x-scheduler@9.0.0-beta.2`
|
|
195
|
+
|
|
196
|
+
- [scheduler] Add dispose lifecycle to `SchedulerLazyLoadingPlugin` (#22532) @rita-codes
|
|
197
|
+
- [scheduler] Add responsive mobile week view and responsive typography (#22593) @noraleonte
|
|
198
|
+
- [scheduler] Add stable weekday token to `recurrenceWeeklyPresetLabel` (#22733) @mustafajw07
|
|
199
|
+
- [scheduler] Create accessibility documentation section (#22557) @mustafajw07
|
|
200
|
+
- [scheduler] Decouple `MonthViewProps` from day time grid props (#22802) @mustafajw07
|
|
201
|
+
- [scheduler] Export missing public scheduler types (#22785) @mustafajw07
|
|
202
|
+
- [scheduler] Fix JSDoc defaults and improve public type readability (#22784) @mustafajw07
|
|
203
|
+
- [scheduler] Fix `aria-labelledby` on events referencing non-existent header IDs (#22778) @rita-codes
|
|
204
|
+
- [scheduler] Move `EventCalendarStyledContext` to internals (#22787) @mustafajw07
|
|
205
|
+
- [scheduler] Normalize all-day recurring occurrences to whole days (#22792) @Anexus5919
|
|
206
|
+
- [scheduler] Recalculate `DayTimeGrid` `hasScroll` on container resize (#22780) @Anexus5919
|
|
207
|
+
- [scheduler] Recompute `nowUpdatedEveryMinute` only on timezone change (#22793) @Anexus5919
|
|
208
|
+
- [scheduler] Register auto-scroll once instead of on every render (#22794) @Anexus5919
|
|
209
|
+
- [scheduler] Remove duplicate dividers in the day/time grid (#22795) @Anexus5919
|
|
210
|
+
- [scheduler] Remove unused `--has-scroll` CSS variable from `DayTimeGrid` (#22799) @Anexus5919
|
|
211
|
+
- [scheduler] Remove vestigial async from internal drop handler (#22781) @mustafajw07
|
|
212
|
+
- [scheduler] Return a primitive key from the Calendar lazy-loading selector (#22791) @Anexus5919
|
|
213
|
+
- [scheduler] Throw on invalid event dates instead of emitting `NaN` timestamps (#22740) @rita-codes
|
|
214
|
+
- [scheduler] Tighten `StandaloneEventProps` data typing (#22796) @mustafajw07
|
|
215
|
+
- [scheduler] Update feedback banner to say beta instead of alpha (#22804) @rita-codes
|
|
216
|
+
- [scheduler] Use `@base-ui` `generateId` for event ids in `createEventModel` (#22788) @rita-codes
|
|
217
|
+
- [scheduler] Clear clipboard after pasting a cut event (#22773) @Anexus5919
|
|
218
|
+
- [scheduler] Show drag placeholder when re-entering the same position (#22775) @Anexus5919
|
|
219
|
+
- [scheduler] Validate missing and duplicate event ids (#22790) @Anexus5919
|
|
220
|
+
- [l10n] Improve Polish (pl-PL) locale (#22612) @adamowski10
|
|
221
|
+
|
|
222
|
+
#### `@mui/x-scheduler-premium@9.0.0-beta.2` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
223
|
+
|
|
224
|
+
Same changes as in `@mui/x-scheduler@9.0.0-beta.2`, plus:
|
|
225
|
+
|
|
226
|
+
- [scheduler-premium] Expose premium model types through public API (#22798) @mustafajw07
|
|
227
|
+
- [scheduler-premium] Remove non-functional `onPreferencesChange` prop from `EventTimelinePremium` (#22777) @rita-codes
|
|
228
|
+
- [scheduler-premium] Validate the `FREQ` value in `parseRRule`] (#22786) @rita-codes
|
|
229
|
+
|
|
230
|
+
### Codemod
|
|
231
|
+
|
|
232
|
+
#### `@mui/x-codemod@9.6.0`
|
|
233
|
+
|
|
234
|
+
Internal changes.
|
|
235
|
+
|
|
236
|
+
### Docs
|
|
237
|
+
|
|
238
|
+
- [docs] Fix link-check build timeout by disabling serve directory listing (#22836) @Janpot
|
|
239
|
+
- [docs] Show how to export maps (#22837) @alexfauquette
|
|
240
|
+
- [docs] Add radial bar overview demo with custom overlays (#22776) @JCQuintas
|
|
241
|
+
- [docs] Add weather composition demo (#22723) @TargiX
|
|
242
|
+
- [docs] Add docs overview gallery and playground (#22488) @hasdfa
|
|
243
|
+
- [docs] Clarify 'Scrolling without render gaps' (#22629) @oliviertassinari
|
|
244
|
+
- [docs] Fix typo in release instructions (#22864) @brijeshb42
|
|
245
|
+
|
|
246
|
+
### Core
|
|
247
|
+
|
|
248
|
+
- [code-infra] Fix lint issues (#22757) @brijeshb42
|
|
249
|
+
- [code-infra] Fix remaining Dependabot security alerts (#22761) @Janpot
|
|
250
|
+
- [code-infra] Remove release:build from docs:build script (#22852) @brijeshb42
|
|
251
|
+
- [code-infra] Unpin `@mui/utils` version to allow dedupe (#22828) @mustafajw07
|
|
252
|
+
- [docs-infra] Cap Netlify Next.js build parallelism to avoid OOM (#22847) @Janpot
|
|
253
|
+
- [docs-infra] Remove i18n codebase (#22591) @brijeshb42
|
|
254
|
+
- [internal] Fix failing React 18 unit tests (#22846) @brijeshb42
|
|
255
|
+
|
|
256
|
+
### Miscellaneous
|
|
257
|
+
|
|
258
|
+
- [core] Add remove-proptypes markers to generated `propTypes` (#22850) @JCQuintas
|
|
259
|
+
- [core] Bump vitest packages to 4.1.8 to fix browser-test version skew (#22845) @Janpot
|
|
260
|
+
- [core] Reduce e2e build concurrency to avoid OOM (#22843) @Janpot
|
|
261
|
+
- [core] Strip proptypes from Production bundles (#22750) @sai6855
|
|
262
|
+
- [test] Wait for `GridToolbarCustom` rows before screenshot (#22844) @Janpot
|
|
263
|
+
|
|
264
|
+
## 9.5.0
|
|
265
|
+
|
|
266
|
+
_Jun 11, 2026_
|
|
267
|
+
|
|
268
|
+
We'd like to extend a big thank you to the 9 contributors who made this release possible. Here are some highlights ✨:
|
|
269
|
+
|
|
270
|
+
- 🎁 New [`multiSelect` column type for Data Grid Pro](https://mui.com/x/react-data-grid/column-definition/#MultiSelectColumn)
|
|
271
|
+
- 🚀 New [renderer="svg-progressive"](https://mui.com/x/react-charts/scatter/#progressive-renderer) paints scatter points in batched frames so large datasets render smoothly without blocking the main thread.
|
|
272
|
+
- 🐞 Bugfixes
|
|
273
|
+
- 📚 Documentation improvements
|
|
274
|
+
|
|
275
|
+
Special thanks go out to community members @mustafajw07 and @Anexus5919 for their valuable contribution.
|
|
276
|
+
|
|
277
|
+
The following team members contributed to this release:
|
|
278
|
+
@alexfauquette, @JCQuintas, @rita-codes, @rluzists1, @sai6855, @siriwatknp, @arminmeh, @brijeshb42
|
|
279
|
+
|
|
280
|
+
### Data Grid
|
|
281
|
+
|
|
282
|
+
#### `@mui/x-data-grid@9.5.0`
|
|
283
|
+
|
|
284
|
+
- [DataGrid] Restrict warning messages to non-production environments in various components (#22461) @sai6855
|
|
285
|
+
- [DataGrid] Prevent React state update before mount (#22374) @arminmeh
|
|
286
|
+
|
|
287
|
+
#### `@mui/x-data-grid-pro@9.5.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
288
|
+
|
|
289
|
+
Same changes as in `@mui/x-data-grid@9.5.0`, plus:
|
|
290
|
+
|
|
291
|
+
- [DataGridPro] Add new `multiSelect` column type (#21157) @siriwatknp
|
|
292
|
+
|
|
293
|
+
#### `@mui/x-data-grid-premium@9.5.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
294
|
+
|
|
295
|
+
Same changes as in `@mui/x-data-grid-pro@9.5.0`.
|
|
296
|
+
|
|
297
|
+
### Date and Time Pickers
|
|
298
|
+
|
|
299
|
+
#### `@mui/x-date-pickers@9.5.0`
|
|
300
|
+
|
|
301
|
+
- [pickers] Fix missing export of `th-TH` (#22703) @alexfauquette
|
|
302
|
+
|
|
303
|
+
#### `@mui/x-date-pickers-pro@9.5.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
304
|
+
|
|
305
|
+
Same changes as in `@mui/x-date-pickers@9.5.0`.
|
|
306
|
+
|
|
307
|
+
### Charts
|
|
308
|
+
|
|
309
|
+
#### `@mui/x-charts@9.5.0`
|
|
310
|
+
|
|
311
|
+
- [charts] Add `FocusedBar` component to `BarScatterComposition` demo (#22704) @sai6855
|
|
312
|
+
- [charts] Add dedicated Bubble Chart documentation page (#22688) @mustafajw07
|
|
313
|
+
- [charts] Add progressive scatter renderer (#22518) @JCQuintas
|
|
314
|
+
- [charts] Avoid full axis pipeline rebuild on resize (#22695) @JCQuintas
|
|
315
|
+
- [charts] Document focus indicator in composition page (#22712) @JCQuintas
|
|
316
|
+
- [charts] Fix `ChartsTooltip` `container` and `disablePortal` props being ignored (#22690) @JCQuintas
|
|
317
|
+
- [charts] Make ordinal scales O(1) to copy and re-range (#22691) @JCQuintas
|
|
318
|
+
- [charts] Stabilize WebGL bar rendering at sub-pixel widths (#22678) @JCQuintas
|
|
319
|
+
- [charts] Use the series config to define value types (#22693) @sai6855
|
|
320
|
+
- [charts] Decouple interaction hook from the cartesian zoom (#22708) @alexfauquette
|
|
321
|
+
|
|
322
|
+
#### `@mui/x-charts-pro@9.5.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
323
|
+
|
|
324
|
+
Same changes as in `@mui/x-charts@9.5.0`, plus:
|
|
325
|
+
|
|
326
|
+
- [charts-pro] Add missing focus highlight (#22689) @alexfauquette
|
|
327
|
+
|
|
328
|
+
#### `@mui/x-charts-premium@9.5.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
329
|
+
|
|
330
|
+
Same changes as in `@mui/x-charts-pro@9.5.0`, plus:
|
|
331
|
+
|
|
332
|
+
- [charts-premium] Set `Heatmap` WebGL render as stable (#22665) @alexfauquette
|
|
333
|
+
- [charts-premium] Stabilize candlestick charts (#22666) @alexfauquette
|
|
334
|
+
- [charts-premium] Stabilize the radial charts (#22655) @alexfauquette
|
|
335
|
+
|
|
336
|
+
### Scheduler
|
|
337
|
+
|
|
338
|
+
#### `@mui/x-scheduler@9.0.0-beta.1`
|
|
339
|
+
|
|
340
|
+
Internal changes.
|
|
341
|
+
|
|
342
|
+
#### `@mui/x-scheduler-premium@9.0.0-beta.1` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
343
|
+
|
|
344
|
+
Same changes as in `@mui/x-scheduler@9.0.0-beta.1`, plus:
|
|
345
|
+
|
|
346
|
+
- [scheduler] Remove dead CSS variable writes in `EventTimelinePremiumContent` (#22720) @rita-codes
|
|
347
|
+
- [scheduler] Show scope dialog when deleting a recurring event (#22552) @Anexus5919
|
|
348
|
+
|
|
349
|
+
### Core
|
|
350
|
+
|
|
351
|
+
- [docs-infra] Fix immutable cache headers for `/\_next/static` assets (#22747) @brijeshb42
|
|
352
|
+
- [docs-infra] Prefix `/\_next/static` cache header rule with `/x` basePath (#22748) @brijeshb42
|
|
353
|
+
- [code-infra] Update dependencies to resolve Dependabot security alerts (#22714) @Janpot
|
|
354
|
+
|
|
355
|
+
### Docs
|
|
356
|
+
|
|
357
|
+
- [docs] Fix broken links checker crashing on 404 known-targets fetch (#22707) @sai6855
|
|
358
|
+
- [docs] Fix country data (#22716) @alexfauquette
|
|
359
|
+
|
|
360
|
+
### Miscellaneous
|
|
361
|
+
|
|
362
|
+
- [legal] Update EULA links in docs (#22717) @rluzists1
|
|
363
|
+
|
|
3
364
|
## 9.4.0
|
|
4
365
|
|
|
5
366
|
<!-- generated comparing v9.3.0..master -->
|
|
@@ -133,7 +133,7 @@ const RichTreeView = exports.RichTreeView = /*#__PURE__*/React.forwardRef(functi
|
|
|
133
133
|
});
|
|
134
134
|
});
|
|
135
135
|
if (process.env.NODE_ENV !== "production") RichTreeView.displayName = "RichTreeView";
|
|
136
|
-
process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
136
|
+
process.env.NODE_ENV !== "production" ? RichTreeView.propTypes /* remove-proptypes */ = {
|
|
137
137
|
// ----------------------------- Warning --------------------------------
|
|
138
138
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
139
139
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -126,7 +126,7 @@ const RichTreeView = /*#__PURE__*/React.forwardRef(function RichTreeView(inProps
|
|
|
126
126
|
});
|
|
127
127
|
});
|
|
128
128
|
if (process.env.NODE_ENV !== "production") RichTreeView.displayName = "RichTreeView";
|
|
129
|
-
process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
129
|
+
process.env.NODE_ENV !== "production" ? RichTreeView.propTypes /* remove-proptypes */ = {
|
|
130
130
|
// ----------------------------- Warning --------------------------------
|
|
131
131
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
132
132
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -113,7 +113,7 @@ const SimpleTreeView = exports.SimpleTreeView = /*#__PURE__*/React.forwardRef(fu
|
|
|
113
113
|
});
|
|
114
114
|
});
|
|
115
115
|
if (process.env.NODE_ENV !== "production") SimpleTreeView.displayName = "SimpleTreeView";
|
|
116
|
-
process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
116
|
+
process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes /* remove-proptypes */ = {
|
|
117
117
|
// ----------------------------- Warning --------------------------------
|
|
118
118
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
119
119
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -106,7 +106,7 @@ const SimpleTreeView = /*#__PURE__*/React.forwardRef(function SimpleTreeView(inP
|
|
|
106
106
|
});
|
|
107
107
|
});
|
|
108
108
|
if (process.env.NODE_ENV !== "production") SimpleTreeView.displayName = "SimpleTreeView";
|
|
109
|
-
process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
109
|
+
process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes /* remove-proptypes */ = {
|
|
110
110
|
// ----------------------------- Warning --------------------------------
|
|
111
111
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
112
112
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
package/TreeItem/TreeItem.d.mts
CHANGED
|
@@ -15,7 +15,7 @@ export declare const TreeItemErrorContainer: import("@emotion/styled").StyledCom
|
|
|
15
15
|
export declare const TreeItemLoadingContainer: import("@emotion/styled").StyledComponent<Pick<import("@mui/material/CircularProgress").CircularProgressProps, keyof import("@mui/material/CircularProgress").CircularProgressProps> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
|
|
16
16
|
export declare const TreeItemCheckbox: import("@emotion/styled").StyledComponent<Pick<Omit<CheckboxProps & {
|
|
17
17
|
visible?: boolean;
|
|
18
|
-
}, "ref"> & React.RefAttributes<HTMLButtonElement>, "form" | "slot" | "style" | "title" | "aria-expanded" | "aria-disabled" | "onDoubleClick" | "aria-hidden" | "content" | "slots" | "slotProps" | "className" | "classes" | "color" | "sx" | "suppressHydrationWarning" | "id" | "lang" | "name" | "nonce" | "part" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-dropeffect" | "aria-errormessage" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onScrollEnd" | "onScrollEndCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onToggle" | "onBeforeToggle" | "onTransitionCancel" | "onTransitionCancelCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "onTransitionRun" | "onTransitionRunCapture" | "onTransitionStart" | "onTransitionStartCapture" | "icon" | "disabled" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "value" | "action" | "checked" | "visible" | "accessKey" | "autoCapitalize" | "autoFocus" | "contentEditable" | "contextMenu" | "
|
|
18
|
+
}, "ref"> & React.RefAttributes<HTMLButtonElement>, "form" | "slot" | "style" | "title" | "aria-expanded" | "aria-disabled" | "onDoubleClick" | "aria-hidden" | "content" | "slots" | "slotProps" | "className" | "classes" | "color" | "sx" | "suppressHydrationWarning" | "id" | "lang" | "name" | "nonce" | "part" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-dropeffect" | "aria-errormessage" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onScrollEnd" | "onScrollEndCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onToggle" | "onBeforeToggle" | "onTransitionCancel" | "onTransitionCancelCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "onTransitionRun" | "onTransitionRunCapture" | "onTransitionStart" | "onTransitionStartCapture" | "icon" | "disabled" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "value" | "action" | "checked" | "dir" | "visible" | "accessKey" | "autoCapitalize" | "autoFocus" | "contentEditable" | "contextMenu" | "draggable" | "enterKeyHint" | "hidden" | "spellCheck" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "popover" | "popoverTargetAction" | "popoverTarget" | "inert" | "inputMode" | "is" | "exportparts" | "indeterminate" | "readOnly" | "required" | "size" | "component" | "checkedIcon" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge" | "indeterminateIcon" | keyof React.RefAttributes<HTMLButtonElement>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
|
|
19
19
|
type TreeItemComponent = ((props: TreeItemProps & React.RefAttributes<HTMLLIElement>) => React.JSX.Element) & {
|
|
20
20
|
propTypes?: any;
|
|
21
21
|
};
|
package/TreeItem/TreeItem.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export declare const TreeItemErrorContainer: import("@emotion/styled").StyledCom
|
|
|
15
15
|
export declare const TreeItemLoadingContainer: import("@emotion/styled").StyledComponent<Pick<import("@mui/material/CircularProgress").CircularProgressProps, keyof import("@mui/material/CircularProgress").CircularProgressProps> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
|
|
16
16
|
export declare const TreeItemCheckbox: import("@emotion/styled").StyledComponent<Pick<Omit<CheckboxProps & {
|
|
17
17
|
visible?: boolean;
|
|
18
|
-
}, "ref"> & React.RefAttributes<HTMLButtonElement>, "form" | "slot" | "style" | "title" | "aria-expanded" | "aria-disabled" | "onDoubleClick" | "aria-hidden" | "content" | "slots" | "slotProps" | "className" | "classes" | "color" | "sx" | "suppressHydrationWarning" | "id" | "lang" | "name" | "nonce" | "part" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-dropeffect" | "aria-errormessage" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onScrollEnd" | "onScrollEndCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onToggle" | "onBeforeToggle" | "onTransitionCancel" | "onTransitionCancelCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "onTransitionRun" | "onTransitionRunCapture" | "onTransitionStart" | "onTransitionStartCapture" | "icon" | "disabled" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "value" | "action" | "checked" | "visible" | "accessKey" | "autoCapitalize" | "autoFocus" | "contentEditable" | "contextMenu" | "
|
|
18
|
+
}, "ref"> & React.RefAttributes<HTMLButtonElement>, "form" | "slot" | "style" | "title" | "aria-expanded" | "aria-disabled" | "onDoubleClick" | "aria-hidden" | "content" | "slots" | "slotProps" | "className" | "classes" | "color" | "sx" | "suppressHydrationWarning" | "id" | "lang" | "name" | "nonce" | "part" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-dropeffect" | "aria-errormessage" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onScrollEnd" | "onScrollEndCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onToggle" | "onBeforeToggle" | "onTransitionCancel" | "onTransitionCancelCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "onTransitionRun" | "onTransitionRunCapture" | "onTransitionStart" | "onTransitionStartCapture" | "icon" | "disabled" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "value" | "action" | "checked" | "dir" | "visible" | "accessKey" | "autoCapitalize" | "autoFocus" | "contentEditable" | "contextMenu" | "draggable" | "enterKeyHint" | "hidden" | "spellCheck" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "popover" | "popoverTargetAction" | "popoverTarget" | "inert" | "inputMode" | "is" | "exportparts" | "indeterminate" | "readOnly" | "required" | "size" | "component" | "checkedIcon" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge" | "indeterminateIcon" | keyof React.RefAttributes<HTMLButtonElement>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
|
|
19
19
|
type TreeItemComponent = ((props: TreeItemProps & React.RefAttributes<HTMLLIElement>) => React.JSX.Element) & {
|
|
20
20
|
propTypes?: any;
|
|
21
21
|
};
|
package/TreeItem/TreeItem.js
CHANGED
|
@@ -350,7 +350,7 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
|
|
|
350
350
|
}));
|
|
351
351
|
});
|
|
352
352
|
if (process.env.NODE_ENV !== "production") TreeItem.displayName = "TreeItem";
|
|
353
|
-
process.env.NODE_ENV !== "production" ? TreeItem.propTypes = {
|
|
353
|
+
process.env.NODE_ENV !== "production" ? TreeItem.propTypes /* remove-proptypes */ = {
|
|
354
354
|
// ----------------------------- Warning --------------------------------
|
|
355
355
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
356
356
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
package/TreeItem/TreeItem.mjs
CHANGED
|
@@ -343,7 +343,7 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
343
343
|
}));
|
|
344
344
|
});
|
|
345
345
|
if (process.env.NODE_ENV !== "production") TreeItem.displayName = "TreeItem";
|
|
346
|
-
process.env.NODE_ENV !== "production" ? TreeItem.propTypes = {
|
|
346
|
+
process.env.NODE_ENV !== "production" ? TreeItem.propTypes /* remove-proptypes */ = {
|
|
347
347
|
// ----------------------------- Warning --------------------------------
|
|
348
348
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
349
349
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -66,7 +66,7 @@ function TreeItemDragAndDropOverlay(props) {
|
|
|
66
66
|
}
|
|
67
67
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(TreeItemDragAndDropOverlayRoot, (0, _extends2.default)({}, props));
|
|
68
68
|
}
|
|
69
|
-
process.env.NODE_ENV !== "production" ? TreeItemDragAndDropOverlay.propTypes = {
|
|
69
|
+
process.env.NODE_ENV !== "production" ? TreeItemDragAndDropOverlay.propTypes /* remove-proptypes */ = {
|
|
70
70
|
// ----------------------------- Warning --------------------------------
|
|
71
71
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
72
72
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -60,7 +60,7 @@ function TreeItemDragAndDropOverlay(props) {
|
|
|
60
60
|
}
|
|
61
61
|
return /*#__PURE__*/_jsx(TreeItemDragAndDropOverlayRoot, _extends({}, props));
|
|
62
62
|
}
|
|
63
|
-
process.env.NODE_ENV !== "production" ? TreeItemDragAndDropOverlay.propTypes = {
|
|
63
|
+
process.env.NODE_ENV !== "production" ? TreeItemDragAndDropOverlay.propTypes /* remove-proptypes */ = {
|
|
64
64
|
// ----------------------------- Warning --------------------------------
|
|
65
65
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
66
66
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -67,7 +67,7 @@ function TreeItemIcon(props) {
|
|
|
67
67
|
}
|
|
68
68
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Icon, (0, _extends2.default)({}, iconProps));
|
|
69
69
|
}
|
|
70
|
-
process.env.NODE_ENV !== "production" ? TreeItemIcon.propTypes = {
|
|
70
|
+
process.env.NODE_ENV !== "production" ? TreeItemIcon.propTypes /* remove-proptypes */ = {
|
|
71
71
|
// ----------------------------- Warning --------------------------------
|
|
72
72
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
73
73
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -60,7 +60,7 @@ function TreeItemIcon(props) {
|
|
|
60
60
|
}
|
|
61
61
|
return /*#__PURE__*/_jsx(Icon, _extends({}, iconProps));
|
|
62
62
|
}
|
|
63
|
-
process.env.NODE_ENV !== "production" ? TreeItemIcon.propTypes = {
|
|
63
|
+
process.env.NODE_ENV !== "production" ? TreeItemIcon.propTypes /* remove-proptypes */ = {
|
|
64
64
|
// ----------------------------- Warning --------------------------------
|
|
65
65
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
66
66
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -33,7 +33,7 @@ function TreeItemProvider(props) {
|
|
|
33
33
|
})
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
|
-
process.env.NODE_ENV !== "production" ? TreeItemProvider.propTypes = {
|
|
36
|
+
process.env.NODE_ENV !== "production" ? TreeItemProvider.propTypes /* remove-proptypes */ = {
|
|
37
37
|
// ----------------------------- Warning --------------------------------
|
|
38
38
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
39
39
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -26,7 +26,7 @@ function TreeItemProvider(props) {
|
|
|
26
26
|
})
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
|
-
process.env.NODE_ENV !== "production" ? TreeItemProvider.propTypes = {
|
|
29
|
+
process.env.NODE_ENV !== "production" ? TreeItemProvider.propTypes /* remove-proptypes */ = {
|
|
30
30
|
// ----------------------------- Warning --------------------------------
|
|
31
31
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
32
32
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
package/index.js
CHANGED
package/index.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Store } from '@mui/x-internals/store';
|
|
2
|
+
import { disposeSymbol } from '@mui/x-internals/disposable';
|
|
2
3
|
import { MinimalTreeViewParameters, TreeViewParametersToStateMapper, MinimalTreeViewState } from "./MinimalTreeViewStore.types.mjs";
|
|
3
4
|
import { TreeViewValidItem } from "../../models/index.mjs";
|
|
4
5
|
import { TimeoutManager } from "./TimeoutManager.mjs";
|
|
@@ -12,6 +13,7 @@ import { TreeViewEventEvent, TreeViewEventListener, TreeViewEventParameters, Tre
|
|
|
12
13
|
export declare class MinimalTreeViewStore<R extends TreeViewValidItem<R>, Multiple extends boolean | undefined, State extends MinimalTreeViewState<R, Multiple> = MinimalTreeViewState<R, Multiple>, Parameters extends MinimalTreeViewParameters<R, Multiple> = MinimalTreeViewParameters<R, Multiple>> extends Store<State> {
|
|
13
14
|
private initialParameters;
|
|
14
15
|
private mapper;
|
|
16
|
+
readonly disposables: DisposableStack;
|
|
15
17
|
private eventManager;
|
|
16
18
|
instanceName: string;
|
|
17
19
|
parameters: Parameters;
|
|
@@ -67,9 +69,17 @@ export declare class MinimalTreeViewStore<R extends TreeViewValidItem<R>, Multip
|
|
|
67
69
|
*/
|
|
68
70
|
updateStateFromParameters(parameters: Parameters): void;
|
|
69
71
|
/**
|
|
70
|
-
*
|
|
72
|
+
* Runs mount-time side effects that must not happen during render (the store
|
|
73
|
+
* is created during render by `useDisposable`). No-op by default; overridden
|
|
74
|
+
* by stores that kick off work on mount (e.g. lazy-loading fetches). Safe to
|
|
75
|
+
* call more than once (StrictMode replays mount effects).
|
|
71
76
|
*/
|
|
72
|
-
|
|
77
|
+
mountEffect: () => void;
|
|
78
|
+
/**
|
|
79
|
+
* Disposes the store synchronously when the component unmounts. `useDisposable`
|
|
80
|
+
* handles React StrictMode's simulated unmount, so this runs once on real unmount.
|
|
81
|
+
*/
|
|
82
|
+
[disposeSymbol](): void;
|
|
73
83
|
/**
|
|
74
84
|
* Whether updates based on `props.items` change should be ignored.
|
|
75
85
|
*/
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Store } from '@mui/x-internals/store';
|
|
2
|
+
import { disposeSymbol } from '@mui/x-internals/disposable';
|
|
2
3
|
import { MinimalTreeViewParameters, TreeViewParametersToStateMapper, MinimalTreeViewState } from "./MinimalTreeViewStore.types.js";
|
|
3
4
|
import { TreeViewValidItem } from "../../models/index.js";
|
|
4
5
|
import { TimeoutManager } from "./TimeoutManager.js";
|
|
@@ -12,6 +13,7 @@ import { TreeViewEventEvent, TreeViewEventListener, TreeViewEventParameters, Tre
|
|
|
12
13
|
export declare class MinimalTreeViewStore<R extends TreeViewValidItem<R>, Multiple extends boolean | undefined, State extends MinimalTreeViewState<R, Multiple> = MinimalTreeViewState<R, Multiple>, Parameters extends MinimalTreeViewParameters<R, Multiple> = MinimalTreeViewParameters<R, Multiple>> extends Store<State> {
|
|
13
14
|
private initialParameters;
|
|
14
15
|
private mapper;
|
|
16
|
+
readonly disposables: DisposableStack;
|
|
15
17
|
private eventManager;
|
|
16
18
|
instanceName: string;
|
|
17
19
|
parameters: Parameters;
|
|
@@ -67,9 +69,17 @@ export declare class MinimalTreeViewStore<R extends TreeViewValidItem<R>, Multip
|
|
|
67
69
|
*/
|
|
68
70
|
updateStateFromParameters(parameters: Parameters): void;
|
|
69
71
|
/**
|
|
70
|
-
*
|
|
72
|
+
* Runs mount-time side effects that must not happen during render (the store
|
|
73
|
+
* is created during render by `useDisposable`). No-op by default; overridden
|
|
74
|
+
* by stores that kick off work on mount (e.g. lazy-loading fetches). Safe to
|
|
75
|
+
* call more than once (StrictMode replays mount effects).
|
|
71
76
|
*/
|
|
72
|
-
|
|
77
|
+
mountEffect: () => void;
|
|
78
|
+
/**
|
|
79
|
+
* Disposes the store synchronously when the component unmounts. `useDisposable`
|
|
80
|
+
* handles React StrictMode's simulated unmount, so this runs once on real unmount.
|
|
81
|
+
*/
|
|
82
|
+
[disposeSymbol](): void;
|
|
73
83
|
/**
|
|
74
84
|
* Whether updates based on `props.items` change should be ignored.
|
|
75
85
|
*/
|
|
@@ -9,6 +9,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
9
9
|
var _store = require("@mui/x-internals/store");
|
|
10
10
|
var _warning = require("@mui/x-internals/warning");
|
|
11
11
|
var _EventManager = require("@mui/x-internals/EventManager");
|
|
12
|
+
var _disposable = require("@mui/x-internals/disposable");
|
|
12
13
|
var _MinimalTreeViewStore = require("./MinimalTreeViewStore.utils");
|
|
13
14
|
var _TimeoutManager = require("./TimeoutManager");
|
|
14
15
|
var _keyboardNavigation = require("../plugins/keyboardNavigation");
|
|
@@ -19,8 +20,13 @@ var _expansion = require("../plugins/expansion");
|
|
|
19
20
|
var _TreeViewItemPluginManager = require("./TreeViewItemPluginManager");
|
|
20
21
|
class MinimalTreeViewStore extends _store.Store {
|
|
21
22
|
initialParameters = null;
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
// Owns the store's teardown. Declared first so the resources below register
|
|
24
|
+
// against it during field initialization; disposed by `useDisposable` on
|
|
25
|
+
// unmount (see `[disposeSymbol]`). `public` so plugins can register their own
|
|
26
|
+
// subscriptions against it (hidden from the context store type).
|
|
27
|
+
disposables = new _disposable.DisposableStack();
|
|
28
|
+
eventManager = this.disposables.adopt(new _EventManager.EventManager(), manager => manager.removeAllListeners());
|
|
29
|
+
timeoutManager = this.disposables.adopt(new _TimeoutManager.TimeoutManager(), manager => manager.clearAll());
|
|
24
30
|
itemPluginManager = new _TreeViewItemPluginManager.TreeViewItemPluginManager();
|
|
25
31
|
constructor(parameters, instanceName, mapper) {
|
|
26
32
|
const minimalInitialState = (0, _MinimalTreeViewStore.createMinimalInitialState)(parameters);
|
|
@@ -83,11 +89,29 @@ class MinimalTreeViewStore extends _store.Store {
|
|
|
83
89
|
}
|
|
84
90
|
|
|
85
91
|
/**
|
|
86
|
-
*
|
|
92
|
+
* Runs mount-time side effects that must not happen during render (the store
|
|
93
|
+
* is created during render by `useDisposable`). No-op by default; overridden
|
|
94
|
+
* by stores that kick off work on mount (e.g. lazy-loading fetches). Safe to
|
|
95
|
+
* call more than once (StrictMode replays mount effects).
|
|
87
96
|
*/
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
97
|
+
mountEffect = () => {};
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Disposes the store synchronously when the component unmounts. `useDisposable`
|
|
101
|
+
* handles React StrictMode's simulated unmount, so this runs once on real unmount.
|
|
102
|
+
*/
|
|
103
|
+
[_disposable.disposeSymbol]() {
|
|
104
|
+
if (this.disposables.disposed) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
try {
|
|
108
|
+
this.disposables.dispose();
|
|
109
|
+
} catch (error) {
|
|
110
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
111
|
+
console.error('MUI X Tree View: error while disposing the store.', ...(0, _disposable.unwrapSuppressedErrors)(error));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
91
115
|
|
|
92
116
|
/**
|
|
93
117
|
* Whether updates based on `props.items` change should be ignored.
|
|
@@ -101,13 +125,13 @@ class MinimalTreeViewStore extends _store.Store {
|
|
|
101
125
|
*/
|
|
102
126
|
registerStoreEffect = (selector, effect) => {
|
|
103
127
|
let previousValue = selector(this.state);
|
|
104
|
-
this.subscribe(state => {
|
|
128
|
+
this.disposables.defer(this.subscribe(state => {
|
|
105
129
|
const nextValue = selector(state);
|
|
106
130
|
if (nextValue !== previousValue) {
|
|
107
131
|
effect(previousValue, nextValue);
|
|
108
132
|
previousValue = nextValue;
|
|
109
133
|
}
|
|
110
|
-
});
|
|
134
|
+
}));
|
|
111
135
|
};
|
|
112
136
|
|
|
113
137
|
/**
|
|
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import { Store } from '@mui/x-internals/store';
|
|
3
3
|
import { warnOnce } from '@mui/x-internals/warning';
|
|
4
4
|
import { EventManager } from '@mui/x-internals/EventManager';
|
|
5
|
+
import { DisposableStack, disposeSymbol, unwrapSuppressedErrors } from '@mui/x-internals/disposable';
|
|
5
6
|
import { createMinimalInitialState, createTreeViewDefaultId, deriveStateFromParameters } from "./MinimalTreeViewStore.utils.mjs";
|
|
6
7
|
import { TimeoutManager } from "./TimeoutManager.mjs";
|
|
7
8
|
import { TreeViewKeyboardNavigationPlugin } from "../plugins/keyboardNavigation/index.mjs";
|
|
@@ -12,8 +13,13 @@ import { TreeViewExpansionPlugin } from "../plugins/expansion/index.mjs";
|
|
|
12
13
|
import { TreeViewItemPluginManager } from "./TreeViewItemPluginManager.mjs";
|
|
13
14
|
export class MinimalTreeViewStore extends Store {
|
|
14
15
|
initialParameters = null;
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
// Owns the store's teardown. Declared first so the resources below register
|
|
17
|
+
// against it during field initialization; disposed by `useDisposable` on
|
|
18
|
+
// unmount (see `[disposeSymbol]`). `public` so plugins can register their own
|
|
19
|
+
// subscriptions against it (hidden from the context store type).
|
|
20
|
+
disposables = new DisposableStack();
|
|
21
|
+
eventManager = this.disposables.adopt(new EventManager(), manager => manager.removeAllListeners());
|
|
22
|
+
timeoutManager = this.disposables.adopt(new TimeoutManager(), manager => manager.clearAll());
|
|
17
23
|
itemPluginManager = new TreeViewItemPluginManager();
|
|
18
24
|
constructor(parameters, instanceName, mapper) {
|
|
19
25
|
const minimalInitialState = createMinimalInitialState(parameters);
|
|
@@ -76,11 +82,29 @@ export class MinimalTreeViewStore extends Store {
|
|
|
76
82
|
}
|
|
77
83
|
|
|
78
84
|
/**
|
|
79
|
-
*
|
|
85
|
+
* Runs mount-time side effects that must not happen during render (the store
|
|
86
|
+
* is created during render by `useDisposable`). No-op by default; overridden
|
|
87
|
+
* by stores that kick off work on mount (e.g. lazy-loading fetches). Safe to
|
|
88
|
+
* call more than once (StrictMode replays mount effects).
|
|
80
89
|
*/
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
90
|
+
mountEffect = () => {};
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Disposes the store synchronously when the component unmounts. `useDisposable`
|
|
94
|
+
* handles React StrictMode's simulated unmount, so this runs once on real unmount.
|
|
95
|
+
*/
|
|
96
|
+
[disposeSymbol]() {
|
|
97
|
+
if (this.disposables.disposed) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
this.disposables.dispose();
|
|
102
|
+
} catch (error) {
|
|
103
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
104
|
+
console.error('MUI X Tree View: error while disposing the store.', ...unwrapSuppressedErrors(error));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
84
108
|
|
|
85
109
|
/**
|
|
86
110
|
* Whether updates based on `props.items` change should be ignored.
|
|
@@ -94,13 +118,13 @@ export class MinimalTreeViewStore extends Store {
|
|
|
94
118
|
*/
|
|
95
119
|
registerStoreEffect = (selector, effect) => {
|
|
96
120
|
let previousValue = selector(this.state);
|
|
97
|
-
this.subscribe(state => {
|
|
121
|
+
this.disposables.defer(this.subscribe(state => {
|
|
98
122
|
const nextValue = selector(state);
|
|
99
123
|
if (nextValue !== previousValue) {
|
|
100
124
|
effect(previousValue, nextValue);
|
|
101
125
|
previousValue = nextValue;
|
|
102
126
|
}
|
|
103
|
-
});
|
|
127
|
+
}));
|
|
104
128
|
};
|
|
105
129
|
|
|
106
130
|
/**
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { disposeSymbol } from '@mui/x-internals/disposable';
|
|
2
3
|
import { TreeItemWrapper, TreeViewItemPluginResponse, TreeViewPublicAPI, TreeViewAnyStore } from "../models/index.mjs";
|
|
3
4
|
import type { TreeItemProps } from "../../TreeItem/TreeItem.types.mjs";
|
|
4
5
|
import { TreeViewClasses, TreeViewSlotProps, TreeViewSlots } from "./TreeViewStyleContext.mjs";
|
|
5
6
|
import { UseTreeViewBuildContextParameters } from "./useTreeViewBuildContext.mjs";
|
|
6
7
|
export type TreeViewItemPluginsRunner = (props: TreeItemProps) => Required<TreeViewItemPluginResponse>;
|
|
7
|
-
export type TreeViewStoreInContext<TStore extends TreeViewAnyStore> = Omit<TStore, 'setState' | 'update' | 'set' | 'updateStateFromParameters' | '
|
|
8
|
+
export type TreeViewStoreInContext<TStore extends TreeViewAnyStore> = Omit<TStore, 'setState' | 'update' | 'set' | 'updateStateFromParameters' | 'disposables' | typeof disposeSymbol | 'mountEffect' | 'registerStoreEffect' | 'itemPluginManager' | 'parameters'>;
|
|
8
9
|
export interface TreeViewContextValue<TStore extends TreeViewAnyStore> {
|
|
9
10
|
publicAPI: TreeViewPublicAPI<TStore>;
|
|
10
11
|
store: TreeViewStoreInContext<TStore>;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { disposeSymbol } from '@mui/x-internals/disposable';
|
|
2
3
|
import { TreeItemWrapper, TreeViewItemPluginResponse, TreeViewPublicAPI, TreeViewAnyStore } from "../models/index.js";
|
|
3
4
|
import type { TreeItemProps } from "../../TreeItem/TreeItem.types.js";
|
|
4
5
|
import { TreeViewClasses, TreeViewSlotProps, TreeViewSlots } from "./TreeViewStyleContext.js";
|
|
5
6
|
import { UseTreeViewBuildContextParameters } from "./useTreeViewBuildContext.js";
|
|
6
7
|
export type TreeViewItemPluginsRunner = (props: TreeItemProps) => Required<TreeViewItemPluginResponse>;
|
|
7
|
-
export type TreeViewStoreInContext<TStore extends TreeViewAnyStore> = Omit<TStore, 'setState' | 'update' | 'set' | 'updateStateFromParameters' | '
|
|
8
|
+
export type TreeViewStoreInContext<TStore extends TreeViewAnyStore> = Omit<TStore, 'setState' | 'update' | 'set' | 'updateStateFromParameters' | 'disposables' | typeof disposeSymbol | 'mountEffect' | 'registerStoreEffect' | 'itemPluginManager' | 'parameters'>;
|
|
8
9
|
export interface TreeViewContextValue<TStore extends TreeViewAnyStore> {
|
|
9
10
|
publicAPI: TreeViewPublicAPI<TStore>;
|
|
10
11
|
store: TreeViewStoreInContext<TStore>;
|
|
@@ -2,7 +2,12 @@ import * as React from 'react';
|
|
|
2
2
|
import { SlotComponentProps } from '@mui/utils/types';
|
|
3
3
|
import { TreeItem, TreeItemProps } from "../../TreeItem/index.mjs";
|
|
4
4
|
import { TreeViewItemId } from "../../models/index.mjs";
|
|
5
|
-
export declare const RichTreeViewItem: React.
|
|
5
|
+
export declare const RichTreeViewItem: React.MemoExoticComponent<({
|
|
6
|
+
itemSlot,
|
|
7
|
+
itemSlotProps,
|
|
8
|
+
itemId,
|
|
9
|
+
skipChildren
|
|
10
|
+
}: RichTreeViewItemProps) => import("react/jsx-runtime").JSX.Element>;
|
|
6
11
|
export declare function RichTreeViewItems<TProps extends object>(props: RichTreeViewItemsProps<TProps>): import("react/jsx-runtime").JSX.Element;
|
|
7
12
|
interface RichTreeViewItemsOwnerState {
|
|
8
13
|
itemId: TreeViewItemId;
|
|
@@ -2,7 +2,12 @@ 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 const RichTreeViewItem: React.
|
|
5
|
+
export declare const RichTreeViewItem: React.MemoExoticComponent<({
|
|
6
|
+
itemSlot,
|
|
7
|
+
itemSlotProps,
|
|
8
|
+
itemId,
|
|
9
|
+
skipChildren
|
|
10
|
+
}: RichTreeViewItemProps) => import("react/jsx-runtime").JSX.Element>;
|
|
6
11
|
export declare function RichTreeViewItems<TProps extends object>(props: RichTreeViewItemsProps<TProps>): import("react/jsx-runtime").JSX.Element;
|
|
7
12
|
interface RichTreeViewItemsOwnerState {
|
|
8
13
|
itemId: TreeViewItemId;
|
|
@@ -7,21 +7,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.useTreeViewStore = useTreeViewStore;
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
-
var _useRefWithInit = require("@base-ui/utils/useRefWithInit");
|
|
11
10
|
var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
|
|
12
11
|
var _useOnMount = require("@base-ui/utils/useOnMount");
|
|
12
|
+
var _useDisposable = require("@mui/x-internals/useDisposable");
|
|
13
13
|
var _RtlProvider = require("@mui/system/RtlProvider");
|
|
14
14
|
/**
|
|
15
15
|
* Creates a Tree View store and keep it in sync with the provided parameters.
|
|
16
16
|
*/
|
|
17
17
|
function useTreeViewStore(StoreClass, parameters) {
|
|
18
18
|
const isRtl = (0, _RtlProvider.useRtl)();
|
|
19
|
-
const store = (0,
|
|
19
|
+
const store = (0, _useDisposable.useDisposable)(() => new StoreClass((0, _extends2.default)({}, parameters, {
|
|
20
20
|
isRtl
|
|
21
|
-
})))
|
|
21
|
+
})));
|
|
22
22
|
(0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => store.updateStateFromParameters((0, _extends2.default)({}, parameters, {
|
|
23
23
|
isRtl
|
|
24
24
|
})), [store, isRtl, parameters]);
|
|
25
|
-
|
|
25
|
+
|
|
26
|
+
// Mount-time side effects (e.g. kicking off lazy-loading fetches). The store is
|
|
27
|
+
// created during render by `useDisposable`, so these can't run in the factory.
|
|
28
|
+
(0, _useOnMount.useOnMount)(store.mountEffect);
|
|
26
29
|
return store;
|
|
27
30
|
}
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
-
import { useRefWithInit } from '@base-ui/utils/useRefWithInit';
|
|
5
4
|
import { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';
|
|
6
5
|
import { useOnMount } from '@base-ui/utils/useOnMount';
|
|
6
|
+
import { useDisposable } from '@mui/x-internals/useDisposable';
|
|
7
7
|
import { useRtl } from '@mui/system/RtlProvider';
|
|
8
8
|
/**
|
|
9
9
|
* Creates a Tree View store and keep it in sync with the provided parameters.
|
|
10
10
|
*/
|
|
11
11
|
export function useTreeViewStore(StoreClass, parameters) {
|
|
12
12
|
const isRtl = useRtl();
|
|
13
|
-
const store =
|
|
13
|
+
const store = useDisposable(() => new StoreClass(_extends({}, parameters, {
|
|
14
14
|
isRtl
|
|
15
|
-
})))
|
|
15
|
+
})));
|
|
16
16
|
useIsoLayoutEffect(() => store.updateStateFromParameters(_extends({}, parameters, {
|
|
17
17
|
isRtl
|
|
18
18
|
})), [store, isRtl, parameters]);
|
|
19
|
-
|
|
19
|
+
|
|
20
|
+
// Mount-time side effects (e.g. kicking off lazy-loading fetches). The store is
|
|
21
|
+
// created during render by `useDisposable`, so these can't run in the factory.
|
|
22
|
+
useOnMount(store.mountEffect);
|
|
20
23
|
return store;
|
|
21
24
|
}
|
|
@@ -17,7 +17,7 @@ class TreeViewFocusPlugin {
|
|
|
17
17
|
// Whenever the items change, we need to ensure the focused item is still present.
|
|
18
18
|
// If the focused item was removed, focus the closest neighbor instead of the first item.
|
|
19
19
|
let previousState = store.state;
|
|
20
|
-
this.store.subscribe(newState => {
|
|
20
|
+
this.store.disposables.defer(this.store.subscribe(newState => {
|
|
21
21
|
// Only run when items actually changed.
|
|
22
22
|
if (newState.itemMetaLookup === previousState.itemMetaLookup) {
|
|
23
23
|
previousState = newState;
|
|
@@ -36,7 +36,7 @@ class TreeViewFocusPlugin {
|
|
|
36
36
|
this.applyItemFocus(null, itemToFocusId);
|
|
37
37
|
}
|
|
38
38
|
previousState = newState;
|
|
39
|
-
});
|
|
39
|
+
}));
|
|
40
40
|
}
|
|
41
41
|
setFocusedItemId = itemId => {
|
|
42
42
|
const focusedItemId = _selectors.focusSelectors.focusedItemId(this.store.state);
|
|
@@ -11,7 +11,7 @@ export class TreeViewFocusPlugin {
|
|
|
11
11
|
// Whenever the items change, we need to ensure the focused item is still present.
|
|
12
12
|
// If the focused item was removed, focus the closest neighbor instead of the first item.
|
|
13
13
|
let previousState = store.state;
|
|
14
|
-
this.store.subscribe(newState => {
|
|
14
|
+
this.store.disposables.defer(this.store.subscribe(newState => {
|
|
15
15
|
// Only run when items actually changed.
|
|
16
16
|
if (newState.itemMetaLookup === previousState.itemMetaLookup) {
|
|
17
17
|
previousState = newState;
|
|
@@ -30,7 +30,7 @@ export class TreeViewFocusPlugin {
|
|
|
30
30
|
this.applyItemFocus(null, itemToFocusId);
|
|
31
31
|
}
|
|
32
32
|
previousState = newState;
|
|
33
|
-
});
|
|
33
|
+
}));
|
|
34
34
|
}
|
|
35
35
|
setFocusedItemId = itemId => {
|
|
36
36
|
const focusedItemId = focusSelectors.focusedItemId(this.store.state);
|
|
@@ -23,11 +23,12 @@ const useLabelEditingItemPlugin = ({
|
|
|
23
23
|
const [labelInputValue, setLabelInputValue] = React.useState(label);
|
|
24
24
|
const isItemEditable = (0, _store.useStore)(store, _selectors.labelSelectors.isItemEditable, itemId);
|
|
25
25
|
const isItemBeingEdited = (0, _store.useStore)(store, _selectors.labelSelectors.isItemBeingEdited, itemId);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
|
|
27
|
+
// When not editing, the input must mirror the current label. This resets any
|
|
28
|
+
// uncommitted edits when the user cancels (Escape) and syncs external label changes.
|
|
29
|
+
if (!isItemBeingEdited && labelInputValue !== label) {
|
|
30
|
+
setLabelInputValue(label);
|
|
31
|
+
}
|
|
31
32
|
return {
|
|
32
33
|
propsEnhancers: {
|
|
33
34
|
label: () => ({
|
|
@@ -17,11 +17,12 @@ export const useLabelEditingItemPlugin = ({
|
|
|
17
17
|
const [labelInputValue, setLabelInputValue] = React.useState(label);
|
|
18
18
|
const isItemEditable = useStore(store, labelSelectors.isItemEditable, itemId);
|
|
19
19
|
const isItemBeingEdited = useStore(store, labelSelectors.isItemBeingEdited, itemId);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
|
|
21
|
+
// When not editing, the input must mirror the current label. This resets any
|
|
22
|
+
// uncommitted edits when the user cancels (Escape) and syncs external label changes.
|
|
23
|
+
if (!isItemBeingEdited && labelInputValue !== label) {
|
|
24
|
+
setLabelInputValue(label);
|
|
25
|
+
}
|
|
25
26
|
return {
|
|
26
27
|
propsEnhancers: {
|
|
27
28
|
label: () => ({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-tree-view",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.7.0",
|
|
4
4
|
"author": "MUI Team",
|
|
5
5
|
"description": "The community edition of the MUI X Tree View components.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -32,13 +32,13 @@
|
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@babel/runtime": "^7.29.7",
|
|
35
|
-
"@base-ui/utils": "^0.
|
|
36
|
-
"@mui/utils": "9.
|
|
35
|
+
"@base-ui/utils": "^0.3.0",
|
|
36
|
+
"@mui/utils": "^9.1.1",
|
|
37
37
|
"@types/react-transition-group": "^4.4.12",
|
|
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": "^9.
|
|
41
|
+
"@mui/x-internals": "^9.7.0"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"@emotion/react": "^11.9.0",
|
|
@@ -273,6 +273,9 @@
|
|
|
273
273
|
}
|
|
274
274
|
}
|
|
275
275
|
},
|
|
276
|
+
"imports": {
|
|
277
|
+
"#formatErrorMessage": "@mui/x-internals/formatErrorMessage"
|
|
278
|
+
},
|
|
276
279
|
"main": "./index.js",
|
|
277
280
|
"types": "./index.d.ts"
|
|
278
281
|
}
|