@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
@@ -1,5 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+ var _columnHeaderStyles;
3
4
  import { alpha, styled, darken, lighten } from '@mui/material/styles';
4
5
  import { gridClasses } from '../../constants/gridClasses';
5
6
  function getBorderColor(theme) {
@@ -11,16 +12,27 @@ function getBorderColor(theme) {
11
12
  }
12
13
  return darken(alpha(theme.palette.divider, 1), 0.68);
13
14
  }
15
+ var columnHeadersStyles = _defineProperty({}, ".".concat(gridClasses.columnSeparator, ", .").concat(gridClasses['columnSeparator--resizing']), {
16
+ visibility: 'visible',
17
+ width: 'auto'
18
+ });
19
+ var columnHeaderStyles = (_columnHeaderStyles = {}, _defineProperty(_columnHeaderStyles, "& .".concat(gridClasses.iconButtonContainer), {
20
+ visibility: 'visible',
21
+ width: 'auto'
22
+ }), _defineProperty(_columnHeaderStyles, "& .".concat(gridClasses.menuIcon), {
23
+ width: 'auto',
24
+ visibility: 'visible'
25
+ }), _columnHeaderStyles);
14
26
  export var GridRootStyles = styled('div', {
15
27
  name: 'MuiDataGrid',
16
28
  slot: 'Root',
17
29
  overridesResolver: function overridesResolver(props, styles) {
18
30
  return [_defineProperty({}, "&.".concat(gridClasses.autoHeight), styles.autoHeight), _defineProperty({}, "&.".concat(gridClasses.aggregationColumnHeader), styles.aggregationColumnHeader), _defineProperty({}, "&.".concat(gridClasses['aggregationColumnHeader--alignLeft']), styles['aggregationColumnHeader--alignLeft']), _defineProperty({}, "&.".concat(gridClasses['aggregationColumnHeader--alignCenter']), styles['aggregationColumnHeader--alignCenter']), _defineProperty({}, "&.".concat(gridClasses['aggregationColumnHeader--alignRight']), styles['aggregationColumnHeader--alignRight']), _defineProperty({}, "&.".concat(gridClasses.aggregationColumnHeaderLabel), styles.aggregationColumnHeaderLabel), _defineProperty({}, "&.".concat(gridClasses['root--disableUserSelection'], " .").concat(gridClasses.cell), styles['root--disableUserSelection']), _defineProperty({}, "& .".concat(gridClasses.editBooleanCell), styles.editBooleanCell), _defineProperty({}, "& .".concat(gridClasses['cell--editing']), styles['cell--editing']), _defineProperty({}, "& .".concat(gridClasses['cell--textCenter']), styles['cell--textCenter']), _defineProperty({}, "& .".concat(gridClasses['cell--textLeft']), styles['cell--textLeft']), _defineProperty({}, "& .".concat(gridClasses['cell--textRight']), styles['cell--textRight']), // TODO v6: Remove
19
- _defineProperty({}, "& .".concat(gridClasses['cell--withRenderer']), styles['cell--withRenderer']), _defineProperty({}, "& .".concat(gridClasses.cell), styles.cell), _defineProperty({}, "& .".concat(gridClasses['cell--rangeTop']), styles['cell--rangeTop']), _defineProperty({}, "& .".concat(gridClasses['cell--rangeBottom']), styles['cell--rangeBottom']), _defineProperty({}, "& .".concat(gridClasses['cell--rangeLeft']), styles['cell--rangeLeft']), _defineProperty({}, "& .".concat(gridClasses['cell--rangeRight']), styles['cell--rangeRight']), _defineProperty({}, "& .".concat(gridClasses.cellContent), styles.cellContent), _defineProperty({}, "& .".concat(gridClasses.cellCheckbox), styles.cellCheckbox), _defineProperty({}, "& .".concat(gridClasses.cellSkeleton), styles.cellSkeleton), _defineProperty({}, "& .".concat(gridClasses.checkboxInput), styles.checkboxInput), _defineProperty({}, "& .".concat(gridClasses['columnHeader--alignCenter']), styles['columnHeader--alignCenter']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--alignLeft']), styles['columnHeader--alignLeft']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--alignRight']), styles['columnHeader--alignRight']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--dragging']), styles['columnHeader--dragging']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--moving']), styles['columnHeader--moving']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--numeric']), styles['columnHeader--numeric']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--sortable']), styles['columnHeader--sortable']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--sorted']), styles['columnHeader--sorted']), _defineProperty({}, "& .".concat(gridClasses.columnHeader), styles.columnHeader), _defineProperty({}, "& .".concat(gridClasses.headerFilterRow), styles.headerFilterRow), _defineProperty({}, "& .".concat(gridClasses.columnHeaderCheckbox), styles.columnHeaderCheckbox), _defineProperty({}, "& .".concat(gridClasses.columnHeaderDraggableContainer), styles.columnHeaderDraggableContainer), _defineProperty({}, "& .".concat(gridClasses.columnHeaderTitleContainer), styles.columnHeaderTitleContainer), _defineProperty({}, "& .".concat(gridClasses['columnSeparator--resizable']), styles['columnSeparator--resizable']), _defineProperty({}, "& .".concat(gridClasses['columnSeparator--resizing']), styles['columnSeparator--resizing']), _defineProperty({}, "& .".concat(gridClasses.columnSeparator), styles.columnSeparator), _defineProperty({}, "& .".concat(gridClasses.filterIcon), styles.filterIcon), _defineProperty({}, "& .".concat(gridClasses.iconSeparator), styles.iconSeparator), _defineProperty({}, "& .".concat(gridClasses.menuIcon), styles.menuIcon), _defineProperty({}, "& .".concat(gridClasses.menuIconButton), styles.menuIconButton), _defineProperty({}, "& .".concat(gridClasses.menuOpen), styles.menuOpen), _defineProperty({}, "& .".concat(gridClasses.menuList), styles.menuList), _defineProperty({}, "& .".concat(gridClasses['row--editable']), styles['row--editable']), _defineProperty({}, "& .".concat(gridClasses['row--editing']), styles['row--editing']), _defineProperty({}, "& .".concat(gridClasses['row--dragging']), styles['row--dragging']), _defineProperty({}, "& .".concat(gridClasses.row), styles.row), _defineProperty({}, "& .".concat(gridClasses.rowReorderCellPlaceholder), styles.rowReorderCellPlaceholder), _defineProperty({}, "& .".concat(gridClasses.rowReorderCell), styles.rowReorderCell), _defineProperty({}, "& .".concat(gridClasses['rowReorderCell--draggable']), styles['rowReorderCell--draggable']), _defineProperty({}, "& .".concat(gridClasses.sortIcon), styles.sortIcon), _defineProperty({}, "& .".concat(gridClasses.withBorderColor), styles.withBorderColor), _defineProperty({}, "& .".concat(gridClasses.treeDataGroupingCell), styles.treeDataGroupingCell), _defineProperty({}, "& .".concat(gridClasses.treeDataGroupingCellToggle), styles.treeDataGroupingCellToggle), _defineProperty({}, "& .".concat(gridClasses.detailPanelToggleCell), styles.detailPanelToggleCell), _defineProperty({}, "& .".concat(gridClasses['detailPanelToggleCell--expanded']), styles['detailPanelToggleCell--expanded']), styles.root];
31
+ _defineProperty({}, "& .".concat(gridClasses['cell--withRenderer']), styles['cell--withRenderer']), _defineProperty({}, "& .".concat(gridClasses.cell), styles.cell), _defineProperty({}, "& .".concat(gridClasses['cell--rangeTop']), styles['cell--rangeTop']), _defineProperty({}, "& .".concat(gridClasses['cell--rangeBottom']), styles['cell--rangeBottom']), _defineProperty({}, "& .".concat(gridClasses['cell--rangeLeft']), styles['cell--rangeLeft']), _defineProperty({}, "& .".concat(gridClasses['cell--rangeRight']), styles['cell--rangeRight']), _defineProperty({}, "& .".concat(gridClasses['cell--withRightBorder']), styles['cell--withRightBorder']), _defineProperty({}, "& .".concat(gridClasses.cellContent), styles.cellContent), _defineProperty({}, "& .".concat(gridClasses.cellCheckbox), styles.cellCheckbox), _defineProperty({}, "& .".concat(gridClasses.cellSkeleton), styles.cellSkeleton), _defineProperty({}, "& .".concat(gridClasses.checkboxInput), styles.checkboxInput), _defineProperty({}, "& .".concat(gridClasses['columnHeader--alignCenter']), styles['columnHeader--alignCenter']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--alignLeft']), styles['columnHeader--alignLeft']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--alignRight']), styles['columnHeader--alignRight']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--dragging']), styles['columnHeader--dragging']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--moving']), styles['columnHeader--moving']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--numeric']), styles['columnHeader--numeric']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--sortable']), styles['columnHeader--sortable']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--sorted']), styles['columnHeader--sorted']), _defineProperty({}, "& .".concat(gridClasses['columnHeader--withRightBorder']), styles['columnHeader--withRightBorder']), _defineProperty({}, "& .".concat(gridClasses.columnHeader), styles.columnHeader), _defineProperty({}, "& .".concat(gridClasses.headerFilterRow), styles.headerFilterRow), _defineProperty({}, "& .".concat(gridClasses.columnHeaderCheckbox), styles.columnHeaderCheckbox), _defineProperty({}, "& .".concat(gridClasses.columnHeaderDraggableContainer), styles.columnHeaderDraggableContainer), _defineProperty({}, "& .".concat(gridClasses.columnHeaderTitleContainer), styles.columnHeaderTitleContainer), _defineProperty({}, "& .".concat(gridClasses['columnSeparator--resizable']), styles['columnSeparator--resizable']), _defineProperty({}, "& .".concat(gridClasses['columnSeparator--resizing']), styles['columnSeparator--resizing']), _defineProperty({}, "& .".concat(gridClasses.columnSeparator), styles.columnSeparator), _defineProperty({}, "& .".concat(gridClasses.filterIcon), styles.filterIcon), _defineProperty({}, "& .".concat(gridClasses.iconSeparator), styles.iconSeparator), _defineProperty({}, "& .".concat(gridClasses.menuIcon), styles.menuIcon), _defineProperty({}, "& .".concat(gridClasses.menuIconButton), styles.menuIconButton), _defineProperty({}, "& .".concat(gridClasses.menuOpen), styles.menuOpen), _defineProperty({}, "& .".concat(gridClasses.menuList), styles.menuList), _defineProperty({}, "& .".concat(gridClasses['row--editable']), styles['row--editable']), _defineProperty({}, "& .".concat(gridClasses['row--editing']), styles['row--editing']), _defineProperty({}, "& .".concat(gridClasses['row--dragging']), styles['row--dragging']), _defineProperty({}, "& .".concat(gridClasses.row), styles.row), _defineProperty({}, "& .".concat(gridClasses.rowReorderCellPlaceholder), styles.rowReorderCellPlaceholder), _defineProperty({}, "& .".concat(gridClasses.rowReorderCell), styles.rowReorderCell), _defineProperty({}, "& .".concat(gridClasses['rowReorderCell--draggable']), styles['rowReorderCell--draggable']), _defineProperty({}, "& .".concat(gridClasses.sortIcon), styles.sortIcon), _defineProperty({}, "& .".concat(gridClasses.withBorderColor), styles.withBorderColor), _defineProperty({}, "& .".concat(gridClasses.treeDataGroupingCell), styles.treeDataGroupingCell), _defineProperty({}, "& .".concat(gridClasses.treeDataGroupingCellToggle), styles.treeDataGroupingCellToggle), _defineProperty({}, "& .".concat(gridClasses.detailPanelToggleCell), styles.detailPanelToggleCell), _defineProperty({}, "& .".concat(gridClasses['detailPanelToggleCell--expanded']), styles['detailPanelToggleCell--expanded']), styles.root];
20
32
  }
21
- })(function (_ref58) {
22
- var _$concat2, _$concat3, _extends2;
23
- var theme = _ref58.theme;
33
+ })(function (_ref60) {
34
+ var _mediaHoverHover, _mediaHoverNone, _$concat2, _extends2;
35
+ var theme = _ref60.theme;
24
36
  var borderColor = getBorderColor(theme);
25
37
  var radius = theme.shape.borderRadius;
26
38
  var gridStyle = _extends({
@@ -77,8 +89,6 @@ export var GridRootStyles = styled('div', {
77
89
  transition: theme.transitions.create(['opacity'], {
78
90
  duration: theme.transitions.duration.shorter
79
91
  })
80
- }), _defineProperty(_extends2, "& .".concat(gridClasses.columnHeader, ":not(.").concat(gridClasses['columnHeader--sorted'], "):hover .").concat(gridClasses.sortIcon), {
81
- opacity: 0.5
82
92
  }), _defineProperty(_extends2, "& .".concat(gridClasses.columnHeaderTitleContainer), {
83
93
  display: 'flex',
84
94
  alignItems: 'center',
@@ -128,10 +138,9 @@ export var GridRootStyles = styled('div', {
128
138
  flexDirection: 'column',
129
139
  justifyContent: 'center',
130
140
  color: borderColor
131
- }), _defineProperty(_extends2, "& .".concat(gridClasses.columnHeaders, ":hover .").concat(gridClasses.columnSeparator, ", .").concat(gridClasses['columnSeparator--resizing']), {
132
- visibility: 'visible',
133
- width: 'auto'
134
- }), _defineProperty(_extends2, "& .".concat(gridClasses['columnSeparator--sideLeft']), {
141
+ }), _defineProperty(_extends2, '@media (hover: hover)', (_mediaHoverHover = {}, _defineProperty(_mediaHoverHover, "& .".concat(gridClasses.columnHeaders, ":hover"), columnHeadersStyles), _defineProperty(_mediaHoverHover, "& .".concat(gridClasses.columnHeader, ":hover"), columnHeaderStyles), _defineProperty(_mediaHoverHover, "& .".concat(gridClasses.columnHeader, ":not(.").concat(gridClasses['columnHeader--sorted'], "):hover .").concat(gridClasses.sortIcon), {
142
+ opacity: 0.5
143
+ }), _mediaHoverHover)), _defineProperty(_extends2, '@media (hover: none)', (_mediaHoverNone = {}, _defineProperty(_mediaHoverNone, "& .".concat(gridClasses.columnHeaders), columnHeadersStyles), _defineProperty(_mediaHoverNone, "& .".concat(gridClasses.columnHeader), columnHeaderStyles), _mediaHoverNone)), _defineProperty(_extends2, "& .".concat(gridClasses['columnSeparator--sideLeft']), {
135
144
  left: -12
136
145
  }), _defineProperty(_extends2, "& .".concat(gridClasses['columnSeparator--sideRight']), {
137
146
  right: -12
@@ -158,13 +167,7 @@ export var GridRootStyles = styled('div', {
158
167
  marginRight: -10,
159
168
  display: 'flex',
160
169
  alignItems: 'center'
161
- }), _defineProperty(_extends2, "& .".concat(gridClasses.columnHeader, ":hover"), (_$concat3 = {}, _defineProperty(_$concat3, "& .".concat(gridClasses.iconButtonContainer), {
162
- visibility: 'visible',
163
- width: 'auto'
164
- }), _defineProperty(_$concat3, "& .".concat(gridClasses.menuIcon), {
165
- width: 'auto',
166
- visibility: 'visible'
167
- }), _$concat3)), _defineProperty(_extends2, ".".concat(gridClasses.menuOpen), {
170
+ }), _defineProperty(_extends2, ".".concat(gridClasses.menuOpen), {
168
171
  visibility: 'visible',
169
172
  width: 'auto'
170
173
  }), _defineProperty(_extends2, "& .".concat(gridClasses.row), {
@@ -23,7 +23,7 @@ function GridColumnHeaderMenu(_ref) {
23
23
  apiRef.current.hideColumnMenu();
24
24
  }
25
25
  }, [apiRef, target]);
26
- if (!target) {
26
+ if (!target || !colDef) {
27
27
  return null;
28
28
  }
29
29
  return /*#__PURE__*/_jsx(GridMenu, {
@@ -14,8 +14,8 @@ import { GridToolbarQuickFilter } from './GridToolbarQuickFilter';
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
15
  import { jsxs as _jsxs } from "react/jsx-runtime";
16
16
  var GridToolbar = /*#__PURE__*/React.forwardRef(function GridToolbar(props, ref) {
17
- // TODO v6: think about where export option should be passed.
18
- // from componentProps={{ toolbarExport: { ...exportOption} }} seems to be more appropriate
17
+ // TODO v7: think about where export option should be passed.
18
+ // from slotProps={{ toolbarExport: { ...exportOption } }} seems to be more appropriate
19
19
  var className = props.className,
20
20
  csvOptions = props.csvOptions,
21
21
  printOptions = props.printOptions,
@@ -1,6 +1,4 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- var _excluded = ["className"];
4
2
  import * as React from 'react';
5
3
  import clsx from 'clsx';
6
4
  import { styled } from '@mui/system';
@@ -31,14 +29,13 @@ var VirtualScrollerRoot = styled('div', {
31
29
  }
32
30
  });
33
31
  var GridVirtualScroller = /*#__PURE__*/React.forwardRef(function GridVirtualScroller(props, ref) {
34
- var className = props.className,
35
- other = _objectWithoutProperties(props, _excluded);
36
32
  var rootProps = useGridRootProps();
37
33
  var classes = useUtilityClasses(rootProps);
38
34
  return /*#__PURE__*/_jsx(VirtualScrollerRoot, _extends({
39
- ref: ref,
40
- className: clsx(classes.root, className),
35
+ ref: ref
36
+ }, props, {
37
+ className: clsx(classes.root, props.className),
41
38
  ownerState: rootProps
42
- }, other));
39
+ }));
43
40
  });
44
41
  export { GridVirtualScroller };
@@ -1,6 +1,4 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- var _excluded = ["className", "style"];
4
2
  import * as React from 'react';
5
3
  import clsx from 'clsx';
6
4
  import { styled } from '@mui/system';
@@ -8,9 +6,8 @@ import { unstable_composeClasses as composeClasses } from '@mui/utils';
8
6
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
9
7
  import { getDataGridUtilityClass } from '../../constants/gridClasses';
10
8
  import { jsx as _jsx } from "react/jsx-runtime";
11
- var useUtilityClasses = function useUtilityClasses(ownerState) {
12
- var classes = ownerState.classes,
13
- overflowedContent = ownerState.overflowedContent;
9
+ var useUtilityClasses = function useUtilityClasses(props, overflowedContent) {
10
+ var classes = props.classes;
14
11
  var slots = {
15
12
  root: ['virtualScrollerContent', overflowedContent && 'virtualScrollerContent--overflowed']
16
13
  };
@@ -24,19 +21,15 @@ var VirtualScrollerContentRoot = styled('div', {
24
21
  }
25
22
  })({});
26
23
  var GridVirtualScrollerContent = /*#__PURE__*/React.forwardRef(function GridVirtualScrollerContent(props, ref) {
27
- var className = props.className,
28
- style = props.style,
29
- other = _objectWithoutProperties(props, _excluded);
24
+ var _props$style;
30
25
  var rootProps = useGridRootProps();
31
- var ownerState = _extends({}, rootProps, {
32
- overflowedContent: !rootProps.autoHeight && (style == null ? void 0 : style.minHeight) === 'auto'
33
- });
34
- var classes = useUtilityClasses(ownerState);
26
+ var overflowedContent = !rootProps.autoHeight && ((_props$style = props.style) == null ? void 0 : _props$style.minHeight) === 'auto';
27
+ var classes = useUtilityClasses(rootProps, overflowedContent);
35
28
  return /*#__PURE__*/_jsx(VirtualScrollerContentRoot, _extends({
36
- ref: ref,
37
- className: clsx(classes.root, className),
38
- ownerState: ownerState,
39
- style: style
40
- }, other));
29
+ ref: ref
30
+ }, props, {
31
+ ownerState: rootProps,
32
+ className: clsx(classes.root, props.className)
33
+ }));
41
34
  });
42
35
  export { GridVirtualScrollerContent };
@@ -1,11 +1,15 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import { GridCell, GridSkeletonCell, GridColumnsPanel, GridFilterPanel, GridFooter, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridPreferencesPanel, GridRow, GridColumnHeaderFilterIconButton } from '../components';
2
+ import { GridSkeletonCell, GridColumnsPanel, GridFilterPanel, GridFooter, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridPreferencesPanel, GridRow, GridColumnHeaderFilterIconButton } from '../components';
3
+ import { GridCellV7 } from '../components/cell/GridCell';
3
4
  import { GridColumnHeaders } from '../components/GridColumnHeaders';
4
5
  import { GridColumnMenu } from '../components/menu/columnMenu/GridColumnMenu';
5
6
  import { GridNoResultsOverlay } from '../components/GridNoResultsOverlay';
6
7
  import materialSlots from '../material';
8
+
9
+ // TODO: camelCase these key. It's a private helper now.
10
+ // Remove then need to call `uncapitalizeObjectKeys`.
7
11
  export var DATA_GRID_DEFAULT_SLOTS_COMPONENTS = _extends({}, materialSlots, {
8
- Cell: GridCell,
12
+ Cell: GridCellV7,
9
13
  SkeletonCell: GridSkeletonCell,
10
14
  ColumnHeaderFilterIconButton: GridColumnHeaderFilterIconButton,
11
15
  ColumnMenu: GridColumnMenu,
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import { Store } from '../../utils/Store';
2
3
  import { useGridApiMethod } from '../utils/useGridApiMethod';
3
4
  import { GridSignature } from '../utils/useGridApiEventHandler';
4
5
  import { EventManager } from '../../utils/EventManager';
@@ -37,8 +38,10 @@ var wrapPublicApi = function wrapPublicApi(publicApi) {
37
38
  export function useGridApiInitialization(inputApiRef, props) {
38
39
  var publicApiRef = React.useRef();
39
40
  if (!publicApiRef.current) {
41
+ var state = {};
40
42
  publicApiRef.current = {
41
- state: {},
43
+ state: state,
44
+ store: Store.create(state),
42
45
  instanceId: {
43
46
  id: globalId
44
47
  }
@@ -1,8 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
3
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
5
- var _excluded = ["stateId"];
6
4
  import * as React from 'react';
7
5
  import { GridSignature } from '../utils/useGridApiEventHandler';
8
6
  import { useGridApiMethod } from '../utils';
@@ -13,11 +11,7 @@ export var useGridStateInitialization = function useGridStateInitialization(apiR
13
11
  _React$useState2 = _slicedToArray(_React$useState, 2),
14
12
  rawForceUpdate = _React$useState2[1];
15
13
  var registerControlState = React.useCallback(function (controlStateItem) {
16
- var stateId = controlStateItem.stateId,
17
- others = _objectWithoutProperties(controlStateItem, _excluded);
18
- controlStateMapRef.current[stateId] = _extends({}, others, {
19
- stateId: stateId
20
- });
14
+ controlStateMapRef.current[controlStateItem.stateId] = controlStateItem;
21
15
  }, []);
22
16
  var setState = React.useCallback(function (state, reason) {
23
17
  var newState;
@@ -64,6 +58,7 @@ export var useGridStateInitialization = function useGridStateInitialization(apiR
64
58
  if (apiRef.current.publishEvent) {
65
59
  apiRef.current.publishEvent('stateChange', newState);
66
60
  }
61
+ apiRef.current.store.update(newState);
67
62
  }
68
63
  if (updatedControlStateIds.length === 1) {
69
64
  var _updatedControlStateI = updatedControlStateIds[0],
@@ -55,10 +55,7 @@ export var useGridClipboard = function useGridClipboard(apiRef, props) {
55
55
  var ignoreValueFormatter = (_typeof(ignoreValueFormatterProp) === 'object' ? ignoreValueFormatterProp == null ? void 0 : ignoreValueFormatterProp.clipboardExport : ignoreValueFormatterProp) || false;
56
56
  var clipboardCopyCellDelimiter = props.clipboardCopyCellDelimiter;
57
57
  var handleCopy = React.useCallback(function (event) {
58
- var isModifierKeyPressed = event.ctrlKey || event.metaKey;
59
- // event.code === 'KeyC' is not enough as event.code assume a QWERTY keyboard layout which would
60
- // be wrong with a Dvorak keyboard (as if pressing J).
61
- if (String.fromCharCode(event.keyCode) !== 'C' || !isModifierKeyPressed) {
58
+ if (!((event.ctrlKey || event.metaKey) && event.key === 'c')) {
62
59
  return;
63
60
  }
64
61
 
@@ -1,4 +1,4 @@
1
- import { createSelector } from '../../../utils/createSelector';
1
+ import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';
2
2
  /**
3
3
  * @category ColumnGrouping
4
4
  * @ignore - do not document.
@@ -6,15 +6,15 @@ import { createSelector } from '../../../utils/createSelector';
6
6
  export var gridColumnGroupingSelector = function gridColumnGroupingSelector(state) {
7
7
  return state.columnGrouping;
8
8
  };
9
- export var gridColumnGroupsUnwrappedModelSelector = createSelector(gridColumnGroupingSelector, function (columnGrouping) {
9
+ export var gridColumnGroupsUnwrappedModelSelector = createSelectorMemoized(gridColumnGroupingSelector, function (columnGrouping) {
10
10
  var _columnGrouping$unwra;
11
11
  return (_columnGrouping$unwra = columnGrouping == null ? void 0 : columnGrouping.unwrappedGroupingModel) != null ? _columnGrouping$unwra : {};
12
12
  });
13
- export var gridColumnGroupsLookupSelector = createSelector(gridColumnGroupingSelector, function (columnGrouping) {
13
+ export var gridColumnGroupsLookupSelector = createSelectorMemoized(gridColumnGroupingSelector, function (columnGrouping) {
14
14
  var _columnGrouping$looku;
15
15
  return (_columnGrouping$looku = columnGrouping == null ? void 0 : columnGrouping.lookup) != null ? _columnGrouping$looku : {};
16
16
  });
17
- export var gridColumnGroupsHeaderStructureSelector = createSelector(gridColumnGroupingSelector, function (columnGrouping) {
17
+ export var gridColumnGroupsHeaderStructureSelector = createSelectorMemoized(gridColumnGroupingSelector, function (columnGrouping) {
18
18
  var _columnGrouping$heade;
19
19
  return (_columnGrouping$heade = columnGrouping == null ? void 0 : columnGrouping.headerStructure) != null ? _columnGrouping$heade : [];
20
20
  });
@@ -11,7 +11,7 @@ import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
11
11
  import { GridColumnHeaderItem } from '../../../components/columnHeaders/GridColumnHeaderItem';
12
12
  import { getFirstColumnIndexToRender, getTotalHeaderHeight } from '../columns/gridColumnsUtils';
13
13
  import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
14
- import { getRenderableIndexes } from '../virtualization/useGridVirtualScroller';
14
+ import { areRenderContextsEqual, getRenderableIndexes } from '../virtualization/useGridVirtualScroller';
15
15
  import { GridColumnGroupHeader } from '../../../components/columnHeaders/GridColumnGroupHeader';
16
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
17
  var GridColumnHeaderRow = styled('div', {
@@ -62,12 +62,18 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
62
62
  var _React$useState5 = React.useState(null),
63
63
  _React$useState6 = _slicedToArray(_React$useState5, 2),
64
64
  renderContext = _React$useState6[0],
65
- setRenderContext = _React$useState6[1];
65
+ setRenderContextRaw = _React$useState6[1];
66
66
  var prevRenderContext = React.useRef(renderContext);
67
67
  var prevScrollLeft = React.useRef(0);
68
68
  var currentPage = useGridVisibleRows(apiRef, rootProps);
69
69
  var totalHeaderHeight = getTotalHeaderHeight(apiRef, rootProps.columnHeaderHeight);
70
70
  var headerHeight = Math.floor(rootProps.columnHeaderHeight * densityFactor);
71
+ var setRenderContext = React.useCallback(function (nextRenderContext) {
72
+ if (renderContext && nextRenderContext && areRenderContextsEqual(renderContext, nextRenderContext)) {
73
+ return;
74
+ }
75
+ setRenderContextRaw(nextRenderContext);
76
+ }, [renderContext]);
71
77
  React.useEffect(function () {
72
78
  apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
73
79
  }, [apiRef]);
@@ -150,7 +156,7 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
150
156
  if (nextRenderContext && canUpdateInnerPosition) {
151
157
  updateInnerPosition(nextRenderContext);
152
158
  }
153
- }, [updateInnerPosition]);
159
+ }, [updateInnerPosition, setRenderContext]);
154
160
  var handleColumnResizeStart = React.useCallback(function (params) {
155
161
  return setResizeCol(params.field);
156
162
  }, []);
@@ -1,4 +1,4 @@
1
- import { createSelector } from '../../../utils/createSelector';
1
+ import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';
2
2
  /**
3
3
  * Get the columns state
4
4
  * @category Columns
@@ -27,7 +27,7 @@ export var gridColumnLookupSelector = createSelector(gridColumnsStateSelector, f
27
27
  * Get an array of column definitions in the order rendered on screen..
28
28
  * @category Columns
29
29
  */
30
- export var gridColumnDefinitionsSelector = createSelector(gridColumnFieldsSelector, gridColumnLookupSelector, function (allFields, lookup) {
30
+ export var gridColumnDefinitionsSelector = createSelectorMemoized(gridColumnFieldsSelector, gridColumnLookupSelector, function (allFields, lookup) {
31
31
  return allFields.map(function (field) {
32
32
  return lookup[field];
33
33
  });
@@ -46,7 +46,7 @@ export var gridColumnVisibilityModelSelector = createSelector(gridColumnsStateSe
46
46
  * Get the visible columns as a lookup (an object containing the field for keys and the definition for values).
47
47
  * @category Visible Columns
48
48
  */
49
- export var gridVisibleColumnDefinitionsSelector = createSelector(gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector, function (columns, columnVisibilityModel) {
49
+ export var gridVisibleColumnDefinitionsSelector = createSelectorMemoized(gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector, function (columns, columnVisibilityModel) {
50
50
  return columns.filter(function (column) {
51
51
  return columnVisibilityModel[column.field] !== false;
52
52
  });
@@ -56,7 +56,7 @@ export var gridVisibleColumnDefinitionsSelector = createSelector(gridColumnDefin
56
56
  * Get the field of each visible column.
57
57
  * @category Visible Columns
58
58
  */
59
- export var gridVisibleColumnFieldsSelector = createSelector(gridVisibleColumnDefinitionsSelector, function (visibleColumns) {
59
+ export var gridVisibleColumnFieldsSelector = createSelectorMemoized(gridVisibleColumnDefinitionsSelector, function (visibleColumns) {
60
60
  return visibleColumns.map(function (column) {
61
61
  return column.field;
62
62
  });
@@ -66,7 +66,7 @@ export var gridVisibleColumnFieldsSelector = createSelector(gridVisibleColumnDef
66
66
  * Get the left position in pixel of each visible columns relative to the left of the first column.
67
67
  * @category Visible Columns
68
68
  */
69
- export var gridColumnPositionsSelector = createSelector(gridVisibleColumnDefinitionsSelector, function (visibleColumns) {
69
+ export var gridColumnPositionsSelector = createSelectorMemoized(gridVisibleColumnDefinitionsSelector, function (visibleColumns) {
70
70
  var positions = [];
71
71
  var currentPosition = 0;
72
72
  for (var i = 0; i < visibleColumns.length; i += 1) {
@@ -92,7 +92,7 @@ export var gridColumnsTotalWidthSelector = createSelector(gridVisibleColumnDefin
92
92
  * Get the filterable columns as an array.
93
93
  * @category Columns
94
94
  */
95
- export var gridFilterableColumnDefinitionsSelector = createSelector(gridColumnDefinitionsSelector, function (columns) {
95
+ export var gridFilterableColumnDefinitionsSelector = createSelectorMemoized(gridColumnDefinitionsSelector, function (columns) {
96
96
  return columns.filter(function (col) {
97
97
  return col.filterable;
98
98
  });
@@ -102,7 +102,7 @@ export var gridFilterableColumnDefinitionsSelector = createSelector(gridColumnDe
102
102
  * Get the filterable columns as a lookup (an object containing the field for keys and the definition for values).
103
103
  * @category Columns
104
104
  */
105
- export var gridFilterableColumnLookupSelector = createSelector(gridColumnDefinitionsSelector, function (columns) {
105
+ export var gridFilterableColumnLookupSelector = createSelectorMemoized(gridColumnDefinitionsSelector, function (columns) {
106
106
  return columns.reduce(function (acc, col) {
107
107
  if (col.filterable) {
108
108
  acc[col.field] = col;
@@ -162,22 +162,16 @@ export function useGridDimensions(apiRef, props) {
162
162
  if (!mainEl) {
163
163
  return;
164
164
  }
165
- var height = mainEl.clientHeight || 0;
166
- var width = mainEl.clientWidth || 0;
167
165
  var win = ownerWindow(mainEl);
168
166
  var computedStyle = win.getComputedStyle(mainEl);
169
- var paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;
170
- var paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;
171
- var paddingTop = parseInt(computedStyle.paddingTop, 10) || 0;
172
- var paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0;
173
- var newHeight = height - paddingTop - paddingBottom;
174
- var newWidth = width - paddingLeft - paddingRight;
175
- var hasHeightChanged = newHeight !== ((_previousSize$current = previousSize.current) == null ? void 0 : _previousSize$current.height);
176
- var hasWidthChanged = newWidth !== ((_previousSize$current2 = previousSize.current) == null ? void 0 : _previousSize$current2.width);
167
+ var height = parseFloat(computedStyle.height) || 0;
168
+ var width = parseFloat(computedStyle.width) || 0;
169
+ var hasHeightChanged = height !== ((_previousSize$current = previousSize.current) == null ? void 0 : _previousSize$current.height);
170
+ var hasWidthChanged = width !== ((_previousSize$current2 = previousSize.current) == null ? void 0 : _previousSize$current2.width);
177
171
  if (!previousSize.current || hasHeightChanged || hasWidthChanged) {
178
172
  var size = {
179
- width: newWidth,
180
- height: newHeight
173
+ width: width,
174
+ height: height
181
175
  };
182
176
  apiRef.current.publishEvent('resize', size);
183
177
  previousSize.current = size;
@@ -18,7 +18,7 @@ import { buildWarning } from '../../../utils/warning';
18
18
  import { gridRowsDataRowIdToIdLookupSelector } from '../rows/gridRowsSelector';
19
19
  import { deepClone } from '../../../utils/utils';
20
20
  import { GridCellEditStartReasons, GridCellEditStopReasons } from '../../../models/params/gridEditCellParams';
21
- var missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#persistence.'], 'error');
21
+ var missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#server-side-persistence.'], 'error');
22
22
  export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
23
23
  var _React$useState = React.useState({}),
24
24
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -128,7 +128,8 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
128
128
  var id = params.id,
129
129
  field = params.field,
130
130
  reason = params.reason,
131
- key = params.key;
131
+ key = params.key,
132
+ colDef = params.colDef;
132
133
  var startCellEditModeParams = {
133
134
  id: id,
134
135
  field: field
@@ -139,7 +140,8 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
139
140
  // The sequence of events makes the key pressed by the end-users update the textbox directly.
140
141
  startCellEditModeParams.deleteValue = true;
141
142
  } else {
142
- startCellEditModeParams.initialValue = key;
143
+ var initialValue = colDef.valueParser ? colDef.valueParser(key) : key;
144
+ startCellEditModeParams.initialValue = initialValue;
143
145
  }
144
146
  } else if (reason === GridCellEditStartReasons.deleteKeyDown) {
145
147
  startCellEditModeParams.deleteValue = true;
@@ -17,7 +17,8 @@ import { buildWarning } from '../../../utils/warning';
17
17
  import { gridRowsDataRowIdToIdLookupSelector } from '../rows/gridRowsSelector';
18
18
  import { deepClone } from '../../../utils/utils';
19
19
  import { GridRowEditStopReasons, GridRowEditStartReasons } from '../../../models/params/gridRowParams';
20
- var missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#persistence.'], 'error');
20
+ import { GRID_ACTIONS_COLUMN_TYPE } from '../../../colDef';
21
+ var missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#server-side-persistence.'], 'error');
21
22
  export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
22
23
  var _React$useState = React.useState({}),
23
24
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -120,6 +121,10 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
120
121
  reason = GridRowEditStopReasons.enterKeyDown;
121
122
  } else if (event.key === 'Tab') {
122
123
  var columnFields = gridColumnFieldsSelector(apiRef).filter(function (field) {
124
+ var column = apiRef.current.getColumn(field);
125
+ if (column.type === GRID_ACTIONS_COLUMN_TYPE) {
126
+ return true;
127
+ }
123
128
  return apiRef.current.isCellEditable(apiRef.current.getCellParams(params.id, field));
124
129
  });
125
130
  if (event.shiftKey) {
@@ -144,8 +149,7 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
144
149
  }
145
150
  }
146
151
  if (reason) {
147
- var rowParams = apiRef.current.getRowParams(params.id);
148
- var newParams = _extends({}, rowParams, {
152
+ var newParams = _extends({}, apiRef.current.getRowParams(params.id), {
149
153
  reason: reason,
150
154
  field: params.field
151
155
  });
@@ -172,8 +176,8 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
172
176
  _reason = GridRowEditStartReasons.deleteKeyDown;
173
177
  }
174
178
  if (_reason) {
175
- var _rowParams = apiRef.current.getRowParams(params.id);
176
- var _newParams = _extends({}, _rowParams, {
179
+ var rowParams = apiRef.current.getRowParams(params.id);
180
+ var _newParams = _extends({}, rowParams, {
177
181
  field: params.field,
178
182
  key: event.key,
179
183
  reason: _reason
@@ -186,7 +190,8 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
186
190
  var id = params.id,
187
191
  field = params.field,
188
192
  reason = params.reason,
189
- key = params.key;
193
+ key = params.key,
194
+ columns = params.columns;
190
195
  var startRowEditModeParams = {
191
196
  id: id,
192
197
  fieldToFocus: field
@@ -197,7 +202,10 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
197
202
  // The sequence of events makes the key pressed by the end-users update the textbox directly.
198
203
  startRowEditModeParams.deleteValue = !!field;
199
204
  } else {
200
- startRowEditModeParams.initialValue = key;
205
+ var colDef = columns.find(function (col) {
206
+ return col.field === field;
207
+ });
208
+ startRowEditModeParams.initialValue = colDef.valueParser ? colDef.valueParser(key) : key;
201
209
  }
202
210
  } else if (reason === GridRowEditStartReasons.deleteKeyDown) {
203
211
  startRowEditModeParams.deleteValue = !!field;
@@ -1,4 +1,4 @@
1
- import { createSelector } from '../../../utils/createSelector';
1
+ import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';
2
2
  import { gridSortedRowEntriesSelector } from '../sorting/gridSortingSelector';
3
3
  import { gridColumnLookupSelector } from '../columns/gridColumnsSelector';
4
4
  import { gridRowMaximumTreeDepthSelector, gridRowTreeSelector } from '../rows/gridRowsSelector';
@@ -55,7 +55,7 @@ export var gridFilteredDescendantCountLookupSelector = createSelector(gridFilter
55
55
  * Does not contain the collapsed children.
56
56
  * @category Filtering
57
57
  */
58
- export var gridExpandedSortedRowEntriesSelector = createSelector(gridVisibleRowsLookupSelector, gridSortedRowEntriesSelector, function (visibleRowsLookup, sortedRows) {
58
+ export var gridExpandedSortedRowEntriesSelector = createSelectorMemoized(gridVisibleRowsLookupSelector, gridSortedRowEntriesSelector, function (visibleRowsLookup, sortedRows) {
59
59
  return sortedRows.filter(function (row) {
60
60
  return visibleRowsLookup[row.id] !== false;
61
61
  });
@@ -66,7 +66,7 @@ export var gridExpandedSortedRowEntriesSelector = createSelector(gridVisibleRows
66
66
  * Does not contain the collapsed children.
67
67
  * @category Filtering
68
68
  */
69
- export var gridExpandedSortedRowIdsSelector = createSelector(gridExpandedSortedRowEntriesSelector, function (visibleSortedRowEntries) {
69
+ export var gridExpandedSortedRowIdsSelector = createSelectorMemoized(gridExpandedSortedRowEntriesSelector, function (visibleSortedRowEntries) {
70
70
  return visibleSortedRowEntries.map(function (row) {
71
71
  return row.id;
72
72
  });
@@ -77,7 +77,7 @@ export var gridExpandedSortedRowIdsSelector = createSelector(gridExpandedSortedR
77
77
  * Contains the collapsed children.
78
78
  * @category Filtering
79
79
  */
80
- export var gridFilteredSortedRowEntriesSelector = createSelector(gridFilteredRowsLookupSelector, gridSortedRowEntriesSelector, function (filteredRowsLookup, sortedRows) {
80
+ export var gridFilteredSortedRowEntriesSelector = createSelectorMemoized(gridFilteredRowsLookupSelector, gridSortedRowEntriesSelector, function (filteredRowsLookup, sortedRows) {
81
81
  return sortedRows.filter(function (row) {
82
82
  return filteredRowsLookup[row.id] !== false;
83
83
  });
@@ -88,7 +88,7 @@ export var gridFilteredSortedRowEntriesSelector = createSelector(gridFilteredRow
88
88
  * Contains the collapsed children.
89
89
  * @category Filtering
90
90
  */
91
- export var gridFilteredSortedRowIdsSelector = createSelector(gridFilteredSortedRowEntriesSelector, function (filteredSortedRowEntries) {
91
+ export var gridFilteredSortedRowIdsSelector = createSelectorMemoized(gridFilteredSortedRowEntriesSelector, function (filteredSortedRowEntries) {
92
92
  return filteredSortedRowEntries.map(function (row) {
93
93
  return row.id;
94
94
  });
@@ -98,7 +98,7 @@ export var gridFilteredSortedRowIdsSelector = createSelector(gridFilteredSortedR
98
98
  * Get the id and the model of the top level rows accessible after the filtering process.
99
99
  * @category Filtering
100
100
  */
101
- export var gridFilteredSortedTopLevelRowEntriesSelector = createSelector(gridExpandedSortedRowEntriesSelector, gridRowTreeSelector, gridRowMaximumTreeDepthSelector, function (visibleSortedRows, rowTree, rowTreeDepth) {
101
+ export var gridFilteredSortedTopLevelRowEntriesSelector = createSelectorMemoized(gridExpandedSortedRowEntriesSelector, gridRowTreeSelector, gridRowMaximumTreeDepthSelector, function (visibleSortedRows, rowTree, rowTreeDepth) {
102
102
  if (rowTreeDepth < 2) {
103
103
  return visibleSortedRows;
104
104
  }
@@ -128,7 +128,7 @@ export var gridFilteredTopLevelRowCountSelector = createSelector(gridFilteredSor
128
128
  * @category Filtering
129
129
  * @ignore - do not document.
130
130
  */
131
- export var gridFilterActiveItemsSelector = createSelector(gridFilterModelSelector, gridColumnLookupSelector, function (filterModel, columnLookup) {
131
+ export var gridFilterActiveItemsSelector = createSelectorMemoized(gridFilterModelSelector, gridColumnLookupSelector, function (filterModel, columnLookup) {
132
132
  var _filterModel$items;
133
133
  return (_filterModel$items = filterModel.items) == null ? void 0 : _filterModel$items.filter(function (item) {
134
134
  var _column$filterOperato, _item$value;
@@ -152,7 +152,7 @@ export var gridFilterActiveItemsSelector = createSelector(gridFilterModelSelecto
152
152
  * @category Filtering
153
153
  * @ignore - do not document.
154
154
  */
155
- export var gridFilterActiveItemsLookupSelector = createSelector(gridFilterActiveItemsSelector, function (activeFilters) {
155
+ export var gridFilterActiveItemsLookupSelector = createSelectorMemoized(gridFilterActiveItemsSelector, function (activeFilters) {
156
156
  var result = activeFilters.reduce(function (res, filterItem) {
157
157
  if (!res[filterItem.field]) {
158
158
  res[filterItem.field] = [filterItem];