@mui/x-data-grid 6.2.1 → 6.3.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 +118 -3
- package/components/GridPagination.js +3 -1
- package/components/base/GridBody.d.ts +1 -0
- package/components/base/GridBody.js +12 -3
- package/components/cell/GridActionsCell.d.ts +2 -3
- package/components/cell/GridActionsCell.js +9 -1
- package/components/containers/GridRootStyles.js +3 -1
- package/components/panel/GridPanel.d.ts +3 -2
- package/components/toolbar/GridToolbarFilterButton.js +3 -1
- package/constants/gridClasses.js +1 -1
- package/hooks/features/columnGrouping/useGridColumnGrouping.js +22 -15
- package/hooks/features/focus/useGridFocus.js +2 -2
- package/index.js +1 -1
- package/joy/joySlots.js +234 -24
- package/legacy/components/GridPagination.js +3 -1
- package/legacy/components/base/GridBody.js +12 -3
- package/legacy/components/cell/GridActionsCell.js +11 -2
- package/legacy/components/containers/GridRootStyles.js +3 -1
- package/legacy/components/toolbar/GridToolbarFilterButton.js +3 -1
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +22 -15
- package/legacy/hooks/features/focus/useGridFocus.js +2 -2
- package/legacy/index.js +1 -1
- package/legacy/joy/joySlots.js +229 -17
- package/legacy/locales/frFR.js +2 -2
- package/legacy/locales/trTR.js +2 -2
- package/legacy/locales/zhCN.js +2 -2
- package/locales/frFR.js +2 -2
- package/locales/trTR.js +2 -2
- package/locales/zhCN.js +2 -2
- package/material/index.d.ts +3 -2
- package/modern/components/GridPagination.js +2 -1
- package/modern/components/base/GridBody.js +12 -3
- package/modern/components/cell/GridActionsCell.js +9 -1
- package/modern/components/containers/GridRootStyles.js +3 -1
- package/modern/components/toolbar/GridToolbarFilterButton.js +3 -1
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +21 -14
- package/modern/hooks/features/focus/useGridFocus.js +2 -2
- package/modern/index.js +1 -1
- package/modern/joy/joySlots.js +231 -24
- package/modern/locales/frFR.js +2 -2
- package/modern/locales/trTR.js +2 -2
- package/modern/locales/zhCN.js +2 -2
- package/node/components/GridPagination.js +2 -1
- package/node/components/base/GridBody.js +12 -3
- package/node/components/cell/GridActionsCell.js +9 -1
- package/node/components/containers/GridRootStyles.js +3 -1
- package/node/components/toolbar/GridToolbarFilterButton.js +3 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +20 -11
- package/node/hooks/features/focus/useGridFocus.js +2 -2
- package/node/index.js +1 -1
- package/node/joy/joySlots.js +231 -24
- package/node/locales/frFR.js +2 -2
- package/node/locales/trTR.js +2 -2
- package/node/locales/zhCN.js +2 -2
- package/package.json +3 -3
package/joy/joySlots.js
CHANGED
|
@@ -1,13 +1,57 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["touchRippleRef", "inputProps", "onChange", "color", "size", "checked", "sx", "value", "inputRef"]
|
|
3
|
+
const _excluded = ["touchRippleRef", "inputProps", "onChange", "color", "size", "checked", "sx", "value", "inputRef"],
|
|
4
|
+
_excluded2 = ["onChange", "label", "placeholder", "value", "inputRef", "type", "size", "variant"],
|
|
5
|
+
_excluded3 = ["startIcon", "color", "endIcon", "size", "sx", "variant"],
|
|
6
|
+
_excluded4 = ["color", "size", "sx", "touchRippleRef"],
|
|
7
|
+
_excluded5 = ["name", "checkedIcon", "color", "disableRipple", "disableFocusRipple", "disableTouchRipple", "edge", "icon", "inputProps", "inputRef", "size", "sx", "onChange", "onClick"],
|
|
8
|
+
_excluded6 = ["open", "onOpen", "value", "onChange", "size", "color", "variant", "inputProps", "MenuProps", "inputRef", "error", "native", "fullWidth", "labelId"],
|
|
9
|
+
_excluded7 = ["native"],
|
|
10
|
+
_excluded8 = ["shrink", "variant", "sx"];
|
|
4
11
|
import * as React from 'react';
|
|
5
12
|
import JoyCheckbox from '@mui/joy/Checkbox';
|
|
6
13
|
import JoyInput from '@mui/joy/Input';
|
|
7
14
|
import JoyFormControl from '@mui/joy/FormControl';
|
|
8
15
|
import JoyFormLabel from '@mui/joy/FormLabel';
|
|
16
|
+
import JoyButton from '@mui/joy/Button';
|
|
17
|
+
import JoyIconButton from '@mui/joy/IconButton';
|
|
18
|
+
import JoySwitch from '@mui/joy/Switch';
|
|
19
|
+
import JoySelect from '@mui/joy/Select';
|
|
20
|
+
import JoyOption from '@mui/joy/Option';
|
|
21
|
+
import { unstable_useForkRef as useForkRef } from '@mui/utils';
|
|
9
22
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
23
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
|
+
function convertColor(color) {
|
|
25
|
+
if (color === 'secondary') {
|
|
26
|
+
return 'primary';
|
|
27
|
+
}
|
|
28
|
+
if (color === 'error') {
|
|
29
|
+
return 'danger';
|
|
30
|
+
}
|
|
31
|
+
if (color === 'default' || color === 'inherit') {
|
|
32
|
+
return 'neutral';
|
|
33
|
+
}
|
|
34
|
+
return color;
|
|
35
|
+
}
|
|
36
|
+
function convertSize(size) {
|
|
37
|
+
return size ? {
|
|
38
|
+
small: 'sm',
|
|
39
|
+
medium: 'md',
|
|
40
|
+
large: 'lg'
|
|
41
|
+
}[size] : size;
|
|
42
|
+
}
|
|
43
|
+
function convertVariant(variant, defaultVariant = 'plain') {
|
|
44
|
+
if (!variant) {
|
|
45
|
+
return defaultVariant;
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
standard: 'outlined',
|
|
49
|
+
outlined: 'outlined',
|
|
50
|
+
contained: 'solid',
|
|
51
|
+
text: 'plain',
|
|
52
|
+
filled: 'soft'
|
|
53
|
+
}[variant] || defaultVariant;
|
|
54
|
+
}
|
|
11
55
|
const Checkbox = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
12
56
|
let {
|
|
13
57
|
inputProps,
|
|
@@ -27,43 +71,209 @@ const Checkbox = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
27
71
|
onChange: onChange
|
|
28
72
|
}));
|
|
29
73
|
});
|
|
30
|
-
const TextField = /*#__PURE__*/React.forwardRef(({
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
74
|
+
const TextField = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
|
|
75
|
+
var _props$InputProps, _props$inputProps;
|
|
76
|
+
let {
|
|
77
|
+
onChange,
|
|
78
|
+
label,
|
|
79
|
+
placeholder,
|
|
80
|
+
value,
|
|
81
|
+
inputRef,
|
|
82
|
+
type,
|
|
83
|
+
size,
|
|
84
|
+
variant
|
|
85
|
+
} = _ref2,
|
|
86
|
+
props = _objectWithoutPropertiesLoose(_ref2, _excluded2);
|
|
87
|
+
const rootRef = useForkRef(ref, (_props$InputProps = props.InputProps) == null ? void 0 : _props$InputProps.ref);
|
|
88
|
+
const inputForkRef = useForkRef(inputRef, props == null ? void 0 : (_props$inputProps = props.inputProps) == null ? void 0 : _props$inputProps.ref);
|
|
89
|
+
const {
|
|
90
|
+
startAdornment,
|
|
91
|
+
endAdornment
|
|
92
|
+
} = props.InputProps || {};
|
|
38
93
|
return /*#__PURE__*/_jsxs(JoyFormControl, {
|
|
39
|
-
ref:
|
|
94
|
+
ref: rootRef,
|
|
40
95
|
children: [/*#__PURE__*/_jsx(JoyFormLabel, {
|
|
41
|
-
sx: {
|
|
42
|
-
fontSize: 12
|
|
43
|
-
},
|
|
44
96
|
children: label
|
|
45
97
|
}), /*#__PURE__*/_jsx(JoyInput, {
|
|
46
98
|
type: type,
|
|
47
99
|
value: value,
|
|
48
100
|
onChange: onChange,
|
|
49
101
|
placeholder: placeholder,
|
|
50
|
-
|
|
102
|
+
variant: convertVariant(variant, 'outlined'),
|
|
103
|
+
size: convertSize(size),
|
|
51
104
|
slotProps: {
|
|
52
|
-
input: {
|
|
53
|
-
ref:
|
|
54
|
-
}
|
|
55
|
-
}
|
|
105
|
+
input: _extends({}, props == null ? void 0 : props.inputProps, {
|
|
106
|
+
ref: inputForkRef
|
|
107
|
+
})
|
|
108
|
+
},
|
|
109
|
+
startDecorator: startAdornment,
|
|
110
|
+
endDecorator: endAdornment
|
|
56
111
|
})]
|
|
57
112
|
});
|
|
58
113
|
});
|
|
114
|
+
const Button = /*#__PURE__*/React.forwardRef(function Button(_ref3, ref) {
|
|
115
|
+
let {
|
|
116
|
+
startIcon,
|
|
117
|
+
color,
|
|
118
|
+
endIcon,
|
|
119
|
+
size,
|
|
120
|
+
sx,
|
|
121
|
+
variant
|
|
122
|
+
} = _ref3,
|
|
123
|
+
props = _objectWithoutPropertiesLoose(_ref3, _excluded3);
|
|
124
|
+
return /*#__PURE__*/_jsx(JoyButton, _extends({}, props, {
|
|
125
|
+
size: convertSize(size),
|
|
126
|
+
color: convertColor(color),
|
|
127
|
+
variant: convertVariant(variant),
|
|
128
|
+
ref: ref,
|
|
129
|
+
startDecorator: startIcon,
|
|
130
|
+
endDecorator: endIcon,
|
|
131
|
+
sx: sx
|
|
132
|
+
}));
|
|
133
|
+
});
|
|
134
|
+
const IconButton = /*#__PURE__*/React.forwardRef(function IconButton(_ref4, ref) {
|
|
135
|
+
var _convertColor;
|
|
136
|
+
let {
|
|
137
|
+
color,
|
|
138
|
+
size,
|
|
139
|
+
sx
|
|
140
|
+
} = _ref4,
|
|
141
|
+
props = _objectWithoutPropertiesLoose(_ref4, _excluded4);
|
|
142
|
+
return /*#__PURE__*/_jsx(JoyIconButton, _extends({}, props, {
|
|
143
|
+
size: convertSize(size),
|
|
144
|
+
color: (_convertColor = convertColor(color)) != null ? _convertColor : 'neutral',
|
|
145
|
+
variant: "plain",
|
|
146
|
+
ref: ref,
|
|
147
|
+
sx: sx
|
|
148
|
+
}));
|
|
149
|
+
});
|
|
150
|
+
const Switch = /*#__PURE__*/React.forwardRef(function Switch(_ref5, ref) {
|
|
151
|
+
let {
|
|
152
|
+
name,
|
|
153
|
+
color: colorProp,
|
|
154
|
+
edge,
|
|
155
|
+
icon,
|
|
156
|
+
inputProps,
|
|
157
|
+
inputRef,
|
|
158
|
+
size,
|
|
159
|
+
sx,
|
|
160
|
+
onChange,
|
|
161
|
+
onClick
|
|
162
|
+
} = _ref5,
|
|
163
|
+
props = _objectWithoutPropertiesLoose(_ref5, _excluded5);
|
|
164
|
+
return /*#__PURE__*/_jsx(JoySwitch, _extends({}, props, {
|
|
165
|
+
onChange: onChange,
|
|
166
|
+
size: convertSize(size),
|
|
167
|
+
color: convertColor(colorProp),
|
|
168
|
+
ref: ref,
|
|
169
|
+
slotProps: {
|
|
170
|
+
input: _extends({}, inputProps, {
|
|
171
|
+
name,
|
|
172
|
+
onClick: onClick,
|
|
173
|
+
ref: inputRef
|
|
174
|
+
}),
|
|
175
|
+
thumb: {
|
|
176
|
+
children: icon
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
sx: [_extends({}, edge === 'start' && {
|
|
180
|
+
ml: '-8px'
|
|
181
|
+
}, edge === 'end' && {
|
|
182
|
+
mr: '-8px'
|
|
183
|
+
}), ...(Array.isArray(sx) ? sx : [sx])]
|
|
184
|
+
}));
|
|
185
|
+
});
|
|
186
|
+
const Select = /*#__PURE__*/React.forwardRef((_ref6, ref) => {
|
|
187
|
+
let {
|
|
188
|
+
open,
|
|
189
|
+
onOpen,
|
|
190
|
+
value,
|
|
191
|
+
onChange,
|
|
192
|
+
size,
|
|
193
|
+
color,
|
|
194
|
+
variant,
|
|
195
|
+
MenuProps,
|
|
196
|
+
inputRef,
|
|
197
|
+
labelId
|
|
198
|
+
} = _ref6,
|
|
199
|
+
props = _objectWithoutPropertiesLoose(_ref6, _excluded6);
|
|
200
|
+
const handleChange = (event, newValue) => {
|
|
201
|
+
if (event && onChange) {
|
|
202
|
+
// Same as in https://github.com/mui/material-ui/blob/e5558282a8f36856aef1299f3a36f3235e92e770/packages/mui-material/src/Select/SelectInput.js#L288-L300
|
|
203
|
+
|
|
204
|
+
// Redefine target to allow name and value to be read.
|
|
205
|
+
// This allows seamless integration with the most popular form libraries.
|
|
206
|
+
// https://github.com/mui/material-ui/issues/13485#issuecomment-676048492
|
|
207
|
+
// Clone the event to not override `target` of the original event.
|
|
208
|
+
const nativeEvent = event.nativeEvent || event;
|
|
209
|
+
// @ts-ignore The nativeEvent is function, not object
|
|
210
|
+
const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);
|
|
211
|
+
Object.defineProperty(clonedEvent, 'target', {
|
|
212
|
+
writable: true,
|
|
213
|
+
value: {
|
|
214
|
+
value: newValue,
|
|
215
|
+
name: props.name
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
onChange(clonedEvent, null);
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
return /*#__PURE__*/_jsx(JoySelect, _extends({}, props, {
|
|
222
|
+
listboxOpen: open,
|
|
223
|
+
onListboxOpenChange: isOpen => {
|
|
224
|
+
if (isOpen) {
|
|
225
|
+
onOpen == null ? void 0 : onOpen({});
|
|
226
|
+
} else {
|
|
227
|
+
var _MenuProps$onClose;
|
|
228
|
+
MenuProps == null ? void 0 : (_MenuProps$onClose = MenuProps.onClose) == null ? void 0 : _MenuProps$onClose.call(MenuProps, {}, undefined);
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
size: convertSize(size),
|
|
232
|
+
color: convertColor(color),
|
|
233
|
+
variant: convertVariant(variant, 'outlined'),
|
|
234
|
+
ref: ref,
|
|
235
|
+
value: value,
|
|
236
|
+
onChange: handleChange,
|
|
237
|
+
slotProps: {
|
|
238
|
+
button: {
|
|
239
|
+
'aria-labelledby': labelId,
|
|
240
|
+
ref: inputRef
|
|
241
|
+
},
|
|
242
|
+
listbox: {
|
|
243
|
+
disablePortal: false,
|
|
244
|
+
sx: {
|
|
245
|
+
zIndex: 1350
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}));
|
|
250
|
+
});
|
|
251
|
+
const Option = /*#__PURE__*/React.forwardRef((_ref7, ref) => {
|
|
252
|
+
let props = _objectWithoutPropertiesLoose(_ref7, _excluded7);
|
|
253
|
+
return /*#__PURE__*/_jsx(JoyOption, _extends({}, props, {
|
|
254
|
+
ref: ref
|
|
255
|
+
}));
|
|
256
|
+
});
|
|
257
|
+
const InputLabel = /*#__PURE__*/React.forwardRef((_ref8, ref) => {
|
|
258
|
+
let {
|
|
259
|
+
sx
|
|
260
|
+
} = _ref8,
|
|
261
|
+
props = _objectWithoutPropertiesLoose(_ref8, _excluded8);
|
|
262
|
+
return /*#__PURE__*/_jsx(JoyFormLabel, _extends({}, props, {
|
|
263
|
+
ref: ref,
|
|
264
|
+
sx: sx
|
|
265
|
+
}));
|
|
266
|
+
});
|
|
59
267
|
const joySlots = {
|
|
60
268
|
baseCheckbox: Checkbox,
|
|
61
|
-
baseTextField: TextField
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
269
|
+
baseTextField: TextField,
|
|
270
|
+
baseButton: Button,
|
|
271
|
+
baseIconButton: IconButton,
|
|
272
|
+
baseSwitch: Switch,
|
|
273
|
+
baseSelect: Select,
|
|
274
|
+
baseSelectOption: Option,
|
|
275
|
+
baseInputLabel: InputLabel,
|
|
276
|
+
baseFormControl: JoyFormControl
|
|
67
277
|
// BaseTooltip: MUITooltip,
|
|
68
278
|
// BasePopper: MUIPopper,
|
|
69
279
|
};
|
|
@@ -43,9 +43,11 @@ export var GridPagination = /*#__PURE__*/React.forwardRef(function GridPaginatio
|
|
|
43
43
|
apiRef.current.setPage(page);
|
|
44
44
|
}, [apiRef]);
|
|
45
45
|
if (process.env.NODE_ENV !== 'production') {
|
|
46
|
+
var _rootProps$pagination, _rootProps$pagination2;
|
|
46
47
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
47
48
|
var warnedOnceMissingInPageSizeOptions = React.useRef(false);
|
|
48
|
-
|
|
49
|
+
var pageSize = (_rootProps$pagination = (_rootProps$pagination2 = rootProps.paginationModel) == null ? void 0 : _rootProps$pagination2.pageSize) != null ? _rootProps$pagination : paginationModel.pageSize;
|
|
50
|
+
if (!warnedOnceMissingInPageSizeOptions.current && !rootProps.autoPageSize && !rootProps.pageSizeOptions.includes(pageSize)) {
|
|
49
51
|
console.warn(["MUI: The page size `".concat(paginationModel.pageSize, "` is not preset in the `pageSizeOptions`"), "Add it to show the pagination select."].join('\n'));
|
|
50
52
|
warnedOnceMissingInPageSizeOptions.current = true;
|
|
51
53
|
}
|
|
@@ -18,7 +18,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
18
18
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
19
19
|
function GridBody(props) {
|
|
20
20
|
var VirtualScrollerComponent = props.VirtualScrollerComponent,
|
|
21
|
-
ColumnHeadersProps = props.ColumnHeadersProps
|
|
21
|
+
ColumnHeadersProps = props.ColumnHeadersProps,
|
|
22
|
+
children = props.children;
|
|
22
23
|
var apiRef = useGridPrivateApiContext();
|
|
23
24
|
var rootProps = useGridRootProps();
|
|
24
25
|
var rootRef = React.useRef(null);
|
|
@@ -47,13 +48,20 @@ function GridBody(props) {
|
|
|
47
48
|
if (typeof ResizeObserver === 'undefined') {
|
|
48
49
|
return function () {};
|
|
49
50
|
}
|
|
51
|
+
var animationFrame;
|
|
50
52
|
var observer = new ResizeObserver(function () {
|
|
51
|
-
|
|
53
|
+
// See https://github.com/mui/mui-x/issues/8733
|
|
54
|
+
animationFrame = window.requestAnimationFrame(function () {
|
|
55
|
+
apiRef.current.computeSizeAndPublishResizeEvent();
|
|
56
|
+
});
|
|
52
57
|
});
|
|
53
58
|
if (elementToObserve) {
|
|
54
59
|
observer.observe(elementToObserve);
|
|
55
60
|
}
|
|
56
61
|
return function () {
|
|
62
|
+
if (animationFrame) {
|
|
63
|
+
window.cancelAnimationFrame(animationFrame);
|
|
64
|
+
}
|
|
57
65
|
if (elementToObserve) {
|
|
58
66
|
observer.unobserve(elementToObserve);
|
|
59
67
|
}
|
|
@@ -114,7 +122,7 @@ function GridBody(props) {
|
|
|
114
122
|
, {
|
|
115
123
|
ref: virtualScrollerRef,
|
|
116
124
|
disableVirtualization: isVirtualizationDisabled
|
|
117
|
-
})]
|
|
125
|
+
}), children]
|
|
118
126
|
});
|
|
119
127
|
}
|
|
120
128
|
process.env.NODE_ENV !== "production" ? GridBody.propTypes = {
|
|
@@ -122,6 +130,7 @@ process.env.NODE_ENV !== "production" ? GridBody.propTypes = {
|
|
|
122
130
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
123
131
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
124
132
|
// ----------------------------------------------------------------------
|
|
133
|
+
children: PropTypes.node,
|
|
125
134
|
ColumnHeadersProps: PropTypes.object,
|
|
126
135
|
VirtualScrollerComponent: PropTypes.elementType.isRequired
|
|
127
136
|
} : void 0;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
3
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
4
|
-
var _excluded = ["colDef", "id", "hasFocus", "isEditable", "field", "value", "formattedValue", "row", "rowNode", "cellMode", "tabIndex", "position", "focusElementRef"];
|
|
4
|
+
var _excluded = ["api", "colDef", "id", "hasFocus", "isEditable", "field", "value", "formattedValue", "row", "rowNode", "cellMode", "tabIndex", "position", "focusElementRef"];
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
7
|
import MenuList from '@mui/material/MenuList';
|
|
@@ -18,7 +18,8 @@ var hasActions = function hasActions(colDef) {
|
|
|
18
18
|
};
|
|
19
19
|
function GridActionsCell(props) {
|
|
20
20
|
var _rootProps$slotProps;
|
|
21
|
-
var
|
|
21
|
+
var api = props.api,
|
|
22
|
+
colDef = props.colDef,
|
|
22
23
|
id = props.id,
|
|
23
24
|
hasFocus = props.hasFocus,
|
|
24
25
|
isEditable = props.isEditable,
|
|
@@ -221,6 +222,7 @@ process.env.NODE_ENV !== "production" ? GridActionsCell.propTypes = {
|
|
|
221
222
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
222
223
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
223
224
|
// ----------------------------------------------------------------------
|
|
225
|
+
api: PropTypes.object,
|
|
224
226
|
/**
|
|
225
227
|
* The mode of the cell.
|
|
226
228
|
*/
|
|
@@ -243,6 +245,9 @@ process.env.NODE_ENV !== "production" ? GridActionsCell.propTypes = {
|
|
|
243
245
|
focus: PropTypes.func.isRequired
|
|
244
246
|
})
|
|
245
247
|
})]),
|
|
248
|
+
/**
|
|
249
|
+
* The cell value formatted with the column valueFormatter.
|
|
250
|
+
*/
|
|
246
251
|
formattedValue: PropTypes.any,
|
|
247
252
|
/**
|
|
248
253
|
* If true, the cell is the active element.
|
|
@@ -269,6 +274,10 @@ process.env.NODE_ENV !== "production" ? GridActionsCell.propTypes = {
|
|
|
269
274
|
* the tabIndex value.
|
|
270
275
|
*/
|
|
271
276
|
tabIndex: PropTypes.oneOf([-1, 0]).isRequired,
|
|
277
|
+
/**
|
|
278
|
+
* The cell value.
|
|
279
|
+
* If the column has `valueGetter`, use `params.row` to directly access the fields.
|
|
280
|
+
*/
|
|
272
281
|
value: PropTypes.any
|
|
273
282
|
} : void 0;
|
|
274
283
|
export { GridActionsCell };
|
|
@@ -82,7 +82,9 @@ export var GridRootStyles = styled('div', {
|
|
|
82
82
|
minWidth: 0,
|
|
83
83
|
flex: 1,
|
|
84
84
|
whiteSpace: 'nowrap',
|
|
85
|
-
overflow: 'hidden'
|
|
85
|
+
overflow: 'hidden',
|
|
86
|
+
// to anchor the aggregation label
|
|
87
|
+
position: 'relative'
|
|
86
88
|
}), _defineProperty(_extends2, "& .".concat(gridClasses.columnHeaderTitleContainerContent), {
|
|
87
89
|
overflow: 'hidden',
|
|
88
90
|
display: 'flex',
|
|
@@ -73,7 +73,9 @@ var GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolbar
|
|
|
73
73
|
ownerState: rootProps,
|
|
74
74
|
children: activeFilters.map(function (item, index) {
|
|
75
75
|
return _extends({}, lookup[item.field] && /*#__PURE__*/_jsx("li", {
|
|
76
|
-
children: "".concat(lookup[item.field].headerName || item.field, "\n ").concat(getOperatorLabel(item), "\n ").concat(
|
|
76
|
+
children: "".concat(lookup[item.field].headerName || item.field, "\n ").concat(getOperatorLabel(item), "\n ").concat(
|
|
77
|
+
// implicit check for null and undefined
|
|
78
|
+
item.value != null ? getFilterItemValue(item) : '')
|
|
77
79
|
}, index));
|
|
78
80
|
})
|
|
79
81
|
})]
|
|
@@ -2,4 +2,4 @@ import { unstable_generateUtilityClasses as generateUtilityClasses, unstable_gen
|
|
|
2
2
|
export function getDataGridUtilityClass(slot) {
|
|
3
3
|
return generateUtilityClass('MuiDataGrid', slot);
|
|
4
4
|
}
|
|
5
|
-
export var gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
5
|
+
export var gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
@@ -9,10 +9,7 @@ import { gridColumnGroupsLookupSelector, gridColumnGroupsUnwrappedModelSelector
|
|
|
9
9
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
10
10
|
import { getColumnGroupsHeaderStructure, unwrapGroupingColumnModel } from './gridColumnGroupsUtils';
|
|
11
11
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
12
|
-
import { gridColumnFieldsSelector,
|
|
13
|
-
// GridColumnsState,
|
|
14
|
-
gridVisibleColumnFieldsSelector } from '../columns';
|
|
15
|
-
import { useGridSelector } from '../../utils/useGridSelector';
|
|
12
|
+
import { gridColumnFieldsSelector, gridVisibleColumnFieldsSelector } from '../columns';
|
|
16
13
|
var createGroupLookup = function createGroupLookup(columnGroupingModel) {
|
|
17
14
|
var groupLookup = {};
|
|
18
15
|
columnGroupingModel.forEach(function (node) {
|
|
@@ -100,19 +97,15 @@ export var useGridColumnGrouping = function useGridColumnGrouping(apiRef, props)
|
|
|
100
97
|
});
|
|
101
98
|
});
|
|
102
99
|
}, [apiRef, props.columnGroupingModel]);
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
var visibleColumnFields = useGridSelector(apiRef, gridVisibleColumnFieldsSelector);
|
|
106
|
-
/**
|
|
107
|
-
* EFFECTS
|
|
108
|
-
*/
|
|
109
|
-
React.useEffect(function () {
|
|
110
|
-
var _props$experimentalFe2, _props$columnGrouping4, _props$columnGrouping5;
|
|
100
|
+
var updateColumnGroupingState = React.useCallback(function (columnGroupingModel) {
|
|
101
|
+
var _props$experimentalFe2;
|
|
111
102
|
if (!((_props$experimentalFe2 = props.experimentalFeatures) != null && _props$experimentalFe2.columnGrouping)) {
|
|
112
103
|
return;
|
|
113
104
|
}
|
|
114
|
-
var
|
|
115
|
-
var
|
|
105
|
+
var columnFields = gridColumnFieldsSelector(apiRef);
|
|
106
|
+
var visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
|
|
107
|
+
var groupLookup = createGroupLookup(columnGroupingModel != null ? columnGroupingModel : []);
|
|
108
|
+
var unwrappedGroupingModel = unwrapGroupingColumnModel(columnGroupingModel != null ? columnGroupingModel : []);
|
|
116
109
|
var columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel);
|
|
117
110
|
var maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max.apply(Math, _toConsumableArray(visibleColumnFields.map(function (field) {
|
|
118
111
|
var _unwrappedGroupingMod4, _unwrappedGroupingMod5;
|
|
@@ -128,5 +121,19 @@ export var useGridColumnGrouping = function useGridColumnGrouping(apiRef, props)
|
|
|
128
121
|
}
|
|
129
122
|
});
|
|
130
123
|
});
|
|
131
|
-
}, [apiRef,
|
|
124
|
+
}, [apiRef, (_props$experimentalFe3 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe3.columnGrouping]);
|
|
125
|
+
useGridApiEventHandler(apiRef, 'columnIndexChange', handleColumnIndexChange);
|
|
126
|
+
useGridApiEventHandler(apiRef, 'columnsChange', function () {
|
|
127
|
+
updateColumnGroupingState(props.columnGroupingModel);
|
|
128
|
+
});
|
|
129
|
+
useGridApiEventHandler(apiRef, 'columnVisibilityModelChange', function () {
|
|
130
|
+
updateColumnGroupingState(props.columnGroupingModel);
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* EFFECTS
|
|
135
|
+
*/
|
|
136
|
+
React.useEffect(function () {
|
|
137
|
+
updateColumnGroupingState(props.columnGroupingModel);
|
|
138
|
+
}, [updateColumnGroupingState, props.columnGroupingModel]);
|
|
132
139
|
};
|
|
@@ -307,9 +307,9 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
|
|
|
307
307
|
useGridApiMethod(apiRef, focusPrivateApi, 'private');
|
|
308
308
|
React.useEffect(function () {
|
|
309
309
|
var doc = ownerDocument(apiRef.current.rootElementRef.current);
|
|
310
|
-
doc.addEventListener('
|
|
310
|
+
doc.addEventListener('mouseup', handleDocumentClick);
|
|
311
311
|
return function () {
|
|
312
|
-
doc.removeEventListener('
|
|
312
|
+
doc.removeEventListener('mouseup', handleDocumentClick);
|
|
313
313
|
};
|
|
314
314
|
}, [apiRef, handleDocumentClick]);
|
|
315
315
|
useGridApiEventHandler(apiRef, 'columnHeaderBlur', handleBlur);
|
package/legacy/index.js
CHANGED