@mui/x-data-grid 7.6.0 → 7.6.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,31 @@
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
+ ## 7.6.1
7
+
8
+ _May 31, 2024_
9
+
10
+ We'd like to offer a big thanks to the 2 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ 🐞 Address the `@mui/internal-test-utils` added as a direct dependency to `@mui/x-data-grid` by mistake.
13
+
14
+ <!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
15
+
16
+ ### Data Grid
17
+
18
+ #### `@mui/x-data-grid@7.6.1`
19
+
20
+ - [DataGrid] Fix column resize not working with special character (#13069) @oukunan
21
+ - [DataGrid] Move `@mui/internal-test-utils` to dev dependency (#13318) @LukasTy
22
+
23
+ #### `@mui/x-data-grid-pro@7.6.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
24
+
25
+ Same changes as in `@mui/x-data-grid@7.6.1`.
26
+
27
+ #### `@mui/x-data-grid-premium@7.6.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
28
+
29
+ Same changes as in `@mui/x-data-grid-pro@7.6.1`.
30
+
6
31
  ## 7.6.0
7
32
 
8
33
  _May 30, 2024_
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import { unstable_ownerDocument as ownerDocument, unstable_useEventCallback as useEventCallback } from '@mui/utils';
4
4
  import useLazyRef from '@mui/utils/useLazyRef';
5
5
  import { useTheme } from '@mui/material/styles';
6
- import { findGridCellElementsFromCol, findGridElement, findLeftPinnedCellsAfterCol, findRightPinnedCellsBeforeCol, getFieldFromHeaderElem, findHeaderElementFromField, getFieldsFromGroupHeaderElem, findGroupHeaderElementsFromField, findGridHeader, findGridCells, findParentElementFromClassName, findLeftPinnedHeadersAfterCol, findRightPinnedHeadersBeforeCol } from '../../../utils/domUtils';
6
+ import { findGridCellElementsFromCol, findGridElement, findLeftPinnedCellsAfterCol, findRightPinnedCellsBeforeCol, getFieldFromHeaderElem, findHeaderElementFromField, getFieldsFromGroupHeaderElem, findGroupHeaderElementsFromField, findGridHeader, findGridCells, findParentElementFromClassName, findLeftPinnedHeadersAfterCol, findRightPinnedHeadersBeforeCol, escapeOperandAttributeSelector } from '../../../utils/domUtils';
7
7
  import { DEFAULT_GRID_AUTOSIZE_OPTIONS } from './gridColumnResizeApi';
8
8
  import { gridClasses } from '../../../constants/gridClasses';
9
9
  import { useGridApiEventHandler, useGridApiMethod, useGridApiOptionHandler, useGridLogger, useGridNativeEventListener, useGridSelector, useOnMount } from '../../utils';
@@ -303,7 +303,7 @@ export const useGridColumnResize = (apiRef, props) => {
303
303
  refs.initialTotalWidth = apiRef.current.getRootDimensions().rowWidth;
304
304
  refs.colDef = colDef;
305
305
  refs.columnHeaderElement = findHeaderElementFromField(apiRef.current.columnHeadersContainerRef.current, colDef.field);
306
- const headerFilterElement = root.querySelector(`.${gridClasses.headerFilterRow} [data-field="${colDef.field}"]`);
306
+ const headerFilterElement = root.querySelector(`.${gridClasses.headerFilterRow} [data-field="${escapeOperandAttributeSelector(colDef.field)}"]`);
307
307
  if (headerFilterElement) {
308
308
  refs.headerFilterElement = headerFilterElement;
309
309
  }
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v7.6.0
2
+ * @mui/x-data-grid v7.6.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import { unstable_ownerDocument as ownerDocument, unstable_useEventCallback as useEventCallback } from '@mui/utils';
4
4
  import useLazyRef from '@mui/utils/useLazyRef';
5
5
  import { useTheme } from '@mui/material/styles';
6
- import { findGridCellElementsFromCol, findGridElement, findLeftPinnedCellsAfterCol, findRightPinnedCellsBeforeCol, getFieldFromHeaderElem, findHeaderElementFromField, getFieldsFromGroupHeaderElem, findGroupHeaderElementsFromField, findGridHeader, findGridCells, findParentElementFromClassName, findLeftPinnedHeadersAfterCol, findRightPinnedHeadersBeforeCol } from '../../../utils/domUtils';
6
+ import { findGridCellElementsFromCol, findGridElement, findLeftPinnedCellsAfterCol, findRightPinnedCellsBeforeCol, getFieldFromHeaderElem, findHeaderElementFromField, getFieldsFromGroupHeaderElem, findGroupHeaderElementsFromField, findGridHeader, findGridCells, findParentElementFromClassName, findLeftPinnedHeadersAfterCol, findRightPinnedHeadersBeforeCol, escapeOperandAttributeSelector } from '../../../utils/domUtils';
7
7
  import { DEFAULT_GRID_AUTOSIZE_OPTIONS } from './gridColumnResizeApi';
8
8
  import { gridClasses } from '../../../constants/gridClasses';
9
9
  import { useGridApiEventHandler, useGridApiMethod, useGridApiOptionHandler, useGridLogger, useGridNativeEventListener, useGridSelector, useOnMount } from '../../utils';
@@ -303,7 +303,7 @@ export const useGridColumnResize = (apiRef, props) => {
303
303
  refs.initialTotalWidth = apiRef.current.getRootDimensions().rowWidth;
304
304
  refs.colDef = colDef;
305
305
  refs.columnHeaderElement = findHeaderElementFromField(apiRef.current.columnHeadersContainerRef.current, colDef.field);
306
- const headerFilterElement = root.querySelector(`.${gridClasses.headerFilterRow} [data-field="${colDef.field}"]`);
306
+ const headerFilterElement = root.querySelector(`.${gridClasses.headerFilterRow} [data-field="${escapeOperandAttributeSelector(colDef.field)}"]`);
307
307
  if (headerFilterElement) {
308
308
  refs.headerFilterElement = headerFilterElement;
309
309
  }
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v7.6.0
2
+ * @mui/x-data-grid v7.6.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -5,7 +5,7 @@ export function isOverflown(element) {
5
5
  export function findParentElementFromClassName(elem, className) {
6
6
  return elem.closest(`.${className}`);
7
7
  }
8
- function escapeOperandAttributeSelector(operand) {
8
+ export function escapeOperandAttributeSelector(operand) {
9
9
  return operand.replace(/["\\]/g, '\\$&');
10
10
  }
11
11
  export function getGridColumnHeaderElement(root, field) {
@@ -51,13 +51,13 @@ export function getFieldFromHeaderElem(colCellEl) {
51
51
  return colCellEl.getAttribute('data-field');
52
52
  }
53
53
  export function findHeaderElementFromField(elem, field) {
54
- return elem.querySelector(`[data-field="${field}"]`);
54
+ return elem.querySelector(`[data-field="${escapeOperandAttributeSelector(field)}"]`);
55
55
  }
56
56
  export function getFieldsFromGroupHeaderElem(colCellEl) {
57
57
  return colCellEl.getAttribute('data-fields').slice(2, -2).split('-|-');
58
58
  }
59
59
  export function findGroupHeaderElementsFromField(elem, field) {
60
- return Array.from(elem.querySelectorAll(`[data-fields*="|-${field}-|"]`) ?? []);
60
+ return Array.from(elem.querySelectorAll(`[data-fields*="|-${escapeOperandAttributeSelector(field)}-|"]`) ?? []);
61
61
  }
62
62
  export function findGridCellElementsFromCol(col, api) {
63
63
  const root = findParentElementFromClassName(col, gridClasses.root);
@@ -176,11 +176,11 @@ export function findRightPinnedHeadersBeforeCol(api, col) {
176
176
  }
177
177
  export function findGridHeader(api, field) {
178
178
  const headers = api.columnHeadersContainerRef.current;
179
- return headers.querySelector(`:scope > div > [data-field="${field}"][role="columnheader"]`);
179
+ return headers.querySelector(`:scope > div > [data-field="${escapeOperandAttributeSelector(field)}"][role="columnheader"]`);
180
180
  }
181
181
  export function findGridCells(api, field) {
182
182
  const container = api.virtualScrollerRef.current;
183
- return Array.from(container.querySelectorAll(`:scope > div > div > div > [data-field="${field}"][role="gridcell"]`));
183
+ return Array.from(container.querySelectorAll(`:scope > div > div > div > [data-field="${escapeOperandAttributeSelector(field)}"][role="gridcell"]`));
184
184
  }
185
185
  function queryRows(api) {
186
186
  return api.virtualScrollerRef.current.querySelectorAll(
@@ -313,7 +313,7 @@ const useGridColumnResize = (apiRef, props) => {
313
313
  refs.initialTotalWidth = apiRef.current.getRootDimensions().rowWidth;
314
314
  refs.colDef = colDef;
315
315
  refs.columnHeaderElement = (0, _domUtils.findHeaderElementFromField)(apiRef.current.columnHeadersContainerRef.current, colDef.field);
316
- const headerFilterElement = root.querySelector(`.${_gridClasses.gridClasses.headerFilterRow} [data-field="${colDef.field}"]`);
316
+ const headerFilterElement = root.querySelector(`.${_gridClasses.gridClasses.headerFilterRow} [data-field="${(0, _domUtils.escapeOperandAttributeSelector)(colDef.field)}"]`);
317
317
  if (headerFilterElement) {
318
318
  refs.headerFilterElement = headerFilterElement;
319
319
  }
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v7.6.0
2
+ * @mui/x-data-grid v7.6.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.escapeOperandAttributeSelector = escapeOperandAttributeSelector;
6
7
  exports.findGridCellElementsFromCol = findGridCellElementsFromCol;
7
8
  exports.findGridCells = findGridCells;
8
9
  exports.findGridElement = findGridElement;
@@ -76,13 +77,13 @@ function getFieldFromHeaderElem(colCellEl) {
76
77
  return colCellEl.getAttribute('data-field');
77
78
  }
78
79
  function findHeaderElementFromField(elem, field) {
79
- return elem.querySelector(`[data-field="${field}"]`);
80
+ return elem.querySelector(`[data-field="${escapeOperandAttributeSelector(field)}"]`);
80
81
  }
81
82
  function getFieldsFromGroupHeaderElem(colCellEl) {
82
83
  return colCellEl.getAttribute('data-fields').slice(2, -2).split('-|-');
83
84
  }
84
85
  function findGroupHeaderElementsFromField(elem, field) {
85
- return Array.from(elem.querySelectorAll(`[data-fields*="|-${field}-|"]`) ?? []);
86
+ return Array.from(elem.querySelectorAll(`[data-fields*="|-${escapeOperandAttributeSelector(field)}-|"]`) ?? []);
86
87
  }
87
88
  function findGridCellElementsFromCol(col, api) {
88
89
  const root = findParentElementFromClassName(col, _gridClasses.gridClasses.root);
@@ -201,11 +202,11 @@ function findRightPinnedHeadersBeforeCol(api, col) {
201
202
  }
202
203
  function findGridHeader(api, field) {
203
204
  const headers = api.columnHeadersContainerRef.current;
204
- return headers.querySelector(`:scope > div > [data-field="${field}"][role="columnheader"]`);
205
+ return headers.querySelector(`:scope > div > [data-field="${escapeOperandAttributeSelector(field)}"][role="columnheader"]`);
205
206
  }
206
207
  function findGridCells(api, field) {
207
208
  const container = api.virtualScrollerRef.current;
208
- return Array.from(container.querySelectorAll(`:scope > div > div > div > [data-field="${field}"][role="gridcell"]`));
209
+ return Array.from(container.querySelectorAll(`:scope > div > div > div > [data-field="${escapeOperandAttributeSelector(field)}"][role="gridcell"]`));
209
210
  }
210
211
  function queryRows(api) {
211
212
  return api.virtualScrollerRef.current.querySelectorAll(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-data-grid",
3
- "version": "7.6.0",
3
+ "version": "7.6.1",
4
4
  "description": "The Community plan edition of the Data Grid components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./node/index.js",
@@ -38,7 +38,6 @@
38
38
  },
39
39
  "dependencies": {
40
40
  "@babel/runtime": "^7.24.6",
41
- "@mui/internal-test-utils": "1.0.0-dev.20240529-082515-213b5e33ab",
42
41
  "@mui/system": "^5.15.15",
43
42
  "@mui/utils": "^5.15.14",
44
43
  "clsx": "^2.1.1",
@@ -4,6 +4,7 @@ import type { GridPrivateApiCommunity } from '../models/api/gridApiCommunity';
4
4
  import type { GridRowId } from '../models/gridRows';
5
5
  export declare function isOverflown(element: Element): boolean;
6
6
  export declare function findParentElementFromClassName(elem: Element, className: string): Element | null;
7
+ export declare function escapeOperandAttributeSelector(operand: string): string;
7
8
  export declare function getGridColumnHeaderElement(root: Element, field: string): HTMLDivElement | null;
8
9
  export declare function getGridRowElement(root: Element, id: GridRowId): HTMLDivElement | null;
9
10
  export declare function getGridCellElement(root: Element, { id, field }: {
package/utils/domUtils.js CHANGED
@@ -5,7 +5,7 @@ export function isOverflown(element) {
5
5
  export function findParentElementFromClassName(elem, className) {
6
6
  return elem.closest(`.${className}`);
7
7
  }
8
- function escapeOperandAttributeSelector(operand) {
8
+ export function escapeOperandAttributeSelector(operand) {
9
9
  return operand.replace(/["\\]/g, '\\$&');
10
10
  }
11
11
  export function getGridColumnHeaderElement(root, field) {
@@ -51,13 +51,13 @@ export function getFieldFromHeaderElem(colCellEl) {
51
51
  return colCellEl.getAttribute('data-field');
52
52
  }
53
53
  export function findHeaderElementFromField(elem, field) {
54
- return elem.querySelector(`[data-field="${field}"]`);
54
+ return elem.querySelector(`[data-field="${escapeOperandAttributeSelector(field)}"]`);
55
55
  }
56
56
  export function getFieldsFromGroupHeaderElem(colCellEl) {
57
57
  return colCellEl.getAttribute('data-fields').slice(2, -2).split('-|-');
58
58
  }
59
59
  export function findGroupHeaderElementsFromField(elem, field) {
60
- return Array.from(elem.querySelectorAll(`[data-fields*="|-${field}-|"]`) ?? []);
60
+ return Array.from(elem.querySelectorAll(`[data-fields*="|-${escapeOperandAttributeSelector(field)}-|"]`) ?? []);
61
61
  }
62
62
  export function findGridCellElementsFromCol(col, api) {
63
63
  const root = findParentElementFromClassName(col, gridClasses.root);
@@ -176,11 +176,11 @@ export function findRightPinnedHeadersBeforeCol(api, col) {
176
176
  }
177
177
  export function findGridHeader(api, field) {
178
178
  const headers = api.columnHeadersContainerRef.current;
179
- return headers.querySelector(`:scope > div > [data-field="${field}"][role="columnheader"]`);
179
+ return headers.querySelector(`:scope > div > [data-field="${escapeOperandAttributeSelector(field)}"][role="columnheader"]`);
180
180
  }
181
181
  export function findGridCells(api, field) {
182
182
  const container = api.virtualScrollerRef.current;
183
- return Array.from(container.querySelectorAll(`:scope > div > div > div > [data-field="${field}"][role="gridcell"]`));
183
+ return Array.from(container.querySelectorAll(`:scope > div > div > div > [data-field="${escapeOperandAttributeSelector(field)}"][role="gridcell"]`));
184
184
  }
185
185
  function queryRows(api) {
186
186
  return api.virtualScrollerRef.current.querySelectorAll(