@mui/x-data-grid 8.29.0 → 8.29.2
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 +104 -1
- package/components/columnsPanel/ColumnsPanelTrigger.js +2 -2
- package/components/columnsPanel/ColumnsPanelTrigger.mjs +2 -2
- package/components/containers/GridRootStyles.js +3 -2
- package/components/containers/GridRootStyles.mjs +3 -2
- package/components/filterPanel/FilterPanelTrigger.js +2 -2
- package/components/filterPanel/FilterPanelTrigger.mjs +2 -2
- package/components/panel/GridPanelContext.d.mts +9 -3
- package/components/panel/GridPanelContext.d.ts +9 -3
- package/components/panel/GridPanelContext.js +41 -7
- package/components/panel/GridPanelContext.mjs +40 -7
- package/components/panel/GridPreferencesPanel.js +4 -6
- package/components/panel/GridPreferencesPanel.mjs +4 -6
- package/components/toolbar/GridToolbarColumnsButton.js +2 -2
- package/components/toolbar/GridToolbarColumnsButton.mjs +2 -2
- package/components/toolbar/GridToolbarFilterButton.js +2 -2
- package/components/toolbar/GridToolbarFilterButton.mjs +2 -2
- package/components/virtualization/GridVirtualScrollbar.js +9 -53
- package/components/virtualization/GridVirtualScrollbar.mjs +9 -53
- package/components/virtualization/GridVirtualScroller.js +12 -0
- package/components/virtualization/GridVirtualScroller.mjs +12 -0
- package/hooks/features/columnResize/useGridColumnResize.js +56 -2
- package/hooks/features/columnResize/useGridColumnResize.mjs +57 -3
- package/hooks/features/rows/gridRowsUtils.js +1 -1
- package/hooks/features/rows/gridRowsUtils.mjs +1 -1
- package/hooks/utils/useGridSelector.js +25 -22
- package/hooks/utils/useGridSelector.mjs +24 -22
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/package.json +31 -31
package/CHANGELOG.md
CHANGED
|
@@ -5,8 +5,111 @@
|
|
|
5
5
|
All notable changes to this project will be documented in this file.
|
|
6
6
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
7
7
|
|
|
8
|
+
## 8.29.2
|
|
9
|
+
|
|
10
|
+
_Jul 2, 2026_
|
|
11
|
+
|
|
12
|
+
We'd like to extend a big thank you to the 8 contributors who made this release possible. Here are some highlights ✨:
|
|
13
|
+
|
|
14
|
+
- 🐞 Bugfixes
|
|
15
|
+
|
|
16
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
17
|
+
@Anexus5919, @timbuckley
|
|
18
|
+
|
|
19
|
+
The following team members contributed to this release:
|
|
20
|
+
@alexfauquette, @arminmeh, @brijeshb42, @cherniavskii, @LukasTy, @MBilalShafi
|
|
21
|
+
|
|
22
|
+
### Data Grid
|
|
23
|
+
|
|
24
|
+
#### `@mui/x-data-grid@8.29.2`
|
|
25
|
+
|
|
26
|
+
- [DataGrid] Avoid reading `type` of `undefined` in `gridRowUtils` (#22963) @timbuckley
|
|
27
|
+
- [DataGrid] Define `overflowAnchor` style at the right element (#22860) @arminmeh
|
|
28
|
+
- [DataGrid] Fix panel placement jump on mount (#22946) @cherniavskii
|
|
29
|
+
- [DataGrid] Fix scrollbars not showing up on scroll on iOS (#22884) @cherniavskii
|
|
30
|
+
- [DataGrid] Wait for rows before reacting on `autosizeOnMount` (#22886) @MBilalShafi
|
|
31
|
+
|
|
32
|
+
#### `@mui/x-data-grid-pro@8.29.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
33
|
+
|
|
34
|
+
Same changes as in `@mui/x-data-grid@8.29.2`.
|
|
35
|
+
|
|
36
|
+
#### `@mui/x-data-grid-premium@8.29.2` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
37
|
+
|
|
38
|
+
Same changes as in `@mui/x-data-grid-pro@8.29.2`, plus:
|
|
39
|
+
|
|
40
|
+
- [DataGridPremium] Escape `singleSelect` values in Excel export with `escapeFormulas` enabled (#22966) @Anexus5919
|
|
41
|
+
|
|
42
|
+
### Date and Time Pickers
|
|
43
|
+
|
|
44
|
+
#### `@mui/x-date-pickers@8.29.2`
|
|
45
|
+
|
|
46
|
+
- [pickers] Fix localized digit crash (#23010) @alexfauquette
|
|
47
|
+
- [pickers] Respect explicit `notched` prop on the outlined `PickersTextField` (#22875) (#22893) @LukasTy
|
|
48
|
+
|
|
49
|
+
#### `@mui/x-date-pickers-pro@8.29.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
50
|
+
|
|
51
|
+
Same changes as in `@mui/x-date-pickers@8.29.2`.
|
|
52
|
+
|
|
53
|
+
### Charts
|
|
54
|
+
|
|
55
|
+
#### `@mui/x-charts@8.29.2`
|
|
56
|
+
|
|
57
|
+
Internal changes.
|
|
58
|
+
|
|
59
|
+
#### `@mui/x-charts-pro@8.29.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
60
|
+
|
|
61
|
+
Same changes as in `@mui/x-charts@8.29.2`.
|
|
62
|
+
|
|
63
|
+
#### `@mui/x-charts-premium@8.29.2` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
64
|
+
|
|
65
|
+
Same changes as in `@mui/x-charts-pro@8.29.2`.
|
|
66
|
+
|
|
67
|
+
### Tree View
|
|
68
|
+
|
|
69
|
+
#### `@mui/x-tree-view@8.29.2`
|
|
70
|
+
|
|
71
|
+
Internal changes.
|
|
72
|
+
|
|
73
|
+
#### `@mui/x-tree-view-pro@8.29.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
74
|
+
|
|
75
|
+
Same changes as in `@mui/x-tree-view@8.29.2`.
|
|
76
|
+
|
|
77
|
+
### Codemod
|
|
78
|
+
|
|
79
|
+
#### `@mui/x-codemod@8.29.2`
|
|
80
|
+
|
|
81
|
+
Internal changes.
|
|
82
|
+
|
|
83
|
+
### Core
|
|
84
|
+
|
|
85
|
+
- [code-infra] Pin mui-public actions to nearest git hash (#22824) @brijeshb42
|
|
86
|
+
- [internal] Switch resolutions to workspace overrides (#22865) @cherniavskii
|
|
87
|
+
|
|
88
|
+
### Miscellaneous
|
|
89
|
+
|
|
90
|
+
- [virtualizer] Improve the dimensions' initial state (#22890) @arminmeh
|
|
91
|
+
- [virtualizer] Remeasure scrollbars when layout changes (#23003) @arminmeh
|
|
92
|
+
|
|
93
|
+
## 8.29.1
|
|
94
|
+
|
|
95
|
+
_Jun 11, 2026_
|
|
96
|
+
|
|
97
|
+
### Data Grid
|
|
98
|
+
|
|
99
|
+
#### `@mui/x-data-grid@8.29.1`
|
|
100
|
+
|
|
101
|
+
- [DataGrid] Prevent React state update before mount (#22749) @arminmeh
|
|
102
|
+
|
|
103
|
+
#### `@mui/x-data-grid-pro@8.29.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
104
|
+
|
|
105
|
+
Same changes as in `@mui/x-data-grid@8.29.1`.
|
|
106
|
+
|
|
107
|
+
#### `@mui/x-data-grid-premium@8.29.1` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
108
|
+
|
|
109
|
+
Same changes as in `@mui/x-data-grid-pro@8.29.1`.
|
|
110
|
+
|
|
8
111
|
## 8.29.0
|
|
9
|
-
|
|
112
|
+
|
|
10
113
|
_Jun 5, 2026_
|
|
11
114
|
|
|
12
115
|
We'd like to extend a big thank you to the 2 contributors who made this release possible. Here are some highlights ✨:
|
|
@@ -51,9 +51,9 @@ const ColumnsPanelTrigger = exports.ColumnsPanelTrigger = (0, _forwardRef.forwar
|
|
|
51
51
|
};
|
|
52
52
|
const resolvedClassName = typeof className === 'function' ? className(state) : className;
|
|
53
53
|
const {
|
|
54
|
-
|
|
54
|
+
triggers
|
|
55
55
|
} = (0, _GridPanelContext.useGridPanelContext)();
|
|
56
|
-
const handleRef = (0, _useForkRef.default)(ref,
|
|
56
|
+
const handleRef = (0, _useForkRef.default)(ref, triggers.columnsPanel.setRef);
|
|
57
57
|
const handleClick = event => {
|
|
58
58
|
if (open) {
|
|
59
59
|
apiRef.current.hidePreferences();
|
|
@@ -43,9 +43,9 @@ const ColumnsPanelTrigger = forwardRef(function ColumnsPanelTrigger(props, ref)
|
|
|
43
43
|
};
|
|
44
44
|
const resolvedClassName = typeof className === 'function' ? className(state) : className;
|
|
45
45
|
const {
|
|
46
|
-
|
|
46
|
+
triggers
|
|
47
47
|
} = useGridPanelContext();
|
|
48
|
-
const handleRef = useForkRef(ref,
|
|
48
|
+
const handleRef = useForkRef(ref, triggers.columnsPanel.setRef);
|
|
49
49
|
const handleClick = event => {
|
|
50
50
|
if (open) {
|
|
51
51
|
apiRef.current.hidePreferences();
|
|
@@ -126,11 +126,12 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
126
126
|
minHeight: 0,
|
|
127
127
|
flexDirection: 'column',
|
|
128
128
|
overflow: 'hidden',
|
|
129
|
-
overflowAnchor: 'none',
|
|
130
|
-
// Keep the same scrolling position
|
|
131
129
|
transform: 'translate(0, 0)',
|
|
132
130
|
// Create a stacking context to keep scrollbars from showing on top
|
|
133
131
|
|
|
132
|
+
[`& .${_gridClasses.gridClasses.virtualScroller}`]: {
|
|
133
|
+
overflowAnchor: 'none' // Keep the same scrolling position
|
|
134
|
+
},
|
|
134
135
|
[`.${_gridClasses.gridClasses.main} > *:first-child${ignoreSsrWarning}`]: {
|
|
135
136
|
borderTopLeftRadius: 'var(--unstable_DataGrid-radius)',
|
|
136
137
|
borderTopRightRadius: 'var(--unstable_DataGrid-radius)'
|
|
@@ -120,11 +120,12 @@ export const GridRootStyles = styled('div', {
|
|
|
120
120
|
minHeight: 0,
|
|
121
121
|
flexDirection: 'column',
|
|
122
122
|
overflow: 'hidden',
|
|
123
|
-
overflowAnchor: 'none',
|
|
124
|
-
// Keep the same scrolling position
|
|
125
123
|
transform: 'translate(0, 0)',
|
|
126
124
|
// Create a stacking context to keep scrollbars from showing on top
|
|
127
125
|
|
|
126
|
+
[`& .${c.virtualScroller}`]: {
|
|
127
|
+
overflowAnchor: 'none' // Keep the same scrolling position
|
|
128
|
+
},
|
|
128
129
|
[`.${c.main} > *:first-child${ignoreSsrWarning}`]: {
|
|
129
130
|
borderTopLeftRadius: 'var(--unstable_DataGrid-radius)',
|
|
130
131
|
borderTopRightRadius: 'var(--unstable_DataGrid-radius)'
|
|
@@ -54,9 +54,9 @@ const FilterPanelTrigger = exports.FilterPanelTrigger = (0, _forwardRef.forwardR
|
|
|
54
54
|
};
|
|
55
55
|
const resolvedClassName = typeof className === 'function' ? className(state) : className;
|
|
56
56
|
const {
|
|
57
|
-
|
|
57
|
+
triggers
|
|
58
58
|
} = (0, _GridPanelContext.useGridPanelContext)();
|
|
59
|
-
const handleRef = (0, _useForkRef.default)(ref,
|
|
59
|
+
const handleRef = (0, _useForkRef.default)(ref, triggers.filterPanel.setRef);
|
|
60
60
|
const handleClick = event => {
|
|
61
61
|
if (open) {
|
|
62
62
|
apiRef.current.hidePreferences();
|
|
@@ -46,9 +46,9 @@ const FilterPanelTrigger = forwardRef(function FilterPanelTrigger(props, ref) {
|
|
|
46
46
|
};
|
|
47
47
|
const resolvedClassName = typeof className === 'function' ? className(state) : className;
|
|
48
48
|
const {
|
|
49
|
-
|
|
49
|
+
triggers
|
|
50
50
|
} = useGridPanelContext();
|
|
51
|
-
const handleRef = useForkRef(ref,
|
|
51
|
+
const handleRef = useForkRef(ref, triggers.filterPanel.setRef);
|
|
52
52
|
const handleClick = event => {
|
|
53
53
|
if (open) {
|
|
54
54
|
apiRef.current.hidePreferences();
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
export interface GridPanelTrigger {
|
|
3
|
+
setRef: (instance: HTMLElement | null) => void;
|
|
4
|
+
element: HTMLElement | null;
|
|
5
|
+
}
|
|
2
6
|
export interface GridPanelContextValue {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
triggers: {
|
|
8
|
+
filterPanel: GridPanelTrigger;
|
|
9
|
+
aiAssistantPanel: GridPanelTrigger;
|
|
10
|
+
columnsPanel: GridPanelTrigger;
|
|
11
|
+
};
|
|
6
12
|
}
|
|
7
13
|
export declare const GridPanelContext: React.Context<GridPanelContextValue | undefined>;
|
|
8
14
|
export declare function useGridPanelContext(): GridPanelContextValue;
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
export interface GridPanelTrigger {
|
|
3
|
+
setRef: (instance: HTMLElement | null) => void;
|
|
4
|
+
element: HTMLElement | null;
|
|
5
|
+
}
|
|
2
6
|
export interface GridPanelContextValue {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
triggers: {
|
|
8
|
+
filterPanel: GridPanelTrigger;
|
|
9
|
+
aiAssistantPanel: GridPanelTrigger;
|
|
10
|
+
columnsPanel: GridPanelTrigger;
|
|
11
|
+
};
|
|
6
12
|
}
|
|
7
13
|
export declare const GridPanelContext: React.Context<GridPanelContextValue | undefined>;
|
|
8
14
|
export declare function useGridPanelContext(): GridPanelContextValue;
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
'use client';
|
|
3
3
|
|
|
4
4
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
6
|
Object.defineProperty(exports, "__esModule", {
|
|
6
7
|
value: true
|
|
7
8
|
});
|
|
8
9
|
exports.GridPanelContext = void 0;
|
|
9
10
|
exports.GridPanelContextProvider = GridPanelContextProvider;
|
|
10
11
|
exports.useGridPanelContext = useGridPanelContext;
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
13
|
var React = _interopRequireWildcard(require("react"));
|
|
12
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
15
|
const GridPanelContext = exports.GridPanelContext = /*#__PURE__*/React.createContext(undefined);
|
|
@@ -22,14 +24,46 @@ function useGridPanelContext() {
|
|
|
22
24
|
function GridPanelContextProvider({
|
|
23
25
|
children
|
|
24
26
|
}) {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
const [triggerElements, setTriggerElements] = React.useState({
|
|
28
|
+
columnsPanel: null,
|
|
29
|
+
filterPanel: null,
|
|
30
|
+
aiAssistantPanel: null
|
|
31
|
+
});
|
|
32
|
+
const updateTriggerElement = React.useCallback((key, instance) => {
|
|
33
|
+
setTriggerElements(prev => {
|
|
34
|
+
if (prev[key] === instance) {
|
|
35
|
+
return prev;
|
|
36
|
+
}
|
|
37
|
+
return (0, _extends2.default)({}, prev, {
|
|
38
|
+
[key]: instance
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}, []);
|
|
42
|
+
const setColumnsPanelTrigger = React.useCallback(instance => {
|
|
43
|
+
updateTriggerElement('columnsPanel', instance);
|
|
44
|
+
}, [updateTriggerElement]);
|
|
45
|
+
const setFilterPanelTrigger = React.useCallback(instance => {
|
|
46
|
+
updateTriggerElement('filterPanel', instance);
|
|
47
|
+
}, [updateTriggerElement]);
|
|
48
|
+
const setAiAssistantPanelTrigger = React.useCallback(instance => {
|
|
49
|
+
updateTriggerElement('aiAssistantPanel', instance);
|
|
50
|
+
}, [updateTriggerElement]);
|
|
28
51
|
const value = React.useMemo(() => ({
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
52
|
+
triggers: {
|
|
53
|
+
columnsPanel: {
|
|
54
|
+
element: triggerElements.columnsPanel,
|
|
55
|
+
setRef: setColumnsPanelTrigger
|
|
56
|
+
},
|
|
57
|
+
filterPanel: {
|
|
58
|
+
element: triggerElements.filterPanel,
|
|
59
|
+
setRef: setFilterPanelTrigger
|
|
60
|
+
},
|
|
61
|
+
aiAssistantPanel: {
|
|
62
|
+
element: triggerElements.aiAssistantPanel,
|
|
63
|
+
setRef: setAiAssistantPanelTrigger
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}), [triggerElements, setColumnsPanelTrigger, setFilterPanelTrigger, setAiAssistantPanelTrigger]);
|
|
33
67
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridPanelContext.Provider, {
|
|
34
68
|
value: value,
|
|
35
69
|
children: children
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
4
|
import * as React from 'react';
|
|
4
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
6
|
export const GridPanelContext = /*#__PURE__*/React.createContext(undefined);
|
|
@@ -14,14 +15,46 @@ export function useGridPanelContext() {
|
|
|
14
15
|
export function GridPanelContextProvider({
|
|
15
16
|
children
|
|
16
17
|
}) {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const [triggerElements, setTriggerElements] = React.useState({
|
|
19
|
+
columnsPanel: null,
|
|
20
|
+
filterPanel: null,
|
|
21
|
+
aiAssistantPanel: null
|
|
22
|
+
});
|
|
23
|
+
const updateTriggerElement = React.useCallback((key, instance) => {
|
|
24
|
+
setTriggerElements(prev => {
|
|
25
|
+
if (prev[key] === instance) {
|
|
26
|
+
return prev;
|
|
27
|
+
}
|
|
28
|
+
return _extends({}, prev, {
|
|
29
|
+
[key]: instance
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}, []);
|
|
33
|
+
const setColumnsPanelTrigger = React.useCallback(instance => {
|
|
34
|
+
updateTriggerElement('columnsPanel', instance);
|
|
35
|
+
}, [updateTriggerElement]);
|
|
36
|
+
const setFilterPanelTrigger = React.useCallback(instance => {
|
|
37
|
+
updateTriggerElement('filterPanel', instance);
|
|
38
|
+
}, [updateTriggerElement]);
|
|
39
|
+
const setAiAssistantPanelTrigger = React.useCallback(instance => {
|
|
40
|
+
updateTriggerElement('aiAssistantPanel', instance);
|
|
41
|
+
}, [updateTriggerElement]);
|
|
20
42
|
const value = React.useMemo(() => ({
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
43
|
+
triggers: {
|
|
44
|
+
columnsPanel: {
|
|
45
|
+
element: triggerElements.columnsPanel,
|
|
46
|
+
setRef: setColumnsPanelTrigger
|
|
47
|
+
},
|
|
48
|
+
filterPanel: {
|
|
49
|
+
element: triggerElements.filterPanel,
|
|
50
|
+
setRef: setFilterPanelTrigger
|
|
51
|
+
},
|
|
52
|
+
aiAssistantPanel: {
|
|
53
|
+
element: triggerElements.aiAssistantPanel,
|
|
54
|
+
setRef: setAiAssistantPanelTrigger
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}), [triggerElements, setColumnsPanelTrigger, setFilterPanelTrigger, setAiAssistantPanelTrigger]);
|
|
25
58
|
return /*#__PURE__*/_jsx(GridPanelContext.Provider, {
|
|
26
59
|
value: value,
|
|
27
60
|
children: children
|
|
@@ -20,21 +20,19 @@ function GridPreferencesPanel() {
|
|
|
20
20
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
21
21
|
const preferencePanelState = (0, _useGridSelector.useGridSelector)(apiRef, _gridPreferencePanelSelector.gridPreferencePanelStateSelector);
|
|
22
22
|
const {
|
|
23
|
-
|
|
24
|
-
filterPanelTriggerRef,
|
|
25
|
-
aiAssistantPanelTriggerRef
|
|
23
|
+
triggers
|
|
26
24
|
} = (0, _GridPanelContext.useGridPanelContext)();
|
|
27
25
|
const panelContent = apiRef.current.unstable_applyPipeProcessors('preferencePanel', null, preferencePanelState.openedPanelValue ?? _gridPreferencePanelsValue.GridPreferencePanelsValue.filters);
|
|
28
26
|
let target = null;
|
|
29
27
|
switch (preferencePanelState.openedPanelValue) {
|
|
30
28
|
case _gridPreferencePanelsValue.GridPreferencePanelsValue.filters:
|
|
31
|
-
target =
|
|
29
|
+
target = triggers.filterPanel.element;
|
|
32
30
|
break;
|
|
33
31
|
case _gridPreferencePanelsValue.GridPreferencePanelsValue.columns:
|
|
34
|
-
target =
|
|
32
|
+
target = triggers.columnsPanel.element;
|
|
35
33
|
break;
|
|
36
34
|
case _gridPreferencePanelsValue.GridPreferencePanelsValue.aiAssistant:
|
|
37
|
-
target =
|
|
35
|
+
target = triggers.aiAssistantPanel.element;
|
|
38
36
|
break;
|
|
39
37
|
default:
|
|
40
38
|
}
|
|
@@ -13,21 +13,19 @@ export function GridPreferencesPanel() {
|
|
|
13
13
|
const rootProps = useGridRootProps();
|
|
14
14
|
const preferencePanelState = useGridSelector(apiRef, gridPreferencePanelStateSelector);
|
|
15
15
|
const {
|
|
16
|
-
|
|
17
|
-
filterPanelTriggerRef,
|
|
18
|
-
aiAssistantPanelTriggerRef
|
|
16
|
+
triggers
|
|
19
17
|
} = useGridPanelContext();
|
|
20
18
|
const panelContent = apiRef.current.unstable_applyPipeProcessors('preferencePanel', null, preferencePanelState.openedPanelValue ?? GridPreferencePanelsValue.filters);
|
|
21
19
|
let target = null;
|
|
22
20
|
switch (preferencePanelState.openedPanelValue) {
|
|
23
21
|
case GridPreferencePanelsValue.filters:
|
|
24
|
-
target =
|
|
22
|
+
target = triggers.filterPanel.element;
|
|
25
23
|
break;
|
|
26
24
|
case GridPreferencePanelsValue.columns:
|
|
27
|
-
target =
|
|
25
|
+
target = triggers.columnsPanel.element;
|
|
28
26
|
break;
|
|
29
27
|
case GridPreferencePanelsValue.aiAssistant:
|
|
30
|
-
target =
|
|
28
|
+
target = triggers.aiAssistantPanel.element;
|
|
31
29
|
break;
|
|
32
30
|
default:
|
|
33
31
|
}
|
|
@@ -34,10 +34,10 @@ const GridToolbarColumnsButton = exports.GridToolbarColumnsButton = (0, _forward
|
|
|
34
34
|
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
35
35
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
36
36
|
const {
|
|
37
|
-
|
|
37
|
+
triggers
|
|
38
38
|
} = (0, _GridPanelContext.useGridPanelContext)();
|
|
39
39
|
const preferencePanel = (0, _useGridSelector.useGridSelector)(apiRef, _gridPreferencePanelSelector.gridPreferencePanelStateSelector);
|
|
40
|
-
const handleRef = (0, _useForkRef.default)(ref,
|
|
40
|
+
const handleRef = (0, _useForkRef.default)(ref, triggers.columnsPanel.setRef);
|
|
41
41
|
const showColumns = event => {
|
|
42
42
|
if (preferencePanel.open && preferencePanel.openedPanelValue === _gridPreferencePanelsValue.GridPreferencePanelsValue.columns) {
|
|
43
43
|
apiRef.current.hidePreferences();
|
|
@@ -27,10 +27,10 @@ const GridToolbarColumnsButton = forwardRef(function GridToolbarColumnsButton(pr
|
|
|
27
27
|
const apiRef = useGridApiContext();
|
|
28
28
|
const rootProps = useGridRootProps();
|
|
29
29
|
const {
|
|
30
|
-
|
|
30
|
+
triggers
|
|
31
31
|
} = useGridPanelContext();
|
|
32
32
|
const preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);
|
|
33
|
-
const handleRef = useForkRef(ref,
|
|
33
|
+
const handleRef = useForkRef(ref, triggers.columnsPanel.setRef);
|
|
34
34
|
const showColumns = event => {
|
|
35
35
|
if (preferencePanel.open && preferencePanel.openedPanelValue === GridPreferencePanelsValue.columns) {
|
|
36
36
|
apiRef.current.hidePreferences();
|
|
@@ -62,9 +62,9 @@ const GridToolbarFilterButton = exports.GridToolbarFilterButton = (0, _forwardRe
|
|
|
62
62
|
const filterButtonId = (0, _useId.default)();
|
|
63
63
|
const filterPanelId = (0, _useId.default)();
|
|
64
64
|
const {
|
|
65
|
-
|
|
65
|
+
triggers
|
|
66
66
|
} = (0, _GridPanelContext.useGridPanelContext)();
|
|
67
|
-
const handleRef = (0, _useForkRef.default)(ref,
|
|
67
|
+
const handleRef = (0, _useForkRef.default)(ref, triggers.filterPanel.setRef);
|
|
68
68
|
const tooltipContentNode = React.useMemo(() => {
|
|
69
69
|
if (preferencePanel.open) {
|
|
70
70
|
return apiRef.current.getLocaleText('toolbarFiltersTooltipHide');
|
|
@@ -55,9 +55,9 @@ const GridToolbarFilterButton = forwardRef(function GridToolbarFilterButton(prop
|
|
|
55
55
|
const filterButtonId = useId();
|
|
56
56
|
const filterPanelId = useId();
|
|
57
57
|
const {
|
|
58
|
-
|
|
58
|
+
triggers
|
|
59
59
|
} = useGridPanelContext();
|
|
60
|
-
const handleRef = useForkRef(ref,
|
|
60
|
+
const handleRef = useForkRef(ref, triggers.filterPanel.setRef);
|
|
61
61
|
const tooltipContentNode = React.useMemo(() => {
|
|
62
62
|
if (preferencePanel.open) {
|
|
63
63
|
return apiRef.current.getLocaleText('toolbarFiltersTooltipHide');
|
|
@@ -9,11 +9,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
exports.scrollbarSizeCssExpression = exports.ScrollbarCorner = exports.GridVirtualScrollbar = void 0;
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _styles = require("@mui/material/styles");
|
|
12
|
-
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
13
|
-
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
14
12
|
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
15
13
|
var _forwardRef = require("@mui/x-internals/forwardRef");
|
|
16
|
-
var
|
|
14
|
+
var _platform = require("@mui/x-internals/platform");
|
|
17
15
|
var _useGridPrivateApiContext = require("../../hooks/utils/useGridPrivateApiContext");
|
|
18
16
|
var _hooks = require("../../hooks");
|
|
19
17
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
@@ -45,7 +43,13 @@ const Scrollbar = (0, _styles.styled)('div', {
|
|
|
45
43
|
'&:hover': {
|
|
46
44
|
zIndex: 70
|
|
47
45
|
},
|
|
48
|
-
'--size': scrollbarSizeCssExpression
|
|
46
|
+
'--size': scrollbarSizeCssExpression,
|
|
47
|
+
// [iOS-scrollbar-swap]
|
|
48
|
+
// On iOS, native scrollbars of the `GridVirtualScroller` are shown instead,
|
|
49
|
+
// so hide these to avoid a duplicate thumb.
|
|
50
|
+
[_platform.iOSMediaQuery]: {
|
|
51
|
+
display: 'none'
|
|
52
|
+
}
|
|
49
53
|
});
|
|
50
54
|
const ScrollbarVertical = (0, _styles.styled)(Scrollbar, {
|
|
51
55
|
slot: 'internal'
|
|
@@ -91,64 +95,16 @@ const ScrollbarCorner = exports.ScrollbarCorner = (0, _styles.styled)(Scrollbar,
|
|
|
91
95
|
const GridVirtualScrollbar = exports.GridVirtualScrollbar = (0, _forwardRef.forwardRef)(function GridVirtualScrollbar(props, ref) {
|
|
92
96
|
const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
|
|
93
97
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
94
|
-
const isLocked = React.useRef(false);
|
|
95
|
-
const lastPosition = React.useRef(0);
|
|
96
|
-
const scrollbarRef = React.useRef(null);
|
|
97
98
|
const classes = useUtilityClasses(rootProps, props.position);
|
|
98
99
|
const dimensions = (0, _hooks.useGridSelector)(apiRef, _hooks.gridDimensionsSelector);
|
|
99
100
|
const propertyDimension = props.position === 'vertical' ? 'height' : 'width';
|
|
100
|
-
const propertyScroll = props.position === 'vertical' ? 'scrollTop' : 'scrollLeft';
|
|
101
|
-
const propertyScrollPosition = props.position === 'vertical' ? 'top' : 'left';
|
|
102
101
|
const scrollbarInnerSize = props.position === 'horizontal' ? dimensions.minimumSize.width : dimensions.minimumSize.height - dimensions.headersTotalHeight;
|
|
103
|
-
const onScrollerScroll = (0, _useEventCallback.default)(() => {
|
|
104
|
-
const scrollbar = scrollbarRef.current;
|
|
105
|
-
const scrollPosition = props.scrollPosition.current;
|
|
106
|
-
if (!scrollbar) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
if (scrollPosition[propertyScrollPosition] === lastPosition.current) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
lastPosition.current = scrollPosition[propertyScrollPosition];
|
|
113
|
-
if (isLocked.current) {
|
|
114
|
-
isLocked.current = false;
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
isLocked.current = true;
|
|
118
|
-
scrollbar[propertyScroll] = props.scrollPosition.current[propertyScrollPosition];
|
|
119
|
-
});
|
|
120
|
-
const onScrollbarScroll = (0, _useEventCallback.default)(() => {
|
|
121
|
-
const scroller = apiRef.current.virtualScrollerRef.current;
|
|
122
|
-
const scrollbar = scrollbarRef.current;
|
|
123
|
-
if (!scrollbar) {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
if (isLocked.current) {
|
|
127
|
-
isLocked.current = false;
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
isLocked.current = true;
|
|
131
|
-
scroller[propertyScroll] = scrollbar[propertyScroll];
|
|
132
|
-
});
|
|
133
|
-
(0, _useOnMount.useOnMount)(() => {
|
|
134
|
-
const scroller = apiRef.current.virtualScrollerRef.current;
|
|
135
|
-
const scrollbar = scrollbarRef.current;
|
|
136
|
-
const options = {
|
|
137
|
-
passive: true
|
|
138
|
-
};
|
|
139
|
-
scroller.addEventListener('scroll', onScrollerScroll, options);
|
|
140
|
-
scrollbar.addEventListener('scroll', onScrollbarScroll, options);
|
|
141
|
-
return () => {
|
|
142
|
-
scroller.removeEventListener('scroll', onScrollerScroll, options);
|
|
143
|
-
scrollbar.removeEventListener('scroll', onScrollbarScroll, options);
|
|
144
|
-
};
|
|
145
|
-
});
|
|
146
102
|
const Container = props.position === 'vertical' ? ScrollbarVertical : ScrollbarHorizontal;
|
|
147
103
|
const scrollbarInnerStyle = React.useMemo(() => ({
|
|
148
104
|
[propertyDimension]: `${scrollbarInnerSize}px`
|
|
149
105
|
}), [propertyDimension, scrollbarInnerSize]);
|
|
150
106
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, {
|
|
151
|
-
ref:
|
|
107
|
+
ref: ref,
|
|
152
108
|
className: classes.root,
|
|
153
109
|
tabIndex: -1,
|
|
154
110
|
"aria-hidden": "true"
|
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { styled } from '@mui/material/styles';
|
|
5
|
-
import useEventCallback from '@mui/utils/useEventCallback';
|
|
6
|
-
import useForkRef from '@mui/utils/useForkRef';
|
|
7
5
|
import composeClasses from '@mui/utils/composeClasses';
|
|
8
6
|
import { forwardRef } from '@mui/x-internals/forwardRef';
|
|
9
|
-
import {
|
|
7
|
+
import { iOSMediaQuery } from '@mui/x-internals/platform';
|
|
10
8
|
import { useGridPrivateApiContext } from "../../hooks/utils/useGridPrivateApiContext.mjs";
|
|
11
9
|
import { gridDimensionsSelector, useGridSelector } from "../../hooks/index.mjs";
|
|
12
10
|
import { useGridRootProps } from "../../hooks/utils/useGridRootProps.mjs";
|
|
@@ -38,7 +36,13 @@ const Scrollbar = styled('div', {
|
|
|
38
36
|
'&:hover': {
|
|
39
37
|
zIndex: 70
|
|
40
38
|
},
|
|
41
|
-
'--size': scrollbarSizeCssExpression
|
|
39
|
+
'--size': scrollbarSizeCssExpression,
|
|
40
|
+
// [iOS-scrollbar-swap]
|
|
41
|
+
// On iOS, native scrollbars of the `GridVirtualScroller` are shown instead,
|
|
42
|
+
// so hide these to avoid a duplicate thumb.
|
|
43
|
+
[iOSMediaQuery]: {
|
|
44
|
+
display: 'none'
|
|
45
|
+
}
|
|
42
46
|
});
|
|
43
47
|
const ScrollbarVertical = styled(Scrollbar, {
|
|
44
48
|
slot: 'internal'
|
|
@@ -84,64 +88,16 @@ export const ScrollbarCorner = styled(Scrollbar, {
|
|
|
84
88
|
const GridVirtualScrollbar = forwardRef(function GridVirtualScrollbar(props, ref) {
|
|
85
89
|
const apiRef = useGridPrivateApiContext();
|
|
86
90
|
const rootProps = useGridRootProps();
|
|
87
|
-
const isLocked = React.useRef(false);
|
|
88
|
-
const lastPosition = React.useRef(0);
|
|
89
|
-
const scrollbarRef = React.useRef(null);
|
|
90
91
|
const classes = useUtilityClasses(rootProps, props.position);
|
|
91
92
|
const dimensions = useGridSelector(apiRef, gridDimensionsSelector);
|
|
92
93
|
const propertyDimension = props.position === 'vertical' ? 'height' : 'width';
|
|
93
|
-
const propertyScroll = props.position === 'vertical' ? 'scrollTop' : 'scrollLeft';
|
|
94
|
-
const propertyScrollPosition = props.position === 'vertical' ? 'top' : 'left';
|
|
95
94
|
const scrollbarInnerSize = props.position === 'horizontal' ? dimensions.minimumSize.width : dimensions.minimumSize.height - dimensions.headersTotalHeight;
|
|
96
|
-
const onScrollerScroll = useEventCallback(() => {
|
|
97
|
-
const scrollbar = scrollbarRef.current;
|
|
98
|
-
const scrollPosition = props.scrollPosition.current;
|
|
99
|
-
if (!scrollbar) {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
if (scrollPosition[propertyScrollPosition] === lastPosition.current) {
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
lastPosition.current = scrollPosition[propertyScrollPosition];
|
|
106
|
-
if (isLocked.current) {
|
|
107
|
-
isLocked.current = false;
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
isLocked.current = true;
|
|
111
|
-
scrollbar[propertyScroll] = props.scrollPosition.current[propertyScrollPosition];
|
|
112
|
-
});
|
|
113
|
-
const onScrollbarScroll = useEventCallback(() => {
|
|
114
|
-
const scroller = apiRef.current.virtualScrollerRef.current;
|
|
115
|
-
const scrollbar = scrollbarRef.current;
|
|
116
|
-
if (!scrollbar) {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
if (isLocked.current) {
|
|
120
|
-
isLocked.current = false;
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
isLocked.current = true;
|
|
124
|
-
scroller[propertyScroll] = scrollbar[propertyScroll];
|
|
125
|
-
});
|
|
126
|
-
useOnMount(() => {
|
|
127
|
-
const scroller = apiRef.current.virtualScrollerRef.current;
|
|
128
|
-
const scrollbar = scrollbarRef.current;
|
|
129
|
-
const options = {
|
|
130
|
-
passive: true
|
|
131
|
-
};
|
|
132
|
-
scroller.addEventListener('scroll', onScrollerScroll, options);
|
|
133
|
-
scrollbar.addEventListener('scroll', onScrollbarScroll, options);
|
|
134
|
-
return () => {
|
|
135
|
-
scroller.removeEventListener('scroll', onScrollerScroll, options);
|
|
136
|
-
scrollbar.removeEventListener('scroll', onScrollbarScroll, options);
|
|
137
|
-
};
|
|
138
|
-
});
|
|
139
95
|
const Container = props.position === 'vertical' ? ScrollbarVertical : ScrollbarHorizontal;
|
|
140
96
|
const scrollbarInnerStyle = React.useMemo(() => ({
|
|
141
97
|
[propertyDimension]: `${scrollbarInnerSize}px`
|
|
142
98
|
}), [propertyDimension, scrollbarInnerSize]);
|
|
143
99
|
return /*#__PURE__*/_jsx(Container, {
|
|
144
|
-
ref:
|
|
100
|
+
ref: ref,
|
|
145
101
|
className: classes.root,
|
|
146
102
|
tabIndex: -1,
|
|
147
103
|
"aria-hidden": "true"
|
|
@@ -10,6 +10,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _styles = require("@mui/material/styles");
|
|
12
12
|
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
13
|
+
var _platform = require("@mui/x-internals/platform");
|
|
13
14
|
var _gridDimensionsSelectors = require("../../hooks/features/dimensions/gridDimensionsSelectors");
|
|
14
15
|
var _rows = require("../../hooks/features/rows");
|
|
15
16
|
var _GridScrollArea = require("../GridScrollArea");
|
|
@@ -64,6 +65,17 @@ const Scroller = (0, _styles.styled)('div', {
|
|
|
64
65
|
'&::-webkit-scrollbar': {
|
|
65
66
|
display: 'none' /* Safari and Chrome */
|
|
66
67
|
},
|
|
68
|
+
// [iOS-scrollbar-swap]
|
|
69
|
+
// On iOS, virtual scrollbars do not show a thumb unless the user scrolls the element directly:
|
|
70
|
+
// https://github.com/mui/mui-x/issues/22386
|
|
71
|
+
// So keep this scroller's own native scrollbars and hide the ones in `GridVirtualScrollbar`
|
|
72
|
+
// instead to avoid a duplicate thumb.
|
|
73
|
+
[_platform.iOSMediaQuery]: {
|
|
74
|
+
scrollbarWidth: 'auto',
|
|
75
|
+
'&::-webkit-scrollbar': {
|
|
76
|
+
display: 'block'
|
|
77
|
+
}
|
|
78
|
+
},
|
|
67
79
|
'@media print': {
|
|
68
80
|
overflow: 'hidden'
|
|
69
81
|
},
|
|
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { styled } from '@mui/material/styles';
|
|
4
4
|
import composeClasses from '@mui/utils/composeClasses';
|
|
5
|
+
import { iOSMediaQuery } from '@mui/x-internals/platform';
|
|
5
6
|
import { gridHasBottomFillerSelector, gridHasScrollXSelector, gridHasScrollYSelector } from "../../hooks/features/dimensions/gridDimensionsSelectors.mjs";
|
|
6
7
|
import { gridRowTreeSelector } from "../../hooks/features/rows/index.mjs";
|
|
7
8
|
import { GridScrollArea } from "../GridScrollArea.mjs";
|
|
@@ -56,6 +57,17 @@ const Scroller = styled('div', {
|
|
|
56
57
|
'&::-webkit-scrollbar': {
|
|
57
58
|
display: 'none' /* Safari and Chrome */
|
|
58
59
|
},
|
|
60
|
+
// [iOS-scrollbar-swap]
|
|
61
|
+
// On iOS, virtual scrollbars do not show a thumb unless the user scrolls the element directly:
|
|
62
|
+
// https://github.com/mui/mui-x/issues/22386
|
|
63
|
+
// So keep this scroller's own native scrollbars and hide the ones in `GridVirtualScrollbar`
|
|
64
|
+
// instead to avoid a duplicate thumb.
|
|
65
|
+
[iOSMediaQuery]: {
|
|
66
|
+
scrollbarWidth: 'auto',
|
|
67
|
+
'&::-webkit-scrollbar': {
|
|
68
|
+
display: 'block'
|
|
69
|
+
}
|
|
70
|
+
},
|
|
59
71
|
'@media print': {
|
|
60
72
|
overflow: 'hidden'
|
|
61
73
|
},
|
|
@@ -25,7 +25,30 @@ var _gridColumnsInterfaces = require("../columns/gridColumnsInterfaces");
|
|
|
25
25
|
var _columns = require("../columns");
|
|
26
26
|
var _dimensions = require("../dimensions");
|
|
27
27
|
var _headerFiltering = require("../headerFiltering");
|
|
28
|
+
var _pagination = require("../pagination");
|
|
28
29
|
var _columnResizeSelector = require("./columnResizeSelector");
|
|
30
|
+
function isRenderContextReadyForAutosizeOnMount(apiRef) {
|
|
31
|
+
const dimensions = (0, _dimensions.gridDimensionsSelector)(apiRef);
|
|
32
|
+
if (!dimensions.isReady) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
const {
|
|
36
|
+
rows
|
|
37
|
+
} = (0, _pagination.gridVisibleRowsSelector)(apiRef);
|
|
38
|
+
if (rows.length === 0) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
const renderContext = (0, _virtualization.gridRenderContextSelector)(apiRef);
|
|
42
|
+
if (renderContext.lastRowIndex <= renderContext.firstRowIndex) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// If all rows fit in the viewport, wait for them all; otherwise we can only measure the rendered rows.
|
|
47
|
+
if (!dimensions.hasScrollY) {
|
|
48
|
+
return renderContext.firstRowIndex === 0 && renderContext.lastRowIndex >= rows.length;
|
|
49
|
+
}
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
29
52
|
function trackFinger(event, currentTouchId) {
|
|
30
53
|
if (currentTouchId !== undefined && event.changedTouches) {
|
|
31
54
|
for (let i = 0; i < event.changedTouches.length; i += 1) {
|
|
@@ -589,10 +612,41 @@ const useGridColumnResize = (apiRef, props) => {
|
|
|
589
612
|
React.useEffect(() => stopListening, [stopListening]);
|
|
590
613
|
(0, _utils.useOnMount)(() => {
|
|
591
614
|
if (props.autosizeOnMount) {
|
|
592
|
-
|
|
615
|
+
let frameHandle;
|
|
616
|
+
let unsubscribeStateChange;
|
|
617
|
+
let unsubscribeRenderedRowsIntervalChange;
|
|
618
|
+
const cleanupListeners = () => {
|
|
619
|
+
unsubscribeStateChange?.();
|
|
620
|
+
unsubscribeRenderedRowsIntervalChange?.();
|
|
621
|
+
unsubscribeStateChange = undefined;
|
|
622
|
+
unsubscribeRenderedRowsIntervalChange = undefined;
|
|
623
|
+
};
|
|
624
|
+
const runAutosize = () => {
|
|
625
|
+
frameHandle = undefined;
|
|
626
|
+
cleanupListeners();
|
|
593
627
|
apiRef.current.autosizeColumns(props.autosizeOptions);
|
|
594
|
-
}
|
|
628
|
+
};
|
|
629
|
+
const scheduleAutosize = () => {
|
|
630
|
+
if (frameHandle === undefined) {
|
|
631
|
+
frameHandle = requestAnimationFrame(runAutosize);
|
|
632
|
+
}
|
|
633
|
+
};
|
|
634
|
+
const checkRenderContext = () => {
|
|
635
|
+
if (isRenderContextReadyForAutosizeOnMount(apiRef)) {
|
|
636
|
+
scheduleAutosize();
|
|
637
|
+
}
|
|
638
|
+
};
|
|
639
|
+
unsubscribeStateChange = apiRef.current.subscribeEvent('stateChange', checkRenderContext);
|
|
640
|
+
unsubscribeRenderedRowsIntervalChange = apiRef.current.subscribeEvent('renderedRowsIntervalChange', checkRenderContext);
|
|
641
|
+
checkRenderContext();
|
|
642
|
+
return () => {
|
|
643
|
+
cleanupListeners();
|
|
644
|
+
if (frameHandle !== undefined) {
|
|
645
|
+
cancelAnimationFrame(frameHandle);
|
|
646
|
+
}
|
|
647
|
+
};
|
|
595
648
|
}
|
|
649
|
+
return undefined;
|
|
596
650
|
});
|
|
597
651
|
(0, _utils.useGridNativeEventListener)(apiRef, () => apiRef.current.columnHeadersContainerRef?.current, 'touchstart', handleTouchStart, {
|
|
598
652
|
passive: true
|
|
@@ -10,7 +10,7 @@ import { findGridCellElementsFromCol, findGridElement, findLeftPinnedCellsAfterC
|
|
|
10
10
|
import { DEFAULT_GRID_AUTOSIZE_OPTIONS } from "./gridColumnResizeApi.mjs";
|
|
11
11
|
import { gridClasses } from "../../../constants/gridClasses.mjs";
|
|
12
12
|
import { useGridEvent, useGridApiMethod, useGridEventPriority, useGridLogger, useGridNativeEventListener, useGridSelector, useOnMount } from "../../utils/index.mjs";
|
|
13
|
-
import { gridVirtualizationColumnEnabledSelector } from "../virtualization/index.mjs";
|
|
13
|
+
import { gridRenderContextSelector, gridVirtualizationColumnEnabledSelector } from "../virtualization/index.mjs";
|
|
14
14
|
import { createControllablePromise } from "../../../utils/createControllablePromise.mjs";
|
|
15
15
|
import { clamp } from "../../../utils/utils.mjs";
|
|
16
16
|
import { useTimeout } from "../../utils/useTimeout.mjs";
|
|
@@ -18,7 +18,30 @@ import { GridPinnedColumnPosition } from "../columns/gridColumnsInterfaces.mjs";
|
|
|
18
18
|
import { gridColumnsStateSelector } from "../columns/index.mjs";
|
|
19
19
|
import { gridDimensionsSelector } from "../dimensions/index.mjs";
|
|
20
20
|
import { gridHeaderFilteringEnabledSelector } from "../headerFiltering/index.mjs";
|
|
21
|
+
import { gridVisibleRowsSelector } from "../pagination/index.mjs";
|
|
21
22
|
import { gridResizingColumnFieldSelector } from "./columnResizeSelector.mjs";
|
|
23
|
+
function isRenderContextReadyForAutosizeOnMount(apiRef) {
|
|
24
|
+
const dimensions = gridDimensionsSelector(apiRef);
|
|
25
|
+
if (!dimensions.isReady) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
const {
|
|
29
|
+
rows
|
|
30
|
+
} = gridVisibleRowsSelector(apiRef);
|
|
31
|
+
if (rows.length === 0) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
const renderContext = gridRenderContextSelector(apiRef);
|
|
35
|
+
if (renderContext.lastRowIndex <= renderContext.firstRowIndex) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// If all rows fit in the viewport, wait for them all; otherwise we can only measure the rendered rows.
|
|
40
|
+
if (!dimensions.hasScrollY) {
|
|
41
|
+
return renderContext.firstRowIndex === 0 && renderContext.lastRowIndex >= rows.length;
|
|
42
|
+
}
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
22
45
|
function trackFinger(event, currentTouchId) {
|
|
23
46
|
if (currentTouchId !== undefined && event.changedTouches) {
|
|
24
47
|
for (let i = 0; i < event.changedTouches.length; i += 1) {
|
|
@@ -581,10 +604,41 @@ export const useGridColumnResize = (apiRef, props) => {
|
|
|
581
604
|
React.useEffect(() => stopListening, [stopListening]);
|
|
582
605
|
useOnMount(() => {
|
|
583
606
|
if (props.autosizeOnMount) {
|
|
584
|
-
|
|
607
|
+
let frameHandle;
|
|
608
|
+
let unsubscribeStateChange;
|
|
609
|
+
let unsubscribeRenderedRowsIntervalChange;
|
|
610
|
+
const cleanupListeners = () => {
|
|
611
|
+
unsubscribeStateChange?.();
|
|
612
|
+
unsubscribeRenderedRowsIntervalChange?.();
|
|
613
|
+
unsubscribeStateChange = undefined;
|
|
614
|
+
unsubscribeRenderedRowsIntervalChange = undefined;
|
|
615
|
+
};
|
|
616
|
+
const runAutosize = () => {
|
|
617
|
+
frameHandle = undefined;
|
|
618
|
+
cleanupListeners();
|
|
585
619
|
apiRef.current.autosizeColumns(props.autosizeOptions);
|
|
586
|
-
}
|
|
620
|
+
};
|
|
621
|
+
const scheduleAutosize = () => {
|
|
622
|
+
if (frameHandle === undefined) {
|
|
623
|
+
frameHandle = requestAnimationFrame(runAutosize);
|
|
624
|
+
}
|
|
625
|
+
};
|
|
626
|
+
const checkRenderContext = () => {
|
|
627
|
+
if (isRenderContextReadyForAutosizeOnMount(apiRef)) {
|
|
628
|
+
scheduleAutosize();
|
|
629
|
+
}
|
|
630
|
+
};
|
|
631
|
+
unsubscribeStateChange = apiRef.current.subscribeEvent('stateChange', checkRenderContext);
|
|
632
|
+
unsubscribeRenderedRowsIntervalChange = apiRef.current.subscribeEvent('renderedRowsIntervalChange', checkRenderContext);
|
|
633
|
+
checkRenderContext();
|
|
634
|
+
return () => {
|
|
635
|
+
cleanupListeners();
|
|
636
|
+
if (frameHandle !== undefined) {
|
|
637
|
+
cancelAnimationFrame(frameHandle);
|
|
638
|
+
}
|
|
639
|
+
};
|
|
587
640
|
}
|
|
641
|
+
return undefined;
|
|
588
642
|
});
|
|
589
643
|
useGridNativeEventListener(apiRef, () => apiRef.current.columnHeadersContainerRef?.current, 'touchstart', handleTouchStart, {
|
|
590
644
|
passive: true
|
|
@@ -149,7 +149,7 @@ const isAutogeneratedRowNode = rowNode => rowNode.type === 'skeletonRow' || rowN
|
|
|
149
149
|
exports.isAutogeneratedRowNode = isAutogeneratedRowNode;
|
|
150
150
|
const getTreeNodeDescendants = (tree, parentId, skipAutoGeneratedRows, directChildrenOnly) => {
|
|
151
151
|
const node = tree[parentId];
|
|
152
|
-
if (node
|
|
152
|
+
if (node?.type !== 'group') {
|
|
153
153
|
return [];
|
|
154
154
|
}
|
|
155
155
|
const validDescendants = [];
|
|
@@ -131,7 +131,7 @@ export const isAutogeneratedRow = row => GRID_ID_AUTOGENERATED in row;
|
|
|
131
131
|
export const isAutogeneratedRowNode = rowNode => rowNode.type === 'skeletonRow' || rowNode.type === 'footer' || rowNode.type === 'group' && rowNode.isAutoGenerated || rowNode.type === 'pinnedRow' && rowNode.isAutoGenerated;
|
|
132
132
|
export const getTreeNodeDescendants = (tree, parentId, skipAutoGeneratedRows, directChildrenOnly) => {
|
|
133
133
|
const node = tree[parentId];
|
|
134
|
-
if (node
|
|
134
|
+
if (node?.type !== 'group') {
|
|
135
135
|
return [];
|
|
136
136
|
}
|
|
137
137
|
const validDescendants = [];
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
'use client';
|
|
3
3
|
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
5
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
6
|
Object.defineProperty(exports, "__esModule", {
|
|
6
7
|
value: true
|
|
@@ -8,9 +9,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
9
|
exports.objectShallowCompare = exports.argsEqual = void 0;
|
|
9
10
|
exports.useGridSelector = useGridSelector;
|
|
10
11
|
var React = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
|
|
11
13
|
var _fastObjectShallowCompare = require("@mui/x-internals/fastObjectShallowCompare");
|
|
12
14
|
var _warning = require("@mui/x-internals/warning");
|
|
13
|
-
var _shim = require("use-sync-external-store/shim");
|
|
14
15
|
var _useLazyRef = require("./useLazyRef");
|
|
15
16
|
const defaultCompare = Object.is;
|
|
16
17
|
const objectShallowCompare = exports.objectShallowCompare = _fastObjectShallowCompare.fastObjectShallowCompare;
|
|
@@ -34,10 +35,10 @@ const createRefs = () => ({
|
|
|
34
35
|
state: null,
|
|
35
36
|
equals: null,
|
|
36
37
|
selector: null,
|
|
37
|
-
args: undefined
|
|
38
|
+
args: undefined,
|
|
39
|
+
storeState: null
|
|
38
40
|
});
|
|
39
41
|
const EMPTY = [];
|
|
40
|
-
const emptyGetSnapshot = () => null;
|
|
41
42
|
function useGridSelector(apiRef, selector, args = undefined, equals = defaultCompare) {
|
|
42
43
|
if (!apiRef.current.state) {
|
|
43
44
|
(0, _warning.warnOnce)(['MUI X: `useGridSelector` has been called before the initialization of the state.', 'This hook can only be used inside the context of the grid.']);
|
|
@@ -48,6 +49,9 @@ function useGridSelector(apiRef, selector, args = undefined, equals = defaultCom
|
|
|
48
49
|
// We don't use an initialization function to avoid allocations
|
|
49
50
|
didInit ? null : selector(apiRef, args));
|
|
50
51
|
refs.current.state = state;
|
|
52
|
+
if (!didInit) {
|
|
53
|
+
refs.current.storeState = apiRef.current.store.state;
|
|
54
|
+
}
|
|
51
55
|
refs.current.equals = equals;
|
|
52
56
|
refs.current.selector = selector;
|
|
53
57
|
const prevArgs = refs.current.args;
|
|
@@ -58,35 +62,34 @@ function useGridSelector(apiRef, selector, args = undefined, equals = defaultCom
|
|
|
58
62
|
refs.current.state = newState;
|
|
59
63
|
setState(newState);
|
|
60
64
|
}
|
|
65
|
+
refs.current.storeState = apiRef.current.store.state;
|
|
61
66
|
}
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
refs.current.subscription = apiRef.current.store.subscribe(() => {
|
|
67
|
+
const updateState = React.useCallback(() => {
|
|
68
|
+
const storeState = apiRef.current.store.state;
|
|
69
|
+
if (refs.current.storeState !== storeState) {
|
|
67
70
|
const newState = refs.current.selector(apiRef, refs.current.args);
|
|
71
|
+
refs.current.storeState = storeState;
|
|
68
72
|
if (!refs.current.equals(refs.current.state, newState)) {
|
|
69
73
|
refs.current.state = newState;
|
|
70
74
|
setState(newState);
|
|
71
75
|
}
|
|
72
|
-
}
|
|
73
|
-
return null;
|
|
76
|
+
}
|
|
74
77
|
},
|
|
75
78
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
76
79
|
EMPTY);
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
80
|
+
|
|
81
|
+
// Why subscribe in an effect instead of during render: a component can render without
|
|
82
|
+
// ever mounting (e.g. when it suspends during hydration). If it subscribed during render,
|
|
83
|
+
// it could receive a store update and call `setState` before being mounted (#17077).
|
|
84
|
+
// Effects only run for mounted components, so subscribing here is safe.
|
|
85
|
+
//
|
|
86
|
+
// Using a layout effect because the store may already have changed
|
|
87
|
+
// between render and mount (e.g. from a child's ref callback or layout effect).
|
|
88
|
+
// `updateState()` picks up such changes, so the corrected value is shown right away instead of in a second frame.
|
|
89
|
+
(0, _useEnhancedEffect.default)(() => {
|
|
90
|
+
updateState();
|
|
91
|
+
return apiRef.current.store.subscribe(updateState);
|
|
88
92
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
89
93
|
}, EMPTY);
|
|
90
|
-
(0, _shim.useSyncExternalStore)(unsubscribe, subscribe, emptyGetSnapshot);
|
|
91
94
|
return state;
|
|
92
95
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
|
+
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
4
5
|
import { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare';
|
|
5
6
|
import { warnOnce } from '@mui/x-internals/warning';
|
|
6
|
-
import { useSyncExternalStore } from 'use-sync-external-store/shim';
|
|
7
7
|
import { useLazyRef } from "./useLazyRef.mjs";
|
|
8
8
|
const defaultCompare = Object.is;
|
|
9
9
|
export const objectShallowCompare = fastObjectShallowCompare;
|
|
@@ -26,10 +26,10 @@ const createRefs = () => ({
|
|
|
26
26
|
state: null,
|
|
27
27
|
equals: null,
|
|
28
28
|
selector: null,
|
|
29
|
-
args: undefined
|
|
29
|
+
args: undefined,
|
|
30
|
+
storeState: null
|
|
30
31
|
});
|
|
31
32
|
const EMPTY = [];
|
|
32
|
-
const emptyGetSnapshot = () => null;
|
|
33
33
|
export function useGridSelector(apiRef, selector, args = undefined, equals = defaultCompare) {
|
|
34
34
|
if (!apiRef.current.state) {
|
|
35
35
|
warnOnce(['MUI X: `useGridSelector` has been called before the initialization of the state.', 'This hook can only be used inside the context of the grid.']);
|
|
@@ -40,6 +40,9 @@ export function useGridSelector(apiRef, selector, args = undefined, equals = def
|
|
|
40
40
|
// We don't use an initialization function to avoid allocations
|
|
41
41
|
didInit ? null : selector(apiRef, args));
|
|
42
42
|
refs.current.state = state;
|
|
43
|
+
if (!didInit) {
|
|
44
|
+
refs.current.storeState = apiRef.current.store.state;
|
|
45
|
+
}
|
|
43
46
|
refs.current.equals = equals;
|
|
44
47
|
refs.current.selector = selector;
|
|
45
48
|
const prevArgs = refs.current.args;
|
|
@@ -50,35 +53,34 @@ export function useGridSelector(apiRef, selector, args = undefined, equals = def
|
|
|
50
53
|
refs.current.state = newState;
|
|
51
54
|
setState(newState);
|
|
52
55
|
}
|
|
56
|
+
refs.current.storeState = apiRef.current.store.state;
|
|
53
57
|
}
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
refs.current.subscription = apiRef.current.store.subscribe(() => {
|
|
58
|
+
const updateState = React.useCallback(() => {
|
|
59
|
+
const storeState = apiRef.current.store.state;
|
|
60
|
+
if (refs.current.storeState !== storeState) {
|
|
59
61
|
const newState = refs.current.selector(apiRef, refs.current.args);
|
|
62
|
+
refs.current.storeState = storeState;
|
|
60
63
|
if (!refs.current.equals(refs.current.state, newState)) {
|
|
61
64
|
refs.current.state = newState;
|
|
62
65
|
setState(newState);
|
|
63
66
|
}
|
|
64
|
-
}
|
|
65
|
-
return null;
|
|
67
|
+
}
|
|
66
68
|
},
|
|
67
69
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
68
70
|
EMPTY);
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
71
|
+
|
|
72
|
+
// Why subscribe in an effect instead of during render: a component can render without
|
|
73
|
+
// ever mounting (e.g. when it suspends during hydration). If it subscribed during render,
|
|
74
|
+
// it could receive a store update and call `setState` before being mounted (#17077).
|
|
75
|
+
// Effects only run for mounted components, so subscribing here is safe.
|
|
76
|
+
//
|
|
77
|
+
// Using a layout effect because the store may already have changed
|
|
78
|
+
// between render and mount (e.g. from a child's ref callback or layout effect).
|
|
79
|
+
// `updateState()` picks up such changes, so the corrected value is shown right away instead of in a second frame.
|
|
80
|
+
useEnhancedEffect(() => {
|
|
81
|
+
updateState();
|
|
82
|
+
return apiRef.current.store.subscribe(updateState);
|
|
80
83
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
81
84
|
}, EMPTY);
|
|
82
|
-
useSyncExternalStore(unsubscribe, subscribe, emptyGetSnapshot);
|
|
83
85
|
return state;
|
|
84
86
|
}
|
package/index.js
CHANGED
package/index.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-data-grid",
|
|
3
|
-
"version": "8.29.
|
|
3
|
+
"version": "8.29.2",
|
|
4
4
|
"author": "MUI Team",
|
|
5
5
|
"description": "The Community plan edition of the MUI X Data Grid components.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"clsx": "^2.1.1",
|
|
43
43
|
"prop-types": "^15.8.1",
|
|
44
44
|
"use-sync-external-store": "^1.6.0",
|
|
45
|
-
"@mui/x-internals": "8.29.
|
|
46
|
-
"@mui/x-virtualizer": "0.4.
|
|
45
|
+
"@mui/x-internals": "8.29.2",
|
|
46
|
+
"@mui/x-virtualizer": "0.4.1"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
49
|
"@emotion/react": "^11.9.0",
|
|
@@ -166,98 +166,98 @@
|
|
|
166
166
|
}
|
|
167
167
|
},
|
|
168
168
|
"./context": {
|
|
169
|
-
"import": {
|
|
170
|
-
"types": "./context/index.d.mts",
|
|
171
|
-
"default": "./context/index.mjs"
|
|
172
|
-
},
|
|
173
169
|
"require": {
|
|
174
170
|
"types": "./context/index.d.ts",
|
|
175
171
|
"default": "./context/index.js"
|
|
176
172
|
},
|
|
173
|
+
"import": {
|
|
174
|
+
"types": "./context/index.d.mts",
|
|
175
|
+
"default": "./context/index.mjs"
|
|
176
|
+
},
|
|
177
177
|
"default": {
|
|
178
178
|
"types": "./context/index.d.mts",
|
|
179
179
|
"default": "./context/index.mjs"
|
|
180
180
|
}
|
|
181
181
|
},
|
|
182
182
|
"./hooks": {
|
|
183
|
-
"import": {
|
|
184
|
-
"types": "./hooks/index.d.mts",
|
|
185
|
-
"default": "./hooks/index.mjs"
|
|
186
|
-
},
|
|
187
183
|
"require": {
|
|
188
184
|
"types": "./hooks/index.d.ts",
|
|
189
185
|
"default": "./hooks/index.js"
|
|
190
186
|
},
|
|
187
|
+
"import": {
|
|
188
|
+
"types": "./hooks/index.d.mts",
|
|
189
|
+
"default": "./hooks/index.mjs"
|
|
190
|
+
},
|
|
191
191
|
"default": {
|
|
192
192
|
"types": "./hooks/index.d.mts",
|
|
193
193
|
"default": "./hooks/index.mjs"
|
|
194
194
|
}
|
|
195
195
|
},
|
|
196
196
|
"./internals": {
|
|
197
|
-
"import": {
|
|
198
|
-
"types": "./internals/index.d.mts",
|
|
199
|
-
"default": "./internals/index.mjs"
|
|
200
|
-
},
|
|
201
197
|
"require": {
|
|
202
198
|
"types": "./internals/index.d.ts",
|
|
203
199
|
"default": "./internals/index.js"
|
|
204
200
|
},
|
|
201
|
+
"import": {
|
|
202
|
+
"types": "./internals/index.d.mts",
|
|
203
|
+
"default": "./internals/index.mjs"
|
|
204
|
+
},
|
|
205
205
|
"default": {
|
|
206
206
|
"types": "./internals/index.d.mts",
|
|
207
207
|
"default": "./internals/index.mjs"
|
|
208
208
|
}
|
|
209
209
|
},
|
|
210
210
|
"./locales": {
|
|
211
|
-
"import": {
|
|
212
|
-
"types": "./locales/index.d.mts",
|
|
213
|
-
"default": "./locales/index.mjs"
|
|
214
|
-
},
|
|
215
211
|
"require": {
|
|
216
212
|
"types": "./locales/index.d.ts",
|
|
217
213
|
"default": "./locales/index.js"
|
|
218
214
|
},
|
|
215
|
+
"import": {
|
|
216
|
+
"types": "./locales/index.d.mts",
|
|
217
|
+
"default": "./locales/index.mjs"
|
|
218
|
+
},
|
|
219
219
|
"default": {
|
|
220
220
|
"types": "./locales/index.d.mts",
|
|
221
221
|
"default": "./locales/index.mjs"
|
|
222
222
|
}
|
|
223
223
|
},
|
|
224
224
|
"./models": {
|
|
225
|
-
"import": {
|
|
226
|
-
"types": "./models/index.d.mts",
|
|
227
|
-
"default": "./models/index.mjs"
|
|
228
|
-
},
|
|
229
225
|
"require": {
|
|
230
226
|
"types": "./models/index.d.ts",
|
|
231
227
|
"default": "./models/index.js"
|
|
232
228
|
},
|
|
229
|
+
"import": {
|
|
230
|
+
"types": "./models/index.d.mts",
|
|
231
|
+
"default": "./models/index.mjs"
|
|
232
|
+
},
|
|
233
233
|
"default": {
|
|
234
234
|
"types": "./models/index.d.mts",
|
|
235
235
|
"default": "./models/index.mjs"
|
|
236
236
|
}
|
|
237
237
|
},
|
|
238
238
|
"./themeAugmentation": {
|
|
239
|
-
"import": {
|
|
240
|
-
"types": "./themeAugmentation/index.d.mts",
|
|
241
|
-
"default": "./themeAugmentation/index.mjs"
|
|
242
|
-
},
|
|
243
239
|
"require": {
|
|
244
240
|
"types": "./themeAugmentation/index.d.ts",
|
|
245
241
|
"default": "./themeAugmentation/index.js"
|
|
246
242
|
},
|
|
243
|
+
"import": {
|
|
244
|
+
"types": "./themeAugmentation/index.d.mts",
|
|
245
|
+
"default": "./themeAugmentation/index.mjs"
|
|
246
|
+
},
|
|
247
247
|
"default": {
|
|
248
248
|
"types": "./themeAugmentation/index.d.mts",
|
|
249
249
|
"default": "./themeAugmentation/index.mjs"
|
|
250
250
|
}
|
|
251
251
|
},
|
|
252
252
|
"./utils": {
|
|
253
|
-
"import": {
|
|
254
|
-
"types": "./utils/index.d.mts",
|
|
255
|
-
"default": "./utils/index.mjs"
|
|
256
|
-
},
|
|
257
253
|
"require": {
|
|
258
254
|
"types": "./utils/index.d.ts",
|
|
259
255
|
"default": "./utils/index.js"
|
|
260
256
|
},
|
|
257
|
+
"import": {
|
|
258
|
+
"types": "./utils/index.d.mts",
|
|
259
|
+
"default": "./utils/index.mjs"
|
|
260
|
+
},
|
|
261
261
|
"default": {
|
|
262
262
|
"types": "./utils/index.d.mts",
|
|
263
263
|
"default": "./utils/index.mjs"
|