@mui/x-data-grid 7.0.0-alpha.1 → 7.0.0-alpha.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 (140) hide show
  1. package/CHANGELOG.md +607 -188
  2. package/DataGrid/DataGrid.d.ts +0 -10
  3. package/DataGrid/DataGrid.js +11 -23
  4. package/DataGrid/useDataGridProps.js +1 -1
  5. package/README.md +0 -1
  6. package/components/GridHeader.js +3 -2
  7. package/components/GridPagination.d.ts +2 -2
  8. package/components/GridRow.js +2 -4
  9. package/components/cell/GridCell.js +3 -3
  10. package/components/cell/GridEditDateCell.js +1 -20
  11. package/components/columnHeaders/GridColumnGroupHeader.js +2 -1
  12. package/components/columnHeaders/GridColumnHeaderItem.js +2 -1
  13. package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  14. package/components/panel/filterPanel/GridFilterForm.js +2 -2
  15. package/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  16. package/components/panel/index.d.ts +0 -1
  17. package/components/panel/index.js +0 -1
  18. package/constants/defaultGridSlotsComponents.js +1 -2
  19. package/hooks/features/clipboard/useGridClipboard.d.ts +1 -1
  20. package/hooks/features/clipboard/useGridClipboard.js +1 -1
  21. package/hooks/features/editing/useGridCellEditing.js +8 -21
  22. package/hooks/features/editing/useGridRowEditing.js +7 -21
  23. package/hooks/features/export/useGridCsvExport.d.ts +1 -1
  24. package/hooks/features/export/useGridCsvExport.js +1 -1
  25. package/hooks/features/filter/gridFilterUtils.d.ts +1 -0
  26. package/hooks/features/filter/gridFilterUtils.js +7 -4
  27. package/hooks/features/filter/useGridFilter.js +2 -2
  28. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -1
  29. package/hooks/features/rowSelection/useGridRowSelection.js +2 -1
  30. package/hooks/features/sorting/useGridSorting.js +6 -5
  31. package/index.js +1 -1
  32. package/internals/index.d.ts +1 -1
  33. package/internals/index.js +1 -1
  34. package/legacy/DataGrid/DataGrid.js +11 -23
  35. package/legacy/DataGrid/useDataGridProps.js +1 -1
  36. package/legacy/colDef/gridDefaultColumnTypes.js +2 -3
  37. package/legacy/components/GridHeader.js +3 -2
  38. package/legacy/components/GridPagination.js +3 -4
  39. package/legacy/components/GridRow.js +2 -4
  40. package/legacy/components/cell/GridCell.js +3 -3
  41. package/legacy/components/cell/GridEditDateCell.js +1 -20
  42. package/legacy/components/columnHeaders/GridColumnGroupHeader.js +2 -1
  43. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +2 -1
  44. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +4 -5
  45. package/legacy/components/containers/GridRootStyles.js +69 -70
  46. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  47. package/legacy/components/panel/filterPanel/GridFilterForm.js +2 -2
  48. package/legacy/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  49. package/legacy/components/panel/index.js +0 -1
  50. package/legacy/components/toolbar/GridToolbarQuickFilter.js +4 -5
  51. package/legacy/constants/defaultGridSlotsComponents.js +1 -2
  52. package/legacy/hooks/features/clipboard/useGridClipboard.js +1 -1
  53. package/legacy/hooks/features/editing/useGridCellEditing.js +8 -21
  54. package/legacy/hooks/features/editing/useGridRowEditing.js +7 -23
  55. package/legacy/hooks/features/export/useGridCsvExport.js +1 -1
  56. package/legacy/hooks/features/filter/gridFilterUtils.js +7 -4
  57. package/legacy/hooks/features/filter/useGridFilter.js +2 -2
  58. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -1
  59. package/legacy/hooks/features/rowSelection/useGridRowSelection.js +2 -1
  60. package/legacy/hooks/features/sorting/useGridSorting.js +6 -5
  61. package/legacy/index.js +1 -1
  62. package/legacy/internals/index.js +1 -1
  63. package/legacy/locales/arSD.js +1 -1
  64. package/legacy/locales/bgBG.js +33 -37
  65. package/legacy/locales/heIL.js +1 -2
  66. package/legacy/models/params/gridEditCellParams.js +1 -0
  67. package/legacy/utils/domUtils.js +10 -15
  68. package/locales/arSD.js +1 -1
  69. package/locales/bgBG.js +33 -37
  70. package/locales/heIL.js +1 -2
  71. package/models/api/gridEditingApi.d.ts +2 -4
  72. package/models/api/gridSortApi.d.ts +2 -2
  73. package/models/gridFilterModel.d.ts +2 -2
  74. package/models/gridSlotsComponent.d.ts +0 -5
  75. package/models/gridSlotsComponentsProps.d.ts +0 -3
  76. package/models/params/gridEditCellParams.d.ts +3 -1
  77. package/models/params/gridEditCellParams.js +1 -0
  78. package/models/params/gridRowParams.d.ts +1 -0
  79. package/models/props/DataGridProps.d.ts +1 -1
  80. package/modern/DataGrid/DataGrid.js +11 -23
  81. package/modern/DataGrid/useDataGridProps.js +1 -1
  82. package/modern/components/GridHeader.js +2 -1
  83. package/modern/components/GridRow.js +2 -4
  84. package/modern/components/cell/GridCell.js +2 -2
  85. package/modern/components/cell/GridEditDateCell.js +1 -20
  86. package/modern/components/columnHeaders/GridColumnGroupHeader.js +2 -1
  87. package/modern/components/columnHeaders/GridColumnHeaderItem.js +2 -1
  88. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  89. package/modern/components/panel/filterPanel/GridFilterForm.js +2 -2
  90. package/modern/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  91. package/modern/components/panel/index.js +0 -1
  92. package/modern/constants/defaultGridSlotsComponents.js +1 -2
  93. package/modern/hooks/features/clipboard/useGridClipboard.js +1 -1
  94. package/modern/hooks/features/editing/useGridCellEditing.js +8 -21
  95. package/modern/hooks/features/editing/useGridRowEditing.js +7 -21
  96. package/modern/hooks/features/export/useGridCsvExport.js +1 -1
  97. package/modern/hooks/features/filter/gridFilterUtils.js +4 -2
  98. package/modern/hooks/features/filter/useGridFilter.js +2 -2
  99. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -1
  100. package/modern/hooks/features/rowSelection/useGridRowSelection.js +2 -1
  101. package/modern/hooks/features/sorting/useGridSorting.js +6 -5
  102. package/modern/index.js +1 -1
  103. package/modern/internals/index.js +1 -1
  104. package/modern/locales/arSD.js +1 -1
  105. package/modern/locales/bgBG.js +33 -37
  106. package/modern/locales/heIL.js +1 -2
  107. package/modern/models/params/gridEditCellParams.js +1 -0
  108. package/modern/utils/domUtils.js +10 -15
  109. package/node/DataGrid/DataGrid.js +11 -23
  110. package/node/DataGrid/useDataGridProps.js +1 -1
  111. package/node/components/GridHeader.js +2 -1
  112. package/node/components/GridRow.js +1 -3
  113. package/node/components/cell/GridCell.js +2 -2
  114. package/node/components/cell/GridEditDateCell.js +1 -20
  115. package/node/components/columnHeaders/GridColumnGroupHeader.js +2 -1
  116. package/node/components/columnHeaders/GridColumnHeaderItem.js +2 -1
  117. package/node/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  118. package/node/components/panel/filterPanel/GridFilterForm.js +2 -2
  119. package/node/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  120. package/node/components/panel/index.js +0 -11
  121. package/node/constants/defaultGridSlotsComponents.js +0 -1
  122. package/node/hooks/features/clipboard/useGridClipboard.js +1 -1
  123. package/node/hooks/features/editing/useGridCellEditing.js +7 -20
  124. package/node/hooks/features/editing/useGridRowEditing.js +6 -20
  125. package/node/hooks/features/export/useGridCsvExport.js +1 -1
  126. package/node/hooks/features/filter/gridFilterUtils.js +6 -3
  127. package/node/hooks/features/filter/useGridFilter.js +1 -1
  128. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -1
  129. package/node/hooks/features/rowSelection/useGridRowSelection.js +2 -1
  130. package/node/hooks/features/sorting/useGridSorting.js +6 -5
  131. package/node/index.js +1 -1
  132. package/node/internals/index.js +7 -0
  133. package/node/locales/arSD.js +1 -1
  134. package/node/locales/bgBG.js +33 -37
  135. package/node/locales/heIL.js +1 -2
  136. package/node/models/params/gridEditCellParams.js +1 -0
  137. package/node/utils/domUtils.js +11 -18
  138. package/package.json +6 -5
  139. package/utils/domUtils.d.ts +2 -3
  140. package/utils/domUtils.js +10 -15
@@ -13,14 +13,4 @@ interface DataGridComponent {
13
13
  * - [DataGrid API](https://mui.com/x/api/data-grid/data-grid/)
14
14
  */
15
15
  export declare const DataGrid: DataGridComponent;
16
- /**
17
- * Remove at v7
18
- * @deprecated
19
- */
20
- export declare const SUBMIT_FILTER_STROKE_TIME: number;
21
- /**
22
- * Remove at v7
23
- * @deprecated
24
- */
25
- export declare const SUBMIT_FILTER_DATE_STROKE_TIME: number;
26
16
  export {};
@@ -5,7 +5,7 @@ import { chainPropTypes } from '@mui/utils';
5
5
  import { GridBody, GridFooterPlaceholder, GridHeader, GridRoot } from '../components';
6
6
  import { GridContextProvider } from '../context/GridContextProvider';
7
7
  import { useDataGridComponent } from './useDataGridComponent';
8
- import { useDataGridProps, DATA_GRID_PROPS_DEFAULT_VALUES } from './useDataGridProps';
8
+ import { useDataGridProps } from './useDataGridProps';
9
9
  import { DataGridVirtualScroller } from '../components/DataGridVirtualScroller';
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -35,18 +35,6 @@ const DataGridRaw = /*#__PURE__*/React.forwardRef(function DataGrid(inProps, ref
35
35
  * - [DataGrid API](https://mui.com/x/api/data-grid/data-grid/)
36
36
  */
37
37
  export const DataGrid = /*#__PURE__*/React.memo(DataGridRaw);
38
-
39
- /**
40
- * Remove at v7
41
- * @deprecated
42
- */
43
- export const SUBMIT_FILTER_STROKE_TIME = DATA_GRID_PROPS_DEFAULT_VALUES.filterDebounceMs;
44
-
45
- /**
46
- * Remove at v7
47
- * @deprecated
48
- */
49
- export const SUBMIT_FILTER_DATE_STROKE_TIME = DATA_GRID_PROPS_DEFAULT_VALUES.filterDebounceMs;
50
38
  DataGridRaw.propTypes = {
51
39
  // ----------------------------- Warning --------------------------------
52
40
  // | These PropTypes are generated from the TypeScript type definitions |
@@ -274,6 +262,15 @@ DataGridRaw.propTypes = {
274
262
  * @default false
275
263
  */
276
264
  ignoreDiacritics: PropTypes.bool,
265
+ /**
266
+ * If `true`, the grid will not use `valueFormatter` when exporting to CSV or copying to clipboard.
267
+ * If an object is provided, you can choose to ignore the `valueFormatter` for CSV export or clipboard export.
268
+ * @default false
269
+ */
270
+ ignoreValueFormatterDuringExport: PropTypes.oneOfType([PropTypes.shape({
271
+ clipboardExport: PropTypes.bool,
272
+ csvExport: PropTypes.bool
273
+ }), PropTypes.bool]),
277
274
  /**
278
275
  * The initial state of the DataGrid.
279
276
  * The data in it will be set in the state on initialization but will not be controlled.
@@ -666,14 +663,5 @@ DataGridRaw.propTypes = {
666
663
  /**
667
664
  * The system prop that allows defining system overrides as well as additional CSS styles.
668
665
  */
669
- sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
670
- /**
671
- * If `true`, the grid will not use `valueFormatter` when exporting to CSV or copying to clipboard.
672
- * If an object is provided, you can choose to ignore the `valueFormatter` for CSV export or clipboard export.
673
- * @default false
674
- */
675
- unstable_ignoreValueFormatterDuringExport: PropTypes.oneOfType([PropTypes.shape({
676
- clipboardExport: PropTypes.bool,
677
- csvExport: PropTypes.bool
678
- }), PropTypes.bool])
666
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
679
667
  };
@@ -68,7 +68,7 @@ export const DATA_GRID_PROPS_DEFAULT_VALUES = {
68
68
  disableColumnResize: false,
69
69
  keepNonExistentRowsSelected: false,
70
70
  keepColumnPositionIfDraggedOutside: false,
71
- unstable_ignoreValueFormatterDuringExport: false,
71
+ ignoreValueFormatterDuringExport: false,
72
72
  clipboardCopyCellDelimiter: '\t',
73
73
  rowPositionsDebounceMs: 166
74
74
  };
package/README.md CHANGED
@@ -16,7 +16,6 @@ This component has the following peer dependencies that you will need to install
16
16
  ```json
17
17
  "peerDependencies": {
18
18
  "@mui/material": "^5.4.1",
19
- "@mui/system": "^5.4.1",
20
19
  "react": "^17.0.0 || ^18.0.0",
21
20
  "react-dom": "^17.0.0 || ^18.0.0"
22
21
  },
@@ -1,12 +1,13 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { useGridRootProps } from '../hooks/utils/useGridRootProps';
4
+ import { GridPreferencesPanel } from './panel/GridPreferencesPanel';
4
5
  import { jsx as _jsx } from "react/jsx-runtime";
5
6
  import { jsxs as _jsxs } from "react/jsx-runtime";
6
7
  export function GridHeader() {
7
- var _rootProps$slotProps, _rootProps$slotProps2;
8
+ var _rootProps$slotProps;
8
9
  const rootProps = useGridRootProps();
9
10
  return /*#__PURE__*/_jsxs(React.Fragment, {
10
- children: [/*#__PURE__*/_jsx(rootProps.slots.preferencesPanel, _extends({}, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.preferencesPanel)), rootProps.slots.toolbar && /*#__PURE__*/_jsx(rootProps.slots.toolbar, _extends({}, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.toolbar))]
11
+ children: [/*#__PURE__*/_jsx(GridPreferencesPanel, {}), rootProps.slots.toolbar && /*#__PURE__*/_jsx(rootProps.slots.toolbar, _extends({}, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.toolbar))]
11
12
  });
12
13
  }
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- export declare const GridPagination: React.ForwardRefExoticComponent<(Omit<Partial<import("@mui/material/TablePagination").TablePaginationOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<import("@mui/material/TablePagination").TablePaginationBaseProps, "hidden" | "color" | "page" | "content" | "size" | "style" | "height" | "translate" | "width" | "padding" | "abbr" | "slot" | "title" | "ref" | "colSpan" | "headers" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoFocus" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "nonce" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "rowSpan" | "scope" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "align" | "valign" | "sx" | "classes" | "variant" | "count" | "getItemAriaLabel" | "onPageChange" | "rowsPerPage" | "showFirstButton" | "showLastButton" | "labelDisplayedRows" | "labelRowsPerPage" | "onRowsPerPageChange" | "rowsPerPageOptions" | "backIconButtonProps" | "nextIconButtonProps" | "sortDirection" | "ActionsComponent" | "SelectProps"> & {
2
+ export declare const GridPagination: React.ForwardRefExoticComponent<(Omit<Partial<import("@mui/material/TablePagination").TablePaginationOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<import("@mui/material/TablePagination").TablePaginationBaseProps, "hidden" | "color" | "page" | "content" | "size" | "style" | "height" | "translate" | "width" | "padding" | "disabled" | "abbr" | "slot" | "title" | "ref" | "colSpan" | "headers" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoFocus" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "nonce" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "rowSpan" | "scope" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "align" | "valign" | "sx" | "classes" | "variant" | "slotProps" | "count" | "getItemAriaLabel" | "onPageChange" | "rowsPerPage" | "showFirstButton" | "showLastButton" | "labelDisplayedRows" | "labelRowsPerPage" | "onRowsPerPageChange" | "rowsPerPageOptions" | "backIconButtonProps" | "nextIconButtonProps" | "sortDirection" | "ActionsComponent" | "SelectProps"> & {
3
3
  component?: React.ElementType<any> | undefined;
4
- }>, "ref"> | Omit<Partial<import("@mui/material/TablePagination").TablePaginationOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("@mui/material/TablePagination").TablePaginationBaseProps, "ref"> & React.RefAttributes<React.Component<any, any, any>>, "hidden" | "color" | "page" | "content" | "size" | "style" | "height" | "translate" | "width" | "padding" | "abbr" | "slot" | "title" | "ref" | "colSpan" | "headers" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoFocus" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "nonce" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "rowSpan" | "scope" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "align" | "valign" | "sx" | "classes" | "variant" | "count" | "getItemAriaLabel" | "onPageChange" | "rowsPerPage" | "showFirstButton" | "showLastButton" | "labelDisplayedRows" | "labelRowsPerPage" | "onRowsPerPageChange" | "rowsPerPageOptions" | "backIconButtonProps" | "nextIconButtonProps" | "sortDirection" | "ActionsComponent" | "SelectProps"> & {
4
+ }>, "ref"> | Omit<Partial<import("@mui/material/TablePagination").TablePaginationOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("@mui/material/TablePagination").TablePaginationBaseProps, "ref"> & React.RefAttributes<React.Component<any, any, any>>, "hidden" | "color" | "page" | "content" | "size" | "style" | "height" | "translate" | "width" | "padding" | "disabled" | "abbr" | "slot" | "title" | "ref" | "colSpan" | "headers" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoFocus" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "nonce" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "rowSpan" | "scope" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "align" | "valign" | "sx" | "classes" | "variant" | "slotProps" | "count" | "getItemAriaLabel" | "onPageChange" | "rowsPerPage" | "showFirstButton" | "showLastButton" | "labelDisplayedRows" | "labelRowsPerPage" | "onRowsPerPageChange" | "rowsPerPageOptions" | "backIconButtonProps" | "nextIconButtonProps" | "sortDirection" | "ActionsComponent" | "SelectProps"> & {
5
5
  component?: React.ElementType<any> | undefined;
6
6
  }>, "ref">) & React.RefAttributes<HTMLDivElement>>;
@@ -13,7 +13,7 @@ import { useGridRootProps } from '../hooks/utils/useGridRootProps';
13
13
  import { gridColumnsTotalWidthSelector } from '../hooks/features/columns/gridColumnsSelector';
14
14
  import { useGridSelector, objectShallowCompare } from '../hooks/utils/useGridSelector';
15
15
  import { useGridVisibleRows } from '../hooks/utils/useGridVisibleRows';
16
- import { findParentElementFromClassName } from '../utils/domUtils';
16
+ import { findParentElementFromClassName, isEventTargetInPortal } from '../utils/domUtils';
17
17
  import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../colDef/gridCheckboxSelectionColDef';
18
18
  import { GRID_ACTIONS_COLUMN_TYPE } from '../colDef/gridActionsColDef';
19
19
  import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../constants/gridDetailPanelToggleField';
@@ -137,9 +137,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
137
137
  }, [apiRef, currentPage.range, index, rowHeight, rowId, position]);
138
138
  const publish = React.useCallback((eventName, propHandler) => event => {
139
139
  // Ignore portal
140
- // The target is not an element when triggered by a Select inside the cell
141
- // See https://github.com/mui/material-ui/issues/10534
142
- if (event.target.nodeType === 1 && !event.currentTarget.contains(event.target)) {
140
+ if (isEventTargetInPortal(event)) {
143
141
  return;
144
142
  }
145
143
 
@@ -386,7 +386,7 @@ process.env.NODE_ENV !== "production" ? GridCell.propTypes = {
386
386
  } : void 0;
387
387
  export { MemoizedCellWrapper as GridCellWrapper, GridCell };
388
388
  const GridCellV7 = /*#__PURE__*/React.forwardRef((props, ref) => {
389
- var _getActions, _ref, _rootProps$unstable_c, _rootProps$experiment3, _rootProps$experiment4;
389
+ var _getActions, _ref, _rootProps$cellSelect, _rootProps$experiment3, _rootProps$experiment4;
390
390
  const {
391
391
  column,
392
392
  rowId,
@@ -461,8 +461,8 @@ const GridCellV7 = /*#__PURE__*/React.forwardRef((props, ref) => {
461
461
  const cellRef = React.useRef(null);
462
462
  const handleRef = useForkRef(ref, cellRef);
463
463
  const focusElementRef = React.useRef(null);
464
- // @ts-expect-error To access `unstable_cellSelection` flag as it's a `premium` feature
465
- const isSelectionMode = (_rootProps$unstable_c = rootProps.unstable_cellSelection) != null ? _rootProps$unstable_c : false;
464
+ // @ts-expect-error To access `cellSelection` flag as it's a `premium` feature
465
+ const isSelectionMode = (_rootProps$cellSelect = rootProps.cellSelection) != null ? _rootProps$cellSelect : false;
466
466
  const ownerState = {
467
467
  align,
468
468
  showRightBorder,
@@ -63,7 +63,6 @@ function GridEditDateCell(props) {
63
63
  classes: rootProps.classes
64
64
  };
65
65
  const classes = useUtilityClasses(ownerState);
66
- const hasUpdatedEditValueOnMount = React.useRef(false);
67
66
  const parseValueToDate = React.useCallback(value => {
68
67
  if (value === '') {
69
68
  return null;
@@ -109,26 +108,8 @@ function GridEditDateCell(props) {
109
108
  inputRef.current.focus();
110
109
  }
111
110
  }, [hasFocus]);
112
- const meta = apiRef.current.unstable_getEditCellMeta(id, field);
113
- const handleInputRef = el => {
114
- inputRef.current = el;
115
- if (meta != null && meta.unstable_updateValueOnRender && !hasUpdatedEditValueOnMount.current) {
116
- const inputValue = inputRef.current.value;
117
- const parsedDate = parseValueToDate(inputValue);
118
- setValueState({
119
- parsed: parsedDate,
120
- formatted: inputValue
121
- });
122
- apiRef.current.setEditCellValue({
123
- id,
124
- field,
125
- value: parsedDate
126
- });
127
- hasUpdatedEditValueOnMount.current = true;
128
- }
129
- };
130
111
  return /*#__PURE__*/_jsx(StyledInputBase, _extends({
131
- inputRef: handleInputRef,
112
+ inputRef: inputRef,
132
113
  fullWidth: true,
133
114
  className: classes.root,
134
115
  type: isDateTime ? 'datetime-local' : 'date',
@@ -7,6 +7,7 @@ import { gridColumnGroupsLookupSelector } from '../../hooks/features/columnGroup
7
7
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
8
8
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
9
9
  import { GridGenericColumnHeaderItem } from './GridGenericColumnHeaderItem';
10
+ import { isEventTargetInPortal } from '../../utils/domUtils';
10
11
  import { jsx as _jsx } from "react/jsx-runtime";
11
12
  const useUtilityClasses = ownerState => {
12
13
  const {
@@ -85,7 +86,7 @@ function GridColumnGroupHeader(props) {
85
86
  const publish = React.useCallback(eventName => event => {
86
87
  // Ignore portal
87
88
  // See https://github.com/mui/mui-x/issues/1721
88
- if (!event.currentTarget.contains(event.target)) {
89
+ if (isEventTargetInPortal(event)) {
89
90
  return;
90
91
  }
91
92
  apiRef.current.publishEvent(eventName, renderParams, event);
@@ -9,6 +9,7 @@ import { GridColumnHeaderMenu } from '../menu/columnMenu/GridColumnHeaderMenu';
9
9
  import { getDataGridUtilityClass } from '../../constants/gridClasses';
10
10
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
11
11
  import { GridGenericColumnHeaderItem } from './GridGenericColumnHeaderItem';
12
+ import { isEventTargetInPortal } from '../../utils/domUtils';
12
13
  import { jsx as _jsx } from "react/jsx-runtime";
13
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
14
15
  const useUtilityClasses = ownerState => {
@@ -68,7 +69,7 @@ function GridColumnHeaderItem(props) {
68
69
  const publish = React.useCallback(eventName => event => {
69
70
  // Ignore portal
70
71
  // See https://github.com/mui/mui-x/issues/1721
71
- if (!event.currentTarget.contains(event.target)) {
72
+ if (isEventTargetInPortal(event)) {
72
73
  return;
73
74
  }
74
75
  apiRef.current.publishEvent(eventName, apiRef.current.getColumnHeaderParams(colDef.field), event);
@@ -29,7 +29,7 @@ function GridColumnMenuSortItem(props) {
29
29
  const onSortMenuItemClick = React.useCallback(event => {
30
30
  onClick(event);
31
31
  const direction = event.currentTarget.getAttribute('data-value') || null;
32
- apiRef.current.sortColumn(colDef, direction === sortDirection ? null : direction);
32
+ apiRef.current.sortColumn(colDef.field, direction === sortDirection ? null : direction);
33
33
  }, [apiRef, colDef, onClick, sortDirection]);
34
34
  if (!colDef || !colDef.sortable || !sortingOrder.some(item => !!item)) {
35
35
  return null;
@@ -178,8 +178,8 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
178
178
  // try to keep the same operator when column change
179
179
  const newOperator = column.filterOperators.find(operator => operator.value === item.operator) || column.filterOperators[0];
180
180
 
181
- // Erase filter value if the input component is modified
182
- const eraseItemValue = !newOperator.InputComponent || newOperator.InputComponent !== (currentOperator == null ? void 0 : currentOperator.InputComponent);
181
+ // Erase filter value if the input component or filtered column type is modified
182
+ const eraseItemValue = !newOperator.InputComponent || newOperator.InputComponent !== (currentOperator == null ? void 0 : currentOperator.InputComponent) || column.type !== currentColumn.type;
183
183
  applyFilterChanges(_extends({}, item, {
184
184
  field,
185
185
  operator: newOperator.value,
@@ -43,7 +43,7 @@ function GridFilterInputValue(props) {
43
43
  }, [id, applyValue, item, rootProps.filterDebounceMs, filterTimeout]);
44
44
  React.useEffect(() => {
45
45
  const itemPlusTag = item;
46
- if (itemPlusTag.fromInput !== id) {
46
+ if (itemPlusTag.fromInput !== id || item.value === undefined) {
47
47
  var _item$value2;
48
48
  setFilterValueState(String((_item$value2 = item.value) != null ? _item$value2 : ''));
49
49
  }
@@ -4,5 +4,4 @@ export * from './GridPanelContent';
4
4
  export * from './GridPanelFooter';
5
5
  export * from './GridPanelHeader';
6
6
  export * from './GridPanelWrapper';
7
- export * from './GridPreferencesPanel';
8
7
  export * from './filterPanel';
@@ -4,5 +4,4 @@ export * from './GridPanelContent';
4
4
  export * from './GridPanelFooter';
5
5
  export * from './GridPanelHeader';
6
6
  export * from './GridPanelWrapper';
7
- export * from './GridPreferencesPanel';
8
7
  export * from './filterPanel';
@@ -1,5 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import { GridSkeletonCell, GridColumnsPanel, GridFilterPanel, GridFooter, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridPreferencesPanel, GridRow, GridColumnHeaderFilterIconButton, GridRowCount } from '../components';
2
+ import { GridSkeletonCell, GridColumnsPanel, GridFilterPanel, GridFooter, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridRow, GridColumnHeaderFilterIconButton, GridRowCount } from '../components';
3
3
  import { GridCellV7 } from '../components/cell/GridCell';
4
4
  import { GridColumnHeaders } from '../components/GridColumnHeaders';
5
5
  import { GridColumnMenu } from '../components/menu/columnMenu/GridColumnMenu';
@@ -17,7 +17,6 @@ export const DATA_GRID_DEFAULT_SLOTS_COMPONENTS = _extends({}, materialSlots, {
17
17
  footer: GridFooter,
18
18
  footerRowCount: GridRowCount,
19
19
  toolbar: null,
20
- preferencesPanel: GridPreferencesPanel,
21
20
  loadingOverlay: GridLoadingOverlay,
22
21
  noResultsOverlay: GridNoResultsOverlay,
23
22
  noRowsOverlay: GridNoRowsOverlay,
@@ -5,4 +5,4 @@ import type { DataGridProcessedProps } from '../../../models/props/DataGridProps
5
5
  * @requires useGridCsvExport (method)
6
6
  * @requires useGridSelection (method)
7
7
  */
8
- export declare const useGridClipboard: (apiRef: React.MutableRefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, 'unstable_ignoreValueFormatterDuringExport' | 'onClipboardCopy' | 'clipboardCopyCellDelimiter'>) => void;
8
+ export declare const useGridClipboard: (apiRef: React.MutableRefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, 'ignoreValueFormatterDuringExport' | 'onClipboardCopy' | 'clipboardCopyCellDelimiter'>) => void;
@@ -50,7 +50,7 @@ function hasNativeSelection(element) {
50
50
  * @requires useGridSelection (method)
51
51
  */
52
52
  export const useGridClipboard = (apiRef, props) => {
53
- const ignoreValueFormatterProp = props.unstable_ignoreValueFormatterDuringExport;
53
+ const ignoreValueFormatterProp = props.ignoreValueFormatterDuringExport;
54
54
  const ignoreValueFormatter = (typeof ignoreValueFormatterProp === 'object' ? ignoreValueFormatterProp == null ? void 0 : ignoreValueFormatterProp.clipboardExport : ignoreValueFormatterProp) || false;
55
55
  const clipboardCopyCellDelimiter = props.clipboardCopyCellDelimiter;
56
56
  const handleCopy = React.useCallback(event => {
@@ -4,7 +4,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  const _excluded = ["id", "field"],
5
5
  _excluded2 = ["id", "field"];
6
6
  import * as React from 'react';
7
- import { unstable_useEventCallback as useEventCallback } from '@mui/utils';
7
+ import { unstable_useEventCallback as useEventCallback, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
8
8
  import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
9
9
  import { GridEditModes, GridCellModes } from '../../../models/gridEditRowModel';
10
10
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
@@ -101,7 +101,7 @@ export const useGridCellEditing = (apiRef, props) => {
101
101
  if (isPrintableKey(event)) {
102
102
  reason = GridCellEditStartReasons.printableKeyDown;
103
103
  } else if ((event.ctrlKey || event.metaKey) && event.key === 'v') {
104
- reason = GridCellEditStartReasons.printableKeyDown;
104
+ reason = GridCellEditStartReasons.pasteKeyDown;
105
105
  } else if (event.key === 'Enter') {
106
106
  reason = GridCellEditStartReasons.enterKeyDown;
107
107
  } else if (event.key === 'Delete' || event.key === 'Backspace') {
@@ -121,24 +121,13 @@ export const useGridCellEditing = (apiRef, props) => {
121
121
  const {
122
122
  id,
123
123
  field,
124
- reason,
125
- key,
126
- colDef
124
+ reason
127
125
  } = params;
128
126
  const startCellEditModeParams = {
129
127
  id,
130
128
  field
131
129
  };
132
- if (reason === GridCellEditStartReasons.printableKeyDown) {
133
- if (React.version.startsWith('17')) {
134
- // In React 17, cleaning the input is enough.
135
- // The sequence of events makes the key pressed by the end-users update the textbox directly.
136
- startCellEditModeParams.deleteValue = true;
137
- } else {
138
- const initialValue = colDef.valueParser ? colDef.valueParser(key) : key;
139
- startCellEditModeParams.initialValue = initialValue;
140
- }
141
- } else if (reason === GridCellEditStartReasons.deleteKeyDown) {
130
+ if (reason === GridCellEditStartReasons.printableKeyDown || reason === GridCellEditStartReasons.deleteKeyDown || reason === GridCellEditStartReasons.pasteKeyDown) {
142
131
  startCellEditModeParams.deleteValue = true;
143
132
  }
144
133
  apiRef.current.startCellEditMode(startCellEditModeParams);
@@ -248,17 +237,13 @@ export const useGridCellEditing = (apiRef, props) => {
248
237
  initialValue
249
238
  } = params;
250
239
  let newValue = apiRef.current.getCellValue(id, field);
251
- // eslint-disable-next-line @typescript-eslint/naming-convention
252
- let unstable_updateValueOnRender = false;
253
240
  if (deleteValue || initialValue) {
254
241
  newValue = deleteValue ? '' : initialValue;
255
- unstable_updateValueOnRender = true;
256
242
  }
257
243
  const newProps = {
258
244
  value: newValue,
259
245
  error: false,
260
- isProcessingProps: false,
261
- unstable_updateValueOnRender
246
+ isProcessingProps: false
262
247
  };
263
248
  updateOrDeleteFieldState(id, field, newProps);
264
249
  apiRef.current.setCellFocus(id, field);
@@ -423,7 +408,9 @@ export const useGridCellEditing = (apiRef, props) => {
423
408
  updateCellModesModel(cellModesModelProp);
424
409
  }
425
410
  }, [cellModesModelProp, updateCellModesModel]);
426
- React.useEffect(() => {
411
+
412
+ // Run this effect synchronously so that the keyboard event can impact the yet-to-be-rendered input.
413
+ useEnhancedEffect(() => {
427
414
  const idToIdLookup = gridRowsDataRowIdToIdLookupSelector(apiRef);
428
415
 
429
416
  // Update the ref here because updateStateToStopCellEditMode may change it later
@@ -4,7 +4,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  const _excluded = ["id"],
5
5
  _excluded2 = ["id"];
6
6
  import * as React from 'react';
7
- import { unstable_useEventCallback as useEventCallback } from '@mui/utils';
7
+ import { unstable_useEventCallback as useEventCallback, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
8
8
  import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
9
9
  import { GridEditModes, GridRowModes } from '../../../models/gridEditRowModel';
10
10
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
@@ -172,7 +172,6 @@ export const useGridRowEditing = (apiRef, props) => {
172
172
  const rowParams = apiRef.current.getRowParams(params.id);
173
173
  const newParams = _extends({}, rowParams, {
174
174
  field: params.field,
175
- key: event.key,
176
175
  reason
177
176
  });
178
177
  apiRef.current.publishEvent('rowEditStart', newParams, event);
@@ -183,24 +182,13 @@ export const useGridRowEditing = (apiRef, props) => {
183
182
  const {
184
183
  id,
185
184
  field,
186
- reason,
187
- key,
188
- columns
185
+ reason
189
186
  } = params;
190
187
  const startRowEditModeParams = {
191
188
  id,
192
189
  fieldToFocus: field
193
190
  };
194
- if (reason === GridRowEditStartReasons.printableKeyDown) {
195
- if (React.version.startsWith('17')) {
196
- // In React 17, cleaning the input is enough.
197
- // The sequence of events makes the key pressed by the end-users update the textbox directly.
198
- startRowEditModeParams.deleteValue = !!field;
199
- } else {
200
- const colDef = columns.find(col => col.field === field);
201
- startRowEditModeParams.initialValue = colDef.valueParser ? colDef.valueParser(key) : key;
202
- }
203
- } else if (reason === GridRowEditStartReasons.deleteKeyDown) {
191
+ if (reason === GridRowEditStartReasons.printableKeyDown || reason === GridRowEditStartReasons.deleteKeyDown) {
204
192
  startRowEditModeParams.deleteValue = !!field;
205
193
  }
206
194
  apiRef.current.startRowEditMode(startRowEditModeParams);
@@ -323,17 +311,13 @@ export const useGridRowEditing = (apiRef, props) => {
323
311
  return acc;
324
312
  }
325
313
  let newValue = apiRef.current.getCellValue(id, field);
326
- // eslint-disable-next-line @typescript-eslint/naming-convention
327
- let unstable_updateValueOnRender = false;
328
314
  if (fieldToFocus === field && (deleteValue || initialValue)) {
329
315
  newValue = deleteValue ? '' : initialValue;
330
- unstable_updateValueOnRender = true;
331
316
  }
332
317
  acc[field] = {
333
318
  value: newValue,
334
319
  error: false,
335
- isProcessingProps: false,
336
- unstable_updateValueOnRender
320
+ isProcessingProps: false
337
321
  };
338
322
  return acc;
339
323
  }, {});
@@ -553,7 +537,9 @@ export const useGridRowEditing = (apiRef, props) => {
553
537
  updateRowModesModel(rowModesModelProp);
554
538
  }
555
539
  }, [rowModesModelProp, updateRowModesModel]);
556
- React.useEffect(() => {
540
+
541
+ // Run this effect synchronously so that the keyboard event can impact the yet-to-be-rendered input.
542
+ useEnhancedEffect(() => {
557
543
  const idToIdLookup = gridRowsDataRowIdToIdLookupSelector(apiRef);
558
544
 
559
545
  // Update the ref here because updateStateToStopRowEditMode may change it later
@@ -8,4 +8,4 @@ import type { DataGridProcessedProps } from '../../../models/props/DataGridProps
8
8
  * @requires useGridSelection (state)
9
9
  * @requires useGridParamsApi (method)
10
10
  */
11
- export declare const useGridCsvExport: (apiRef: React.MutableRefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, 'unstable_ignoreValueFormatterDuringExport'>) => void;
11
+ export declare const useGridCsvExport: (apiRef: React.MutableRefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, 'ignoreValueFormatterDuringExport'>) => void;
@@ -16,7 +16,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
16
16
  */
17
17
  export const useGridCsvExport = (apiRef, props) => {
18
18
  const logger = useGridLogger(apiRef, 'useGridCsvExport');
19
- const ignoreValueFormatterProp = props.unstable_ignoreValueFormatterDuringExport;
19
+ const ignoreValueFormatterProp = props.ignoreValueFormatterDuringExport;
20
20
  const ignoreValueFormatter = (typeof ignoreValueFormatterProp === 'object' ? ignoreValueFormatterProp == null ? void 0 : ignoreValueFormatterProp.csvExport : ignoreValueFormatterProp) || false;
21
21
  const getDataAsCsv = React.useCallback((options = {}) => {
22
22
  var _options$getRowsToExp, _options$includeHeade, _options$includeColum;
@@ -14,6 +14,7 @@ export declare const cleanFilterItem: (item: GridFilterItem, apiRef: React.Mutab
14
14
  export declare const sanitizeFilterModel: (model: GridFilterModel, disableMultipleColumnsFiltering: boolean, apiRef: React.MutableRefObject<GridPrivateApiCommunity>) => GridFilterModel;
15
15
  export declare const mergeStateWithFilterModel: (filterModel: GridFilterModel, disableMultipleColumnsFiltering: boolean, apiRef: React.MutableRefObject<GridPrivateApiCommunity>) => (filteringState: GridStateCommunity['filter']) => GridStateCommunity['filter'];
16
16
  export declare const removeDiacritics: (value: unknown) => unknown;
17
+ export declare const shouldQuickFilterExcludeHiddenColumns: (filterModel: GridFilterModel) => boolean;
17
18
  export declare const buildAggregatedFilterApplier: (filterModel: GridFilterModel, apiRef: React.MutableRefObject<GridPrivateApiCommunity>, disableEval: boolean) => GridAggregatedFilterItemApplier;
18
19
  type FilterCache = {
19
20
  cleanedFilterItems?: GridFilterItem[];
@@ -175,6 +175,10 @@ const buildAggregatedFilterItemsApplier = (filterModel, apiRef, disableEval) =>
175
175
  filterItemsApplierId += 1;
176
176
  return filterItem;
177
177
  };
178
+ export const shouldQuickFilterExcludeHiddenColumns = filterModel => {
179
+ var _filterModel$quickFil;
180
+ return (_filterModel$quickFil = filterModel.quickFilterExcludeHiddenColumns) != null ? _filterModel$quickFil : true;
181
+ };
178
182
 
179
183
  /**
180
184
  * Generates a method to easily check if a row is matching the current quick filter.
@@ -183,13 +187,12 @@ const buildAggregatedFilterItemsApplier = (filterModel, apiRef, disableEval) =>
183
187
  * @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.
184
188
  */
185
189
  const buildAggregatedQuickFilterApplier = (filterModel, apiRef) => {
186
- var _filterModel$quickFil, _filterModel$quickFil2, _filterModel$quickFil3;
187
- const quickFilterValues = (_filterModel$quickFil = (_filterModel$quickFil2 = filterModel.quickFilterValues) == null ? void 0 : _filterModel$quickFil2.filter(Boolean)) != null ? _filterModel$quickFil : [];
190
+ var _filterModel$quickFil2, _filterModel$quickFil3;
191
+ const quickFilterValues = (_filterModel$quickFil2 = (_filterModel$quickFil3 = filterModel.quickFilterValues) == null ? void 0 : _filterModel$quickFil3.filter(Boolean)) != null ? _filterModel$quickFil2 : [];
188
192
  if (quickFilterValues.length === 0) {
189
193
  return null;
190
194
  }
191
- const quickFilterExcludeHiddenColumns = (_filterModel$quickFil3 = filterModel.quickFilterExcludeHiddenColumns) != null ? _filterModel$quickFil3 : false;
192
- const columnFields = quickFilterExcludeHiddenColumns ? gridVisibleColumnFieldsSelector(apiRef) : gridColumnFieldsSelector(apiRef);
195
+ const columnFields = shouldQuickFilterExcludeHiddenColumns(filterModel) ? gridVisibleColumnFieldsSelector(apiRef) : gridColumnFieldsSelector(apiRef);
193
196
  const appliersPerField = [];
194
197
  const {
195
198
  ignoreDiacritics
@@ -14,7 +14,7 @@ import { useFirstRender } from '../../utils/useFirstRender';
14
14
  import { gridRowsLookupSelector } from '../rows';
15
15
  import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
16
16
  import { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from '../../core/strategyProcessing';
17
- import { buildAggregatedFilterApplier, sanitizeFilterModel, mergeStateWithFilterModel, cleanFilterItem, passFilterLogic } from './gridFilterUtils';
17
+ import { buildAggregatedFilterApplier, sanitizeFilterModel, mergeStateWithFilterModel, cleanFilterItem, passFilterLogic, shouldQuickFilterExcludeHiddenColumns } from './gridFilterUtils';
18
18
  import { isDeepEqual } from '../../../utils/utils';
19
19
  import { jsx as _jsx } from "react/jsx-runtime";
20
20
  export const filterStateInitializer = (state, props, apiRef) => {
@@ -345,7 +345,7 @@ export const useGridFilter = (apiRef, props) => {
345
345
  useGridApiEventHandler(apiRef, 'rowExpansionChange', updateVisibleRowsLookupState);
346
346
  useGridApiEventHandler(apiRef, 'columnVisibilityModelChange', () => {
347
347
  const filterModel = gridFilterModelSelector(apiRef);
348
- if (filterModel.quickFilterValues && filterModel.quickFilterExcludeHiddenColumns) {
348
+ if (filterModel.quickFilterValues && shouldQuickFilterExcludeHiddenColumns(filterModel)) {
349
349
  // re-apply filters because the quick filter results may have changed
350
350
  apiRef.current.unstable_applyFilters();
351
351
  }