@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
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.SUBMIT_FILTER_STROKE_TIME = exports.SUBMIT_FILTER_DATE_STROKE_TIME = exports.DataGrid = void 0;
7
+ exports.DataGrid = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -43,18 +43,6 @@ const DataGridRaw = /*#__PURE__*/React.forwardRef(function DataGrid(inProps, ref
43
43
  * - [DataGrid API](https://mui.com/x/api/data-grid/data-grid/)
44
44
  */
45
45
  const DataGrid = exports.DataGrid = /*#__PURE__*/React.memo(DataGridRaw);
46
-
47
- /**
48
- * Remove at v7
49
- * @deprecated
50
- */
51
- const SUBMIT_FILTER_STROKE_TIME = exports.SUBMIT_FILTER_STROKE_TIME = _useDataGridProps.DATA_GRID_PROPS_DEFAULT_VALUES.filterDebounceMs;
52
-
53
- /**
54
- * Remove at v7
55
- * @deprecated
56
- */
57
- const SUBMIT_FILTER_DATE_STROKE_TIME = exports.SUBMIT_FILTER_DATE_STROKE_TIME = _useDataGridProps.DATA_GRID_PROPS_DEFAULT_VALUES.filterDebounceMs;
58
46
  DataGridRaw.propTypes = {
59
47
  // ----------------------------- Warning --------------------------------
60
48
  // | These PropTypes are generated from the TypeScript type definitions |
@@ -282,6 +270,15 @@ DataGridRaw.propTypes = {
282
270
  * @default false
283
271
  */
284
272
  ignoreDiacritics: _propTypes.default.bool,
273
+ /**
274
+ * If `true`, the grid will not use `valueFormatter` when exporting to CSV or copying to clipboard.
275
+ * If an object is provided, you can choose to ignore the `valueFormatter` for CSV export or clipboard export.
276
+ * @default false
277
+ */
278
+ ignoreValueFormatterDuringExport: _propTypes.default.oneOfType([_propTypes.default.shape({
279
+ clipboardExport: _propTypes.default.bool,
280
+ csvExport: _propTypes.default.bool
281
+ }), _propTypes.default.bool]),
285
282
  /**
286
283
  * The initial state of the DataGrid.
287
284
  * The data in it will be set in the state on initialization but will not be controlled.
@@ -674,14 +671,5 @@ DataGridRaw.propTypes = {
674
671
  /**
675
672
  * The system prop that allows defining system overrides as well as additional CSS styles.
676
673
  */
677
- sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
678
- /**
679
- * If `true`, the grid will not use `valueFormatter` when exporting to CSV or copying to clipboard.
680
- * If an object is provided, you can choose to ignore the `valueFormatter` for CSV export or clipboard export.
681
- * @default false
682
- */
683
- unstable_ignoreValueFormatterDuringExport: _propTypes.default.oneOfType([_propTypes.default.shape({
684
- clipboardExport: _propTypes.default.bool,
685
- csvExport: _propTypes.default.bool
686
- }), _propTypes.default.bool])
674
+ sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object])
687
675
  };
@@ -77,7 +77,7 @@ const DATA_GRID_PROPS_DEFAULT_VALUES = exports.DATA_GRID_PROPS_DEFAULT_VALUES =
77
77
  disableColumnResize: false,
78
78
  keepNonExistentRowsSelected: false,
79
79
  keepColumnPositionIfDraggedOutside: false,
80
- unstable_ignoreValueFormatterDuringExport: false,
80
+ ignoreValueFormatterDuringExport: false,
81
81
  clipboardCopyCellDelimiter: '\t',
82
82
  rowPositionsDebounceMs: 166
83
83
  };
@@ -8,12 +8,13 @@ exports.GridHeader = GridHeader;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _useGridRootProps = require("../hooks/utils/useGridRootProps");
11
+ var _GridPreferencesPanel = require("./panel/GridPreferencesPanel");
11
12
  var _jsxRuntime = require("react/jsx-runtime");
12
13
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
14
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
15
  function GridHeader() {
15
16
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
16
17
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
17
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.preferencesPanel, (0, _extends2.default)({}, rootProps.slotProps?.preferencesPanel)), rootProps.slots.toolbar && /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.toolbar, (0, _extends2.default)({}, rootProps.slotProps?.toolbar))]
18
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridPreferencesPanel.GridPreferencesPanel, {}), rootProps.slots.toolbar && /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.toolbar, (0, _extends2.default)({}, rootProps.slotProps?.toolbar))]
18
19
  });
19
20
  }
@@ -145,9 +145,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
145
145
  }, [apiRef, currentPage.range, index, rowHeight, rowId, position]);
146
146
  const publish = React.useCallback((eventName, propHandler) => event => {
147
147
  // Ignore portal
148
- // The target is not an element when triggered by a Select inside the cell
149
- // See https://github.com/mui/material-ui/issues/10534
150
- if (event.target.nodeType === 1 && !event.currentTarget.contains(event.target)) {
148
+ if ((0, _domUtils.isEventTargetInPortal)(event)) {
151
149
  return;
152
150
  }
153
151
 
@@ -467,8 +467,8 @@ const GridCellV7 = /*#__PURE__*/React.forwardRef((props, ref) => {
467
467
  const cellRef = React.useRef(null);
468
468
  const handleRef = (0, _utils.unstable_useForkRef)(ref, cellRef);
469
469
  const focusElementRef = React.useRef(null);
470
- // @ts-expect-error To access `unstable_cellSelection` flag as it's a `premium` feature
471
- const isSelectionMode = rootProps.unstable_cellSelection ?? false;
470
+ // @ts-expect-error To access `cellSelection` flag as it's a `premium` feature
471
+ const isSelectionMode = rootProps.cellSelection ?? false;
472
472
  const ownerState = {
473
473
  align,
474
474
  showRightBorder,
@@ -73,7 +73,6 @@ function GridEditDateCell(props) {
73
73
  classes: rootProps.classes
74
74
  };
75
75
  const classes = useUtilityClasses(ownerState);
76
- const hasUpdatedEditValueOnMount = React.useRef(false);
77
76
  const parseValueToDate = React.useCallback(value => {
78
77
  if (value === '') {
79
78
  return null;
@@ -118,26 +117,8 @@ function GridEditDateCell(props) {
118
117
  inputRef.current.focus();
119
118
  }
120
119
  }, [hasFocus]);
121
- const meta = apiRef.current.unstable_getEditCellMeta(id, field);
122
- const handleInputRef = el => {
123
- inputRef.current = el;
124
- if (meta?.unstable_updateValueOnRender && !hasUpdatedEditValueOnMount.current) {
125
- const inputValue = inputRef.current.value;
126
- const parsedDate = parseValueToDate(inputValue);
127
- setValueState({
128
- parsed: parsedDate,
129
- formatted: inputValue
130
- });
131
- apiRef.current.setEditCellValue({
132
- id,
133
- field,
134
- value: parsedDate
135
- });
136
- hasUpdatedEditValueOnMount.current = true;
137
- }
138
- };
139
120
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledInputBase, (0, _extends2.default)({
140
- inputRef: handleInputRef,
121
+ inputRef: inputRef,
141
122
  fullWidth: true,
142
123
  className: classes.root,
143
124
  type: isDateTime ? 'datetime-local' : 'date',
@@ -14,6 +14,7 @@ var _gridColumnGroupsSelector = require("../../hooks/features/columnGrouping/gri
14
14
  var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
15
15
  var _useGridSelector = require("../../hooks/utils/useGridSelector");
16
16
  var _GridGenericColumnHeaderItem = require("./GridGenericColumnHeaderItem");
17
+ var _domUtils = require("../../utils/domUtils");
17
18
  var _jsxRuntime = require("react/jsx-runtime");
18
19
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
19
20
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -93,7 +94,7 @@ function GridColumnGroupHeader(props) {
93
94
  const publish = React.useCallback(eventName => event => {
94
95
  // Ignore portal
95
96
  // See https://github.com/mui/mui-x/issues/1721
96
- if (!event.currentTarget.contains(event.target)) {
97
+ if ((0, _domUtils.isEventTargetInPortal)(event)) {
97
98
  return;
98
99
  }
99
100
  apiRef.current.publishEvent(eventName, renderParams, event);
@@ -16,6 +16,7 @@ var _GridColumnHeaderMenu = require("../menu/columnMenu/GridColumnHeaderMenu");
16
16
  var _gridClasses = require("../../constants/gridClasses");
17
17
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
18
18
  var _GridGenericColumnHeaderItem = require("./GridGenericColumnHeaderItem");
19
+ var _domUtils = require("../../utils/domUtils");
19
20
  var _jsxRuntime = require("react/jsx-runtime");
20
21
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
21
22
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -75,7 +76,7 @@ function GridColumnHeaderItem(props) {
75
76
  const publish = React.useCallback(eventName => event => {
76
77
  // Ignore portal
77
78
  // See https://github.com/mui/mui-x/issues/1721
78
- if (!event.currentTarget.contains(event.target)) {
79
+ if ((0, _domUtils.isEventTargetInPortal)(event)) {
79
80
  return;
80
81
  }
81
82
  apiRef.current.publishEvent(eventName, apiRef.current.getColumnHeaderParams(colDef.field), event);
@@ -36,7 +36,7 @@ function GridColumnMenuSortItem(props) {
36
36
  const onSortMenuItemClick = React.useCallback(event => {
37
37
  onClick(event);
38
38
  const direction = event.currentTarget.getAttribute('data-value') || null;
39
- apiRef.current.sortColumn(colDef, direction === sortDirection ? null : direction);
39
+ apiRef.current.sortColumn(colDef.field, direction === sortDirection ? null : direction);
40
40
  }, [apiRef, colDef, onClick, sortDirection]);
41
41
  if (!colDef || !colDef.sortable || !sortingOrder.some(item => !!item)) {
42
42
  return null;
@@ -184,8 +184,8 @@ const GridFilterForm = exports.GridFilterForm = /*#__PURE__*/React.forwardRef(fu
184
184
  // try to keep the same operator when column change
185
185
  const newOperator = column.filterOperators.find(operator => operator.value === item.operator) || column.filterOperators[0];
186
186
 
187
- // Erase filter value if the input component is modified
188
- const eraseItemValue = !newOperator.InputComponent || newOperator.InputComponent !== currentOperator?.InputComponent;
187
+ // Erase filter value if the input component or filtered column type is modified
188
+ const eraseItemValue = !newOperator.InputComponent || newOperator.InputComponent !== currentOperator?.InputComponent || column.type !== currentColumn.type;
189
189
  applyFilterChanges((0, _extends2.default)({}, item, {
190
190
  field,
191
191
  operator: newOperator.value,
@@ -51,7 +51,7 @@ function GridFilterInputValue(props) {
51
51
  }, [id, applyValue, item, rootProps.filterDebounceMs, filterTimeout]);
52
52
  React.useEffect(() => {
53
53
  const itemPlusTag = item;
54
- if (itemPlusTag.fromInput !== id) {
54
+ if (itemPlusTag.fromInput !== id || item.value === undefined) {
55
55
  setFilterValueState(String(item.value ?? ''));
56
56
  }
57
57
  }, [id, item]);
@@ -69,17 +69,6 @@ Object.keys(_GridPanelWrapper).forEach(function (key) {
69
69
  }
70
70
  });
71
71
  });
72
- var _GridPreferencesPanel = require("./GridPreferencesPanel");
73
- Object.keys(_GridPreferencesPanel).forEach(function (key) {
74
- if (key === "default" || key === "__esModule") return;
75
- if (key in exports && exports[key] === _GridPreferencesPanel[key]) return;
76
- Object.defineProperty(exports, key, {
77
- enumerable: true,
78
- get: function () {
79
- return _GridPreferencesPanel[key];
80
- }
81
- });
82
- });
83
72
  var _filterPanel = require("./filterPanel");
84
73
  Object.keys(_filterPanel).forEach(function (key) {
85
74
  if (key === "default" || key === "__esModule") return;
@@ -23,7 +23,6 @@ const DATA_GRID_DEFAULT_SLOTS_COMPONENTS = exports.DATA_GRID_DEFAULT_SLOTS_COMPO
23
23
  footer: _components.GridFooter,
24
24
  footerRowCount: _components.GridRowCount,
25
25
  toolbar: null,
26
- preferencesPanel: _components.GridPreferencesPanel,
27
26
  loadingOverlay: _components.GridLoadingOverlay,
28
27
  noResultsOverlay: _GridNoResultsOverlay.GridNoResultsOverlay,
29
28
  noRowsOverlay: _components.GridNoRowsOverlay,
@@ -57,7 +57,7 @@ function hasNativeSelection(element) {
57
57
  * @requires useGridSelection (method)
58
58
  */
59
59
  const useGridClipboard = (apiRef, props) => {
60
- const ignoreValueFormatterProp = props.unstable_ignoreValueFormatterDuringExport;
60
+ const ignoreValueFormatterProp = props.ignoreValueFormatterDuringExport;
61
61
  const ignoreValueFormatter = (typeof ignoreValueFormatterProp === 'object' ? ignoreValueFormatterProp?.clipboardExport : ignoreValueFormatterProp) || false;
62
62
  const clipboardCopyCellDelimiter = props.clipboardCopyCellDelimiter;
63
63
  const handleCopy = React.useCallback(event => {
@@ -110,7 +110,7 @@ const useGridCellEditing = (apiRef, props) => {
110
110
  if ((0, _keyboardUtils.isPrintableKey)(event)) {
111
111
  reason = _gridEditCellParams.GridCellEditStartReasons.printableKeyDown;
112
112
  } else if ((event.ctrlKey || event.metaKey) && event.key === 'v') {
113
- reason = _gridEditCellParams.GridCellEditStartReasons.printableKeyDown;
113
+ reason = _gridEditCellParams.GridCellEditStartReasons.pasteKeyDown;
114
114
  } else if (event.key === 'Enter') {
115
115
  reason = _gridEditCellParams.GridCellEditStartReasons.enterKeyDown;
116
116
  } else if (event.key === 'Delete' || event.key === 'Backspace') {
@@ -130,24 +130,13 @@ const useGridCellEditing = (apiRef, props) => {
130
130
  const {
131
131
  id,
132
132
  field,
133
- reason,
134
- key,
135
- colDef
133
+ reason
136
134
  } = params;
137
135
  const startCellEditModeParams = {
138
136
  id,
139
137
  field
140
138
  };
141
- if (reason === _gridEditCellParams.GridCellEditStartReasons.printableKeyDown) {
142
- if (React.version.startsWith('17')) {
143
- // In React 17, cleaning the input is enough.
144
- // The sequence of events makes the key pressed by the end-users update the textbox directly.
145
- startCellEditModeParams.deleteValue = true;
146
- } else {
147
- const initialValue = colDef.valueParser ? colDef.valueParser(key) : key;
148
- startCellEditModeParams.initialValue = initialValue;
149
- }
150
- } else if (reason === _gridEditCellParams.GridCellEditStartReasons.deleteKeyDown) {
139
+ if (reason === _gridEditCellParams.GridCellEditStartReasons.printableKeyDown || reason === _gridEditCellParams.GridCellEditStartReasons.deleteKeyDown || reason === _gridEditCellParams.GridCellEditStartReasons.pasteKeyDown) {
151
140
  startCellEditModeParams.deleteValue = true;
152
141
  }
153
142
  apiRef.current.startCellEditMode(startCellEditModeParams);
@@ -257,17 +246,13 @@ const useGridCellEditing = (apiRef, props) => {
257
246
  initialValue
258
247
  } = params;
259
248
  let newValue = apiRef.current.getCellValue(id, field);
260
- // eslint-disable-next-line @typescript-eslint/naming-convention
261
- let unstable_updateValueOnRender = false;
262
249
  if (deleteValue || initialValue) {
263
250
  newValue = deleteValue ? '' : initialValue;
264
- unstable_updateValueOnRender = true;
265
251
  }
266
252
  const newProps = {
267
253
  value: newValue,
268
254
  error: false,
269
- isProcessingProps: false,
270
- unstable_updateValueOnRender
255
+ isProcessingProps: false
271
256
  };
272
257
  updateOrDeleteFieldState(id, field, newProps);
273
258
  apiRef.current.setCellFocus(id, field);
@@ -431,7 +416,9 @@ const useGridCellEditing = (apiRef, props) => {
431
416
  updateCellModesModel(cellModesModelProp);
432
417
  }
433
418
  }, [cellModesModelProp, updateCellModesModel]);
434
- React.useEffect(() => {
419
+
420
+ // Run this effect synchronously so that the keyboard event can impact the yet-to-be-rendered input.
421
+ (0, _utils.unstable_useEnhancedEffect)(() => {
435
422
  const idToIdLookup = (0, _gridRowsSelector.gridRowsDataRowIdToIdLookupSelector)(apiRef);
436
423
 
437
424
  // Update the ref here because updateStateToStopCellEditMode may change it later
@@ -180,7 +180,6 @@ const useGridRowEditing = (apiRef, props) => {
180
180
  const rowParams = apiRef.current.getRowParams(params.id);
181
181
  const newParams = (0, _extends2.default)({}, rowParams, {
182
182
  field: params.field,
183
- key: event.key,
184
183
  reason
185
184
  });
186
185
  apiRef.current.publishEvent('rowEditStart', newParams, event);
@@ -191,24 +190,13 @@ const useGridRowEditing = (apiRef, props) => {
191
190
  const {
192
191
  id,
193
192
  field,
194
- reason,
195
- key,
196
- columns
193
+ reason
197
194
  } = params;
198
195
  const startRowEditModeParams = {
199
196
  id,
200
197
  fieldToFocus: field
201
198
  };
202
- if (reason === _gridRowParams.GridRowEditStartReasons.printableKeyDown) {
203
- if (React.version.startsWith('17')) {
204
- // In React 17, cleaning the input is enough.
205
- // The sequence of events makes the key pressed by the end-users update the textbox directly.
206
- startRowEditModeParams.deleteValue = !!field;
207
- } else {
208
- const colDef = columns.find(col => col.field === field);
209
- startRowEditModeParams.initialValue = colDef.valueParser ? colDef.valueParser(key) : key;
210
- }
211
- } else if (reason === _gridRowParams.GridRowEditStartReasons.deleteKeyDown) {
199
+ if (reason === _gridRowParams.GridRowEditStartReasons.printableKeyDown || reason === _gridRowParams.GridRowEditStartReasons.deleteKeyDown) {
212
200
  startRowEditModeParams.deleteValue = !!field;
213
201
  }
214
202
  apiRef.current.startRowEditMode(startRowEditModeParams);
@@ -331,17 +319,13 @@ const useGridRowEditing = (apiRef, props) => {
331
319
  return acc;
332
320
  }
333
321
  let newValue = apiRef.current.getCellValue(id, field);
334
- // eslint-disable-next-line @typescript-eslint/naming-convention
335
- let unstable_updateValueOnRender = false;
336
322
  if (fieldToFocus === field && (deleteValue || initialValue)) {
337
323
  newValue = deleteValue ? '' : initialValue;
338
- unstable_updateValueOnRender = true;
339
324
  }
340
325
  acc[field] = {
341
326
  value: newValue,
342
327
  error: false,
343
- isProcessingProps: false,
344
- unstable_updateValueOnRender
328
+ isProcessingProps: false
345
329
  };
346
330
  return acc;
347
331
  }, {});
@@ -561,7 +545,9 @@ const useGridRowEditing = (apiRef, props) => {
561
545
  updateRowModesModel(rowModesModelProp);
562
546
  }
563
547
  }, [rowModesModelProp, updateRowModesModel]);
564
- React.useEffect(() => {
548
+
549
+ // Run this effect synchronously so that the keyboard event can impact the yet-to-be-rendered input.
550
+ (0, _utils.unstable_useEnhancedEffect)(() => {
565
551
  const idToIdLookup = (0, _gridRowsSelector.gridRowsDataRowIdToIdLookupSelector)(apiRef);
566
552
 
567
553
  // Update the ref here because updateStateToStopRowEditMode may change it later
@@ -24,7 +24,7 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
24
24
  */
25
25
  const useGridCsvExport = (apiRef, props) => {
26
26
  const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridCsvExport');
27
- const ignoreValueFormatterProp = props.unstable_ignoreValueFormatterDuringExport;
27
+ const ignoreValueFormatterProp = props.ignoreValueFormatterDuringExport;
28
28
  const ignoreValueFormatter = (typeof ignoreValueFormatterProp === 'object' ? ignoreValueFormatterProp?.csvExport : ignoreValueFormatterProp) || false;
29
29
  const getDataAsCsv = React.useCallback((options = {}) => {
30
30
  logger.debug(`Get data as CSV`);
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.sanitizeFilterModel = exports.removeDiacritics = exports.passFilterLogic = exports.mergeStateWithFilterModel = exports.cleanFilterItem = exports.buildAggregatedFilterApplier = void 0;
7
+ exports.shouldQuickFilterExcludeHiddenColumns = exports.sanitizeFilterModel = exports.removeDiacritics = exports.passFilterLogic = exports.mergeStateWithFilterModel = exports.cleanFilterItem = exports.buildAggregatedFilterApplier = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _models = require("../../../models");
10
10
  var _gridFilterState = require("./gridFilterState");
@@ -184,6 +184,9 @@ const buildAggregatedFilterItemsApplier = (filterModel, apiRef, disableEval) =>
184
184
  filterItemsApplierId += 1;
185
185
  return filterItem;
186
186
  };
187
+ const shouldQuickFilterExcludeHiddenColumns = filterModel => {
188
+ return filterModel.quickFilterExcludeHiddenColumns ?? true;
189
+ };
187
190
 
188
191
  /**
189
192
  * Generates a method to easily check if a row is matching the current quick filter.
@@ -191,13 +194,13 @@ const buildAggregatedFilterItemsApplier = (filterModel, apiRef, disableEval) =>
191
194
  * @param {React.MutableRefObject<GridPrivateApiCommunity>} apiRef The API of the grid.
192
195
  * @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.
193
196
  */
197
+ exports.shouldQuickFilterExcludeHiddenColumns = shouldQuickFilterExcludeHiddenColumns;
194
198
  const buildAggregatedQuickFilterApplier = (filterModel, apiRef) => {
195
199
  const quickFilterValues = filterModel.quickFilterValues?.filter(Boolean) ?? [];
196
200
  if (quickFilterValues.length === 0) {
197
201
  return null;
198
202
  }
199
- const quickFilterExcludeHiddenColumns = filterModel.quickFilterExcludeHiddenColumns ?? false;
200
- const columnFields = quickFilterExcludeHiddenColumns ? (0, _columns.gridVisibleColumnFieldsSelector)(apiRef) : (0, _columns.gridColumnFieldsSelector)(apiRef);
203
+ const columnFields = shouldQuickFilterExcludeHiddenColumns(filterModel) ? (0, _columns.gridVisibleColumnFieldsSelector)(apiRef) : (0, _columns.gridColumnFieldsSelector)(apiRef);
201
204
  const appliersPerField = [];
202
205
  const {
203
206
  ignoreDiacritics
@@ -349,7 +349,7 @@ const useGridFilter = (apiRef, props) => {
349
349
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowExpansionChange', updateVisibleRowsLookupState);
350
350
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnVisibilityModelChange', () => {
351
351
  const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
352
- if (filterModel.quickFilterValues && filterModel.quickFilterExcludeHiddenColumns) {
352
+ if (filterModel.quickFilterValues && (0, _gridFilterUtils.shouldQuickFilterExcludeHiddenColumns)(filterModel)) {
353
353
  // re-apply filters because the quick filter results may have changed
354
354
  apiRef.current.unstable_applyFilters();
355
355
  }
@@ -21,6 +21,7 @@ var _focus = require("../focus");
21
21
  var _gridColumnGroupsSelector = require("../columnGrouping/gridColumnGroupsSelector");
22
22
  var _gridHeaderFilteringSelectors = require("../headerFiltering/gridHeaderFilteringSelectors");
23
23
  var _pipeProcessing = require("../../core/pipeProcessing");
24
+ var _domUtils = require("../../../utils/domUtils");
24
25
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
25
26
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
26
27
  function enrichPageRowsWithPinnedRows(apiRef, rows) {
@@ -421,7 +422,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
421
422
  }, [apiRef, currentPageRows.length, goToHeader, goToGroupHeader, goToCell, getRowIdFromIndex]);
422
423
  const handleCellKeyDown = React.useCallback((params, event) => {
423
424
  // Ignore portal
424
- if (!event.currentTarget.contains(event.target)) {
425
+ if ((0, _domUtils.isEventTargetInPortal)(event)) {
425
426
  return;
426
427
  }
427
428
 
@@ -21,6 +21,7 @@ var _keyboardUtils = require("../../../utils/keyboardUtils");
21
21
  var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
22
22
  var _gridDetailPanelToggleField = require("../../../constants/gridDetailPanelToggleField");
23
23
  var _gridClasses = require("../../../constants/gridClasses");
24
+ var _domUtils = require("../../../utils/domUtils");
24
25
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
25
26
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
26
27
  const getSelectionModelPropValue = (selectionModelProp, prevSelectionModel) => {
@@ -293,7 +294,7 @@ const useGridRowSelection = (apiRef, props) => {
293
294
 
294
295
  // Ignore portal
295
296
  // Do not apply shortcuts if the focus is not on the cell root component
296
- if (!event.currentTarget.contains(event.target)) {
297
+ if ((0, _domUtils.isEventTargetInPortal)(event)) {
297
298
  return;
298
299
  }
299
300
  if ((0, _keyboardUtils.isNavigationKey)(event.key) && event.shiftKey) {
@@ -122,7 +122,8 @@ const useGridSorting = (apiRef, props) => {
122
122
  apiRef.current.applySorting();
123
123
  }
124
124
  }, [apiRef, logger, props.disableMultipleColumnsSorting]);
125
- const sortColumn = React.useCallback((column, direction, allowMultipleSorting) => {
125
+ const sortColumn = React.useCallback((field, direction, allowMultipleSorting) => {
126
+ const column = apiRef.current.getColumn(field);
126
127
  if (!column.sortable) {
127
128
  return;
128
129
  }
@@ -203,17 +204,17 @@ const useGridSorting = (apiRef, props) => {
203
204
  * EVENTS
204
205
  */
205
206
  const handleColumnHeaderClick = React.useCallback(({
206
- colDef
207
+ field
207
208
  }, event) => {
208
209
  const allowMultipleSorting = event.shiftKey || event.metaKey || event.ctrlKey;
209
- sortColumn(colDef, undefined, allowMultipleSorting);
210
+ sortColumn(field, undefined, allowMultipleSorting);
210
211
  }, [sortColumn]);
211
212
  const handleColumnHeaderKeyDown = React.useCallback(({
212
- colDef
213
+ field
213
214
  }, event) => {
214
215
  // Ctrl + Enter opens the column menu
215
216
  if ((0, _keyboardUtils.isEnterKey)(event.key) && !event.ctrlKey && !event.metaKey) {
216
- sortColumn(colDef, undefined, event.shiftKey);
217
+ sortColumn(field, undefined, event.shiftKey);
217
218
  }
218
219
  }, [sortColumn]);
219
220
  const handleColumnsChange = React.useCallback(() => {
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v7.0.0-alpha.1
2
+ * @mui/x-data-grid v7.0.0-alpha.3
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -84,6 +84,7 @@ var _exportNames = {
84
84
  unstable_resetCreateSelectorCache: true,
85
85
  findParentElementFromClassName: true,
86
86
  getActiveElement: true,
87
+ isEventTargetInPortal: true,
87
88
  isNavigationKey: true,
88
89
  clamp: true,
89
90
  isDeepEqual: true,
@@ -323,6 +324,12 @@ Object.defineProperty(exports, "isDeepEqual", {
323
324
  return _utils2.isDeepEqual;
324
325
  }
325
326
  });
327
+ Object.defineProperty(exports, "isEventTargetInPortal", {
328
+ enumerable: true,
329
+ get: function () {
330
+ return _domUtils.isEventTargetInPortal;
331
+ }
332
+ });
326
333
  Object.defineProperty(exports, "isFunction", {
327
334
  enumerable: true,
328
335
  get: function () {
@@ -99,7 +99,7 @@ const arSDGrid = {
99
99
  // Column menu text
100
100
  columnMenuLabel: 'القائمة',
101
101
  columnMenuShowColumns: 'إظهار الأعمدة',
102
- // columnMenuManageColumns: 'Manage columns',
102
+ columnMenuManageColumns: 'إدارة الأعمدة',
103
103
  columnMenuFilter: 'المرشِح',
104
104
  columnMenuHideColumn: 'إخفاء',
105
105
  columnMenuUnsort: 'الغاء الفرز',