@mui/x-data-grid 7.5.0 → 7.5.1

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 (203) hide show
  1. package/CHANGELOG.md +61 -5417
  2. package/DataGrid/DataGrid.js +1 -1
  3. package/components/GridColumnHeaders.js +1 -1
  4. package/components/GridFooter.js +1 -1
  5. package/components/GridLoadingOverlay.js +1 -1
  6. package/components/GridNoRowsOverlay.js +1 -1
  7. package/components/GridPagination.js +1 -1
  8. package/components/GridRow.js +1 -1
  9. package/components/GridRowCount.js +1 -1
  10. package/components/GridScrollArea.d.ts +2 -5
  11. package/components/GridScrollArea.js +1 -10
  12. package/components/GridSelectedRowCount.js +1 -1
  13. package/components/base/GridOverlays.js +1 -1
  14. package/components/cell/GridActionsCell.js +1 -1
  15. package/components/cell/GridActionsCellItem.js +1 -1
  16. package/components/cell/GridBooleanCell.js +1 -1
  17. package/components/cell/GridCell.js +1 -1
  18. package/components/cell/GridEditBooleanCell.js +1 -1
  19. package/components/cell/GridEditDateCell.js +1 -1
  20. package/components/cell/GridEditInputCell.js +1 -1
  21. package/components/cell/GridEditSingleSelectCell.js +1 -1
  22. package/components/cell/GridSkeletonCell.js +1 -1
  23. package/components/columnHeaders/GridColumnHeaderFilterIconButton.js +1 -1
  24. package/components/columnHeaders/GridColumnHeaderItem.js +1 -1
  25. package/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
  26. package/components/columnHeaders/GridColumnHeaderSortIcon.js +1 -1
  27. package/components/columnHeaders/GridColumnHeaderTitle.js +1 -1
  28. package/components/columnSelection/GridCellCheckboxRenderer.js +1 -1
  29. package/components/columnSelection/GridHeaderCheckbox.js +1 -1
  30. package/components/columnsManagement/GridColumnsManagement.js +1 -1
  31. package/components/containers/GridFooterContainer.js +1 -1
  32. package/components/containers/GridOverlay.js +1 -1
  33. package/components/containers/GridRoot.js +1 -1
  34. package/components/containers/GridToolbarContainer.js +1 -1
  35. package/components/menu/GridMenu.js +1 -1
  36. package/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
  37. package/components/menu/columnMenu/GridColumnMenu.js +1 -1
  38. package/components/menu/columnMenu/GridColumnMenuContainer.js +1 -1
  39. package/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.js +1 -1
  40. package/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js +1 -1
  41. package/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js +1 -1
  42. package/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js +1 -1
  43. package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  44. package/components/panel/GridColumnsPanel.js +1 -1
  45. package/components/panel/GridPanel.js +1 -1
  46. package/components/panel/GridPanelContent.js +1 -1
  47. package/components/panel/GridPanelFooter.js +1 -1
  48. package/components/panel/GridPanelHeader.js +1 -1
  49. package/components/panel/GridPanelWrapper.js +1 -1
  50. package/components/panel/filterPanel/GridFilterForm.js +1 -1
  51. package/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
  52. package/components/panel/filterPanel/GridFilterInputDate.js +1 -1
  53. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +1 -1
  54. package/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -1
  55. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +1 -1
  56. package/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  57. package/components/panel/filterPanel/GridFilterPanel.js +1 -1
  58. package/components/toolbar/GridToolbar.js +1 -1
  59. package/components/toolbar/GridToolbarColumnsButton.js +1 -1
  60. package/components/toolbar/GridToolbarDensitySelector.js +1 -1
  61. package/components/toolbar/GridToolbarExport.js +1 -1
  62. package/components/toolbar/GridToolbarExportContainer.js +1 -1
  63. package/components/toolbar/GridToolbarFilterButton.js +1 -1
  64. package/components/toolbar/GridToolbarQuickFilter.js +1 -1
  65. package/hooks/features/clipboard/useGridClipboard.js +8 -5
  66. package/hooks/features/export/serializers/csvSerializer.d.ts +3 -6
  67. package/hooks/features/export/serializers/csvSerializer.js +28 -32
  68. package/hooks/features/export/useGridCsvExport.js +8 -5
  69. package/index.js +1 -1
  70. package/models/gridExport.d.ts +7 -0
  71. package/modern/DataGrid/DataGrid.js +1 -1
  72. package/modern/components/GridColumnHeaders.js +1 -1
  73. package/modern/components/GridFooter.js +1 -1
  74. package/modern/components/GridLoadingOverlay.js +1 -1
  75. package/modern/components/GridNoRowsOverlay.js +1 -1
  76. package/modern/components/GridPagination.js +1 -1
  77. package/modern/components/GridRow.js +1 -1
  78. package/modern/components/GridRowCount.js +1 -1
  79. package/modern/components/GridScrollArea.js +1 -10
  80. package/modern/components/GridSelectedRowCount.js +1 -1
  81. package/modern/components/base/GridOverlays.js +1 -1
  82. package/modern/components/cell/GridActionsCell.js +1 -1
  83. package/modern/components/cell/GridActionsCellItem.js +1 -1
  84. package/modern/components/cell/GridBooleanCell.js +1 -1
  85. package/modern/components/cell/GridCell.js +1 -1
  86. package/modern/components/cell/GridEditBooleanCell.js +1 -1
  87. package/modern/components/cell/GridEditDateCell.js +1 -1
  88. package/modern/components/cell/GridEditInputCell.js +1 -1
  89. package/modern/components/cell/GridEditSingleSelectCell.js +1 -1
  90. package/modern/components/cell/GridSkeletonCell.js +1 -1
  91. package/modern/components/columnHeaders/GridColumnHeaderFilterIconButton.js +1 -1
  92. package/modern/components/columnHeaders/GridColumnHeaderItem.js +1 -1
  93. package/modern/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
  94. package/modern/components/columnHeaders/GridColumnHeaderSortIcon.js +1 -1
  95. package/modern/components/columnHeaders/GridColumnHeaderTitle.js +1 -1
  96. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +1 -1
  97. package/modern/components/columnSelection/GridHeaderCheckbox.js +1 -1
  98. package/modern/components/columnsManagement/GridColumnsManagement.js +1 -1
  99. package/modern/components/containers/GridFooterContainer.js +1 -1
  100. package/modern/components/containers/GridOverlay.js +1 -1
  101. package/modern/components/containers/GridRoot.js +1 -1
  102. package/modern/components/containers/GridToolbarContainer.js +1 -1
  103. package/modern/components/menu/GridMenu.js +1 -1
  104. package/modern/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
  105. package/modern/components/menu/columnMenu/GridColumnMenu.js +1 -1
  106. package/modern/components/menu/columnMenu/GridColumnMenuContainer.js +1 -1
  107. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.js +1 -1
  108. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js +1 -1
  109. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js +1 -1
  110. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js +1 -1
  111. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  112. package/modern/components/panel/GridColumnsPanel.js +1 -1
  113. package/modern/components/panel/GridPanel.js +1 -1
  114. package/modern/components/panel/GridPanelContent.js +1 -1
  115. package/modern/components/panel/GridPanelFooter.js +1 -1
  116. package/modern/components/panel/GridPanelHeader.js +1 -1
  117. package/modern/components/panel/GridPanelWrapper.js +1 -1
  118. package/modern/components/panel/filterPanel/GridFilterForm.js +1 -1
  119. package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
  120. package/modern/components/panel/filterPanel/GridFilterInputDate.js +1 -1
  121. package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +1 -1
  122. package/modern/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -1
  123. package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +1 -1
  124. package/modern/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  125. package/modern/components/panel/filterPanel/GridFilterPanel.js +1 -1
  126. package/modern/components/toolbar/GridToolbar.js +1 -1
  127. package/modern/components/toolbar/GridToolbarColumnsButton.js +1 -1
  128. package/modern/components/toolbar/GridToolbarDensitySelector.js +1 -1
  129. package/modern/components/toolbar/GridToolbarExport.js +1 -1
  130. package/modern/components/toolbar/GridToolbarExportContainer.js +1 -1
  131. package/modern/components/toolbar/GridToolbarFilterButton.js +1 -1
  132. package/modern/components/toolbar/GridToolbarQuickFilter.js +1 -1
  133. package/modern/hooks/features/clipboard/useGridClipboard.js +8 -5
  134. package/modern/hooks/features/export/serializers/csvSerializer.js +28 -32
  135. package/modern/hooks/features/export/useGridCsvExport.js +8 -5
  136. package/modern/index.js +1 -1
  137. package/node/DataGrid/DataGrid.js +1 -1
  138. package/node/components/GridColumnHeaders.js +1 -1
  139. package/node/components/GridFooter.js +1 -1
  140. package/node/components/GridLoadingOverlay.js +1 -1
  141. package/node/components/GridNoRowsOverlay.js +1 -1
  142. package/node/components/GridPagination.js +1 -1
  143. package/node/components/GridRow.js +1 -1
  144. package/node/components/GridRowCount.js +1 -1
  145. package/node/components/GridScrollArea.js +0 -8
  146. package/node/components/GridSelectedRowCount.js +1 -1
  147. package/node/components/base/GridOverlays.js +1 -1
  148. package/node/components/cell/GridActionsCell.js +1 -1
  149. package/node/components/cell/GridActionsCellItem.js +1 -1
  150. package/node/components/cell/GridBooleanCell.js +1 -1
  151. package/node/components/cell/GridCell.js +1 -1
  152. package/node/components/cell/GridEditBooleanCell.js +1 -1
  153. package/node/components/cell/GridEditDateCell.js +1 -1
  154. package/node/components/cell/GridEditInputCell.js +1 -1
  155. package/node/components/cell/GridEditSingleSelectCell.js +1 -1
  156. package/node/components/cell/GridSkeletonCell.js +1 -1
  157. package/node/components/columnHeaders/GridColumnHeaderFilterIconButton.js +1 -1
  158. package/node/components/columnHeaders/GridColumnHeaderItem.js +1 -1
  159. package/node/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
  160. package/node/components/columnHeaders/GridColumnHeaderSortIcon.js +1 -1
  161. package/node/components/columnHeaders/GridColumnHeaderTitle.js +1 -1
  162. package/node/components/columnSelection/GridCellCheckboxRenderer.js +1 -1
  163. package/node/components/columnSelection/GridHeaderCheckbox.js +1 -1
  164. package/node/components/columnsManagement/GridColumnsManagement.js +1 -1
  165. package/node/components/containers/GridFooterContainer.js +1 -1
  166. package/node/components/containers/GridOverlay.js +1 -1
  167. package/node/components/containers/GridRoot.js +1 -1
  168. package/node/components/containers/GridToolbarContainer.js +1 -1
  169. package/node/components/menu/GridMenu.js +1 -1
  170. package/node/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
  171. package/node/components/menu/columnMenu/GridColumnMenu.js +1 -1
  172. package/node/components/menu/columnMenu/GridColumnMenuContainer.js +1 -1
  173. package/node/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.js +1 -1
  174. package/node/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js +1 -1
  175. package/node/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js +1 -1
  176. package/node/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js +1 -1
  177. package/node/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  178. package/node/components/panel/GridColumnsPanel.js +1 -1
  179. package/node/components/panel/GridPanel.js +1 -1
  180. package/node/components/panel/GridPanelContent.js +1 -1
  181. package/node/components/panel/GridPanelFooter.js +1 -1
  182. package/node/components/panel/GridPanelHeader.js +1 -1
  183. package/node/components/panel/GridPanelWrapper.js +1 -1
  184. package/node/components/panel/filterPanel/GridFilterForm.js +1 -1
  185. package/node/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
  186. package/node/components/panel/filterPanel/GridFilterInputDate.js +1 -1
  187. package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +1 -1
  188. package/node/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -1
  189. package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +1 -1
  190. package/node/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  191. package/node/components/panel/filterPanel/GridFilterPanel.js +1 -1
  192. package/node/components/toolbar/GridToolbar.js +1 -1
  193. package/node/components/toolbar/GridToolbarColumnsButton.js +1 -1
  194. package/node/components/toolbar/GridToolbarDensitySelector.js +1 -1
  195. package/node/components/toolbar/GridToolbarExport.js +1 -1
  196. package/node/components/toolbar/GridToolbarExportContainer.js +1 -1
  197. package/node/components/toolbar/GridToolbarFilterButton.js +1 -1
  198. package/node/components/toolbar/GridToolbarQuickFilter.js +1 -1
  199. package/node/hooks/features/clipboard/useGridClipboard.js +8 -5
  200. package/node/hooks/features/export/serializers/csvSerializer.js +28 -32
  201. package/node/hooks/features/export/useGridCsvExport.js +8 -5
  202. package/node/index.js +1 -1
  203. package/package.json +1 -1
@@ -46,7 +46,7 @@ const GridToolbar = /*#__PURE__*/React.forwardRef(function GridToolbar(props, re
46
46
  process.env.NODE_ENV !== "production" ? GridToolbar.propTypes = {
47
47
  // ----------------------------- Warning --------------------------------
48
48
  // | These PropTypes are generated from the TypeScript type definitions |
49
- // | To update them edit the TypeScript types and run "yarn proptypes" |
49
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
50
50
  // ----------------------------------------------------------------------
51
51
  /**
52
52
  * Props passed to the quick filter component.
@@ -56,7 +56,7 @@ const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function GridTool
56
56
  process.env.NODE_ENV !== "production" ? GridToolbarColumnsButton.propTypes = {
57
57
  // ----------------------------- Warning --------------------------------
58
58
  // | These PropTypes are generated from the TypeScript type definitions |
59
- // | To update them edit the TypeScript types and run "yarn proptypes" |
59
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
60
60
  // ----------------------------------------------------------------------
61
61
  /**
62
62
  * The props used for each slot inside.
@@ -119,7 +119,7 @@ const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridTo
119
119
  process.env.NODE_ENV !== "production" ? GridToolbarDensitySelector.propTypes = {
120
120
  // ----------------------------- Warning --------------------------------
121
121
  // | These PropTypes are generated from the TypeScript type definitions |
122
- // | To update them edit the TypeScript types and run "yarn proptypes" |
122
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
123
123
  // ----------------------------------------------------------------------
124
124
  /**
125
125
  * The props used for each slot inside.
@@ -67,7 +67,7 @@ const GridToolbarExport = /*#__PURE__*/React.forwardRef(function GridToolbarExpo
67
67
  process.env.NODE_ENV !== "production" ? GridToolbarExport.propTypes = {
68
68
  // ----------------------------- Warning --------------------------------
69
69
  // | These PropTypes are generated from the TypeScript type definitions |
70
- // | To update them edit the TypeScript types and run "yarn proptypes" |
70
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
71
71
  // ----------------------------------------------------------------------
72
72
  csvOptions: PropTypes.object,
73
73
  printOptions: PropTypes.object,
@@ -84,7 +84,7 @@ const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridTo
84
84
  process.env.NODE_ENV !== "production" ? GridToolbarExportContainer.propTypes = {
85
85
  // ----------------------------- Warning --------------------------------
86
86
  // | These PropTypes are generated from the TypeScript type definitions |
87
- // | To update them edit the TypeScript types and run "yarn proptypes" |
87
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
88
88
  // ----------------------------------------------------------------------
89
89
  /**
90
90
  * The props used for each slot inside.
@@ -119,7 +119,7 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
119
119
  process.env.NODE_ENV !== "production" ? GridToolbarFilterButton.propTypes = {
120
120
  // ----------------------------- Warning --------------------------------
121
121
  // | These PropTypes are generated from the TypeScript type definitions |
122
- // | To update them edit the TypeScript types and run "yarn proptypes" |
122
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
123
123
  // ----------------------------------------------------------------------
124
124
  /**
125
125
  * The props used for each slot inside.
@@ -127,7 +127,7 @@ function GridToolbarQuickFilter(props) {
127
127
  process.env.NODE_ENV !== "production" ? GridToolbarQuickFilter.propTypes = {
128
128
  // ----------------------------- Warning --------------------------------
129
129
  // | These PropTypes are generated from the TypeScript type definitions |
130
- // | To update them edit the TypeScript types and run "yarn proptypes" |
130
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
131
131
  // ----------------------------------------------------------------------
132
132
  /**
133
133
  * The debounce time in milliseconds.
@@ -66,18 +66,21 @@ export const useGridClipboard = (apiRef, props) => {
66
66
  if (selectedRows.size > 0) {
67
67
  textToCopy = apiRef.current.getDataAsCsv({
68
68
  includeHeaders: false,
69
- // TODO: make it configurable
70
69
  delimiter: clipboardCopyCellDelimiter,
71
- shouldAppendQuotes: false
70
+ shouldAppendQuotes: false,
71
+ escapeFormulas: false
72
72
  });
73
73
  } else {
74
74
  const focusedCell = gridFocusCellSelector(apiRef);
75
75
  if (focusedCell) {
76
76
  const cellParams = apiRef.current.getCellParams(focusedCell.id, focusedCell.field);
77
77
  textToCopy = serializeCellValue(cellParams, {
78
- delimiterCharacter: clipboardCopyCellDelimiter,
79
- ignoreValueFormatter,
80
- shouldAppendQuotes: false
78
+ csvOptions: {
79
+ delimiter: clipboardCopyCellDelimiter,
80
+ shouldAppendQuotes: false,
81
+ escapeFormulas: false
82
+ },
83
+ ignoreValueFormatter
81
84
  });
82
85
  }
83
86
  }
@@ -4,19 +4,16 @@ import type { GridCellParams } from '../../../../models/params/gridCellParams';
4
4
  import type { GridStateColDef } from '../../../../models/colDef/gridColDef';
5
5
  import type { GridApiCommunity } from '../../../../models/api/gridApiCommunity';
6
6
  export declare const serializeCellValue: (cellParams: GridCellParams, options: {
7
- delimiterCharacter: string;
7
+ csvOptions: CSVOptions;
8
8
  ignoreValueFormatter: boolean;
9
- shouldAppendQuotes: boolean;
10
9
  }) => any;
10
+ type CSVOptions = Required<Pick<GridCsvExportOptions, 'delimiter' | 'shouldAppendQuotes' | 'escapeFormulas'>>;
11
11
  interface BuildCSVOptions {
12
12
  columns: GridStateColDef[];
13
13
  rowIds: GridRowId[];
14
- delimiterCharacter: NonNullable<GridCsvExportOptions['delimiter']>;
15
- includeHeaders: NonNullable<GridCsvExportOptions['includeHeaders']>;
16
- includeColumnGroupsHeaders: NonNullable<GridCsvExportOptions['includeColumnGroupsHeaders']>;
14
+ csvOptions: Required<Pick<GridCsvExportOptions, 'delimiter' | 'includeColumnGroupsHeaders' | 'includeHeaders' | 'shouldAppendQuotes' | 'escapeFormulas'>>;
17
15
  ignoreValueFormatter: boolean;
18
16
  apiRef: React.MutableRefObject<GridApiCommunity>;
19
- shouldAppendQuotes: boolean;
20
17
  }
21
18
  export declare function buildCSV(options: BuildCSVOptions): string;
22
19
  export {};
@@ -1,13 +1,19 @@
1
1
  import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../../colDef';
2
2
  import { buildWarning } from '../../../../utils/warning';
3
- function sanitizeCellValue(value, delimiterCharacter, shouldAppendQuotes) {
3
+ function sanitizeCellValue(value, csvOptions) {
4
4
  if (typeof value === 'string') {
5
- if (shouldAppendQuotes) {
5
+ if (csvOptions.shouldAppendQuotes || csvOptions.escapeFormulas) {
6
6
  const escapedValue = value.replace(/"/g, '""');
7
- // Make sure value containing delimiter or line break won't be split into multiple rows
8
- if ([delimiterCharacter, '\n', '\r', '"'].some(delimiter => value.includes(delimiter))) {
7
+ // Make sure value containing delimiter or line break won't be split into multiple cells
8
+ if ([csvOptions.delimiter, '\n', '\r', '"'].some(delimiter => value.includes(delimiter))) {
9
9
  return `"${escapedValue}"`;
10
10
  }
11
+ if (csvOptions.escapeFormulas) {
12
+ // See https://owasp.org/www-community/attacks/CSV_Injection
13
+ if (['=', '+', '-', '@', '\t', '\r'].includes(escapedValue[0])) {
14
+ return `'${escapedValue}`;
15
+ }
16
+ }
11
17
  return escapedValue;
12
18
  }
13
19
  return value;
@@ -16,9 +22,8 @@ function sanitizeCellValue(value, delimiterCharacter, shouldAppendQuotes) {
16
22
  }
17
23
  export const serializeCellValue = (cellParams, options) => {
18
24
  const {
19
- delimiterCharacter,
20
- ignoreValueFormatter,
21
- shouldAppendQuotes
25
+ csvOptions,
26
+ ignoreValueFormatter
22
27
  } = options;
23
28
  let value;
24
29
  if (ignoreValueFormatter) {
@@ -35,7 +40,7 @@ export const serializeCellValue = (cellParams, options) => {
35
40
  } else {
36
41
  value = cellParams.formattedValue;
37
42
  }
38
- return sanitizeCellValue(value, delimiterCharacter, shouldAppendQuotes);
43
+ return sanitizeCellValue(value, csvOptions);
39
44
  };
40
45
  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.']);
41
46
  class CSVRow {
@@ -47,12 +52,12 @@ class CSVRow {
47
52
  }
48
53
  addValue(value) {
49
54
  if (!this.isEmpty) {
50
- this.rowString += this.options.delimiterCharacter;
55
+ this.rowString += this.options.csvOptions.delimiter;
51
56
  }
52
57
  if (value === null || value === undefined) {
53
58
  this.rowString += '';
54
59
  } else if (typeof this.options.sanitizeCellValue === 'function') {
55
- this.rowString += this.options.sanitizeCellValue(value, this.options.delimiterCharacter, this.options.shouldAppendQuotes);
60
+ this.rowString += this.options.sanitizeCellValue(value, this.options.csvOptions);
56
61
  } else {
57
62
  this.rowString += value;
58
63
  }
@@ -66,13 +71,11 @@ const serializeRow = ({
66
71
  id,
67
72
  columns,
68
73
  getCellParams,
69
- delimiterCharacter,
70
- ignoreValueFormatter,
71
- shouldAppendQuotes
74
+ csvOptions,
75
+ ignoreValueFormatter
72
76
  }) => {
73
77
  const row = new CSVRow({
74
- delimiterCharacter,
75
- shouldAppendQuotes
78
+ csvOptions
76
79
  });
77
80
  columns.forEach(column => {
78
81
  const cellParams = getCellParams(id, column.field);
@@ -82,9 +85,8 @@ const serializeRow = ({
82
85
  }
83
86
  }
84
87
  row.addValue(serializeCellValue(cellParams, {
85
- delimiterCharacter,
86
88
  ignoreValueFormatter,
87
- shouldAppendQuotes
89
+ csvOptions
88
90
  }));
89
91
  });
90
92
  return row.getRowString();
@@ -93,27 +95,23 @@ export function buildCSV(options) {
93
95
  const {
94
96
  columns,
95
97
  rowIds,
96
- delimiterCharacter,
97
- includeHeaders,
98
- includeColumnGroupsHeaders,
98
+ csvOptions,
99
99
  ignoreValueFormatter,
100
- apiRef,
101
- shouldAppendQuotes
100
+ apiRef
102
101
  } = options;
103
102
  const CSVBody = rowIds.reduce((acc, id) => `${acc}${serializeRow({
104
103
  id,
105
104
  columns,
106
105
  getCellParams: apiRef.current.getCellParams,
107
- delimiterCharacter,
108
106
  ignoreValueFormatter,
109
- shouldAppendQuotes
107
+ csvOptions
110
108
  })}\r\n`, '').trim();
111
- if (!includeHeaders) {
109
+ if (!csvOptions.includeHeaders) {
112
110
  return CSVBody;
113
111
  }
114
112
  const filteredColumns = columns.filter(column => column.field !== GRID_CHECKBOX_SELECTION_COL_DEF.field);
115
113
  const headerRows = [];
116
- if (includeColumnGroupsHeaders) {
114
+ if (csvOptions.includeColumnGroupsHeaders) {
117
115
  const columnGroupLookup = apiRef.current.getAllGroupDetails();
118
116
  let maxColumnGroupsDepth = 0;
119
117
  const columnGroupPathsLookup = filteredColumns.reduce((acc, column) => {
@@ -124,9 +122,8 @@ export function buildCSV(options) {
124
122
  }, {});
125
123
  for (let i = 0; i < maxColumnGroupsDepth; i += 1) {
126
124
  const headerGroupRow = new CSVRow({
127
- delimiterCharacter,
128
- sanitizeCellValue,
129
- shouldAppendQuotes
125
+ csvOptions,
126
+ sanitizeCellValue
130
127
  });
131
128
  headerRows.push(headerGroupRow);
132
129
  filteredColumns.forEach(column => {
@@ -137,9 +134,8 @@ export function buildCSV(options) {
137
134
  }
138
135
  }
139
136
  const mainHeaderRow = new CSVRow({
140
- delimiterCharacter,
141
- sanitizeCellValue,
142
- shouldAppendQuotes
137
+ csvOptions,
138
+ sanitizeCellValue
143
139
  });
144
140
  filteredColumns.forEach(column => {
145
141
  mainHeaderRow.addValue(column.headerName || column.field);
@@ -31,12 +31,15 @@ export const useGridCsvExport = (apiRef, props) => {
31
31
  return buildCSV({
32
32
  columns: exportedColumns,
33
33
  rowIds: exportedRowIds,
34
- delimiterCharacter: options.delimiter || ',',
35
- includeHeaders: options.includeHeaders ?? true,
36
- includeColumnGroupsHeaders: options.includeColumnGroupsHeaders ?? true,
34
+ csvOptions: {
35
+ delimiter: options.delimiter || ',',
36
+ shouldAppendQuotes: options.shouldAppendQuotes ?? true,
37
+ includeHeaders: options.includeHeaders ?? true,
38
+ includeColumnGroupsHeaders: options.includeColumnGroupsHeaders ?? true,
39
+ escapeFormulas: options.escapeFormulas ?? true
40
+ },
37
41
  ignoreValueFormatter,
38
- apiRef,
39
- shouldAppendQuotes: options.shouldAppendQuotes ?? true
42
+ apiRef
40
43
  });
41
44
  }, [logger, apiRef, ignoreValueFormatter]);
42
45
  const exportDataAsCsv = React.useCallback(options => {
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v7.5.0
2
+ * @mui/x-data-grid v7.5.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -37,6 +37,13 @@ export interface GridFileExportOptions<Api extends GridApiCommon = GridApiCommun
37
37
  * @returns {GridRowId[]} The list of row ids to export.
38
38
  */
39
39
  getRowsToExport?: (params: GridGetRowsToExportParams<Api>) => GridRowId[];
40
+ /**
41
+ * If `false`, the formulas in the cells will not be escaped.
42
+ * It is not recommended to disable this option as it exposes the user to potential CSV injection attacks.
43
+ * See https://owasp.org/www-community/attacks/CSV_Injection for more information.
44
+ * @default true
45
+ */
46
+ escapeFormulas?: boolean;
40
47
  }
41
48
  export interface GridGetRowsToExportParams<Api extends GridApiCommon = GridApiCommunity> {
42
49
  /**
@@ -45,7 +45,7 @@ export const DataGrid = /*#__PURE__*/React.memo(DataGridRaw);
45
45
  DataGridRaw.propTypes = {
46
46
  // ----------------------------- Warning --------------------------------
47
47
  // | These PropTypes are generated from the TypeScript type definitions |
48
- // | To update them edit the TypeScript types and run "yarn proptypes" |
48
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
49
49
  // ----------------------------------------------------------------------
50
50
  /**
51
51
  * The ref object that allows Data Grid manipulation. Can be instantiated with `useGridApiRef()`.
@@ -50,7 +50,7 @@ const GridColumnHeaders = /*#__PURE__*/React.forwardRef(function GridColumnHeade
50
50
  process.env.NODE_ENV !== "production" ? GridColumnHeaders.propTypes = {
51
51
  // ----------------------------- Warning --------------------------------
52
52
  // | These PropTypes are generated from the TypeScript type definitions |
53
- // | To update them edit the TypeScript types and run "yarn proptypes" |
53
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
54
54
  // ----------------------------------------------------------------------
55
55
  columnGroupHeaderFocus: PropTypes.shape({
56
56
  depth: PropTypes.number.isRequired,
@@ -33,7 +33,7 @@ const GridFooter = /*#__PURE__*/React.forwardRef(function GridFooter(props, ref)
33
33
  process.env.NODE_ENV !== "production" ? GridFooter.propTypes = {
34
34
  // ----------------------------- Warning --------------------------------
35
35
  // | These PropTypes are generated from the TypeScript type definitions |
36
- // | To update them edit the TypeScript types and run "yarn proptypes" |
36
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
37
37
  // ----------------------------------------------------------------------
38
38
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
39
39
  } : void 0;
@@ -14,7 +14,7 @@ const GridLoadingOverlay = /*#__PURE__*/React.forwardRef(function GridLoadingOve
14
14
  process.env.NODE_ENV !== "production" ? GridLoadingOverlay.propTypes = {
15
15
  // ----------------------------- Warning --------------------------------
16
16
  // | These PropTypes are generated from the TypeScript type definitions |
17
- // | To update them edit the TypeScript types and run "yarn proptypes" |
17
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
18
18
  // ----------------------------------------------------------------------
19
19
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
20
20
  } : void 0;
@@ -16,7 +16,7 @@ const GridNoRowsOverlay = /*#__PURE__*/React.forwardRef(function GridNoRowsOverl
16
16
  process.env.NODE_ENV !== "production" ? GridNoRowsOverlay.propTypes = {
17
17
  // ----------------------------- Warning --------------------------------
18
18
  // | These PropTypes are generated from the TypeScript type definitions |
19
- // | To update them edit the TypeScript types and run "yarn proptypes" |
19
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
20
20
  // ----------------------------------------------------------------------
21
21
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
22
22
  } : void 0;
@@ -135,7 +135,7 @@ const GridPagination = /*#__PURE__*/React.forwardRef(function GridPagination(pro
135
135
  process.env.NODE_ENV !== "production" ? GridPagination.propTypes = {
136
136
  // ----------------------------- Warning --------------------------------
137
137
  // | These PropTypes are generated from the TypeScript type definitions |
138
- // | To update them edit the TypeScript types and run "yarn proptypes" |
138
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
139
139
  // ----------------------------------------------------------------------
140
140
  component: PropTypes.elementType
141
141
  } : void 0;
@@ -354,7 +354,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
354
354
  process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
355
355
  // ----------------------------- Warning --------------------------------
356
356
  // | These PropTypes are generated from the TypeScript type definitions |
357
- // | To update them edit the TypeScript types and run "yarn proptypes" |
357
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
358
358
  // ----------------------------------------------------------------------
359
359
  dimensions: PropTypes.shape({
360
360
  bottomContainerHeight: PropTypes.number.isRequired,
@@ -55,7 +55,7 @@ const GridRowCount = /*#__PURE__*/React.forwardRef(function GridRowCount(props,
55
55
  process.env.NODE_ENV !== "production" ? GridRowCount.propTypes = {
56
56
  // ----------------------------- Warning --------------------------------
57
57
  // | These PropTypes are generated from the TypeScript type definitions |
58
- // | To update them edit the TypeScript types and run "yarn proptypes" |
58
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
59
59
  // ----------------------------------------------------------------------
60
60
  rowCount: PropTypes.number.isRequired,
61
61
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
@@ -1,6 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import PropTypes from 'prop-types';
4
3
  import clsx from 'clsx';
5
4
  import { unstable_composeClasses as composeClasses, unstable_useEventCallback as useEventCallback } from '@mui/utils';
6
5
  import { styled } from '@mui/system';
@@ -139,12 +138,4 @@ function GridScrollAreaRaw(props) {
139
138
  style: style
140
139
  });
141
140
  }
142
- process.env.NODE_ENV !== "production" ? GridScrollAreaRaw.propTypes = {
143
- // ----------------------------- Warning --------------------------------
144
- // | These PropTypes are generated from the TypeScript type definitions |
145
- // | To update them edit the TypeScript types and run "yarn proptypes" |
146
- // ----------------------------------------------------------------------
147
- scrollDirection: PropTypes.oneOf(['left', 'right']).isRequired
148
- } : void 0;
149
- const GridScrollArea = fastMemo(GridScrollAreaRaw);
150
- export { GridScrollArea };
141
+ export const GridScrollArea = fastMemo(GridScrollAreaRaw);
@@ -59,7 +59,7 @@ const GridSelectedRowCount = /*#__PURE__*/React.forwardRef(function GridSelected
59
59
  process.env.NODE_ENV !== "production" ? GridSelectedRowCount.propTypes = {
60
60
  // ----------------------------- Warning --------------------------------
61
61
  // | These PropTypes are generated from the TypeScript type definitions |
62
- // | To update them edit the TypeScript types and run "yarn proptypes" |
62
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
63
63
  // ----------------------------------------------------------------------
64
64
  selectedRowCount: PropTypes.number.isRequired,
65
65
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
@@ -76,7 +76,7 @@ function GridOverlayWrapper(props) {
76
76
  process.env.NODE_ENV !== "production" ? GridOverlayWrapper.propTypes = {
77
77
  // ----------------------------- Warning --------------------------------
78
78
  // | These PropTypes are generated from the TypeScript type definitions |
79
- // | To update them edit the TypeScript types and run "yarn proptypes" |
79
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
80
80
  // ----------------------------------------------------------------------
81
81
  overlayType: PropTypes.string.isRequired
82
82
  } : void 0;
@@ -190,7 +190,7 @@ function GridActionsCell(props) {
190
190
  process.env.NODE_ENV !== "production" ? GridActionsCell.propTypes = {
191
191
  // ----------------------------- Warning --------------------------------
192
192
  // | These PropTypes are generated from the TypeScript type definitions |
193
- // | To update them edit the TypeScript types and run "yarn proptypes" |
193
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
194
194
  // ----------------------------------------------------------------------
195
195
  api: PropTypes.object,
196
196
  /**
@@ -59,7 +59,7 @@ const GridActionsCellItem = /*#__PURE__*/React.forwardRef((props, ref) => {
59
59
  process.env.NODE_ENV !== "production" ? GridActionsCellItem.propTypes = {
60
60
  // ----------------------------- Warning --------------------------------
61
61
  // | These PropTypes are generated from the TypeScript type definitions |
62
- // | To update them edit the TypeScript types and run "yarn proptypes" |
62
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
63
63
  // ----------------------------------------------------------------------
64
64
  /**
65
65
  * from https://mui.com/material-ui/api/button-base/#ButtonBase-prop-component
@@ -40,7 +40,7 @@ function GridBooleanCellRaw(props) {
40
40
  process.env.NODE_ENV !== "production" ? GridBooleanCellRaw.propTypes = {
41
41
  // ----------------------------- Warning --------------------------------
42
42
  // | These PropTypes are generated from the TypeScript type definitions |
43
- // | To update them edit the TypeScript types and run "yarn proptypes" |
43
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
44
44
  // ----------------------------------------------------------------------
45
45
  /**
46
46
  * GridApi that let you manipulate the grid.
@@ -316,7 +316,7 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
316
316
  process.env.NODE_ENV !== "production" ? GridCell.propTypes = {
317
317
  // ----------------------------- Warning --------------------------------
318
318
  // | These PropTypes are generated from the TypeScript type definitions |
319
- // | To update them edit the TypeScript types and run "yarn proptypes" |
319
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
320
320
  // ----------------------------------------------------------------------
321
321
  align: PropTypes.oneOf(['center', 'left', 'right']).isRequired,
322
322
  className: PropTypes.string,
@@ -73,7 +73,7 @@ function GridEditBooleanCell(props) {
73
73
  process.env.NODE_ENV !== "production" ? GridEditBooleanCell.propTypes = {
74
74
  // ----------------------------- Warning --------------------------------
75
75
  // | These PropTypes are generated from the TypeScript type definitions |
76
- // | To update them edit the TypeScript types and run "yarn proptypes" |
76
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
77
77
  // ----------------------------------------------------------------------
78
78
  /**
79
79
  * GridApi that let you manipulate the grid.
@@ -122,7 +122,7 @@ function GridEditDateCell(props) {
122
122
  process.env.NODE_ENV !== "production" ? GridEditDateCell.propTypes = {
123
123
  // ----------------------------- Warning --------------------------------
124
124
  // | These PropTypes are generated from the TypeScript type definitions |
125
- // | To update them edit the TypeScript types and run "yarn proptypes" |
125
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
126
126
  // ----------------------------------------------------------------------
127
127
  /**
128
128
  * GridApi that let you manipulate the grid.
@@ -97,7 +97,7 @@ const GridEditInputCell = /*#__PURE__*/React.forwardRef((props, ref) => {
97
97
  process.env.NODE_ENV !== "production" ? GridEditInputCell.propTypes = {
98
98
  // ----------------------------- Warning --------------------------------
99
99
  // | These PropTypes are generated from the TypeScript type definitions |
100
- // | To update them edit the TypeScript types and run "yarn proptypes" |
100
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
101
101
  // ----------------------------------------------------------------------
102
102
  /**
103
103
  * GridApi that let you manipulate the grid.
@@ -123,7 +123,7 @@ function GridEditSingleSelectCell(props) {
123
123
  process.env.NODE_ENV !== "production" ? GridEditSingleSelectCell.propTypes = {
124
124
  // ----------------------------- Warning --------------------------------
125
125
  // | These PropTypes are generated from the TypeScript type definitions |
126
- // | To update them edit the TypeScript types and run "yarn proptypes" |
126
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
127
127
  // ----------------------------------------------------------------------
128
128
  /**
129
129
  * GridApi that let you manipulate the grid.
@@ -52,7 +52,7 @@ function GridSkeletonCell(props) {
52
52
  process.env.NODE_ENV !== "production" ? GridSkeletonCell.propTypes = {
53
53
  // ----------------------------- Warning --------------------------------
54
54
  // | These PropTypes are generated from the TypeScript type definitions |
55
- // | To update them edit the TypeScript types and run "yarn proptypes" |
55
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
56
56
  // ----------------------------------------------------------------------
57
57
  align: PropTypes.string.isRequired,
58
58
  field: PropTypes.string.isRequired,
@@ -87,7 +87,7 @@ function GridColumnHeaderFilterIconButton(props) {
87
87
  process.env.NODE_ENV !== "production" ? GridColumnHeaderFilterIconButton.propTypes = {
88
88
  // ----------------------------- Warning --------------------------------
89
89
  // | These PropTypes are generated from the TypeScript type definitions |
90
- // | To update them edit the TypeScript types and run "yarn proptypes" |
90
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
91
91
  // ----------------------------------------------------------------------
92
92
  counter: PropTypes.number,
93
93
  field: PropTypes.string.isRequired,
@@ -196,7 +196,7 @@ function GridColumnHeaderItem(props) {
196
196
  process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
197
197
  // ----------------------------- Warning --------------------------------
198
198
  // | These PropTypes are generated from the TypeScript type definitions |
199
- // | To update them edit the TypeScript types and run "yarn proptypes" |
199
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
200
200
  // ----------------------------------------------------------------------
201
201
  colDef: PropTypes.object.isRequired,
202
202
  colIndex: PropTypes.number.isRequired,
@@ -62,7 +62,7 @@ const GridColumnHeaderSeparator = /*#__PURE__*/React.memo(GridColumnHeaderSepara
62
62
  process.env.NODE_ENV !== "production" ? GridColumnHeaderSeparatorRaw.propTypes = {
63
63
  // ----------------------------- Warning --------------------------------
64
64
  // | These PropTypes are generated from the TypeScript type definitions |
65
- // | To update them edit the TypeScript types and run "yarn proptypes" |
65
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
66
66
  // ----------------------------------------------------------------------
67
67
  height: PropTypes.number.isRequired,
68
68
  resizable: PropTypes.bool.isRequired,
@@ -71,7 +71,7 @@ const GridColumnHeaderSortIcon = /*#__PURE__*/React.memo(GridColumnHeaderSortIco
71
71
  process.env.NODE_ENV !== "production" ? GridColumnHeaderSortIconRaw.propTypes = {
72
72
  // ----------------------------- Warning --------------------------------
73
73
  // | These PropTypes are generated from the TypeScript type definitions |
74
- // | To update them edit the TypeScript types and run "yarn proptypes" |
74
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
75
75
  // ----------------------------------------------------------------------
76
76
  direction: PropTypes.oneOf(['asc', 'desc']),
77
77
  disabled: PropTypes.bool,
@@ -74,7 +74,7 @@ function GridColumnHeaderTitle(props) {
74
74
  process.env.NODE_ENV !== "production" ? GridColumnHeaderTitle.propTypes = {
75
75
  // ----------------------------- Warning --------------------------------
76
76
  // | These PropTypes are generated from the TypeScript type definitions |
77
- // | To update them edit the TypeScript types and run "yarn proptypes" |
77
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
78
78
  // ----------------------------------------------------------------------
79
79
  columnWidth: PropTypes.number.isRequired,
80
80
  description: PropTypes.node,
@@ -91,7 +91,7 @@ const GridCellCheckboxForwardRef = /*#__PURE__*/React.forwardRef(function GridCe
91
91
  process.env.NODE_ENV !== "production" ? GridCellCheckboxForwardRef.propTypes = {
92
92
  // ----------------------------- Warning --------------------------------
93
93
  // | These PropTypes are generated from the TypeScript type definitions |
94
- // | To update them edit the TypeScript types and run "yarn proptypes" |
94
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
95
95
  // ----------------------------------------------------------------------
96
96
  /**
97
97
  * GridApi that let you manipulate the grid.
@@ -110,7 +110,7 @@ const GridHeaderCheckbox = /*#__PURE__*/React.forwardRef(function GridHeaderChec
110
110
  process.env.NODE_ENV !== "production" ? GridHeaderCheckbox.propTypes = {
111
111
  // ----------------------------- Warning --------------------------------
112
112
  // | These PropTypes are generated from the TypeScript type definitions |
113
- // | To update them edit the TypeScript types and run "yarn proptypes" |
113
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
114
114
  // ----------------------------------------------------------------------
115
115
  /**
116
116
  * The column of the current header component.
@@ -178,7 +178,7 @@ function GridColumnsManagement(props) {
178
178
  process.env.NODE_ENV !== "production" ? GridColumnsManagement.propTypes = {
179
179
  // ----------------------------- Warning --------------------------------
180
180
  // | These PropTypes are generated from the TypeScript type definitions |
181
- // | To update them edit the TypeScript types and run "yarn proptypes" |
181
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
182
182
  // ----------------------------------------------------------------------
183
183
  /**
184
184
  * If `true`, the column search field will be focused automatically.