@mui/x-data-grid 7.23.6 → 7.24.1
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 +150 -0
- package/DataGrid/DataGrid.js +4 -5
- package/DataGrid/useDataGridComponent.d.ts +2 -1
- package/DataGrid/useDataGridComponent.js +1 -1
- package/components/GridHeaders.js +2 -2
- package/components/GridRow.d.ts +5 -9
- package/components/GridRow.js +28 -105
- package/components/GridSkeletonLoadingOverlay.js +18 -18
- package/components/cell/GridCell.d.ts +9 -16
- package/components/cell/GridCell.js +17 -35
- package/components/columnHeaders/GridColumnGroupHeader.d.ts +5 -5
- package/components/columnHeaders/GridColumnGroupHeader.js +7 -10
- package/components/columnHeaders/GridColumnHeaderFilterIconButton.d.ts +3 -3
- package/components/columnHeaders/GridColumnHeaderFilterIconButton.js +21 -7
- package/components/columnHeaders/GridColumnHeaderItem.d.ts +5 -5
- package/components/columnHeaders/GridColumnHeaderItem.js +13 -12
- package/components/columnSelection/GridCellCheckboxRenderer.js +2 -2
- package/components/containers/GridRoot.d.ts +2 -2
- package/components/containers/GridRoot.js +14 -6
- package/components/containers/GridRootStyles.js +1 -0
- package/components/panel/GridPanel.js +2 -1
- package/components/panel/filterPanel/GridFilterInputValueProps.d.ts +2 -1
- package/components/toolbar/GridToolbarColumnsButton.js +6 -1
- package/components/toolbar/GridToolbarFilterButton.js +6 -1
- package/components/virtualization/GridVirtualScrollbar.js +11 -12
- package/components/virtualization/GridVirtualScroller.js +4 -4
- package/context/GridContextProvider.d.ts +2 -1
- package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +2 -2
- package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +2 -2
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +2 -2
- package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.d.ts +2 -2
- package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +2 -2
- package/hooks/core/useGridApiInitialization.d.ts +2 -2
- package/hooks/core/useGridInitialization.d.ts +2 -2
- package/hooks/core/useGridIsRtl.d.ts +2 -2
- package/hooks/core/useGridLocaleText.d.ts +2 -2
- package/hooks/core/useGridLoggerFactory.d.ts +2 -2
- package/hooks/core/useGridRefs.d.ts +2 -2
- package/hooks/core/useGridStateInitialization.d.ts +2 -2
- package/hooks/features/clipboard/useGridClipboard.d.ts +2 -2
- package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +2 -2
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +5 -7
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +34 -76
- package/hooks/features/columnMenu/useGridColumnMenu.d.ts +2 -2
- package/hooks/features/columnMenu/useGridColumnMenu.js +0 -2
- package/hooks/features/columnResize/useGridColumnResize.d.ts +2 -2
- package/hooks/features/columnResize/useGridColumnResize.js +4 -2
- package/hooks/features/columns/gridColumnsUtils.d.ts +4 -4
- package/hooks/features/columns/useGridColumnSpanning.d.ts +2 -2
- package/hooks/features/columns/useGridColumns.d.ts +2 -2
- package/hooks/features/density/useGridDensity.d.ts +2 -2
- package/hooks/features/dimensions/useGridDimensions.d.ts +2 -2
- package/hooks/features/dimensions/useGridDimensions.js +1 -3
- package/hooks/features/editing/useGridCellEditing.d.ts +2 -2
- package/hooks/features/editing/useGridEditing.d.ts +2 -2
- package/hooks/features/editing/useGridRowEditing.d.ts +2 -2
- package/hooks/features/events/useGridEvents.d.ts +2 -2
- package/hooks/features/export/serializers/csvSerializer.d.ts +2 -1
- package/hooks/features/export/useGridCsvExport.d.ts +2 -2
- package/hooks/features/export/useGridPrintExport.d.ts +2 -2
- package/hooks/features/export/utils.d.ts +2 -2
- package/hooks/features/filter/gridFilterSelector.js +6 -1
- package/hooks/features/filter/gridFilterUtils.d.ts +7 -7
- package/hooks/features/filter/gridFilterUtils.js +3 -3
- package/hooks/features/filter/useGridFilter.d.ts +2 -2
- package/hooks/features/focus/useGridFocus.d.ts +2 -2
- package/hooks/features/headerFiltering/useGridHeaderFiltering.d.ts +2 -2
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +2 -2
- package/hooks/features/keyboardNavigation/utils.d.ts +3 -3
- package/hooks/features/listView/useGridListView.d.ts +2 -2
- package/hooks/features/pagination/gridPaginationInterfaces.d.ts +3 -0
- package/hooks/features/pagination/gridPaginationSelector.d.ts +20 -1
- package/hooks/features/pagination/gridPaginationSelector.js +39 -1
- package/hooks/features/pagination/useGridPagination.d.ts +3 -3
- package/hooks/features/pagination/useGridPagination.js +5 -3
- package/hooks/features/pagination/useGridPaginationMeta.d.ts +2 -2
- package/hooks/features/pagination/useGridPaginationModel.d.ts +2 -2
- package/hooks/features/pagination/useGridPaginationModel.js +23 -1
- package/hooks/features/pagination/useGridRowCount.d.ts +2 -2
- package/hooks/features/preferencesPanel/gridPreferencePanelSelector.d.ts +1 -0
- package/hooks/features/preferencesPanel/gridPreferencePanelSelector.js +8 -1
- package/hooks/features/preferencesPanel/index.d.ts +1 -1
- package/hooks/features/preferencesPanel/index.js +1 -1
- package/hooks/features/preferencesPanel/useGridPreferencesPanel.d.ts +2 -2
- package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +14 -38
- package/hooks/features/rowSelection/useGridRowSelection.d.ts +2 -2
- package/hooks/features/rowSelection/useGridRowSelectionPreProcessors.d.ts +2 -2
- package/hooks/features/rowSelection/utils.d.ts +3 -2
- package/hooks/features/rows/gridRowSpanningUtils.d.ts +2 -2
- package/hooks/features/rows/gridRowsSelector.js +1 -1
- package/hooks/features/rows/gridRowsUtils.d.ts +4 -4
- package/hooks/features/rows/useGridParamsApi.d.ts +2 -2
- package/hooks/features/rows/useGridRowSpanning.d.ts +2 -2
- package/hooks/features/rows/useGridRows.d.ts +2 -2
- package/hooks/features/rows/useGridRows.js +2 -2
- package/hooks/features/rows/useGridRowsMeta.d.ts +2 -2
- package/hooks/features/rows/useGridRowsPreProcessors.d.ts +2 -2
- package/hooks/features/scroll/useGridScroll.d.ts +2 -2
- package/hooks/features/sorting/gridSortingUtils.d.ts +3 -3
- package/hooks/features/sorting/gridSortingUtils.js +2 -2
- package/hooks/features/sorting/useGridSorting.d.ts +2 -2
- package/hooks/features/statePersistence/useGridStatePersistence.d.ts +2 -2
- package/hooks/features/virtualization/gridFocusedVirtualCellSelector.d.ts +6 -0
- package/hooks/features/virtualization/gridFocusedVirtualCellSelector.js +42 -0
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -1
- package/hooks/features/virtualization/useGridVirtualScroller.js +92 -50
- package/hooks/features/virtualization/useGridVirtualization.d.ts +2 -2
- package/hooks/utils/useGridApiContext.d.ts +2 -2
- package/hooks/utils/useGridApiEventHandler.d.ts +4 -4
- package/hooks/utils/useGridApiMethod.d.ts +2 -2
- package/hooks/utils/useGridApiRef.d.ts +2 -2
- package/hooks/utils/useGridApiRef.js +3 -1
- package/hooks/utils/useGridInitializeState.d.ts +3 -3
- package/hooks/utils/useGridLogger.d.ts +2 -2
- package/hooks/utils/useGridNativeEventListener.d.ts +2 -1
- package/hooks/utils/useGridPrivateApiContext.d.ts +2 -1
- package/hooks/utils/useGridSelector.d.ts +3 -3
- package/hooks/utils/useGridVisibleRows.d.ts +8 -6
- package/hooks/utils/useGridVisibleRows.js +5 -28
- package/index.js +1 -1
- package/internals/constants.d.ts +6 -0
- package/internals/constants.js +8 -1
- package/internals/index.d.ts +1 -0
- package/internals/index.js +1 -0
- package/internals/utils/attachPinnedStyle.d.ts +2 -0
- package/internals/utils/attachPinnedStyle.js +9 -0
- package/internals/utils/getPinnedCellOffset.d.ts +3 -3
- package/internals/utils/getPinnedCellOffset.js +6 -7
- package/internals/utils/index.d.ts +1 -0
- package/internals/utils/index.js +2 -1
- package/locales/faIR.js +5 -6
- package/locales/urPK.js +9 -10
- package/models/colDef/gridColDef.d.ts +9 -8
- package/models/events/gridEventLookup.d.ts +6 -1
- package/models/gridExport.d.ts +2 -2
- package/models/gridFilterOperator.d.ts +2 -1
- package/models/gridStateCommunity.d.ts +4 -0
- package/models/props/DataGridProps.d.ts +2 -1
- package/modern/DataGrid/DataGrid.js +4 -5
- package/modern/DataGrid/useDataGridComponent.js +1 -1
- package/modern/components/GridHeaders.js +2 -2
- package/modern/components/GridRow.js +28 -105
- package/modern/components/GridSkeletonLoadingOverlay.js +18 -18
- package/modern/components/cell/GridCell.js +17 -35
- package/modern/components/columnHeaders/GridColumnGroupHeader.js +7 -10
- package/modern/components/columnHeaders/GridColumnHeaderFilterIconButton.js +21 -7
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +13 -12
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -2
- package/modern/components/containers/GridRoot.js +14 -6
- package/modern/components/containers/GridRootStyles.js +1 -0
- package/modern/components/panel/GridPanel.js +2 -1
- package/modern/components/toolbar/GridToolbarColumnsButton.js +6 -1
- package/modern/components/toolbar/GridToolbarFilterButton.js +6 -1
- package/modern/components/virtualization/GridVirtualScrollbar.js +11 -12
- package/modern/components/virtualization/GridVirtualScroller.js +4 -4
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +34 -76
- package/modern/hooks/features/columnMenu/useGridColumnMenu.js +0 -2
- package/modern/hooks/features/columnResize/useGridColumnResize.js +4 -2
- package/modern/hooks/features/dimensions/useGridDimensions.js +1 -3
- package/modern/hooks/features/filter/gridFilterSelector.js +6 -1
- package/modern/hooks/features/filter/gridFilterUtils.js +3 -3
- package/modern/hooks/features/pagination/gridPaginationSelector.js +39 -1
- package/modern/hooks/features/pagination/useGridPagination.js +5 -3
- package/modern/hooks/features/pagination/useGridPaginationModel.js +23 -1
- package/modern/hooks/features/preferencesPanel/gridPreferencePanelSelector.js +8 -1
- package/modern/hooks/features/preferencesPanel/index.js +1 -1
- package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +14 -38
- package/modern/hooks/features/rows/gridRowsSelector.js +1 -1
- package/modern/hooks/features/rows/useGridRows.js +2 -2
- package/modern/hooks/features/sorting/gridSortingUtils.js +2 -2
- package/modern/hooks/features/virtualization/gridFocusedVirtualCellSelector.js +42 -0
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +92 -50
- package/modern/hooks/utils/useGridApiRef.js +3 -1
- package/modern/hooks/utils/useGridVisibleRows.js +5 -28
- package/modern/index.js +1 -1
- package/modern/internals/constants.js +8 -1
- package/modern/internals/index.js +1 -0
- package/modern/internals/utils/attachPinnedStyle.js +9 -0
- package/modern/internals/utils/getPinnedCellOffset.js +6 -7
- package/modern/internals/utils/index.js +2 -1
- package/modern/locales/faIR.js +5 -6
- package/modern/locales/urPK.js +9 -10
- package/modern/utils/cellBorderUtils.js +5 -5
- package/modern/utils/domUtils.js +7 -2
- package/modern/utils/isJSDOM.js +1 -0
- package/modern/utils/rtlFlipSide.js +22 -0
- package/node/DataGrid/DataGrid.js +2 -3
- package/node/DataGrid/useDataGridComponent.js +1 -1
- package/node/components/GridHeaders.js +2 -2
- package/node/components/GridRow.js +27 -104
- package/node/components/GridSkeletonLoadingOverlay.js +17 -17
- package/node/components/cell/GridCell.js +18 -36
- package/node/components/columnHeaders/GridColumnGroupHeader.js +7 -10
- package/node/components/columnHeaders/GridColumnHeaderFilterIconButton.js +20 -6
- package/node/components/columnHeaders/GridColumnHeaderItem.js +13 -12
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +1 -1
- package/node/components/containers/GridRoot.js +14 -6
- package/node/components/containers/GridRootStyles.js +1 -0
- package/node/components/panel/GridPanel.js +2 -1
- package/node/components/toolbar/GridToolbarColumnsButton.js +6 -1
- package/node/components/toolbar/GridToolbarFilterButton.js +6 -1
- package/node/components/virtualization/GridVirtualScrollbar.js +11 -12
- package/node/components/virtualization/GridVirtualScroller.js +4 -4
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +32 -74
- package/node/hooks/features/columnMenu/useGridColumnMenu.js +0 -2
- package/node/hooks/features/columnResize/useGridColumnResize.js +4 -2
- package/node/hooks/features/dimensions/useGridDimensions.js +3 -5
- package/node/hooks/features/filter/gridFilterSelector.js +6 -1
- package/node/hooks/features/filter/gridFilterUtils.js +3 -3
- package/node/hooks/features/pagination/gridPaginationSelector.js +41 -3
- package/node/hooks/features/pagination/useGridPagination.js +5 -3
- package/node/hooks/features/pagination/useGridPaginationModel.js +23 -1
- package/node/hooks/features/preferencesPanel/gridPreferencePanelSelector.js +9 -2
- package/node/hooks/features/preferencesPanel/index.js +11 -10
- package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +14 -38
- package/node/hooks/features/rows/gridRowsSelector.js +1 -1
- package/node/hooks/features/rows/useGridRows.js +1 -1
- package/node/hooks/features/sorting/gridSortingUtils.js +2 -2
- package/node/hooks/features/virtualization/gridFocusedVirtualCellSelector.js +49 -0
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +94 -52
- package/node/hooks/utils/useGridApiRef.js +3 -1
- package/node/hooks/utils/useGridVisibleRows.js +3 -28
- package/node/index.js +1 -1
- package/node/internals/constants.js +9 -2
- package/node/internals/index.js +12 -0
- package/node/internals/utils/attachPinnedStyle.js +15 -0
- package/node/internals/utils/getPinnedCellOffset.js +6 -7
- package/node/internals/utils/index.js +11 -0
- package/node/locales/faIR.js +5 -6
- package/node/locales/urPK.js +9 -10
- package/node/utils/cellBorderUtils.js +5 -5
- package/node/utils/domUtils.js +7 -2
- package/node/utils/isJSDOM.js +7 -0
- package/node/utils/rtlFlipSide.js +29 -0
- package/package.json +2 -2
- package/utils/cellBorderUtils.d.ts +3 -3
- package/utils/cellBorderUtils.js +5 -5
- package/utils/createSelector.d.ts +3 -3
- package/utils/domUtils.js +7 -2
- package/utils/getPublicApiRef.d.ts +2 -1
- package/utils/isJSDOM.d.ts +1 -0
- package/utils/isJSDOM.js +1 -0
- package/utils/rtlFlipSide.d.ts +2 -0
- package/utils/rtlFlipSide.js +22 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,156 @@
|
|
|
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.24.1
|
|
7
|
+
|
|
8
|
+
_Jan 24, 2025_
|
|
9
|
+
|
|
10
|
+
We'd like to offer a big thanks to the 7 contributors who made this release possible. Here are some highlights ✨:
|
|
11
|
+
|
|
12
|
+
- 🐞 Bugfixes
|
|
13
|
+
- 🌍 Improve Persian (fa-IR) locale on the Data Grid
|
|
14
|
+
|
|
15
|
+
Special thanks go out to the community contributors who have helped make this release possible:
|
|
16
|
+
@mostafaRoosta74, @lauri865.
|
|
17
|
+
Following are all team members who have contributed to this release:
|
|
18
|
+
@alexfauquette, @JCQuintas, @cherniavskii, @LukasTy, @arminmeh.
|
|
19
|
+
|
|
20
|
+
### Data Grid
|
|
21
|
+
|
|
22
|
+
#### `@mui/x-data-grid@7.24.1`
|
|
23
|
+
|
|
24
|
+
- [DataGrid] Fix toggling preference panel from toolbar (#16276) @lauri865
|
|
25
|
+
- [DataGrid] Only try to mount filter button if there are filters present (#16269) @lauri865
|
|
26
|
+
- [DataGrid] Revert `apiRef` to be `MutableRefObject` for React versions < 19 (#16320) @arminmeh
|
|
27
|
+
- [l10n] Improve Persian (fa-IR) locale (#15964) @mostafaRoosta74
|
|
28
|
+
|
|
29
|
+
#### `@mui/x-data-grid-pro@7.24.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
30
|
+
|
|
31
|
+
Same changes as in `@mui/x-data-grid@7.24.1`.
|
|
32
|
+
|
|
33
|
+
#### `@mui/x-data-grid-premium@7.24.1` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
34
|
+
|
|
35
|
+
Same changes as in `@mui/x-data-grid-pro@7.24.1`.
|
|
36
|
+
|
|
37
|
+
### Date and Time Pickers
|
|
38
|
+
|
|
39
|
+
#### `@mui/x-date-pickers@7.24.1`
|
|
40
|
+
|
|
41
|
+
- [fields] Reset `all` selected state on section edit (#16232) @LukasTy
|
|
42
|
+
|
|
43
|
+
#### `@mui/x-date-pickers-pro@7.24.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
44
|
+
|
|
45
|
+
Same changes as in `@mui/x-date-pickers@7.24.1`.
|
|
46
|
+
|
|
47
|
+
### Charts
|
|
48
|
+
|
|
49
|
+
#### `@mui/x-charts@7.24.1`
|
|
50
|
+
|
|
51
|
+
- [charts] Handle case where gradient stop `offset` could be `Infinite` (@JCQuintas) (#16309) @JCQuintas
|
|
52
|
+
|
|
53
|
+
#### `@mui/x-charts-pro@7.24.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
54
|
+
|
|
55
|
+
Same changes as in `@mui/x-charts@7.24.1`.
|
|
56
|
+
|
|
57
|
+
### Tree View
|
|
58
|
+
|
|
59
|
+
#### `@mui/x-tree-view@7.24.1`
|
|
60
|
+
|
|
61
|
+
Internal changes.
|
|
62
|
+
|
|
63
|
+
#### `@mui/x-tree-view-pro@7.24.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
64
|
+
|
|
65
|
+
Same changes as in `@mui/x-tree-view@7.24.1`.
|
|
66
|
+
|
|
67
|
+
### Docs
|
|
68
|
+
|
|
69
|
+
- [docs] Fix `domainLimit` definition (#16271) @alexfauquette
|
|
70
|
+
|
|
71
|
+
### Core
|
|
72
|
+
|
|
73
|
+
- [core] Make `@mui/x-internals` a dependency of `@mui/x-license` (#16265) @alexfauquette
|
|
74
|
+
- [test] Fix flaky column pinning tests (#16228) @cherniavskii
|
|
75
|
+
- [test] Fix flaky tests (#16264) @lauri865
|
|
76
|
+
|
|
77
|
+
## 7.24.0
|
|
78
|
+
|
|
79
|
+
_Jan 17, 2025_
|
|
80
|
+
|
|
81
|
+
We'd like to offer a big thanks to the 8 contributors who made this release possible. Here are some highlights ✨:
|
|
82
|
+
|
|
83
|
+
- 🔄 Data Grid [Scroll restoration](https://next.mui.com/x/react-data-grid/scrolling/#scroll-restoration)
|
|
84
|
+
- 🐞 Bugfixes
|
|
85
|
+
|
|
86
|
+
Special thanks go out to the community contributors who have helped make this release possible:
|
|
87
|
+
@lauri865, @AxharKhan.
|
|
88
|
+
Following are all team members who have contributed to this release:
|
|
89
|
+
@KenanYusuf, @arminmeh, @cherniavskii, @michelengelen, @samuelsycamore, @LukasTy.
|
|
90
|
+
|
|
91
|
+
<!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
|
|
92
|
+
|
|
93
|
+
### Data Grid
|
|
94
|
+
|
|
95
|
+
#### `@mui/x-data-grid@7.24.0`
|
|
96
|
+
|
|
97
|
+
- [DataGrid] Fix resizing right pinned column (#16193) @KenanYusuf
|
|
98
|
+
- [DataGrid] Improve scrollbar deadzone with overlay scrollbars (#16212) @lauri865
|
|
99
|
+
- [DataGrid] Scroll restoration (#16208) @lauri865
|
|
100
|
+
- [DataGrid] Fix row, cell and header memoizations (#16195) @lauri865
|
|
101
|
+
- [l10n] Improve Urdu (ur-PK) locale (#16081) @AxharKhan
|
|
102
|
+
|
|
103
|
+
#### `@mui/x-data-grid-pro@7.24.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
104
|
+
|
|
105
|
+
Same changes as in `@mui/x-data-grid@7.24.0`, plus:
|
|
106
|
+
|
|
107
|
+
- [DataGridPro] Add test for column pinning with disabled column virtualization (#16196) @cherniavskii
|
|
108
|
+
- [DataGridPro] Fix width of right-pinned column group during resize (#16207) @cherniavskii
|
|
109
|
+
|
|
110
|
+
#### `@mui/x-data-grid-premium@7.24.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
111
|
+
|
|
112
|
+
Same changes as in `@mui/x-data-grid-pro@7.24.0`.
|
|
113
|
+
|
|
114
|
+
### Date and Time Pickers
|
|
115
|
+
|
|
116
|
+
#### `@mui/x-date-pickers@7.24.0`
|
|
117
|
+
|
|
118
|
+
Internal changes.
|
|
119
|
+
|
|
120
|
+
#### `@mui/x-date-pickers-pro@7.24.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
121
|
+
|
|
122
|
+
Same changes as in `@mui/x-date-pickers@7.24.0`.
|
|
123
|
+
|
|
124
|
+
### Charts
|
|
125
|
+
|
|
126
|
+
#### `@mui/x-charts@7.24.0`
|
|
127
|
+
|
|
128
|
+
Internal changes.
|
|
129
|
+
|
|
130
|
+
#### `@mui/x-charts-pro@7.24.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
131
|
+
|
|
132
|
+
Same changes as in `@mui/x-charts@7.24.0`.
|
|
133
|
+
|
|
134
|
+
### Tree View
|
|
135
|
+
|
|
136
|
+
#### `@mui/x-tree-view@7.24.0`
|
|
137
|
+
|
|
138
|
+
Internal changes.
|
|
139
|
+
|
|
140
|
+
#### `@mui/x-tree-view-pro@7.24.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
141
|
+
|
|
142
|
+
Same changes as in `@mui/x-tree-view@7.24.0`.
|
|
143
|
+
|
|
144
|
+
### Docs
|
|
145
|
+
|
|
146
|
+
- [docs] Copyedit the Data Grid cell selection page (#16213) @samuelsycamore
|
|
147
|
+
- [docs] Fix demo rendering issue on Codesandbox (#16129) @arminmeh
|
|
148
|
+
|
|
149
|
+
### Core
|
|
150
|
+
|
|
151
|
+
- [core] Type all references as `RefObject` (#16125) @arminmeh
|
|
152
|
+
- [code-infra] Refactor `react` and `react-dom` definitions to simplify dep resolving (#16214) @LukasTy
|
|
153
|
+
- [infra] Improve cherry-pick action target list (#16188) @michelengelen
|
|
154
|
+
- [test] Fix flaky column pinning unit test (#16209) @cherniavskii
|
|
155
|
+
|
|
6
156
|
## 7.23.6
|
|
7
157
|
|
|
8
158
|
_Jan 9, 2025_
|
package/DataGrid/DataGrid.js
CHANGED
|
@@ -4,14 +4,14 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import { forwardRef } from '@mui/x-internals/forwardRef';
|
|
7
|
-
import {
|
|
7
|
+
import { GridRoot } from "../components/index.js";
|
|
8
8
|
import { useGridAriaAttributes } from "../hooks/utils/useGridAriaAttributes.js";
|
|
9
9
|
import { useGridRowAriaAttributes } from "../hooks/features/rows/useGridRowAriaAttributes.js";
|
|
10
10
|
import { GridContextProvider } from "../context/GridContextProvider.js";
|
|
11
11
|
import { useDataGridComponent } from "./useDataGridComponent.js";
|
|
12
12
|
import { useDataGridProps } from "./useDataGridProps.js";
|
|
13
13
|
import { propValidatorsDataGrid, validateProps } from "../internals/utils/propValidation.js";
|
|
14
|
-
import { jsx as _jsx
|
|
14
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
15
|
const configuration = {
|
|
16
16
|
hooks: {
|
|
17
17
|
useGridAriaAttributes,
|
|
@@ -34,13 +34,12 @@ const DataGridRaw = forwardRef(function DataGrid(inProps, ref) {
|
|
|
34
34
|
privateApiRef: privateApiRef,
|
|
35
35
|
configuration: configuration,
|
|
36
36
|
props: props,
|
|
37
|
-
children: /*#__PURE__*/
|
|
37
|
+
children: /*#__PURE__*/_jsx(GridRoot, _extends({
|
|
38
38
|
className: props.className,
|
|
39
39
|
style: props.style,
|
|
40
40
|
sx: props.sx
|
|
41
41
|
}, props.forwardedProps, props.slotProps?.root, {
|
|
42
|
-
ref: ref
|
|
43
|
-
children: [/*#__PURE__*/_jsx(GridHeader, {}), /*#__PURE__*/_jsx(GridBody, {}), /*#__PURE__*/_jsx(GridFooterPlaceholder, {})]
|
|
42
|
+
ref: ref
|
|
44
43
|
}))
|
|
45
44
|
});
|
|
46
45
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RefObject } from '@mui/x-internals/types';
|
|
1
2
|
import { DataGridProcessedProps } from '../models/props/DataGridProps';
|
|
2
3
|
import { GridApiCommunity, GridPrivateApiCommunity } from '../models/api/gridApiCommunity';
|
|
3
|
-
export declare const useDataGridComponent: (inputApiRef:
|
|
4
|
+
export declare const useDataGridComponent: (inputApiRef: RefObject<GridApiCommunity> | undefined, props: DataGridProcessedProps) => import("react").RefObject<GridPrivateApiCommunity>;
|
|
@@ -44,6 +44,7 @@ export const useDataGridComponent = (inputApiRef, props) => {
|
|
|
44
44
|
useGridInitializeState(dimensionsStateInitializer, apiRef, props);
|
|
45
45
|
useGridInitializeState(rowSelectionStateInitializer, apiRef, props);
|
|
46
46
|
useGridInitializeState(columnsStateInitializer, apiRef, props);
|
|
47
|
+
useGridInitializeState(paginationStateInitializer, apiRef, props);
|
|
47
48
|
useGridInitializeState(rowsStateInitializer, apiRef, props);
|
|
48
49
|
useGridInitializeState(editingStateInitializer, apiRef, props);
|
|
49
50
|
useGridInitializeState(focusStateInitializer, apiRef, props);
|
|
@@ -53,7 +54,6 @@ export const useDataGridComponent = (inputApiRef, props) => {
|
|
|
53
54
|
useGridInitializeState(rowSpanningStateInitializer, apiRef, props);
|
|
54
55
|
useGridInitializeState(densityStateInitializer, apiRef, props);
|
|
55
56
|
useGridInitializeState(columnResizeStateInitializer, apiRef, props);
|
|
56
|
-
useGridInitializeState(paginationStateInitializer, apiRef, props);
|
|
57
57
|
useGridInitializeState(rowsMetaStateInitializer, apiRef, props);
|
|
58
58
|
useGridInitializeState(columnMenuStateInitializer, apiRef, props);
|
|
59
59
|
useGridInitializeState(columnGroupsStateInitializer, apiRef, props);
|
|
@@ -18,7 +18,7 @@ function GridHeaders() {
|
|
|
18
18
|
const filterColumnLookup = useGridSelector(apiRef, gridFilterActiveItemsLookupSelector);
|
|
19
19
|
const sortColumnLookup = useGridSelector(apiRef, gridSortColumnLookupSelector);
|
|
20
20
|
const columnHeaderTabIndexState = useGridSelector(apiRef, gridTabIndexColumnHeaderSelector);
|
|
21
|
-
const
|
|
21
|
+
const hasNoCellTabIndexState = useGridSelector(apiRef, () => gridTabIndexCellSelector(apiRef) === null);
|
|
22
22
|
const columnGroupHeaderTabIndexState = useGridSelector(apiRef, gridTabIndexColumnGroupHeaderSelector);
|
|
23
23
|
const columnHeaderFocus = useGridSelector(apiRef, gridFocusColumnHeaderSelector);
|
|
24
24
|
const columnGroupHeaderFocus = useGridSelector(apiRef, gridFocusColumnGroupHeaderSelector);
|
|
@@ -26,7 +26,7 @@ function GridHeaders() {
|
|
|
26
26
|
const columnMenuState = useGridSelector(apiRef, gridColumnMenuSelector);
|
|
27
27
|
const columnVisibility = useGridSelector(apiRef, gridColumnVisibilityModelSelector);
|
|
28
28
|
const columnGroupsHeaderStructure = useGridSelector(apiRef, gridColumnGroupsHeaderStructureSelector);
|
|
29
|
-
const hasOtherElementInTabSequence = !(columnGroupHeaderTabIndexState === null && columnHeaderTabIndexState === null &&
|
|
29
|
+
const hasOtherElementInTabSequence = !(columnGroupHeaderTabIndexState === null && columnHeaderTabIndexState === null && hasNoCellTabIndexState);
|
|
30
30
|
const columnsContainerRef = apiRef.current.columnHeadersContainerRef;
|
|
31
31
|
return /*#__PURE__*/_jsx(rootProps.slots.columnHeaders, _extends({
|
|
32
32
|
ref: columnsContainerRef,
|
package/components/GridRow.d.ts
CHANGED
|
@@ -2,8 +2,6 @@ import * as React from 'react';
|
|
|
2
2
|
import { GridRowId, GridRowModel } from '../models/gridRows';
|
|
3
3
|
import { GridPinnedColumns } from '../hooks/features/columns';
|
|
4
4
|
import type { GridStateColDef } from '../models/colDef/gridColDef';
|
|
5
|
-
import type { GridRenderContext } from '../models/params/gridScrollParams';
|
|
6
|
-
import type { GridDimensions } from '../hooks/features/dimensions';
|
|
7
5
|
export interface GridRowProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
8
6
|
row: GridRowModel;
|
|
9
7
|
rowId: GridRowId;
|
|
@@ -16,8 +14,9 @@ export interface GridRowProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
16
14
|
rowHeight: number | 'auto';
|
|
17
15
|
offsetTop: number | undefined;
|
|
18
16
|
offsetLeft: number;
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
columnsTotalWidth: number;
|
|
18
|
+
firstColumnIndex: number;
|
|
19
|
+
lastColumnIndex: number;
|
|
21
20
|
visibleColumns: GridStateColDef[];
|
|
22
21
|
pinnedColumns: GridPinnedColumns;
|
|
23
22
|
/**
|
|
@@ -25,15 +24,12 @@ export interface GridRowProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
25
24
|
* If `null`, no cell in this row has focus.
|
|
26
25
|
*/
|
|
27
26
|
focusedColumnIndex: number | undefined;
|
|
28
|
-
/**
|
|
29
|
-
* Determines which cell should be tabbable by having tabIndex=0.
|
|
30
|
-
* If `null`, no cell in this row is in the tab sequence.
|
|
31
|
-
*/
|
|
32
|
-
tabbableCell: string | null;
|
|
33
27
|
isFirstVisible: boolean;
|
|
34
28
|
isLastVisible: boolean;
|
|
35
29
|
isNotVisible: boolean;
|
|
36
30
|
showBottomBorder: boolean;
|
|
31
|
+
scrollbarWidth: number;
|
|
32
|
+
gridHasFiller: boolean;
|
|
37
33
|
onClick?: React.MouseEventHandler<HTMLDivElement>;
|
|
38
34
|
onDoubleClick?: React.MouseEventHandler<HTMLDivElement>;
|
|
39
35
|
onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;
|
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", "
|
|
3
|
+
const _excluded = ["selected", "rowId", "row", "index", "style", "rowHeight", "className", "visibleColumns", "pinnedColumns", "offsetTop", "offsetLeft", "columnsTotalWidth", "firstColumnIndex", "lastColumnIndex", "focusedColumnIndex", "isFirstVisible", "isLastVisible", "isNotVisible", "showBottomBorder", "scrollbarWidth", "gridHasFiller", "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';
|
|
@@ -11,44 +11,22 @@ import { GridEditModes, GridRowModes, GridCellModes } from "../models/gridEditRo
|
|
|
11
11
|
import { gridClasses } from "../constants/gridClasses.js";
|
|
12
12
|
import { composeGridClasses } from "../utils/composeGridClasses.js";
|
|
13
13
|
import { useGridRootProps } from "../hooks/utils/useGridRootProps.js";
|
|
14
|
+
import { shouldCellShowLeftBorder, shouldCellShowRightBorder } from "../utils/cellBorderUtils.js";
|
|
14
15
|
import { gridColumnPositionsSelector } from "../hooks/features/columns/gridColumnsSelector.js";
|
|
15
16
|
import { useGridSelector, objectShallowCompare } from "../hooks/utils/useGridSelector.js";
|
|
16
17
|
import { useGridVisibleRows } from "../hooks/utils/useGridVisibleRows.js";
|
|
17
18
|
import { findParentElementFromClassName, isEventTargetInPortal } from "../utils/domUtils.js";
|
|
18
19
|
import { GRID_CHECKBOX_SELECTION_COL_DEF } from "../colDef/gridCheckboxSelectionColDef.js";
|
|
19
20
|
import { GRID_ACTIONS_COLUMN_TYPE } from "../colDef/gridActionsColDef.js";
|
|
20
|
-
import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from "../internals/constants.js";
|
|
21
|
+
import { GRID_DETAIL_PANEL_TOGGLE_FIELD, PinnedColumnPosition } from "../internals/constants.js";
|
|
21
22
|
import { gridSortModelSelector } from "../hooks/features/sorting/gridSortingSelector.js";
|
|
22
23
|
import { gridRowMaximumTreeDepthSelector } from "../hooks/features/rows/gridRowsSelector.js";
|
|
23
24
|
import { gridEditRowsStateSelector } from "../hooks/features/editing/gridEditingSelectors.js";
|
|
24
|
-
import { PinnedPosition, gridPinnedColumnPositionLookup } from "./cell/GridCell.js";
|
|
25
25
|
import { GridScrollbarFillerCell as ScrollbarFiller } from "./GridScrollbarFillerCell.js";
|
|
26
26
|
import { getPinnedCellOffset } from "../internals/utils/getPinnedCellOffset.js";
|
|
27
27
|
import { useGridConfiguration } from "../hooks/utils/useGridConfiguration.js";
|
|
28
28
|
import { useGridPrivateApiContext } from "../hooks/utils/useGridPrivateApiContext.js";
|
|
29
|
-
import { gridVirtualizationColumnEnabledSelector } from "../hooks/index.js";
|
|
30
29
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
31
|
-
function EmptyCell({
|
|
32
|
-
width
|
|
33
|
-
}) {
|
|
34
|
-
if (!width) {
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
return /*#__PURE__*/_jsx("div", {
|
|
38
|
-
role: "presentation",
|
|
39
|
-
className: clsx(gridClasses.cell, gridClasses.cellEmpty),
|
|
40
|
-
style: {
|
|
41
|
-
'--width': `${width}px`
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
process.env.NODE_ENV !== "production" ? EmptyCell.propTypes = {
|
|
46
|
-
// ----------------------------- Warning --------------------------------
|
|
47
|
-
// | These PropTypes are generated from the TypeScript type definitions |
|
|
48
|
-
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
49
|
-
// ----------------------------------------------------------------------
|
|
50
|
-
width: PropTypes.number.isRequired
|
|
51
|
-
} : void 0;
|
|
52
30
|
const GridRow = forwardRef(function GridRow(props, refProp) {
|
|
53
31
|
const {
|
|
54
32
|
selected,
|
|
@@ -61,13 +39,16 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
|
|
|
61
39
|
visibleColumns,
|
|
62
40
|
pinnedColumns,
|
|
63
41
|
offsetLeft,
|
|
64
|
-
|
|
65
|
-
|
|
42
|
+
columnsTotalWidth,
|
|
43
|
+
firstColumnIndex,
|
|
44
|
+
lastColumnIndex,
|
|
66
45
|
focusedColumnIndex,
|
|
67
46
|
isFirstVisible,
|
|
68
47
|
isLastVisible,
|
|
69
48
|
isNotVisible,
|
|
70
49
|
showBottomBorder,
|
|
50
|
+
scrollbarWidth,
|
|
51
|
+
gridHasFiller,
|
|
71
52
|
onClick,
|
|
72
53
|
onDoubleClick,
|
|
73
54
|
onMouseEnter,
|
|
@@ -87,14 +68,11 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
|
|
|
87
68
|
const editRowsState = useGridSelector(apiRef, gridEditRowsStateSelector);
|
|
88
69
|
const handleRef = useForkRef(ref, refProp);
|
|
89
70
|
const rowNode = apiRef.current.getRowNode(rowId);
|
|
90
|
-
const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
|
|
91
|
-
const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
|
|
92
71
|
const editing = apiRef.current.getRowMode(rowId) === GridRowModes.Edit;
|
|
93
72
|
const editable = rootProps.editMode === GridEditModes.Row;
|
|
94
|
-
const hasColumnVirtualization = useGridSelector(apiRef, gridVirtualizationColumnEnabledSelector);
|
|
95
73
|
const hasFocusCell = focusedColumnIndex !== undefined;
|
|
96
|
-
const hasVirtualFocusCellLeft = hasFocusCell && focusedColumnIndex >= pinnedColumns.left.length && focusedColumnIndex <
|
|
97
|
-
const hasVirtualFocusCellRight = hasFocusCell && focusedColumnIndex < visibleColumns.length - pinnedColumns.right.length && focusedColumnIndex >=
|
|
74
|
+
const hasVirtualFocusCellLeft = hasFocusCell && focusedColumnIndex >= pinnedColumns.left.length && focusedColumnIndex < firstColumnIndex;
|
|
75
|
+
const hasVirtualFocusCellRight = hasFocusCell && focusedColumnIndex < visibleColumns.length - pinnedColumns.right.length && focusedColumnIndex >= lastColumnIndex;
|
|
98
76
|
const classes = composeGridClasses(rootProps.classes, {
|
|
99
77
|
root: ['row', selected && 'selected', editable && 'row--editable', editing && 'row--editing', isFirstVisible && 'row--firstVisible', isLastVisible && 'row--lastVisible', showBottomBorder && 'row--borderBottom', rowHeight === 'auto' && 'row--dynamicHeight']
|
|
100
78
|
});
|
|
@@ -210,14 +188,14 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
|
|
|
210
188
|
});
|
|
211
189
|
rowClassNames.push(rootProps.getRowClassName(rowParams));
|
|
212
190
|
}
|
|
213
|
-
const getCell = (column, indexInSection, indexRelativeToAllColumns, sectionLength, pinnedPosition =
|
|
191
|
+
const getCell = (column, indexInSection, indexRelativeToAllColumns, sectionLength, pinnedPosition = PinnedColumnPosition.NONE) => {
|
|
214
192
|
const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, indexRelativeToAllColumns);
|
|
215
193
|
if (cellColSpanInfo?.spannedByColSpan) {
|
|
216
194
|
return null;
|
|
217
195
|
}
|
|
218
196
|
const width = cellColSpanInfo?.cellProps.width ?? column.computedWidth;
|
|
219
197
|
const colSpan = cellColSpanInfo?.cellProps.colSpan ?? 1;
|
|
220
|
-
const pinnedOffset = getPinnedCellOffset(
|
|
198
|
+
const pinnedOffset = getPinnedCellOffset(pinnedPosition, column.computedWidth, indexRelativeToAllColumns, columnPositions, columnsTotalWidth, scrollbarWidth);
|
|
221
199
|
if (rowNode?.type === 'skeletonRow') {
|
|
222
200
|
return /*#__PURE__*/_jsx(slots.skeletonCell, {
|
|
223
201
|
type: column.type,
|
|
@@ -236,7 +214,9 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
|
|
|
236
214
|
const canReorderColumn = !(disableColumnReorder || column.disableReorder);
|
|
237
215
|
const canReorderRow = rowReordering && !sortModel.length && treeDepth <= 1 && !isEditingRows;
|
|
238
216
|
const disableDragEvents = !(canReorderColumn || isReorderCell && canReorderRow);
|
|
239
|
-
const cellIsNotVisible = pinnedPosition ===
|
|
217
|
+
const cellIsNotVisible = pinnedPosition === PinnedColumnPosition.VIRTUAL;
|
|
218
|
+
const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, indexInSection);
|
|
219
|
+
const showRightBorder = shouldCellShowRightBorder(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
|
|
240
220
|
return /*#__PURE__*/_jsx(slots.cell, _extends({
|
|
241
221
|
column: column,
|
|
242
222
|
width: width,
|
|
@@ -249,9 +229,8 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
|
|
|
249
229
|
isNotVisible: cellIsNotVisible,
|
|
250
230
|
pinnedOffset: pinnedOffset,
|
|
251
231
|
pinnedPosition: pinnedPosition,
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
gridHasFiller: gridHasFiller
|
|
232
|
+
showLeftBorder: showLeftBorder,
|
|
233
|
+
showRightBorder: showRightBorder
|
|
255
234
|
}, slotProps?.cell), column.field);
|
|
256
235
|
};
|
|
257
236
|
|
|
@@ -262,25 +241,16 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
|
|
|
262
241
|
}
|
|
263
242
|
const leftCells = pinnedColumns.left.map((column, i) => {
|
|
264
243
|
const indexRelativeToAllColumns = i;
|
|
265
|
-
return getCell(column, i, indexRelativeToAllColumns, pinnedColumns.left.length,
|
|
244
|
+
return getCell(column, i, indexRelativeToAllColumns, pinnedColumns.left.length, PinnedColumnPosition.LEFT);
|
|
266
245
|
});
|
|
267
246
|
const rightCells = pinnedColumns.right.map((column, i) => {
|
|
268
247
|
const indexRelativeToAllColumns = visibleColumns.length - pinnedColumns.right.length + i;
|
|
269
|
-
return getCell(column, i, indexRelativeToAllColumns, pinnedColumns.right.length,
|
|
248
|
+
return getCell(column, i, indexRelativeToAllColumns, pinnedColumns.right.length, PinnedColumnPosition.RIGHT);
|
|
270
249
|
});
|
|
271
250
|
const middleColumnsLength = visibleColumns.length - pinnedColumns.left.length - pinnedColumns.right.length;
|
|
272
251
|
const cells = [];
|
|
273
252
|
if (hasVirtualFocusCellLeft) {
|
|
274
|
-
cells.push(getCell(visibleColumns[focusedColumnIndex], focusedColumnIndex - pinnedColumns.left.length, focusedColumnIndex, middleColumnsLength,
|
|
275
|
-
}
|
|
276
|
-
let firstColumnIndex;
|
|
277
|
-
let lastColumnIndex;
|
|
278
|
-
if (!rootProps.disableVirtualization && !hasColumnVirtualization) {
|
|
279
|
-
firstColumnIndex = 0;
|
|
280
|
-
lastColumnIndex = visibleColumns.length;
|
|
281
|
-
} else {
|
|
282
|
-
firstColumnIndex = renderContext.firstColumnIndex;
|
|
283
|
-
lastColumnIndex = renderContext.lastColumnIndex;
|
|
253
|
+
cells.push(getCell(visibleColumns[focusedColumnIndex], focusedColumnIndex - pinnedColumns.left.length, focusedColumnIndex, middleColumnsLength, PinnedColumnPosition.VIRTUAL));
|
|
284
254
|
}
|
|
285
255
|
for (let i = firstColumnIndex; i < lastColumnIndex; i += 1) {
|
|
286
256
|
const column = visibleColumns[i];
|
|
@@ -291,7 +261,7 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
|
|
|
291
261
|
cells.push(getCell(column, indexInSection, i, middleColumnsLength));
|
|
292
262
|
}
|
|
293
263
|
if (hasVirtualFocusCellRight) {
|
|
294
|
-
cells.push(getCell(visibleColumns[focusedColumnIndex], focusedColumnIndex - pinnedColumns.left.length, focusedColumnIndex, middleColumnsLength,
|
|
264
|
+
cells.push(getCell(visibleColumns[focusedColumnIndex], focusedColumnIndex - pinnedColumns.left.length, focusedColumnIndex, middleColumnsLength, PinnedColumnPosition.VIRTUAL));
|
|
295
265
|
}
|
|
296
266
|
const eventHandlers = row ? {
|
|
297
267
|
onClick: publishClick,
|
|
@@ -301,8 +271,6 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
|
|
|
301
271
|
onMouseOut: publish('rowMouseOut', onMouseOut),
|
|
302
272
|
onMouseOver: publish('rowMouseOver', onMouseOver)
|
|
303
273
|
} : null;
|
|
304
|
-
const expandedWidth = dimensions.viewportOuterSize.width - dimensions.columnsTotalWidth - scrollbarWidth;
|
|
305
|
-
const emptyCellWidth = Math.max(0, expandedWidth);
|
|
306
274
|
return /*#__PURE__*/_jsxs("div", _extends({
|
|
307
275
|
"data-id": rowId,
|
|
308
276
|
"data-rowindex": index,
|
|
@@ -317,11 +285,9 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
|
|
|
317
285
|
style: {
|
|
318
286
|
width: offsetLeft
|
|
319
287
|
}
|
|
320
|
-
}), cells,
|
|
321
|
-
width: emptyCellWidth
|
|
322
|
-
}), rightCells.length > 0 && /*#__PURE__*/_jsx("div", {
|
|
288
|
+
}), cells, /*#__PURE__*/_jsx("div", {
|
|
323
289
|
role: "presentation",
|
|
324
|
-
className: gridClasses.
|
|
290
|
+
className: clsx(gridClasses.cell, gridClasses.cellEmpty)
|
|
325
291
|
}), rightCells, scrollbarWidth !== 0 && /*#__PURE__*/_jsx(ScrollbarFiller, {
|
|
326
292
|
pinnedRight: pinnedColumns.right.length > 0
|
|
327
293
|
})]
|
|
@@ -332,48 +298,14 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
|
|
|
332
298
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
333
299
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
334
300
|
// ----------------------------------------------------------------------
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
columnsTotalWidth: PropTypes.number.isRequired,
|
|
338
|
-
contentSize: PropTypes.shape({
|
|
339
|
-
height: PropTypes.number.isRequired,
|
|
340
|
-
width: PropTypes.number.isRequired
|
|
341
|
-
}).isRequired,
|
|
342
|
-
groupHeaderHeight: PropTypes.number.isRequired,
|
|
343
|
-
hasScrollX: PropTypes.bool.isRequired,
|
|
344
|
-
hasScrollY: PropTypes.bool.isRequired,
|
|
345
|
-
headerFilterHeight: PropTypes.number.isRequired,
|
|
346
|
-
headerHeight: PropTypes.number.isRequired,
|
|
347
|
-
headersTotalHeight: PropTypes.number.isRequired,
|
|
348
|
-
isReady: PropTypes.bool.isRequired,
|
|
349
|
-
leftPinnedWidth: PropTypes.number.isRequired,
|
|
350
|
-
minimumSize: PropTypes.shape({
|
|
351
|
-
height: PropTypes.number.isRequired,
|
|
352
|
-
width: PropTypes.number.isRequired
|
|
353
|
-
}).isRequired,
|
|
354
|
-
rightPinnedWidth: PropTypes.number.isRequired,
|
|
355
|
-
root: PropTypes.shape({
|
|
356
|
-
height: PropTypes.number.isRequired,
|
|
357
|
-
width: PropTypes.number.isRequired
|
|
358
|
-
}).isRequired,
|
|
359
|
-
rowHeight: PropTypes.number.isRequired,
|
|
360
|
-
rowWidth: PropTypes.number.isRequired,
|
|
361
|
-
scrollbarSize: PropTypes.number.isRequired,
|
|
362
|
-
topContainerHeight: PropTypes.number.isRequired,
|
|
363
|
-
viewportInnerSize: PropTypes.shape({
|
|
364
|
-
height: PropTypes.number.isRequired,
|
|
365
|
-
width: PropTypes.number.isRequired
|
|
366
|
-
}).isRequired,
|
|
367
|
-
viewportOuterSize: PropTypes.shape({
|
|
368
|
-
height: PropTypes.number.isRequired,
|
|
369
|
-
width: PropTypes.number.isRequired
|
|
370
|
-
}).isRequired
|
|
371
|
-
}).isRequired,
|
|
301
|
+
columnsTotalWidth: PropTypes.number.isRequired,
|
|
302
|
+
firstColumnIndex: PropTypes.number.isRequired,
|
|
372
303
|
/**
|
|
373
304
|
* Determines which cell has focus.
|
|
374
305
|
* If `null`, no cell in this row has focus.
|
|
375
306
|
*/
|
|
376
307
|
focusedColumnIndex: PropTypes.number,
|
|
308
|
+
gridHasFiller: PropTypes.bool.isRequired,
|
|
377
309
|
/**
|
|
378
310
|
* Index of the row in the whole sorted and filtered dataset.
|
|
379
311
|
* If some rows above have expanded children, this index also take those children into account.
|
|
@@ -382,6 +314,7 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
|
|
|
382
314
|
isFirstVisible: PropTypes.bool.isRequired,
|
|
383
315
|
isLastVisible: PropTypes.bool.isRequired,
|
|
384
316
|
isNotVisible: PropTypes.bool.isRequired,
|
|
317
|
+
lastColumnIndex: PropTypes.number.isRequired,
|
|
385
318
|
offsetLeft: PropTypes.number.isRequired,
|
|
386
319
|
offsetTop: PropTypes.number,
|
|
387
320
|
onClick: PropTypes.func,
|
|
@@ -389,22 +322,12 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
|
|
|
389
322
|
onMouseEnter: PropTypes.func,
|
|
390
323
|
onMouseLeave: PropTypes.func,
|
|
391
324
|
pinnedColumns: PropTypes.object.isRequired,
|
|
392
|
-
renderContext: PropTypes.shape({
|
|
393
|
-
firstColumnIndex: PropTypes.number.isRequired,
|
|
394
|
-
firstRowIndex: PropTypes.number.isRequired,
|
|
395
|
-
lastColumnIndex: PropTypes.number.isRequired,
|
|
396
|
-
lastRowIndex: PropTypes.number.isRequired
|
|
397
|
-
}).isRequired,
|
|
398
325
|
row: PropTypes.object.isRequired,
|
|
399
326
|
rowHeight: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired,
|
|
400
327
|
rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
|
|
328
|
+
scrollbarWidth: PropTypes.number.isRequired,
|
|
401
329
|
selected: PropTypes.bool.isRequired,
|
|
402
330
|
showBottomBorder: PropTypes.bool.isRequired,
|
|
403
|
-
/**
|
|
404
|
-
* Determines which cell should be tabbable by having tabIndex=0.
|
|
405
|
-
* If `null`, no cell in this row is in the tab sequence.
|
|
406
|
-
*/
|
|
407
|
-
tabbableCell: PropTypes.string,
|
|
408
331
|
visibleColumns: PropTypes.arrayOf(PropTypes.object).isRequired
|
|
409
332
|
} : void 0;
|
|
410
333
|
const MemoizedGridRow = fastMemo(GridRow);
|
|
@@ -4,15 +4,19 @@ import clsx from 'clsx';
|
|
|
4
4
|
import { styled } from '@mui/system';
|
|
5
5
|
import useForkRef from '@mui/utils/useForkRef';
|
|
6
6
|
import composeClasses from '@mui/utils/composeClasses';
|
|
7
|
+
import { useRtl } from '@mui/system/RtlProvider';
|
|
7
8
|
import { forwardRef } from '@mui/x-internals/forwardRef';
|
|
8
9
|
import { useGridApiContext } from "../hooks/utils/useGridApiContext.js";
|
|
9
10
|
import { useGridRootProps } from "../hooks/utils/useGridRootProps.js";
|
|
10
|
-
import {
|
|
11
|
+
import { gridColumnPositionsSelector, gridColumnsTotalWidthSelector, gridDimensionsSelector, gridVisibleColumnDefinitionsSelector, gridVisiblePinnedColumnDefinitionsSelector, useGridApiEventHandler, useGridSelector } from "../hooks/index.js";
|
|
12
|
+
import { PinnedColumnPosition } from "../internals/constants.js";
|
|
11
13
|
import { getDataGridUtilityClass, gridClasses } from "../constants/gridClasses.js";
|
|
12
14
|
import { getPinnedCellOffset } from "../internals/utils/getPinnedCellOffset.js";
|
|
13
15
|
import { shouldCellShowLeftBorder, shouldCellShowRightBorder } from "../utils/cellBorderUtils.js";
|
|
14
16
|
import { escapeOperandAttributeSelector } from "../utils/domUtils.js";
|
|
15
17
|
import { GridScrollbarFillerCell } from "./GridScrollbarFillerCell.js";
|
|
18
|
+
import { rtlFlipSide } from "../utils/rtlFlipSide.js";
|
|
19
|
+
import { attachPinnedStyle } from "../internals/utils/index.js";
|
|
16
20
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
17
21
|
const SkeletonOverlay = styled('div', {
|
|
18
22
|
name: 'MuiDataGrid',
|
|
@@ -40,6 +44,7 @@ const GridSkeletonLoadingOverlay = forwardRef(function GridSkeletonLoadingOverla
|
|
|
40
44
|
const {
|
|
41
45
|
slots
|
|
42
46
|
} = rootProps;
|
|
47
|
+
const isRtl = useRtl();
|
|
43
48
|
const classes = useUtilityClasses({
|
|
44
49
|
classes: rootProps.classes
|
|
45
50
|
});
|
|
@@ -55,18 +60,12 @@ const GridSkeletonLoadingOverlay = forwardRef(function GridSkeletonLoadingOverla
|
|
|
55
60
|
const allVisibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
|
|
56
61
|
const columns = React.useMemo(() => allVisibleColumns.slice(0, inViewportCount), [allVisibleColumns, inViewportCount]);
|
|
57
62
|
const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
|
|
58
|
-
const getPinnedStyle = React.useCallback((computedWidth, index, position) => {
|
|
59
|
-
const pinnedOffset = getPinnedCellOffset(position, computedWidth, index, positions, dimensions);
|
|
60
|
-
return {
|
|
61
|
-
[position]: pinnedOffset
|
|
62
|
-
};
|
|
63
|
-
}, [dimensions, positions]);
|
|
64
63
|
const getPinnedPosition = React.useCallback(field => {
|
|
65
64
|
if (pinnedColumns.left.findIndex(col => col.field === field) !== -1) {
|
|
66
|
-
return
|
|
65
|
+
return PinnedColumnPosition.LEFT;
|
|
67
66
|
}
|
|
68
67
|
if (pinnedColumns.right.findIndex(col => col.field === field) !== -1) {
|
|
69
|
-
return
|
|
68
|
+
return PinnedColumnPosition.RIGHT;
|
|
70
69
|
}
|
|
71
70
|
return undefined;
|
|
72
71
|
}, [pinnedColumns.left, pinnedColumns.right]);
|
|
@@ -77,13 +76,15 @@ const GridSkeletonLoadingOverlay = forwardRef(function GridSkeletonLoadingOverla
|
|
|
77
76
|
for (let colIndex = 0; colIndex < columns.length; colIndex += 1) {
|
|
78
77
|
const column = columns[colIndex];
|
|
79
78
|
const pinnedPosition = getPinnedPosition(column.field);
|
|
80
|
-
const isPinnedLeft = pinnedPosition ===
|
|
81
|
-
const isPinnedRight = pinnedPosition ===
|
|
82
|
-
const
|
|
79
|
+
const isPinnedLeft = pinnedPosition === PinnedColumnPosition.LEFT;
|
|
80
|
+
const isPinnedRight = pinnedPosition === PinnedColumnPosition.RIGHT;
|
|
81
|
+
const pinnedSide = rtlFlipSide(pinnedPosition, isRtl);
|
|
82
|
+
const sectionLength = pinnedSide ? pinnedColumns[pinnedSide].length // pinned section
|
|
83
83
|
: columns.length - pinnedColumns.left.length - pinnedColumns.right.length; // middle section
|
|
84
|
-
const sectionIndex =
|
|
84
|
+
const sectionIndex = pinnedSide ? pinnedColumns[pinnedSide].findIndex(col => col.field === column.field) // pinned section
|
|
85
85
|
: colIndex - pinnedColumns.left.length; // middle section
|
|
86
|
-
const
|
|
86
|
+
const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
|
|
87
|
+
const pinnedStyle = attachPinnedStyle({}, isRtl, pinnedPosition, getPinnedCellOffset(pinnedPosition, column.computedWidth, colIndex, positions, dimensions.columnsTotalWidth, scrollbarWidth));
|
|
87
88
|
const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
|
|
88
89
|
const showRightBorder = shouldCellShowRightBorder(pinnedPosition, sectionIndex, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
|
|
89
90
|
const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, sectionIndex);
|
|
@@ -97,7 +98,6 @@ const GridSkeletonLoadingOverlay = forwardRef(function GridSkeletonLoadingOverla
|
|
|
97
98
|
width: emptyCellWidth,
|
|
98
99
|
empty: true
|
|
99
100
|
}, `skeleton-filler-column-${i}`);
|
|
100
|
-
const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
|
|
101
101
|
const hasScrollbarFiller = isLastColumn && scrollbarWidth !== 0;
|
|
102
102
|
if (hasFillerBefore) {
|
|
103
103
|
rowCells.push(emptyCell);
|
|
@@ -129,7 +129,7 @@ const GridSkeletonLoadingOverlay = forwardRef(function GridSkeletonLoadingOverla
|
|
|
129
129
|
}, `skeleton-row-${i}`));
|
|
130
130
|
}
|
|
131
131
|
return array;
|
|
132
|
-
}, [slots, columns, pinnedColumns, skeletonRowsCount, rootProps.showCellVerticalBorder, dimensions
|
|
132
|
+
}, [slots, columns, pinnedColumns, skeletonRowsCount, rootProps.showCellVerticalBorder, dimensions, positions, getPinnedPosition, isRtl]);
|
|
133
133
|
|
|
134
134
|
// Sync the column resize of the overlay columns with the grid
|
|
135
135
|
const handleColumnResize = params => {
|
|
@@ -143,8 +143,8 @@ const GridSkeletonLoadingOverlay = forwardRef(function GridSkeletonLoadingOverla
|
|
|
143
143
|
}
|
|
144
144
|
const resizedColIndex = columns.findIndex(col => col.field === colDef.field);
|
|
145
145
|
const pinnedPosition = getPinnedPosition(colDef.field);
|
|
146
|
-
const isPinnedLeft = pinnedPosition ===
|
|
147
|
-
const isPinnedRight = pinnedPosition ===
|
|
146
|
+
const isPinnedLeft = pinnedPosition === PinnedColumnPosition.LEFT;
|
|
147
|
+
const isPinnedRight = pinnedPosition === PinnedColumnPosition.RIGHT;
|
|
148
148
|
const currentWidth = getComputedStyle(cells[0]).getPropertyValue('--width');
|
|
149
149
|
const delta = parseInt(currentWidth, 10) - width;
|
|
150
150
|
if (cells) {
|