@mui/x-data-grid 5.17.22 → 5.17.23

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,40 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 5.17.23
7
+
8
+ _Feb 9, 2023_
9
+
10
+ We'd like to offer a big thanks to the 6 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - 🌍 Improve Brazilian Portuguese (pt-BR) locale
13
+ - 🎉 Add banner and callouts to inform about MUI X v6 beta
14
+ - 🐞 Bugfixes
15
+
16
+ ### `@mui/x-data-grid@v5.17.23` / `@mui/x-data-grid-pro@v5.17.23` / `@mui/x-data-grid-premium@v5.17.23`
17
+
18
+ #### Changes
19
+
20
+ - [DataGrid] Allow to customize the value displayed in the filter button tooltip (#7816) @ithrforu
21
+ - [DataGrid] Fix `getCellElement` method not working with pinned columns (#7844) @yaredtsy
22
+ - [DataGrid] Fix stale rows issue in `unstable_replaceRows` (#7694) @MBilalShafi
23
+ - [l10n] Improve Brazilian Portuguese (pt-BR) locale (#7850) @ed-ateixeira
24
+
25
+ ### `@mui/x-date-pickers@v_5.0.18` / `@mui/x-date-pickers-pro@v_5.0.18`
26
+
27
+ #### Changes
28
+
29
+ - [pickers] Update pickers when new value has a distinct timezone (#7853) @alexfauquette
30
+
31
+ ### Docs
32
+
33
+ - [docs] Add messages in v5 doc to inform people about v6 (#7838) @flaviendelangle
34
+ - [docs] Fix 301 link @oliviertassinari
35
+
36
+ ### Core
37
+
38
+ - [core] Upgrade monorepo (#7849) @cherniavskii
39
+
6
40
  ## v5.17.22
7
41
 
8
42
  _Feb 2, 2023_
@@ -67,18 +67,21 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
67
67
 
68
68
  const getOperatorLabel = item => lookup[item.columnField].filterOperators.find(operator => operator.value === item.operatorValue).label || apiRef.current.getLocaleText(`filterOperator${capitalize(item.operatorValue)}`).toString();
69
69
 
70
+ const getFilterItemValue = item => {
71
+ const {
72
+ getValueAsString
73
+ } = lookup[item.columnField].filterOperators.find(operator => operator.value === item.operatorValue);
74
+ return getValueAsString ? getValueAsString(item.value) : item.value;
75
+ };
76
+
70
77
  return /*#__PURE__*/_jsxs("div", {
71
78
  children: [apiRef.current.getLocaleText('toolbarFiltersTooltipActive')(activeFilters.length), /*#__PURE__*/_jsx(GridToolbarFilterListRoot, {
72
79
  className: classes.root,
73
- children: activeFilters.map((item, index) => {
74
- var _item$value;
75
-
76
- return _extends({}, lookup[item.columnField] && /*#__PURE__*/_jsx("li", {
77
- children: `${lookup[item.columnField].headerName || item.columnField}
80
+ children: activeFilters.map((item, index) => _extends({}, lookup[item.columnField] && /*#__PURE__*/_jsx("li", {
81
+ children: `${lookup[item.columnField].headerName || item.columnField}
78
82
  ${getOperatorLabel(item)}
79
- ${(_item$value = item.value) != null ? _item$value : ''}`
80
- }, index));
81
- })
83
+ ${item.value ? getFilterItemValue(item) : ''}`
84
+ }, index)))
82
85
  })]
83
86
  });
84
87
  }, [apiRef, preferencePanel.open, activeFilters, lookup, classes]);
@@ -299,14 +299,19 @@ export const useGridRows = (apiRef, props) => {
299
299
  apiRef.current.unstable_caches.rows.idRowsLookup = updatedIdRowsLookup;
300
300
  apiRef.current.unstable_caches.rows.idToIdLookup = updatedIdToIdLookup;
301
301
  apiRef.current.unstable_caches.rows.ids = updatedRows;
302
- apiRef.current.setState(state => _extends({}, state, {
303
- rows: _extends({}, state.rows, {
302
+ apiRef.current.setState(state => {
303
+ const newRowsState = {
304
304
  idRowsLookup: updatedIdRowsLookup,
305
305
  idToIdLookup: updatedIdToIdLookup,
306
306
  tree: updatedTree,
307
307
  ids: updatedRows
308
- })
309
- }));
308
+ };
309
+ return _extends({}, state, {
310
+ rows: _extends({}, state.rows, newRowsState, {
311
+ groupingResponseBeforeRowHydration: _extends({}, state.rows.groupingResponseBeforeRowHydration, newRowsState)
312
+ })
313
+ });
314
+ });
310
315
  apiRef.current.publishEvent('rowsSet');
311
316
  }, [apiRef, props.signature, props.getRowId]);
312
317
  const rowApi = {
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI X v5.17.22
1
+ /** @license MUI X v5.17.23
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -71,14 +71,21 @@ var GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolbar
71
71
  }).label || apiRef.current.getLocaleText("filterOperator".concat(capitalize(item.operatorValue))).toString();
72
72
  };
73
73
 
74
+ var getFilterItemValue = function getFilterItemValue(item) {
75
+ var _ref2 = lookup[item.columnField].filterOperators.find(function (operator) {
76
+ return operator.value === item.operatorValue;
77
+ }),
78
+ getValueAsString = _ref2.getValueAsString;
79
+
80
+ return getValueAsString ? getValueAsString(item.value) : item.value;
81
+ };
82
+
74
83
  return /*#__PURE__*/_jsxs("div", {
75
84
  children: [apiRef.current.getLocaleText('toolbarFiltersTooltipActive')(activeFilters.length), /*#__PURE__*/_jsx(GridToolbarFilterListRoot, {
76
85
  className: classes.root,
77
86
  children: activeFilters.map(function (item, index) {
78
- var _item$value;
79
-
80
87
  return _extends({}, lookup[item.columnField] && /*#__PURE__*/_jsx("li", {
81
- children: "".concat(lookup[item.columnField].headerName || item.columnField, "\n ").concat(getOperatorLabel(item), "\n ").concat((_item$value = item.value) != null ? _item$value : '')
88
+ children: "".concat(lookup[item.columnField].headerName || item.columnField, "\n ").concat(getOperatorLabel(item), "\n ").concat(item.value ? getFilterItemValue(item) : '')
82
89
  }, index));
83
90
  })
84
91
  })]
@@ -329,12 +329,15 @@ export var useGridRows = function useGridRows(apiRef, props) {
329
329
  apiRef.current.unstable_caches.rows.idToIdLookup = updatedIdToIdLookup;
330
330
  apiRef.current.unstable_caches.rows.ids = updatedRows;
331
331
  apiRef.current.setState(function (state) {
332
+ var newRowsState = {
333
+ idRowsLookup: updatedIdRowsLookup,
334
+ idToIdLookup: updatedIdToIdLookup,
335
+ tree: updatedTree,
336
+ ids: updatedRows
337
+ };
332
338
  return _extends({}, state, {
333
- rows: _extends({}, state.rows, {
334
- idRowsLookup: updatedIdRowsLookup,
335
- idToIdLookup: updatedIdToIdLookup,
336
- tree: updatedTree,
337
- ids: updatedRows
339
+ rows: _extends({}, state.rows, newRowsState, {
340
+ groupingResponseBeforeRowHydration: _extends({}, state.rows.groupingResponseBeforeRowHydration, newRowsState)
338
341
  })
339
342
  });
340
343
  });
package/legacy/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI X v5.17.22
1
+ /** @license MUI X v5.17.23
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -27,17 +27,19 @@ function escapeOperandAttributeSelector(operand) {
27
27
  export function getGridColumnHeaderElement(root, field) {
28
28
  return root.querySelector("[role=\"columnheader\"][data-field=\"".concat(escapeOperandAttributeSelector(field), "\"]"));
29
29
  }
30
+
31
+ function getGridRowElementSelector(id) {
32
+ return ".".concat(gridClasses.row, "[data-id=\"").concat(escapeOperandAttributeSelector(String(id)), "\"]");
33
+ }
34
+
30
35
  export function getGridRowElement(root, id) {
31
- return root.querySelector(".".concat(gridClasses.row, "[data-id=\"").concat(escapeOperandAttributeSelector(String(id)), "\"]"));
36
+ return root.querySelector(getGridRowElementSelector(id));
32
37
  }
33
38
  export function getGridCellElement(root, _ref) {
34
39
  var id = _ref.id,
35
40
  field = _ref.field;
36
- var row = getGridRowElement(root, id);
37
-
38
- if (!row) {
39
- return null;
40
- }
41
-
42
- return row.querySelector(".".concat(gridClasses.cell, "[data-field=\"").concat(escapeOperandAttributeSelector(field), "\"]"));
41
+ var rowSelector = getGridRowElementSelector(id);
42
+ var cellSelector = ".".concat(gridClasses.cell, "[data-field=\"").concat(escapeOperandAttributeSelector(field), "\"]");
43
+ var selector = "".concat(rowSelector, " ").concat(cellSelector);
44
+ return root.querySelector(selector);
43
45
  }
@@ -35,6 +35,12 @@ export interface GridFilterOperator<R extends GridValidRowModel = any, V = any,
35
35
  * The props to pass to the input component in the filter panel for this filter operator.
36
36
  */
37
37
  InputComponentProps?: Record<string, any>;
38
+ /**
39
+ * Converts the value of a filter item to a human-readable form.
40
+ * @param {GridFilterItem['value']} value The filter item value.
41
+ * @returns {string} The value formatted to be displayed in the UI of filter button tooltip.
42
+ */
43
+ getValueAsString?: (value: GridFilterItem['value']) => string;
38
44
  /**
39
45
  * If `false`, filter operator doesn't require user-entered value to work.
40
46
  * Usually should be set to `false` for filter operators that don't have `InputComponent` (for example `isEmpty`)
@@ -65,13 +65,20 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
65
65
 
66
66
  const getOperatorLabel = item => lookup[item.columnField].filterOperators.find(operator => operator.value === item.operatorValue).label || apiRef.current.getLocaleText(`filterOperator${capitalize(item.operatorValue)}`).toString();
67
67
 
68
+ const getFilterItemValue = item => {
69
+ const {
70
+ getValueAsString
71
+ } = lookup[item.columnField].filterOperators.find(operator => operator.value === item.operatorValue);
72
+ return getValueAsString ? getValueAsString(item.value) : item.value;
73
+ };
74
+
68
75
  return /*#__PURE__*/_jsxs("div", {
69
76
  children: [apiRef.current.getLocaleText('toolbarFiltersTooltipActive')(activeFilters.length), /*#__PURE__*/_jsx(GridToolbarFilterListRoot, {
70
77
  className: classes.root,
71
78
  children: activeFilters.map((item, index) => _extends({}, lookup[item.columnField] && /*#__PURE__*/_jsx("li", {
72
79
  children: `${lookup[item.columnField].headerName || item.columnField}
73
80
  ${getOperatorLabel(item)}
74
- ${item.value ?? ''}`
81
+ ${item.value ? getFilterItemValue(item) : ''}`
75
82
  }, index)))
76
83
  })]
77
84
  });
@@ -291,14 +291,19 @@ export const useGridRows = (apiRef, props) => {
291
291
  apiRef.current.unstable_caches.rows.idRowsLookup = updatedIdRowsLookup;
292
292
  apiRef.current.unstable_caches.rows.idToIdLookup = updatedIdToIdLookup;
293
293
  apiRef.current.unstable_caches.rows.ids = updatedRows;
294
- apiRef.current.setState(state => _extends({}, state, {
295
- rows: _extends({}, state.rows, {
294
+ apiRef.current.setState(state => {
295
+ const newRowsState = {
296
296
  idRowsLookup: updatedIdRowsLookup,
297
297
  idToIdLookup: updatedIdToIdLookup,
298
298
  tree: updatedTree,
299
299
  ids: updatedRows
300
- })
301
- }));
300
+ };
301
+ return _extends({}, state, {
302
+ rows: _extends({}, state.rows, newRowsState, {
303
+ groupingResponseBeforeRowHydration: _extends({}, state.rows.groupingResponseBeforeRowHydration, newRowsState)
304
+ })
305
+ });
306
+ });
302
307
  apiRef.current.publishEvent('rowsSet');
303
308
  }, [apiRef, props.signature, props.getRowId]);
304
309
  const rowApi = {
package/modern/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI X v5.17.22
1
+ /** @license MUI X v5.17.23
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -27,18 +27,20 @@ function escapeOperandAttributeSelector(operand) {
27
27
  export function getGridColumnHeaderElement(root, field) {
28
28
  return root.querySelector(`[role="columnheader"][data-field="${escapeOperandAttributeSelector(field)}"]`);
29
29
  }
30
+
31
+ function getGridRowElementSelector(id) {
32
+ return `.${gridClasses.row}[data-id="${escapeOperandAttributeSelector(String(id))}"]`;
33
+ }
34
+
30
35
  export function getGridRowElement(root, id) {
31
- return root.querySelector(`.${gridClasses.row}[data-id="${escapeOperandAttributeSelector(String(id))}"]`);
36
+ return root.querySelector(getGridRowElementSelector(id));
32
37
  }
33
38
  export function getGridCellElement(root, {
34
39
  id,
35
40
  field
36
41
  }) {
37
- const row = getGridRowElement(root, id);
38
-
39
- if (!row) {
40
- return null;
41
- }
42
-
43
- return row.querySelector(`.${gridClasses.cell}[data-field="${escapeOperandAttributeSelector(field)}"]`);
42
+ const rowSelector = getGridRowElementSelector(id);
43
+ const cellSelector = `.${gridClasses.cell}[data-field="${escapeOperandAttributeSelector(field)}"]`;
44
+ const selector = `${rowSelector} ${cellSelector}`;
45
+ return root.querySelector(selector);
44
46
  }
@@ -95,18 +95,21 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
95
95
 
96
96
  const getOperatorLabel = item => lookup[item.columnField].filterOperators.find(operator => operator.value === item.operatorValue).label || apiRef.current.getLocaleText(`filterOperator${(0, _utils.capitalize)(item.operatorValue)}`).toString();
97
97
 
98
+ const getFilterItemValue = item => {
99
+ const {
100
+ getValueAsString
101
+ } = lookup[item.columnField].filterOperators.find(operator => operator.value === item.operatorValue);
102
+ return getValueAsString ? getValueAsString(item.value) : item.value;
103
+ };
104
+
98
105
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
99
106
  children: [apiRef.current.getLocaleText('toolbarFiltersTooltipActive')(activeFilters.length), /*#__PURE__*/(0, _jsxRuntime.jsx)(GridToolbarFilterListRoot, {
100
107
  className: classes.root,
101
- children: activeFilters.map((item, index) => {
102
- var _item$value;
103
-
104
- return (0, _extends2.default)({}, lookup[item.columnField] && /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
105
- children: `${lookup[item.columnField].headerName || item.columnField}
108
+ children: activeFilters.map((item, index) => (0, _extends2.default)({}, lookup[item.columnField] && /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
109
+ children: `${lookup[item.columnField].headerName || item.columnField}
106
110
  ${getOperatorLabel(item)}
107
- ${(_item$value = item.value) != null ? _item$value : ''}`
108
- }, index));
109
- })
111
+ ${item.value ? getFilterItemValue(item) : ''}`
112
+ }, index)))
110
113
  })]
111
114
  });
112
115
  }, [apiRef, preferencePanel.open, activeFilters, lookup, classes]);
@@ -321,14 +321,19 @@ const useGridRows = (apiRef, props) => {
321
321
  apiRef.current.unstable_caches.rows.idRowsLookup = updatedIdRowsLookup;
322
322
  apiRef.current.unstable_caches.rows.idToIdLookup = updatedIdToIdLookup;
323
323
  apiRef.current.unstable_caches.rows.ids = updatedRows;
324
- apiRef.current.setState(state => (0, _extends2.default)({}, state, {
325
- rows: (0, _extends2.default)({}, state.rows, {
324
+ apiRef.current.setState(state => {
325
+ const newRowsState = {
326
326
  idRowsLookup: updatedIdRowsLookup,
327
327
  idToIdLookup: updatedIdToIdLookup,
328
328
  tree: updatedTree,
329
329
  ids: updatedRows
330
- })
331
- }));
330
+ };
331
+ return (0, _extends2.default)({}, state, {
332
+ rows: (0, _extends2.default)({}, state.rows, newRowsState, {
333
+ groupingResponseBeforeRowHydration: (0, _extends2.default)({}, state.rows.groupingResponseBeforeRowHydration, newRowsState)
334
+ })
335
+ });
336
+ });
332
337
  apiRef.current.publishEvent('rowsSet');
333
338
  }, [apiRef, props.signature, props.getRowId]);
334
339
  const rowApi = {
package/node/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI X v5.17.22
1
+ /** @license MUI X v5.17.23
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -47,19 +47,20 @@ function getGridColumnHeaderElement(root, field) {
47
47
  return root.querySelector(`[role="columnheader"][data-field="${escapeOperandAttributeSelector(field)}"]`);
48
48
  }
49
49
 
50
+ function getGridRowElementSelector(id) {
51
+ return `.${_gridClasses.gridClasses.row}[data-id="${escapeOperandAttributeSelector(String(id))}"]`;
52
+ }
53
+
50
54
  function getGridRowElement(root, id) {
51
- return root.querySelector(`.${_gridClasses.gridClasses.row}[data-id="${escapeOperandAttributeSelector(String(id))}"]`);
55
+ return root.querySelector(getGridRowElementSelector(id));
52
56
  }
53
57
 
54
58
  function getGridCellElement(root, {
55
59
  id,
56
60
  field
57
61
  }) {
58
- const row = getGridRowElement(root, id);
59
-
60
- if (!row) {
61
- return null;
62
- }
63
-
64
- return row.querySelector(`.${_gridClasses.gridClasses.cell}[data-field="${escapeOperandAttributeSelector(field)}"]`);
62
+ const rowSelector = getGridRowElementSelector(id);
63
+ const cellSelector = `.${_gridClasses.gridClasses.cell}[data-field="${escapeOperandAttributeSelector(field)}"]`;
64
+ const selector = `${rowSelector} ${cellSelector}`;
65
+ return root.querySelector(selector);
65
66
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-data-grid",
3
- "version": "5.17.22",
3
+ "version": "5.17.23",
4
4
  "description": "The community edition of the data grid component (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./node/index.js",
package/utils/domUtils.js CHANGED
@@ -27,18 +27,20 @@ function escapeOperandAttributeSelector(operand) {
27
27
  export function getGridColumnHeaderElement(root, field) {
28
28
  return root.querySelector(`[role="columnheader"][data-field="${escapeOperandAttributeSelector(field)}"]`);
29
29
  }
30
+
31
+ function getGridRowElementSelector(id) {
32
+ return `.${gridClasses.row}[data-id="${escapeOperandAttributeSelector(String(id))}"]`;
33
+ }
34
+
30
35
  export function getGridRowElement(root, id) {
31
- return root.querySelector(`.${gridClasses.row}[data-id="${escapeOperandAttributeSelector(String(id))}"]`);
36
+ return root.querySelector(getGridRowElementSelector(id));
32
37
  }
33
38
  export function getGridCellElement(root, {
34
39
  id,
35
40
  field
36
41
  }) {
37
- const row = getGridRowElement(root, id);
38
-
39
- if (!row) {
40
- return null;
41
- }
42
-
43
- return row.querySelector(`.${gridClasses.cell}[data-field="${escapeOperandAttributeSelector(field)}"]`);
42
+ const rowSelector = getGridRowElementSelector(id);
43
+ const cellSelector = `.${gridClasses.cell}[data-field="${escapeOperandAttributeSelector(field)}"]`;
44
+ const selector = `${rowSelector} ${cellSelector}`;
45
+ return root.querySelector(selector);
44
46
  }