@mui/x-data-grid 8.0.0-alpha.5 → 8.0.0-alpha.6

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 (193) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/DataGrid/DataGrid.js +4 -3
  3. package/components/GridColumnHeaders.d.ts +1 -1
  4. package/components/GridColumnHeaders.js +4 -4
  5. package/components/GridFooter.d.ts +2 -1
  6. package/components/GridFooter.js +4 -4
  7. package/components/GridLoadingOverlay.d.ts +1 -1
  8. package/components/GridLoadingOverlay.js +10 -8
  9. package/components/GridNoResultsOverlay.d.ts +2 -1
  10. package/components/GridNoResultsOverlay.js +4 -4
  11. package/components/GridNoRowsOverlay.d.ts +2 -1
  12. package/components/GridNoRowsOverlay.js +4 -4
  13. package/components/GridPagination.d.ts +1 -1
  14. package/components/GridPagination.js +5 -3
  15. package/components/GridRow.d.ts +1 -1
  16. package/components/GridRow.js +3 -2
  17. package/components/GridRowCount.d.ts +1 -1
  18. package/components/GridRowCount.js +3 -2
  19. package/components/GridSelectedRowCount.d.ts +4 -1
  20. package/components/GridSelectedRowCount.js +3 -2
  21. package/components/GridSkeletonLoadingOverlay.d.ts +1 -1
  22. package/components/GridSkeletonLoadingOverlay.js +4 -3
  23. package/components/cell/GridActionsCellItem.d.ts +1 -1
  24. package/components/cell/GridActionsCellItem.js +3 -2
  25. package/components/cell/GridCell.d.ts +1 -1
  26. package/components/cell/GridCell.js +3 -2
  27. package/components/cell/GridEditInputCell.d.ts +1 -1
  28. package/components/cell/GridEditInputCell.js +72 -3
  29. package/components/cell/GridSkeletonCell.js +1 -2
  30. package/components/columnHeaders/GridBaseColumnHeaders.d.ts +1 -1
  31. package/components/columnHeaders/GridBaseColumnHeaders.js +4 -3
  32. package/components/columnHeaders/GridColumnHeaderTitle.js +5 -3
  33. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +1 -1
  34. package/components/columnHeaders/GridGenericColumnHeaderItem.js +3 -2
  35. package/components/columnHeaders/GridIconButtonContainer.d.ts +1 -1
  36. package/components/columnHeaders/GridIconButtonContainer.js +5 -3
  37. package/components/columnSelection/GridCellCheckboxRenderer.d.ts +2 -2
  38. package/components/columnSelection/GridCellCheckboxRenderer.js +5 -3
  39. package/components/columnSelection/GridHeaderCheckbox.d.ts +1 -1
  40. package/components/columnSelection/GridHeaderCheckbox.js +5 -3
  41. package/components/containers/GridFooterContainer.d.ts +1 -1
  42. package/components/containers/GridFooterContainer.js +5 -3
  43. package/components/containers/GridOverlay.d.ts +1 -1
  44. package/components/containers/GridOverlay.js +5 -3
  45. package/components/containers/GridRoot.d.ts +1 -1
  46. package/components/containers/GridRoot.js +5 -3
  47. package/components/containers/GridToolbarContainer.d.ts +1 -1
  48. package/components/containers/GridToolbarContainer.js +3 -2
  49. package/components/menu/columnMenu/GridColumnMenu.d.ts +2 -2
  50. package/components/menu/columnMenu/GridColumnMenu.js +5 -5
  51. package/components/menu/columnMenu/GridColumnMenuContainer.d.ts +1 -1
  52. package/components/menu/columnMenu/GridColumnMenuContainer.js +3 -2
  53. package/components/panel/GridPanel.d.ts +1 -1
  54. package/components/panel/GridPanel.js +3 -2
  55. package/components/panel/GridPanelWrapper.d.ts +1 -1
  56. package/components/panel/GridPanelWrapper.js +5 -3
  57. package/components/panel/filterPanel/GridFilterForm.d.ts +1 -1
  58. package/components/panel/filterPanel/GridFilterForm.js +3 -2
  59. package/components/panel/filterPanel/GridFilterInputBoolean.d.ts +1 -1
  60. package/components/panel/filterPanel/GridFilterInputBoolean.js +9 -9
  61. package/components/panel/filterPanel/GridFilterInputValue.js +17 -10
  62. package/components/panel/filterPanel/GridFilterPanel.d.ts +1 -1
  63. package/components/panel/filterPanel/GridFilterPanel.js +4 -4
  64. package/components/panel/filterPanel/index.d.ts +2 -1
  65. package/components/panel/filterPanel/index.js +1 -1
  66. package/components/toolbar/GridToolbar.d.ts +1 -1
  67. package/components/toolbar/GridToolbar.js +4 -4
  68. package/components/toolbar/GridToolbarColumnsButton.d.ts +1 -1
  69. package/components/toolbar/GridToolbarColumnsButton.js +3 -2
  70. package/components/toolbar/GridToolbarDensitySelector.d.ts +1 -1
  71. package/components/toolbar/GridToolbarDensitySelector.js +3 -2
  72. package/components/toolbar/GridToolbarExport.d.ts +1 -1
  73. package/components/toolbar/GridToolbarExport.js +2 -1
  74. package/components/toolbar/GridToolbarExportContainer.d.ts +1 -1
  75. package/components/toolbar/GridToolbarExportContainer.js +3 -2
  76. package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
  77. package/components/toolbar/GridToolbarFilterButton.js +3 -2
  78. package/components/virtualization/GridMainContainer.d.ts +3 -1
  79. package/components/virtualization/GridMainContainer.js +3 -2
  80. package/components/virtualization/GridVirtualScrollbar.d.ts +1 -1
  81. package/components/virtualization/GridVirtualScrollbar.js +2 -1
  82. package/components/virtualization/GridVirtualScrollerContent.d.ts +2 -0
  83. package/components/virtualization/GridVirtualScrollerContent.js +5 -5
  84. package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +2 -0
  85. package/components/virtualization/GridVirtualScrollerRenderZone.js +5 -3
  86. package/hooks/features/rows/useGridRowSpanning.js +76 -87
  87. package/index.js +1 -1
  88. package/locales/nlNL.js +5 -6
  89. package/material/index.js +6 -0
  90. package/models/gridBaseSlots.d.ts +15 -0
  91. package/models/gridSlotsComponent.d.ts +16 -1
  92. package/models/gridSlotsComponentsProps.d.ts +14 -1
  93. package/modern/DataGrid/DataGrid.js +4 -3
  94. package/modern/components/GridColumnHeaders.js +4 -4
  95. package/modern/components/GridFooter.js +4 -4
  96. package/modern/components/GridLoadingOverlay.js +10 -8
  97. package/modern/components/GridNoResultsOverlay.js +4 -4
  98. package/modern/components/GridNoRowsOverlay.js +4 -4
  99. package/modern/components/GridPagination.js +5 -3
  100. package/modern/components/GridRow.js +3 -2
  101. package/modern/components/GridRowCount.js +3 -2
  102. package/modern/components/GridSelectedRowCount.js +3 -2
  103. package/modern/components/GridSkeletonLoadingOverlay.js +4 -3
  104. package/modern/components/cell/GridActionsCellItem.js +3 -2
  105. package/modern/components/cell/GridCell.js +3 -2
  106. package/modern/components/cell/GridEditInputCell.js +72 -3
  107. package/modern/components/cell/GridSkeletonCell.js +1 -2
  108. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +4 -3
  109. package/modern/components/columnHeaders/GridColumnHeaderTitle.js +5 -3
  110. package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +3 -2
  111. package/modern/components/columnHeaders/GridIconButtonContainer.js +5 -3
  112. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +5 -3
  113. package/modern/components/columnSelection/GridHeaderCheckbox.js +5 -3
  114. package/modern/components/containers/GridFooterContainer.js +5 -3
  115. package/modern/components/containers/GridOverlay.js +5 -3
  116. package/modern/components/containers/GridRoot.js +5 -3
  117. package/modern/components/containers/GridToolbarContainer.js +3 -2
  118. package/modern/components/menu/columnMenu/GridColumnMenu.js +5 -5
  119. package/modern/components/menu/columnMenu/GridColumnMenuContainer.js +3 -2
  120. package/modern/components/panel/GridPanel.js +3 -2
  121. package/modern/components/panel/GridPanelWrapper.js +5 -3
  122. package/modern/components/panel/filterPanel/GridFilterForm.js +3 -2
  123. package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +9 -9
  124. package/modern/components/panel/filterPanel/GridFilterInputValue.js +17 -10
  125. package/modern/components/panel/filterPanel/GridFilterPanel.js +4 -4
  126. package/modern/components/panel/filterPanel/index.js +1 -1
  127. package/modern/components/toolbar/GridToolbar.js +4 -4
  128. package/modern/components/toolbar/GridToolbarColumnsButton.js +3 -2
  129. package/modern/components/toolbar/GridToolbarDensitySelector.js +3 -2
  130. package/modern/components/toolbar/GridToolbarExport.js +2 -1
  131. package/modern/components/toolbar/GridToolbarExportContainer.js +3 -2
  132. package/modern/components/toolbar/GridToolbarFilterButton.js +3 -2
  133. package/modern/components/virtualization/GridMainContainer.js +3 -2
  134. package/modern/components/virtualization/GridVirtualScrollbar.js +2 -1
  135. package/modern/components/virtualization/GridVirtualScrollerContent.js +5 -5
  136. package/modern/components/virtualization/GridVirtualScrollerRenderZone.js +5 -3
  137. package/modern/hooks/features/rows/useGridRowSpanning.js +76 -87
  138. package/modern/index.js +1 -1
  139. package/modern/locales/nlNL.js +5 -6
  140. package/modern/material/index.js +6 -0
  141. package/modern/utils/utils.js +6 -1
  142. package/node/DataGrid/DataGrid.js +4 -3
  143. package/node/components/GridColumnHeaders.js +4 -4
  144. package/node/components/GridFooter.js +4 -4
  145. package/node/components/GridLoadingOverlay.js +10 -8
  146. package/node/components/GridNoResultsOverlay.js +4 -4
  147. package/node/components/GridNoRowsOverlay.js +4 -4
  148. package/node/components/GridPagination.js +5 -3
  149. package/node/components/GridRow.js +3 -2
  150. package/node/components/GridRowCount.js +3 -2
  151. package/node/components/GridSelectedRowCount.js +3 -2
  152. package/node/components/GridSkeletonLoadingOverlay.js +4 -3
  153. package/node/components/cell/GridActionsCellItem.js +3 -2
  154. package/node/components/cell/GridCell.js +3 -2
  155. package/node/components/cell/GridEditInputCell.js +72 -3
  156. package/node/components/cell/GridSkeletonCell.js +1 -2
  157. package/node/components/columnHeaders/GridBaseColumnHeaders.js +4 -3
  158. package/node/components/columnHeaders/GridColumnHeaderTitle.js +5 -3
  159. package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +3 -2
  160. package/node/components/columnHeaders/GridIconButtonContainer.js +5 -3
  161. package/node/components/columnSelection/GridCellCheckboxRenderer.js +5 -3
  162. package/node/components/columnSelection/GridHeaderCheckbox.js +5 -3
  163. package/node/components/containers/GridFooterContainer.js +5 -3
  164. package/node/components/containers/GridOverlay.js +5 -3
  165. package/node/components/containers/GridRoot.js +5 -3
  166. package/node/components/containers/GridToolbarContainer.js +3 -2
  167. package/node/components/menu/columnMenu/GridColumnMenu.js +5 -5
  168. package/node/components/menu/columnMenu/GridColumnMenuContainer.js +3 -2
  169. package/node/components/panel/GridPanel.js +3 -2
  170. package/node/components/panel/GridPanelWrapper.js +5 -3
  171. package/node/components/panel/filterPanel/GridFilterForm.js +3 -2
  172. package/node/components/panel/filterPanel/GridFilterInputBoolean.js +10 -11
  173. package/node/components/panel/filterPanel/GridFilterInputValue.js +17 -10
  174. package/node/components/panel/filterPanel/GridFilterPanel.js +4 -4
  175. package/node/components/panel/filterPanel/index.js +7 -11
  176. package/node/components/toolbar/GridToolbar.js +4 -4
  177. package/node/components/toolbar/GridToolbarColumnsButton.js +3 -2
  178. package/node/components/toolbar/GridToolbarDensitySelector.js +3 -2
  179. package/node/components/toolbar/GridToolbarExport.js +2 -1
  180. package/node/components/toolbar/GridToolbarExportContainer.js +3 -2
  181. package/node/components/toolbar/GridToolbarFilterButton.js +3 -2
  182. package/node/components/virtualization/GridMainContainer.js +3 -2
  183. package/node/components/virtualization/GridVirtualScrollbar.js +2 -1
  184. package/node/components/virtualization/GridVirtualScrollerContent.js +5 -5
  185. package/node/components/virtualization/GridVirtualScrollerRenderZone.js +5 -3
  186. package/node/hooks/features/rows/useGridRowSpanning.js +74 -85
  187. package/node/index.js +1 -1
  188. package/node/locales/nlNL.js +5 -6
  189. package/node/material/index.js +6 -0
  190. package/node/utils/utils.js +8 -1
  191. package/package.json +2 -2
  192. package/utils/utils.d.ts +1 -0
  193. package/utils/utils.js +6 -1
@@ -3,6 +3,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  const _excluded = ["defaultSlots", "defaultSlotProps", "slots", "slotProps"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
+ import { forwardRef } from '@mui/x-internals/forwardRef';
6
7
  import { useGridColumnMenuSlots } from "../../../hooks/features/columnMenu/useGridColumnMenuSlots.js";
7
8
  import { GridColumnMenuContainer } from "./GridColumnMenuContainer.js";
8
9
  import { GridColumnMenuColumnsItem } from "./menuItems/GridColumnMenuColumnsItem.js";
@@ -25,7 +26,7 @@ export const GRID_COLUMN_MENU_SLOT_PROPS = {
25
26
  displayOrder: 30
26
27
  }
27
28
  };
28
- const GridGenericColumnMenu = /*#__PURE__*/React.forwardRef(function GridGenericColumnMenu(props, ref) {
29
+ const GridGenericColumnMenu = forwardRef(function GridGenericColumnMenu(props, ref) {
29
30
  const {
30
31
  defaultSlots,
31
32
  defaultSlotProps,
@@ -39,9 +40,8 @@ const GridGenericColumnMenu = /*#__PURE__*/React.forwardRef(function GridGeneric
39
40
  slots,
40
41
  slotProps
41
42
  }));
42
- return /*#__PURE__*/_jsx(GridColumnMenuContainer, _extends({
43
- ref: ref
44
- }, other, {
43
+ return /*#__PURE__*/_jsx(GridColumnMenuContainer, _extends({}, other, {
44
+ ref: ref,
45
45
  children: orderedSlots.map(([Component, otherProps], index) => /*#__PURE__*/_jsx(Component, _extends({}, otherProps), index))
46
46
  }));
47
47
  });
@@ -77,7 +77,7 @@ process.env.NODE_ENV !== "production" ? GridGenericColumnMenu.propTypes = {
77
77
  */
78
78
  slots: PropTypes.object
79
79
  } : void 0;
80
- const GridColumnMenu = /*#__PURE__*/React.forwardRef(function GridColumnMenu(props, ref) {
80
+ const GridColumnMenu = forwardRef(function GridColumnMenu(props, ref) {
81
81
  return /*#__PURE__*/_jsx(GridGenericColumnMenu, _extends({}, props, {
82
82
  ref: ref,
83
83
  defaultSlots: GRID_COLUMN_MENU_SLOTS,
@@ -6,13 +6,14 @@ import PropTypes from 'prop-types';
6
6
  import * as React from 'react';
7
7
  import MenuList from '@mui/material/MenuList';
8
8
  import { styled } from '@mui/material/styles';
9
+ import { forwardRef } from '@mui/x-internals/forwardRef';
9
10
  import { isHideMenuKey } from "../../../utils/keyboardUtils.js";
10
11
  import { gridClasses } from "../../../constants/gridClasses.js";
11
12
  import { jsx as _jsx } from "react/jsx-runtime";
12
13
  const StyledMenuList = styled(MenuList)(() => ({
13
14
  minWidth: 248
14
15
  }));
15
- const GridColumnMenuContainer = /*#__PURE__*/React.forwardRef(function GridColumnMenuContainer(props, ref) {
16
+ const GridColumnMenuContainer = forwardRef(function GridColumnMenuContainer(props, ref) {
16
17
  const {
17
18
  hideMenu,
18
19
  id,
@@ -32,12 +33,12 @@ const GridColumnMenuContainer = /*#__PURE__*/React.forwardRef(function GridColum
32
33
  }, [hideMenu]);
33
34
  return /*#__PURE__*/_jsx(StyledMenuList, _extends({
34
35
  id: id,
35
- ref: ref,
36
36
  className: clsx(gridClasses.menuList, className),
37
37
  "aria-labelledby": labelledby,
38
38
  onKeyDown: handleListKeyDown,
39
39
  autoFocus: open
40
40
  }, other, {
41
+ ref: ref,
41
42
  children: children
42
43
  }));
43
44
  });
@@ -9,6 +9,7 @@ import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/
9
9
  import ClickAwayListener from '@mui/material/ClickAwayListener';
10
10
  import Paper from '@mui/material/Paper';
11
11
  import Popper from '@mui/material/Popper';
12
+ import { forwardRef } from '@mui/x-internals/forwardRef';
12
13
  import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
13
14
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
14
15
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -36,7 +37,7 @@ const GridPaperRoot = styled(Paper, {
36
37
  maxWidth: `calc(100vw - ${theme.spacing(0.5)})`,
37
38
  overflow: 'auto'
38
39
  }));
39
- const GridPanel = /*#__PURE__*/React.forwardRef((props, ref) => {
40
+ const GridPanel = forwardRef((props, ref) => {
40
41
  const {
41
42
  children,
42
43
  className
@@ -82,13 +83,13 @@ const GridPanel = /*#__PURE__*/React.forwardRef((props, ref) => {
82
83
  return null;
83
84
  }
84
85
  return /*#__PURE__*/_jsx(GridPanelRoot, _extends({
85
- ref: ref,
86
86
  placement: "bottom-start",
87
87
  className: clsx(classes.panel, className),
88
88
  ownerState: rootProps,
89
89
  anchorEl: anchorEl,
90
90
  modifiers: modifiers
91
91
  }, other, {
92
+ ref: ref,
92
93
  children: /*#__PURE__*/_jsx(ClickAwayListener, {
93
94
  mouseEvent: "onMouseUp",
94
95
  onClickAway: handleClickAway,
@@ -7,6 +7,7 @@ import clsx from 'clsx';
7
7
  import FocusTrap from '@mui/material/Unstable_TrapFocus';
8
8
  import { styled } from '@mui/material/styles';
9
9
  import composeClasses from '@mui/utils/composeClasses';
10
+ import { forwardRef } from '@mui/x-internals/forwardRef';
10
11
  import { getDataGridUtilityClass } from "../../constants/gridClasses.js";
11
12
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
12
13
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -32,7 +33,7 @@ const GridPanelWrapperRoot = styled('div', {
32
33
  }
33
34
  });
34
35
  const isEnabled = () => true;
35
- const GridPanelWrapper = /*#__PURE__*/React.forwardRef(function GridPanelWrapper(props, ref) {
36
+ const GridPanelWrapper = forwardRef(function GridPanelWrapper(props, ref) {
36
37
  const {
37
38
  className,
38
39
  slotProps = {}
@@ -46,11 +47,12 @@ const GridPanelWrapper = /*#__PURE__*/React.forwardRef(function GridPanelWrapper
46
47
  isEnabled: isEnabled
47
48
  }, slotProps.TrapFocus, {
48
49
  children: /*#__PURE__*/_jsx(GridPanelWrapperRoot, _extends({
49
- ref: ref,
50
50
  tabIndex: -1,
51
51
  className: clsx(classes.root, className),
52
52
  ownerState: rootProps
53
- }, other))
53
+ }, other, {
54
+ ref: ref
55
+ }))
54
56
  }));
55
57
  });
56
58
  process.env.NODE_ENV !== "production" ? GridPanelWrapper.propTypes = {
@@ -7,6 +7,7 @@ import PropTypes from 'prop-types';
7
7
  import { unstable_composeClasses as composeClasses, unstable_useId as useId, unstable_capitalize as capitalize } from '@mui/utils';
8
8
  import { styled } from '@mui/material/styles';
9
9
  import clsx from 'clsx';
10
+ import { forwardRef } from '@mui/x-internals/forwardRef';
10
11
  import { gridFilterableColumnDefinitionsSelector, gridColumnLookupSelector } from "../../../hooks/features/columns/gridColumnsSelector.js";
11
12
  import { gridFilterModelSelector } from "../../../hooks/features/filter/gridFilterSelector.js";
12
13
  import { useGridSelector } from "../../../hooks/utils/useGridSelector.js";
@@ -90,7 +91,7 @@ const getLogicOperatorLocaleKey = logicOperator => {
90
91
  };
91
92
  const getColumnLabel = col => col.headerName || col.field;
92
93
  const collator = new Intl.Collator();
93
- const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(props, ref) {
94
+ const GridFilterForm = forwardRef(function GridFilterForm(props, ref) {
94
95
  const {
95
96
  item,
96
97
  hasMultipleFilters,
@@ -250,11 +251,11 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
250
251
  }
251
252
  }), [currentOperator]);
252
253
  return /*#__PURE__*/_jsxs(GridFilterFormRoot, _extends({
253
- ref: ref,
254
254
  className: classes.root,
255
255
  "data-id": item.id,
256
256
  ownerState: rootProps
257
257
  }, other, {
258
+ ref: ref,
258
259
  children: [/*#__PURE__*/_jsx(FilterFormDeleteIcon, _extends({
259
260
  as: rootProps.slots.baseFormControl
260
261
  }, baseFormControlProps, deleteIconProps, {
@@ -7,15 +7,6 @@ import { refType, unstable_useId as useId } from '@mui/utils';
7
7
  import { styled } from '@mui/material/styles';
8
8
  import { useGridRootProps } from "../../../hooks/utils/useGridRootProps.js";
9
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
- export const sanitizeFilterItemValue = value => {
11
- if (String(value).toLowerCase() === 'true') {
12
- return true;
13
- }
14
- if (String(value).toLowerCase() === 'false') {
15
- return false;
16
- }
17
- return undefined;
18
- };
19
10
  const BooleanOperatorContainer = styled('div')({
20
11
  display: 'flex',
21
12
  alignItems: 'center',
@@ -94,6 +85,15 @@ function GridFilterInputBoolean(props) {
94
85
  }), clearButton]
95
86
  });
96
87
  }
88
+ export function sanitizeFilterItemValue(value) {
89
+ if (String(value).toLowerCase() === 'true') {
90
+ return true;
91
+ }
92
+ if (String(value).toLowerCase() === 'false') {
93
+ return false;
94
+ }
95
+ return undefined;
96
+ }
97
97
  process.env.NODE_ENV !== "production" ? GridFilterInputBoolean.propTypes = {
98
98
  // ----------------------------- Warning --------------------------------
99
99
  // | These PropTypes are generated from the TypeScript type definitions |
@@ -22,19 +22,17 @@ function GridFilterInputValue(props) {
22
22
  } = props,
23
23
  others = _objectWithoutPropertiesLoose(props, _excluded);
24
24
  const filterTimeout = useTimeout();
25
- const [filterValueState, setFilterValueState] = React.useState(item.value ?? '');
25
+ const [filterValueState, setFilterValueState] = React.useState(sanitizeFilterItemValue(item.value, type));
26
26
  const [applying, setIsApplying] = React.useState(false);
27
27
  const id = useId();
28
28
  const rootProps = useGridRootProps();
29
29
  const onFilterChange = React.useCallback(event => {
30
- const {
31
- value
32
- } = event.target;
33
- setFilterValueState(String(value));
30
+ const value = sanitizeFilterItemValue(event.target.value, type);
31
+ setFilterValueState(value);
34
32
  setIsApplying(true);
35
33
  filterTimeout.start(rootProps.filterDebounceMs, () => {
36
34
  const newItem = _extends({}, item, {
37
- value: type === 'number' ? Number(value) : value,
35
+ value,
38
36
  fromInput: id
39
37
  });
40
38
  applyValue(newItem);
@@ -43,15 +41,15 @@ function GridFilterInputValue(props) {
43
41
  }, [filterTimeout, rootProps.filterDebounceMs, item, type, id, applyValue]);
44
42
  React.useEffect(() => {
45
43
  const itemPlusTag = item;
46
- if (itemPlusTag.fromInput !== id || item.value === undefined) {
47
- setFilterValueState(String(item.value ?? ''));
44
+ if (itemPlusTag.fromInput !== id || item.value == null) {
45
+ setFilterValueState(sanitizeFilterItemValue(item.value, type));
48
46
  }
49
- }, [id, item]);
47
+ }, [id, item, type]);
50
48
  return /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({
51
49
  id: id,
52
50
  label: apiRef.current.getLocaleText('filterPanelInputLabel'),
53
51
  placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder'),
54
- value: filterValueState,
52
+ value: filterValueState === undefined ? '' : String(filterValueState),
55
53
  onChange: onFilterChange,
56
54
  variant: variant,
57
55
  type: type || 'text',
@@ -73,6 +71,15 @@ function GridFilterInputValue(props) {
73
71
  inputRef: focusElementRef
74
72
  }, others, rootProps.slotProps?.baseTextField));
75
73
  }
74
+ function sanitizeFilterItemValue(value, type) {
75
+ if (value == null || value === '') {
76
+ return undefined;
77
+ }
78
+ if (type === 'number') {
79
+ return Number(value);
80
+ }
81
+ return String(value);
82
+ }
76
83
  process.env.NODE_ENV !== "production" ? GridFilterInputValue.propTypes = {
77
84
  // ----------------------------- Warning --------------------------------
78
85
  // | These PropTypes are generated from the TypeScript type definitions |
@@ -3,6 +3,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  const _excluded = ["logicOperators", "columnsSort", "filterFormProps", "getColumnForNewFilter", "children", "disableAddFilterButton", "disableRemoveAllButton"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
+ import { forwardRef } from '@mui/x-internals/forwardRef';
6
7
  import { GridLogicOperator } from "../../../models/gridFilterItem.js";
7
8
  import { useGridApiContext } from "../../../hooks/utils/useGridApiContext.js";
8
9
  import { GridPanelContent } from "../GridPanelContent.js";
@@ -19,7 +20,7 @@ const getGridFilter = col => ({
19
20
  operator: col.filterOperators[0].value,
20
21
  id: Math.round(Math.random() * 1e5)
21
22
  });
22
- const GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(props, ref) {
23
+ const GridFilterPanel = forwardRef(function GridFilterPanel(props, ref) {
23
24
  const apiRef = useGridApiContext();
24
25
  const rootProps = useGridRootProps();
25
26
  const filterModel = useGridSelector(apiRef, gridFilterModelSelector);
@@ -141,9 +142,8 @@ const GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(p
141
142
  lastFilterRef.current.focus();
142
143
  }
143
144
  }, [validFilters.length]);
144
- return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({
145
- ref: ref
146
- }, other, {
145
+ return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({}, other, {
146
+ ref: ref,
147
147
  children: [/*#__PURE__*/_jsxs(GridPanelContent, {
148
148
  children: [readOnlyFilters.map((item, index) => /*#__PURE__*/_jsx(GridFilterForm, _extends({
149
149
  item: item,
@@ -2,7 +2,7 @@ export * from "./GridFilterForm.js";
2
2
  export * from "./GridFilterInputValue.js";
3
3
  export * from "./GridFilterInputDate.js";
4
4
  export * from "./GridFilterInputSingleSelect.js";
5
- export * from "./GridFilterInputBoolean.js";
5
+ export { GridFilterInputBoolean } from "./GridFilterInputBoolean.js";
6
6
  export * from "./GridFilterInputValueProps.js";
7
7
  export { GridFilterPanel } from "./GridFilterPanel.js";
8
8
  export * from "./GridFilterInputMultipleValue.js";
@@ -3,6 +3,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  const _excluded = ["className", "csvOptions", "printOptions", "excelOptions", "showQuickFilter", "quickFilterProps"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
+ import { forwardRef } from '@mui/x-internals/forwardRef';
6
7
  import { GridToolbarContainer } from "../containers/GridToolbarContainer.js";
7
8
  import { GridToolbarColumnsButton } from "./GridToolbarColumnsButton.js";
8
9
  import { GridToolbarDensitySelector } from "./GridToolbarDensitySelector.js";
@@ -11,7 +12,7 @@ import { GridToolbarExport } from "./GridToolbarExport.js";
11
12
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
12
13
  import { GridToolbarQuickFilter } from "./GridToolbarQuickFilter.js";
13
14
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
- const GridToolbar = /*#__PURE__*/React.forwardRef(function GridToolbar(props, ref) {
15
+ const GridToolbar = forwardRef(function GridToolbar(props, ref) {
15
16
  // TODO v7: think about where export option should be passed.
16
17
  // from slotProps={{ toolbarExport: { ...exportOption } }} seems to be more appropriate
17
18
  const _ref = props,
@@ -27,9 +28,8 @@ const GridToolbar = /*#__PURE__*/React.forwardRef(function GridToolbar(props, re
27
28
  if (rootProps.disableColumnFilter && rootProps.disableColumnSelector && rootProps.disableDensitySelector && !showQuickFilter) {
28
29
  return null;
29
30
  }
30
- return /*#__PURE__*/_jsxs(GridToolbarContainer, _extends({
31
- ref: ref
32
- }, other, {
31
+ return /*#__PURE__*/_jsxs(GridToolbarContainer, _extends({}, other, {
32
+ ref: ref,
33
33
  children: [/*#__PURE__*/_jsx(GridToolbarColumnsButton, {}), /*#__PURE__*/_jsx(GridToolbarFilterButton, {}), /*#__PURE__*/_jsx(GridToolbarDensitySelector, {}), /*#__PURE__*/_jsx(GridToolbarExport, {
34
34
  csvOptions: csvOptions,
35
35
  printOptions: printOptions
@@ -2,13 +2,14 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import useId from '@mui/utils/useId';
5
+ import { forwardRef } from '@mui/x-internals/forwardRef';
5
6
  import { useGridSelector } from "../../hooks/utils/useGridSelector.js";
6
7
  import { gridPreferencePanelStateSelector } from "../../hooks/features/preferencesPanel/gridPreferencePanelSelector.js";
7
8
  import { GridPreferencePanelsValue } from "../../hooks/features/preferencesPanel/gridPreferencePanelsValue.js";
8
9
  import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
9
10
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
10
11
  import { jsx as _jsx } from "react/jsx-runtime";
11
- const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function GridToolbarColumnsButton(props, ref) {
12
+ const GridToolbarColumnsButton = forwardRef(function GridToolbarColumnsButton(props, ref) {
12
13
  const {
13
14
  slotProps = {}
14
15
  } = props;
@@ -38,7 +39,6 @@ const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function GridTool
38
39
  enterDelay: 1000
39
40
  }, rootProps.slotProps?.baseTooltip, tooltipProps, {
40
41
  children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
41
- ref: ref,
42
42
  id: columnButtonId,
43
43
  size: "small",
44
44
  "aria-label": apiRef.current.getLocaleText('toolbarColumnsLabel'),
@@ -48,6 +48,7 @@ const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function GridTool
48
48
  startIcon: /*#__PURE__*/_jsx(rootProps.slots.columnSelectorIcon, {}),
49
49
  onClick: showColumns
50
50
  }, rootProps.slotProps?.baseButton, buttonProps, {
51
+ ref: ref,
51
52
  children: apiRef.current.getLocaleText('toolbarColumns')
52
53
  }))
53
54
  }));
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { unstable_useId as useId, unstable_useForkRef as useForkRef } from '@mui/utils';
5
+ import { forwardRef } from '@mui/x-internals/forwardRef';
5
6
  import { gridDensitySelector } from "../../hooks/features/density/densitySelector.js";
6
7
  import { isHideMenuKey } from "../../utils/keyboardUtils.js";
7
8
  import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
@@ -10,7 +11,7 @@ import { GridMenu } from "../menu/GridMenu.js";
10
11
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
11
12
  import { gridClasses } from "../../constants/gridClasses.js";
12
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
- const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridToolbarDensitySelector(props, ref) {
14
+ const GridToolbarDensitySelector = forwardRef(function GridToolbarDensitySelector(props, ref) {
14
15
  const {
15
16
  slotProps = {}
16
17
  } = props;
@@ -83,7 +84,6 @@ const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridTo
83
84
  enterDelay: 1000
84
85
  }, rootProps.slotProps?.baseTooltip, tooltipProps, {
85
86
  children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
86
- ref: handleRef,
87
87
  size: "small",
88
88
  startIcon: startIcon,
89
89
  "aria-label": apiRef.current.getLocaleText('toolbarDensityLabel'),
@@ -93,6 +93,7 @@ const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridTo
93
93
  id: densityButtonId,
94
94
  onClick: handleDensitySelectorOpen
95
95
  }, rootProps.slotProps?.baseButton, buttonProps, {
96
+ ref: handleRef,
96
97
  children: apiRef.current.getLocaleText('toolbarDensity')
97
98
  }))
98
99
  })), /*#__PURE__*/_jsx(GridMenu, {
@@ -5,6 +5,7 @@ const _excluded = ["hideMenu", "options"],
5
5
  _excluded3 = ["csvOptions", "printOptions", "excelOptions"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
+ import { forwardRef } from '@mui/x-internals/forwardRef';
8
9
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
9
10
  import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
10
11
  import { GridToolbarExportContainer } from "./GridToolbarExportContainer.js";
@@ -83,7 +84,7 @@ process.env.NODE_ENV !== "production" ? GridPrintExportMenuItem.propTypes = {
83
84
  pageStyle: PropTypes.oneOfType([PropTypes.func, PropTypes.string])
84
85
  })
85
86
  } : void 0;
86
- const GridToolbarExport = /*#__PURE__*/React.forwardRef(function GridToolbarExport(props, ref) {
87
+ const GridToolbarExport = forwardRef(function GridToolbarExport(props, ref) {
87
88
  const _ref = props,
88
89
  {
89
90
  csvOptions = {},
@@ -2,13 +2,14 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { unstable_useId as useId, unstable_useForkRef as useForkRef } from '@mui/utils';
5
+ import { forwardRef } from '@mui/x-internals/forwardRef';
5
6
  import { isHideMenuKey } from "../../utils/keyboardUtils.js";
6
7
  import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
7
8
  import { GridMenu } from "../menu/GridMenu.js";
8
9
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
9
10
  import { gridClasses } from "../../constants/gridClasses.js";
10
11
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
- const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridToolbarExportContainer(props, ref) {
12
+ const GridToolbarExportContainer = forwardRef(function GridToolbarExportContainer(props, ref) {
12
13
  const {
13
14
  children,
14
15
  slotProps = {}
@@ -44,7 +45,6 @@ const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridTo
44
45
  enterDelay: 1000
45
46
  }, rootProps.slotProps?.baseTooltip, tooltipProps, {
46
47
  children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
47
- ref: handleRef,
48
48
  size: "small",
49
49
  startIcon: /*#__PURE__*/_jsx(rootProps.slots.exportIcon, {}),
50
50
  "aria-expanded": open,
@@ -54,6 +54,7 @@ const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridTo
54
54
  id: exportButtonId,
55
55
  onClick: handleMenuOpen
56
56
  }, rootProps.slotProps?.baseButton, buttonProps, {
57
+ ref: handleRef,
57
58
  children: apiRef.current.getLocaleText('toolbarExport')
58
59
  }))
59
60
  })), /*#__PURE__*/_jsx(GridMenu, {
@@ -3,6 +3,7 @@ import * as React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { styled } from '@mui/material/styles';
5
5
  import { unstable_composeClasses as composeClasses, unstable_capitalize as capitalize, unstable_useId as useId } from '@mui/utils';
6
+ import { forwardRef } from '@mui/x-internals/forwardRef';
6
7
  import { gridColumnLookupSelector } from "../../hooks/features/columns/gridColumnsSelector.js";
7
8
  import { useGridSelector } from "../../hooks/utils/useGridSelector.js";
8
9
  import { gridFilterActiveItemsSelector } from "../../hooks/features/filter/gridFilterSelector.js";
@@ -34,7 +35,7 @@ const GridToolbarFilterListRoot = styled('ul', {
34
35
 
35
36
  // FIXME(v8:romgrk): override slotProps
36
37
 
37
- const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolbarFilterButton(props, ref) {
38
+ const GridToolbarFilterButton = forwardRef(function GridToolbarFilterButton(props, ref) {
38
39
  const {
39
40
  slotProps = {}
40
41
  } = props;
@@ -100,7 +101,6 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
100
101
  enterDelay: 1000
101
102
  }, rootProps.slotProps?.baseTooltip, tooltipProps, {
102
103
  children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
103
- ref: ref,
104
104
  id: filterButtonId,
105
105
  size: "small",
106
106
  "aria-label": apiRef.current.getLocaleText('toolbarFiltersLabel'),
@@ -115,6 +115,7 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
115
115
  })),
116
116
  onClick: toggleFilter
117
117
  }, rootProps.slotProps?.baseButton, buttonProps, {
118
+ ref: ref,
118
119
  children: apiRef.current.getLocaleText('toolbarFilters')
119
120
  }))
120
121
  }));
@@ -1,6 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { styled } from '@mui/system';
4
+ import { forwardRef } from '@mui/x-internals/forwardRef';
4
5
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
5
6
  import { useGridConfiguration } from "../../hooks/utils/useGridConfiguration.js";
6
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
@@ -21,16 +22,16 @@ const Element = styled('div', {
21
22
  display: 'flex',
22
23
  flexDirection: 'column'
23
24
  });
24
- export const GridMainContainer = /*#__PURE__*/React.forwardRef((props, ref) => {
25
+ export const GridMainContainer = forwardRef((props, ref) => {
25
26
  const rootProps = useGridRootProps();
26
27
  const configuration = useGridConfiguration();
27
28
  const ariaAttributes = configuration.hooks.useGridAriaAttributes();
28
29
  return /*#__PURE__*/_jsxs(Element, _extends({
29
- ref: ref,
30
30
  ownerState: rootProps,
31
31
  className: props.className,
32
32
  tabIndex: -1
33
33
  }, ariaAttributes, rootProps.slotProps?.main, {
34
+ ref: ref,
34
35
  children: [/*#__PURE__*/_jsx(GridPanelAnchor, {
35
36
  role: "presentation",
36
37
  "data-id": "gridPanelAnchor"
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { styled } from '@mui/system';
3
3
  import { unstable_composeClasses as composeClasses, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';
4
+ import { forwardRef } from '@mui/x-internals/forwardRef';
4
5
  import { useOnMount } from "../../hooks/utils/useOnMount.js";
5
6
  import { useGridPrivateApiContext } from "../../hooks/utils/useGridPrivateApiContext.js";
6
7
  import { gridDimensionsSelector, useGridSelector } from "../../hooks/index.js";
@@ -52,7 +53,7 @@ const ScrollbarHorizontal = styled(Scrollbar)({
52
53
  },
53
54
  bottom: '0px'
54
55
  });
55
- const GridVirtualScrollbar = /*#__PURE__*/React.forwardRef(function GridVirtualScrollbar(props, ref) {
56
+ const GridVirtualScrollbar = forwardRef(function GridVirtualScrollbar(props, ref) {
56
57
  const apiRef = useGridPrivateApiContext();
57
58
  const rootProps = useGridRootProps();
58
59
  const isLocked = React.useRef(false);
@@ -3,6 +3,7 @@ import * as React from 'react';
3
3
  import clsx from 'clsx';
4
4
  import { styled } from '@mui/system';
5
5
  import composeClasses from '@mui/utils/composeClasses';
6
+ import { forwardRef } from '@mui/x-internals/forwardRef';
6
7
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
7
8
  import { getDataGridUtilityClass } from "../../constants/gridClasses.js";
8
9
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -20,15 +21,14 @@ const VirtualScrollerContentRoot = styled('div', {
20
21
  slot: 'VirtualScrollerContent',
21
22
  overridesResolver: (props, styles) => styles.virtualScrollerContent
22
23
  })({});
23
- const GridVirtualScrollerContent = /*#__PURE__*/React.forwardRef(function GridVirtualScrollerContent(props, ref) {
24
+ const GridVirtualScrollerContent = forwardRef(function GridVirtualScrollerContent(props, ref) {
24
25
  const rootProps = useGridRootProps();
25
26
  const overflowedContent = !rootProps.autoHeight && props.style?.minHeight === 'auto';
26
27
  const classes = useUtilityClasses(rootProps, overflowedContent);
27
- return /*#__PURE__*/_jsx(VirtualScrollerContentRoot, _extends({
28
- ref: ref
29
- }, props, {
28
+ return /*#__PURE__*/_jsx(VirtualScrollerContentRoot, _extends({}, props, {
30
29
  ownerState: rootProps,
31
- className: clsx(classes.root, props.className)
30
+ className: clsx(classes.root, props.className),
31
+ ref: ref
32
32
  }));
33
33
  });
34
34
  export { GridVirtualScrollerContent };
@@ -5,6 +5,7 @@ import * as React from 'react';
5
5
  import clsx from 'clsx';
6
6
  import { styled } from '@mui/system';
7
7
  import composeClasses from '@mui/utils/composeClasses';
8
+ import { forwardRef } from '@mui/x-internals/forwardRef';
8
9
  import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
9
10
  import { useGridSelector } from "../../hooks/utils/useGridSelector.js";
10
11
  import { gridRowsMetaSelector } from "../../hooks/features/rows/index.js";
@@ -31,7 +32,7 @@ const VirtualScrollerRenderZoneRoot = styled('div', {
31
32
  // Prevents margin collapsing when using `getRowSpacing`
32
33
  flexDirection: 'column'
33
34
  });
34
- const GridVirtualScrollerRenderZone = /*#__PURE__*/React.forwardRef(function GridVirtualScrollerRenderZone(props, ref) {
35
+ const GridVirtualScrollerRenderZone = forwardRef(function GridVirtualScrollerRenderZone(props, ref) {
35
36
  const {
36
37
  className
37
38
  } = props,
@@ -45,12 +46,13 @@ const GridVirtualScrollerRenderZone = /*#__PURE__*/React.forwardRef(function Gri
45
46
  return rowsMeta.positions[renderContext.firstRowIndex] ?? 0;
46
47
  });
47
48
  return /*#__PURE__*/_jsx(VirtualScrollerRenderZoneRoot, _extends({
48
- ref: ref,
49
49
  className: clsx(classes.root, className),
50
50
  ownerState: rootProps,
51
51
  style: {
52
52
  transform: `translate3d(0, ${offsetTop}px, 0)`
53
53
  }
54
- }, other));
54
+ }, other, {
55
+ ref: ref
56
+ }));
55
57
  });
56
58
  export { GridVirtualScrollerRenderZone };