@mui/x-data-grid 7.0.0-beta.0 → 7.0.0-beta.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 (68) hide show
  1. package/CHANGELOG.md +247 -0
  2. package/DataGrid/useDataGridComponent.js +1 -1
  3. package/colDef/gridBooleanColDef.js +3 -6
  4. package/colDef/gridCheckboxSelectionColDef.js +4 -3
  5. package/colDef/gridDateColDef.d.ts +3 -4
  6. package/colDef/gridDateColDef.js +10 -16
  7. package/colDef/gridNumericColDef.js +1 -3
  8. package/colDef/gridSingleSelectColDef.js +7 -12
  9. package/components/cell/GridEditInputCell.js +1 -1
  10. package/components/columnsManagement/GridColumnsManagement.d.ts +7 -0
  11. package/components/columnsManagement/GridColumnsManagement.js +26 -21
  12. package/hooks/features/columns/useGridColumnSpanning.js +3 -1
  13. package/hooks/features/editing/useGridCellEditing.js +2 -5
  14. package/hooks/features/editing/useGridRowEditing.js +2 -5
  15. package/hooks/features/filter/gridFilterUtils.js +1 -1
  16. package/hooks/features/rows/useGridParamsApi.d.ts +1 -2
  17. package/hooks/features/rows/useGridParamsApi.js +14 -49
  18. package/index.js +1 -1
  19. package/legacy/DataGrid/useDataGridComponent.js +1 -1
  20. package/legacy/colDef/gridBooleanColDef.js +3 -5
  21. package/legacy/colDef/gridCheckboxSelectionColDef.js +4 -3
  22. package/legacy/colDef/gridDateColDef.js +10 -14
  23. package/legacy/colDef/gridNumericColDef.js +1 -2
  24. package/legacy/colDef/gridSingleSelectColDef.js +7 -10
  25. package/legacy/components/cell/GridEditInputCell.js +1 -1
  26. package/legacy/components/columnsManagement/GridColumnsManagement.js +38 -31
  27. package/legacy/hooks/features/columns/useGridColumnSpanning.js +3 -1
  28. package/legacy/hooks/features/editing/useGridCellEditing.js +2 -5
  29. package/legacy/hooks/features/editing/useGridRowEditing.js +2 -5
  30. package/legacy/hooks/features/filter/gridFilterUtils.js +2 -2
  31. package/legacy/hooks/features/rows/useGridParamsApi.js +14 -47
  32. package/legacy/index.js +1 -1
  33. package/legacy/locales/heIL.js +7 -8
  34. package/locales/heIL.js +7 -8
  35. package/models/colDef/gridColDef.d.ts +11 -17
  36. package/models/colDef/index.d.ts +1 -1
  37. package/models/params/gridCellParams.d.ts +0 -26
  38. package/modern/DataGrid/useDataGridComponent.js +1 -1
  39. package/modern/colDef/gridBooleanColDef.js +3 -6
  40. package/modern/colDef/gridCheckboxSelectionColDef.js +4 -3
  41. package/modern/colDef/gridDateColDef.js +10 -16
  42. package/modern/colDef/gridNumericColDef.js +1 -3
  43. package/modern/colDef/gridSingleSelectColDef.js +7 -12
  44. package/modern/components/cell/GridEditInputCell.js +1 -1
  45. package/modern/components/columnsManagement/GridColumnsManagement.js +26 -21
  46. package/modern/hooks/features/columns/useGridColumnSpanning.js +3 -1
  47. package/modern/hooks/features/editing/useGridCellEditing.js +2 -5
  48. package/modern/hooks/features/editing/useGridRowEditing.js +2 -5
  49. package/modern/hooks/features/filter/gridFilterUtils.js +1 -1
  50. package/modern/hooks/features/rows/useGridParamsApi.js +14 -47
  51. package/modern/index.js +1 -1
  52. package/modern/locales/heIL.js +7 -8
  53. package/node/DataGrid/useDataGridComponent.js +1 -1
  54. package/node/colDef/gridBooleanColDef.js +3 -6
  55. package/node/colDef/gridCheckboxSelectionColDef.js +4 -3
  56. package/node/colDef/gridDateColDef.js +13 -19
  57. package/node/colDef/gridNumericColDef.js +1 -3
  58. package/node/colDef/gridSingleSelectColDef.js +7 -12
  59. package/node/components/cell/GridEditInputCell.js +1 -1
  60. package/node/components/columnsManagement/GridColumnsManagement.js +26 -21
  61. package/node/hooks/features/columns/useGridColumnSpanning.js +3 -1
  62. package/node/hooks/features/editing/useGridCellEditing.js +2 -5
  63. package/node/hooks/features/editing/useGridRowEditing.js +2 -5
  64. package/node/hooks/features/filter/gridFilterUtils.js +1 -1
  65. package/node/hooks/features/rows/useGridParamsApi.js +14 -47
  66. package/node/index.js +1 -1
  67. package/node/locales/heIL.js +7 -8
  68. package/package.json +4 -4
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { GridCellClassNamePropType } from '../gridCellClass';
3
3
  import { GridColumnHeaderClassNamePropType } from '../gridColumnHeaderClass';
4
4
  import type { GridFilterOperator } from '../gridFilterOperator';
5
- import { GridCellParams, GridRenderCellParams, GridRenderEditCellParams, GridValueFormatterParams, GridValueGetterParams, GridValueSetterParams, GridPreProcessEditCellProps } from '../params/gridCellParams';
5
+ import { GridRenderCellParams, GridRenderEditCellParams, GridPreProcessEditCellProps } from '../params/gridCellParams';
6
6
  import { GridColumnHeaderParams } from '../params/gridColumnHeaderParams';
7
7
  import { GridComparatorFn, GridSortDirection } from '../gridSortModel';
8
8
  import { GridColType } from './gridColType';
@@ -26,6 +26,11 @@ export type ValueOptions = string | number | {
26
26
  export type GridKeyValue = string | number | boolean;
27
27
  export type GridApplyQuickFilter<R extends GridValidRowModel = GridValidRowModel, V = any> = (value: V, row: R, column: GridColDef, apiRef: React.MutableRefObject<GridApiCommunity>) => boolean;
28
28
  export type GetApplyQuickFilterFn<R extends GridValidRowModel = GridValidRowModel, V = any> = (value: any, colDef: GridStateColDef<R, V>, apiRef: React.MutableRefObject<GridApiCommunity>) => null | GridApplyQuickFilter<R, V>;
29
+ export type GridValueGetter<R extends GridValidRowModel = GridValidRowModel, V = any, F = V, TValue = never> = (value: TValue, row: R, column: GridColDef<R, V, F>, apiRef: React.MutableRefObject<GridApiCommunity>) => V;
30
+ export type GridValueFormatter<R extends GridValidRowModel = GridValidRowModel, V = any, F = V, TValue = never> = (value: TValue, row: R, column: GridColDef<R, V, F>, apiRef: React.MutableRefObject<GridApiCommunity>) => F;
31
+ export type GridValueSetter<R extends GridValidRowModel = GridValidRowModel, V = any, F = V> = (value: V, row: R, column: GridColDef<R, V, F>, apiRef: React.MutableRefObject<GridApiCommunity>) => R;
32
+ export type GridValueParser<R extends GridValidRowModel = GridValidRowModel, V = any, F = V> = (value: F | undefined, row: R | undefined, column: GridColDef<R, V, F>, apiRef: React.MutableRefObject<GridApiCommunity>) => V;
33
+ export type GridColSpanFn<R extends GridValidRowModel = GridValidRowModel, V = any, F = V> = (value: V, row: R, column: GridColDef<R, V, F>, apiRef: React.MutableRefObject<GridApiCommunity>) => number | undefined;
29
34
  /**
30
35
  * Column Definition base interface.
31
36
  */
@@ -115,34 +120,23 @@ export interface GridBaseColDef<R extends GridValidRowModel = GridValidRowModel,
115
120
  align?: GridAlignment;
116
121
  /**
117
122
  * Function that allows to get a specific data instead of field to render in the cell.
118
- * @template R, V
119
- * @param {GridValueGetterParams<R, any>} params Object containing parameters for the getter.
120
- * @returns {V} The cell value.
121
123
  */
122
- valueGetter?: (params: GridValueGetterParams<R, any>) => V;
124
+ valueGetter?: GridValueGetter<R, V, F>;
123
125
  /**
124
126
  * Function that allows to customize how the entered value is stored in the row.
125
127
  * It only works with cell/row editing.
126
- * @template R, V
127
- * @param {GridValueSetterParams<R, V>} params Object containing parameters for the setter.
128
128
  * @returns {R} The row with the updated field.
129
129
  */
130
- valueSetter?: (params: GridValueSetterParams<R, V>) => R;
130
+ valueSetter?: GridValueSetter<R, V, F>;
131
131
  /**
132
132
  * Function that allows to apply a formatter before rendering its value.
133
- * @template V, F
134
- * @param {GridValueFormatterParams<V>} params Object containing parameters for the formatter.
135
- * @returns {F} The formatted value.
136
133
  */
137
- valueFormatter?: (params: GridValueFormatterParams<V>) => F;
134
+ valueFormatter?: GridValueFormatter<R, V, F>;
138
135
  /**
139
136
  * Function that takes the user-entered value and converts it to a value used internally.
140
- * @template R, V, F
141
- * @param {F | undefined} value The user-entered value.
142
- * @param {GridCellParams<R, V, F>} params The params when called before saving the value.
143
137
  * @returns {V} The converted value to use internally.
144
138
  */
145
- valueParser?: (value: F | undefined, params?: GridCellParams<R, V, F>) => V;
139
+ valueParser?: GridValueParser<R, V, F>;
146
140
  /**
147
141
  * Class name that will be added in cells for that column.
148
142
  */
@@ -224,7 +218,7 @@ export interface GridBaseColDef<R extends GridValidRowModel = GridValidRowModel,
224
218
  * Number of columns a cell should span.
225
219
  * @default 1
226
220
  */
227
- colSpan?: number | ((params: GridCellParams<R, V, F>) => number | undefined);
221
+ colSpan?: number | GridColSpanFn<R, V, F>;
228
222
  }
229
223
  /**
230
224
  * Column Definition interface used for columns with the `actions` type.
@@ -1,3 +1,3 @@
1
- export type { GridAlignment, ValueOptions, GridKeyValue, GridColDef, GridColTypeDef, GridColumnsMeta, GridSingleSelectColDef, GridActionsColDef, GetApplyQuickFilterFn, } from './gridColDef';
1
+ export type { GridAlignment, ValueOptions, GridKeyValue, GridColDef, GridColTypeDef, GridColumnsMeta, GridSingleSelectColDef, GridActionsColDef, GetApplyQuickFilterFn, GridValueGetter, GridValueFormatter, GridValueSetter, GridValueParser, GridColSpanFn, } from './gridColDef';
2
2
  export * from './gridColType';
3
3
  export * from './gridColumnTypesRecord';
@@ -81,32 +81,6 @@ export interface GridRenderEditCellParams<R extends GridValidRowModel = any, V =
81
81
  */
82
82
  api: GridApiCommunity;
83
83
  }
84
- /**
85
- * Parameters passed to `colDef.valueGetter`.
86
- */
87
- export interface GridValueGetterParams<R extends GridValidRowModel = any, V = any, N extends GridTreeNodeWithRender = GridTreeNodeWithRender> extends Omit<GridCellParams<R, V, any, N>, 'formattedValue' | 'isEditable'> {
88
- /**
89
- * GridApi that let you manipulate the grid.
90
- */
91
- api: GridApiCommunity;
92
- /**
93
- * The default value for the cell that the `valueGetter` is overriding.
94
- */
95
- value: GridCellParams<R, V, any>['value'];
96
- }
97
- /**
98
- * Object passed as parameter in the column [[GridColDef]] value setter callback.
99
- */
100
- export interface GridValueSetterParams<R extends GridValidRowModel = any, V = any> {
101
- /**
102
- * The new cell value.
103
- */
104
- value: V;
105
- /**
106
- * The row that is being edited.
107
- */
108
- row: R;
109
- }
110
84
  /**
111
85
  * Object passed as parameter in the column [[GridColDef]] value formatter callback.
112
86
  */
@@ -57,7 +57,7 @@ export const useDataGridComponent = (inputApiRef, props) => {
57
57
  useGridRowSelection(apiRef, props);
58
58
  useGridColumns(apiRef, props);
59
59
  useGridRows(apiRef, props);
60
- useGridParamsApi(apiRef, props);
60
+ useGridParamsApi(apiRef);
61
61
  useGridColumnSpanning(apiRef);
62
62
  useGridColumnGrouping(apiRef, props);
63
63
  useGridEditing(apiRef, props);
@@ -4,12 +4,9 @@ import { renderBooleanCell } from '../components/cell/GridBooleanCell';
4
4
  import { renderEditBooleanCell } from '../components/cell/GridEditBooleanCell';
5
5
  import { gridNumberComparator } from '../hooks/features/sorting/gridSortingUtils';
6
6
  import { getGridBooleanOperators } from './gridBooleanOperators';
7
- function gridBooleanFormatter({
8
- value,
9
- api
10
- }) {
11
- return value ? api.getLocaleText('booleanCellTrueLabel') : api.getLocaleText('booleanCellFalseLabel');
12
- }
7
+ const gridBooleanFormatter = (value, row, column, apiRef) => {
8
+ return value ? apiRef.current.getLocaleText('booleanCellTrueLabel') : apiRef.current.getLocaleText('booleanCellFalseLabel');
9
+ };
13
10
  const stringToBoolean = value => {
14
11
  switch (value.toLowerCase().trim()) {
15
12
  case 'true':
@@ -19,9 +19,10 @@ export const GRID_CHECKBOX_SELECTION_COL_DEF = _extends({}, GRID_BOOLEAN_COL_DEF
19
19
  disableReorder: true,
20
20
  disableExport: true,
21
21
  getApplyQuickFilterFn: undefined,
22
- valueGetter: params => {
23
- const selectionLookup = selectedIdsLookupSelector(params.api.state, params.api.instanceId);
24
- return selectionLookup[params.id] !== undefined;
22
+ valueGetter: (value, row, column, apiRef) => {
23
+ const selectionLookup = selectedIdsLookupSelector(apiRef);
24
+ const rowId = apiRef.current.getRowId(row);
25
+ return selectionLookup[rowId] !== undefined;
25
26
  },
26
27
  renderHeader: params => /*#__PURE__*/_jsx(GridHeaderCheckbox, _extends({}, params)),
27
28
  renderCell: params => /*#__PURE__*/_jsx(GridCellCheckboxRenderer, _extends({}, params))
@@ -13,38 +13,32 @@ function throwIfNotDateObject({
13
13
  throw new Error([`MUI X: \`${columnType}\` column type only accepts \`Date\` objects as values.`, 'Use `valueGetter` to transform the value into a `Date` object.', `Row ID: ${rowId}, field: "${field}".`].join('\n'));
14
14
  }
15
15
  }
16
- export function gridDateFormatter({
17
- value,
18
- field,
19
- id
20
- }) {
16
+ export const gridDateFormatter = (value, row, column, apiRef) => {
21
17
  if (!value) {
22
18
  return '';
23
19
  }
20
+ const rowId = apiRef.current.getRowId(row);
24
21
  throwIfNotDateObject({
25
22
  value,
26
23
  columnType: 'date',
27
- rowId: id,
28
- field
24
+ rowId,
25
+ field: column.field
29
26
  });
30
27
  return value.toLocaleDateString();
31
- }
32
- export function gridDateTimeFormatter({
33
- value,
34
- field,
35
- id
36
- }) {
28
+ };
29
+ export const gridDateTimeFormatter = (value, row, column, apiRef) => {
37
30
  if (!value) {
38
31
  return '';
39
32
  }
33
+ const rowId = apiRef.current.getRowId(row);
40
34
  throwIfNotDateObject({
41
35
  value,
42
36
  columnType: 'dateTime',
43
- rowId: id,
44
- field
37
+ rowId,
38
+ field: column.field
45
39
  });
46
40
  return value.toLocaleString();
47
- }
41
+ };
48
42
  export const GRID_DATE_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
49
43
  type: 'date',
50
44
  sortComparator: gridDateComparator,
@@ -9,9 +9,7 @@ export const GRID_NUMERIC_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
9
9
  headerAlign: 'right',
10
10
  sortComparator: gridNumberComparator,
11
11
  valueParser: value => value === '' ? null : Number(value),
12
- valueFormatter: ({
13
- value
14
- }) => isNumber(value) ? value.toLocaleString() : value || '',
12
+ valueFormatter: value => isNumber(value) ? value.toLocaleString() : value || '',
15
13
  filterOperators: getGridNumericOperators(),
16
14
  getApplyQuickFilterFn: getGridNumericQuickFilterFn
17
15
  });
@@ -17,20 +17,15 @@ export const GRID_SINGLE_SELECT_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
17
17
  type: 'singleSelect',
18
18
  getOptionLabel: defaultGetOptionLabel,
19
19
  getOptionValue: defaultGetOptionValue,
20
- valueFormatter(params) {
21
- const {
22
- id,
23
- field,
24
- value,
25
- api
26
- } = params;
27
- const colDef = params.api.getColumn(field);
20
+ valueFormatter(value, row, colDef, apiRef) {
21
+ // const { id, field, value, api } = params;
22
+ const rowId = apiRef.current.getRowId(row);
28
23
  if (!isSingleSelectColDef(colDef)) {
29
24
  return '';
30
25
  }
31
26
  const valueOptions = getValueOptions(colDef, {
32
- id,
33
- row: id ? api.getRow(id) : null
27
+ id: rowId,
28
+ row
34
29
  });
35
30
  if (value == null) {
36
31
  return '';
@@ -47,8 +42,8 @@ export const GRID_SINGLE_SELECT_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
47
42
  renderEditCell: renderEditSingleSelectCell,
48
43
  filterOperators: getGridSingleSelectOperators(),
49
44
  // @ts-ignore
50
- pastedValueParser: (value, params) => {
51
- const colDef = params.colDef;
45
+ pastedValueParser: (value, row, column) => {
46
+ const colDef = column;
52
47
  const valueOptions = getValueOptions(colDef) || [];
53
48
  const getOptionValue = colDef.getOptionValue;
54
49
  const valueOption = valueOptions.find(option => {
@@ -57,7 +57,7 @@ const GridEditInputCell = /*#__PURE__*/React.forwardRef((props, ref) => {
57
57
  const column = apiRef.current.getColumn(field);
58
58
  let parsedValue = newValue;
59
59
  if (column.valueParser) {
60
- parsedValue = column.valueParser(newValue, apiRef.current.getCellParams(id, field));
60
+ parsedValue = column.valueParser(newValue, apiRef.current.getRow(id), column, apiRef);
61
61
  }
62
62
  setValueState(parsedValue);
63
63
  apiRef.current.setEditCellValue({
@@ -42,6 +42,7 @@ function GridColumnsManagement(props) {
42
42
  autoFocusSearchField = true,
43
43
  disableShowHideToggle = false,
44
44
  disableResetButton = false,
45
+ toggleAllMode = 'all',
45
46
  getTogglableColumns
46
47
  } = props;
47
48
  const isResetDisabled = React.useMemo(() => checkColumnVisibilityModelsSame(columnVisibilityModel, initialColumnVisibilityModel), [columnVisibilityModel, initialColumnVisibilityModel]);
@@ -61,11 +62,21 @@ function GridColumnsManagement(props) {
61
62
  } = event.target;
62
63
  apiRef.current.setColumnVisibility(field, columnVisibilityModel[field] === false);
63
64
  };
65
+ const currentColumns = React.useMemo(() => {
66
+ const togglableColumns = getTogglableColumns ? getTogglableColumns(sortedColumns) : null;
67
+ const togglableSortedColumns = togglableColumns ? sortedColumns.filter(({
68
+ field
69
+ }) => togglableColumns.includes(field)) : sortedColumns;
70
+ if (!searchValue) {
71
+ return togglableSortedColumns;
72
+ }
73
+ return togglableSortedColumns.filter(column => searchPredicate(column, searchValue.toLowerCase()));
74
+ }, [sortedColumns, searchValue, searchPredicate, getTogglableColumns]);
64
75
  const toggleAllColumns = React.useCallback(isVisible => {
65
76
  const currentModel = gridColumnVisibilityModelSelector(apiRef);
66
77
  const newModel = _extends({}, currentModel);
67
78
  const togglableColumns = getTogglableColumns ? getTogglableColumns(columns) : null;
68
- columns.forEach(col => {
79
+ (toggleAllMode === 'filteredOnly' ? currentColumns : columns).forEach(col => {
69
80
  if (col.hideable && (togglableColumns == null || togglableColumns.includes(col.field))) {
70
81
  if (isVisible) {
71
82
  // delete the key from the model instead of setting it to `true`
@@ -76,20 +87,10 @@ function GridColumnsManagement(props) {
76
87
  }
77
88
  });
78
89
  return apiRef.current.setColumnVisibilityModel(newModel);
79
- }, [apiRef, columns, getTogglableColumns]);
90
+ }, [apiRef, columns, getTogglableColumns, toggleAllMode, currentColumns]);
80
91
  const handleSearchValueChange = React.useCallback(event => {
81
92
  setSearchValue(event.target.value);
82
93
  }, []);
83
- const currentColumns = React.useMemo(() => {
84
- const togglableColumns = getTogglableColumns ? getTogglableColumns(sortedColumns) : null;
85
- const togglableSortedColumns = togglableColumns ? sortedColumns.filter(({
86
- field
87
- }) => togglableColumns.includes(field)) : sortedColumns;
88
- if (!searchValue) {
89
- return togglableSortedColumns;
90
- }
91
- return togglableSortedColumns.filter(column => searchPredicate(column, searchValue.toLowerCase()));
92
- }, [sortedColumns, searchValue, searchPredicate, getTogglableColumns]);
93
94
  const hideableColumns = React.useMemo(() => currentColumns.filter(col => col.hideable), [currentColumns]);
94
95
  const allHideableColumnsVisible = React.useMemo(() => hideableColumns.every(column => columnVisibilityModel[column.field] == null || columnVisibilityModel[column.field] !== false), [columnVisibilityModel, hideableColumns]);
95
96
  const allHideableColumnsHidden = React.useMemo(() => hideableColumns.every(column => columnVisibilityModel[column.field] === false), [columnVisibilityModel, hideableColumns]);
@@ -160,14 +161,11 @@ function GridColumnsManagement(props) {
160
161
  checked: allHideableColumnsVisible,
161
162
  indeterminate: !allHideableColumnsVisible && !allHideableColumnsHidden,
162
163
  onClick: () => toggleAllColumns(!allHideableColumnsVisible),
163
- name: apiRef.current.getLocaleText('columnsManagementShowHideAllText')
164
- }, rootProps.slotProps?.baseCheckbox)),
165
- sx: {
166
- [`.MuiFormControlLabel-label`]: {
167
- textTransform: 'uppercase',
168
- fontSize: '14px'
164
+ name: apiRef.current.getLocaleText('columnsManagementShowHideAllText'),
165
+ sx: {
166
+ p: 0.5
169
167
  }
170
- },
168
+ }, rootProps.slotProps?.baseCheckbox)),
171
169
  label: apiRef.current.getLocaleText('columnsManagementShowHideAllText')
172
170
  }) : /*#__PURE__*/_jsx("span", {}), !disableResetButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
173
171
  onClick: () => apiRef.current.setColumnVisibilityModel(initialColumnVisibilityModel),
@@ -209,7 +207,14 @@ process.env.NODE_ENV !== "production" ? GridColumnsManagement.propTypes = {
209
207
  */
210
208
  getTogglableColumns: PropTypes.func,
211
209
  searchPredicate: PropTypes.func,
212
- sort: PropTypes.oneOf(['asc', 'desc'])
210
+ sort: PropTypes.oneOf(['asc', 'desc']),
211
+ /**
212
+ * Changes the behavior of the `Show/Hide All` toggle when the search field is used:
213
+ * - `all`: Will toggle all columns.
214
+ * - `filteredOnly`: Will only toggle columns that match the search criteria.
215
+ * @default 'all'
216
+ */
217
+ toggleAllMode: PropTypes.oneOf(['all', 'filteredOnly'])
213
218
  } : void 0;
214
219
  const GridColumnsManagementBody = styled('div', {
215
220
  name: 'MuiDataGrid',
@@ -242,7 +247,7 @@ const GridColumnsManagementFooter = styled('div', {
242
247
  })(({
243
248
  theme
244
249
  }) => ({
245
- padding: theme.spacing(0.5, 1, 0.5, 2.4),
250
+ padding: theme.spacing(0.5, 1, 0.5, 3),
246
251
  display: 'flex',
247
252
  justifyContent: 'space-between',
248
253
  borderTop: `1px solid ${theme.palette.divider}`
@@ -59,7 +59,9 @@ function calculateCellColSpan(params) {
59
59
  } = params;
60
60
  const columnsLength = columns.length;
61
61
  const column = columns[columnIndex];
62
- const colSpan = typeof column.colSpan === 'function' ? column.colSpan(apiRef.current.getCellParams(rowId, column.field)) : column.colSpan;
62
+ const row = apiRef.current.getRow(rowId);
63
+ const value = apiRef.current.getRowValue(row, column);
64
+ const colSpan = typeof column.colSpan === 'function' ? column.colSpan(value, row, column, apiRef) : column.colSpan;
63
65
  if (!colSpan || colSpan === 1) {
64
66
  setCellColSpanInfo(lookup, rowId, columnIndex, {
65
67
  spannedByColSpan: false,
@@ -334,7 +334,7 @@ export const useGridCellEditing = (apiRef, props) => {
334
334
  const row = apiRef.current.getRow(id);
335
335
  let parsedValue = value;
336
336
  if (column.valueParser && !skipValueParser) {
337
- parsedValue = column.valueParser(value, apiRef.current.getCellParams(id, field));
337
+ parsedValue = column.valueParser(value, row, column, apiRef);
338
338
  }
339
339
  let editingState = gridEditRowsStateSelector(apiRef.current.state);
340
340
  let newProps = _extends({}, editingState[id][field], {
@@ -382,10 +382,7 @@ export const useGridCellEditing = (apiRef, props) => {
382
382
  const {
383
383
  value
384
384
  } = editingState[id][field];
385
- return column.valueSetter ? column.valueSetter({
386
- value,
387
- row
388
- }) : _extends({}, row, {
385
+ return column.valueSetter ? column.valueSetter(value, row, column, apiRef) : _extends({}, row, {
389
386
  [field]: value
390
387
  });
391
388
  }, [apiRef]);
@@ -409,7 +409,7 @@ export const useGridRowEditing = (apiRef, props) => {
409
409
  const row = apiRef.current.getRow(id);
410
410
  let parsedValue = value;
411
411
  if (column.valueParser && !skipValueParser) {
412
- parsedValue = column.valueParser(value, apiRef.current.getCellParams(id, field));
412
+ parsedValue = column.valueParser(value, row, column, apiRef);
413
413
  }
414
414
  let editingState = gridEditRowsStateSelector(apiRef.current.state);
415
415
  let newProps = _extends({}, editingState[id][field], {
@@ -509,10 +509,7 @@ export const useGridRowEditing = (apiRef, props) => {
509
509
  Object.entries(editingState[id]).forEach(([field, fieldProps]) => {
510
510
  const column = apiRef.current.getColumn(field);
511
511
  if (column.valueSetter) {
512
- rowUpdate = column.valueSetter({
513
- value: fieldProps.value,
514
- row: rowUpdate
515
- });
512
+ rowUpdate = column.valueSetter(fieldProps.value, rowUpdate, column, apiRef);
516
513
  } else {
517
514
  rowUpdate[field] = fieldProps.value;
518
515
  }
@@ -88,7 +88,7 @@ const getFilterCallbackFromItem = (filterItem, apiRef) => {
88
88
  let parsedValue;
89
89
  if (column.valueParser) {
90
90
  const parser = column.valueParser;
91
- parsedValue = Array.isArray(filterItem.value) ? filterItem.value?.map(x => parser(x)) : parser(filterItem.value);
91
+ parsedValue = Array.isArray(filterItem.value) ? filterItem.value?.map(x => parser(x, undefined, column, apiRef)) : parser(filterItem.value, undefined, column, apiRef);
92
92
  } else {
93
93
  parsedValue = filterItem.value;
94
94
  }
@@ -1,6 +1,5 @@
1
1
  import * as React from 'react';
2
2
  import { getGridCellElement, getGridColumnHeaderElement, getGridRowElement } from '../../../utils/domUtils';
3
- import { GRID_ID_AUTOGENERATED } from './gridRowsUtils';
4
3
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
5
4
  import { gridFocusCellSelector, gridTabIndexCellSelector } from '../focus/gridFocusStateSelector';
6
5
  export class MissingRowIdError extends Error {}
@@ -13,10 +12,7 @@ export class MissingRowIdError extends Error {}
13
12
  * TODO: Impossible priority - useGridEditing also needs to be after useGridParamsApi
14
13
  * TODO: Impossible priority - useGridFocus also needs to be after useGridParamsApi
15
14
  */
16
- export function useGridParamsApi(apiRef, props) {
17
- const {
18
- getRowId
19
- } = props;
15
+ export function useGridParamsApi(apiRef) {
20
16
  const getColumnHeaderParams = React.useCallback(field => ({
21
17
  field,
22
18
  colDef: apiRef.current.getColumn(field)
@@ -33,28 +29,6 @@ export function useGridParamsApi(apiRef, props) {
33
29
  };
34
30
  return params;
35
31
  }, [apiRef]);
36
- const getBaseCellParams = React.useCallback((id, field) => {
37
- const row = apiRef.current.getRow(id);
38
- const rowNode = apiRef.current.getRowNode(id);
39
- if (!row || !rowNode) {
40
- throw new MissingRowIdError(`No row with id #${id} found`);
41
- }
42
- const cellFocus = gridFocusCellSelector(apiRef);
43
- const cellTabIndex = gridTabIndexCellSelector(apiRef);
44
- const params = {
45
- id,
46
- field,
47
- row,
48
- rowNode,
49
- value: row[field],
50
- colDef: apiRef.current.getColumn(field),
51
- cellMode: apiRef.current.getCellMode(id, field),
52
- api: apiRef.current,
53
- hasFocus: cellFocus !== null && cellFocus.field === field && cellFocus.id === id,
54
- tabIndex: cellTabIndex && cellTabIndex.field === field && cellTabIndex.id === id ? 0 : -1
55
- };
56
- return params;
57
- }, [apiRef]);
58
32
  const getCellParams = React.useCallback((id, field) => {
59
33
  const colDef = apiRef.current.getColumn(field);
60
34
  const value = apiRef.current.getCellValue(id, field);
@@ -79,12 +53,7 @@ export function useGridParamsApi(apiRef, props) {
79
53
  isEditable: false
80
54
  };
81
55
  if (colDef && colDef.valueFormatter) {
82
- params.formattedValue = colDef.valueFormatter({
83
- id,
84
- field: params.field,
85
- value: params.value,
86
- api: apiRef.current
87
- });
56
+ params.formattedValue = colDef.valueFormatter(value, row, colDef, apiRef);
88
57
  }
89
58
  params.isEditable = colDef && apiRef.current.isCellEditable(params);
90
59
  return params;
@@ -98,30 +67,28 @@ export function useGridParamsApi(apiRef, props) {
98
67
  }
99
68
  return rowModel[field];
100
69
  }
101
- return colDef.valueGetter(getBaseCellParams(id, field));
102
- }, [apiRef, getBaseCellParams]);
70
+ const row = apiRef.current.getRow(id);
71
+ if (!row) {
72
+ throw new MissingRowIdError(`No row with id #${id} found`);
73
+ }
74
+ const value = row[colDef.field];
75
+ return colDef.valueGetter(value, row, colDef, apiRef);
76
+ }, [apiRef]);
103
77
  const getRowValue = React.useCallback((row, colDef) => {
104
- const id = GRID_ID_AUTOGENERATED in row ? row[GRID_ID_AUTOGENERATED] : getRowId?.(row) ?? row.id;
105
78
  const field = colDef.field;
106
79
  if (!colDef || !colDef.valueGetter) {
107
80
  return row[field];
108
81
  }
109
- return colDef.valueGetter(getBaseCellParams(id, field));
110
- }, [getBaseCellParams, getRowId]);
82
+ const value = row[colDef.field];
83
+ return colDef.valueGetter(value, row, colDef, apiRef);
84
+ }, [apiRef]);
111
85
  const getRowFormattedValue = React.useCallback((row, colDef) => {
112
86
  const value = getRowValue(row, colDef);
113
87
  if (!colDef || !colDef.valueFormatter) {
114
88
  return value;
115
89
  }
116
- const id = (getRowId ? getRowId(row) : row.id) ?? row[GRID_ID_AUTOGENERATED];
117
- const field = colDef.field;
118
- return colDef.valueFormatter({
119
- id,
120
- field,
121
- value,
122
- api: apiRef.current
123
- });
124
- }, [apiRef, getRowId, getRowValue]);
90
+ return colDef.valueFormatter(value, row, colDef, apiRef);
91
+ }, [apiRef, getRowValue]);
125
92
  const getColumnHeaderElement = React.useCallback(field => {
126
93
  if (!apiRef.current.rootElementRef.current) {
127
94
  return null;
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v7.0.0-beta.0
2
+ * @mui/x-data-grid v7.0.0-beta.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -59,13 +59,12 @@ const heILGrid = {
59
59
  filterOperatorIsEmpty: 'ריק',
60
60
  filterOperatorIsNotEmpty: 'אינו ריק',
61
61
  filterOperatorIsAnyOf: 'הוא אחד מ-',
62
- // 'filterOperator=': '=',
63
- // 'filterOperator!=': '!=',
64
- // 'filterOperator>': '>',
65
- // 'filterOperator>=': '>=',
66
- // 'filterOperator<': '<',
67
- // 'filterOperator<=': '<=',
68
-
62
+ 'filterOperator=': '=',
63
+ 'filterOperator!=': '!=',
64
+ 'filterOperator>': '>',
65
+ 'filterOperator>=': '>=',
66
+ 'filterOperator<': '<',
67
+ 'filterOperator<=': '<=',
69
68
  // Header filter operators text
70
69
  headerFilterOperatorContains: 'מכיל',
71
70
  headerFilterOperatorEquals: 'שווה',
@@ -133,7 +132,7 @@ const heILGrid = {
133
132
  groupColumn: name => `קבץ לפי ${name}`,
134
133
  unGroupColumn: name => `הפסק לקבץ לפי ${name}`,
135
134
  // Master/detail
136
- // detailPanelToggle: 'Detail panel toggle',
135
+ detailPanelToggle: 'הצג/הסתר פרטים',
137
136
  expandDetailPanel: 'הרחב',
138
137
  collapseDetailPanel: 'כווץ',
139
138
  // Row reordering text
@@ -63,7 +63,7 @@ const useDataGridComponent = (inputApiRef, props) => {
63
63
  (0, _useGridRowSelection.useGridRowSelection)(apiRef, props);
64
64
  (0, _useGridColumns.useGridColumns)(apiRef, props);
65
65
  (0, _useGridRows.useGridRows)(apiRef, props);
66
- (0, _useGridParamsApi.useGridParamsApi)(apiRef, props);
66
+ (0, _useGridParamsApi.useGridParamsApi)(apiRef);
67
67
  (0, _useGridColumnSpanning.useGridColumnSpanning)(apiRef);
68
68
  (0, _useGridColumnGrouping.useGridColumnGrouping)(apiRef, props);
69
69
  (0, _useGridEditing.useGridEditing)(apiRef, props);
@@ -11,12 +11,9 @@ var _GridBooleanCell = require("../components/cell/GridBooleanCell");
11
11
  var _GridEditBooleanCell = require("../components/cell/GridEditBooleanCell");
12
12
  var _gridSortingUtils = require("../hooks/features/sorting/gridSortingUtils");
13
13
  var _gridBooleanOperators = require("./gridBooleanOperators");
14
- function gridBooleanFormatter({
15
- value,
16
- api
17
- }) {
18
- return value ? api.getLocaleText('booleanCellTrueLabel') : api.getLocaleText('booleanCellFalseLabel');
19
- }
14
+ const gridBooleanFormatter = (value, row, column, apiRef) => {
15
+ return value ? apiRef.current.getLocaleText('booleanCellTrueLabel') : apiRef.current.getLocaleText('booleanCellFalseLabel');
16
+ };
20
17
  const stringToBoolean = value => {
21
18
  switch (value.toLowerCase().trim()) {
22
19
  case 'true':
@@ -28,9 +28,10 @@ const GRID_CHECKBOX_SELECTION_COL_DEF = exports.GRID_CHECKBOX_SELECTION_COL_DEF
28
28
  disableReorder: true,
29
29
  disableExport: true,
30
30
  getApplyQuickFilterFn: undefined,
31
- valueGetter: params => {
32
- const selectionLookup = (0, _gridRowSelectionSelector.selectedIdsLookupSelector)(params.api.state, params.api.instanceId);
33
- return selectionLookup[params.id] !== undefined;
31
+ valueGetter: (value, row, column, apiRef) => {
32
+ const selectionLookup = (0, _gridRowSelectionSelector.selectedIdsLookupSelector)(apiRef);
33
+ const rowId = apiRef.current.getRowId(row);
34
+ return selectionLookup[rowId] !== undefined;
34
35
  },
35
36
  renderHeader: params => /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridHeaderCheckbox.GridHeaderCheckbox, (0, _extends2.default)({}, params)),
36
37
  renderCell: params => /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridCellCheckboxRenderer.GridCellCheckboxRenderer, (0, _extends2.default)({}, params))