@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 +25 -0
- package/hooks/features/columnResize/useGridColumnResize.js +2 -2
- package/index.js +1 -1
- package/modern/hooks/features/columnResize/useGridColumnResize.js +2 -2
- package/modern/index.js +1 -1
- package/modern/utils/domUtils.js +5 -5
- package/node/hooks/features/columnResize/useGridColumnResize.js +1 -1
- package/node/index.js +1 -1
- package/node/utils/domUtils.js +5 -4
- package/package.json +1 -2
- package/utils/domUtils.d.ts +1 -0
- package/utils/domUtils.js +5 -5
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` [](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` [](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
|
@@ -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
package/modern/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(
|
|
@@ -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
package/node/utils/domUtils.js
CHANGED
|
@@ -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.
|
|
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",
|
package/utils/domUtils.d.ts
CHANGED
|
@@ -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(
|