@mui/x-data-grid 7.22.2 → 7.23.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 +169 -0
- package/DataGrid/DataGrid.js +9 -1
- package/README.md +3 -3
- package/components/GridDetailPanels.js +0 -1
- package/components/GridPinnedRows.js +0 -1
- package/components/GridRow.d.ts +2 -2
- package/components/GridRow.js +1 -1
- package/components/base/GridOverlays.js +5 -6
- package/components/cell/GridCell.d.ts +41 -3
- package/components/cell/GridCell.js +11 -19
- package/components/cell/GridEditInputCell.js +0 -67
- package/components/columnsManagement/GridColumnsManagement.d.ts +2 -0
- package/components/columnsManagement/GridColumnsManagement.js +53 -6
- package/components/panel/GridPanel.d.ts +1 -1
- package/components/toolbar/GridToolbar.d.ts +2 -2
- package/components/toolbar/GridToolbar.js +12 -4
- package/components/toolbar/GridToolbarColumnsButton.js +3 -4
- package/components/toolbar/GridToolbarDensitySelector.js +3 -4
- package/components/toolbar/GridToolbarExport.d.ts +2 -2
- package/components/toolbar/GridToolbarExport.js +4 -3
- package/components/toolbar/GridToolbarExportContainer.js +3 -4
- package/components/toolbar/GridToolbarFilterButton.d.ts +2 -0
- package/components/toolbar/GridToolbarFilterButton.js +7 -6
- package/components/toolbar/GridToolbarQuickFilter.js +1 -0
- package/components/toolbar/index.d.ts +1 -1
- package/constants/dataGridPropsDefaultValues.js +2 -1
- package/constants/gridClasses.d.ts +4 -0
- package/constants/gridClasses.js +1 -1
- package/constants/localeTextConstants.js +1 -0
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +2 -2
- package/hooks/features/dimensions/useGridDimensions.js +2 -1
- package/hooks/features/export/useGridCsvExport.js +1 -1
- package/hooks/features/export/useGridPrintExport.js +1 -1
- package/hooks/features/index.d.ts +1 -0
- package/hooks/features/index.js +1 -0
- package/hooks/features/listView/gridListViewSelectors.d.ts +3 -1
- package/hooks/features/listView/gridListViewSelectors.js +3 -1
- package/hooks/features/listView/index.d.ts +1 -0
- package/hooks/features/listView/index.js +1 -0
- package/hooks/features/pagination/useGridPaginationModel.js +2 -2
- package/hooks/features/rowSelection/useGridRowSelection.js +0 -9
- package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
- package/hooks/features/rows/gridRowsUtils.js +1 -5
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.js +59 -19
- package/hooks/utils/useGridSelector.d.ts +3 -2
- package/hooks/utils/useGridSelector.js +27 -2
- package/index.d.ts +0 -1
- package/index.js +1 -1
- package/joy/joySlots.js +7 -2
- package/locales/arSD.js +1 -0
- package/locales/beBY.js +1 -0
- package/locales/bgBG.js +2 -0
- package/locales/csCZ.js +2 -0
- package/locales/daDK.js +2 -0
- package/locales/deDE.js +2 -0
- package/locales/elGR.js +1 -0
- package/locales/esES.js +5 -4
- package/locales/faIR.js +2 -0
- package/locales/fiFI.js +2 -0
- package/locales/frFR.js +2 -0
- package/locales/heIL.js +2 -0
- package/locales/hrHR.js +2 -0
- package/locales/huHU.js +2 -0
- package/locales/isIS.js +1 -0
- package/locales/itIT.js +2 -0
- package/locales/jaJP.js +2 -0
- package/locales/koKR.js +1 -0
- package/locales/nbNO.js +2 -0
- package/locales/nlNL.js +2 -0
- package/locales/nnNO.js +2 -0
- package/locales/plPL.js +1 -0
- package/locales/ptBR.js +1 -0
- package/locales/ptPT.js +1 -0
- package/locales/roRO.js +1 -0
- package/locales/ruRU.js +2 -0
- package/locales/skSK.js +1 -0
- package/locales/svSE.js +6 -5
- package/locales/trTR.js +4 -2
- package/locales/ukUA.js +1 -0
- package/locales/urPK.js +1 -0
- package/locales/viVN.js +2 -0
- package/locales/zhCN.js +5 -4
- package/locales/zhHK.js +1 -0
- package/locales/zhTW.js +1 -0
- package/models/api/gridCoreApi.d.ts +1 -1
- package/models/api/gridLocaleTextApi.d.ts +1 -0
- package/models/colDef/gridColDef.d.ts +24 -24
- package/models/gridDataSource.d.ts +12 -12
- package/models/props/DataGridProps.d.ts +9 -1
- package/modern/DataGrid/DataGrid.js +9 -1
- package/modern/components/GridDetailPanels.js +0 -1
- package/modern/components/GridPinnedRows.js +0 -1
- package/modern/components/GridRow.js +1 -1
- package/modern/components/base/GridOverlays.js +5 -6
- package/modern/components/cell/GridCell.js +11 -19
- package/modern/components/cell/GridEditInputCell.js +0 -67
- package/modern/components/columnsManagement/GridColumnsManagement.js +53 -6
- package/modern/components/toolbar/GridToolbar.js +12 -4
- package/modern/components/toolbar/GridToolbarColumnsButton.js +3 -4
- package/modern/components/toolbar/GridToolbarDensitySelector.js +3 -4
- package/modern/components/toolbar/GridToolbarExport.js +4 -3
- package/modern/components/toolbar/GridToolbarExportContainer.js +3 -4
- package/modern/components/toolbar/GridToolbarFilterButton.js +7 -6
- package/modern/components/toolbar/GridToolbarQuickFilter.js +1 -0
- package/modern/constants/dataGridPropsDefaultValues.js +2 -1
- package/modern/constants/gridClasses.js +1 -1
- package/modern/constants/localeTextConstants.js +1 -0
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +2 -2
- package/modern/hooks/features/dimensions/useGridDimensions.js +2 -1
- package/modern/hooks/features/export/useGridCsvExport.js +1 -1
- package/modern/hooks/features/export/useGridPrintExport.js +1 -1
- package/modern/hooks/features/index.js +1 -0
- package/modern/hooks/features/listView/gridListViewSelectors.js +3 -1
- package/modern/hooks/features/listView/index.js +1 -0
- package/modern/hooks/features/pagination/useGridPaginationModel.js +2 -2
- package/modern/hooks/features/rowSelection/useGridRowSelection.js +0 -9
- package/modern/hooks/features/rows/gridRowsUtils.js +1 -5
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +59 -19
- package/modern/hooks/utils/useGridSelector.js +27 -2
- package/modern/index.js +1 -1
- package/modern/joy/joySlots.js +7 -2
- package/modern/locales/arSD.js +1 -0
- package/modern/locales/beBY.js +1 -0
- package/modern/locales/bgBG.js +2 -0
- package/modern/locales/csCZ.js +2 -0
- package/modern/locales/daDK.js +2 -0
- package/modern/locales/deDE.js +2 -0
- package/modern/locales/elGR.js +1 -0
- package/modern/locales/esES.js +5 -4
- package/modern/locales/faIR.js +2 -0
- package/modern/locales/fiFI.js +2 -0
- package/modern/locales/frFR.js +2 -0
- package/modern/locales/heIL.js +2 -0
- package/modern/locales/hrHR.js +2 -0
- package/modern/locales/huHU.js +2 -0
- package/modern/locales/isIS.js +1 -0
- package/modern/locales/itIT.js +2 -0
- package/modern/locales/jaJP.js +2 -0
- package/modern/locales/koKR.js +1 -0
- package/modern/locales/nbNO.js +2 -0
- package/modern/locales/nlNL.js +2 -0
- package/modern/locales/nnNO.js +2 -0
- package/modern/locales/plPL.js +1 -0
- package/modern/locales/ptBR.js +1 -0
- package/modern/locales/ptPT.js +1 -0
- package/modern/locales/roRO.js +1 -0
- package/modern/locales/ruRU.js +2 -0
- package/modern/locales/skSK.js +1 -0
- package/modern/locales/svSE.js +6 -5
- package/modern/locales/trTR.js +4 -2
- package/modern/locales/ukUA.js +1 -0
- package/modern/locales/urPK.js +1 -0
- package/modern/locales/viVN.js +2 -0
- package/modern/locales/zhCN.js +5 -4
- package/modern/locales/zhHK.js +1 -0
- package/modern/locales/zhTW.js +1 -0
- package/modern/utils/createSelector.js +11 -1
- package/modern/utils/utils.js +1 -3
- package/node/DataGrid/DataGrid.js +9 -1
- package/node/components/GridDetailPanels.js +0 -1
- package/node/components/GridPinnedRows.js +0 -1
- package/node/components/GridRow.js +1 -1
- package/node/components/base/GridOverlays.js +5 -6
- package/node/components/cell/GridCell.js +11 -19
- package/node/components/cell/GridEditInputCell.js +0 -67
- package/node/components/columnsManagement/GridColumnsManagement.js +53 -6
- package/node/components/toolbar/GridToolbar.js +12 -4
- package/node/components/toolbar/GridToolbarColumnsButton.js +3 -4
- package/node/components/toolbar/GridToolbarDensitySelector.js +3 -4
- package/node/components/toolbar/GridToolbarExport.js +4 -3
- package/node/components/toolbar/GridToolbarExportContainer.js +3 -4
- package/node/components/toolbar/GridToolbarFilterButton.js +7 -6
- package/node/components/toolbar/GridToolbarQuickFilter.js +1 -0
- package/node/constants/dataGridPropsDefaultValues.js +2 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/constants/localeTextConstants.js +1 -0
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +2 -2
- package/node/hooks/features/dimensions/useGridDimensions.js +2 -1
- package/node/hooks/features/export/useGridCsvExport.js +2 -2
- package/node/hooks/features/export/useGridPrintExport.js +2 -2
- package/node/hooks/features/index.js +11 -0
- package/node/hooks/features/listView/gridListViewSelectors.js +3 -1
- package/node/hooks/features/listView/index.js +16 -0
- package/node/hooks/features/pagination/useGridPaginationModel.js +2 -2
- package/node/hooks/features/rowSelection/useGridRowSelection.js +0 -9
- package/node/hooks/features/rows/gridRowsUtils.js +2 -8
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +59 -19
- package/node/hooks/utils/useGridSelector.js +29 -3
- package/node/index.js +1 -1
- package/node/joy/joySlots.js +7 -2
- package/node/locales/arSD.js +1 -0
- package/node/locales/beBY.js +1 -0
- package/node/locales/bgBG.js +2 -0
- package/node/locales/csCZ.js +2 -0
- package/node/locales/daDK.js +2 -0
- package/node/locales/deDE.js +2 -0
- package/node/locales/elGR.js +1 -0
- package/node/locales/esES.js +5 -4
- package/node/locales/faIR.js +2 -0
- package/node/locales/fiFI.js +2 -0
- package/node/locales/frFR.js +2 -0
- package/node/locales/heIL.js +2 -0
- package/node/locales/hrHR.js +2 -0
- package/node/locales/huHU.js +2 -0
- package/node/locales/isIS.js +1 -0
- package/node/locales/itIT.js +2 -0
- package/node/locales/jaJP.js +2 -0
- package/node/locales/koKR.js +1 -0
- package/node/locales/nbNO.js +2 -0
- package/node/locales/nlNL.js +2 -0
- package/node/locales/nnNO.js +2 -0
- package/node/locales/plPL.js +1 -0
- package/node/locales/ptBR.js +1 -0
- package/node/locales/ptPT.js +1 -0
- package/node/locales/roRO.js +1 -0
- package/node/locales/ruRU.js +2 -0
- package/node/locales/skSK.js +1 -0
- package/node/locales/svSE.js +6 -5
- package/node/locales/trTR.js +4 -2
- package/node/locales/ukUA.js +1 -0
- package/node/locales/urPK.js +1 -0
- package/node/locales/viVN.js +2 -0
- package/node/locales/zhCN.js +5 -4
- package/node/locales/zhHK.js +1 -0
- package/node/locales/zhTW.js +1 -0
- package/node/utils/createSelector.js +11 -1
- package/node/utils/utils.js +1 -3
- package/package.json +4 -4
- package/utils/createSelector.d.ts +1 -1
- package/utils/createSelector.js +11 -1
- package/utils/utils.js +1 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,175 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 7.23.0
|
|
7
|
+
|
|
8
|
+
_Nov 29, 2024_
|
|
9
|
+
|
|
10
|
+
We'd like to offer a big thanks to the 10 contributors who made this release possible. Here are some highlights ✨:
|
|
11
|
+
|
|
12
|
+
- ✨ Support for a new display mode on the Data Grid with the [List View feature](https://mui.com/x/react-data-grid/list-view/), offering an extremely flexible way to render datasets and enabling developers to adapt how data is displayed across different screen sizes.
|
|
13
|
+
|
|
14
|
+
https://github.com/user-attachments/assets/61286adc-03fc-4323-9739-8ca726fcc16c
|
|
15
|
+
|
|
16
|
+
- ⚛️ React 19 support
|
|
17
|
+
- 📚 Documentation improvements
|
|
18
|
+
- 🌍 Improve Spanish, Portuguese, Chinese locales on the Data Grid component.
|
|
19
|
+
- 🌍 Improve Dutch locale on the Date and Time Picker components.
|
|
20
|
+
- 🐞 Bugfixes
|
|
21
|
+
|
|
22
|
+
Special thanks go out to the community contributors who have helped make this release possible:
|
|
23
|
+
@dloeda, @headironc, @mathzdev, @nphmuller, @lhilgert9, @lauri865.
|
|
24
|
+
Following are all team members who have contributed to this release:
|
|
25
|
+
@oliviertassinari, @arminmeh, @KenanYusuf, @flaviendelangle, @MBilalShafi.
|
|
26
|
+
|
|
27
|
+
<!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
|
|
28
|
+
|
|
29
|
+
### Data Grid
|
|
30
|
+
|
|
31
|
+
#### `@mui/x-data-grid@v7.23.0`
|
|
32
|
+
|
|
33
|
+
- [DataGrid] React 19 support (#15557) @arminmeh
|
|
34
|
+
- [DataGrid] Change test dom check from `/jsdom/` to `/jsdom|HappyDOM/`. (#15642) @jedesroches
|
|
35
|
+
- [DataGrid] Fix last separator not being hidden when grid is scrollable (#15551) @KenanYusuf
|
|
36
|
+
- [DataGrid] Fix order of spread props on toolbar items (#15556) @KenanYusuf
|
|
37
|
+
- [DataGrid] Fix row-spanning in combination with column-pinning (#15460) @lhilgert9
|
|
38
|
+
- [DataGrid] Improve resize performance (#15592) @lauri865
|
|
39
|
+
- [DataGrid] Support column virtualization with dynamic row height (#15567) @cherniavskii
|
|
40
|
+
- [DataGrid] Improve `GridCell` performance (#15621) @lauri865
|
|
41
|
+
- [l10n] Improve Chinese (zh-CN) locale (#15570) @headironc
|
|
42
|
+
- [l10n] Improve Portuguese (pt-PT) locale (#15561) @mathzdev
|
|
43
|
+
|
|
44
|
+
#### `@mui/x-data-grid-pro@v7.23.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
45
|
+
|
|
46
|
+
Same changes as in `@mui/x-data-grid@v7.23.0`, plus:
|
|
47
|
+
|
|
48
|
+
- [DataGridPro] Fix header filtering with `boolean` column type (#15640) @k-rajat19
|
|
49
|
+
- [DataGridPro] Fix pagination state not updating if the data source response has no rows (#15643) @zinoroman
|
|
50
|
+
- [DataGridPro] Fix selection propagation issue on initialization (#15593) @MBilalShafi
|
|
51
|
+
|
|
52
|
+
#### `@mui/x-data-grid-premium@v7.23.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
53
|
+
|
|
54
|
+
Same changes as in `@mui/x-data-grid-pro@v7.23.0`.
|
|
55
|
+
|
|
56
|
+
### Date and Time Pickers
|
|
57
|
+
|
|
58
|
+
#### `@mui/x-date-pickers@v7.23.0`
|
|
59
|
+
|
|
60
|
+
- [pickers] React 19 support (#15557) @arminmeh
|
|
61
|
+
- [pickers] Fix DST issue with `America/Asuncion` timezone and `AdapterMoment` (#15653) @flaviendelangle
|
|
62
|
+
- [pickers] Use `props.referenceDate` timezone when `props.value` and `props.defaultValue` are not defined (#15544) @flaviendelangle
|
|
63
|
+
- [l10n] Improve Dutch (nl-NL) locale (#15564) @nphmuller
|
|
64
|
+
|
|
65
|
+
#### `@mui/x-date-pickers-pro@v7.23.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
66
|
+
|
|
67
|
+
Same changes as in `@mui/x-date-pickers@v7.23.0`.
|
|
68
|
+
|
|
69
|
+
### Charts
|
|
70
|
+
|
|
71
|
+
#### `@mui/x-charts@v7.23.0`
|
|
72
|
+
|
|
73
|
+
- [charts] React 19 support (#15557) @arminmeh
|
|
74
|
+
- [charts] Prevent invalid `releasePointerCapture` (#15609) @alexfauquette
|
|
75
|
+
|
|
76
|
+
#### `@mui/x-charts-pro@v7.23.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
77
|
+
|
|
78
|
+
Same changes as in `@mui/x-charts@v7.23.0`.
|
|
79
|
+
|
|
80
|
+
### Tree View
|
|
81
|
+
|
|
82
|
+
#### `@mui/x-tree-view@v7.23.0`
|
|
83
|
+
|
|
84
|
+
- [TreeView] React 19 support (#15557) @arminmeh
|
|
85
|
+
|
|
86
|
+
#### `@mui/x-tree-view-pro@7.23.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
87
|
+
|
|
88
|
+
Same changes as in `@mui/x-tree-view@7.23.0`.
|
|
89
|
+
|
|
90
|
+
### Docs
|
|
91
|
+
|
|
92
|
+
- [docs] Add data caching to lazy loaded detail panel demo (#15555) @cherniavskii
|
|
93
|
+
- [docs] Remove selectors section from list view docs (#15639) @KenanYusuf
|
|
94
|
+
- [docs] Add documentation for the list view feature (#15344) @KenanYusuf
|
|
95
|
+
|
|
96
|
+
### Core
|
|
97
|
+
|
|
98
|
+
- [core] Update @mui/monorepo (#15574) @oliviertassinari
|
|
99
|
+
|
|
100
|
+
## 7.22.3
|
|
101
|
+
|
|
102
|
+
_Nov 21, 2024_
|
|
103
|
+
|
|
104
|
+
We'd like to offer a big thanks to the 10 contributors who made this release possible. Here are some highlights ✨:
|
|
105
|
+
|
|
106
|
+
- 📊 Charts Pro get stable. The [zoom](https://mui.com/x/react-charts/zoom-and-pan/) and [Heatmap](https://mui.com/x/react-charts/heatmap/) are now stable.
|
|
107
|
+
- 🌍 Improve Chinese, Spanish, Swedish, and Turkish locales on the Data Grid
|
|
108
|
+
- 🐞 Bugfixes
|
|
109
|
+
|
|
110
|
+
Special thanks go out to the community contributors who have helped make this release possible:
|
|
111
|
+
@CarlosLopezLg, @headironc, @viktormelin, @qerkules, @DungTiger, @hendrikpeilke, @k-rajat19.
|
|
112
|
+
Following are all team members who have contributed to this release:
|
|
113
|
+
@alexfauquette, @LukasTy, @MBilalShafi, @flaviendelangle.
|
|
114
|
+
|
|
115
|
+
<!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
|
|
116
|
+
|
|
117
|
+
### Data Grid
|
|
118
|
+
|
|
119
|
+
#### `@mui/x-data-grid@7.22.3`
|
|
120
|
+
|
|
121
|
+
- [DataGrid] Add prop to override search input props in `GridColumnsManagement` (#15476) @k-rajat19
|
|
122
|
+
- [DataGrid] Add test coverage for issues fixed in #15184 @MBilalShafi
|
|
123
|
+
- [DataGrid] Fix memoized selectors with arguments (#15336) @MBilalShafi
|
|
124
|
+
- [DataGrid] Fix right column group header border with virtualization (#15503) @hendrikpeilke
|
|
125
|
+
- [DataGrid] Pass reason to `onPaginationModelChange` (#15402) @DungTiger
|
|
126
|
+
- [DataGrid] Set default overlay height in flex parent layout (#15535) @cherniavskii
|
|
127
|
+
- [l10n] Improve Chinese (zh-CN) locale (#15365) @headironc
|
|
128
|
+
- [l10n] Improve Spanish (es-ES) locale (#15369) @CarlosLopezLg
|
|
129
|
+
- [l10n] Improve Swedish (sv-SE) locale (#15371) @viktormelin
|
|
130
|
+
- [l10n] Improve Turkish (tr-TR) locale (#15414) @qerkules
|
|
131
|
+
|
|
132
|
+
#### `@mui/x-data-grid-pro@7.22.3` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
133
|
+
|
|
134
|
+
Same changes as in `@mui/x-data-grid@7.22.3`.
|
|
135
|
+
|
|
136
|
+
#### `@mui/x-data-grid-premium@7.22.3` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
137
|
+
|
|
138
|
+
Same changes as in `@mui/x-data-grid-pro@7.22.3`.
|
|
139
|
+
|
|
140
|
+
### Date and Time Pickers
|
|
141
|
+
|
|
142
|
+
#### `@mui/x-date-pickers@7.22.3`
|
|
143
|
+
|
|
144
|
+
- [pickers] Always use `props.value` when it changes (#15500) @flaviendelangle
|
|
145
|
+
- [pickers] Ensure internal value timezone is updated (#15491) @LukasTy
|
|
146
|
+
- [pickers] Fix `DateTimeRangePicker` error when using format without time (#15341) @fxnoob
|
|
147
|
+
- [pickers] Fix unused code in `PickersToolbar` component (#15525) @LukasTy
|
|
148
|
+
|
|
149
|
+
#### `@mui/x-date-pickers-pro@7.22.3` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
150
|
+
|
|
151
|
+
Same changes as in `@mui/x-date-pickers@7.22.3`, plus:
|
|
152
|
+
|
|
153
|
+
- [DateTimeRangePicker] Use time in `referenceDate` when selecting date (#15431) @LukasTy
|
|
154
|
+
|
|
155
|
+
### Charts
|
|
156
|
+
|
|
157
|
+
#### `@mui/x-charts@7.22.3`
|
|
158
|
+
|
|
159
|
+
No changes since `@mui/x-charts@7.22.2`.
|
|
160
|
+
|
|
161
|
+
#### `@mui/x-charts-pro@7.22.3` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
162
|
+
|
|
163
|
+
- [charts-pro] Fix missing typeOverload (#15400) @alexfauquette
|
|
164
|
+
|
|
165
|
+
### Docs
|
|
166
|
+
|
|
167
|
+
- [docs] Add `PickersPopper` component to customization playground (#15397) @LukasTy
|
|
168
|
+
- [docs] Add `next` version links (#15423) @LukasTy
|
|
169
|
+
- [docs] Use the `loading` state in the demos (#15538) @cherniavskii
|
|
170
|
+
|
|
171
|
+
- [code-infra] Tentative fix for Argos flaky screenshot tests (#15399) @JCQuintas
|
|
172
|
+
- [docs-infra] Transpile `.ts` demo files (#15421) @KenanYusuf
|
|
173
|
+
- [core] Clarify release version bump strategy (#15536) @cherniavskii
|
|
174
|
+
|
|
6
175
|
## 7.22.2
|
|
7
176
|
|
|
8
177
|
_Nov 8, 2024_
|
package/DataGrid/DataGrid.js
CHANGED
|
@@ -766,5 +766,13 @@ DataGridRaw.propTypes = {
|
|
|
766
766
|
* If `true`, the Data Grid will auto span the cells over the rows having the same value.
|
|
767
767
|
* @default false
|
|
768
768
|
*/
|
|
769
|
-
unstable_rowSpanning: PropTypes.bool
|
|
769
|
+
unstable_rowSpanning: PropTypes.bool,
|
|
770
|
+
/**
|
|
771
|
+
* If `true`, the Data Grid enables column virtualization when `getRowHeight` is set to `() => 'auto'`.
|
|
772
|
+
* By default, column virtualization is disabled when dynamic row height is enabled to measure the row height correctly.
|
|
773
|
+
* For datasets with a large number of columns, this can cause performance issues.
|
|
774
|
+
* The downside of enabling this prop is that the row height will be estimated based the cells that are currently rendered, which can cause row height change when scrolling horizontally.
|
|
775
|
+
* @default false
|
|
776
|
+
*/
|
|
777
|
+
virtualizeColumnsWithAutoRowHeight: PropTypes.bool
|
|
770
778
|
};
|
package/README.md
CHANGED
|
@@ -15,9 +15,9 @@ This component has the following peer dependencies that you will need to install
|
|
|
15
15
|
|
|
16
16
|
```json
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"@mui/material": "^5.15.14",
|
|
19
|
-
"react": "^17.0.0 || ^18.0.0",
|
|
20
|
-
"react-dom": "^17.0.0 || ^18.0.0"
|
|
18
|
+
"@mui/material": "^5.15.14 || ^6.0.0",
|
|
19
|
+
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|
|
20
|
+
"react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
|
|
21
21
|
},
|
|
22
22
|
```
|
|
23
23
|
|
package/components/GridRow.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ export interface GridRowProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
38
38
|
onDoubleClick?: React.MouseEventHandler<HTMLDivElement>;
|
|
39
39
|
onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;
|
|
40
40
|
onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;
|
|
41
|
-
[x: string]:
|
|
41
|
+
[x: `data-${string}`]: string;
|
|
42
42
|
}
|
|
43
|
-
declare const MemoizedGridRow: React.ForwardRefExoticComponent<
|
|
43
|
+
declare const MemoizedGridRow: React.ForwardRefExoticComponent<GridRowProps & React.RefAttributes<HTMLDivElement>>;
|
|
44
44
|
export { MemoizedGridRow as GridRow };
|
package/components/GridRow.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["selected", "rowId", "row", "index", "style", "rowHeight", "className", "visibleColumns", "pinnedColumns", "offsetTop", "offsetLeft", "dimensions", "renderContext", "focusedColumnIndex", "isFirstVisible", "isLastVisible", "isNotVisible", "showBottomBorder", "
|
|
3
|
+
const _excluded = ["selected", "rowId", "row", "index", "style", "rowHeight", "className", "visibleColumns", "pinnedColumns", "offsetTop", "offsetLeft", "dimensions", "renderContext", "focusedColumnIndex", "isFirstVisible", "isLastVisible", "isNotVisible", "showBottomBorder", "tabbableCell", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseOver"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import clsx from 'clsx';
|
|
@@ -4,12 +4,11 @@ import PropTypes from 'prop-types';
|
|
|
4
4
|
import { styled } from '@mui/system';
|
|
5
5
|
import composeClasses from '@mui/utils/composeClasses';
|
|
6
6
|
import clsx from 'clsx';
|
|
7
|
+
import { minimalContentHeight } from "../../hooks/features/rows/gridRowsUtils.js";
|
|
7
8
|
import { useGridSelector } from "../../hooks/utils/useGridSelector.js";
|
|
8
9
|
import { gridDimensionsSelector } from "../../hooks/features/dimensions/index.js";
|
|
9
10
|
import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
|
|
10
11
|
import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
|
|
11
|
-
import { useGridVisibleRows } from "../../hooks/utils/useGridVisibleRows.js";
|
|
12
|
-
import { getMinimalContentHeight } from "../../hooks/features/rows/gridRowsUtils.js";
|
|
13
12
|
import { getDataGridUtilityClass } from "../../constants/gridClasses.js";
|
|
14
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
14
|
const GridOverlayWrapperRoot = styled('div', {
|
|
@@ -26,6 +25,7 @@ loadingOverlayVariant !== 'skeleton' ? {
|
|
|
26
25
|
position: 'sticky',
|
|
27
26
|
// To stay in place while scrolling
|
|
28
27
|
top: 'var(--DataGrid-headersTotalHeight)',
|
|
28
|
+
// TODO: take pinned rows into account
|
|
29
29
|
left: 0,
|
|
30
30
|
width: 0,
|
|
31
31
|
// To stay above the content instead of shifting it down
|
|
@@ -53,11 +53,10 @@ const useUtilityClasses = ownerState => {
|
|
|
53
53
|
function GridOverlayWrapper(props) {
|
|
54
54
|
const apiRef = useGridApiContext();
|
|
55
55
|
const rootProps = useGridRootProps();
|
|
56
|
-
const currentPage = useGridVisibleRows(apiRef, rootProps);
|
|
57
56
|
const dimensions = useGridSelector(apiRef, gridDimensionsSelector);
|
|
58
|
-
let height = dimensions.viewportOuterSize.height - dimensions.topContainerHeight - dimensions.bottomContainerHeight - (dimensions.hasScrollX ? dimensions.scrollbarSize : 0);
|
|
59
|
-
if (
|
|
60
|
-
height =
|
|
57
|
+
let height = Math.max(dimensions.viewportOuterSize.height - dimensions.topContainerHeight - dimensions.bottomContainerHeight - (dimensions.hasScrollX ? dimensions.scrollbarSize : 0), 0);
|
|
58
|
+
if (height === 0) {
|
|
59
|
+
height = minimalContentHeight;
|
|
61
60
|
}
|
|
62
61
|
const classes = useUtilityClasses(_extends({}, props, {
|
|
63
62
|
classes: rootProps.classes
|
|
@@ -14,7 +14,7 @@ export declare const gridPinnedColumnPositionLookup: {
|
|
|
14
14
|
0: undefined;
|
|
15
15
|
3: undefined;
|
|
16
16
|
};
|
|
17
|
-
export type GridCellProps = {
|
|
17
|
+
export type GridCellProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
18
18
|
align: GridAlignment;
|
|
19
19
|
className?: string;
|
|
20
20
|
colIndex: number;
|
|
@@ -32,12 +32,50 @@ export type GridCellProps = {
|
|
|
32
32
|
gridHasFiller: boolean;
|
|
33
33
|
onClick?: React.MouseEventHandler<HTMLDivElement>;
|
|
34
34
|
onDoubleClick?: React.MouseEventHandler<HTMLDivElement>;
|
|
35
|
+
onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;
|
|
35
36
|
onMouseDown?: React.MouseEventHandler<HTMLDivElement>;
|
|
37
|
+
onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;
|
|
36
38
|
onMouseUp?: React.MouseEventHandler<HTMLDivElement>;
|
|
39
|
+
onMouseOver?: React.MouseEventHandler<HTMLDivElement>;
|
|
40
|
+
onKeyUp?: React.KeyboardEventHandler<HTMLDivElement>;
|
|
37
41
|
onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;
|
|
38
42
|
onDragEnter?: React.DragEventHandler<HTMLDivElement>;
|
|
39
43
|
onDragOver?: React.DragEventHandler<HTMLDivElement>;
|
|
40
|
-
|
|
44
|
+
onFocus?: React.FocusEventHandler<Element>;
|
|
45
|
+
children?: React.ReactNode;
|
|
46
|
+
style?: React.CSSProperties;
|
|
47
|
+
[x: `data-${string}`]: string;
|
|
41
48
|
};
|
|
42
|
-
declare const MemoizedGridCell: React.ForwardRefExoticComponent<
|
|
49
|
+
declare const MemoizedGridCell: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
50
|
+
[x: `data-${string}`]: string;
|
|
51
|
+
align: GridAlignment;
|
|
52
|
+
className?: string;
|
|
53
|
+
colIndex: number;
|
|
54
|
+
column: GridColDef;
|
|
55
|
+
rowId: GridRowId;
|
|
56
|
+
width: number;
|
|
57
|
+
colSpan?: number;
|
|
58
|
+
disableDragEvents?: boolean;
|
|
59
|
+
isNotVisible: boolean;
|
|
60
|
+
editCellState: GridEditCellProps<any> | null;
|
|
61
|
+
pinnedOffset: number;
|
|
62
|
+
pinnedPosition: PinnedPosition;
|
|
63
|
+
sectionIndex: number;
|
|
64
|
+
sectionLength: number;
|
|
65
|
+
gridHasFiller: boolean;
|
|
66
|
+
onClick?: React.MouseEventHandler<HTMLDivElement>;
|
|
67
|
+
onDoubleClick?: React.MouseEventHandler<HTMLDivElement>;
|
|
68
|
+
onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;
|
|
69
|
+
onMouseDown?: React.MouseEventHandler<HTMLDivElement>;
|
|
70
|
+
onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;
|
|
71
|
+
onMouseUp?: React.MouseEventHandler<HTMLDivElement>;
|
|
72
|
+
onMouseOver?: React.MouseEventHandler<HTMLDivElement>;
|
|
73
|
+
onKeyUp?: React.KeyboardEventHandler<HTMLDivElement>;
|
|
74
|
+
onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;
|
|
75
|
+
onDragEnter?: React.DragEventHandler<HTMLDivElement>;
|
|
76
|
+
onDragOver?: React.DragEventHandler<HTMLDivElement>;
|
|
77
|
+
onFocus?: React.FocusEventHandler<Element>;
|
|
78
|
+
children?: React.ReactNode;
|
|
79
|
+
style?: React.CSSProperties;
|
|
80
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
43
81
|
export { MemoizedGridCell as GridCell };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["column", "rowId", "editCellState", "align", "children", "colIndex", "width", "className", "style", "
|
|
3
|
+
const _excluded = ["column", "rowId", "editCellState", "align", "children", "colIndex", "width", "className", "style", "colSpan", "disableDragEvents", "isNotVisible", "pinnedOffset", "pinnedPosition", "sectionIndex", "sectionLength", "gridHasFiller", "onClick", "onDoubleClick", "onMouseDown", "onMouseUp", "onMouseOver", "onKeyDown", "onKeyUp", "onDragEnter", "onDragOver"],
|
|
4
4
|
_excluded2 = ["changeReason", "unstable_updateValueOnRender"];
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
@@ -15,7 +15,6 @@ import { useGridSelector, objectShallowCompare } from "../../hooks/utils/useGrid
|
|
|
15
15
|
import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
|
|
16
16
|
import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
|
|
17
17
|
import { gridFocusCellSelector } from "../../hooks/features/focus/gridFocusStateSelector.js";
|
|
18
|
-
import { MissingRowIdError } from "../../hooks/features/rows/useGridParamsApi.js";
|
|
19
18
|
import { shouldCellShowLeftBorder, shouldCellShowRightBorder } from "../../utils/cellBorderUtils.js";
|
|
20
19
|
import { GridPinnedColumnPosition } from "../../hooks/features/columns/gridColumnsInterfaces.js";
|
|
21
20
|
import { gridRowSpanningHiddenCellsSelector, gridRowSpanningSpannedCellsSelector } from "../../hooks/features/rows/gridRowSpanningSelectors.js";
|
|
@@ -114,16 +113,13 @@ const GridCell = /*#__PURE__*/React.forwardRef(function GridCell(props, ref) {
|
|
|
114
113
|
// This is required because `.getCellParams` tries to get the `state.rows.tree` entry
|
|
115
114
|
// associated with `rowId`/`fieldId`, but this selector runs after the state has been
|
|
116
115
|
// updated, while `rowId`/`fieldId` reference an entry in the old state.
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
return result;
|
|
121
|
-
} catch (error) {
|
|
122
|
-
if (error instanceof MissingRowIdError) {
|
|
123
|
-
return EMPTY_CELL_PARAMS;
|
|
124
|
-
}
|
|
125
|
-
throw error;
|
|
116
|
+
const row = apiRef.current.getRow(rowId);
|
|
117
|
+
if (!row) {
|
|
118
|
+
return EMPTY_CELL_PARAMS;
|
|
126
119
|
}
|
|
120
|
+
const result = apiRef.current.getCellParams(rowId, field);
|
|
121
|
+
result.api = apiRef.current;
|
|
122
|
+
return result;
|
|
127
123
|
}, objectShallowCompare);
|
|
128
124
|
const isSelected = useGridSelector(apiRef, () => apiRef.current.unstable_applyPipeProcessors('isCellSelected', false, {
|
|
129
125
|
id: rowId,
|
|
@@ -211,6 +207,7 @@ const GridCell = /*#__PURE__*/React.forwardRef(function GridCell(props, ref) {
|
|
|
211
207
|
padding: 0,
|
|
212
208
|
opacity: 0,
|
|
213
209
|
width: 0,
|
|
210
|
+
height: 0,
|
|
214
211
|
border: 0
|
|
215
212
|
};
|
|
216
213
|
}
|
|
@@ -229,6 +226,9 @@ const GridCell = /*#__PURE__*/React.forwardRef(function GridCell(props, ref) {
|
|
|
229
226
|
if (rowSpan > 1) {
|
|
230
227
|
cellStyle.height = `calc(var(--height) * ${rowSpan})`;
|
|
231
228
|
cellStyle.zIndex = 5;
|
|
229
|
+
if (isLeftPinned || isRightPinned) {
|
|
230
|
+
cellStyle.zIndex = 6;
|
|
231
|
+
}
|
|
232
232
|
}
|
|
233
233
|
return cellStyle;
|
|
234
234
|
}, [width, isNotVisible, styleProp, pinnedOffset, pinnedPosition, isRtl, rowSpan]);
|
|
@@ -342,7 +342,6 @@ process.env.NODE_ENV !== "production" ? GridCell.propTypes = {
|
|
|
342
342
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
343
343
|
// ----------------------------------------------------------------------
|
|
344
344
|
align: PropTypes.oneOf(['center', 'left', 'right']).isRequired,
|
|
345
|
-
className: PropTypes.string,
|
|
346
345
|
colIndex: PropTypes.number.isRequired,
|
|
347
346
|
colSpan: PropTypes.number,
|
|
348
347
|
column: PropTypes.object.isRequired,
|
|
@@ -355,13 +354,6 @@ process.env.NODE_ENV !== "production" ? GridCell.propTypes = {
|
|
|
355
354
|
}),
|
|
356
355
|
gridHasFiller: PropTypes.bool.isRequired,
|
|
357
356
|
isNotVisible: PropTypes.bool.isRequired,
|
|
358
|
-
onClick: PropTypes.func,
|
|
359
|
-
onDoubleClick: PropTypes.func,
|
|
360
|
-
onDragEnter: PropTypes.func,
|
|
361
|
-
onDragOver: PropTypes.func,
|
|
362
|
-
onKeyDown: PropTypes.func,
|
|
363
|
-
onMouseDown: PropTypes.func,
|
|
364
|
-
onMouseUp: PropTypes.func,
|
|
365
357
|
pinnedOffset: PropTypes.number.isRequired,
|
|
366
358
|
pinnedPosition: PropTypes.oneOf([0, 1, 2, 3]).isRequired,
|
|
367
359
|
rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
|
|
@@ -2,7 +2,6 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
|
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
3
|
const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "tabIndex", "hasFocus", "isValidating", "debounceMs", "isProcessingProps", "onValueChange"];
|
|
4
4
|
import * as React from 'react';
|
|
5
|
-
import PropTypes from 'prop-types';
|
|
6
5
|
import { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
|
|
7
6
|
import { styled } from '@mui/material/styles';
|
|
8
7
|
import InputBase from '@mui/material/InputBase';
|
|
@@ -94,71 +93,5 @@ const GridEditInputCell = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
94
93
|
}) : undefined
|
|
95
94
|
}, other));
|
|
96
95
|
});
|
|
97
|
-
process.env.NODE_ENV !== "production" ? GridEditInputCell.propTypes = {
|
|
98
|
-
// ----------------------------- Warning --------------------------------
|
|
99
|
-
// | These PropTypes are generated from the TypeScript type definitions |
|
|
100
|
-
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
101
|
-
// ----------------------------------------------------------------------
|
|
102
|
-
/**
|
|
103
|
-
* GridApi that let you manipulate the grid.
|
|
104
|
-
*/
|
|
105
|
-
api: PropTypes.object.isRequired,
|
|
106
|
-
/**
|
|
107
|
-
* The mode of the cell.
|
|
108
|
-
*/
|
|
109
|
-
cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,
|
|
110
|
-
changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),
|
|
111
|
-
/**
|
|
112
|
-
* The column of the row that the current cell belongs to.
|
|
113
|
-
*/
|
|
114
|
-
colDef: PropTypes.object.isRequired,
|
|
115
|
-
debounceMs: PropTypes.number,
|
|
116
|
-
/**
|
|
117
|
-
* The column field of the cell that triggered the event.
|
|
118
|
-
*/
|
|
119
|
-
field: PropTypes.string.isRequired,
|
|
120
|
-
/**
|
|
121
|
-
* The cell value formatted with the column valueFormatter.
|
|
122
|
-
*/
|
|
123
|
-
formattedValue: PropTypes.any,
|
|
124
|
-
/**
|
|
125
|
-
* If true, the cell is the active element.
|
|
126
|
-
*/
|
|
127
|
-
hasFocus: PropTypes.bool.isRequired,
|
|
128
|
-
/**
|
|
129
|
-
* The grid row id.
|
|
130
|
-
*/
|
|
131
|
-
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
|
|
132
|
-
/**
|
|
133
|
-
* If true, the cell is editable.
|
|
134
|
-
*/
|
|
135
|
-
isEditable: PropTypes.bool,
|
|
136
|
-
isProcessingProps: PropTypes.bool,
|
|
137
|
-
isValidating: PropTypes.bool,
|
|
138
|
-
/**
|
|
139
|
-
* Callback called when the value is changed by the user.
|
|
140
|
-
* @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.
|
|
141
|
-
* @param {Date | null} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.
|
|
142
|
-
* @returns {Promise<void> | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`
|
|
143
|
-
*/
|
|
144
|
-
onValueChange: PropTypes.func,
|
|
145
|
-
/**
|
|
146
|
-
* The row model of the row that the current cell belongs to.
|
|
147
|
-
*/
|
|
148
|
-
row: PropTypes.any.isRequired,
|
|
149
|
-
/**
|
|
150
|
-
* The node of the row that the current cell belongs to.
|
|
151
|
-
*/
|
|
152
|
-
rowNode: PropTypes.object.isRequired,
|
|
153
|
-
/**
|
|
154
|
-
* the tabIndex value.
|
|
155
|
-
*/
|
|
156
|
-
tabIndex: PropTypes.oneOf([-1, 0]).isRequired,
|
|
157
|
-
/**
|
|
158
|
-
* The cell value.
|
|
159
|
-
* If the column has `valueGetter`, use `params.row` to directly access the fields.
|
|
160
|
-
*/
|
|
161
|
-
value: PropTypes.any
|
|
162
|
-
} : void 0;
|
|
163
96
|
export { GridEditInputCell };
|
|
164
97
|
export const renderEditInputCell = params => /*#__PURE__*/_jsx(GridEditInputCell, _extends({}, params));
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { TextFieldProps } from '@mui/material/TextField';
|
|
2
3
|
import type { GridColDef } from '../../models/colDef/gridColDef';
|
|
3
4
|
export interface GridColumnsManagementProps {
|
|
4
5
|
sort?: 'asc' | 'desc';
|
|
5
6
|
searchPredicate?: (column: GridColDef, searchValue: string) => boolean;
|
|
7
|
+
searchInputProps?: Partial<TextFieldProps>;
|
|
6
8
|
/**
|
|
7
9
|
* If `true`, the column search field will be focused automatically.
|
|
8
10
|
* If `false`, the first column switch input will be focused automatically.
|
|
@@ -5,6 +5,8 @@ import PropTypes from 'prop-types';
|
|
|
5
5
|
import composeClasses from '@mui/utils/composeClasses';
|
|
6
6
|
import FormControlLabel from '@mui/material/FormControlLabel';
|
|
7
7
|
import { styled } from '@mui/material/styles';
|
|
8
|
+
import TextField from '@mui/material/TextField';
|
|
9
|
+
import { inputBaseClasses } from '@mui/material/InputBase';
|
|
8
10
|
import { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from "../../hooks/features/columns/gridColumnsSelector.js";
|
|
9
11
|
import { useGridSelector } from "../../hooks/utils/useGridSelector.js";
|
|
10
12
|
import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
|
|
@@ -20,6 +22,7 @@ const useUtilityClasses = ownerState => {
|
|
|
20
22
|
const slots = {
|
|
21
23
|
root: ['columnsManagement'],
|
|
22
24
|
header: ['columnsManagementHeader'],
|
|
25
|
+
searchInput: ['columnsManagementSearchInput'],
|
|
23
26
|
footer: ['columnsManagementFooter'],
|
|
24
27
|
row: ['columnsManagementRow']
|
|
25
28
|
};
|
|
@@ -42,7 +45,8 @@ function GridColumnsManagement(props) {
|
|
|
42
45
|
disableShowHideToggle = false,
|
|
43
46
|
disableResetButton = false,
|
|
44
47
|
toggleAllMode = 'all',
|
|
45
|
-
getTogglableColumns
|
|
48
|
+
getTogglableColumns,
|
|
49
|
+
searchInputProps
|
|
46
50
|
} = props;
|
|
47
51
|
const isResetDisabled = React.useMemo(() => checkColumnVisibilityModelsSame(columnVisibilityModel, initialColumnVisibilityModel), [columnVisibilityModel, initialColumnVisibilityModel]);
|
|
48
52
|
const sortedColumns = React.useMemo(() => {
|
|
@@ -109,28 +113,52 @@ function GridColumnsManagement(props) {
|
|
|
109
113
|
}
|
|
110
114
|
return false;
|
|
111
115
|
};
|
|
116
|
+
const handleSearchReset = React.useCallback(() => {
|
|
117
|
+
setSearchValue('');
|
|
118
|
+
searchInputRef.current.focus();
|
|
119
|
+
}, []);
|
|
112
120
|
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
113
121
|
children: [/*#__PURE__*/_jsx(GridColumnsManagementHeader, {
|
|
114
122
|
className: classes.header,
|
|
115
123
|
ownerState: rootProps,
|
|
116
|
-
children: /*#__PURE__*/_jsx(
|
|
124
|
+
children: /*#__PURE__*/_jsx(SearchInput, _extends({
|
|
125
|
+
as: rootProps.slots.baseTextField,
|
|
126
|
+
ownerState: rootProps,
|
|
117
127
|
placeholder: apiRef.current.getLocaleText('columnsManagementSearchTitle'),
|
|
118
128
|
inputRef: searchInputRef,
|
|
129
|
+
className: classes.searchInput,
|
|
119
130
|
value: searchValue,
|
|
120
131
|
onChange: handleSearchValueChange,
|
|
121
132
|
variant: "outlined",
|
|
122
133
|
size: "small",
|
|
134
|
+
type: "search",
|
|
123
135
|
InputProps: {
|
|
124
136
|
startAdornment: /*#__PURE__*/_jsx(rootProps.slots.baseInputAdornment, {
|
|
125
137
|
position: "start",
|
|
126
138
|
children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterIcon, {})
|
|
127
139
|
}),
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
140
|
+
endAdornment: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({
|
|
141
|
+
"aria-label": apiRef.current.getLocaleText('columnsManagementDeleteIconLabel'),
|
|
142
|
+
size: "small",
|
|
143
|
+
sx: [searchValue ? {
|
|
144
|
+
visibility: 'visible'
|
|
145
|
+
} : {
|
|
146
|
+
visibility: 'hidden'
|
|
147
|
+
}],
|
|
148
|
+
tabIndex: -1,
|
|
149
|
+
onClick: handleSearchReset
|
|
150
|
+
}, rootProps.slotProps?.baseIconButton, {
|
|
151
|
+
children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterClearIcon, {
|
|
152
|
+
fontSize: "small"
|
|
153
|
+
})
|
|
154
|
+
}))
|
|
155
|
+
},
|
|
156
|
+
inputProps: {
|
|
157
|
+
'aria-label': apiRef.current.getLocaleText('columnsManagementSearchTitle')
|
|
131
158
|
},
|
|
159
|
+
autoComplete: "off",
|
|
132
160
|
fullWidth: true
|
|
133
|
-
}, rootProps.slotProps?.baseTextField))
|
|
161
|
+
}, rootProps.slotProps?.baseTextField, searchInputProps))
|
|
134
162
|
}), /*#__PURE__*/_jsxs(GridColumnsManagementBody, {
|
|
135
163
|
className: classes.root,
|
|
136
164
|
ownerState: rootProps,
|
|
@@ -205,6 +233,7 @@ process.env.NODE_ENV !== "production" ? GridColumnsManagement.propTypes = {
|
|
|
205
233
|
* @returns {GridColDef['field'][]} The list of togglable columns' field names.
|
|
206
234
|
*/
|
|
207
235
|
getTogglableColumns: PropTypes.func,
|
|
236
|
+
searchInputProps: PropTypes.object,
|
|
208
237
|
searchPredicate: PropTypes.func,
|
|
209
238
|
sort: PropTypes.oneOf(['asc', 'desc']),
|
|
210
239
|
/**
|
|
@@ -239,6 +268,24 @@ const GridColumnsManagementHeader = styled('div', {
|
|
|
239
268
|
}) => ({
|
|
240
269
|
padding: theme.spacing(1.5, 3)
|
|
241
270
|
}));
|
|
271
|
+
const SearchInput = styled(TextField, {
|
|
272
|
+
name: 'MuiDataGrid',
|
|
273
|
+
slot: 'ColumnsManagementSearchInput',
|
|
274
|
+
overridesResolver: (props, styles) => styles.columnsManagementSearchInput
|
|
275
|
+
})(({
|
|
276
|
+
theme
|
|
277
|
+
}) => ({
|
|
278
|
+
[`& .${inputBaseClasses.root}`]: {
|
|
279
|
+
padding: theme.spacing(0, 1.5, 0, 1.5)
|
|
280
|
+
},
|
|
281
|
+
[`& .${inputBaseClasses.input}::-webkit-search-decoration,
|
|
282
|
+
& .${inputBaseClasses.input}::-webkit-search-cancel-button,
|
|
283
|
+
& .${inputBaseClasses.input}::-webkit-search-results-button,
|
|
284
|
+
& .${inputBaseClasses.input}::-webkit-search-results-decoration`]: {
|
|
285
|
+
/* clears the 'X' icon from Chrome */
|
|
286
|
+
display: 'none'
|
|
287
|
+
}
|
|
288
|
+
}));
|
|
242
289
|
const GridColumnsManagementFooter = styled('div', {
|
|
243
290
|
name: 'MuiDataGrid',
|
|
244
291
|
slot: 'ColumnsManagementFooter',
|