@mui/x-data-grid 6.3.0 → 6.4.0

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.
Files changed (148) hide show
  1. package/CHANGELOG.md +105 -2
  2. package/DataGrid/DataGrid.js +20 -1
  3. package/DataGrid/useDataGridComponent.js +2 -2
  4. package/DataGrid/useDataGridProps.js +3 -1
  5. package/colDef/gridBooleanColDef.js +19 -1
  6. package/colDef/gridDateColDef.js +6 -2
  7. package/colDef/gridSingleSelectColDef.js +21 -1
  8. package/components/GridPagination.js +3 -1
  9. package/components/base/GridBody.d.ts +1 -0
  10. package/components/base/GridBody.js +6 -3
  11. package/components/containers/GridRootStyles.js +1 -0
  12. package/components/panel/GridPanel.d.ts +2 -1
  13. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +1 -2
  14. package/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -2
  15. package/components/toolbar/GridToolbarFilterButton.js +3 -1
  16. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +12 -1
  17. package/hooks/features/clipboard/useGridClipboard.d.ts +2 -1
  18. package/hooks/features/clipboard/useGridClipboard.js +43 -26
  19. package/hooks/features/dimensions/useGridDimensions.js +2 -4
  20. package/hooks/features/editing/useGridCellEditing.js +7 -3
  21. package/hooks/features/editing/useGridRowEditing.js +7 -3
  22. package/hooks/features/export/serializers/csvSerializer.d.ts +5 -0
  23. package/hooks/features/export/serializers/csvSerializer.js +46 -6
  24. package/hooks/features/export/useGridCsvExport.d.ts +2 -1
  25. package/hooks/features/export/useGridCsvExport.js +7 -5
  26. package/hooks/features/focus/useGridFocus.js +2 -2
  27. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +11 -0
  28. package/index.js +1 -1
  29. package/internals/index.d.ts +3 -2
  30. package/internals/index.js +3 -2
  31. package/joy/icons.d.ts +33 -0
  32. package/joy/icons.js +433 -0
  33. package/joy/joySlots.js +254 -42
  34. package/legacy/DataGrid/DataGrid.js +20 -1
  35. package/legacy/DataGrid/useDataGridComponent.js +2 -2
  36. package/legacy/DataGrid/useDataGridProps.js +3 -1
  37. package/legacy/colDef/gridBooleanColDef.js +21 -1
  38. package/legacy/colDef/gridDateColDef.js +10 -2
  39. package/legacy/colDef/gridSingleSelectColDef.js +21 -1
  40. package/legacy/components/GridPagination.js +3 -1
  41. package/legacy/components/base/GridBody.js +6 -3
  42. package/legacy/components/containers/GridRootStyles.js +1 -0
  43. package/legacy/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +1 -2
  44. package/legacy/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -2
  45. package/legacy/components/toolbar/GridToolbarFilterButton.js +3 -1
  46. package/legacy/hooks/features/clipboard/useGridClipboard.js +44 -26
  47. package/legacy/hooks/features/dimensions/useGridDimensions.js +2 -4
  48. package/legacy/hooks/features/editing/useGridCellEditing.js +7 -3
  49. package/legacy/hooks/features/editing/useGridRowEditing.js +7 -3
  50. package/legacy/hooks/features/export/serializers/csvSerializer.js +43 -6
  51. package/legacy/hooks/features/export/useGridCsvExport.js +8 -5
  52. package/legacy/hooks/features/focus/useGridFocus.js +2 -2
  53. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +10 -0
  54. package/legacy/index.js +1 -1
  55. package/legacy/internals/index.js +3 -2
  56. package/legacy/joy/icons.js +432 -0
  57. package/legacy/joy/joySlots.js +273 -54
  58. package/legacy/locales/deDE.js +2 -2
  59. package/legacy/locales/frFR.js +6 -6
  60. package/legacy/locales/ptBR.js +1 -1
  61. package/legacy/locales/ukUA.js +8 -9
  62. package/legacy/material/index.js +3 -1
  63. package/legacy/models/api/index.js +0 -1
  64. package/legacy/utils/domUtils.js +14 -1
  65. package/locales/deDE.js +2 -2
  66. package/locales/frFR.js +6 -6
  67. package/locales/ptBR.js +1 -1
  68. package/locales/ukUA.js +8 -9
  69. package/material/index.d.ts +3 -1
  70. package/material/index.js +3 -1
  71. package/models/api/gridApiCommon.d.ts +1 -2
  72. package/models/api/gridCoreApi.d.ts +4 -0
  73. package/models/api/index.d.ts +0 -1
  74. package/models/api/index.js +0 -1
  75. package/models/events/gridEventLookup.d.ts +6 -0
  76. package/models/gridSlotsComponent.d.ts +5 -0
  77. package/models/gridSlotsComponentsProps.d.ts +4 -0
  78. package/models/props/DataGridProps.d.ts +19 -0
  79. package/modern/DataGrid/DataGrid.js +20 -1
  80. package/modern/DataGrid/useDataGridComponent.js +2 -2
  81. package/modern/DataGrid/useDataGridProps.js +3 -1
  82. package/modern/colDef/gridBooleanColDef.js +19 -1
  83. package/modern/colDef/gridDateColDef.js +6 -2
  84. package/modern/colDef/gridSingleSelectColDef.js +21 -1
  85. package/modern/components/GridPagination.js +2 -1
  86. package/modern/components/base/GridBody.js +6 -3
  87. package/modern/components/containers/GridRootStyles.js +1 -0
  88. package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +1 -2
  89. package/modern/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -2
  90. package/modern/components/toolbar/GridToolbarFilterButton.js +3 -1
  91. package/modern/hooks/features/clipboard/useGridClipboard.js +43 -26
  92. package/modern/hooks/features/dimensions/useGridDimensions.js +1 -3
  93. package/modern/hooks/features/editing/useGridCellEditing.js +7 -3
  94. package/modern/hooks/features/editing/useGridRowEditing.js +7 -3
  95. package/modern/hooks/features/export/serializers/csvSerializer.js +44 -6
  96. package/modern/hooks/features/export/useGridCsvExport.js +7 -5
  97. package/modern/hooks/features/focus/useGridFocus.js +2 -2
  98. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +11 -0
  99. package/modern/index.js +1 -1
  100. package/modern/internals/index.js +3 -2
  101. package/modern/joy/icons.js +433 -0
  102. package/modern/joy/joySlots.js +248 -41
  103. package/modern/locales/deDE.js +2 -2
  104. package/modern/locales/frFR.js +6 -6
  105. package/modern/locales/ptBR.js +1 -1
  106. package/modern/locales/ukUA.js +8 -9
  107. package/modern/material/index.js +3 -1
  108. package/modern/models/api/index.js +0 -1
  109. package/modern/utils/domUtils.js +13 -1
  110. package/node/DataGrid/DataGrid.js +20 -1
  111. package/node/DataGrid/useDataGridComponent.js +2 -2
  112. package/node/DataGrid/useDataGridProps.js +3 -1
  113. package/node/colDef/gridBooleanColDef.js +19 -1
  114. package/node/colDef/gridDateColDef.js +6 -2
  115. package/node/colDef/gridSingleSelectColDef.js +21 -1
  116. package/node/components/GridPagination.js +2 -1
  117. package/node/components/base/GridBody.js +6 -3
  118. package/node/components/containers/GridRootStyles.js +1 -0
  119. package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +1 -2
  120. package/node/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -2
  121. package/node/components/toolbar/GridToolbarFilterButton.js +3 -1
  122. package/node/hooks/features/clipboard/useGridClipboard.js +42 -25
  123. package/node/hooks/features/dimensions/useGridDimensions.js +1 -3
  124. package/node/hooks/features/editing/useGridCellEditing.js +7 -3
  125. package/node/hooks/features/editing/useGridRowEditing.js +7 -3
  126. package/node/hooks/features/export/serializers/csvSerializer.js +46 -6
  127. package/node/hooks/features/export/useGridCsvExport.js +6 -3
  128. package/node/hooks/features/focus/useGridFocus.js +2 -2
  129. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +11 -0
  130. package/node/index.js +1 -1
  131. package/node/internals/index.js +23 -1
  132. package/node/joy/icons.js +471 -0
  133. package/node/joy/joySlots.js +248 -40
  134. package/node/locales/deDE.js +2 -2
  135. package/node/locales/frFR.js +6 -6
  136. package/node/locales/ptBR.js +1 -1
  137. package/node/locales/ukUA.js +8 -9
  138. package/node/material/index.js +3 -1
  139. package/node/models/api/index.js +0 -11
  140. package/node/utils/domUtils.js +15 -1
  141. package/package.json +2 -2
  142. package/utils/domUtils.d.ts +1 -0
  143. package/utils/domUtils.js +13 -1
  144. package/legacy/models/api/gridClipboardApi.js +0 -1
  145. package/models/api/gridClipboardApi.d.ts +0 -11
  146. package/models/api/gridClipboardApi.js +0 -1
  147. package/modern/models/api/gridClipboardApi.js +0 -1
  148. package/node/models/api/gridClipboardApi.js +0 -5
@@ -2,9 +2,13 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
4
  var _excluded = ["touchRippleRef", "inputProps", "onChange", "color", "size", "checked", "sx", "value", "inputRef"],
5
- _excluded2 = ["startIcon", "color", "endIcon", "size", "sx", "variant"],
6
- _excluded3 = ["color", "size", "sx"],
7
- _excluded4 = ["name", "checkedIcon", "color", "disableRipple", "disableFocusRipple", "disableTouchRipple", "edge", "icon", "inputProps", "inputRef", "size", "sx", "onChange", "onClick"];
5
+ _excluded2 = ["onChange", "label", "placeholder", "value", "inputRef", "type", "size", "variant"],
6
+ _excluded3 = ["startIcon", "color", "endIcon", "size", "sx", "variant"],
7
+ _excluded4 = ["color", "size", "sx", "touchRippleRef"],
8
+ _excluded5 = ["name", "checkedIcon", "color", "disableRipple", "disableFocusRipple", "disableTouchRipple", "edge", "icon", "inputProps", "inputRef", "size", "sx", "onChange", "onClick"],
9
+ _excluded6 = ["open", "onOpen", "value", "onChange", "size", "color", "variant", "inputProps", "MenuProps", "inputRef", "error", "native", "fullWidth", "labelId"],
10
+ _excluded7 = ["native"],
11
+ _excluded8 = ["shrink", "variant", "sx"];
8
12
  import * as React from 'react';
9
13
  import JoyCheckbox from '@mui/joy/Checkbox';
10
14
  import JoyInput from '@mui/joy/Input';
@@ -13,6 +17,15 @@ import JoyFormLabel from '@mui/joy/FormLabel';
13
17
  import JoyButton from '@mui/joy/Button';
14
18
  import JoyIconButton from '@mui/joy/IconButton';
15
19
  import JoySwitch from '@mui/joy/Switch';
20
+ import JoySelect from '@mui/joy/Select';
21
+ import JoyOption from '@mui/joy/Option';
22
+ import JoyBox from '@mui/joy/Box';
23
+ import JoyTypography from '@mui/joy/Typography';
24
+ import { unstable_useForkRef as useForkRef } from '@mui/utils';
25
+ import joyIconSlots, { GridKeyboardArrowRight, GridKeyboardArrowLeft } from './icons';
26
+ import { useGridApiContext } from '../hooks/utils/useGridApiContext';
27
+ import { useGridRootProps } from '../hooks/utils/useGridRootProps';
28
+ import { gridFilteredTopLevelRowCountSelector, gridPaginationModelSelector } from '../hooks';
16
29
  import { jsx as _jsx } from "react/jsx-runtime";
17
30
  import { jsxs as _jsxs } from "react/jsx-runtime";
18
31
  function convertColor(color) {
@@ -35,13 +48,17 @@ function convertSize(size) {
35
48
  }[size] : size;
36
49
  }
37
50
  function convertVariant(variant) {
38
- return variant ? {
51
+ var defaultVariant = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'plain';
52
+ if (!variant) {
53
+ return defaultVariant;
54
+ }
55
+ return {
56
+ standard: 'outlined',
39
57
  outlined: 'outlined',
40
58
  contained: 'solid',
41
59
  text: 'plain',
42
- standard: 'plain',
43
60
  filled: 'soft'
44
- }[variant] : variant;
61
+ }[variant] || defaultVariant;
45
62
  }
46
63
  var Checkbox = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
47
64
  var touchRippleRef = _ref.touchRippleRef,
@@ -66,58 +83,67 @@ var Checkbox = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
66
83
  }));
67
84
  });
68
85
  var TextField = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
86
+ var _props$InputProps, _props$inputProps;
69
87
  var onChange = _ref2.onChange,
70
88
  label = _ref2.label,
71
89
  placeholder = _ref2.placeholder,
72
90
  value = _ref2.value,
73
91
  inputRef = _ref2.inputRef,
74
- type = _ref2.type;
92
+ type = _ref2.type,
93
+ size = _ref2.size,
94
+ variant = _ref2.variant,
95
+ props = _objectWithoutProperties(_ref2, _excluded2);
96
+ var rootRef = useForkRef(ref, (_props$InputProps = props.InputProps) == null ? void 0 : _props$InputProps.ref);
97
+ var inputForkRef = useForkRef(inputRef, props == null ? void 0 : (_props$inputProps = props.inputProps) == null ? void 0 : _props$inputProps.ref);
98
+ var _ref3 = props.InputProps || {},
99
+ startAdornment = _ref3.startAdornment,
100
+ endAdornment = _ref3.endAdornment;
75
101
  return /*#__PURE__*/_jsxs(JoyFormControl, {
76
- ref: ref,
102
+ ref: rootRef,
77
103
  children: [/*#__PURE__*/_jsx(JoyFormLabel, {
78
- sx: {
79
- fontSize: 12
80
- },
81
104
  children: label
82
105
  }), /*#__PURE__*/_jsx(JoyInput, {
83
106
  type: type,
84
107
  value: value,
85
108
  onChange: onChange,
86
109
  placeholder: placeholder,
87
- size: "sm",
110
+ variant: convertVariant(variant, 'outlined'),
111
+ size: convertSize(size),
88
112
  slotProps: {
89
- input: {
90
- ref: inputRef
91
- }
92
- }
113
+ input: _extends({}, props == null ? void 0 : props.inputProps, {
114
+ ref: inputForkRef
115
+ })
116
+ },
117
+ startDecorator: startAdornment,
118
+ endDecorator: endAdornment
93
119
  })]
94
120
  });
95
121
  });
96
- var Button = /*#__PURE__*/React.forwardRef(function Button(_ref3, ref) {
97
- var _convertVariant;
98
- var startIcon = _ref3.startIcon,
99
- color = _ref3.color,
100
- endIcon = _ref3.endIcon,
101
- size = _ref3.size,
102
- sx = _ref3.sx,
103
- variant = _ref3.variant,
104
- props = _objectWithoutProperties(_ref3, _excluded2);
122
+ var Button = /*#__PURE__*/React.forwardRef(function Button(_ref4, ref) {
123
+ var startIcon = _ref4.startIcon,
124
+ color = _ref4.color,
125
+ endIcon = _ref4.endIcon,
126
+ size = _ref4.size,
127
+ sx = _ref4.sx,
128
+ variant = _ref4.variant,
129
+ props = _objectWithoutProperties(_ref4, _excluded3);
105
130
  return /*#__PURE__*/_jsx(JoyButton, _extends({}, props, {
106
131
  size: convertSize(size),
107
132
  color: convertColor(color),
108
- variant: (_convertVariant = convertVariant(variant)) != null ? _convertVariant : 'plain',
133
+ variant: convertVariant(variant),
109
134
  ref: ref,
110
135
  startDecorator: startIcon,
111
136
  endDecorator: endIcon,
112
137
  sx: sx
113
138
  }));
114
139
  });
115
- var IconButton = /*#__PURE__*/React.forwardRef(function IconButton(_ref4, ref) {
140
+ var IconButton = /*#__PURE__*/React.forwardRef(function IconButton(_ref5, ref) {
116
141
  var _convertColor;
117
- var color = _ref4.color,
118
- size = _ref4.size,
119
- sx = _ref4.sx,
120
- props = _objectWithoutProperties(_ref4, _excluded3);
142
+ var color = _ref5.color,
143
+ size = _ref5.size,
144
+ sx = _ref5.sx,
145
+ touchRippleRef = _ref5.touchRippleRef,
146
+ props = _objectWithoutProperties(_ref5, _excluded4);
121
147
  return /*#__PURE__*/_jsx(JoyIconButton, _extends({}, props, {
122
148
  size: convertSize(size),
123
149
  color: (_convertColor = convertColor(color)) != null ? _convertColor : 'neutral',
@@ -126,22 +152,22 @@ var IconButton = /*#__PURE__*/React.forwardRef(function IconButton(_ref4, ref) {
126
152
  sx: sx
127
153
  }));
128
154
  });
129
- var Switch = /*#__PURE__*/React.forwardRef(function Switch(_ref5, ref) {
130
- var name = _ref5.name,
131
- checkedIcon = _ref5.checkedIcon,
132
- colorProp = _ref5.color,
133
- disableRipple = _ref5.disableRipple,
134
- disableFocusRipple = _ref5.disableFocusRipple,
135
- disableTouchRipple = _ref5.disableTouchRipple,
136
- edge = _ref5.edge,
137
- icon = _ref5.icon,
138
- inputProps = _ref5.inputProps,
139
- inputRef = _ref5.inputRef,
140
- size = _ref5.size,
141
- sx = _ref5.sx,
142
- onChange = _ref5.onChange,
143
- onClick = _ref5.onClick,
144
- props = _objectWithoutProperties(_ref5, _excluded4);
155
+ var Switch = /*#__PURE__*/React.forwardRef(function Switch(_ref6, ref) {
156
+ var name = _ref6.name,
157
+ checkedIcon = _ref6.checkedIcon,
158
+ colorProp = _ref6.color,
159
+ disableRipple = _ref6.disableRipple,
160
+ disableFocusRipple = _ref6.disableFocusRipple,
161
+ disableTouchRipple = _ref6.disableTouchRipple,
162
+ edge = _ref6.edge,
163
+ icon = _ref6.icon,
164
+ inputProps = _ref6.inputProps,
165
+ inputRef = _ref6.inputRef,
166
+ size = _ref6.size,
167
+ sx = _ref6.sx,
168
+ onChange = _ref6.onChange,
169
+ onClick = _ref6.onClick,
170
+ props = _objectWithoutProperties(_ref6, _excluded5);
145
171
  return /*#__PURE__*/_jsx(JoySwitch, _extends({}, props, {
146
172
  onChange: onChange,
147
173
  size: convertSize(size),
@@ -164,17 +190,210 @@ var Switch = /*#__PURE__*/React.forwardRef(function Switch(_ref5, ref) {
164
190
  })].concat(_toConsumableArray(Array.isArray(sx) ? sx : [sx]))
165
191
  }));
166
192
  });
167
- var joySlots = {
193
+ var Select = /*#__PURE__*/React.forwardRef(function (_ref7, ref) {
194
+ var open = _ref7.open,
195
+ onOpen = _ref7.onOpen,
196
+ value = _ref7.value,
197
+ onChange = _ref7.onChange,
198
+ size = _ref7.size,
199
+ color = _ref7.color,
200
+ variant = _ref7.variant,
201
+ inputProps = _ref7.inputProps,
202
+ MenuProps = _ref7.MenuProps,
203
+ inputRef = _ref7.inputRef,
204
+ error = _ref7.error,
205
+ native = _ref7.native,
206
+ fullWidth = _ref7.fullWidth,
207
+ labelId = _ref7.labelId,
208
+ props = _objectWithoutProperties(_ref7, _excluded6);
209
+ var handleChange = function handleChange(event, newValue) {
210
+ if (event && onChange) {
211
+ // Same as in https://github.com/mui/material-ui/blob/e5558282a8f36856aef1299f3a36f3235e92e770/packages/mui-material/src/Select/SelectInput.js#L288-L300
212
+
213
+ // Redefine target to allow name and value to be read.
214
+ // This allows seamless integration with the most popular form libraries.
215
+ // https://github.com/mui/material-ui/issues/13485#issuecomment-676048492
216
+ // Clone the event to not override `target` of the original event.
217
+ var nativeEvent = event.nativeEvent || event;
218
+ // @ts-ignore The nativeEvent is function, not object
219
+ var clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);
220
+ Object.defineProperty(clonedEvent, 'target', {
221
+ writable: true,
222
+ value: {
223
+ value: newValue,
224
+ name: props.name
225
+ }
226
+ });
227
+ onChange(clonedEvent, null);
228
+ }
229
+ };
230
+ return /*#__PURE__*/_jsx(JoySelect, _extends({}, props, {
231
+ listboxOpen: open,
232
+ onListboxOpenChange: function onListboxOpenChange(isOpen) {
233
+ if (isOpen) {
234
+ onOpen == null ? void 0 : onOpen({});
235
+ } else {
236
+ var _MenuProps$onClose;
237
+ MenuProps == null ? void 0 : (_MenuProps$onClose = MenuProps.onClose) == null ? void 0 : _MenuProps$onClose.call(MenuProps, {}, undefined);
238
+ }
239
+ },
240
+ size: convertSize(size),
241
+ color: convertColor(color),
242
+ variant: convertVariant(variant, 'outlined'),
243
+ ref: ref,
244
+ value: value,
245
+ onChange: handleChange,
246
+ slotProps: {
247
+ button: {
248
+ 'aria-labelledby': labelId,
249
+ ref: inputRef
250
+ },
251
+ listbox: {
252
+ disablePortal: false,
253
+ sx: {
254
+ zIndex: 1350
255
+ }
256
+ }
257
+ }
258
+ }));
259
+ });
260
+ var Option = /*#__PURE__*/React.forwardRef(function (_ref8, ref) {
261
+ var native = _ref8.native,
262
+ props = _objectWithoutProperties(_ref8, _excluded7);
263
+ return /*#__PURE__*/_jsx(JoyOption, _extends({}, props, {
264
+ ref: ref
265
+ }));
266
+ });
267
+ var InputLabel = /*#__PURE__*/React.forwardRef(function (_ref9, ref) {
268
+ var shrink = _ref9.shrink,
269
+ variant = _ref9.variant,
270
+ sx = _ref9.sx,
271
+ props = _objectWithoutProperties(_ref9, _excluded8);
272
+ return /*#__PURE__*/_jsx(JoyFormLabel, _extends({}, props, {
273
+ ref: ref,
274
+ sx: sx
275
+ }));
276
+ });
277
+ function labelDisplayedRows(_ref10) {
278
+ var from = _ref10.from,
279
+ to = _ref10.to,
280
+ count = _ref10.count;
281
+ return "".concat(from, "\u2013").concat(to, " of ").concat(count !== -1 ? count : "more than ".concat(to));
282
+ }
283
+ var getLabelDisplayedRowsTo = function getLabelDisplayedRowsTo(_ref11) {
284
+ var page = _ref11.page,
285
+ pageSize = _ref11.pageSize,
286
+ rowCount = _ref11.rowCount;
287
+ if (rowCount === -1) {
288
+ return (page + 1) * pageSize;
289
+ }
290
+ return pageSize === -1 ? rowCount : Math.min(rowCount, (page + 1) * pageSize);
291
+ };
292
+ var Pagination = /*#__PURE__*/React.forwardRef(function (props, ref) {
293
+ var _rootProps$pageSizeOp;
294
+ var apiRef = useGridApiContext();
295
+ var rootProps = useGridRootProps();
296
+ var paginationModel = gridPaginationModelSelector(apiRef);
297
+ var visibleTopLevelRowCount = gridFilteredTopLevelRowCountSelector(apiRef);
298
+ var rowCount = React.useMemo(function () {
299
+ var _ref12, _rootProps$rowCount;
300
+ return (_ref12 = (_rootProps$rowCount = rootProps.rowCount) != null ? _rootProps$rowCount : visibleTopLevelRowCount) != null ? _ref12 : 0;
301
+ }, [rootProps.rowCount, visibleTopLevelRowCount]);
302
+ var lastPage = React.useMemo(function () {
303
+ return Math.floor(rowCount / (paginationModel.pageSize || 1));
304
+ }, [rowCount, paginationModel.pageSize]);
305
+ var handlePageChange = React.useCallback(function (page) {
306
+ apiRef.current.setPage(page);
307
+ }, [apiRef]);
308
+ var page = paginationModel.page <= lastPage ? paginationModel.page : lastPage;
309
+ var pageSize = paginationModel.pageSize;
310
+ var pageSizeOptions = (_rootProps$pageSizeOp = rootProps.pageSizeOptions) != null && _rootProps$pageSizeOp.includes(pageSize) ? rootProps.pageSizeOptions : [];
311
+ var handleChangeRowsPerPage = function handleChangeRowsPerPage(event, newValue) {
312
+ var newPageSize = Number(newValue);
313
+ apiRef.current.setPageSize(newPageSize);
314
+ };
315
+ return /*#__PURE__*/_jsxs(JoyBox, {
316
+ sx: {
317
+ display: 'flex',
318
+ alignItems: 'center',
319
+ gap: 2,
320
+ justifyContent: 'flex-end',
321
+ px: 2
322
+ },
323
+ ref: ref,
324
+ children: [/*#__PURE__*/_jsxs(JoyFormControl, {
325
+ orientation: "horizontal",
326
+ size: "sm",
327
+ children: [/*#__PURE__*/_jsx(JoyFormLabel, {
328
+ children: "Rows per page:"
329
+ }), /*#__PURE__*/_jsx(JoySelect, {
330
+ onChange: handleChangeRowsPerPage,
331
+ value: pageSize,
332
+ children: pageSizeOptions.map(function (option) {
333
+ return /*#__PURE__*/_jsx(Option, {
334
+ value: option,
335
+ children: option
336
+ }, option);
337
+ })
338
+ })]
339
+ }), /*#__PURE__*/_jsx(JoyTypography, {
340
+ textAlign: "center",
341
+ fontSize: "xs",
342
+ fontWeight: "md",
343
+ children: labelDisplayedRows({
344
+ from: rowCount === 0 ? 0 : page * pageSize + 1,
345
+ to: getLabelDisplayedRowsTo({
346
+ page: page,
347
+ pageSize: pageSize,
348
+ rowCount: rowCount
349
+ }),
350
+ count: rowCount === -1 ? -1 : rowCount
351
+ })
352
+ }), /*#__PURE__*/_jsxs(JoyBox, {
353
+ sx: {
354
+ display: 'flex',
355
+ gap: 0.5
356
+ },
357
+ children: [/*#__PURE__*/_jsx(JoyIconButton, {
358
+ size: "sm",
359
+ color: "neutral",
360
+ variant: "outlined",
361
+ disabled: page === 0,
362
+ onClick: function onClick() {
363
+ return handlePageChange(page - 1);
364
+ },
365
+ sx: {
366
+ bgcolor: 'background.surface'
367
+ },
368
+ children: /*#__PURE__*/_jsx(GridKeyboardArrowLeft, {})
369
+ }), /*#__PURE__*/_jsx(JoyIconButton, {
370
+ size: "sm",
371
+ color: "neutral",
372
+ variant: "outlined",
373
+ disabled: rowCount !== -1 ? page >= Math.ceil(rowCount / pageSize) - 1 : false,
374
+ onClick: function onClick() {
375
+ return handlePageChange(page + 1);
376
+ },
377
+ sx: {
378
+ bgcolor: 'background.surface'
379
+ },
380
+ children: /*#__PURE__*/_jsx(GridKeyboardArrowRight, {})
381
+ })]
382
+ })]
383
+ });
384
+ });
385
+ var joySlots = _extends({}, joyIconSlots, {
168
386
  baseCheckbox: Checkbox,
169
387
  baseTextField: TextField,
170
388
  baseButton: Button,
171
389
  baseIconButton: IconButton,
172
- baseSwitch: Switch
173
- // BaseFormControl: MUIFormControl,
174
- // baseSelect: Select,
175
- // baseSelectOption: Option,
390
+ baseSwitch: Switch,
391
+ baseSelect: Select,
392
+ baseSelectOption: Option,
393
+ baseInputLabel: InputLabel,
394
+ baseFormControl: JoyFormControl,
176
395
  // BaseTooltip: MUITooltip,
177
396
  // BasePopper: MUIPopper,
178
- };
179
-
397
+ pagination: Pagination
398
+ });
180
399
  export default joySlots;
@@ -39,7 +39,7 @@ var deDEGrid = {
39
39
  columnsPanelHideAllButton: 'Verberge alle',
40
40
  // Filter panel text
41
41
  filterPanelAddFilter: 'Filter hinzufügen',
42
- // filterPanelRemoveAll: 'Remove all',
42
+ filterPanelRemoveAll: 'Alle entfernen',
43
43
  filterPanelDeleteIconLabel: 'Löschen',
44
44
  filterPanelLogicOperator: 'Logische Operatoren',
45
45
  filterPanelOperator: 'Operatoren',
@@ -69,7 +69,7 @@ var deDEGrid = {
69
69
  // Column menu text
70
70
  columnMenuLabel: 'Menü',
71
71
  columnMenuShowColumns: 'Zeige alle Spalten',
72
- // columnMenuManageColumns: 'Manage columns',
72
+ columnMenuManageColumns: 'Spalten verwalten',
73
73
  columnMenuFilter: 'Filter',
74
74
  columnMenuHideColumn: 'Verbergen',
75
75
  columnMenuUnsort: 'Sortierung deaktivieren',
@@ -7,7 +7,7 @@ var frFRGrid = {
7
7
  // Density selector toolbar button text
8
8
  toolbarDensity: 'Densité',
9
9
  toolbarDensityLabel: 'Densité',
10
- toolbarDensityCompact: 'Compact',
10
+ toolbarDensityCompact: 'Compacte',
11
11
  toolbarDensityStandard: 'Standard',
12
12
  toolbarDensityComfortable: 'Confortable',
13
13
  // Columns selector toolbar button text
@@ -22,7 +22,7 @@ var frFRGrid = {
22
22
  return count > 1 ? "".concat(count, " filtres actifs") : "".concat(count, " filtre actif");
23
23
  },
24
24
  // Quick filter toolbar field
25
- toolbarQuickFilterPlaceholder: 'Recherche…',
25
+ toolbarQuickFilterPlaceholder: 'Rechercher…',
26
26
  toolbarQuickFilterLabel: 'Recherche',
27
27
  toolbarQuickFilterDeleteIconLabel: 'Supprimer',
28
28
  // Export selector toolbar button text
@@ -32,7 +32,7 @@ var frFRGrid = {
32
32
  toolbarExportPrint: 'Imprimer',
33
33
  toolbarExportExcel: 'Télécharger pour Excel',
34
34
  // Columns panel text
35
- columnsPanelTextFieldLabel: 'Chercher colonne',
35
+ columnsPanelTextFieldLabel: 'Chercher une colonne',
36
36
  columnsPanelTextFieldPlaceholder: 'Titre de la colonne',
37
37
  columnsPanelDragIconLabel: 'Réorganiser la colonne',
38
38
  columnsPanelShowAllButton: 'Tout afficher',
@@ -45,12 +45,12 @@ var frFRGrid = {
45
45
  filterPanelOperator: 'Opérateur',
46
46
  filterPanelOperatorAnd: 'Et',
47
47
  filterPanelOperatorOr: 'Ou',
48
- filterPanelColumns: 'Colonnes',
48
+ filterPanelColumns: 'Colonne',
49
49
  filterPanelInputLabel: 'Valeur',
50
50
  filterPanelInputPlaceholder: 'Filtrer la valeur',
51
51
  // Filter operators text
52
52
  filterOperatorContains: 'contient',
53
- filterOperatorEquals: 'égal à',
53
+ filterOperatorEquals: 'est égal à',
54
54
  filterOperatorStartsWith: 'commence par',
55
55
  filterOperatorEndsWith: 'se termine par',
56
56
  filterOperatorIs: 'est',
@@ -86,7 +86,7 @@ var frFRGrid = {
86
86
  return count > 1 ? "".concat(count.toLocaleString(), " lignes s\xE9lectionn\xE9es") : "".concat(count.toLocaleString(), " ligne s\xE9lectionn\xE9e");
87
87
  },
88
88
  // Total row amount footer text
89
- footerTotalRows: 'Lignes totales :',
89
+ footerTotalRows: 'Total de lignes :',
90
90
  // Total visible row amount footer text
91
91
  footerTotalVisibleRows: function footerTotalVisibleRows(visibleCount, totalCount) {
92
92
  return "".concat(visibleCount.toLocaleString(), " sur ").concat(totalCount.toLocaleString());
@@ -39,7 +39,7 @@ var ptBRGrid = {
39
39
  columnsPanelHideAllButton: 'Ocultar todas',
40
40
  // Filter panel text
41
41
  filterPanelAddFilter: 'Adicionar filtro',
42
- // filterPanelRemoveAll: 'Remove all',
42
+ filterPanelRemoveAll: 'Remover todos',
43
43
  filterPanelDeleteIconLabel: 'Excluir',
44
44
  filterPanelLogicOperator: 'Operador lógico',
45
45
  filterPanelOperator: 'Operador',
@@ -53,7 +53,7 @@ var ukUAGrid = {
53
53
  columnsPanelHideAllButton: 'Приховати всі',
54
54
  // Filter panel text
55
55
  filterPanelAddFilter: 'Додати фільтр',
56
- // filterPanelRemoveAll: 'Remove all',
56
+ filterPanelRemoveAll: 'Видалити всі',
57
57
  filterPanelDeleteIconLabel: 'Видалити',
58
58
  filterPanelLogicOperator: 'Логічна функція',
59
59
  filterPanelOperator: 'Оператори',
@@ -83,7 +83,7 @@ var ukUAGrid = {
83
83
  // Column menu text
84
84
  columnMenuLabel: 'Меню',
85
85
  columnMenuShowColumns: 'Показати стовпці',
86
- // columnMenuManageColumns: 'Manage columns',
86
+ columnMenuManageColumns: 'Керування стовпцями',
87
87
  columnMenuFilter: 'Фільтр',
88
88
  columnMenuHideColumn: 'Приховати',
89
89
  columnMenuUnsort: 'Скасувати сортування',
@@ -147,12 +147,11 @@ var ukUAGrid = {
147
147
  // Row reordering text
148
148
  rowReorderingHeaderName: 'Порядок рядків',
149
149
  // Aggregation
150
- aggregationMenuItemHeader: 'Агрегація'
151
- // aggregationFunctionLabelSum: 'sum',
152
- // aggregationFunctionLabelAvg: 'avg',
153
- // aggregationFunctionLabelMin: 'min',
154
- // aggregationFunctionLabelMax: 'max',
155
- // aggregationFunctionLabelSize: 'size',
150
+ aggregationMenuItemHeader: 'Агрегація',
151
+ aggregationFunctionLabelSum: 'сума',
152
+ aggregationFunctionLabelAvg: 'сер',
153
+ aggregationFunctionLabelMin: 'мін',
154
+ aggregationFunctionLabelMax: 'макс',
155
+ aggregationFunctionLabelSize: 'кількість'
156
156
  };
157
-
158
157
  export var ukUA = getGridLocalization(ukUAGrid, ukUACore);
@@ -9,6 +9,7 @@ import MUIIconButton from '@mui/material/IconButton';
9
9
  import MUITooltip from '@mui/material/Tooltip';
10
10
  import MUIPopper from '@mui/material/Popper';
11
11
  import MUIInputLabel from '@mui/material/InputLabel';
12
+ import MUIChip from '@mui/material/Chip';
12
13
  import { GridColumnUnsortedIcon } from './icons/GridColumnUnsortedIcon';
13
14
  import { GridAddIcon, GridArrowDownwardIcon, GridArrowUpwardIcon, GridCheckIcon, GridCloseIcon, GridColumnIcon, GridDragIcon, GridExpandMoreIcon, GridFilterAltIcon, GridFilterListIcon, GridKeyboardArrowRight, GridMoreVertIcon, GridRemoveIcon, GridSaveAltIcon, GridSearchIcon, GridSeparatorIcon, GridTableRowsIcon, GridTripleDotsVerticalIcon, GridViewHeadlineIcon, GridViewStreamIcon, GridVisibilityOffIcon, GridViewColumnIcon, GridClearIcon, GridLoadIcon, GridDeleteForeverIcon } from './icons';
14
15
  import MUISelectOption from './components/MUISelectOption';
@@ -60,6 +61,7 @@ var materialSlots = _extends({}, iconSlots, {
60
61
  BaseTooltip: MUITooltip,
61
62
  BasePopper: MUIPopper,
62
63
  BaseInputLabel: MUIInputLabel,
63
- BaseSelectOption: MUISelectOption
64
+ BaseSelectOption: MUISelectOption,
65
+ BaseChip: MUIChip
64
66
  });
65
67
  export default materialSlots;
@@ -11,7 +11,6 @@ export * from './gridColumnMenuApi';
11
11
  export * from './gridPreferencesPanelApi';
12
12
  export * from './gridPrintExportApi';
13
13
  export * from './gridDisableVirtualizationApi';
14
- export * from './gridClipboardApi';
15
14
  export * from './gridCallbackDetails';
16
15
  export * from './gridScrollApi';
17
16
  export * from './gridVirtualScrollerApi';
@@ -38,4 +38,17 @@ export function getGridCellElement(root, _ref) {
38
38
  var cellSelector = ".".concat(gridClasses.cell, "[data-field=\"").concat(escapeOperandAttributeSelector(field), "\"]");
39
39
  var selector = "".concat(rowSelector, " ").concat(cellSelector);
40
40
  return root.querySelector(selector);
41
- }
41
+ }
42
+
43
+ // https://www.abeautifulsite.net/posts/finding-the-active-element-in-a-shadow-root/
44
+ export var getActiveElement = function getActiveElement() {
45
+ var root = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
46
+ var activeEl = root.activeElement;
47
+ if (!activeEl) {
48
+ return null;
49
+ }
50
+ if (activeEl.shadowRoot) {
51
+ return getActiveElement(activeEl.shadowRoot);
52
+ }
53
+ return activeEl;
54
+ };
package/locales/deDE.js CHANGED
@@ -37,7 +37,7 @@ const deDEGrid = {
37
37
  columnsPanelHideAllButton: 'Verberge alle',
38
38
  // Filter panel text
39
39
  filterPanelAddFilter: 'Filter hinzufügen',
40
- // filterPanelRemoveAll: 'Remove all',
40
+ filterPanelRemoveAll: 'Alle entfernen',
41
41
  filterPanelDeleteIconLabel: 'Löschen',
42
42
  filterPanelLogicOperator: 'Logische Operatoren',
43
43
  filterPanelOperator: 'Operatoren',
@@ -67,7 +67,7 @@ const deDEGrid = {
67
67
  // Column menu text
68
68
  columnMenuLabel: 'Menü',
69
69
  columnMenuShowColumns: 'Zeige alle Spalten',
70
- // columnMenuManageColumns: 'Manage columns',
70
+ columnMenuManageColumns: 'Spalten verwalten',
71
71
  columnMenuFilter: 'Filter',
72
72
  columnMenuHideColumn: 'Verbergen',
73
73
  columnMenuUnsort: 'Sortierung deaktivieren',
package/locales/frFR.js CHANGED
@@ -7,7 +7,7 @@ const frFRGrid = {
7
7
  // Density selector toolbar button text
8
8
  toolbarDensity: 'Densité',
9
9
  toolbarDensityLabel: 'Densité',
10
- toolbarDensityCompact: 'Compact',
10
+ toolbarDensityCompact: 'Compacte',
11
11
  toolbarDensityStandard: 'Standard',
12
12
  toolbarDensityComfortable: 'Confortable',
13
13
  // Columns selector toolbar button text
@@ -20,7 +20,7 @@ const frFRGrid = {
20
20
  toolbarFiltersTooltipShow: 'Afficher les filtres',
21
21
  toolbarFiltersTooltipActive: count => count > 1 ? `${count} filtres actifs` : `${count} filtre actif`,
22
22
  // Quick filter toolbar field
23
- toolbarQuickFilterPlaceholder: 'Recherche…',
23
+ toolbarQuickFilterPlaceholder: 'Rechercher…',
24
24
  toolbarQuickFilterLabel: 'Recherche',
25
25
  toolbarQuickFilterDeleteIconLabel: 'Supprimer',
26
26
  // Export selector toolbar button text
@@ -30,7 +30,7 @@ const frFRGrid = {
30
30
  toolbarExportPrint: 'Imprimer',
31
31
  toolbarExportExcel: 'Télécharger pour Excel',
32
32
  // Columns panel text
33
- columnsPanelTextFieldLabel: 'Chercher colonne',
33
+ columnsPanelTextFieldLabel: 'Chercher une colonne',
34
34
  columnsPanelTextFieldPlaceholder: 'Titre de la colonne',
35
35
  columnsPanelDragIconLabel: 'Réorganiser la colonne',
36
36
  columnsPanelShowAllButton: 'Tout afficher',
@@ -43,12 +43,12 @@ const frFRGrid = {
43
43
  filterPanelOperator: 'Opérateur',
44
44
  filterPanelOperatorAnd: 'Et',
45
45
  filterPanelOperatorOr: 'Ou',
46
- filterPanelColumns: 'Colonnes',
46
+ filterPanelColumns: 'Colonne',
47
47
  filterPanelInputLabel: 'Valeur',
48
48
  filterPanelInputPlaceholder: 'Filtrer la valeur',
49
49
  // Filter operators text
50
50
  filterOperatorContains: 'contient',
51
- filterOperatorEquals: 'égal à',
51
+ filterOperatorEquals: 'est égal à',
52
52
  filterOperatorStartsWith: 'commence par',
53
53
  filterOperatorEndsWith: 'se termine par',
54
54
  filterOperatorIs: 'est',
@@ -80,7 +80,7 @@ const frFRGrid = {
80
80
  // Rows selected footer text
81
81
  footerRowSelected: count => count > 1 ? `${count.toLocaleString()} lignes sélectionnées` : `${count.toLocaleString()} ligne sélectionnée`,
82
82
  // Total row amount footer text
83
- footerTotalRows: 'Lignes totales :',
83
+ footerTotalRows: 'Total de lignes :',
84
84
  // Total visible row amount footer text
85
85
  footerTotalVisibleRows: (visibleCount, totalCount) => `${visibleCount.toLocaleString()} sur ${totalCount.toLocaleString()}`,
86
86
  // Checkbox selection text
package/locales/ptBR.js CHANGED
@@ -37,7 +37,7 @@ const ptBRGrid = {
37
37
  columnsPanelHideAllButton: 'Ocultar todas',
38
38
  // Filter panel text
39
39
  filterPanelAddFilter: 'Adicionar filtro',
40
- // filterPanelRemoveAll: 'Remove all',
40
+ filterPanelRemoveAll: 'Remover todos',
41
41
  filterPanelDeleteIconLabel: 'Excluir',
42
42
  filterPanelLogicOperator: 'Operador lógico',
43
43
  filterPanelOperator: 'Operador',