@mui/x-data-grid 5.15.1 → 5.16.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 +142 -0
- package/DataGrid/DataGrid.js +4 -2
- package/DataGrid/useDataGridComponent.js +5 -0
- package/README.md +2 -1
- package/components/DataGridColumnHeaders.js +4 -3
- package/components/ErrorBoundary.d.ts +1 -0
- package/components/GridAutoSizer.js +7 -0
- package/components/GridRow.js +5 -3
- package/components/base/GridBody.js +8 -5
- package/components/base/GridOverlays.js +4 -7
- package/components/cell/GridActionsCellItem.d.ts +2 -2
- package/components/cell/GridEditDateCell.js +1 -1
- package/components/cell/GridEditSingleSelectCell.js +9 -1
- package/components/columnHeaders/GridColumnGroupHeader.d.ts +14 -0
- package/components/columnHeaders/GridColumnGroupHeader.js +122 -0
- package/components/columnHeaders/GridColumnHeaderItem.js +55 -71
- package/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +32 -0
- package/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
- package/components/containers/GridOverlay.js +7 -1
- package/components/containers/GridRoot.js +3 -3
- package/components/containers/GridRootStyles.js +14 -2
- package/components/menu/GridMenu.d.ts +3 -2
- package/components/menu/GridMenu.js +1 -0
- package/components/menu/columnMenu/GridColumnHeaderMenu.d.ts +1 -1
- package/components/panel/GridPanel.d.ts +1 -1
- package/components/panel/GridPanel.js +1 -0
- package/components/panel/filterPanel/GridFilterForm.d.ts +4 -0
- package/components/panel/filterPanel/GridFilterForm.js +5 -0
- package/components/panel/filterPanel/GridFilterInputMultipleValue.d.ts +1 -1
- package/components/panel/filterPanel/GridFilterPanel.d.ts +4 -0
- package/components/panel/filterPanel/GridFilterPanel.js +5 -0
- package/components/toolbar/GridToolbarColumnsButton.d.ts +1 -1
- package/components/toolbar/GridToolbarDensitySelector.d.ts +1 -1
- package/components/toolbar/GridToolbarExportContainer.d.ts +1 -1
- package/constants/gridClasses.d.ts +16 -0
- package/constants/gridClasses.js +1 -1
- package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +7 -0
- package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
- package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +7 -0
- package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
- package/hooks/features/columnGrouping/index.d.ts +2 -0
- package/hooks/features/columnGrouping/index.js +2 -0
- package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +24 -0
- package/hooks/features/columnGrouping/useGridColumnGrouping.js +153 -0
- package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.d.ts +4 -0
- package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +7 -6
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +204 -9
- package/hooks/features/density/densitySelector.d.ts +2 -0
- package/hooks/features/density/densitySelector.js +3 -1
- package/hooks/features/density/densityState.d.ts +1 -0
- package/hooks/features/density/useGridDensity.d.ts +1 -1
- package/hooks/features/density/useGridDensity.js +45 -9
- package/hooks/features/dimensions/useGridDimensions.js +4 -4
- package/hooks/features/editRows/useGridCellEditing.new.js +15 -7
- package/hooks/features/editRows/useGridRowEditing.new.js +9 -2
- package/hooks/features/export/useGridPrintExport.js +3 -3
- package/hooks/features/filter/gridFilterSelector.d.ts +3 -3
- package/hooks/features/filter/gridFilterState.d.ts +12 -1
- package/hooks/features/filter/gridFilterUtils.d.ts +8 -5
- package/hooks/features/filter/gridFilterUtils.js +74 -43
- package/hooks/features/filter/useGridFilter.js +16 -3
- package/hooks/features/focus/useGridFocus.js +11 -6
- package/hooks/features/index.d.ts +1 -0
- package/hooks/features/index.js +1 -0
- package/hooks/features/pagination/gridPaginationSelector.d.ts +1 -1
- package/hooks/features/rows/gridRowsSelector.d.ts +1 -1
- package/hooks/features/rows/useGridRows.js +5 -2
- package/hooks/features/selection/gridSelectionSelector.d.ts +1 -1
- package/hooks/features/sorting/gridSortingSelector.d.ts +1 -1
- package/hooks/features/statePersistence/gridStatePersistenceInterface.d.ts +3 -0
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
- package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
- package/hooks/utils/useGridNativeEventListener.js +2 -2
- package/hooks/utils/useGridVisibleRows.d.ts +2 -2
- package/index.js +1 -1
- package/internals/index.d.ts +3 -0
- package/internals/index.js +3 -0
- package/legacy/DataGrid/DataGrid.js +4 -2
- package/legacy/DataGrid/useDataGridComponent.js +5 -0
- package/legacy/components/DataGridColumnHeaders.js +4 -3
- package/legacy/components/GridAutoSizer.js +7 -0
- package/legacy/components/GridRow.js +4 -3
- package/legacy/components/base/GridBody.js +8 -5
- package/legacy/components/base/GridOverlays.js +4 -7
- package/legacy/components/cell/GridEditDateCell.js +1 -1
- package/legacy/components/cell/GridEditSingleSelectCell.js +9 -1
- package/legacy/components/columnHeaders/GridColumnGroupHeader.js +120 -0
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +78 -88
- package/legacy/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/legacy/components/columnHeaders/GridGenericColumnHeaderItem.js +112 -0
- package/legacy/components/containers/GridOverlay.js +7 -1
- package/legacy/components/containers/GridRoot.js +3 -3
- package/legacy/components/containers/GridRootStyles.js +11 -2
- package/legacy/components/menu/GridMenu.js +1 -0
- package/legacy/components/panel/GridPanel.js +1 -0
- package/legacy/components/panel/filterPanel/GridFilterForm.js +5 -0
- package/legacy/components/panel/filterPanel/GridFilterPanel.js +5 -0
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
- package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +12 -0
- package/legacy/hooks/features/columnGrouping/index.js +2 -0
- package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +151 -0
- package/legacy/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +213 -12
- package/legacy/hooks/features/density/densitySelector.js +6 -0
- package/legacy/hooks/features/density/useGridDensity.js +44 -6
- package/legacy/hooks/features/dimensions/useGridDimensions.js +4 -4
- package/legacy/hooks/features/editRows/useGridCellEditing.new.js +16 -8
- package/legacy/hooks/features/editRows/useGridRowEditing.new.js +9 -2
- package/legacy/hooks/features/export/useGridPrintExport.js +3 -3
- package/legacy/hooks/features/filter/gridFilterUtils.js +84 -55
- package/legacy/hooks/features/filter/useGridFilter.js +16 -3
- package/legacy/hooks/features/focus/useGridFocus.js +11 -6
- package/legacy/hooks/features/index.js +1 -0
- package/legacy/hooks/features/rows/useGridRows.js +5 -2
- package/legacy/hooks/utils/useGridNativeEventListener.js +2 -2
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +3 -0
- package/legacy/models/api/gridColumnGroupingApi.js +1 -0
- package/legacy/models/gridColumnGrouping.js +6 -0
- package/legacy/models/index.js +2 -1
- package/models/api/gridApiCommon.d.ts +2 -1
- package/models/api/gridColumnGroupingApi.d.ts +19 -0
- package/models/api/gridColumnGroupingApi.js +1 -0
- package/models/api/gridDensityApi.d.ts +2 -1
- package/models/colDef/gridColDef.d.ts +15 -1
- package/models/gridColumnGrouping.d.ts +67 -0
- package/models/gridColumnGrouping.js +6 -0
- package/models/gridRows.d.ts +5 -5
- package/models/gridStateCommunity.d.ts +2 -1
- package/models/index.d.ts +1 -0
- package/models/index.js +2 -1
- package/models/params/gridMenuParams.d.ts +1 -2
- package/models/props/DataGridProps.d.ts +10 -4
- package/modern/DataGrid/DataGrid.js +4 -2
- package/modern/DataGrid/useDataGridComponent.js +5 -0
- package/modern/components/DataGridColumnHeaders.js +4 -3
- package/modern/components/GridAutoSizer.js +7 -0
- package/modern/components/GridRow.js +5 -3
- package/modern/components/base/GridBody.js +8 -5
- package/modern/components/base/GridOverlays.js +4 -7
- package/modern/components/cell/GridEditDateCell.js +1 -1
- package/modern/components/cell/GridEditSingleSelectCell.js +9 -1
- package/modern/components/columnHeaders/GridColumnGroupHeader.js +120 -0
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +53 -69
- package/modern/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
- package/modern/components/containers/GridOverlay.js +7 -1
- package/modern/components/containers/GridRoot.js +3 -3
- package/modern/components/containers/GridRootStyles.js +14 -2
- package/modern/components/menu/GridMenu.js +1 -0
- package/modern/components/panel/GridPanel.js +1 -0
- package/modern/components/panel/filterPanel/GridFilterForm.js +5 -0
- package/modern/components/panel/filterPanel/GridFilterPanel.js +5 -0
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
- package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
- package/modern/hooks/features/columnGrouping/index.js +2 -0
- package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +145 -0
- package/modern/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +29 -0
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -9
- package/modern/hooks/features/density/densitySelector.js +3 -1
- package/modern/hooks/features/density/useGridDensity.js +37 -9
- package/modern/hooks/features/dimensions/useGridDimensions.js +4 -4
- package/modern/hooks/features/editRows/useGridCellEditing.new.js +15 -7
- package/modern/hooks/features/editRows/useGridRowEditing.new.js +9 -2
- package/modern/hooks/features/export/useGridPrintExport.js +3 -3
- package/modern/hooks/features/filter/gridFilterUtils.js +73 -42
- package/modern/hooks/features/filter/useGridFilter.js +16 -3
- package/modern/hooks/features/focus/useGridFocus.js +11 -6
- package/modern/hooks/features/index.js +1 -0
- package/modern/hooks/features/rows/useGridRows.js +5 -2
- package/modern/hooks/utils/useGridNativeEventListener.js +2 -2
- package/modern/index.js +1 -1
- package/modern/internals/index.js +3 -0
- package/modern/models/api/gridColumnGroupingApi.js +1 -0
- package/modern/models/gridColumnGrouping.js +6 -0
- package/modern/models/index.js +2 -1
- package/node/DataGrid/DataGrid.js +4 -2
- package/node/DataGrid/useDataGridComponent.js +7 -0
- package/node/components/DataGridColumnHeaders.js +4 -3
- package/node/components/GridAutoSizer.js +7 -0
- package/node/components/GridRow.js +6 -3
- package/node/components/base/GridBody.js +7 -4
- package/node/components/base/GridOverlays.js +3 -6
- package/node/components/cell/GridEditDateCell.js +1 -1
- package/node/components/cell/GridEditSingleSelectCell.js +9 -1
- package/node/components/columnHeaders/GridColumnGroupHeader.js +141 -0
- package/node/components/columnHeaders/GridColumnHeaderItem.js +53 -72
- package/node/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +126 -0
- package/node/components/containers/GridOverlay.js +7 -1
- package/node/components/containers/GridRoot.js +4 -4
- package/node/components/containers/GridRootStyles.js +14 -2
- package/node/components/menu/GridMenu.js +1 -0
- package/node/components/panel/GridPanel.js +1 -0
- package/node/components/panel/filterPanel/GridFilterForm.js +5 -0
- package/node/components/panel/filterPanel/GridFilterPanel.js +5 -0
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +5 -0
- package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +18 -0
- package/node/hooks/features/columnGrouping/index.js +18 -0
- package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +182 -0
- package/node/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +55 -0
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +207 -8
- package/node/hooks/features/density/densitySelector.js +6 -2
- package/node/hooks/features/density/useGridDensity.js +48 -9
- package/node/hooks/features/dimensions/useGridDimensions.js +3 -3
- package/node/hooks/features/editRows/useGridCellEditing.new.js +15 -7
- package/node/hooks/features/editRows/useGridRowEditing.new.js +9 -2
- package/node/hooks/features/export/useGridPrintExport.js +2 -2
- package/node/hooks/features/filter/gridFilterUtils.js +81 -47
- package/node/hooks/features/filter/useGridFilter.js +15 -2
- package/node/hooks/features/focus/useGridFocus.js +11 -6
- package/node/hooks/features/index.js +13 -0
- package/node/hooks/features/rows/useGridRows.js +5 -2
- package/node/hooks/utils/useGridNativeEventListener.js +2 -2
- package/node/index.js +1 -1
- package/node/internals/index.js +30 -0
- package/node/models/api/gridColumnGroupingApi.js +5 -0
- package/node/models/gridColumnGrouping.js +13 -0
- package/node/models/index.js +13 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,148 @@
|
|
|
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
|
+
## 5.16.0
|
|
7
|
+
|
|
8
|
+
_Aug 25, 2022_
|
|
9
|
+
|
|
10
|
+
We'd like to offer a big thanks to the 11 contributors who made this release possible. Here are some highlights ✨:
|
|
11
|
+
|
|
12
|
+
- 🎁 Introduce column grouping for data grid (#5133) @alexfauquette
|
|
13
|
+
|
|
14
|
+
You can now group columns using the `columnGroupingModel` prop. This lets you to display more structured data.
|
|
15
|
+
|
|
16
|
+
<img src="https://user-images.githubusercontent.com/45398769/186178366-4fba66b2-bf90-4c7a-9d83-940a7fc78704.png" width="800" />
|
|
17
|
+
|
|
18
|
+
To enable this feature, add `experimentalFeatures={{ columnGrouping: true }}`.
|
|
19
|
+
The grouping header can be fully customized.
|
|
20
|
+
See the [documentation](https://mui.com/x/react-data-grid/column-groups/) to explore everything it has to offer.
|
|
21
|
+
|
|
22
|
+
- 🐞 Bugfixes
|
|
23
|
+
- 🌏 New locales for pickers thanks to @tesseractjh and @drastus
|
|
24
|
+
|
|
25
|
+
### `@mui/x-data-grid@v5.16.0` / `@mui/x-data-grid-pro@v5.16.0` / `@mui/x-data-grid-premium@v5.16.0`
|
|
26
|
+
|
|
27
|
+
#### Changes
|
|
28
|
+
|
|
29
|
+
- [DataGrid] Implement column grouping (#5133) @alexfauquette
|
|
30
|
+
- [DataGrid] Handle `disableVirtualization` prop change (#5889) @cherniavskii
|
|
31
|
+
- [DataGrid] Improve `GridRowModel` typing (#5734) @cherniavskii
|
|
32
|
+
- [DataGrid] Update deprecation note for `GridColDef` `hide` property (#5886) @cherniavskii
|
|
33
|
+
|
|
34
|
+
### `@mui/x-date-pickers@v5.0.0-beta.7` / `@mui/x-date-pickers-pro@v5.0.0-beta.7`
|
|
35
|
+
|
|
36
|
+
#### Changes
|
|
37
|
+
|
|
38
|
+
- [DatePicker] Fix to pass down `className` prop provided on DatePicker to `renderInput` (#5471) @CruseCtrl
|
|
39
|
+
- [DatePicker] Improve `a11y` support (#5809) @LukasTy
|
|
40
|
+
- [pickers] Add `PaperContent` component slot (#5801) @LukasTy
|
|
41
|
+
- [pickers] Add a breaking change section in the migration guide (#5805) @alexfauquette
|
|
42
|
+
- [pickers] Add new translations to `localeText` (#5143) @alexfauquette
|
|
43
|
+
- [pickers] Document components slots (#4657) @flaviendelangle
|
|
44
|
+
- [pickers] Add new unstable field components (#5504) @flaviendelangle
|
|
45
|
+
- [pickers] Fallback to default `minDate` / `maxDate` when `null` value is passed (#5397) @flaviendelangle
|
|
46
|
+
- [l10n] Add Korean (ko-KR) locale (#5854) @tesseractjh
|
|
47
|
+
- [l10n] Add Polish (pl-PL) locale (#5833) @drastus
|
|
48
|
+
|
|
49
|
+
### Docs
|
|
50
|
+
|
|
51
|
+
- [docs] Fix typo in `migration from lab` (#5277) @chuckwired
|
|
52
|
+
- [docs] Use `dayjs` instead of `date-fns` in doc examples (#5481) @flaviendelangle
|
|
53
|
+
|
|
54
|
+
### Core
|
|
55
|
+
|
|
56
|
+
- [core] Clarify the scope of the license key used for tests and documentation (#5824) @oliviertassinari
|
|
57
|
+
- [core] Fix Typescript error on field hooks (#5892) @flaviendelangle
|
|
58
|
+
- [core] Memoize `columns` in `useDemoData` hook (#5848) @cherniavskii
|
|
59
|
+
- [core] Remove Firefox from the BrowserStack list (#5874) @DanailH
|
|
60
|
+
- [core] Small changes to the release script (#5840) @m4theushw
|
|
61
|
+
|
|
62
|
+
## 5.15.3
|
|
63
|
+
|
|
64
|
+
_Aug 18, 2022_
|
|
65
|
+
|
|
66
|
+
We'd like to offer a big thanks to the 9 contributors who made this release possible. Here are some highlights ✨:
|
|
67
|
+
|
|
68
|
+
- 📚 Documentation improvements
|
|
69
|
+
- 🐞 Bugfixes
|
|
70
|
+
|
|
71
|
+
### `@mui/x-data-grid@v5.15.3` / `@mui/x-data-grid-pro@v5.15.3` / `@mui/x-data-grid-premium@v5.15.3`
|
|
72
|
+
|
|
73
|
+
#### Changes
|
|
74
|
+
|
|
75
|
+
- [DataGrid] Fix <kbd>Enter</kbd> causing Select to re-open when commiting value (#5756) @m4theushw
|
|
76
|
+
- [DataGrid] Fix `GridOverlays` bypassing pointer events (#5674) @philjones88
|
|
77
|
+
|
|
78
|
+
### `@mui/x-date-pickers@v5.0.0-beta.6` / `@mui/x-date-picker-pro@v5.0.0-beta.6`
|
|
79
|
+
|
|
80
|
+
#### Changes
|
|
81
|
+
|
|
82
|
+
- [DatePicker] Support click on day outside of current month (#5768) @alexfauquette
|
|
83
|
+
- [pickers] Extend `PickersActionBarProps` with `DialogActionProps` (#5798) @LukasTy
|
|
84
|
+
|
|
85
|
+
### Docs
|
|
86
|
+
|
|
87
|
+
- [docs] Fix API anchor link scroll top (#5795) @oliviertassinari
|
|
88
|
+
- [docs] Fix contradiction in the free trial clause (#5732) @oliviertassinari
|
|
89
|
+
- [docs] Fix default value of the DataGrid `logLevel` prop to false (#5784) @HwangTaehyun
|
|
90
|
+
- [docs] Fix typo on the row height page (#5772) @flaviendelangle
|
|
91
|
+
- [docs] Improve "upgrading plans" documentation. (#5683) @joserodolfofreitas
|
|
92
|
+
- [docs] Link the license docs before pricing (#5726) @oliviertassinari
|
|
93
|
+
- [docs] Update packages README files (#5835) @cherniavskii
|
|
94
|
+
- [docs] Use `InputBase` for pickers inputs (#5597) @cherniavskii
|
|
95
|
+
|
|
96
|
+
### Core
|
|
97
|
+
|
|
98
|
+
- [core] Upgrade monorepo (#5771, #5797) @cherniavskii
|
|
99
|
+
- [core] Various TS improvements (#5556) @flaviendelangle
|
|
100
|
+
- [license] Give more context in the missing license (#5731) @oliviertassinari
|
|
101
|
+
- [license] Only log an error type once (#5730) @oliviertassinari
|
|
102
|
+
- [test] Increase timeout to take print screenshot (#5799) @m4theushw
|
|
103
|
+
|
|
104
|
+
## 5.15.2
|
|
105
|
+
|
|
106
|
+
_Aug 11, 2022_
|
|
107
|
+
|
|
108
|
+
We'd like to offer a big thanks to the 7 contributors who made this release possible. Here are some highlights ✨:
|
|
109
|
+
|
|
110
|
+
- ✨ Improve quick filtering with row grouping (#5701) @alexfauquette
|
|
111
|
+
- 📚 Documentation improvements
|
|
112
|
+
- 🐞 Bugfixes
|
|
113
|
+
|
|
114
|
+
### `@mui/x-data-grid@v5.15.2` / `@mui/x-data-grid-pro@v5.15.2` / `@mui/x-data-grid-premium@v5.15.2`
|
|
115
|
+
|
|
116
|
+
#### Changes
|
|
117
|
+
|
|
118
|
+
- [DataGrid] Catch errors if rows freezing is not supported (#5711) @cherniavskii
|
|
119
|
+
- [DataGrid] Preserve cell mode when entering edit mode while commiting (#5686) @m4theushw
|
|
120
|
+
- [DataGridPremium] Let quick filter search in row grouping children (#5701) @alexfauquette
|
|
121
|
+
|
|
122
|
+
### `@mui/x-date-pickers@v5.0.0-beta.5` / `@mui/x-date-picker-pro@5.0.0-beta.5`
|
|
123
|
+
|
|
124
|
+
#### Changes
|
|
125
|
+
|
|
126
|
+
- [pickers] Add `react-dom` to peerDependencies (#5752) @cherniavskii
|
|
127
|
+
- [TimePicker] Set clock focus outline to `none` (#5758) @LukasTy
|
|
128
|
+
- [pickers] Fix theme augmentation with TypeScript (#5596) @alexfauquette
|
|
129
|
+
- [pickers] Reset input value when locale is modified (#5310) @alexfauquette
|
|
130
|
+
- [pickers] Support `disableHighlightToday` on `MonthPicker` and `YearPicker` (#5562) @flaviendelangle
|
|
131
|
+
- [pickers] Fallback to desktop mode when `matchMedia` is unavailable (#5684) @LukasTy
|
|
132
|
+
- [pickers] Trigger `onChange` when clearing or accepting `Invalid date` (#5740) @LukasTy
|
|
133
|
+
|
|
134
|
+
### Docs
|
|
135
|
+
|
|
136
|
+
- [docs] Add RFC GH issue template (#5739) @bytasv
|
|
137
|
+
- [docs] Add description to the `GridExportStateParams` page (#5654) @oliviertassinari
|
|
138
|
+
- [docs] Improve the Events page (#5413) @flaviendelangle
|
|
139
|
+
- [docs] Use new editing API in the introduction demos (#5728) @oliviertassinari
|
|
140
|
+
|
|
141
|
+
### Core
|
|
142
|
+
|
|
143
|
+
- [core] Remove duplicated `FUNDING.yml` file (#5656) @oliviertassinari
|
|
144
|
+
- [core] Remove outdated Next.js options (#5727) @oliviertassinari
|
|
145
|
+
- [core] Update tooling to run with React 18 (#4155) @m4theushw
|
|
146
|
+
- [test] Fix failing dynamic row height tests on Edge (#5707) @m4theushw
|
|
147
|
+
|
|
6
148
|
## 5.15.1
|
|
7
149
|
|
|
8
150
|
_Aug 4, 2022_
|
package/DataGrid/DataGrid.js
CHANGED
|
@@ -79,6 +79,7 @@ DataGridRaw.propTypes = {
|
|
|
79
79
|
* @default 3
|
|
80
80
|
*/
|
|
81
81
|
columnBuffer: PropTypes.number,
|
|
82
|
+
columnGroupingModel: PropTypes.arrayOf(PropTypes.object),
|
|
82
83
|
|
|
83
84
|
/**
|
|
84
85
|
* Set of columns of type [[GridColumns]].
|
|
@@ -194,6 +195,7 @@ DataGridRaw.propTypes = {
|
|
|
194
195
|
* For each feature, if the flag is not explicitly set to `true`, the feature will be fully disabled and any property / method call will not have any effect.
|
|
195
196
|
*/
|
|
196
197
|
experimentalFeatures: PropTypes.shape({
|
|
198
|
+
columnGrouping: PropTypes.bool,
|
|
197
199
|
newEditingApi: PropTypes.bool,
|
|
198
200
|
preventCommitWhileValidating: PropTypes.bool,
|
|
199
201
|
warnIfFocusStateIsNotSynced: PropTypes.bool
|
|
@@ -347,7 +349,7 @@ DataGridRaw.propTypes = {
|
|
|
347
349
|
|
|
348
350
|
/**
|
|
349
351
|
* Allows to pass the logging level or false to turn off logging.
|
|
350
|
-
* @default "
|
|
352
|
+
* @default "error" ("warn" in dev mode)
|
|
351
353
|
*/
|
|
352
354
|
logLevel: PropTypes.oneOf(['debug', 'error', 'info', 'warn', false]),
|
|
353
355
|
|
|
@@ -645,7 +647,7 @@ DataGridRaw.propTypes = {
|
|
|
645
647
|
* @param {GridState} state The new state.
|
|
646
648
|
* @param {MuiEvent<{}>} event The event object.
|
|
647
649
|
* @param {GridCallbackDetails} details Additional details for this callback.
|
|
648
|
-
* @
|
|
650
|
+
* @ignore - do not document.
|
|
649
651
|
*/
|
|
650
652
|
onStateChange: PropTypes.func,
|
|
651
653
|
|
|
@@ -25,6 +25,8 @@ import { useGridDimensions } from '../hooks/features/dimensions/useGridDimension
|
|
|
25
25
|
import { rowsMetaStateInitializer, useGridRowsMeta } from '../hooks/features/rows/useGridRowsMeta';
|
|
26
26
|
import { useGridStatePersistence } from '../hooks/features/statePersistence/useGridStatePersistence';
|
|
27
27
|
import { useGridColumnSpanning } from '../hooks/features/columns/useGridColumnSpanning';
|
|
28
|
+
import { useGridColumnGrouping, columnGroupsStateInitializer } from '../hooks/features/columnGrouping/useGridColumnGrouping';
|
|
29
|
+
import { useGridColumnGroupingPreProcessors } from '../hooks/features/columnGrouping/useGridColumnGroupingPreProcessors';
|
|
28
30
|
export const useDataGridComponent = props => {
|
|
29
31
|
var _props$experimentalFe, _props$experimentalFe2;
|
|
30
32
|
|
|
@@ -33,6 +35,7 @@ export const useDataGridComponent = props => {
|
|
|
33
35
|
* Register all pre-processors called during state initialization here.
|
|
34
36
|
*/
|
|
35
37
|
|
|
38
|
+
useGridColumnGroupingPreProcessors(apiRef, props);
|
|
36
39
|
useGridSelectionPreProcessors(apiRef, props);
|
|
37
40
|
useGridRowsPreProcessors(apiRef);
|
|
38
41
|
/**
|
|
@@ -41,6 +44,7 @@ export const useDataGridComponent = props => {
|
|
|
41
44
|
|
|
42
45
|
useGridInitializeState(selectionStateInitializer, apiRef, props);
|
|
43
46
|
useGridInitializeState(columnsStateInitializer, apiRef, props);
|
|
47
|
+
useGridInitializeState(columnGroupsStateInitializer, apiRef, props);
|
|
44
48
|
useGridInitializeState(rowsStateInitializer, apiRef, props);
|
|
45
49
|
useGridInitializeState((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.newEditingApi ? editingStateInitializer_new : editingStateInitializer_old, apiRef, props);
|
|
46
50
|
useGridInitializeState(focusStateInitializer, apiRef, props);
|
|
@@ -57,6 +61,7 @@ export const useDataGridComponent = props => {
|
|
|
57
61
|
useGridRows(apiRef, props);
|
|
58
62
|
useGridParamsApi(apiRef);
|
|
59
63
|
useGridColumnSpanning(apiRef);
|
|
64
|
+
useGridColumnGrouping(apiRef, props);
|
|
60
65
|
const useGridEditing = (_props$experimentalFe2 = props.experimentalFeatures) != null && _props$experimentalFe2.newEditingApi ? useGridEditing_new : useGridEditing_old;
|
|
61
66
|
useGridEditing(apiRef, props);
|
|
62
67
|
useGridFocus(apiRef, props);
|
package/README.md
CHANGED
|
@@ -21,7 +21,8 @@ This component has the following peer dependencies that you will need to install
|
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"@mui/material": "^5.4.1",
|
|
23
23
|
"@mui/system": "^5.4.1",
|
|
24
|
-
"react": "^17.0.2 || ^18.0.0"
|
|
24
|
+
"react": "^17.0.2 || ^18.0.0",
|
|
25
|
+
"react-dom": "^17.0.2 || ^18.0.0"
|
|
25
26
|
},
|
|
26
27
|
```
|
|
27
28
|
|
|
@@ -18,7 +18,8 @@ export const DataGridColumnHeaders = /*#__PURE__*/React.forwardRef(function Grid
|
|
|
18
18
|
isDragging,
|
|
19
19
|
getRootProps,
|
|
20
20
|
getInnerProps,
|
|
21
|
-
|
|
21
|
+
getColumnHeaders,
|
|
22
|
+
getColumnGroupHeaders
|
|
22
23
|
} = useGridColumnHeaders({
|
|
23
24
|
innerRef
|
|
24
25
|
});
|
|
@@ -27,10 +28,10 @@ export const DataGridColumnHeaders = /*#__PURE__*/React.forwardRef(function Grid
|
|
|
27
28
|
}, getRootProps(other), {
|
|
28
29
|
children: [/*#__PURE__*/_jsx(GridScrollArea, {
|
|
29
30
|
scrollDirection: "left"
|
|
30
|
-
}), /*#__PURE__*/
|
|
31
|
+
}), /*#__PURE__*/_jsxs(GridColumnHeadersInner, _extends({
|
|
31
32
|
isDragging: isDragging
|
|
32
33
|
}, getInnerProps(), {
|
|
33
|
-
children:
|
|
34
|
+
children: [getColumnGroupHeaders(), getColumnHeaders()]
|
|
34
35
|
})), /*#__PURE__*/_jsx(GridScrollArea, {
|
|
35
36
|
scrollDirection: "right"
|
|
36
37
|
})]
|
|
@@ -8,6 +8,7 @@ export interface ErrorBoundaryProps {
|
|
|
8
8
|
api: React.MutableRefObject<GridApiCommunity>;
|
|
9
9
|
hasError: boolean;
|
|
10
10
|
componentProps?: any[];
|
|
11
|
+
children?: React.ReactNode;
|
|
11
12
|
}
|
|
12
13
|
export declare class ErrorBoundary extends React.Component<ErrorBoundaryProps, any> {
|
|
13
14
|
static getDerivedStateFromError(error: Error): {
|
|
@@ -106,6 +106,13 @@ process.env.NODE_ENV !== "production" ? GridAutoSizer.propTypes = {
|
|
|
106
106
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
107
107
|
// ----------------------------------------------------------------------
|
|
108
108
|
|
|
109
|
+
/**
|
|
110
|
+
* Function responsible for rendering children.
|
|
111
|
+
* @param {AutoSizerSize} size The grid's size.
|
|
112
|
+
* @returns {React.ReactNode} The children to render.
|
|
113
|
+
*/
|
|
114
|
+
children: PropTypes.func.isRequired,
|
|
115
|
+
|
|
109
116
|
/**
|
|
110
117
|
* Default height to use for initial render; useful for SSR.
|
|
111
118
|
* @default null
|
package/components/GridRow.js
CHANGED
|
@@ -22,6 +22,7 @@ import { GRID_ACTIONS_COLUMN_TYPE } from '../colDef/gridActionsColDef';
|
|
|
22
22
|
import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../constants/gridDetailPanelToggleField';
|
|
23
23
|
import { gridSortModelSelector } from '../hooks/features/sorting/gridSortingSelector';
|
|
24
24
|
import { gridRowTreeDepthSelector } from '../hooks/features/rows/gridRowsSelector';
|
|
25
|
+
import { gridDensityHeaderGroupingMaxDepthSelector } from '../hooks/features/density/densitySelector';
|
|
25
26
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
26
27
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
27
28
|
|
|
@@ -82,8 +83,6 @@ function GridRow(props) {
|
|
|
82
83
|
} = props,
|
|
83
84
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
84
85
|
|
|
85
|
-
const ariaRowIndex = index + 2; // 1 for the header row and 1 as it's 1-based
|
|
86
|
-
|
|
87
86
|
const apiRef = useGridApiContext();
|
|
88
87
|
const ref = React.useRef(null);
|
|
89
88
|
const rootProps = useGridRootProps();
|
|
@@ -91,6 +90,9 @@ function GridRow(props) {
|
|
|
91
90
|
const columnsTotalWidth = useGridSelector(apiRef, gridColumnsTotalWidthSelector);
|
|
92
91
|
const sortModel = useGridSelector(apiRef, gridSortModelSelector);
|
|
93
92
|
const treeDepth = useGridSelector(apiRef, gridRowTreeDepthSelector);
|
|
93
|
+
const headerGroupingMaxDepth = useGridSelector(apiRef, gridDensityHeaderGroupingMaxDepthSelector);
|
|
94
|
+
const ariaRowIndex = index + headerGroupingMaxDepth + 2; // 1 for the header row and 1 as it's 1-based
|
|
95
|
+
|
|
94
96
|
const {
|
|
95
97
|
hasScrollX,
|
|
96
98
|
hasScrollY
|
|
@@ -359,7 +361,7 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
|
|
|
359
361
|
isLastVisible: PropTypes.bool,
|
|
360
362
|
lastColumnToRender: PropTypes.number.isRequired,
|
|
361
363
|
renderedColumns: PropTypes.arrayOf(PropTypes.object).isRequired,
|
|
362
|
-
row: PropTypes.
|
|
364
|
+
row: PropTypes.object.isRequired,
|
|
363
365
|
rowHeight: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired,
|
|
364
366
|
rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
|
|
365
367
|
selected: PropTypes.bool.isRequired,
|
|
@@ -6,7 +6,7 @@ import { GridAutoSizer } from '../GridAutoSizer';
|
|
|
6
6
|
import { GridOverlays } from './GridOverlays';
|
|
7
7
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
8
8
|
import { useGridSelector } from '../../hooks/utils/useGridSelector';
|
|
9
|
-
import {
|
|
9
|
+
import { gridDensityTotalHeaderHeightSelector } from '../../hooks/features/density/densitySelector';
|
|
10
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
11
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
12
|
|
|
@@ -18,14 +18,17 @@ function GridBody(props) {
|
|
|
18
18
|
} = props;
|
|
19
19
|
const apiRef = useGridApiContext();
|
|
20
20
|
const rootProps = useGridRootProps();
|
|
21
|
-
const
|
|
21
|
+
const totalHeaderHeight = useGridSelector(apiRef, gridDensityTotalHeaderHeightSelector);
|
|
22
22
|
const [isVirtualizationDisabled, setIsVirtualizationDisabled] = React.useState(rootProps.disableVirtualization);
|
|
23
23
|
const disableVirtualization = React.useCallback(() => {
|
|
24
24
|
setIsVirtualizationDisabled(true);
|
|
25
25
|
}, []);
|
|
26
26
|
const enableVirtualization = React.useCallback(() => {
|
|
27
27
|
setIsVirtualizationDisabled(false);
|
|
28
|
-
}, []);
|
|
28
|
+
}, []);
|
|
29
|
+
React.useEffect(() => {
|
|
30
|
+
setIsVirtualizationDisabled(rootProps.disableVirtualization);
|
|
31
|
+
}, [rootProps.disableVirtualization]); // The `useGridApiMethod` hook can't be used here, because it only installs the
|
|
29
32
|
// method if it doesn't exist yet. Once installed, it's never updated again.
|
|
30
33
|
// This break the methods above, since their closure comes from the first time
|
|
31
34
|
// they were installed. Which means that calling `setIsVirtualizationDisabled`
|
|
@@ -60,8 +63,8 @@ function GridBody(props) {
|
|
|
60
63
|
width: size.width,
|
|
61
64
|
// If `autoHeight` is on, there will be no height value.
|
|
62
65
|
// In this case, let the container to grow whatever it needs.
|
|
63
|
-
height: size.height ? size.height -
|
|
64
|
-
marginTop:
|
|
66
|
+
height: size.height ? size.height - totalHeaderHeight : 'auto',
|
|
67
|
+
marginTop: totalHeaderHeight
|
|
65
68
|
};
|
|
66
69
|
return /*#__PURE__*/_jsx(VirtualScrollerComponent, {
|
|
67
70
|
ref: windowRef,
|
|
@@ -6,7 +6,7 @@ import { gridVisibleRowCountSelector } from '../../hooks/features/filter/gridFil
|
|
|
6
6
|
import { gridRowCountSelector, gridRowsLoadingSelector } from '../../hooks/features/rows/gridRowsSelector';
|
|
7
7
|
import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
|
|
8
8
|
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
9
|
-
import {
|
|
9
|
+
import { gridDensityTotalHeaderHeightSelector } from '../../hooks/features/density/densitySelector';
|
|
10
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
11
|
|
|
12
12
|
function GridOverlayWrapper(props) {
|
|
@@ -14,7 +14,7 @@ function GridOverlayWrapper(props) {
|
|
|
14
14
|
|
|
15
15
|
const apiRef = useGridApiContext();
|
|
16
16
|
const rootProps = useGridRootProps();
|
|
17
|
-
const
|
|
17
|
+
const totalHeaderHeight = useGridSelector(apiRef, gridDensityTotalHeaderHeightSelector);
|
|
18
18
|
const [viewportInnerSize, setViewportInnerSize] = React.useState(() => {
|
|
19
19
|
var _apiRef$current$getRo, _apiRef$current$getRo2;
|
|
20
20
|
|
|
@@ -43,11 +43,8 @@ function GridOverlayWrapper(props) {
|
|
|
43
43
|
height,
|
|
44
44
|
width: (_viewportInnerSize$wi = viewportInnerSize == null ? void 0 : viewportInnerSize.width) != null ? _viewportInnerSize$wi : 0,
|
|
45
45
|
position: 'absolute',
|
|
46
|
-
top:
|
|
47
|
-
bottom: height === 'auto' ? 0 : undefined
|
|
48
|
-
zIndex: 4,
|
|
49
|
-
// should be above pinned columns, pinned rows and detail panel
|
|
50
|
-
pointerEvents: 'none'
|
|
46
|
+
top: totalHeaderHeight,
|
|
47
|
+
bottom: height === 'auto' ? 0 : undefined
|
|
51
48
|
}
|
|
52
49
|
}, props));
|
|
53
50
|
}
|
|
@@ -43,7 +43,7 @@ declare const GridActionsCellItem: React.ForwardRefExoticComponent<(Pick<{
|
|
|
43
43
|
touchRippleRef?: React.Ref<import("@mui/material/ButtonBase/TouchRipple").TouchRippleActions> | undefined;
|
|
44
44
|
}, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "key" | keyof React.ButtonHTMLAttributes<HTMLButtonElement>> & {
|
|
45
45
|
ref?: ((instance: HTMLButtonElement | null) => void) | React.RefObject<HTMLButtonElement> | null | undefined;
|
|
46
|
-
}, "color" | "size" | "disabled" | "
|
|
46
|
+
}, "color" | "size" | "disabled" | "action" | "tabIndex" | "children" | "sx" | keyof import("@mui/material/OverridableComponent").CommonProps | "onFocusVisible" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge">, "hidden" | "color" | "size" | "icon" | "translate" | "disabled" | "form" | "label" | "slot" | "title" | "key" | "action" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "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-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "type" | "value" | "children" | "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" | "onDoubleClick" | "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" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "sx" | keyof import("@mui/material/OverridableComponent").CommonProps | "onFocusVisible" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge" | "showInMenu"> | Pick<{
|
|
47
47
|
label: string;
|
|
48
48
|
icon?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
|
|
49
49
|
} & {
|
|
@@ -75,5 +75,5 @@ declare const GridActionsCellItem: React.ForwardRefExoticComponent<(Pick<{
|
|
|
75
75
|
touchRippleRef?: React.Ref<import("@mui/material/ButtonBase/TouchRipple").TouchRippleActions> | undefined;
|
|
76
76
|
}, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "key" | keyof React.LiHTMLAttributes<HTMLLIElement>> & {
|
|
77
77
|
ref?: ((instance: HTMLLIElement | null) => void) | React.RefObject<HTMLLIElement> | null | undefined;
|
|
78
|
-
}, "dense" | "disabled" | "
|
|
78
|
+
}, "dense" | "disabled" | "action" | "autoFocus" | "tabIndex" | "selected" | "children" | "sx" | "disableGutters" | "divider" | keyof import("@mui/material/OverridableComponent").CommonProps | "onFocusVisible" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "TouchRippleProps" | "touchRippleRef">, "hidden" | "color" | "dense" | "icon" | "translate" | "disabled" | "label" | "slot" | "title" | "key" | "action" | "autoFocus" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "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-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "selected" | "value" | "children" | "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" | "onDoubleClick" | "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" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "sx" | "disableGutters" | "divider" | keyof import("@mui/material/OverridableComponent").CommonProps | "onFocusVisible" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "TouchRippleProps" | "touchRippleRef" | "showInMenu">) & React.RefAttributes<HTMLButtonElement>>;
|
|
79
79
|
export { GridActionsCellItem };
|
|
@@ -81,7 +81,7 @@ function GridEditDateCell(props) {
|
|
|
81
81
|
const [date, time] = newFormattedDate.split('T');
|
|
82
82
|
const [year, month, day] = date.split('-');
|
|
83
83
|
newParsedDate = new Date();
|
|
84
|
-
newParsedDate.setFullYear(year, Number(month) - 1, day);
|
|
84
|
+
newParsedDate.setFullYear(Number(year), Number(month) - 1, Number(day));
|
|
85
85
|
newParsedDate.setHours(0, 0, 0, 0);
|
|
86
86
|
|
|
87
87
|
if (time) {
|
|
@@ -23,6 +23,10 @@ const renderSingleSelectOptions = (option, OptionComponent) => {
|
|
|
23
23
|
}, key);
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
+
function isKeyboardEvent(event) {
|
|
27
|
+
return !!event.key;
|
|
28
|
+
}
|
|
29
|
+
|
|
26
30
|
function GridEditSingleSelectCell(props) {
|
|
27
31
|
var _rootProps$components, _baseSelectProps$nati, _rootProps$components2;
|
|
28
32
|
|
|
@@ -142,7 +146,11 @@ function GridEditSingleSelectCell(props) {
|
|
|
142
146
|
}
|
|
143
147
|
};
|
|
144
148
|
|
|
145
|
-
const handleOpen =
|
|
149
|
+
const handleOpen = event => {
|
|
150
|
+
if (isKeyboardEvent(event) && event.key === 'Enter') {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
|
|
146
154
|
setOpen(true);
|
|
147
155
|
};
|
|
148
156
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface GridColumnGroupHeaderProps {
|
|
3
|
+
groupId: string | null;
|
|
4
|
+
width: number;
|
|
5
|
+
fields: string[];
|
|
6
|
+
colIndex: number;
|
|
7
|
+
isLastColumn: boolean;
|
|
8
|
+
extendRowFullWidth: boolean;
|
|
9
|
+
depth: number;
|
|
10
|
+
maxDepth: number;
|
|
11
|
+
height: number;
|
|
12
|
+
}
|
|
13
|
+
declare function GridColumnGroupHeader(props: GridColumnGroupHeaderProps): JSX.Element;
|
|
14
|
+
export { GridColumnGroupHeader };
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { unstable_useId as useId } from '@mui/utils';
|
|
4
|
+
import { unstable_composeClasses as composeClasses } from '@mui/material';
|
|
5
|
+
import { getDataGridUtilityClass } from '../../constants/gridClasses';
|
|
6
|
+
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
|
|
7
|
+
import { gridColumnGroupsLookupSelector } from '../../hooks/features/columnGrouping/gridColumnGroupsSelector';
|
|
8
|
+
import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
|
|
9
|
+
import { useGridSelector } from '../../hooks/utils/useGridSelector';
|
|
10
|
+
import { GridGenericColumnHeaderItem } from './GridGenericColumnHeaderItem';
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
|
|
13
|
+
const useUtilityClasses = ownerState => {
|
|
14
|
+
const {
|
|
15
|
+
classes,
|
|
16
|
+
headerAlign,
|
|
17
|
+
isDragging,
|
|
18
|
+
showRightBorder,
|
|
19
|
+
showColumnBorder,
|
|
20
|
+
groupId
|
|
21
|
+
} = ownerState;
|
|
22
|
+
const slots = {
|
|
23
|
+
root: ['columnHeader', headerAlign === 'left' && 'columnHeader--alignLeft', headerAlign === 'center' && 'columnHeader--alignCenter', headerAlign === 'right' && 'columnHeader--alignRight', isDragging && 'columnHeader--moving', showRightBorder && 'withBorder', showColumnBorder && 'columnHeader--showColumnBorder', groupId === null ? 'columnHeader--emptyGroup' : 'columnHeader--filledGroup'],
|
|
24
|
+
draggableContainer: ['columnHeaderDraggableContainer'],
|
|
25
|
+
titleContainer: ['columnHeaderTitleContainer'],
|
|
26
|
+
titleContainerContent: ['columnHeaderTitleContainerContent']
|
|
27
|
+
};
|
|
28
|
+
return composeClasses(slots, getDataGridUtilityClass, classes);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
function GridColumnGroupHeader(props) {
|
|
32
|
+
var _apiRef$current$getRo, _columnGroupsLookup$g;
|
|
33
|
+
|
|
34
|
+
const {
|
|
35
|
+
groupId,
|
|
36
|
+
width,
|
|
37
|
+
depth,
|
|
38
|
+
maxDepth,
|
|
39
|
+
fields,
|
|
40
|
+
height,
|
|
41
|
+
colIndex,
|
|
42
|
+
isLastColumn,
|
|
43
|
+
extendRowFullWidth
|
|
44
|
+
} = props;
|
|
45
|
+
const rootProps = useGridRootProps();
|
|
46
|
+
const apiRef = useGridApiContext();
|
|
47
|
+
const columnGroupsLookup = useGridSelector(apiRef, gridColumnGroupsLookupSelector);
|
|
48
|
+
const {
|
|
49
|
+
hasScrollX,
|
|
50
|
+
hasScrollY
|
|
51
|
+
} = (_apiRef$current$getRo = apiRef.current.getRootDimensions()) != null ? _apiRef$current$getRo : {
|
|
52
|
+
hasScrollX: false,
|
|
53
|
+
hasScrollY: false
|
|
54
|
+
};
|
|
55
|
+
const group = groupId ? columnGroupsLookup[groupId] : {};
|
|
56
|
+
const {
|
|
57
|
+
headerName = groupId != null ? groupId : '',
|
|
58
|
+
description = '',
|
|
59
|
+
headerAlign = undefined
|
|
60
|
+
} = group;
|
|
61
|
+
let headerComponent;
|
|
62
|
+
const render = groupId && ((_columnGroupsLookup$g = columnGroupsLookup[groupId]) == null ? void 0 : _columnGroupsLookup$g.renderHeaderGroup);
|
|
63
|
+
const renderParams = {
|
|
64
|
+
groupId,
|
|
65
|
+
headerName,
|
|
66
|
+
description,
|
|
67
|
+
depth,
|
|
68
|
+
maxDepth,
|
|
69
|
+
fields,
|
|
70
|
+
colIndex,
|
|
71
|
+
isLastColumn
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
if (groupId && render) {
|
|
75
|
+
headerComponent = render(renderParams);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const removeLastBorderRight = isLastColumn && hasScrollX && !hasScrollY;
|
|
79
|
+
const showRightBorder = !isLastColumn ? rootProps.showColumnRightBorder : !removeLastBorderRight && !extendRowFullWidth;
|
|
80
|
+
const showColumnBorder = rootProps.showColumnRightBorder;
|
|
81
|
+
|
|
82
|
+
const ownerState = _extends({}, props, {
|
|
83
|
+
classes: rootProps.classes,
|
|
84
|
+
showRightBorder,
|
|
85
|
+
showColumnBorder,
|
|
86
|
+
headerAlign,
|
|
87
|
+
depth,
|
|
88
|
+
isDragging: false
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
const label = headerName != null ? headerName : groupId;
|
|
92
|
+
const id = useId();
|
|
93
|
+
const elementId = groupId === null ? `empty-group-cell-${id}` : groupId;
|
|
94
|
+
const classes = useUtilityClasses(ownerState);
|
|
95
|
+
const headerClassName = typeof group.headerClassName === 'function' ? group.headerClassName(renderParams) : group.headerClassName;
|
|
96
|
+
return /*#__PURE__*/_jsx(GridGenericColumnHeaderItem, {
|
|
97
|
+
classes: classes,
|
|
98
|
+
columnMenuOpen: false,
|
|
99
|
+
colIndex: colIndex,
|
|
100
|
+
height: height,
|
|
101
|
+
isResizing: false,
|
|
102
|
+
sortDirection: null,
|
|
103
|
+
hasFocus: false,
|
|
104
|
+
tabIndex: -1,
|
|
105
|
+
isDraggable: false,
|
|
106
|
+
headerComponent: headerComponent,
|
|
107
|
+
headerClassName: headerClassName,
|
|
108
|
+
description: description,
|
|
109
|
+
elementId: elementId,
|
|
110
|
+
width: width,
|
|
111
|
+
columnMenuIconButton: null,
|
|
112
|
+
columnTitleIconButtons: null,
|
|
113
|
+
resizable: false,
|
|
114
|
+
label: label,
|
|
115
|
+
"aria-colspan": fields.length // The fields are wrapped between |-...-| to avoid confusion between fields "id" and "id2" when using selector data-fields~=
|
|
116
|
+
,
|
|
117
|
+
"data-fields": `|-${fields.join('-|-')}-|`,
|
|
118
|
+
disableHeaderSeparator: true
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export { GridColumnGroupHeader };
|