@mui/x-data-grid 7.22.2 → 7.22.3

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.
Files changed (184) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/components/GridDetailPanels.js +0 -1
  3. package/components/GridPinnedRows.js +0 -1
  4. package/components/GridRow.d.ts +2 -2
  5. package/components/GridRow.js +1 -1
  6. package/components/base/GridOverlays.js +5 -6
  7. package/components/cell/GridCell.d.ts +41 -3
  8. package/components/cell/GridCell.js +1 -9
  9. package/components/cell/GridEditInputCell.js +0 -67
  10. package/components/columnsManagement/GridColumnsManagement.d.ts +2 -0
  11. package/components/columnsManagement/GridColumnsManagement.js +53 -6
  12. package/components/panel/GridPanel.d.ts +1 -1
  13. package/components/toolbar/GridToolbar.d.ts +2 -2
  14. package/components/toolbar/GridToolbar.js +12 -4
  15. package/components/toolbar/GridToolbarExport.d.ts +2 -2
  16. package/components/toolbar/GridToolbarExport.js +4 -3
  17. package/components/toolbar/index.d.ts +1 -1
  18. package/constants/gridClasses.d.ts +4 -0
  19. package/constants/gridClasses.js +1 -1
  20. package/constants/localeTextConstants.js +1 -0
  21. package/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
  22. package/hooks/features/export/useGridCsvExport.js +1 -1
  23. package/hooks/features/export/useGridPrintExport.js +1 -1
  24. package/hooks/features/pagination/useGridPaginationModel.js +2 -2
  25. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  26. package/hooks/features/rows/gridRowsUtils.js +1 -5
  27. package/hooks/features/virtualization/useGridVirtualScroller.js +4 -4
  28. package/hooks/utils/useGridSelector.d.ts +3 -2
  29. package/hooks/utils/useGridSelector.js +27 -2
  30. package/index.d.ts +0 -1
  31. package/index.js +1 -1
  32. package/locales/arSD.js +1 -0
  33. package/locales/beBY.js +1 -0
  34. package/locales/bgBG.js +2 -0
  35. package/locales/csCZ.js +2 -0
  36. package/locales/daDK.js +2 -0
  37. package/locales/deDE.js +2 -0
  38. package/locales/elGR.js +1 -0
  39. package/locales/esES.js +6 -4
  40. package/locales/faIR.js +2 -0
  41. package/locales/fiFI.js +2 -0
  42. package/locales/frFR.js +2 -0
  43. package/locales/heIL.js +2 -0
  44. package/locales/hrHR.js +2 -0
  45. package/locales/huHU.js +2 -0
  46. package/locales/isIS.js +1 -0
  47. package/locales/itIT.js +2 -0
  48. package/locales/jaJP.js +2 -0
  49. package/locales/koKR.js +1 -0
  50. package/locales/nbNO.js +2 -0
  51. package/locales/nlNL.js +2 -0
  52. package/locales/nnNO.js +2 -0
  53. package/locales/plPL.js +1 -0
  54. package/locales/ptBR.js +2 -0
  55. package/locales/ptPT.js +2 -0
  56. package/locales/roRO.js +1 -0
  57. package/locales/ruRU.js +2 -0
  58. package/locales/skSK.js +1 -0
  59. package/locales/svSE.js +6 -5
  60. package/locales/trTR.js +4 -2
  61. package/locales/ukUA.js +1 -0
  62. package/locales/urPK.js +1 -0
  63. package/locales/viVN.js +2 -0
  64. package/locales/zhCN.js +6 -4
  65. package/locales/zhHK.js +1 -0
  66. package/locales/zhTW.js +1 -0
  67. package/models/api/gridLocaleTextApi.d.ts +1 -0
  68. package/models/props/DataGridProps.d.ts +1 -1
  69. package/modern/components/GridDetailPanels.js +0 -1
  70. package/modern/components/GridPinnedRows.js +0 -1
  71. package/modern/components/GridRow.js +1 -1
  72. package/modern/components/base/GridOverlays.js +5 -6
  73. package/modern/components/cell/GridCell.js +1 -9
  74. package/modern/components/cell/GridEditInputCell.js +0 -67
  75. package/modern/components/columnsManagement/GridColumnsManagement.js +53 -6
  76. package/modern/components/toolbar/GridToolbar.js +12 -4
  77. package/modern/components/toolbar/GridToolbarExport.js +4 -3
  78. package/modern/constants/gridClasses.js +1 -1
  79. package/modern/constants/localeTextConstants.js +1 -0
  80. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
  81. package/modern/hooks/features/export/useGridCsvExport.js +1 -1
  82. package/modern/hooks/features/export/useGridPrintExport.js +1 -1
  83. package/modern/hooks/features/pagination/useGridPaginationModel.js +2 -2
  84. package/modern/hooks/features/rows/gridRowsUtils.js +1 -5
  85. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +4 -4
  86. package/modern/hooks/utils/useGridSelector.js +27 -2
  87. package/modern/index.js +1 -1
  88. package/modern/locales/arSD.js +1 -0
  89. package/modern/locales/beBY.js +1 -0
  90. package/modern/locales/bgBG.js +2 -0
  91. package/modern/locales/csCZ.js +2 -0
  92. package/modern/locales/daDK.js +2 -0
  93. package/modern/locales/deDE.js +2 -0
  94. package/modern/locales/elGR.js +1 -0
  95. package/modern/locales/esES.js +6 -4
  96. package/modern/locales/faIR.js +2 -0
  97. package/modern/locales/fiFI.js +2 -0
  98. package/modern/locales/frFR.js +2 -0
  99. package/modern/locales/heIL.js +2 -0
  100. package/modern/locales/hrHR.js +2 -0
  101. package/modern/locales/huHU.js +2 -0
  102. package/modern/locales/isIS.js +1 -0
  103. package/modern/locales/itIT.js +2 -0
  104. package/modern/locales/jaJP.js +2 -0
  105. package/modern/locales/koKR.js +1 -0
  106. package/modern/locales/nbNO.js +2 -0
  107. package/modern/locales/nlNL.js +2 -0
  108. package/modern/locales/nnNO.js +2 -0
  109. package/modern/locales/plPL.js +1 -0
  110. package/modern/locales/ptBR.js +2 -0
  111. package/modern/locales/ptPT.js +2 -0
  112. package/modern/locales/roRO.js +1 -0
  113. package/modern/locales/ruRU.js +2 -0
  114. package/modern/locales/skSK.js +1 -0
  115. package/modern/locales/svSE.js +6 -5
  116. package/modern/locales/trTR.js +4 -2
  117. package/modern/locales/ukUA.js +1 -0
  118. package/modern/locales/urPK.js +1 -0
  119. package/modern/locales/viVN.js +2 -0
  120. package/modern/locales/zhCN.js +6 -4
  121. package/modern/locales/zhHK.js +1 -0
  122. package/modern/locales/zhTW.js +1 -0
  123. package/modern/utils/createSelector.js +11 -1
  124. package/modern/utils/utils.js +1 -3
  125. package/node/components/GridDetailPanels.js +0 -1
  126. package/node/components/GridPinnedRows.js +0 -1
  127. package/node/components/GridRow.js +1 -1
  128. package/node/components/base/GridOverlays.js +5 -6
  129. package/node/components/cell/GridCell.js +1 -9
  130. package/node/components/cell/GridEditInputCell.js +0 -67
  131. package/node/components/columnsManagement/GridColumnsManagement.js +53 -6
  132. package/node/components/toolbar/GridToolbar.js +12 -4
  133. package/node/components/toolbar/GridToolbarExport.js +4 -3
  134. package/node/constants/gridClasses.js +1 -1
  135. package/node/constants/localeTextConstants.js +1 -0
  136. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +1 -1
  137. package/node/hooks/features/export/useGridCsvExport.js +2 -2
  138. package/node/hooks/features/export/useGridPrintExport.js +2 -2
  139. package/node/hooks/features/pagination/useGridPaginationModel.js +2 -2
  140. package/node/hooks/features/rows/gridRowsUtils.js +2 -8
  141. package/node/hooks/features/virtualization/useGridVirtualScroller.js +4 -4
  142. package/node/hooks/utils/useGridSelector.js +29 -3
  143. package/node/index.js +1 -1
  144. package/node/locales/arSD.js +1 -0
  145. package/node/locales/beBY.js +1 -0
  146. package/node/locales/bgBG.js +2 -0
  147. package/node/locales/csCZ.js +2 -0
  148. package/node/locales/daDK.js +2 -0
  149. package/node/locales/deDE.js +2 -0
  150. package/node/locales/elGR.js +1 -0
  151. package/node/locales/esES.js +6 -4
  152. package/node/locales/faIR.js +2 -0
  153. package/node/locales/fiFI.js +2 -0
  154. package/node/locales/frFR.js +2 -0
  155. package/node/locales/heIL.js +2 -0
  156. package/node/locales/hrHR.js +2 -0
  157. package/node/locales/huHU.js +2 -0
  158. package/node/locales/isIS.js +1 -0
  159. package/node/locales/itIT.js +2 -0
  160. package/node/locales/jaJP.js +2 -0
  161. package/node/locales/koKR.js +1 -0
  162. package/node/locales/nbNO.js +2 -0
  163. package/node/locales/nlNL.js +2 -0
  164. package/node/locales/nnNO.js +2 -0
  165. package/node/locales/plPL.js +1 -0
  166. package/node/locales/ptBR.js +2 -0
  167. package/node/locales/ptPT.js +2 -0
  168. package/node/locales/roRO.js +1 -0
  169. package/node/locales/ruRU.js +2 -0
  170. package/node/locales/skSK.js +1 -0
  171. package/node/locales/svSE.js +6 -5
  172. package/node/locales/trTR.js +4 -2
  173. package/node/locales/ukUA.js +1 -0
  174. package/node/locales/urPK.js +1 -0
  175. package/node/locales/viVN.js +2 -0
  176. package/node/locales/zhCN.js +6 -4
  177. package/node/locales/zhHK.js +1 -0
  178. package/node/locales/zhTW.js +1 -0
  179. package/node/utils/createSelector.js +11 -1
  180. package/node/utils/utils.js +1 -3
  181. package/package.json +1 -1
  182. package/utils/createSelector.d.ts +1 -1
  183. package/utils/createSelector.js +11 -1
  184. package/utils/utils.js +1 -3
package/locales/zhCN.js CHANGED
@@ -34,6 +34,8 @@ const zhCNGrid = {
34
34
  columnsManagementNoColumns: '没有列',
35
35
  columnsManagementShowHideAllText: '显示/隐藏所有',
36
36
  columnsManagementReset: '重置',
37
+ // columnsManagementDeleteIconLabel: 'Clear',
38
+
37
39
  // Filter panel text
38
40
  filterPanelAddFilter: '添加筛选器',
39
41
  filterPanelRemoveAll: '清除全部',
@@ -47,9 +49,9 @@ const zhCNGrid = {
47
49
  filterPanelInputPlaceholder: '筛选值',
48
50
  // Filter operators text
49
51
  filterOperatorContains: '包含',
50
- // filterOperatorDoesNotContain: 'does not contain',
52
+ filterOperatorDoesNotContain: '不包含',
51
53
  filterOperatorEquals: '等于',
52
- // filterOperatorDoesNotEqual: 'does not equal',
54
+ filterOperatorDoesNotEqual: '不等于',
53
55
  filterOperatorStartsWith: '开始于',
54
56
  filterOperatorEndsWith: '结束于',
55
57
  filterOperatorIs: '是',
@@ -69,9 +71,9 @@ const zhCNGrid = {
69
71
  'filterOperator<=': '<=',
70
72
  // Header filter operators text
71
73
  headerFilterOperatorContains: '包含',
72
- // headerFilterOperatorDoesNotContain: 'Does not contain',
74
+ headerFilterOperatorDoesNotContain: '不包含',
73
75
  headerFilterOperatorEquals: '等于',
74
- // headerFilterOperatorDoesNotEqual: 'Does not equal',
76
+ headerFilterOperatorDoesNotEqual: '不等于',
75
77
  headerFilterOperatorStartsWith: '开始于',
76
78
  headerFilterOperatorEndsWith: '结束于',
77
79
  headerFilterOperatorIs: '是',
package/locales/zhHK.js CHANGED
@@ -34,6 +34,7 @@ const zhHKGrid = {
34
34
  // columnsManagementNoColumns: 'No columns',
35
35
  // columnsManagementShowHideAllText: 'Show/Hide All',
36
36
  // columnsManagementReset: 'Reset',
37
+ // columnsManagementDeleteIconLabel: 'Clear',
37
38
 
38
39
  // Filter panel text
39
40
  filterPanelAddFilter: '新增過濾器',
package/locales/zhTW.js CHANGED
@@ -34,6 +34,7 @@ const zhTWGrid = {
34
34
  // columnsManagementNoColumns: 'No columns',
35
35
  // columnsManagementShowHideAllText: 'Show/Hide All',
36
36
  // columnsManagementReset: 'Reset',
37
+ // columnsManagementDeleteIconLabel: 'Clear',
37
38
 
38
39
  // Filter panel text
39
40
  filterPanelAddFilter: '增加篩選器',
@@ -35,6 +35,7 @@ export interface GridLocaleText {
35
35
  columnsManagementNoColumns: string;
36
36
  columnsManagementShowHideAllText: string;
37
37
  columnsManagementReset: string;
38
+ columnsManagementDeleteIconLabel: string;
38
39
  filterPanelAddFilter: React.ReactNode;
39
40
  filterPanelRemoveAll: React.ReactNode;
40
41
  filterPanelDeleteIconLabel: string;
@@ -613,7 +613,7 @@ export interface DataGridPropsWithoutDefaultValue<R extends GridValidRowModel =
613
613
  * @param {GridPaginationModel} model Updated pagination model.
614
614
  * @param {GridCallbackDetails} details Additional details for this callback.
615
615
  */
616
- onPaginationModelChange?: (model: GridPaginationModel, details: GridCallbackDetails) => void;
616
+ onPaginationModelChange?: (model: GridPaginationModel, details: GridCallbackDetails<'pagination'>) => void;
617
617
  /**
618
618
  * Callback fired when the row count has changed.
619
619
  * @param {number} count Updated row count.
@@ -1,4 +1,3 @@
1
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2
1
  export function GridDetailPanels(_) {
3
2
  return null;
4
3
  }
@@ -1,4 +1,3 @@
1
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2
1
  export function GridPinnedRows(_) {
3
2
  return null;
4
3
  }
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["selected", "rowId", "row", "index", "style", "rowHeight", "className", "visibleColumns", "pinnedColumns", "offsetTop", "offsetLeft", "dimensions", "renderContext", "focusedColumnIndex", "isFirstVisible", "isLastVisible", "isNotVisible", "showBottomBorder", "focusedCell", "tabbableCell", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseOver"];
3
+ const _excluded = ["selected", "rowId", "row", "index", "style", "rowHeight", "className", "visibleColumns", "pinnedColumns", "offsetTop", "offsetLeft", "dimensions", "renderContext", "focusedColumnIndex", "isFirstVisible", "isLastVisible", "isNotVisible", "showBottomBorder", "tabbableCell", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseOver"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
@@ -4,12 +4,11 @@ import PropTypes from 'prop-types';
4
4
  import { styled } from '@mui/system';
5
5
  import composeClasses from '@mui/utils/composeClasses';
6
6
  import clsx from 'clsx';
7
+ import { minimalContentHeight } from "../../hooks/features/rows/gridRowsUtils.js";
7
8
  import { useGridSelector } from "../../hooks/utils/useGridSelector.js";
8
9
  import { gridDimensionsSelector } from "../../hooks/features/dimensions/index.js";
9
10
  import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
10
11
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
11
- import { useGridVisibleRows } from "../../hooks/utils/useGridVisibleRows.js";
12
- import { getMinimalContentHeight } from "../../hooks/features/rows/gridRowsUtils.js";
13
12
  import { getDataGridUtilityClass } from "../../constants/gridClasses.js";
14
13
  import { jsx as _jsx } from "react/jsx-runtime";
15
14
  const GridOverlayWrapperRoot = styled('div', {
@@ -26,6 +25,7 @@ loadingOverlayVariant !== 'skeleton' ? {
26
25
  position: 'sticky',
27
26
  // To stay in place while scrolling
28
27
  top: 'var(--DataGrid-headersTotalHeight)',
28
+ // TODO: take pinned rows into account
29
29
  left: 0,
30
30
  width: 0,
31
31
  // To stay above the content instead of shifting it down
@@ -53,11 +53,10 @@ const useUtilityClasses = ownerState => {
53
53
  function GridOverlayWrapper(props) {
54
54
  const apiRef = useGridApiContext();
55
55
  const rootProps = useGridRootProps();
56
- const currentPage = useGridVisibleRows(apiRef, rootProps);
57
56
  const dimensions = useGridSelector(apiRef, gridDimensionsSelector);
58
- let height = dimensions.viewportOuterSize.height - dimensions.topContainerHeight - dimensions.bottomContainerHeight - (dimensions.hasScrollX ? dimensions.scrollbarSize : 0);
59
- if (rootProps.autoHeight && currentPage.rows.length === 0 || height === 0) {
60
- height = getMinimalContentHeight(apiRef);
57
+ let height = Math.max(dimensions.viewportOuterSize.height - dimensions.topContainerHeight - dimensions.bottomContainerHeight - (dimensions.hasScrollX ? dimensions.scrollbarSize : 0), 0);
58
+ if (height === 0) {
59
+ height = minimalContentHeight;
61
60
  }
62
61
  const classes = useUtilityClasses(_extends({}, props, {
63
62
  classes: rootProps.classes
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["column", "rowId", "editCellState", "align", "children", "colIndex", "width", "className", "style", "gridHasScrollX", "colSpan", "disableDragEvents", "isNotVisible", "pinnedOffset", "pinnedPosition", "sectionIndex", "sectionLength", "gridHasFiller", "onClick", "onDoubleClick", "onMouseDown", "onMouseUp", "onMouseOver", "onKeyDown", "onKeyUp", "onDragEnter", "onDragOver"],
3
+ const _excluded = ["column", "rowId", "editCellState", "align", "children", "colIndex", "width", "className", "style", "colSpan", "disableDragEvents", "isNotVisible", "pinnedOffset", "pinnedPosition", "sectionIndex", "sectionLength", "gridHasFiller", "onClick", "onDoubleClick", "onMouseDown", "onMouseUp", "onMouseOver", "onKeyDown", "onKeyUp", "onDragEnter", "onDragOver"],
4
4
  _excluded2 = ["changeReason", "unstable_updateValueOnRender"];
5
5
  import * as React from 'react';
6
6
  import PropTypes from 'prop-types';
@@ -342,7 +342,6 @@ process.env.NODE_ENV !== "production" ? GridCell.propTypes = {
342
342
  // | To update them edit the TypeScript types and run "pnpm proptypes" |
343
343
  // ----------------------------------------------------------------------
344
344
  align: PropTypes.oneOf(['center', 'left', 'right']).isRequired,
345
- className: PropTypes.string,
346
345
  colIndex: PropTypes.number.isRequired,
347
346
  colSpan: PropTypes.number,
348
347
  column: PropTypes.object.isRequired,
@@ -355,13 +354,6 @@ process.env.NODE_ENV !== "production" ? GridCell.propTypes = {
355
354
  }),
356
355
  gridHasFiller: PropTypes.bool.isRequired,
357
356
  isNotVisible: PropTypes.bool.isRequired,
358
- onClick: PropTypes.func,
359
- onDoubleClick: PropTypes.func,
360
- onDragEnter: PropTypes.func,
361
- onDragOver: PropTypes.func,
362
- onKeyDown: PropTypes.func,
363
- onMouseDown: PropTypes.func,
364
- onMouseUp: PropTypes.func,
365
357
  pinnedOffset: PropTypes.number.isRequired,
366
358
  pinnedPosition: PropTypes.oneOf([0, 1, 2, 3]).isRequired,
367
359
  rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
@@ -2,7 +2,6 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  const _excluded = ["id", "value", "formattedValue", "api", "field", "row", "rowNode", "colDef", "cellMode", "isEditable", "tabIndex", "hasFocus", "isValidating", "debounceMs", "isProcessingProps", "onValueChange"];
4
4
  import * as React from 'react';
5
- import PropTypes from 'prop-types';
6
5
  import { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
7
6
  import { styled } from '@mui/material/styles';
8
7
  import InputBase from '@mui/material/InputBase';
@@ -94,71 +93,5 @@ const GridEditInputCell = /*#__PURE__*/React.forwardRef((props, ref) => {
94
93
  }) : undefined
95
94
  }, other));
96
95
  });
97
- process.env.NODE_ENV !== "production" ? GridEditInputCell.propTypes = {
98
- // ----------------------------- Warning --------------------------------
99
- // | These PropTypes are generated from the TypeScript type definitions |
100
- // | To update them edit the TypeScript types and run "pnpm proptypes" |
101
- // ----------------------------------------------------------------------
102
- /**
103
- * GridApi that let you manipulate the grid.
104
- */
105
- api: PropTypes.object.isRequired,
106
- /**
107
- * The mode of the cell.
108
- */
109
- cellMode: PropTypes.oneOf(['edit', 'view']).isRequired,
110
- changeReason: PropTypes.oneOf(['debouncedSetEditCellValue', 'setEditCellValue']),
111
- /**
112
- * The column of the row that the current cell belongs to.
113
- */
114
- colDef: PropTypes.object.isRequired,
115
- debounceMs: PropTypes.number,
116
- /**
117
- * The column field of the cell that triggered the event.
118
- */
119
- field: PropTypes.string.isRequired,
120
- /**
121
- * The cell value formatted with the column valueFormatter.
122
- */
123
- formattedValue: PropTypes.any,
124
- /**
125
- * If true, the cell is the active element.
126
- */
127
- hasFocus: PropTypes.bool.isRequired,
128
- /**
129
- * The grid row id.
130
- */
131
- id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
132
- /**
133
- * If true, the cell is editable.
134
- */
135
- isEditable: PropTypes.bool,
136
- isProcessingProps: PropTypes.bool,
137
- isValidating: PropTypes.bool,
138
- /**
139
- * Callback called when the value is changed by the user.
140
- * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.
141
- * @param {Date | null} newValue The value that is going to be passed to `apiRef.current.setEditCellValue`.
142
- * @returns {Promise<void> | void} A promise to be awaited before calling `apiRef.current.setEditCellValue`
143
- */
144
- onValueChange: PropTypes.func,
145
- /**
146
- * The row model of the row that the current cell belongs to.
147
- */
148
- row: PropTypes.any.isRequired,
149
- /**
150
- * The node of the row that the current cell belongs to.
151
- */
152
- rowNode: PropTypes.object.isRequired,
153
- /**
154
- * the tabIndex value.
155
- */
156
- tabIndex: PropTypes.oneOf([-1, 0]).isRequired,
157
- /**
158
- * The cell value.
159
- * If the column has `valueGetter`, use `params.row` to directly access the fields.
160
- */
161
- value: PropTypes.any
162
- } : void 0;
163
96
  export { GridEditInputCell };
164
97
  export const renderEditInputCell = params => /*#__PURE__*/_jsx(GridEditInputCell, _extends({}, params));
@@ -5,6 +5,8 @@ import PropTypes from 'prop-types';
5
5
  import composeClasses from '@mui/utils/composeClasses';
6
6
  import FormControlLabel from '@mui/material/FormControlLabel';
7
7
  import { styled } from '@mui/material/styles';
8
+ import TextField from '@mui/material/TextField';
9
+ import { inputBaseClasses } from '@mui/material/InputBase';
8
10
  import { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from "../../hooks/features/columns/gridColumnsSelector.js";
9
11
  import { useGridSelector } from "../../hooks/utils/useGridSelector.js";
10
12
  import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
@@ -20,6 +22,7 @@ const useUtilityClasses = ownerState => {
20
22
  const slots = {
21
23
  root: ['columnsManagement'],
22
24
  header: ['columnsManagementHeader'],
25
+ searchInput: ['columnsManagementSearchInput'],
23
26
  footer: ['columnsManagementFooter'],
24
27
  row: ['columnsManagementRow']
25
28
  };
@@ -42,7 +45,8 @@ function GridColumnsManagement(props) {
42
45
  disableShowHideToggle = false,
43
46
  disableResetButton = false,
44
47
  toggleAllMode = 'all',
45
- getTogglableColumns
48
+ getTogglableColumns,
49
+ searchInputProps
46
50
  } = props;
47
51
  const isResetDisabled = React.useMemo(() => checkColumnVisibilityModelsSame(columnVisibilityModel, initialColumnVisibilityModel), [columnVisibilityModel, initialColumnVisibilityModel]);
48
52
  const sortedColumns = React.useMemo(() => {
@@ -109,28 +113,52 @@ function GridColumnsManagement(props) {
109
113
  }
110
114
  return false;
111
115
  };
116
+ const handleSearchReset = React.useCallback(() => {
117
+ setSearchValue('');
118
+ searchInputRef.current.focus();
119
+ }, []);
112
120
  return /*#__PURE__*/_jsxs(React.Fragment, {
113
121
  children: [/*#__PURE__*/_jsx(GridColumnsManagementHeader, {
114
122
  className: classes.header,
115
123
  ownerState: rootProps,
116
- children: /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({
124
+ children: /*#__PURE__*/_jsx(SearchInput, _extends({
125
+ as: rootProps.slots.baseTextField,
126
+ ownerState: rootProps,
117
127
  placeholder: apiRef.current.getLocaleText('columnsManagementSearchTitle'),
118
128
  inputRef: searchInputRef,
129
+ className: classes.searchInput,
119
130
  value: searchValue,
120
131
  onChange: handleSearchValueChange,
121
132
  variant: "outlined",
122
133
  size: "small",
134
+ type: "search",
123
135
  InputProps: {
124
136
  startAdornment: /*#__PURE__*/_jsx(rootProps.slots.baseInputAdornment, {
125
137
  position: "start",
126
138
  children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterIcon, {})
127
139
  }),
128
- sx: {
129
- pl: 1.5
130
- }
140
+ endAdornment: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, _extends({
141
+ "aria-label": apiRef.current.getLocaleText('columnsManagementDeleteIconLabel'),
142
+ size: "small",
143
+ sx: [searchValue ? {
144
+ visibility: 'visible'
145
+ } : {
146
+ visibility: 'hidden'
147
+ }],
148
+ tabIndex: -1,
149
+ onClick: handleSearchReset
150
+ }, rootProps.slotProps?.baseIconButton, {
151
+ children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterClearIcon, {
152
+ fontSize: "small"
153
+ })
154
+ }))
155
+ },
156
+ inputProps: {
157
+ 'aria-label': apiRef.current.getLocaleText('columnsManagementSearchTitle')
131
158
  },
159
+ autoComplete: "off",
132
160
  fullWidth: true
133
- }, rootProps.slotProps?.baseTextField))
161
+ }, rootProps.slotProps?.baseTextField, searchInputProps))
134
162
  }), /*#__PURE__*/_jsxs(GridColumnsManagementBody, {
135
163
  className: classes.root,
136
164
  ownerState: rootProps,
@@ -205,6 +233,7 @@ process.env.NODE_ENV !== "production" ? GridColumnsManagement.propTypes = {
205
233
  * @returns {GridColDef['field'][]} The list of togglable columns' field names.
206
234
  */
207
235
  getTogglableColumns: PropTypes.func,
236
+ searchInputProps: PropTypes.object,
208
237
  searchPredicate: PropTypes.func,
209
238
  sort: PropTypes.oneOf(['asc', 'desc']),
210
239
  /**
@@ -239,6 +268,24 @@ const GridColumnsManagementHeader = styled('div', {
239
268
  }) => ({
240
269
  padding: theme.spacing(1.5, 3)
241
270
  }));
271
+ const SearchInput = styled(TextField, {
272
+ name: 'MuiDataGrid',
273
+ slot: 'ColumnsManagementSearchInput',
274
+ overridesResolver: (props, styles) => styles.columnsManagementSearchInput
275
+ })(({
276
+ theme
277
+ }) => ({
278
+ [`& .${inputBaseClasses.root}`]: {
279
+ padding: theme.spacing(0, 1.5, 0, 1.5)
280
+ },
281
+ [`& .${inputBaseClasses.input}::-webkit-search-decoration,
282
+ & .${inputBaseClasses.input}::-webkit-search-cancel-button,
283
+ & .${inputBaseClasses.input}::-webkit-search-results-button,
284
+ & .${inputBaseClasses.input}::-webkit-search-results-decoration`]: {
285
+ /* clears the 'X' icon from Chrome */
286
+ display: 'none'
287
+ }
288
+ }));
242
289
  const GridColumnsManagementFooter = styled('div', {
243
290
  name: 'MuiDataGrid',
244
291
  slot: 'ColumnsManagementFooter',
@@ -14,14 +14,15 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
14
  const GridToolbar = /*#__PURE__*/React.forwardRef(function GridToolbar(props, ref) {
15
15
  // TODO v7: think about where export option should be passed.
16
16
  // from slotProps={{ toolbarExport: { ...exportOption } }} seems to be more appropriate
17
- const {
17
+ const _ref = props,
18
+ {
18
19
  csvOptions,
19
20
  printOptions,
20
21
  excelOptions,
21
22
  showQuickFilter = false,
22
23
  quickFilterProps = {}
23
- } = props,
24
- other = _objectWithoutPropertiesLoose(props, _excluded);
24
+ } = _ref,
25
+ other = _objectWithoutPropertiesLoose(_ref, _excluded);
25
26
  const rootProps = useGridRootProps();
26
27
  if (rootProps.disableColumnFilter && rootProps.disableColumnSelector && rootProps.disableDensitySelector && !showQuickFilter) {
27
28
  return null;
@@ -32,7 +33,7 @@ const GridToolbar = /*#__PURE__*/React.forwardRef(function GridToolbar(props, re
32
33
  children: [/*#__PURE__*/_jsx(GridToolbarColumnsButton, {}), /*#__PURE__*/_jsx(GridToolbarFilterButton, {}), /*#__PURE__*/_jsx(GridToolbarDensitySelector, {}), /*#__PURE__*/_jsx(GridToolbarExport, {
33
34
  csvOptions: csvOptions,
34
35
  printOptions: printOptions
35
- // TODO: remove the reference to excelOptions in community package
36
+ // @ts-ignore
36
37
  ,
37
38
  excelOptions: excelOptions
38
39
  }), /*#__PURE__*/_jsx("div", {
@@ -47,6 +48,8 @@ process.env.NODE_ENV !== "production" ? GridToolbar.propTypes = {
47
48
  // | These PropTypes are generated from the TypeScript type definitions |
48
49
  // | To update them edit the TypeScript types and run "pnpm proptypes" |
49
50
  // ----------------------------------------------------------------------
51
+ csvOptions: PropTypes.object,
52
+ printOptions: PropTypes.object,
50
53
  /**
51
54
  * Props passed to the quick filter component.
52
55
  */
@@ -56,6 +59,11 @@ process.env.NODE_ENV !== "production" ? GridToolbar.propTypes = {
56
59
  * @default false
57
60
  */
58
61
  showQuickFilter: PropTypes.bool,
62
+ /**
63
+ * The props used for each slot inside.
64
+ * @default {}
65
+ */
66
+ slotProps: PropTypes.object,
59
67
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
60
68
  } : void 0;
61
69
  export { GridToolbar };
@@ -82,12 +82,13 @@ process.env.NODE_ENV !== "production" ? GridPrintExportMenuItem.propTypes = {
82
82
  })
83
83
  } : void 0;
84
84
  const GridToolbarExport = /*#__PURE__*/React.forwardRef(function GridToolbarExport(props, ref) {
85
- const {
85
+ const _ref = props,
86
+ {
86
87
  csvOptions = {},
87
88
  printOptions = {},
88
89
  excelOptions
89
- } = props,
90
- other = _objectWithoutPropertiesLoose(props, _excluded3);
90
+ } = _ref,
91
+ other = _objectWithoutPropertiesLoose(_ref, _excluded3);
91
92
  const apiRef = useGridApiContext();
92
93
  const preProcessedButtons = apiRef.current.unstable_applyPipeProcessors('exportMenu', [], {
93
94
  excelOptions,
@@ -2,4 +2,4 @@ import { unstable_generateUtilityClasses as generateUtilityClasses, unstable_gen
2
2
  export function getDataGridUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiDataGrid', slot);
4
4
  }
5
- export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeader--lastUnpinned', 'columnHeader--siblingFocused', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementFooter', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hasSkeletonLoadingOverlay', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--borderBottom', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'groupingCriteriaCellLoadingContainer', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
5
+ export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeader--lastUnpinned', 'columnHeader--siblingFocused', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hasSkeletonLoadingOverlay', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--borderBottom', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'groupingCriteriaCellLoadingContainer', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
@@ -32,6 +32,7 @@ export const GRID_DEFAULT_LOCALE_TEXT = {
32
32
  columnsManagementNoColumns: 'No columns',
33
33
  columnsManagementShowHideAllText: 'Show/Hide All',
34
34
  columnsManagementReset: 'Reset',
35
+ columnsManagementDeleteIconLabel: 'Clear',
35
36
  // Filter panel text
36
37
  filterPanelAddFilter: 'Add filter',
37
38
  filterPanelRemoveAll: 'Remove all',
@@ -291,7 +291,7 @@ export const useGridColumnHeaders = props => {
291
291
  pinnedPosition: pinnedPosition,
292
292
  style: style,
293
293
  indexInSection: indexInSection,
294
- sectionLength: rowStructure.length,
294
+ sectionLength: visibleColumnGroupHeader.length,
295
295
  gridHasFiller: gridHasFiller
296
296
  }, index);
297
297
  });
@@ -5,7 +5,7 @@ import { exportAs } from "../../../utils/exportAs.js";
5
5
  import { buildCSV } from "./serializers/csvSerializer.js";
6
6
  import { getColumnsToExport, defaultGetRowsToExport } from "./utils.js";
7
7
  import { useGridRegisterPipeProcessor } from "../../core/pipeProcessing/index.js";
8
- import { GridCsvExportMenuItem } from "../../../components/toolbar/GridToolbarExport.js";
8
+ import { GridCsvExportMenuItem } from "../../../components/toolbar/index.js";
9
9
  import { jsx as _jsx } from "react/jsx-runtime";
10
10
  /**
11
11
  * @requires useGridColumns (state)
@@ -11,7 +11,7 @@ import { GRID_ID_AUTOGENERATED } from "../rows/gridRowsUtils.js";
11
11
  import { defaultGetRowsToExport, getColumnsToExport } from "./utils.js";
12
12
  import { getDerivedPaginationModel } from "../pagination/useGridPaginationModel.js";
13
13
  import { useGridRegisterPipeProcessor } from "../../core/pipeProcessing/index.js";
14
- import { GridPrintExportMenuItem } from "../../../components/toolbar/GridToolbarExport.js";
14
+ import { GridPrintExportMenuItem } from "../../../components/toolbar/index.js";
15
15
  import { getTotalHeaderHeight } from "../columns/gridColumnsUtils.js";
16
16
  import { GRID_CHECKBOX_SELECTION_COL_DEF } from "../../../colDef/gridCheckboxSelectionColDef.js";
17
17
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -75,7 +75,7 @@ export const useGridPaginationModel = (apiRef, props) => {
75
75
  pagination: _extends({}, state.pagination, {
76
76
  paginationModel: getDerivedPaginationModel(state.pagination, props.signature, paginationModel)
77
77
  })
78
- }));
78
+ }), 'setPaginationModel');
79
79
  }, [apiRef, logger, props.signature]);
80
80
  const paginationModelApi = {
81
81
  setPage,
@@ -113,7 +113,7 @@ export const useGridPaginationModel = (apiRef, props) => {
113
113
  pagination: _extends({}, state.pagination, {
114
114
  paginationModel: getDerivedPaginationModel(state.pagination, props.signature, paginationModel)
115
115
  })
116
- }));
116
+ }), 'stateRestorePreProcessing');
117
117
  return params;
118
118
  }, [apiRef, props.autoPageSize, props.signature]);
119
119
  useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
@@ -1,6 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import { gridPinnedRowsSelector } from "./gridRowsSelector.js";
3
- import { gridDimensionsSelector } from "../dimensions/gridDimensionsSelectors.js";
4
3
  export const GRID_ROOT_GROUP_ID = `auto-generated-group-node-root`;
5
4
  export const GRID_ID_AUTOGENERATED = Symbol('mui.id_autogenerated');
6
5
  export const buildRootGroup = () => ({
@@ -285,10 +284,7 @@ export function calculatePinnedRowsHeight(apiRef) {
285
284
  bottom: bottomPinnedRowsHeight
286
285
  };
287
286
  }
288
- export function getMinimalContentHeight(apiRef) {
289
- const dimensions = gridDimensionsSelector(apiRef.current.state);
290
- return `var(--DataGrid-overlayHeight, ${2 * dimensions.rowHeight}px)`;
291
- }
287
+ export const minimalContentHeight = 'var(--DataGrid-overlayHeight, calc(var(--height) * 2))';
292
288
  export function computeRowsUpdates(apiRef, updates, getRowId) {
293
289
  const nonPinnedRowsUpdates = [];
294
290
  updates.forEach(update => {
@@ -21,11 +21,11 @@ import { clamp, range } from "../../../utils/utils.js";
21
21
  import { selectedIdsLookupSelector } from "../rowSelection/gridRowSelectionSelector.js";
22
22
  import { gridRowsMetaSelector } from "../rows/gridRowsMetaSelector.js";
23
23
  import { getFirstNonSpannedColumnToRender } from "../columns/gridColumnsUtils.js";
24
- import { getMinimalContentHeight } from "../rows/gridRowsUtils.js";
25
24
  import { gridRenderContextSelector, gridVirtualizationRowEnabledSelector, gridVirtualizationColumnEnabledSelector } from "./gridVirtualizationSelectors.js";
26
25
  import { EMPTY_RENDER_CONTEXT } from "./useGridVirtualization.js";
27
26
  import { gridRowSpanningHiddenCellsOriginMapSelector } from "../rows/gridRowSpanningSelectors.js";
28
27
  import { gridListColumnSelector } from "../listView/gridListViewSelectors.js";
28
+ import { minimalContentHeight } from "../rows/gridRowsUtils.js";
29
29
  import { jsx as _jsx } from "react/jsx-runtime";
30
30
  const MINIMUM_COLUMN_WIDTH = 50;
31
31
  var ScrollDirection = /*#__PURE__*/function (ScrollDirection) {
@@ -381,11 +381,11 @@ export const useGridVirtualScroller = () => {
381
381
  flexBasis: contentHeight,
382
382
  flexShrink: 0
383
383
  };
384
- if (rootProps.autoHeight && currentPage.rows.length === 0) {
385
- size.flexBasis = getMinimalContentHeight(apiRef); // Give room to show the overlay when there no rows.
384
+ if (size.flexBasis === 0) {
385
+ size.flexBasis = minimalContentHeight; // Give room to show the overlay when there no rows.
386
386
  }
387
387
  return size;
388
- }, [apiRef, columnsTotalWidth, contentHeight, needsHorizontalScrollbar, rootProps.autoHeight, currentPage.rows.length]);
388
+ }, [columnsTotalWidth, contentHeight, needsHorizontalScrollbar]);
389
389
  React.useEffect(() => {
390
390
  apiRef.current.publishEvent('virtualScrollerContentSizeChange');
391
391
  }, [apiRef, contentSize]);
@@ -23,10 +23,26 @@ function applySelectorV8(apiRef, selector, args, instanceId) {
23
23
  }
24
24
  const defaultCompare = Object.is;
25
25
  export const objectShallowCompare = fastObjectShallowCompare;
26
+ const arrayShallowCompare = (a, b) => {
27
+ if (a === b) {
28
+ return true;
29
+ }
30
+ return a.length === b.length && a.every((v, i) => v === b[i]);
31
+ };
32
+ export const argsEqual = (prev, curr) => {
33
+ let fn = Object.is;
34
+ if (curr instanceof Array) {
35
+ fn = arrayShallowCompare;
36
+ } else if (curr instanceof Object) {
37
+ fn = objectShallowCompare;
38
+ }
39
+ return fn(prev, curr);
40
+ };
26
41
  const createRefs = () => ({
27
42
  state: null,
28
43
  equals: null,
29
- selector: null
44
+ selector: null,
45
+ args: null
30
46
  });
31
47
 
32
48
  // TODO v8: Remove this function
@@ -71,9 +87,18 @@ export const useGridSelectorV8 = (apiRef, selector, args = undefined, equals = d
71
87
  refs.current.state = state;
72
88
  refs.current.equals = equals;
73
89
  refs.current.selector = selector;
90
+ const prevArgs = refs.current.args;
91
+ refs.current.args = args;
92
+ if (didInit && !argsEqual(prevArgs, args)) {
93
+ const newState = applySelectorV8(apiRef, refs.current.selector, refs.current.args, apiRef.current.instanceId);
94
+ if (!refs.current.equals(refs.current.state, newState)) {
95
+ refs.current.state = newState;
96
+ setState(newState);
97
+ }
98
+ }
74
99
  useOnMount(() => {
75
100
  return apiRef.current.store.subscribe(() => {
76
- const newState = applySelectorV8(apiRef, refs.current.selector, args, apiRef.current.instanceId);
101
+ const newState = applySelectorV8(apiRef, refs.current.selector, refs.current.args, apiRef.current.instanceId);
77
102
  if (!refs.current.equals(refs.current.state, newState)) {
78
103
  refs.current.state = newState;
79
104
  setState(newState);
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v7.22.2
2
+ * @mui/x-data-grid v7.22.3
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -34,6 +34,7 @@ const arSDGrid = {
34
34
  // columnsManagementNoColumns: 'No columns',
35
35
  // columnsManagementShowHideAllText: 'Show/Hide All',
36
36
  // columnsManagementReset: 'Reset',
37
+ // columnsManagementDeleteIconLabel: 'Clear',
37
38
 
38
39
  // Filter panel text
39
40
  filterPanelAddFilter: 'إضافة مرشِح',
@@ -48,6 +48,7 @@ const beBYGrid = {
48
48
  // columnsManagementNoColumns: 'No columns',
49
49
  // columnsManagementShowHideAllText: 'Show/Hide All',
50
50
  // columnsManagementReset: 'Reset',
51
+ // columnsManagementDeleteIconLabel: 'Clear',
51
52
 
52
53
  // Filter panel text
53
54
  filterPanelAddFilter: 'Дадаць фільтр',