@mui/x-data-grid 6.7.0 → 6.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/CHANGELOG.md +145 -5541
  2. package/components/GridColumnHeaders.d.ts +2 -2
  3. package/components/GridColumnHeaders.js +3 -1
  4. package/components/GridPagination.d.ts +2 -2
  5. package/components/GridRow.d.ts +2 -2
  6. package/components/GridRow.js +33 -79
  7. package/components/cell/GridCell.d.ts +24 -15
  8. package/components/cell/GridCell.js +422 -45
  9. package/components/cell/GridEditInputCell.js +9 -9
  10. package/components/cell/index.d.ts +2 -1
  11. package/components/cell/index.js +1 -1
  12. package/components/containers/GridRootStyles.js +30 -16
  13. package/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
  14. package/components/panel/GridPanel.d.ts +1 -1
  15. package/components/toolbar/GridToolbar.js +2 -2
  16. package/components/virtualization/GridVirtualScroller.js +4 -9
  17. package/components/virtualization/GridVirtualScrollerContent.js +11 -20
  18. package/constants/defaultGridSlotsComponents.js +6 -2
  19. package/hooks/core/useGridApiInitialization.js +4 -1
  20. package/hooks/core/useGridStateInitialization.js +2 -9
  21. package/hooks/features/clipboard/useGridClipboard.js +1 -4
  22. package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +4 -4
  23. package/hooks/features/columnHeaders/useGridColumnHeaders.js +9 -3
  24. package/hooks/features/columns/gridColumnsSelector.js +7 -7
  25. package/hooks/features/dimensions/useGridDimensions.js +6 -12
  26. package/hooks/features/editing/useGridCellEditing.js +5 -3
  27. package/hooks/features/editing/useGridRowEditing.js +14 -6
  28. package/hooks/features/filter/gridFilterSelector.js +8 -8
  29. package/hooks/features/filter/gridFilterUtils.d.ts +4 -1
  30. package/hooks/features/filter/gridFilterUtils.js +19 -13
  31. package/hooks/features/filter/useGridFilter.js +2 -1
  32. package/hooks/features/focus/useGridFocus.js +9 -4
  33. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -3
  34. package/hooks/features/pagination/gridPaginationSelector.js +4 -4
  35. package/hooks/features/rowSelection/gridRowSelectionSelector.js +3 -3
  36. package/hooks/features/rows/gridRowsSelector.js +3 -3
  37. package/hooks/features/rows/useGridParamsApi.d.ts +2 -0
  38. package/hooks/features/rows/useGridParamsApi.js +7 -15
  39. package/hooks/features/sorting/gridSortingSelector.js +3 -3
  40. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +8 -816
  41. package/hooks/features/virtualization/useGridVirtualScroller.js +40 -38
  42. package/hooks/utils/index.d.ts +1 -1
  43. package/hooks/utils/index.js +1 -1
  44. package/hooks/utils/useGridSelector.d.ts +3 -1
  45. package/hooks/utils/useGridSelector.js +37 -6
  46. package/hooks/utils/useLazyRef.d.ts +2 -0
  47. package/hooks/utils/useLazyRef.js +9 -0
  48. package/hooks/utils/useOnMount.d.ts +2 -0
  49. package/hooks/utils/useOnMount.js +7 -0
  50. package/index.js +1 -1
  51. package/internals/index.d.ts +1 -1
  52. package/internals/index.js +1 -1
  53. package/legacy/components/GridColumnHeaders.js +3 -1
  54. package/legacy/components/GridRow.js +35 -79
  55. package/legacy/components/cell/GridCell.js +425 -46
  56. package/legacy/components/cell/GridEditInputCell.js +9 -9
  57. package/legacy/components/cell/index.js +1 -1
  58. package/legacy/components/containers/GridRootStyles.js +20 -17
  59. package/legacy/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
  60. package/legacy/components/toolbar/GridToolbar.js +2 -2
  61. package/legacy/components/virtualization/GridVirtualScroller.js +4 -7
  62. package/legacy/components/virtualization/GridVirtualScrollerContent.js +10 -17
  63. package/legacy/constants/defaultGridSlotsComponents.js +6 -2
  64. package/legacy/hooks/core/useGridApiInitialization.js +4 -1
  65. package/legacy/hooks/core/useGridStateInitialization.js +2 -7
  66. package/legacy/hooks/features/clipboard/useGridClipboard.js +1 -4
  67. package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +4 -4
  68. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +9 -3
  69. package/legacy/hooks/features/columns/gridColumnsSelector.js +7 -7
  70. package/legacy/hooks/features/dimensions/useGridDimensions.js +6 -12
  71. package/legacy/hooks/features/editing/useGridCellEditing.js +5 -3
  72. package/legacy/hooks/features/editing/useGridRowEditing.js +15 -7
  73. package/legacy/hooks/features/filter/gridFilterSelector.js +8 -8
  74. package/legacy/hooks/features/filter/gridFilterUtils.js +23 -19
  75. package/legacy/hooks/features/filter/useGridFilter.js +2 -1
  76. package/legacy/hooks/features/focus/useGridFocus.js +9 -4
  77. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -3
  78. package/legacy/hooks/features/pagination/gridPaginationSelector.js +4 -4
  79. package/legacy/hooks/features/rowSelection/gridRowSelectionSelector.js +3 -3
  80. package/legacy/hooks/features/rows/gridRowsSelector.js +3 -3
  81. package/legacy/hooks/features/rows/useGridParamsApi.js +23 -15
  82. package/legacy/hooks/features/sorting/gridSortingSelector.js +3 -3
  83. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +38 -34
  84. package/legacy/hooks/utils/index.js +1 -1
  85. package/legacy/hooks/utils/useGridSelector.js +43 -5
  86. package/legacy/hooks/utils/useLazyRef.js +9 -0
  87. package/legacy/hooks/utils/useOnMount.js +7 -0
  88. package/legacy/index.js +1 -1
  89. package/legacy/internals/index.js +1 -1
  90. package/legacy/locales/elGR.js +70 -79
  91. package/legacy/locales/ptBR.js +12 -13
  92. package/legacy/utils/Store.js +34 -0
  93. package/legacy/utils/createSelector.js +74 -6
  94. package/legacy/utils/doesSupportPreventScroll.js +13 -0
  95. package/legacy/utils/fastMemo.js +5 -0
  96. package/legacy/utils/fastObjectShallowCompare.js +32 -0
  97. package/legacy/utils/keyboardUtils.js +4 -2
  98. package/locales/elGR.js +66 -79
  99. package/locales/ptBR.js +12 -13
  100. package/models/api/gridCoreApi.d.ts +6 -0
  101. package/models/colDef/gridColDef.d.ts +4 -3
  102. package/models/colDef/gridColType.d.ts +3 -1
  103. package/models/events/gridEventLookup.d.ts +3 -3
  104. package/modern/components/GridColumnHeaders.js +3 -1
  105. package/modern/components/GridRow.js +32 -79
  106. package/modern/components/cell/GridCell.js +421 -45
  107. package/modern/components/cell/GridEditInputCell.js +9 -9
  108. package/modern/components/cell/index.js +1 -1
  109. package/modern/components/containers/GridRootStyles.js +30 -16
  110. package/modern/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
  111. package/modern/components/toolbar/GridToolbar.js +2 -2
  112. package/modern/components/virtualization/GridVirtualScroller.js +4 -9
  113. package/modern/components/virtualization/GridVirtualScrollerContent.js +10 -20
  114. package/modern/constants/defaultGridSlotsComponents.js +6 -2
  115. package/modern/hooks/core/useGridApiInitialization.js +4 -1
  116. package/modern/hooks/core/useGridStateInitialization.js +2 -9
  117. package/modern/hooks/features/clipboard/useGridClipboard.js +1 -4
  118. package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +4 -4
  119. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +9 -3
  120. package/modern/hooks/features/columns/gridColumnsSelector.js +7 -7
  121. package/modern/hooks/features/dimensions/useGridDimensions.js +6 -12
  122. package/modern/hooks/features/editing/useGridCellEditing.js +5 -3
  123. package/modern/hooks/features/editing/useGridRowEditing.js +14 -6
  124. package/modern/hooks/features/filter/gridFilterSelector.js +8 -8
  125. package/modern/hooks/features/filter/gridFilterUtils.js +17 -12
  126. package/modern/hooks/features/filter/useGridFilter.js +2 -1
  127. package/modern/hooks/features/focus/useGridFocus.js +8 -4
  128. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -3
  129. package/modern/hooks/features/pagination/gridPaginationSelector.js +4 -4
  130. package/modern/hooks/features/rowSelection/gridRowSelectionSelector.js +3 -3
  131. package/modern/hooks/features/rows/gridRowsSelector.js +3 -3
  132. package/modern/hooks/features/rows/useGridParamsApi.js +7 -15
  133. package/modern/hooks/features/sorting/gridSortingSelector.js +3 -3
  134. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +40 -38
  135. package/modern/hooks/utils/index.js +1 -1
  136. package/modern/hooks/utils/useGridSelector.js +37 -6
  137. package/modern/hooks/utils/useLazyRef.js +9 -0
  138. package/modern/hooks/utils/useOnMount.js +7 -0
  139. package/modern/index.js +1 -1
  140. package/modern/internals/index.js +1 -1
  141. package/modern/locales/elGR.js +66 -79
  142. package/modern/locales/ptBR.js +12 -13
  143. package/modern/utils/Store.js +24 -0
  144. package/modern/utils/createSelector.js +74 -6
  145. package/modern/utils/doesSupportPreventScroll.js +13 -0
  146. package/modern/utils/fastMemo.js +5 -0
  147. package/modern/utils/fastObjectShallowCompare.js +32 -0
  148. package/modern/utils/keyboardUtils.js +4 -2
  149. package/node/components/GridColumnHeaders.js +4 -2
  150. package/node/components/GridRow.js +32 -79
  151. package/node/components/cell/GridCell.js +424 -47
  152. package/node/components/cell/GridEditInputCell.js +9 -9
  153. package/node/components/cell/index.js +17 -10
  154. package/node/components/containers/GridRootStyles.js +30 -16
  155. package/node/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
  156. package/node/components/toolbar/GridToolbar.js +2 -2
  157. package/node/components/virtualization/GridVirtualScroller.js +4 -9
  158. package/node/components/virtualization/GridVirtualScrollerContent.js +10 -20
  159. package/node/constants/defaultGridSlotsComponents.js +4 -1
  160. package/node/hooks/core/useGridApiInitialization.js +4 -1
  161. package/node/hooks/core/useGridStateInitialization.js +2 -9
  162. package/node/hooks/features/clipboard/useGridClipboard.js +1 -4
  163. package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +3 -3
  164. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +8 -2
  165. package/node/hooks/features/columns/gridColumnsSelector.js +6 -6
  166. package/node/hooks/features/dimensions/useGridDimensions.js +6 -12
  167. package/node/hooks/features/editing/useGridCellEditing.js +5 -3
  168. package/node/hooks/features/editing/useGridRowEditing.js +14 -6
  169. package/node/hooks/features/filter/gridFilterSelector.js +7 -7
  170. package/node/hooks/features/filter/gridFilterUtils.js +17 -12
  171. package/node/hooks/features/filter/useGridFilter.js +2 -1
  172. package/node/hooks/features/focus/useGridFocus.js +8 -4
  173. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -3
  174. package/node/hooks/features/pagination/gridPaginationSelector.js +3 -3
  175. package/node/hooks/features/rowSelection/gridRowSelectionSelector.js +2 -2
  176. package/node/hooks/features/rows/gridRowsSelector.js +2 -2
  177. package/node/hooks/features/rows/useGridParamsApi.js +9 -15
  178. package/node/hooks/features/sorting/gridSortingSelector.js +2 -2
  179. package/node/hooks/features/virtualization/useGridVirtualScroller.js +40 -36
  180. package/node/hooks/utils/index.js +14 -10
  181. package/node/hooks/utils/useGridSelector.js +41 -7
  182. package/node/hooks/utils/useLazyRef.js +17 -0
  183. package/node/hooks/utils/useOnMount.js +15 -0
  184. package/node/index.js +1 -1
  185. package/node/internals/index.js +7 -0
  186. package/node/locales/elGR.js +66 -79
  187. package/node/locales/ptBR.js +12 -13
  188. package/node/utils/Store.js +31 -0
  189. package/node/utils/createSelector.js +77 -8
  190. package/node/utils/doesSupportPreventScroll.js +19 -0
  191. package/node/utils/fastMemo.js +13 -0
  192. package/node/utils/fastObjectShallowCompare.js +38 -0
  193. package/node/utils/keyboardUtils.js +4 -2
  194. package/package.json +2 -2
  195. package/utils/Store.d.ts +11 -0
  196. package/utils/Store.js +24 -0
  197. package/utils/createSelector.d.ts +1 -0
  198. package/utils/createSelector.js +74 -6
  199. package/utils/doesSupportPreventScroll.d.ts +1 -0
  200. package/utils/doesSupportPreventScroll.js +13 -0
  201. package/utils/fastMemo.d.ts +1 -0
  202. package/utils/fastMemo.js +5 -0
  203. package/utils/fastObjectShallowCompare.d.ts +1 -0
  204. package/utils/fastObjectShallowCompare.js +32 -0
  205. package/utils/keyboardUtils.js +4 -2
package/locales/ptBR.js CHANGED
@@ -68,12 +68,12 @@ const ptBRGrid = {
68
68
  // 'filterOperator<=': '<=',
69
69
 
70
70
  // Header filter operators text
71
- // headerFilterOperatorContains: 'Contains',
72
- // headerFilterOperatorEquals: 'Equals',
73
- // headerFilterOperatorStartsWith: 'Starts with',
74
- // headerFilterOperatorEndsWith: 'Ends with',
75
- // headerFilterOperatorIs: 'Is',
76
- // headerFilterOperatorNot: 'Is not',
71
+ headerFilterOperatorContains: 'Contém',
72
+ headerFilterOperatorEquals: 'Igual',
73
+ headerFilterOperatorStartsWith: 'Começa com',
74
+ headerFilterOperatorEndsWith: 'Termina com',
75
+ headerFilterOperatorIs: 'É',
76
+ headerFilterOperatorNot: 'Não é',
77
77
  // headerFilterOperatorAfter: 'Is after',
78
78
  // headerFilterOperatorOnOrAfter: 'Is on or after',
79
79
  // headerFilterOperatorBefore: 'Is before',
@@ -81,13 +81,12 @@ const ptBRGrid = {
81
81
  // headerFilterOperatorIsEmpty: 'Is empty',
82
82
  // headerFilterOperatorIsNotEmpty: 'Is not empty',
83
83
  // headerFilterOperatorIsAnyOf: 'Is any of',
84
- // 'headerFilterOperator=': 'Equals',
85
- // 'headerFilterOperator!=': 'Not equals',
86
- // 'headerFilterOperator>': 'Greater than',
87
- // 'headerFilterOperator>=': 'Greater than or equal to',
88
- // 'headerFilterOperator<': 'Less than',
89
- // 'headerFilterOperator<=': 'Less than or equal to',
90
-
84
+ 'headerFilterOperator=': 'Igual',
85
+ 'headerFilterOperator!=': 'Não igual',
86
+ 'headerFilterOperator>': 'Maior que',
87
+ 'headerFilterOperator>=': 'Maior que ou igual a',
88
+ 'headerFilterOperator<': 'Menor que',
89
+ 'headerFilterOperator<=': 'Menor que ou igual a',
91
90
  // Filter values text
92
91
  filterValueAny: 'qualquer',
93
92
  filterValueTrue: 'verdadeiro',
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { GridEventPublisher, GridEventListener, GridEvents } from '../events';
3
+ import { Store } from '../../utils/Store';
3
4
  import { EventManager, EventListenerOptions } from '../../utils/EventManager';
4
5
  import { GridApiCaches } from '../gridApiCaches';
5
6
  import type { GridApiCommon, GridPrivateApiCommon } from './gridApiCommon';
@@ -34,6 +35,11 @@ export interface GridCoreApi {
34
35
  instanceId: {
35
36
  id: number;
36
37
  };
38
+ /**
39
+ * The pub/sub store containing a reference to the public state.
40
+ * @ignore - do not document.
41
+ */
42
+ store: Store<GridApiCommon['state']>;
37
43
  }
38
44
  export interface GridCorePrivateApi<GridPublicApi extends GridApiCommon, GridPrivateApi extends GridPrivateApiCommon> {
39
45
  /**
@@ -102,8 +102,9 @@ export interface GridBaseColDef<R extends GridValidRowModel = GridValidRowModel,
102
102
  */
103
103
  sortComparator?: GridComparatorFn<V>;
104
104
  /**
105
- * Type allows to merge this object with a default definition [[GridColDef]].
105
+ * The type of the column.
106
106
  * @default 'string'
107
+ * @see See {@link https://mui.com/x/react-data-grid/column-definition/#column-types column types docs} for more details.
107
108
  */
108
109
  type?: GridColType;
109
110
  /**
@@ -230,7 +231,7 @@ export interface GridBaseColDef<R extends GridValidRowModel = GridValidRowModel,
230
231
  */
231
232
  export interface GridActionsColDef<R extends GridValidRowModel = any, V = any, F = V> extends GridBaseColDef<R, V, F> {
232
233
  /**
233
- * Type allows to merge this object with a default definition [[GridColDef]].
234
+ * The type of the column.
234
235
  * @default 'actions'
235
236
  */
236
237
  type: 'actions';
@@ -248,7 +249,7 @@ export interface GridActionsColDef<R extends GridValidRowModel = any, V = any, F
248
249
  */
249
250
  export interface GridSingleSelectColDef<R extends GridValidRowModel = any, V = any, F = V> extends GridBaseColDef<R, V, F> {
250
251
  /**
251
- * Type allows to merge this object with a default definition [[GridColDef]].
252
+ * The type of the column.
252
253
  * @default 'singleSelect'
253
254
  */
254
255
  type: 'singleSelect';
@@ -1,2 +1,4 @@
1
+ type LiteralUnion<LiteralType, BaseType> = LiteralType | (BaseType & Record<never, never>);
1
2
  export type GridNativeColTypes = 'string' | 'number' | 'date' | 'dateTime' | 'boolean' | 'singleSelect' | 'actions';
2
- export type GridColType = GridNativeColTypes | string;
3
+ export type GridColType = LiteralUnion<GridNativeColTypes, string>;
4
+ export {};
@@ -563,20 +563,20 @@ export interface GridEventLookup extends GridRowEventLookup, GridColumnHeaderEve
563
563
  event: React.TouchEvent;
564
564
  };
565
565
  /**
566
- * Fired when the value of the selection checkbox of the header is changed
566
+ * Fired when the value of the selection checkbox of the header is changed.
567
567
  */
568
568
  headerSelectionCheckboxChange: {
569
569
  params: GridHeaderSelectionCheckboxParams;
570
570
  };
571
571
  /**
572
- * Fired when the value of the selection checkbox of a row is changed
572
+ * Fired when the value of the selection checkbox of a row is changed.
573
573
  */
574
574
  rowSelectionCheckboxChange: {
575
575
  params: GridRowSelectionCheckboxParams;
576
576
  event: React.ChangeEvent<HTMLElement>;
577
577
  };
578
578
  /**
579
- * Fired when the data is copied to the clipboard
579
+ * Fired when the data is copied to the clipboard.
580
580
  */
581
581
  clipboardCopy: {
582
582
  params: string;
@@ -3,6 +3,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  const _excluded = ["innerRef", "className", "visibleColumns", "sortColumnLookup", "filterColumnLookup", "columnPositions", "columnHeaderTabIndexState", "columnGroupHeaderTabIndexState", "columnHeaderFocus", "columnGroupHeaderFocus", "densityFactor", "headerGroupingMaxDepth", "columnMenuState", "columnVisibility", "columnGroupsHeaderStructure", "hasOtherElementInTabSequence"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
+ import { fastMemo } from '../utils/fastMemo';
6
7
  import { useGridColumnHeaders } from '../hooks/features/columnHeaders/useGridColumnHeaders';
7
8
  import { GridBaseColumnHeaders } from './columnHeaders/GridBaseColumnHeaders';
8
9
  import { GridColumnHeadersInner } from './columnHeaders/GridColumnHeadersInner';
@@ -100,4 +101,5 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaders.propTypes = {
100
101
  sortColumnLookup: PropTypes.object.isRequired,
101
102
  visibleColumns: PropTypes.arrayOf(PropTypes.object).isRequired
102
103
  } : void 0;
103
- export { GridColumnHeaders };
104
+ const MemoizedGridColumnHeaders = fastMemo(GridColumnHeaders);
105
+ export { MemoizedGridColumnHeaders as GridColumnHeaders };
@@ -1,17 +1,17 @@
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", "position", "rowHeight", "className", "visibleColumns", "renderedColumns", "containerWidth", "firstColumnToRender", "lastColumnToRender", "isLastVisible", "focusedCell", "tabbableCell", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave"],
4
- _excluded2 = ["changeReason", "unstable_updateValueOnRender"];
3
+ const _excluded = ["selected", "rowId", "row", "index", "style", "position", "rowHeight", "className", "visibleColumns", "renderedColumns", "containerWidth", "firstColumnToRender", "lastColumnToRender", "isLastVisible", "focusedCell", "tabbableCell", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave"];
5
4
  import * as React from 'react';
6
5
  import PropTypes from 'prop-types';
7
6
  import clsx from 'clsx';
8
7
  import { unstable_composeClasses as composeClasses, unstable_useForkRef as useForkRef } from '@mui/utils';
8
+ import { fastMemo } from '../utils/fastMemo';
9
9
  import { GridEditModes, GridRowModes, GridCellModes } from '../models/gridEditRowModel';
10
10
  import { useGridApiContext } from '../hooks/utils/useGridApiContext';
11
11
  import { getDataGridUtilityClass, gridClasses } from '../constants/gridClasses';
12
12
  import { useGridRootProps } from '../hooks/utils/useGridRootProps';
13
13
  import { gridColumnsTotalWidthSelector } from '../hooks/features/columns/gridColumnsSelector';
14
- import { useGridSelector } from '../hooks/utils/useGridSelector';
14
+ import { useGridSelector, objectShallowCompare } from '../hooks/utils/useGridSelector';
15
15
  import { useGridVisibleRows } from '../hooks/utils/useGridVisibleRows';
16
16
  import { findParentElementFromClassName } from '../utils/domUtils';
17
17
  import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../colDef/gridCheckboxSelectionColDef';
@@ -21,6 +21,7 @@ import { gridSortModelSelector } from '../hooks/features/sorting/gridSortingSele
21
21
  import { gridRowMaximumTreeDepthSelector } from '../hooks/features/rows/gridRowsSelector';
22
22
  import { gridColumnGroupsHeaderMaxDepthSelector } from '../hooks/features/columnGrouping/gridColumnGroupsSelector';
23
23
  import { randomNumberBetween } from '../utils/utils';
24
+ import { GridCellWrapper, GridCellV7 } from './cell/GridCell';
24
25
  import { gridEditRowsStateSelector } from '../hooks/features/editing/gridEditingSelectors';
25
26
  import { jsx as _jsx } from "react/jsx-runtime";
26
27
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -67,8 +68,6 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
67
68
  containerWidth,
68
69
  firstColumnToRender,
69
70
  isLastVisible = false,
70
- focusedCell,
71
- tabbableCell,
72
71
  onClick,
73
72
  onDoubleClick,
74
73
  onMouseEnter,
@@ -183,78 +182,27 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
183
182
  const {
184
183
  slots,
185
184
  slotProps,
186
- classes: rootClasses,
187
- disableColumnReorder,
188
- getCellClassName
185
+ disableColumnReorder
189
186
  } = rootProps;
187
+ const CellComponent = slots.cell === GridCellV7 ? GridCellV7 : GridCellWrapper;
190
188
  const rowReordering = rootProps.rowReordering;
191
- const CellComponent = slots.cell;
192
- const getCell = React.useCallback((column, cellProps) => {
193
- const cellParams = apiRef.current.getCellParams(rowId, column.field);
194
- const classNames = apiRef.current.unstable_applyPipeProcessors('cellClassName', [], {
195
- id: rowId,
196
- field: column.field
197
- });
189
+ const getCell = (column, cellProps) => {
198
190
  const disableDragEvents = disableColumnReorder && column.disableReorder || !rowReordering && !!sortModel.length && treeDepth > 1 && Object.keys(editRowsState).length > 0;
199
- if (column.cellClassName) {
200
- classNames.push(clsx(typeof column.cellClassName === 'function' ? column.cellClassName(cellParams) : column.cellClassName));
201
- }
202
- const editCellState = editRowsState[rowId] ? editRowsState[rowId][column.field] : null;
203
- let content;
204
- if (editCellState == null && column.renderCell) {
205
- content = column.renderCell(_extends({}, cellParams, {
206
- api: apiRef.current
207
- }));
208
- // TODO move to GridCell
209
- classNames.push(clsx(gridClasses['cell--withRenderer'], rootClasses?.['cell--withRenderer']));
210
- }
211
- if (editCellState != null && column.renderEditCell) {
212
- const updatedRow = apiRef.current.getRowWithUpdatedValues(rowId, column.field);
213
-
214
- // eslint-disable-next-line @typescript-eslint/naming-convention
215
- const editCellStateRest = _objectWithoutPropertiesLoose(editCellState, _excluded2);
216
- const params = _extends({}, cellParams, {
217
- row: updatedRow
218
- }, editCellStateRest, {
219
- api: apiRef.current
220
- });
221
- content = column.renderEditCell(params);
222
- // TODO move to GridCell
223
- classNames.push(clsx(gridClasses['cell--editing'], rootClasses?.['cell--editing']));
224
- }
225
- if (getCellClassName) {
226
- // TODO move to GridCell
227
- classNames.push(getCellClassName(cellParams));
228
- }
229
- const hasFocus = focusedCell === column.field;
230
- const tabIndex = tabbableCell === column.field ? 0 : -1;
231
- const isSelected = apiRef.current.unstable_applyPipeProcessors('isCellSelected', false, {
232
- id: rowId,
233
- field: column.field
234
- });
191
+ const editCellState = editRowsState[rowId]?.[column.field] ?? null;
235
192
  return /*#__PURE__*/_jsx(CellComponent, _extends({
236
- value: cellParams.value,
237
- field: column.field,
193
+ column: column,
238
194
  width: cellProps.width,
239
195
  rowId: rowId,
240
196
  height: rowHeight,
241
197
  showRightBorder: cellProps.showRightBorder,
242
- formattedValue: cellParams.formattedValue,
243
198
  align: column.align || 'left',
244
- cellMode: cellParams.cellMode,
245
199
  colIndex: cellProps.indexRelativeToAllColumns,
246
- isEditable: cellParams.isEditable,
247
- isSelected: isSelected,
248
- hasFocus: hasFocus,
249
- tabIndex: tabIndex,
250
- className: clsx(classNames),
251
200
  colSpan: cellProps.colSpan,
252
- disableDragEvents: disableDragEvents
253
- }, slotProps?.cell, {
254
- children: content
255
- }), column.field);
256
- }, [apiRef, rowId, disableColumnReorder, rowReordering, sortModel.length, treeDepth, editRowsState, getCellClassName, focusedCell, tabbableCell, CellComponent, rowHeight, slotProps?.cell, rootClasses]);
257
- const sizes = apiRef.current.unstable_getRowInternalSizes(rowId);
201
+ disableDragEvents: disableDragEvents,
202
+ editCellState: editCellState
203
+ }, slotProps?.cell), column.field);
204
+ };
205
+ const sizes = useGridSelector(apiRef, () => _extends({}, apiRef.current.unstable_getRowInternalSizes(rowId)), objectShallowCompare);
258
206
  let minHeight = rowHeight;
259
207
  if (minHeight === 'auto' && sizes) {
260
208
  let numberOfBaseSizes = 0;
@@ -303,7 +251,11 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
303
251
  rowClassNames.push(rootProps.getRowClassName(rowParams));
304
252
  }
305
253
  const randomNumber = randomNumberBetween(10000, 20, 80);
306
- const rowType = apiRef.current.getRowNode(rowId).type;
254
+ const rowNode = apiRef.current.getRowNode(rowId);
255
+ if (!rowNode) {
256
+ return null;
257
+ }
258
+ const rowType = rowNode.type;
307
259
  const cells = [];
308
260
  for (let i = 0; i < renderedColumns.length; i += 1) {
309
261
  const column = renderedColumns[i];
@@ -327,7 +279,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
327
279
  width
328
280
  } = cellColSpanInfo.cellProps;
329
281
  const contentWidth = Math.round(randomNumber());
330
- cells.push( /*#__PURE__*/_jsx(rootProps.slots.skeletonCell, {
282
+ cells.push( /*#__PURE__*/_jsx(slots.skeletonCell, {
331
283
  width: width,
332
284
  contentWidth: contentWidth,
333
285
  field: column.field,
@@ -363,8 +315,8 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
363
315
  // | These PropTypes are generated from the TypeScript type definitions |
364
316
  // | To update them edit the TypeScript types and run "yarn proptypes" |
365
317
  // ----------------------------------------------------------------------
366
- containerWidth: PropTypes.number,
367
- firstColumnToRender: PropTypes.number,
318
+ containerWidth: PropTypes.number.isRequired,
319
+ firstColumnToRender: PropTypes.number.isRequired,
368
320
  /**
369
321
  * Determines which cell has focus.
370
322
  * If `null`, no cell in this row has focus.
@@ -374,24 +326,25 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
374
326
  * Index of the row in the whole sorted and filtered dataset.
375
327
  * If some rows above have expanded children, this index also take those children into account.
376
328
  */
377
- index: PropTypes.number,
329
+ index: PropTypes.number.isRequired,
378
330
  isLastVisible: PropTypes.bool,
379
- lastColumnToRender: PropTypes.number,
331
+ lastColumnToRender: PropTypes.number.isRequired,
380
332
  onClick: PropTypes.func,
381
333
  onDoubleClick: PropTypes.func,
382
334
  onMouseEnter: PropTypes.func,
383
335
  onMouseLeave: PropTypes.func,
384
- position: PropTypes.oneOf(['center', 'left', 'right']),
385
- renderedColumns: PropTypes.arrayOf(PropTypes.object),
336
+ position: PropTypes.oneOf(['center', 'left', 'right']).isRequired,
337
+ renderedColumns: PropTypes.arrayOf(PropTypes.object).isRequired,
386
338
  row: PropTypes.object,
387
- rowHeight: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),
388
- rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
389
- selected: PropTypes.bool,
339
+ rowHeight: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired,
340
+ rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
341
+ selected: PropTypes.bool.isRequired,
390
342
  /**
391
343
  * Determines which cell should be tabbable by having tabIndex=0.
392
344
  * If `null`, no cell in this row is in the tab sequence.
393
345
  */
394
346
  tabbableCell: PropTypes.string,
395
- visibleColumns: PropTypes.arrayOf(PropTypes.object)
347
+ visibleColumns: PropTypes.arrayOf(PropTypes.object).isRequired
396
348
  } : void 0;
397
- export { GridRow };
349
+ const MemoizedGridRow = fastMemo(GridRow);
350
+ export { MemoizedGridRow as GridRow };