@mui/x-data-grid 8.27.0 → 9.0.0-alpha.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 +255 -3
- package/DataGrid/index.js +0 -1
- package/components/GridColumnSortButton.js +2 -2
- package/components/GridPagination.js +5 -4
- package/components/GridScrollArea.js +2 -2
- package/components/GridScrollShadows.js +2 -2
- package/components/GridSkeletonLoadingOverlay.js +2 -2
- package/components/base/GridOverlays.js +3 -3
- package/components/columnHeaders/GridColumnHeaderItem.js +31 -1
- package/components/columnHeaders/GridColumnHeaderTitle.js +2 -2
- package/components/columnHeaders/GridIconButtonContainer.js +2 -2
- package/components/containers/GridRootStyles.js +23 -217
- package/components/menu/columnMenu/GridColumnMenu.d.ts +2 -2
- package/components/menu/columnMenu/GridColumnMenu.js +2 -0
- package/components/menu/columnMenu/GridColumnMenuProps.d.ts +9 -1
- package/components/menu/columnMenu/index.d.ts +1 -1
- package/components/menu/columnMenu/index.js +0 -12
- package/components/toolbar/GridToolbarQuickFilter.js +4 -4
- package/components/toolbarV8/GridToolbar.js +3 -3
- package/components/toolbarV8/Toolbar.d.ts +1 -1
- package/components/toolbarV8/Toolbar.js +2 -2
- package/components/virtualization/GridBottomContainer.js +2 -2
- package/components/virtualization/GridMainContainer.js +3 -3
- package/components/virtualization/GridTopContainer.js +2 -2
- package/components/virtualization/GridVirtualScrollbar.d.ts +1 -1
- package/components/virtualization/GridVirtualScrollbar.js +6 -57
- package/components/virtualization/GridVirtualScroller.js +2 -2
- package/components/virtualization/GridVirtualScrollerFiller.js +6 -6
- package/constants/localeTextConstants.js +3 -2
- package/esm/DataGrid/index.js +0 -1
- package/esm/components/GridColumnSortButton.js +1 -1
- package/esm/components/GridPagination.js +5 -4
- package/esm/components/GridScrollArea.js +1 -1
- package/esm/components/GridScrollShadows.js +1 -1
- package/esm/components/GridSkeletonLoadingOverlay.js +1 -1
- package/esm/components/base/GridOverlays.js +1 -1
- package/esm/components/columnHeaders/GridColumnHeaderItem.js +31 -1
- package/esm/components/columnHeaders/GridColumnHeaderTitle.js +1 -1
- package/esm/components/columnHeaders/GridIconButtonContainer.js +1 -1
- package/esm/components/containers/GridRootStyles.js +23 -217
- package/esm/components/menu/columnMenu/GridColumnMenu.d.ts +2 -2
- package/esm/components/menu/columnMenu/GridColumnMenu.js +2 -0
- package/esm/components/menu/columnMenu/GridColumnMenuProps.d.ts +9 -1
- package/esm/components/menu/columnMenu/index.d.ts +1 -1
- package/esm/components/menu/columnMenu/index.js +0 -1
- package/esm/components/toolbar/GridToolbarQuickFilter.js +1 -1
- package/esm/components/toolbarV8/GridToolbar.js +1 -1
- package/esm/components/toolbarV8/Toolbar.d.ts +1 -1
- package/esm/components/toolbarV8/Toolbar.js +1 -1
- package/esm/components/virtualization/GridBottomContainer.js +1 -1
- package/esm/components/virtualization/GridMainContainer.js +1 -1
- package/esm/components/virtualization/GridTopContainer.js +1 -1
- package/esm/components/virtualization/GridVirtualScrollbar.d.ts +1 -1
- package/esm/components/virtualization/GridVirtualScrollbar.js +2 -53
- package/esm/components/virtualization/GridVirtualScroller.js +1 -1
- package/esm/components/virtualization/GridVirtualScrollerFiller.js +1 -1
- package/esm/constants/localeTextConstants.js +3 -2
- package/esm/hooks/features/columnMenu/getColumnMenuItemKeys.d.ts +17 -0
- package/esm/hooks/features/columnMenu/getColumnMenuItemKeys.js +36 -0
- package/esm/hooks/features/columnMenu/useGridColumnMenuSlots.js +11 -16
- package/esm/hooks/features/dataSource/useGridDataSourceBase.js +1 -0
- package/esm/hooks/features/pagination/gridPaginationUtils.js +1 -1
- package/esm/hooks/features/pagination/useGridRowCount.js +19 -3
- package/esm/index.js +1 -1
- package/esm/internals/index.d.ts +1 -0
- package/esm/internals/utils/propValidation.js +1 -1
- package/esm/locales/beBY.js +3 -2
- package/esm/locales/bgBG.js +3 -2
- package/esm/locales/bnBD.js +3 -2
- package/esm/locales/daDK.js +3 -2
- package/esm/locales/elGR.js +3 -2
- package/esm/locales/faIR.js +3 -2
- package/esm/locales/fiFI.js +3 -2
- package/esm/locales/huHU.js +3 -2
- package/esm/locales/hyAM.js +3 -2
- package/esm/locales/isIS.js +3 -2
- package/esm/locales/nlNL.js +3 -2
- package/esm/locales/roRO.js +3 -2
- package/esm/locales/ruRU.js +3 -2
- package/esm/locales/svSE.js +3 -2
- package/esm/locales/thTH.d.ts +2 -0
- package/esm/locales/thTH.js +297 -0
- package/esm/locales/trTR.js +3 -2
- package/esm/locales/ukUA.js +3 -2
- package/esm/locales/urPK.js +3 -2
- package/esm/locales/viVN.js +3 -2
- package/esm/material/index.js +1 -1
- package/hooks/features/columnMenu/getColumnMenuItemKeys.d.ts +17 -0
- package/hooks/features/columnMenu/getColumnMenuItemKeys.js +43 -0
- package/hooks/features/columnMenu/useGridColumnMenuSlots.js +11 -16
- package/hooks/features/dataSource/useGridDataSourceBase.js +1 -0
- package/hooks/features/pagination/gridPaginationUtils.js +1 -1
- package/hooks/features/pagination/useGridRowCount.js +19 -3
- package/index.js +1 -1
- package/internals/index.d.ts +1 -0
- package/internals/utils/propValidation.js +1 -1
- package/locales/beBY.js +3 -2
- package/locales/bgBG.js +3 -2
- package/locales/bnBD.js +3 -2
- package/locales/daDK.js +3 -2
- package/locales/elGR.js +3 -2
- package/locales/faIR.js +3 -2
- package/locales/fiFI.js +3 -2
- package/locales/huHU.js +3 -2
- package/locales/hyAM.js +3 -2
- package/locales/isIS.js +3 -2
- package/locales/nlNL.js +3 -2
- package/locales/roRO.js +3 -2
- package/locales/ruRU.js +3 -2
- package/locales/svSE.js +3 -2
- package/locales/thTH.d.ts +2 -0
- package/locales/thTH.js +303 -0
- package/locales/trTR.js +3 -2
- package/locales/ukUA.js +3 -2
- package/locales/urPK.js +3 -2
- package/locales/viVN.js +3 -2
- package/material/index.js +1 -1
- package/package.json +5 -5
- package/esm/index.css +0 -5
- package/index.css +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,261 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## 9.0.0-alpha.0
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
_Feb 16, 2026_
|
|
6
|
+
|
|
7
|
+
We'd like to extend a big thank you to the 21 contributors who made this release possible. Here are some highlights ✨:
|
|
8
|
+
|
|
9
|
+
- Add support for virtualized items on `<RichTreeViewPro />`:
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
<RichTreeViewPro items={ITEMS} virtualization itemHeight={48} />
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
- Add Thai (`thTH`) locale on the Data Grid and the Date and Time Pickers (#21116) @siriwatknp
|
|
16
|
+
- Add a new `AdapterDayjsBuddhist` adapter for Date and Time Pickers (#20984) @siriwatknp
|
|
17
|
+
- Add support for virtualization in the rich tree view (#20780) @flaviendelangle
|
|
18
|
+
- Add WebGL renderer to Heatmap (#20756) @bernardobelchior
|
|
19
|
+
|
|
20
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
21
|
+
@jhe-iqbis
|
|
22
|
+
|
|
23
|
+
The following team members contributed to this release:
|
|
24
|
+
@alexfauquette, @arminmeh, @bernardobelchior, @brijeshb42, @cherniavskii, @dav-is, @flaviendelangle, @Janpot, @JCQuintas, @mapache-salvaje, @MBilalShafi, @michelengelen, @mj12albert, @noraleonte, @oliviertassinari, @rita-codes, @romgrk, @sai6855, @siriwatknp
|
|
25
|
+
|
|
26
|
+
### Data Grid
|
|
27
|
+
|
|
28
|
+
#### `@mui/x-data-grid@9.0.0-alpha.0`
|
|
29
|
+
|
|
30
|
+
- [DataGrid] Update default `logicOperator` behavior in filtering docs (#21098) @michelengelen
|
|
31
|
+
- [DataGrid] Add `thTH` locale (#21116) @siriwatknp
|
|
32
|
+
- [DataGrid] Fix initial filter value state in CustomMultiValueOperator demo (#21217) @sai6855
|
|
33
|
+
|
|
34
|
+
#### `@mui/x-data-grid-pro@9.0.0-alpha.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
35
|
+
|
|
36
|
+
Same changes as in `@mui/x-data-grid@9.0.0-alpha.0`, plus:
|
|
37
|
+
|
|
38
|
+
- [DataGridPro] Cleanup outdated rows on `dataSource` reference update (#21138) @MBilalShafi
|
|
39
|
+
|
|
40
|
+
#### `@mui/x-data-grid-premium@9.0.0-alpha.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
41
|
+
|
|
42
|
+
Same changes as in `@mui/x-data-grid-pro@9.0.0-alpha.0`.
|
|
43
|
+
|
|
44
|
+
### Date and Time Pickers
|
|
45
|
+
|
|
46
|
+
#### `@mui/x-date-pickers@9.0.0-alpha.0`
|
|
47
|
+
|
|
48
|
+
- [pickers] Add `AdapterDayjsBuddhist` adapter (#20984) @siriwatknp
|
|
49
|
+
- [pickers] Add `thTH` locale (#21116) @siriwatknp
|
|
50
|
+
|
|
51
|
+
#### `@mui/x-date-pickers-pro@9.0.0-alpha.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
52
|
+
|
|
53
|
+
Same changes as in `@mui/x-date-pickers@9.0.0-alpha.0`.
|
|
54
|
+
|
|
55
|
+
### Charts
|
|
56
|
+
|
|
57
|
+
#### `@mui/x-charts@9.0.0-alpha.0`
|
|
58
|
+
|
|
59
|
+
- [charts] Add Legend actions (#20404) @JCQuintas
|
|
60
|
+
- [charts] Add `Chart` suffix to MUI Classes (#21042) @JCQuintas
|
|
61
|
+
- [charts] Add `axesGap` props to put space between axes (#20904) @alexfauquette
|
|
62
|
+
- [charts] Add `cleanIdentifier` function to charts series instance (#20832) @JCQuintas
|
|
63
|
+
- [charts] Add `initialHiddenItems` prop to set initial state (#20894) @JCQuintas
|
|
64
|
+
- [charts] Add `useXAxisCoordinates` and `useYAxisCoordinates` hooks (#20972) @bernardobelchior
|
|
65
|
+
- [charts] Add axis slots and expose axis ticks hooks (#20935) @bernardobelchior
|
|
66
|
+
- [charts] Change `line` legend marker to be a line (#21059) @JCQuintas
|
|
67
|
+
- [charts] Codemod test pattern with function (#21111) @JCQuintas
|
|
68
|
+
- [charts] Control the item tooltip (#20617) @alexfauquette
|
|
69
|
+
- [charts] Enable keyboard navigation in radar chart (#20765) @alexfauquette
|
|
70
|
+
- [charts] Export `CartesianChartSeriesType` and `StackableChartSeriesType` (#21012) @bernardobelchior
|
|
71
|
+
- [charts] Export plugins from premium (#20866) @JCQuintas
|
|
72
|
+
- [charts] Filter hidden series from axis tooltip (#21273) @Copilot
|
|
73
|
+
- [charts] Filter hidden series from axis tooltip (#21273) @Copilot
|
|
74
|
+
- [charts] Fix rename `getSVGPoint` to `getChartPoint` (#21335) @bernardobelchior
|
|
75
|
+
- [charts] Fix cleanup function in useChartInteractionListener to correctly remove event listeners with options (#21218) @sai6855
|
|
76
|
+
- [charts] Fix import rename in codemod (#21112) @JCQuintas
|
|
77
|
+
- [charts] Fix multiple exports of `HighlightScope` (#21270) @bernardobelchior
|
|
78
|
+
- [charts] Fix test inconsistency in charts (#20907) @JCQuintas
|
|
79
|
+
- [charts] Fix tooltip position for stacked line series (#20901) @alexfauquette
|
|
80
|
+
- [charts] Make Highlight scope a generic (#21189) @alexfauquette
|
|
81
|
+
- [charts] Make `LegendItemParams.type` required (#21003) @alexfauquette
|
|
82
|
+
- [charts] Make `seriesId` a string only (#20997) @alexfauquette
|
|
83
|
+
- [charts] Make the `useChartRootRef` support typing parameter (#21023) @alexfauquette
|
|
84
|
+
- [charts] Memoize HeatmapItem to avoid re-render when fading/highlighting (#20865) @bernardobelchior
|
|
85
|
+
- [charts] Move axis id to `data-axis-id` attribute instead of class (#21037) @JCQuintas
|
|
86
|
+
- [charts] Move `cleanIdentifier` and `serializeIdentifier` instance methods to `useChartSeriesConfig` plugin (#21025) @JCQuintas
|
|
87
|
+
- [charts] Move `seriesConfig` to `useChartSeriesConfig` plugin (#21004) @JCQuintas
|
|
88
|
+
- [charts] Move element refs to `useChartElementRef` plugin (#21099) @JCQuintas
|
|
89
|
+
- [charts] Move types related to `seriesConfig` into the `useChartSeriesConfig` plugin folder (#21026) @JCQuintas
|
|
90
|
+
- [charts] Remove `data-has-focused-item` from `ChartsSurface` (#21255) @bernardobelchior
|
|
91
|
+
- [charts] Remove default generic of item identifiers (#21182) @alexfauquette
|
|
92
|
+
- [charts] Remove deprecated `id` from `LegendItemParams` (#21055) @alexfauquette
|
|
93
|
+
- [charts] Remove deprecated `ChartApi` export from `ChartContainer` (#20975) @JCQuintas
|
|
94
|
+
- [charts] Remove deprecated `useAxisTooltip` in favor of `useAxesTooltip` (#20962) @Copilot
|
|
95
|
+
- [charts] Remove deprecated series type helpers and functions (#20998) @alexfauquette
|
|
96
|
+
- [charts] Rename `ChartContainer` to `ChartsContainer` (#21173) @JCQuintas
|
|
97
|
+
- [charts] Rename `getSVGPoint` to `getChartPoint` (#21322) @bernardobelchior
|
|
98
|
+
- [charts] Rename `TickItemType` to `TickItem` (#21008) @bernardobelchior
|
|
99
|
+
- [charts] Replace props `id` by `seriesId` when necessary (#21057) @alexfauquette
|
|
100
|
+
- [charts] Revert `touch-action: pan-y` removal when zoom is disabled (#20852) @bernardobelchior
|
|
101
|
+
- [charts] The `useXxxSeries([])` return empty array (#21001) @alexfauquette
|
|
102
|
+
- [charts] Use `NumberValue` in domain limit function (#21054) @JCQuintas
|
|
103
|
+
|
|
104
|
+
#### `@mui/x-charts-pro@9.0.0-alpha.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
105
|
+
|
|
106
|
+
Same changes as in `@mui/x-charts@9.0.0-alpha.0`, plus:
|
|
107
|
+
|
|
108
|
+
- [charts-pro] Add border radius to heatmap (#20931) @bernardobelchior
|
|
109
|
+
- [charts-pro] Add keyboard navigation to funnel (#20766) @alexfauquette
|
|
110
|
+
- [charts-pro] Add keyboard navigation to heatmap (#20786) @alexfauquette
|
|
111
|
+
- [charts-pro] Add keyboard navigation to sankey (#20777) @alexfauquette
|
|
112
|
+
- [charts-pro] Fix Heatmap's `onItemClick` not triggering (#21016) @bernardobelchior
|
|
113
|
+
- [charts-pro] Fix crash when two same-direction axes have a zoom preview (#20916) @bernardobelchior
|
|
114
|
+
- [charts-pro] Handle edge case in export image (#21190) @bernardobelchior
|
|
115
|
+
- [charts-pro] Prefer global pointer interaction tracker in Heatmap (#20697) @bernardobelchior
|
|
116
|
+
- [charts-pro] Support composition for Sankey (#20604) @alexfauquette
|
|
117
|
+
- [charts-pro] Update Heatmap identifier (#21124) @alexfauquette
|
|
118
|
+
- [charts-pro] Update default value of `hideLegend` prop in `Heatmap` (#20961) @Copilot
|
|
119
|
+
|
|
120
|
+
#### `@mui/x-charts-premium@9.0.0-alpha.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
121
|
+
|
|
122
|
+
Same changes as in `@mui/x-charts-pro@9.0.0-alpha.0`, plus:
|
|
123
|
+
|
|
124
|
+
- [charts-premium] Add WebGL renderer to Heatmap (#20756) @bernardobelchior
|
|
125
|
+
- [charts-premium] Add `ChartContainerPremium` (#20910) @bernardobelchior
|
|
126
|
+
- [charts-premium] Add `HeatmapPremium` (#20930) @bernardobelchior
|
|
127
|
+
- [charts-premium] Add keyboard navigation to range-bar (#21272) @alexfauquette
|
|
128
|
+
- [charts-premium] Extract `HeatmapSVGPlot` from `HeatmapPlot` component (#21015) @bernardobelchior
|
|
129
|
+
- [charts-premium] Fix `ChartDataProviderPremium` tests (#20868) @bernardobelchior
|
|
130
|
+
- [charts-premium] Fix links in comments for chart containers and data providers (#21105) @bernardobelchior
|
|
131
|
+
|
|
132
|
+
### Tree View
|
|
133
|
+
|
|
134
|
+
#### `@mui/x-tree-view@9.0.0-alpha.0`
|
|
135
|
+
|
|
136
|
+
_No changes._
|
|
137
|
+
|
|
138
|
+
#### `@mui/x-tree-view-pro@9.0.0-alpha.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
139
|
+
|
|
140
|
+
Same changes as in `@mui/x-tree-view@9.0.0-alpha.0`, plus:
|
|
141
|
+
|
|
142
|
+
- [RichTreeViewPro] Add support for virtualization (#20780) @flaviendelangle
|
|
143
|
+
|
|
144
|
+
### Codemod
|
|
145
|
+
|
|
146
|
+
#### `@mui/x-codemod@9.0.0-alpha.0`
|
|
147
|
+
|
|
148
|
+
- [codemod] Document and Clean the codemod utils (#21014) @alexfauquette
|
|
149
|
+
|
|
150
|
+
### Docs
|
|
151
|
+
|
|
152
|
+
- [docs] Add focus highlight in composition snipets (#20614) @alexfauquette
|
|
153
|
+
- [docs] Add simple candlestick chart demo (#20912) @bernardobelchior
|
|
154
|
+
- [docs] Fix Waterfall Chart documentation badge from Pro to Premium (#20888) @Copilot
|
|
155
|
+
- [docs] Fix broken links on Data Grid Editing sub-pages (#20911) @arminmeh
|
|
156
|
+
- [docs] Fix docs API for HeatmapPremium (#21137) @alexfauquette
|
|
157
|
+
- [docs] Fix horizontal overflow in heatmap docs (#20968) @bernardobelchior
|
|
158
|
+
- [docs] Move Range Bar Chart to existing charts (#21120) @bernardobelchior
|
|
159
|
+
- [docs] Prepare the scheduler doc for the alpha (#21268) @flaviendelangle
|
|
160
|
+
- [docs] Rewording of the heatmap item click (#20987) @alexfauquette
|
|
161
|
+
- [scheduler][docs] Create the Quickstart page (#20913) @flaviendelangle
|
|
162
|
+
- [charts][docs] Revise the Charts CSP doc (#20906) @mapache-salvaje
|
|
163
|
+
- [charts][docs] Revise the Charts Composition doc (#20032) @mapache-salvaje
|
|
164
|
+
- [charts][docs] Revise the Charts Hooks Overview doc (#20921) @mapache-salvaje
|
|
165
|
+
- [charts][docs] Revise the Charts Legend doc (#20821) @mapache-salvaje
|
|
166
|
+
- [charts][docs] Revise the Charts Localization doc (#20800) @mapache-salvaje
|
|
167
|
+
- [charts][docs] Revise the Charts Plugins doc (#20933) @mapache-salvaje
|
|
168
|
+
- [charts][docs] Revise the Charts Stacking doc (#20830) @mapache-salvaje
|
|
169
|
+
- [charts][docs] Revise the Charts Styling doc (#20835) @mapache-salvaje
|
|
170
|
+
- [charts][docs] Revise the Charts Toolbar doc (#20867) @mapache-salvaje
|
|
171
|
+
- [charts][docs] Revise the Charts Tooltip doc (#20869) @mapache-salvaje
|
|
172
|
+
- [charts][docs] Revise the Charts Zoom and Pan doc (#20893) @mapache-salvaje
|
|
173
|
+
- [DataGrid][docs] Add a recipe for handling long text cell (#20754) @siriwatknp
|
|
174
|
+
- [DataGrid][docs] Add high-level competitor comparison to Overview doc (DX-117) (#20870) @mapache-salvaje
|
|
175
|
+
- [DataGrid][docs] Remove Bundling section from quickstart (#21177) @MBilalShafi
|
|
176
|
+
|
|
177
|
+
### Core
|
|
178
|
+
|
|
179
|
+
- [code-infra] Add `MUI_TEST_ENV` global (#21187) @Janpot
|
|
180
|
+
- [code-infra] Fix `material-ui/disallow-react-api-in-server-components` (#20909) @JCQuintas
|
|
181
|
+
- [code-infra] Fix `renameImports` codemod not preserving comments (#20977) @JCQuintas
|
|
182
|
+
- [code-infra] Fix the label comparison to use lower case (#20934) @brijeshb42
|
|
183
|
+
- [code-infra] Github action to sync title and label (#20922) @brijeshb42
|
|
184
|
+
- [code-infra] Ignore scheduler demo with random data (#20982) @JCQuintas
|
|
185
|
+
- [code-infra] Improve `codemod` testing setup (#20981) @JCQuintas
|
|
186
|
+
- [code-infra] Only ignore renovate[bot] in changelog generation script (#21185) @bernardobelchior
|
|
187
|
+
- [code-infra] Prepare for v9 (#20860) @JCQuintas
|
|
188
|
+
- [code-infra] Set `rasterizehtml` version in pnpm catalog (#21175) @bernardobelchior
|
|
189
|
+
- [code-infra] Update codeowners (#20886) @JCQuintas
|
|
190
|
+
- [code-infra] V9 preparation (#20928) @JCQuintas
|
|
191
|
+
- [code-infra] eslint rule rename (#21172) @Janpot
|
|
192
|
+
- [code-infra][docs] V9 charts migration doc kickoff (#20973) @JCQuintas
|
|
193
|
+
- [docs-infra] Add Cookie Banner and Analytics Provider (#21228) @dav-is
|
|
194
|
+
- [docs-infra] Fix missing slots section on API page (#20915) @Janpot
|
|
195
|
+
- [docs-infra] Fix two broken links (#20914) @Janpot
|
|
196
|
+
- [docs-infra] Port demo changes (#20971) @Janpot
|
|
197
|
+
- [internal] Add information about codemods to AGENTS.md (#21011) @bernardobelchior
|
|
198
|
+
- [internal] Fix codemod versioning instructions in `AGENTS.md` (#21024) @bernardobelchior
|
|
199
|
+
- [internal] Fix missing generated props in master (#21142) @bernardobelchior
|
|
200
|
+
- [internal] Headless sorting plugin (#21089) @arminmeh
|
|
201
|
+
- [internal] Remove duplicate code (#20896) @oliviertassinari
|
|
202
|
+
|
|
203
|
+
### Miscellaneous
|
|
204
|
+
|
|
205
|
+
- Bump next to ^15.5.11 (#21171) @Copilot
|
|
206
|
+
- [core] Fix CI (#21223) @flaviendelangle
|
|
207
|
+
- [PoC] Headless data grid (#20645) @cherniavskii
|
|
208
|
+
|
|
209
|
+
## v8.27.1
|
|
210
|
+
|
|
211
|
+
_Feb 13, 2026_
|
|
212
|
+
|
|
213
|
+
We'd like to extend a big thank you to the 6 contributors who made this release possible. Here are some highlights ✨:
|
|
214
|
+
|
|
215
|
+
- 📝 CSS bundler support is no longer needed for the Data Grid
|
|
216
|
+
- 🐞 Bugfixes
|
|
217
|
+
|
|
218
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
219
|
+
@sai6855
|
|
220
|
+
|
|
221
|
+
The following team members contributed to this release:
|
|
222
|
+
@arminmeh, @cherniavskii, @flaviendelangle, @mj12albert, @MBilalShafi
|
|
223
|
+
|
|
224
|
+
### Data Grid
|
|
225
|
+
|
|
226
|
+
#### `@mui/x-data-grid@8.27.1`
|
|
227
|
+
|
|
228
|
+
- [DataGrid] Hide column menu icon when there are no items (#21303) @MBilalShafi
|
|
229
|
+
- [DataGrid] Migrate styled imports and remove `index.css` (#21176) @MBilalShafi
|
|
230
|
+
- [DataGrid] Optimize `GridRootStyles` overrides resolver (#21251) @sai6855
|
|
231
|
+
|
|
232
|
+
#### `@mui/x-data-grid-pro@8.27.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
233
|
+
|
|
234
|
+
Same changes as in `@mui/x-data-grid@8.27.1`, plus:
|
|
235
|
+
|
|
236
|
+
- [DataGridPro] Fix column pinning issue with `restoreState` (#21305) @MBilalShafi
|
|
237
|
+
- [DataGridPro] Fix lazy loading params for page with one row (#21238) @MBilalShafi
|
|
238
|
+
- [DataGridPro] Properly extract parent path (#21301) @arminmeh
|
|
239
|
+
|
|
240
|
+
#### `@mui/x-data-grid-premium@8.27.1` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
241
|
+
|
|
242
|
+
Same changes as in `@mui/x-data-grid-pro@8.27.1`, plus:
|
|
243
|
+
|
|
244
|
+
- [DataGridPremium] Fix aggregation display when `initialState` has both `sortModel` and `pinnedColumns` (#21152) @mj12albert
|
|
245
|
+
|
|
246
|
+
### Tree View
|
|
247
|
+
|
|
248
|
+
#### `@mui/x-tree-view@8.27.1`
|
|
249
|
+
|
|
250
|
+
- [tree view] Fix `apiRef.current.setItemExpansion()` (#21095) @flaviendelangle
|
|
251
|
+
|
|
252
|
+
#### `@mui/x-tree-view-pro@8.27.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
253
|
+
|
|
254
|
+
Same changes as in `@mui/x-tree-view@8.27.1`.
|
|
255
|
+
|
|
256
|
+
### Core
|
|
257
|
+
|
|
258
|
+
- [internal] Add CLI for translation using LLM (#21299) @cherniavskii
|
|
7
259
|
|
|
8
260
|
## v8.27.0
|
|
9
261
|
|
package/DataGrid/index.js
CHANGED
|
@@ -11,7 +11,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
11
11
|
var React = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
13
|
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
14
|
-
var
|
|
14
|
+
var _styles = require("@mui/material/styles");
|
|
15
15
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
16
16
|
var _useGridApiContext = require("../hooks/utils/useGridApiContext");
|
|
17
17
|
var _gridClasses = require("../constants/gridClasses");
|
|
@@ -30,7 +30,7 @@ const useUtilityClasses = ownerState => {
|
|
|
30
30
|
};
|
|
31
31
|
return (0, _composeClasses.default)(slots, _gridClasses.getDataGridUtilityClass, classes);
|
|
32
32
|
};
|
|
33
|
-
const GridColumnSortButtonRoot = (0,
|
|
33
|
+
const GridColumnSortButtonRoot = (0, _styles.styled)(_assert.NotRendered, {
|
|
34
34
|
name: 'MuiDataGrid',
|
|
35
35
|
slot: 'SortButton'
|
|
36
36
|
})({
|
|
@@ -34,14 +34,15 @@ function GridPagination() {
|
|
|
34
34
|
paginationMode,
|
|
35
35
|
loading
|
|
36
36
|
} = rootProps;
|
|
37
|
-
const
|
|
37
|
+
const unknownRowCount = rowCount == null || rowCount === -1;
|
|
38
|
+
const disabled = unknownRowCount && paginationMode === 'server' && loading;
|
|
38
39
|
const lastPage = React.useMemo(() => Math.max(0, pageCount - 1), [pageCount]);
|
|
39
40
|
const computedPage = React.useMemo(() => {
|
|
40
|
-
if (
|
|
41
|
+
if (unknownRowCount) {
|
|
41
42
|
return paginationModel.page;
|
|
42
43
|
}
|
|
43
44
|
return paginationModel.page <= lastPage ? paginationModel.page : lastPage;
|
|
44
|
-
}, [lastPage, paginationModel.page,
|
|
45
|
+
}, [lastPage, paginationModel.page, unknownRowCount]);
|
|
45
46
|
const handlePageSizeChange = React.useCallback(pageSize => {
|
|
46
47
|
apiRef.current.setPageSize(pageSize);
|
|
47
48
|
}, [apiRef]);
|
|
@@ -73,7 +74,7 @@ function GridPagination() {
|
|
|
73
74
|
const pageSizeOptions = isPageSizeIncludedInPageSizeOptions(paginationModel.pageSize) ? rootProps.pageSizeOptions : [];
|
|
74
75
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridPaginationRoot, (0, _extends2.default)({
|
|
75
76
|
as: rootProps.slots.basePagination,
|
|
76
|
-
count: rowCount,
|
|
77
|
+
count: rowCount ?? -1,
|
|
77
78
|
page: computedPage,
|
|
78
79
|
rowsPerPageOptions: pageSizeOptions,
|
|
79
80
|
rowsPerPage: paginationModel.pageSize,
|
|
@@ -12,7 +12,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
12
12
|
var React = _interopRequireWildcard(require("react"));
|
|
13
13
|
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
14
14
|
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
15
|
-
var
|
|
15
|
+
var _styles = require("@mui/material/styles");
|
|
16
16
|
var _fastMemo = require("@mui/x-internals/fastMemo");
|
|
17
17
|
var _forwardRef = require("@mui/x-internals/forwardRef");
|
|
18
18
|
var _useGridRootProps = require("../hooks/utils/useGridRootProps");
|
|
@@ -39,7 +39,7 @@ const useUtilityClasses = ownerState => {
|
|
|
39
39
|
};
|
|
40
40
|
return (0, _composeClasses.default)(slots, _constants.getDataGridUtilityClass, classes);
|
|
41
41
|
};
|
|
42
|
-
const GridScrollAreaRawRoot = (0,
|
|
42
|
+
const GridScrollAreaRawRoot = (0, _styles.styled)('div', {
|
|
43
43
|
name: 'MuiDataGrid',
|
|
44
44
|
slot: 'ScrollArea',
|
|
45
45
|
overridesResolver: (props, styles) => [{
|
|
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
});
|
|
9
9
|
exports.GridScrollShadows = GridScrollShadows;
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
|
-
var
|
|
11
|
+
var _styles = require("@mui/material/styles");
|
|
12
12
|
var _RtlProvider = require("@mui/system/RtlProvider");
|
|
13
13
|
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
14
14
|
var _hooks = require("../hooks");
|
|
@@ -29,7 +29,7 @@ const useUtilityClasses = ownerState => {
|
|
|
29
29
|
};
|
|
30
30
|
return (0, _composeClasses.default)(slots, _constants.getDataGridUtilityClass, classes);
|
|
31
31
|
};
|
|
32
|
-
const ScrollShadow = (0,
|
|
32
|
+
const ScrollShadow = (0, _styles.styled)('div', {
|
|
33
33
|
name: 'MuiDataGrid',
|
|
34
34
|
slot: 'ScrollShadow',
|
|
35
35
|
overridesResolver: (props, styles) => [styles.root, styles[props.position]]
|
|
@@ -11,7 +11,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
11
11
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
12
12
|
var React = _interopRequireWildcard(require("react"));
|
|
13
13
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
14
|
-
var
|
|
14
|
+
var _styles = require("@mui/material/styles");
|
|
15
15
|
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
16
16
|
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
17
17
|
var _RtlProvider = require("@mui/system/RtlProvider");
|
|
@@ -29,7 +29,7 @@ var _rtlFlipSide = require("../utils/rtlFlipSide");
|
|
|
29
29
|
var _utils = require("../internals/utils");
|
|
30
30
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
31
31
|
const _excluded = ["skeletonRowsCount", "visibleColumns", "showFirstRowBorder"];
|
|
32
|
-
const SkeletonOverlay = (0,
|
|
32
|
+
const SkeletonOverlay = (0, _styles.styled)('div', {
|
|
33
33
|
name: 'MuiDataGrid',
|
|
34
34
|
slot: 'SkeletonLoadingOverlay'
|
|
35
35
|
})({
|
|
@@ -9,7 +9,7 @@ exports.GridOverlayWrapper = GridOverlayWrapper;
|
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
|
-
var
|
|
12
|
+
var _styles = require("@mui/material/styles");
|
|
13
13
|
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
14
14
|
var _gridRowsUtils = require("../../hooks/features/rows/gridRowsUtils");
|
|
15
15
|
var _useGridSelector = require("../../hooks/utils/useGridSelector");
|
|
@@ -18,7 +18,7 @@ var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
|
|
|
18
18
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
19
19
|
var _gridClasses = require("../../constants/gridClasses");
|
|
20
20
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
|
-
const GridOverlayWrapperRoot = (0,
|
|
21
|
+
const GridOverlayWrapperRoot = (0, _styles.styled)('div', {
|
|
22
22
|
name: 'MuiDataGrid',
|
|
23
23
|
slot: 'OverlayWrapper',
|
|
24
24
|
shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant' && prop !== 'right'
|
|
@@ -42,7 +42,7 @@ loadingOverlayVariant !== 'skeleton' ? {
|
|
|
42
42
|
zIndex: overlayType === 'loadingOverlay' ? 5 // Should be above pinned columns, pinned rows, and detail panel
|
|
43
43
|
: 4 // Should be above pinned columns and detail panel
|
|
44
44
|
} : {});
|
|
45
|
-
const GridOverlayWrapperInner = (0,
|
|
45
|
+
const GridOverlayWrapperInner = (0, _styles.styled)('div', {
|
|
46
46
|
name: 'MuiDataGrid',
|
|
47
47
|
slot: 'OverlayWrapperInner',
|
|
48
48
|
shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant'
|
|
@@ -17,6 +17,7 @@ var _fastMemo = require("@mui/x-internals/fastMemo");
|
|
|
17
17
|
var _RtlProvider = require("@mui/system/RtlProvider");
|
|
18
18
|
var _doesSupportPreventScroll = require("../../utils/doesSupportPreventScroll");
|
|
19
19
|
var _useGridPrivateApiContext = require("../../hooks/utils/useGridPrivateApiContext");
|
|
20
|
+
var _getColumnMenuItemKeys = require("../../hooks/features/columnMenu/getColumnMenuItemKeys");
|
|
20
21
|
var _ColumnHeaderMenuIcon = require("./ColumnHeaderMenuIcon");
|
|
21
22
|
var _GridColumnHeaderMenu = require("../menu/columnMenu/GridColumnHeaderMenu");
|
|
22
23
|
var _gridClasses = require("../../constants/gridClasses");
|
|
@@ -85,6 +86,30 @@ function GridColumnHeaderItem(props) {
|
|
|
85
86
|
const columnMenuButtonId = (0, _useId.default)();
|
|
86
87
|
const iconButtonRef = React.useRef(null);
|
|
87
88
|
const [showColumnMenuIcon, setShowColumnMenuIcon] = React.useState(columnMenuOpen);
|
|
89
|
+
const columnMenuSlotProps = rootProps.slotProps?.columnMenu;
|
|
90
|
+
const columnMenuComponent = rootProps.slots.columnMenu;
|
|
91
|
+
const defaultSlots = columnMenuComponent?.defaultSlots;
|
|
92
|
+
const defaultSlotProps = columnMenuComponent?.defaultSlotProps;
|
|
93
|
+
const hasKnownDefaultColumnMenu = defaultSlots != null && defaultSlotProps != null;
|
|
94
|
+
const columnMenuItemKeys = React.useMemo(() => {
|
|
95
|
+
if (!hasKnownDefaultColumnMenu) {
|
|
96
|
+
return [];
|
|
97
|
+
}
|
|
98
|
+
return (0, _getColumnMenuItemKeys.getColumnMenuItemKeys)({
|
|
99
|
+
apiRef,
|
|
100
|
+
colDef,
|
|
101
|
+
defaultSlots,
|
|
102
|
+
defaultSlotProps,
|
|
103
|
+
slots: columnMenuSlotProps?.slots,
|
|
104
|
+
slotProps: columnMenuSlotProps?.slotProps
|
|
105
|
+
});
|
|
106
|
+
}, [apiRef, colDef, defaultSlotProps, defaultSlots, hasKnownDefaultColumnMenu, columnMenuSlotProps?.slotProps, columnMenuSlotProps?.slots]);
|
|
107
|
+
|
|
108
|
+
// If we don't have a "known" default column menu (i.e. a custom menu component
|
|
109
|
+
// without `defaultSlots` / `defaultSlotProps` statics), we treat it as opaque
|
|
110
|
+
// and assume it has items, so we always show the column menu icon.
|
|
111
|
+
// Only the built-in/default menu path can hide the icon when there are no items.
|
|
112
|
+
const hasColumnMenuItems = !hasKnownDefaultColumnMenu || columnMenuItemKeys.length > 0;
|
|
88
113
|
const isDraggable = !rootProps.disableColumnReorder && !disableReorder && !colDef.disableReorder;
|
|
89
114
|
let headerComponent;
|
|
90
115
|
if (colDef.renderHeader) {
|
|
@@ -135,10 +160,15 @@ function GridColumnHeaderItem(props) {
|
|
|
135
160
|
setShowColumnMenuIcon(columnMenuOpen);
|
|
136
161
|
}
|
|
137
162
|
}, [showColumnMenuIcon, columnMenuOpen]);
|
|
163
|
+
React.useEffect(() => {
|
|
164
|
+
if (hasKnownDefaultColumnMenu && columnMenuOpen && !hasColumnMenuItems) {
|
|
165
|
+
apiRef.current.hideColumnMenu();
|
|
166
|
+
}
|
|
167
|
+
}, [apiRef, columnMenuOpen, hasColumnMenuItems, hasKnownDefaultColumnMenu]);
|
|
138
168
|
const handleExited = React.useCallback(() => {
|
|
139
169
|
setShowColumnMenuIcon(false);
|
|
140
170
|
}, []);
|
|
141
|
-
const columnMenuIconButton = !rootProps.disableColumnMenu && !colDef.disableColumnMenu && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColumnHeaderMenuIcon.ColumnHeaderMenuIcon, {
|
|
171
|
+
const columnMenuIconButton = !rootProps.disableColumnMenu && !colDef.disableColumnMenu && hasColumnMenuItems && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColumnHeaderMenuIcon.ColumnHeaderMenuIcon, {
|
|
142
172
|
colDef: colDef,
|
|
143
173
|
columnMenuId: columnMenuId,
|
|
144
174
|
columnMenuButtonId: columnMenuButtonId,
|
|
@@ -13,7 +13,7 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
13
13
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
14
14
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
15
15
|
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
16
|
-
var
|
|
16
|
+
var _styles = require("@mui/material/styles");
|
|
17
17
|
var _forwardRef = require("@mui/x-internals/forwardRef");
|
|
18
18
|
var _domUtils = require("../../utils/domUtils");
|
|
19
19
|
var _gridClasses = require("../../constants/gridClasses");
|
|
@@ -29,7 +29,7 @@ const useUtilityClasses = ownerState => {
|
|
|
29
29
|
};
|
|
30
30
|
return (0, _composeClasses.default)(slots, _gridClasses.getDataGridUtilityClass, classes);
|
|
31
31
|
};
|
|
32
|
-
const GridColumnHeaderTitleRoot = (0,
|
|
32
|
+
const GridColumnHeaderTitleRoot = (0, _styles.styled)('div', {
|
|
33
33
|
name: 'MuiDataGrid',
|
|
34
34
|
slot: 'ColumnHeaderTitle'
|
|
35
35
|
})({
|
|
@@ -12,7 +12,7 @@ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runt
|
|
|
12
12
|
var React = _interopRequireWildcard(require("react"));
|
|
13
13
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
14
14
|
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
15
|
-
var
|
|
15
|
+
var _styles = require("@mui/material/styles");
|
|
16
16
|
var _forwardRef = require("@mui/x-internals/forwardRef");
|
|
17
17
|
var _gridClasses = require("../../constants/gridClasses");
|
|
18
18
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
@@ -27,7 +27,7 @@ const useUtilityClasses = ownerState => {
|
|
|
27
27
|
};
|
|
28
28
|
return (0, _composeClasses.default)(slots, _gridClasses.getDataGridUtilityClass, classes);
|
|
29
29
|
};
|
|
30
|
-
const GridIconButtonContainerRoot = (0,
|
|
30
|
+
const GridIconButtonContainerRoot = (0, _styles.styled)('div', {
|
|
31
31
|
name: 'MuiDataGrid',
|
|
32
32
|
slot: 'IconButtonContainer'
|
|
33
33
|
})(() => ({
|