@mui/x-data-grid 7.0.0-alpha.6 → 7.0.0-alpha.8

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 (136) hide show
  1. package/CHANGELOG.md +357 -49
  2. package/DataGrid/DataGrid.js +8 -16
  3. package/colDef/gridDateColDef.js +1 -1
  4. package/components/GridPagination.d.ts +4 -4
  5. package/components/GridPagination.js +1 -1
  6. package/components/cell/GridActionsCell.js +1 -1
  7. package/components/cell/GridActionsCellItem.d.ts +5 -5
  8. package/components/cell/GridCell.js +2 -2
  9. package/components/panel/GridPanel.d.ts +3 -3
  10. package/components/panel/filterPanel/GridFilterForm.js +1 -1
  11. package/components/toolbar/GridToolbarQuickFilter.d.ts +4 -0
  12. package/components/toolbar/GridToolbarQuickFilter.js +4 -0
  13. package/hooks/core/useGridLoggerFactory.js +2 -2
  14. package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  15. package/hooks/features/columnGrouping/useGridColumnGrouping.js +6 -4
  16. package/hooks/features/editing/useGridCellEditing.js +4 -4
  17. package/hooks/features/editing/useGridRowEditing.js +4 -4
  18. package/hooks/features/export/serializers/csvSerializer.js +1 -1
  19. package/hooks/features/export/useGridPrintExport.js +1 -1
  20. package/hooks/features/filter/gridFilterUtils.js +26 -29
  21. package/hooks/features/pagination/gridPaginationUtils.js +2 -2
  22. package/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  23. package/hooks/features/rows/gridRowsUtils.js +2 -2
  24. package/hooks/features/rows/useGridRows.js +7 -7
  25. package/hooks/features/rows/useGridRowsMeta.js +2 -2
  26. package/hooks/features/sorting/gridSortingUtils.js +4 -2
  27. package/hooks/utils/useGridApiContext.js +1 -1
  28. package/hooks/utils/useGridPrivateApiContext.js +1 -1
  29. package/hooks/utils/useGridRootProps.js +1 -1
  30. package/hooks/utils/useGridSelector.js +1 -1
  31. package/index.d.ts +0 -1
  32. package/index.js +1 -2
  33. package/internals/index.d.ts +1 -0
  34. package/internals/utils/index.d.ts +1 -0
  35. package/internals/utils/index.js +2 -1
  36. package/internals/utils/propValidation.d.ts +4 -0
  37. package/internals/utils/propValidation.js +19 -0
  38. package/legacy/DataGrid/DataGrid.js +13 -18
  39. package/legacy/colDef/gridDateColDef.js +1 -1
  40. package/legacy/components/GridPagination.js +1 -1
  41. package/legacy/components/cell/GridActionsCell.js +1 -1
  42. package/legacy/components/cell/GridCell.js +2 -2
  43. package/legacy/components/panel/filterPanel/GridFilterForm.js +1 -1
  44. package/legacy/components/toolbar/GridToolbarQuickFilter.js +4 -0
  45. package/legacy/hooks/core/useGridLoggerFactory.js +2 -2
  46. package/legacy/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  47. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +6 -4
  48. package/legacy/hooks/features/editing/useGridCellEditing.js +4 -4
  49. package/legacy/hooks/features/editing/useGridRowEditing.js +4 -4
  50. package/legacy/hooks/features/export/serializers/csvSerializer.js +1 -1
  51. package/legacy/hooks/features/export/useGridPrintExport.js +1 -1
  52. package/legacy/hooks/features/filter/gridFilterUtils.js +25 -22
  53. package/legacy/hooks/features/pagination/gridPaginationUtils.js +2 -2
  54. package/legacy/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  55. package/legacy/hooks/features/rows/gridRowsUtils.js +2 -2
  56. package/legacy/hooks/features/rows/useGridParamsApi.js +4 -5
  57. package/legacy/hooks/features/rows/useGridRows.js +7 -7
  58. package/legacy/hooks/features/rows/useGridRowsMeta.js +2 -2
  59. package/legacy/hooks/features/sorting/gridSortingUtils.js +4 -2
  60. package/legacy/hooks/utils/useGridApiContext.js +1 -1
  61. package/legacy/hooks/utils/useGridPrivateApiContext.js +1 -1
  62. package/legacy/hooks/utils/useGridRootProps.js +1 -1
  63. package/legacy/hooks/utils/useGridSelector.js +1 -1
  64. package/legacy/index.js +1 -2
  65. package/legacy/internals/utils/index.js +2 -1
  66. package/legacy/internals/utils/propValidation.js +21 -0
  67. package/legacy/locales/csCZ.js +2 -2
  68. package/legacy/utils/createSelector.js +1 -1
  69. package/legacy/utils/exportAs.js +1 -1
  70. package/locales/csCZ.js +2 -2
  71. package/models/props/DataGridProps.d.ts +1 -2
  72. package/modern/DataGrid/DataGrid.js +8 -16
  73. package/modern/colDef/gridDateColDef.js +1 -1
  74. package/modern/components/GridPagination.js +1 -1
  75. package/modern/components/cell/GridActionsCell.js +1 -1
  76. package/modern/components/cell/GridCell.js +2 -2
  77. package/modern/components/panel/filterPanel/GridFilterForm.js +1 -1
  78. package/modern/components/toolbar/GridToolbarQuickFilter.js +4 -0
  79. package/modern/hooks/core/useGridLoggerFactory.js +2 -2
  80. package/modern/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  81. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +6 -4
  82. package/modern/hooks/features/editing/useGridCellEditing.js +4 -4
  83. package/modern/hooks/features/editing/useGridRowEditing.js +4 -4
  84. package/modern/hooks/features/export/serializers/csvSerializer.js +1 -1
  85. package/modern/hooks/features/export/useGridPrintExport.js +1 -1
  86. package/modern/hooks/features/filter/gridFilterUtils.js +26 -29
  87. package/modern/hooks/features/pagination/gridPaginationUtils.js +2 -2
  88. package/modern/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  89. package/modern/hooks/features/rows/gridRowsUtils.js +2 -2
  90. package/modern/hooks/features/rows/useGridRows.js +7 -7
  91. package/modern/hooks/features/rows/useGridRowsMeta.js +2 -2
  92. package/modern/hooks/features/sorting/gridSortingUtils.js +4 -2
  93. package/modern/hooks/utils/useGridApiContext.js +1 -1
  94. package/modern/hooks/utils/useGridPrivateApiContext.js +1 -1
  95. package/modern/hooks/utils/useGridRootProps.js +1 -1
  96. package/modern/hooks/utils/useGridSelector.js +1 -1
  97. package/modern/index.js +1 -2
  98. package/modern/internals/utils/index.js +2 -1
  99. package/modern/internals/utils/propValidation.js +19 -0
  100. package/modern/locales/csCZ.js +2 -2
  101. package/modern/utils/createSelector.js +1 -1
  102. package/modern/utils/exportAs.js +1 -1
  103. package/node/DataGrid/DataGrid.js +8 -16
  104. package/node/colDef/gridDateColDef.js +1 -1
  105. package/node/components/GridPagination.js +1 -1
  106. package/node/components/cell/GridActionsCell.js +1 -1
  107. package/node/components/cell/GridCell.js +2 -2
  108. package/node/components/panel/filterPanel/GridFilterForm.js +1 -1
  109. package/node/components/toolbar/GridToolbarQuickFilter.js +4 -0
  110. package/node/hooks/core/useGridLoggerFactory.js +2 -2
  111. package/node/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  112. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +6 -4
  113. package/node/hooks/features/editing/useGridCellEditing.js +4 -4
  114. package/node/hooks/features/editing/useGridRowEditing.js +4 -4
  115. package/node/hooks/features/export/serializers/csvSerializer.js +1 -1
  116. package/node/hooks/features/export/useGridPrintExport.js +1 -1
  117. package/node/hooks/features/filter/gridFilterUtils.js +26 -28
  118. package/node/hooks/features/pagination/gridPaginationUtils.js +2 -2
  119. package/node/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  120. package/node/hooks/features/rows/gridRowsUtils.js +2 -2
  121. package/node/hooks/features/rows/useGridRows.js +7 -7
  122. package/node/hooks/features/rows/useGridRowsMeta.js +2 -2
  123. package/node/hooks/features/sorting/gridSortingUtils.js +4 -2
  124. package/node/hooks/utils/useGridApiContext.js +1 -1
  125. package/node/hooks/utils/useGridPrivateApiContext.js +1 -1
  126. package/node/hooks/utils/useGridRootProps.js +1 -1
  127. package/node/hooks/utils/useGridSelector.js +1 -1
  128. package/node/index.js +1 -13
  129. package/node/internals/utils/index.js +11 -0
  130. package/node/internals/utils/propValidation.js +26 -0
  131. package/node/locales/csCZ.js +2 -2
  132. package/node/utils/createSelector.js +1 -1
  133. package/node/utils/exportAs.js +1 -1
  134. package/package.json +4 -4
  135. package/utils/createSelector.js +1 -1
  136. package/utils/exportAs.js +1 -1
@@ -16,24 +16,24 @@ declare const GridActionsCellItem: React.ForwardRefExoticComponent<(Omit<{
16
16
  label: string;
17
17
  icon?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
18
18
  /** from https://mui.com/material-ui/api/button-base/#ButtonBase-prop-component */
19
- component?: React.ElementType<any> | undefined;
19
+ component?: React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined;
20
20
  } & {
21
21
  showInMenu?: false | undefined;
22
22
  icon: React.ReactElement;
23
23
  } & import("@mui/material/IconButton").IconButtonOwnProps & Omit<import("@mui/material").ButtonBaseOwnProps, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & {
24
24
  ref?: ((instance: HTMLButtonElement | null) => void) | React.RefObject<HTMLButtonElement> | null | undefined;
25
25
  }, "color" | "size" | "style" | "disabled" | "action" | "className" | "tabIndex" | "children" | "sx" | "classes" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge"> & {
26
- component?: React.ElementType<any> | undefined;
26
+ component?: React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined;
27
27
  }, "ref"> | Omit<{
28
28
  label: string;
29
29
  icon?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
30
30
  /** from https://mui.com/material-ui/api/button-base/#ButtonBase-prop-component */
31
- component?: React.ElementType<any> | undefined;
31
+ component?: React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined;
32
32
  } & {
33
33
  showInMenu: true;
34
34
  } & import("@mui/material/MenuItem").MenuItemOwnProps & Omit<import("@mui/material").ButtonBaseOwnProps, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & {
35
35
  ref?: ((instance: HTMLLIElement | null) => void) | React.RefObject<HTMLLIElement> | null | undefined;
36
- }, "style" | "dense" | "disabled" | "action" | "autoFocus" | "className" | "tabIndex" | "selected" | "children" | "sx" | "classes" | "disableGutters" | "divider" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef"> & {
37
- component?: React.ElementType<any> | undefined;
36
+ }, "style" | "dense" | "disabled" | "action" | "selected" | "autoFocus" | "className" | "tabIndex" | "children" | "sx" | "classes" | "disableGutters" | "divider" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef"> & {
37
+ component?: React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined;
38
38
  }, "ref">) & React.RefAttributes<HTMLButtonElement>>;
39
39
  export { GridActionsCellItem };
@@ -275,7 +275,7 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
275
275
  return;
276
276
  }
277
277
  if (!warnedOnce) {
278
- console.warn([`MUI: The cell with id=${rowId} and field=${field} received focus.`, `According to the state, the focus should be at id=${focusedCell == null ? void 0 : focusedCell.id}, field=${focusedCell == null ? void 0 : focusedCell.field}.`, "Not syncing the state may cause unwanted behaviors since the `cellFocusIn` event won't be fired.", 'Call `fireEvent.mouseUp` before the `fireEvent.click` to sync the focus with the state.'].join('\n'));
278
+ console.warn([`MUI X: The cell with id=${rowId} and field=${field} received focus.`, `According to the state, the focus should be at id=${focusedCell == null ? void 0 : focusedCell.id}, field=${focusedCell == null ? void 0 : focusedCell.field}.`, "Not syncing the state may cause unwanted behaviors since the `cellFocusIn` event won't be fired.", 'Call `fireEvent.mouseUp` before the `fireEvent.click` to sync the focus with the state.'].join('\n'));
279
279
  warnedOnce = true;
280
280
  }
281
281
  };
@@ -546,7 +546,7 @@ const GridCellV7 = /*#__PURE__*/React.forwardRef((props, ref) => {
546
546
  return;
547
547
  }
548
548
  if (!warnedOnce) {
549
- console.warn([`MUI: The cell with id=${rowId} and field=${field} received focus.`, `According to the state, the focus should be at id=${focusedCell == null ? void 0 : focusedCell.id}, field=${focusedCell == null ? void 0 : focusedCell.field}.`, "Not syncing the state may cause unwanted behaviors since the `cellFocusIn` event won't be fired.", 'Call `fireEvent.mouseUp` before the `fireEvent.click` to sync the focus with the state.'].join('\n'));
549
+ console.warn([`MUI X: The cell with id=${rowId} and field=${field} received focus.`, `According to the state, the focus should be at id=${focusedCell == null ? void 0 : focusedCell.id}, field=${focusedCell == null ? void 0 : focusedCell.field}.`, "Not syncing the state may cause unwanted behaviors since the `cellFocusIn` event won't be fired.", 'Call `fireEvent.mouseUp` before the `fireEvent.click` to sync the focus with the state.'].join('\n'));
550
550
  warnedOnce = true;
551
551
  }
552
552
  };
@@ -17,15 +17,15 @@ export interface GridPanelProps extends Partial<React.ComponentProps<typeof Grid
17
17
  }
18
18
  export declare const gridPanelClasses: Record<keyof GridPanelClasses, string>;
19
19
  declare const GridPanelRoot: import("@emotion/styled").StyledComponent<Pick<Omit<import("@mui/base").PopperProps, "direction"> & {
20
- component?: React.ElementType<any> | undefined;
20
+ component?: React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined;
21
21
  components?: {
22
- Root?: React.ElementType<any> | undefined;
22
+ Root?: React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined;
23
23
  } | undefined;
24
24
  componentsProps?: {
25
25
  root?: import("@mui/base").SlotComponentProps<"div", import("@mui/base").PopperRootSlotPropsOverrides, import("@mui/base").PopperOwnProps> | undefined;
26
26
  } | undefined;
27
27
  sx?: import("@mui/material/styles").SxProps<import("@mui/material/styles").Theme> | undefined;
28
- } & React.RefAttributes<HTMLDivElement>, "hidden" | "color" | "content" | "style" | "open" | "translate" | "container" | "transition" | "slot" | "title" | "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" | "children" | "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" | "component" | "sx" | "components" | "slotProps" | "slots" | "placement" | "disablePortal" | "modifiers" | "anchorEl" | "keepMounted" | "popperOptions" | "popperRef" | "componentsProps" | keyof React.RefAttributes<HTMLDivElement>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & {
28
+ } & React.RefAttributes<HTMLDivElement>, "hidden" | "color" | "content" | "style" | "open" | "translate" | "container" | "transition" | "slot" | "title" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoFocus" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "nonce" | "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" | "children" | "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" | "component" | "sx" | "components" | "slotProps" | "slots" | "placement" | "disablePortal" | "modifiers" | "anchorEl" | "keepMounted" | "popperOptions" | "popperRef" | "componentsProps" | keyof React.RefAttributes<HTMLDivElement>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & {
29
29
  ownerState: OwnerState;
30
30
  }, {}, {}>;
31
31
  declare const GridPanel: React.ForwardRefExoticComponent<Omit<GridPanelProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -91,7 +91,7 @@ const getLogicOperatorLocaleKey = logicOperator => {
91
91
  case GridLogicOperator.Or:
92
92
  return 'filterPanelOperatorOr';
93
93
  default:
94
- throw new Error('MUI: Invalid `logicOperator` property in the `GridFilterPanel`.');
94
+ throw new Error('MUI X: Invalid `logicOperator` property in the `GridFilterPanel`.');
95
95
  }
96
96
  };
97
97
  const getColumnLabel = col => col.headerName || col.field;
@@ -6,12 +6,16 @@ export type GridToolbarQuickFilterProps = TextFieldProps & {
6
6
  * Function responsible for parsing text input in an array of independent values for quick filtering.
7
7
  * @param {string} input The value entered by the user
8
8
  * @returns {any[]} The array of value on which quick filter is applied
9
+ * @default (searchText: string) => searchText
10
+ * .split(' ')
11
+ * .filter((word) => word !== '')
9
12
  */
10
13
  quickFilterParser?: (input: string) => any[];
11
14
  /**
12
15
  * Function responsible for formatting values of quick filter in a string when the model is modified
13
16
  * @param {any[]} values The new values passed to the quick filter model
14
17
  * @returns {string} The string to display in the text field
18
+ * @default (values: string[]) => values.join(' ')
15
19
  */
16
20
  quickFilterFormatter?: (values: NonNullable<GridFilterModel['quickFilterValues']>) => string;
17
21
  /**
@@ -124,12 +124,16 @@ process.env.NODE_ENV !== "production" ? GridToolbarQuickFilter.propTypes = {
124
124
  * Function responsible for formatting values of quick filter in a string when the model is modified
125
125
  * @param {any[]} values The new values passed to the quick filter model
126
126
  * @returns {string} The string to display in the text field
127
+ * @default (values: string[]) => values.join(' ')
127
128
  */
128
129
  quickFilterFormatter: PropTypes.func,
129
130
  /**
130
131
  * Function responsible for parsing text input in an array of independent values for quick filtering.
131
132
  * @param {string} input The value entered by the user
132
133
  * @returns {any[]} The array of value on which quick filter is applied
134
+ * @default (searchText: string) => searchText
135
+ * .split(' ')
136
+ * .filter((word) => word !== '')
133
137
  */
134
138
  quickFilterParser: PropTypes.func
135
139
  } : void 0;
@@ -13,13 +13,13 @@ const LOG_LEVELS = ['debug', 'info', 'warn', 'error'];
13
13
  function getAppender(name, logLevel, appender = console) {
14
14
  const minLogLevelIdx = LOG_LEVELS.indexOf(logLevel);
15
15
  if (minLogLevelIdx === -1) {
16
- throw new Error(`MUI: Log level ${logLevel} not recognized.`);
16
+ throw new Error(`MUI X: Log level ${logLevel} not recognized.`);
17
17
  }
18
18
  const logger = LOG_LEVELS.reduce((loggerObj, method, idx) => {
19
19
  if (idx >= minLogLevelIdx) {
20
20
  loggerObj[method] = (...args) => {
21
21
  const [message, ...other] = args;
22
- appender[method](`MUI: ${name} - ${message}`, ...other);
22
+ appender[method](`MUI X: ${name} - ${message}`, ...other);
23
23
  };
24
24
  } else {
25
25
  loggerObj[method] = noop;
@@ -4,7 +4,7 @@ import { isDeepEqual } from '../../../utils/utils';
4
4
  const recurrentUnwrapGroupingColumnModel = (columnGroupNode, parents, unwrappedGroupingModelToComplete) => {
5
5
  if (isLeaf(columnGroupNode)) {
6
6
  if (unwrappedGroupingModelToComplete[columnGroupNode.field] !== undefined) {
7
- throw new Error([`MUI: columnGroupingModel contains duplicated field`, `column field ${columnGroupNode.field} occurs two times in the grouping model:`, `- ${unwrappedGroupingModelToComplete[columnGroupNode.field].join(' > ')}`, `- ${parents.join(' > ')}`].join('\n'));
7
+ throw new Error([`MUI X: columnGroupingModel contains duplicated field`, `column field ${columnGroupNode.field} occurs two times in the grouping model:`, `- ${unwrappedGroupingModelToComplete[columnGroupNode.field].join(' > ')}`, `- ${parents.join(' > ')}`].join('\n'));
8
8
  }
9
9
  unwrappedGroupingModelToComplete[columnGroupNode.field] = parents;
10
10
  return;
@@ -20,17 +20,19 @@ const createGroupLookup = columnGroupingModel => {
20
20
  } = node,
21
21
  other = _objectWithoutPropertiesLoose(node, _excluded);
22
22
  if (!groupId) {
23
- throw new Error('MUI: An element of the columnGroupingModel does not have either `field` or `groupId`.');
23
+ throw new Error('MUI X: An element of the columnGroupingModel does not have either `field` or `groupId`.');
24
24
  }
25
- if (!children) {
26
- console.warn(`MUI: group groupId=${groupId} has no children.`);
25
+ if (process.env.NODE_ENV !== 'production') {
26
+ if (!children) {
27
+ console.warn(`MUI X: group groupId=${groupId} has no children.`);
28
+ }
27
29
  }
28
30
  const groupParam = _extends({}, other, {
29
31
  groupId
30
32
  });
31
33
  const subTreeLookup = createGroupLookup(children);
32
34
  if (subTreeLookup[groupId] !== undefined || groupLookup[groupId] !== undefined) {
33
- throw new Error(`MUI: The groupId ${groupId} is used multiple times in the columnGroupingModel.`);
35
+ throw new Error(`MUI X: The groupId ${groupId} is used multiple times in the columnGroupingModel.`);
34
36
  }
35
37
  groupLookup = _extends({}, groupLookup, subTreeLookup, {
36
38
  [groupId]: groupParam
@@ -14,7 +14,7 @@ import { buildWarning } from '../../../utils/warning';
14
14
  import { gridRowsDataRowIdToIdLookupSelector } from '../rows/gridRowsSelector';
15
15
  import { deepClone } from '../../../utils/utils';
16
16
  import { GridCellEditStartReasons, GridCellEditStopReasons } from '../../../models/params/gridEditCellParams';
17
- const missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#server-side-persistence.'], 'error');
17
+ const missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/editing/#server-side-persistence.'], 'error');
18
18
  export const useGridCellEditing = (apiRef, props) => {
19
19
  const [cellModesModel, setCellModesModel] = React.useState({});
20
20
  const cellModesModelRef = React.useRef(cellModesModel);
@@ -33,12 +33,12 @@ export const useGridCellEditing = (apiRef, props) => {
33
33
  const throwIfNotEditable = React.useCallback((id, field) => {
34
34
  const params = apiRef.current.getCellParams(id, field);
35
35
  if (!apiRef.current.isCellEditable(params)) {
36
- throw new Error(`MUI: The cell with id=${id} and field=${field} is not editable.`);
36
+ throw new Error(`MUI X: The cell with id=${id} and field=${field} is not editable.`);
37
37
  }
38
38
  }, [apiRef]);
39
39
  const throwIfNotInMode = React.useCallback((id, field, mode) => {
40
40
  if (apiRef.current.getCellMode(id, field) !== mode) {
41
- throw new Error(`MUI: The cell with id=${id} and field=${field} is not in ${mode} mode.`);
41
+ throw new Error(`MUI X: The cell with id=${id} and field=${field} is not in ${mode} mode.`);
42
42
  }
43
43
  }, [apiRef]);
44
44
  const handleCellDoubleClick = React.useCallback((params, event) => {
@@ -302,7 +302,7 @@ export const useGridCellEditing = (apiRef, props) => {
302
302
  });
303
303
  if (onProcessRowUpdateError) {
304
304
  onProcessRowUpdateError(errorThrown);
305
- } else {
305
+ } else if (process.env.NODE_ENV !== 'production') {
306
306
  missingOnProcessRowUpdateErrorWarning();
307
307
  }
308
308
  };
@@ -16,7 +16,7 @@ import { gridRowsDataRowIdToIdLookupSelector } from '../rows/gridRowsSelector';
16
16
  import { deepClone } from '../../../utils/utils';
17
17
  import { GridRowEditStopReasons, GridRowEditStartReasons } from '../../../models/params/gridRowParams';
18
18
  import { GRID_ACTIONS_COLUMN_TYPE } from '../../../colDef';
19
- const missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#server-side-persistence.'], 'error');
19
+ const missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/editing/#server-side-persistence.'], 'error');
20
20
  export const useGridRowEditing = (apiRef, props) => {
21
21
  const [rowModesModel, setRowModesModel] = React.useState({});
22
22
  const rowModesModelRef = React.useRef(rowModesModel);
@@ -37,12 +37,12 @@ export const useGridRowEditing = (apiRef, props) => {
37
37
  const throwIfNotEditable = React.useCallback((id, field) => {
38
38
  const params = apiRef.current.getCellParams(id, field);
39
39
  if (!apiRef.current.isCellEditable(params)) {
40
- throw new Error(`MUI: The cell with id=${id} and field=${field} is not editable.`);
40
+ throw new Error(`MUI X: The cell with id=${id} and field=${field} is not editable.`);
41
41
  }
42
42
  }, [apiRef]);
43
43
  const throwIfNotInMode = React.useCallback((id, mode) => {
44
44
  if (apiRef.current.getRowMode(id) !== mode) {
45
- throw new Error(`MUI: The row with id=${id} is not in ${mode} mode.`);
45
+ throw new Error(`MUI X: The row with id=${id} is not in ${mode} mode.`);
46
46
  }
47
47
  }, [apiRef]);
48
48
  const handleCellDoubleClick = React.useCallback((params, event) => {
@@ -380,7 +380,7 @@ export const useGridRowEditing = (apiRef, props) => {
380
380
  });
381
381
  if (onProcessRowUpdateError) {
382
382
  onProcessRowUpdateError(errorThrown);
383
- } else {
383
+ } else if (process.env.NODE_ENV !== 'production') {
384
384
  missingOnProcessRowUpdateErrorWarning();
385
385
  }
386
386
  };
@@ -34,7 +34,7 @@ export const serializeCellValue = (cellParams, options) => {
34
34
  }
35
35
  return sanitizeCellValue(value, delimiterCharacter);
36
36
  };
37
- const objectFormattedValueWarning = buildWarning(['MUI: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.', 'You can provide a `valueFormatter` with a string representation to be used.']);
37
+ const objectFormattedValueWarning = buildWarning(['MUI X: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.', 'You can provide a `valueFormatter` with a string representation to be used.']);
38
38
  class CSVRow {
39
39
  constructor(options) {
40
40
  this.options = void 0;
@@ -211,7 +211,7 @@ export const useGridPrintExport = (apiRef, props) => {
211
211
  var _options$getRowsToExp;
212
212
  logger.debug(`Export data as Print`);
213
213
  if (!apiRef.current.rootElementRef.current) {
214
- throw new Error('MUI: No grid root element available.');
214
+ throw new Error('MUI X: No grid root element available.');
215
215
  }
216
216
  previousGridState.current = apiRef.current.exportState();
217
217
  // It appends that the visibility model is not exported, especially if columnVisibility is not controlled
@@ -4,15 +4,17 @@ import { getDefaultGridFilterModel } from './gridFilterState';
4
4
  import { buildWarning } from '../../../utils/warning';
5
5
  import { getPublicApiRef } from '../../../utils/getPublicApiRef';
6
6
  import { gridColumnFieldsSelector, gridColumnLookupSelector, gridVisibleColumnFieldsSelector } from '../columns';
7
-
8
- // Fixes https://github.com/mui/mui-x/issues/10056
9
- const globalScope = typeof window === 'undefined' ? globalThis : window;
10
- const evalCode = globalScope[atob('ZXZhbA==')];
11
7
  let hasEval;
12
- try {
13
- hasEval = evalCode('true');
14
- } catch (_) {
15
- hasEval = false;
8
+ function getHasEval() {
9
+ if (hasEval !== undefined) {
10
+ return hasEval;
11
+ }
12
+ try {
13
+ hasEval = new Function('return true')();
14
+ } catch (_) {
15
+ hasEval = false;
16
+ }
17
+ return hasEval;
16
18
  }
17
19
  /**
18
20
  * Adds default values to the optional fields of a filter items.
@@ -34,9 +36,9 @@ export const cleanFilterItem = (item, apiRef) => {
34
36
  }
35
37
  return cleanItem;
36
38
  };
37
- const filterModelDisableMultiColumnsFilteringWarning = buildWarning(['MUI: The `filterModel` can only contain a single item when the `disableMultipleColumnsFiltering` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');
38
- const filterModelMissingItemIdWarning = buildWarning('MUI: The `id` field is required on `filterModel.items` when you use multiple filters.', 'error');
39
- const filterModelMissingItemOperatorWarning = buildWarning('MUI: The `operator` field is required on `filterModel.items`, one or more of your filtering item has no `operator` provided.', 'error');
39
+ const filterModelDisableMultiColumnsFilteringWarning = buildWarning(['MUI X: The `filterModel` can only contain a single item when the `disableMultipleColumnsFiltering` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');
40
+ const filterModelMissingItemIdWarning = buildWarning('MUI X: The `id` field is required on `filterModel.items` when you use multiple filters.', 'error');
41
+ const filterModelMissingItemOperatorWarning = buildWarning('MUI X: The `operator` field is required on `filterModel.items`, one or more of your filtering item has no `operator` provided.', 'error');
40
42
  export const sanitizeFilterModel = (model, disableMultipleColumnsFiltering, apiRef) => {
41
43
  const hasSeveralItems = model.items.length > 1;
42
44
  let items;
@@ -102,11 +104,11 @@ const getFilterCallbackFromItem = (filterItem, apiRef) => {
102
104
  });
103
105
  const filterOperators = column.filterOperators;
104
106
  if (!(filterOperators != null && filterOperators.length)) {
105
- throw new Error(`MUI: No filter operators found for column '${column.field}'.`);
107
+ throw new Error(`MUI X: No filter operators found for column '${column.field}'.`);
106
108
  }
107
109
  const filterOperator = filterOperators.find(operator => operator.value === newFilterItem.operator);
108
110
  if (!filterOperator) {
109
- throw new Error(`MUI: No filter operator found for column '${column.field}' and operator value '${newFilterItem.operator}'.`);
111
+ throw new Error(`MUI X: No filter operator found for column '${column.field}' and operator value '${newFilterItem.operator}'.`);
110
112
  }
111
113
  const publicApiRef = getPublicApiRef(apiRef);
112
114
  const applyFilterOnRow = filterOperator.getApplyFilterFn(newFilterItem, column);
@@ -140,7 +142,7 @@ const buildAggregatedFilterItemsApplier = (filterModel, apiRef, disableEval) =>
140
142
  if (appliers.length === 0) {
141
143
  return null;
142
144
  }
143
- if (!hasEval || disableEval) {
145
+ if (disableEval || !getHasEval()) {
144
146
  // This is the original logic, which is used if `eval()` is not supported (aka prevented by CSP).
145
147
  return (row, shouldApplyFilter) => {
146
148
  const resultPerItemId = {};
@@ -154,25 +156,20 @@ const buildAggregatedFilterItemsApplier = (filterModel, apiRef, disableEval) =>
154
156
  };
155
157
  }
156
158
 
157
- // We generate a new function with `eval()` to avoid expensive patterns for JS engines
159
+ // We generate a new function with `new Function()` to avoid expensive patterns for JS engines
158
160
  // such as a dynamic object assignment, e.g. `{ [dynamicKey]: value }`.
159
- const filterItemTemplate = `(function filterItem$$(getRowId, appliers, row, shouldApplyFilter) {
160
- ${appliers.map((applier, i) => `const shouldApply${i} = !shouldApplyFilter || shouldApplyFilter(${JSON.stringify(applier.item.field)});`).join('\n')}
161
+ const filterItemCore = new Function('appliers', 'row', 'shouldApplyFilter', `"use strict";
162
+ ${appliers.map((applier, i) => `const shouldApply${i} = !shouldApplyFilter || shouldApplyFilter(${JSON.stringify(applier.item.field)});`).join('\n')}
161
163
 
162
- const result$$ = {
163
- ${appliers.map((applier, i) => `${JSON.stringify(String(applier.item.id))}:
164
- !shouldApply${i} ?
165
- false :
166
- appliers[${i}].fn(row),
167
- `).join('\n')}};
164
+ const result$$ = {
165
+ ${appliers.map((applier, i) => ` ${JSON.stringify(String(applier.item.id))}: !shouldApply${i} ? false : appliers[${i}].fn(row),`).join('\n')}
166
+ };
168
167
 
169
- return result$$;
170
- })`;
171
- const filterItemCore = evalCode(filterItemTemplate.replaceAll('$$', String(filterItemsApplierId)));
172
- const filterItem = (row, shouldApplyItem) => {
173
- return filterItemCore(apiRef.current.getRowId, appliers, row, shouldApplyItem);
174
- };
168
+ return result$$;`.replaceAll('$$', String(filterItemsApplierId)));
175
169
  filterItemsApplierId += 1;
170
+
171
+ // Assign to the arrow function a name to help debugging
172
+ const filterItem = (row, shouldApplyItem) => filterItemCore(appliers, row, shouldApplyItem);
176
173
  return filterItem;
177
174
  };
178
175
  export const shouldQuickFilterExcludeHiddenColumns = filterModel => {
@@ -8,7 +8,7 @@ export const getPageCount = (rowCount, pageSize) => {
8
8
  }
9
9
  return 0;
10
10
  };
11
- export const noRowCountInServerMode = buildWarning(["MUI: the 'rowCount' prop is undefined while using paginationMode='server'", 'For more detail, see http://mui.com/components/data-grid/pagination/#basic-implementation'], 'error');
11
+ export const noRowCountInServerMode = buildWarning(["MUI X: the 'rowCount' prop is undefined while using paginationMode='server'", 'For more detail, see http://mui.com/components/data-grid/pagination/#basic-implementation'], 'error');
12
12
  export const getDefaultGridPaginationModel = autoPageSize => ({
13
13
  page: 0,
14
14
  pageSize: autoPageSize ? 0 : 100
@@ -21,6 +21,6 @@ export const getValidPage = (page, pageCount = 0) => {
21
21
  };
22
22
  export const throwIfPageSizeExceedsTheLimit = (pageSize, signatureProp) => {
23
23
  if (signatureProp === GridSignature.DataGrid && pageSize > MAX_PAGE_SIZE) {
24
- throw new Error(['MUI: `pageSize` cannot exceed 100 in the MIT version of the DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
24
+ throw new Error(['MUI X: `pageSize` cannot exceed 100 in the MIT version of the DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
25
25
  }
26
26
  };
@@ -96,7 +96,7 @@ export const useGridRowSelection = (apiRef, props) => {
96
96
  */
97
97
  const setRowSelectionModel = React.useCallback(model => {
98
98
  if (props.signature === GridSignature.DataGrid && !canHaveMultipleSelection && Array.isArray(model) && model.length > 1) {
99
- throw new Error(['MUI: `rowSelectionModel` can only contain 1 item in DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock multiple selection.'].join('\n'));
99
+ throw new Error(['MUI X: `rowSelectionModel` can only contain 1 item in DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock multiple selection.'].join('\n'));
100
100
  }
101
101
  const currentModel = gridRowSelectionStateSelector(apiRef.current.state);
102
102
  if (currentModel !== model) {
@@ -24,7 +24,7 @@ export const buildRootGroup = () => ({
24
24
  */
25
25
  export function checkGridRowIdIsValid(id, row, detailErrorMessage = 'A row was provided without id in the rows prop:') {
26
26
  if (id == null) {
27
- throw new Error(['MUI: The data grid component requires all rows to have a unique `id` property.', 'Alternatively, you can use the `getRowId` prop to specify a custom id for each row.', detailErrorMessage, JSON.stringify(row)].join('\n'));
27
+ throw new Error(['MUI X: The data grid component requires all rows to have a unique `id` property.', 'Alternatively, you can use the `getRowId` prop to specify a custom id for each row.', detailErrorMessage, JSON.stringify(row)].join('\n'));
28
28
  }
29
29
  }
30
30
  export const getRowIdFromRowModel = (rowModel, getRowId, detailErrorMessage) => {
@@ -145,7 +145,7 @@ export const updateCacheWithNewRows = ({
145
145
  }) => {
146
146
  var _previousCache$update, _previousCache$update2, _previousCache$update3;
147
147
  if (previousCache.updates.type === 'full') {
148
- throw new Error('MUI: Unable to prepare a partial update if a full update is not applied yet');
148
+ throw new Error('MUI X: Unable to prepare a partial update if a full update is not applied yet.');
149
149
  }
150
150
 
151
151
  // Remove duplicate updates.
@@ -121,7 +121,7 @@ export const useGridRows = (apiRef, props) => {
121
121
  }, [logger, props.getRowId, props.loading, props.rowCount, throttledRowsChange, apiRef]);
122
122
  const updateRows = React.useCallback(updates => {
123
123
  if (props.signature === GridSignature.DataGrid && updates.length > 1) {
124
- throw new Error(["MUI: You can't update several rows at once in `apiRef.current.updateRows` on the DataGrid.", 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
124
+ throw new Error(["MUI X: You can't update several rows at once in `apiRef.current.updateRows` on the DataGrid.", 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
125
125
  }
126
126
  const nonPinnedRowsUpdates = [];
127
127
  updates.forEach(update => {
@@ -162,10 +162,10 @@ export const useGridRows = (apiRef, props) => {
162
162
  const setRowChildrenExpansion = React.useCallback((id, isExpanded) => {
163
163
  const currentNode = apiRef.current.getRowNode(id);
164
164
  if (!currentNode) {
165
- throw new Error(`MUI: No row with id #${id} found`);
165
+ throw new Error(`MUI X: No row with id #${id} found.`);
166
166
  }
167
167
  if (currentNode.type !== 'group') {
168
- throw new Error('MUI: Only group nodes can be expanded or collapsed');
168
+ throw new Error('MUI X: Only group nodes can be expanded or collapsed.');
169
169
  }
170
170
  const newNode = _extends({}, currentNode, {
171
171
  childrenExpanded: isExpanded
@@ -220,13 +220,13 @@ export const useGridRows = (apiRef, props) => {
220
220
  const setRowIndex = React.useCallback((rowId, targetIndex) => {
221
221
  const node = apiRef.current.getRowNode(rowId);
222
222
  if (!node) {
223
- throw new Error(`MUI: No row with id #${rowId} found`);
223
+ throw new Error(`MUI X: No row with id #${rowId} found.`);
224
224
  }
225
225
  if (node.parent !== GRID_ROOT_GROUP_ID) {
226
- throw new Error(`MUI: The row reordering do not support reordering of grouped rows yet`);
226
+ throw new Error(`MUI X: The row reordering do not support reordering of grouped rows yet.`);
227
227
  }
228
228
  if (node.type !== 'leaf') {
229
- throw new Error(`MUI: The row reordering do not support reordering of footer or grouping rows`);
229
+ throw new Error(`MUI X: The row reordering do not support reordering of footer or grouping rows.`);
230
230
  }
231
231
  apiRef.current.setState(state => {
232
232
  const group = gridRowTreeSelector(state, apiRef.current.instanceId)[GRID_ROOT_GROUP_ID];
@@ -252,7 +252,7 @@ export const useGridRows = (apiRef, props) => {
252
252
  }, [apiRef, logger]);
253
253
  const replaceRows = React.useCallback((firstRowToRender, newRows) => {
254
254
  if (props.signature === GridSignature.DataGrid && newRows.length > 1) {
255
- throw new Error(["MUI: You can't replace rows using `apiRef.current.unstable_replaceRows` on the DataGrid.", 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
255
+ throw new Error(["MUI X: You can't replace rows using `apiRef.current.unstable_replaceRows` on the DataGrid.", 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
256
256
  }
257
257
  if (newRows.length === 0) {
258
258
  return;
@@ -28,8 +28,8 @@ const getValidRowHeight = (rowHeightProp, defaultRowHeight, warningMessage) => {
28
28
  }
29
29
  return defaultRowHeight;
30
30
  };
31
- const rowHeightWarning = [`MUI: The \`rowHeight\` prop should be a number greater than 0.`, `The default value will be used instead.`].join('\n');
32
- const getRowHeightWarning = [`MUI: The \`getRowHeight\` prop should return a number greater than 0 or 'auto'.`, `The default value will be used instead.`].join('\n');
31
+ const rowHeightWarning = [`MUI X: The \`rowHeight\` prop should be a number greater than 0.`, `The default value will be used instead.`].join('\n');
32
+ const getRowHeightWarning = [`MUI X: The \`getRowHeight\` prop should return a number greater than 0 or 'auto'.`, `The default value will be used instead.`].join('\n');
33
33
 
34
34
  /**
35
35
  * @requires useGridPageSize (method)
@@ -1,9 +1,11 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import { buildWarning } from '../../../utils/warning';
3
- const sortModelDisableMultiColumnsSortingWarning = buildWarning(['MUI: The `sortModel` can only contain a single item when the `disableMultipleColumnsSorting` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');
3
+ const sortModelDisableMultiColumnsSortingWarning = buildWarning(['MUI X: The `sortModel` can only contain a single item when the `disableMultipleColumnsSorting` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');
4
4
  export const sanitizeSortModel = (model, disableMultipleColumnsSorting) => {
5
5
  if (disableMultipleColumnsSorting && model.length > 1) {
6
- sortModelDisableMultiColumnsSortingWarning();
6
+ if (process.env.NODE_ENV !== 'production') {
7
+ sortModelDisableMultiColumnsSortingWarning();
8
+ }
7
9
  return [model[0]];
8
10
  }
9
11
  return model;
@@ -3,7 +3,7 @@ import { GridApiContext } from '../../components/GridApiContext';
3
3
  export function useGridApiContext() {
4
4
  const apiRef = React.useContext(GridApiContext);
5
5
  if (apiRef === undefined) {
6
- throw new Error(['MUI: Could not find the data grid context.', 'It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.', 'This can also happen if you are bundling multiple versions of the data grid.'].join('\n'));
6
+ throw new Error(['MUI X: Could not find the data grid context.', 'It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.', 'This can also happen if you are bundling multiple versions of the data grid.'].join('\n'));
7
7
  }
8
8
  return apiRef;
9
9
  }
@@ -6,7 +6,7 @@ if (process.env.NODE_ENV !== 'production') {
6
6
  export function useGridPrivateApiContext() {
7
7
  const privateApiRef = React.useContext(GridPrivateApiContext);
8
8
  if (privateApiRef === undefined) {
9
- throw new Error(['MUI: Could not find the data grid private context.', 'It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.', 'This can also happen if you are bundling multiple versions of the data grid.'].join('\n'));
9
+ throw new Error(['MUI X: Could not find the data grid private context.', 'It looks like you rendered your component outside of a DataGrid, DataGridPro or DataGridPremium parent component.', 'This can also happen if you are bundling multiple versions of the data grid.'].join('\n'));
10
10
  }
11
11
  return privateApiRef;
12
12
  }
@@ -3,7 +3,7 @@ import { GridRootPropsContext } from '../../context/GridRootPropsContext';
3
3
  export const useGridRootProps = () => {
4
4
  const contextValue = React.useContext(GridRootPropsContext);
5
5
  if (!contextValue) {
6
- throw new Error('MUI: useGridRootProps should only be used inside the DataGrid, DataGridPro or DataGridPremium component.');
6
+ throw new Error('MUI X: useGridRootProps should only be used inside the DataGrid, DataGridPro or DataGridPremium component.');
7
7
  }
8
8
  return contextValue;
9
9
  };
@@ -3,7 +3,7 @@ import { useLazyRef } from './useLazyRef';
3
3
  import { useOnMount } from './useOnMount';
4
4
  import { buildWarning } from '../../utils/warning';
5
5
  import { fastObjectShallowCompare } from '../../utils/fastObjectShallowCompare';
6
- const stateNotInitializedWarning = buildWarning(['MUI: `useGridSelector` has been called before the initialization of the state.', 'This hook can only be used inside the context of the grid.']);
6
+ const stateNotInitializedWarning = buildWarning(['MUI X: `useGridSelector` has been called before the initialization of the state.', 'This hook can only be used inside the context of the grid.']);
7
7
  function isOutputSelector(selector) {
8
8
  return selector.acceptsApiRef;
9
9
  }
package/index.d.ts CHANGED
@@ -7,7 +7,6 @@ export * from './DataGrid';
7
7
  export * from './components';
8
8
  export * from './constants';
9
9
  export * from './hooks';
10
- export * from './locales';
11
10
  export * from './models';
12
11
  export * from './context';
13
12
  export * from './colDef';
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v7.0.0-alpha.6
2
+ * @mui/x-data-grid v7.0.0-alpha.8
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -12,7 +12,6 @@ export * from './DataGrid';
12
12
  export * from './components';
13
13
  export * from './constants';
14
14
  export * from './hooks';
15
- export * from './locales';
16
15
  export * from './models';
17
16
  export * from './context';
18
17
  export * from './colDef';
@@ -80,3 +80,4 @@ export type { GridApiCommunity } from '../models/api/gridApiCommunity';
80
80
  export type { GridApiCaches } from '../models/gridApiCaches';
81
81
  export { serializeCellValue } from '../hooks/features/export/serializers/csvSerializer';
82
82
  export * from './utils';
83
+ export type { Localization } from '../utils/getGridLocalization';
@@ -1,2 +1,3 @@
1
1
  export * from './computeSlots';
2
2
  export * from './useProps';
3
+ export * from './propValidation';
@@ -1,2 +1,3 @@
1
1
  export * from './computeSlots';
2
- export * from './useProps';
2
+ export * from './useProps';
3
+ export * from './propValidation';
@@ -0,0 +1,4 @@
1
+ import { DataGridProcessedProps } from '../../models/props/DataGridProps';
2
+ export type PropValidator<TProps> = (props: TProps) => string | undefined;
3
+ export declare const propValidatorsDataGrid: PropValidator<DataGridProcessedProps>[];
4
+ export declare const validateProps: <TProps>(props: TProps, validators: PropValidator<TProps>[]) => void;