@mui/x-data-grid 6.18.2 → 6.18.4

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 (75) hide show
  1. package/CHANGELOG.md +101 -1
  2. package/components/GridRow.js +2 -4
  3. package/components/cell/GridCell.js +15 -15
  4. package/components/cell/GridEditDateCell.js +1 -20
  5. package/components/columnHeaders/GridColumnGroupHeader.js +2 -1
  6. package/components/columnHeaders/GridColumnHeaderItem.js +2 -1
  7. package/components/panel/filterPanel/GridFilterForm.js +2 -2
  8. package/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  9. package/hooks/features/editing/useGridCellEditing.js +8 -21
  10. package/hooks/features/editing/useGridRowEditing.js +7 -21
  11. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -1
  12. package/hooks/features/rowSelection/useGridRowSelection.js +2 -1
  13. package/index.js +1 -1
  14. package/internals/index.d.ts +1 -1
  15. package/internals/index.js +1 -1
  16. package/legacy/components/GridRow.js +2 -4
  17. package/legacy/components/cell/GridCell.js +14 -14
  18. package/legacy/components/cell/GridEditDateCell.js +1 -20
  19. package/legacy/components/columnHeaders/GridColumnGroupHeader.js +2 -1
  20. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +2 -1
  21. package/legacy/components/panel/filterPanel/GridFilterForm.js +2 -2
  22. package/legacy/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  23. package/legacy/hooks/features/editing/useGridCellEditing.js +8 -21
  24. package/legacy/hooks/features/editing/useGridRowEditing.js +7 -23
  25. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -1
  26. package/legacy/hooks/features/rowSelection/useGridRowSelection.js +2 -1
  27. package/legacy/index.js +1 -1
  28. package/legacy/internals/index.js +1 -1
  29. package/legacy/locales/bgBG.js +33 -37
  30. package/legacy/locales/daDK.js +37 -39
  31. package/legacy/models/params/gridEditCellParams.js +1 -0
  32. package/legacy/utils/domUtils.js +10 -1
  33. package/locales/bgBG.js +33 -37
  34. package/locales/daDK.js +37 -39
  35. package/models/api/gridEditingApi.d.ts +2 -4
  36. package/models/params/gridEditCellParams.d.ts +3 -1
  37. package/models/params/gridEditCellParams.js +1 -0
  38. package/models/params/gridRowParams.d.ts +1 -0
  39. package/modern/components/GridRow.js +2 -4
  40. package/modern/components/cell/GridCell.js +15 -15
  41. package/modern/components/cell/GridEditDateCell.js +1 -20
  42. package/modern/components/columnHeaders/GridColumnGroupHeader.js +2 -1
  43. package/modern/components/columnHeaders/GridColumnHeaderItem.js +2 -1
  44. package/modern/components/panel/filterPanel/GridFilterForm.js +2 -2
  45. package/modern/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  46. package/modern/hooks/features/editing/useGridCellEditing.js +8 -21
  47. package/modern/hooks/features/editing/useGridRowEditing.js +7 -21
  48. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -1
  49. package/modern/hooks/features/rowSelection/useGridRowSelection.js +2 -1
  50. package/modern/index.js +1 -1
  51. package/modern/internals/index.js +1 -1
  52. package/modern/locales/bgBG.js +33 -37
  53. package/modern/locales/daDK.js +37 -39
  54. package/modern/models/params/gridEditCellParams.js +1 -0
  55. package/modern/utils/domUtils.js +10 -1
  56. package/node/components/GridRow.js +1 -3
  57. package/node/components/cell/GridCell.js +15 -15
  58. package/node/components/cell/GridEditDateCell.js +1 -20
  59. package/node/components/columnHeaders/GridColumnGroupHeader.js +2 -1
  60. package/node/components/columnHeaders/GridColumnHeaderItem.js +2 -1
  61. package/node/components/panel/filterPanel/GridFilterForm.js +2 -2
  62. package/node/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  63. package/node/hooks/features/editing/useGridCellEditing.js +7 -20
  64. package/node/hooks/features/editing/useGridRowEditing.js +6 -20
  65. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -1
  66. package/node/hooks/features/rowSelection/useGridRowSelection.js +2 -1
  67. package/node/index.js +1 -1
  68. package/node/internals/index.js +7 -0
  69. package/node/locales/bgBG.js +33 -37
  70. package/node/locales/daDK.js +37 -39
  71. package/node/models/params/gridEditCellParams.js +1 -0
  72. package/node/utils/domUtils.js +11 -1
  73. package/package.json +1 -1
  74. package/utils/domUtils.d.ts +2 -0
  75. package/utils/domUtils.js +10 -1
@@ -74,7 +74,6 @@ function GridEditDateCell(props) {
74
74
  classes: rootProps.classes
75
75
  };
76
76
  var classes = useUtilityClasses(ownerState);
77
- var hasUpdatedEditValueOnMount = React.useRef(false);
78
77
  var parseValueToDate = React.useCallback(function (value) {
79
78
  if (value === '') {
80
79
  return null;
@@ -148,26 +147,8 @@ function GridEditDateCell(props) {
148
147
  inputRef.current.focus();
149
148
  }
150
149
  }, [hasFocus]);
151
- var meta = apiRef.current.unstable_getEditCellMeta(id, field);
152
- var handleInputRef = function handleInputRef(el) {
153
- inputRef.current = el;
154
- if (meta != null && meta.unstable_updateValueOnRender && !hasUpdatedEditValueOnMount.current) {
155
- var inputValue = inputRef.current.value;
156
- var parsedDate = parseValueToDate(inputValue);
157
- setValueState({
158
- parsed: parsedDate,
159
- formatted: inputValue
160
- });
161
- apiRef.current.setEditCellValue({
162
- id: id,
163
- field: field,
164
- value: parsedDate
165
- });
166
- hasUpdatedEditValueOnMount.current = true;
167
- }
168
- };
169
150
  return /*#__PURE__*/_jsx(StyledInputBase, _extends({
170
- inputRef: handleInputRef,
151
+ inputRef: inputRef,
171
152
  fullWidth: true,
172
153
  className: classes.root,
173
154
  type: isDateTime ? 'datetime-local' : 'date',
@@ -7,6 +7,7 @@ import { gridColumnGroupsLookupSelector } from '../../hooks/features/columnGroup
7
7
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
8
8
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
9
9
  import { GridGenericColumnHeaderItem } from './GridGenericColumnHeaderItem';
10
+ import { isEventTargetInPortal } from '../../utils/domUtils';
10
11
  import { jsx as _jsx } from "react/jsx-runtime";
11
12
  var useUtilityClasses = function useUtilityClasses(ownerState) {
12
13
  var classes = ownerState.classes,
@@ -85,7 +86,7 @@ function GridColumnGroupHeader(props) {
85
86
  return function (event) {
86
87
  // Ignore portal
87
88
  // See https://github.com/mui/mui-x/issues/1721
88
- if (!event.currentTarget.contains(event.target)) {
89
+ if (isEventTargetInPortal(event)) {
89
90
  return;
90
91
  }
91
92
  apiRef.current.publishEvent(eventName, renderParams, event);
@@ -10,6 +10,7 @@ import { GridColumnHeaderMenu } from '../menu/columnMenu/GridColumnHeaderMenu';
10
10
  import { getDataGridUtilityClass } from '../../constants/gridClasses';
11
11
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
12
12
  import { GridGenericColumnHeaderItem } from './GridGenericColumnHeaderItem';
13
+ import { isEventTargetInPortal } from '../../utils/domUtils';
13
14
  import { jsx as _jsx } from "react/jsx-runtime";
14
15
  import { jsxs as _jsxs } from "react/jsx-runtime";
15
16
  var useUtilityClasses = function useUtilityClasses(ownerState) {
@@ -71,7 +72,7 @@ function GridColumnHeaderItem(props) {
71
72
  return function (event) {
72
73
  // Ignore portal
73
74
  // See https://github.com/mui/mui-x/issues/1721
74
- if (!event.currentTarget.contains(event.target)) {
75
+ if (isEventTargetInPortal(event)) {
75
76
  return;
76
77
  }
77
78
  apiRef.current.publishEvent(eventName, apiRef.current.getColumnHeaderParams(colDef.field), event);
@@ -205,8 +205,8 @@ var GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(props
205
205
  return operator.value === item.operator;
206
206
  }) || column.filterOperators[0];
207
207
 
208
- // Erase filter value if the input component is modified
209
- var eraseItemValue = !newOperator.InputComponent || newOperator.InputComponent !== (currentOperator == null ? void 0 : currentOperator.InputComponent);
208
+ // Erase filter value if the input component or filtered column type is modified
209
+ var eraseItemValue = !newOperator.InputComponent || newOperator.InputComponent !== (currentOperator == null ? void 0 : currentOperator.InputComponent) || column.type !== currentColumn.type;
210
210
  applyFilterChanges(_extends({}, item, {
211
211
  field: field,
212
212
  operator: newOperator.value,
@@ -47,7 +47,7 @@ function GridFilterInputValue(props) {
47
47
  }, [id, applyValue, item, rootProps.filterDebounceMs, filterTimeout]);
48
48
  React.useEffect(function () {
49
49
  var itemPlusTag = item;
50
- if (itemPlusTag.fromInput !== id) {
50
+ if (itemPlusTag.fromInput !== id || item.value === undefined) {
51
51
  var _item$value2;
52
52
  setFilterValueState(String((_item$value2 = item.value) != null ? _item$value2 : ''));
53
53
  }
@@ -8,7 +8,7 @@ var _excluded = ["id", "field"],
8
8
  _excluded2 = ["id", "field"];
9
9
  import _regeneratorRuntime from "@babel/runtime/regenerator";
10
10
  import * as React from 'react';
11
- import { unstable_useEventCallback as useEventCallback } from '@mui/utils';
11
+ import { unstable_useEventCallback as useEventCallback, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
12
12
  import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
13
13
  import { GridEditModes, GridCellModes } from '../../../models/gridEditRowModel';
14
14
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
@@ -108,7 +108,7 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
108
108
  if (isPrintableKey(event)) {
109
109
  _reason = GridCellEditStartReasons.printableKeyDown;
110
110
  } else if ((event.ctrlKey || event.metaKey) && event.key === 'v') {
111
- _reason = GridCellEditStartReasons.printableKeyDown;
111
+ _reason = GridCellEditStartReasons.pasteKeyDown;
112
112
  } else if (event.key === 'Enter') {
113
113
  _reason = GridCellEditStartReasons.enterKeyDown;
114
114
  } else if (event.key === 'Delete' || event.key === 'Backspace') {
@@ -127,23 +127,12 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
127
127
  var handleCellEditStart = React.useCallback(function (params) {
128
128
  var id = params.id,
129
129
  field = params.field,
130
- reason = params.reason,
131
- key = params.key,
132
- colDef = params.colDef;
130
+ reason = params.reason;
133
131
  var startCellEditModeParams = {
134
132
  id: id,
135
133
  field: field
136
134
  };
137
- if (reason === GridCellEditStartReasons.printableKeyDown) {
138
- if (React.version.startsWith('17')) {
139
- // In React 17, cleaning the input is enough.
140
- // The sequence of events makes the key pressed by the end-users update the textbox directly.
141
- startCellEditModeParams.deleteValue = true;
142
- } else {
143
- var initialValue = colDef.valueParser ? colDef.valueParser(key) : key;
144
- startCellEditModeParams.initialValue = initialValue;
145
- }
146
- } else if (reason === GridCellEditStartReasons.deleteKeyDown) {
135
+ if (reason === GridCellEditStartReasons.printableKeyDown || reason === GridCellEditStartReasons.deleteKeyDown || reason === GridCellEditStartReasons.pasteKeyDown) {
147
136
  startCellEditModeParams.deleteValue = true;
148
137
  }
149
138
  apiRef.current.startCellEditMode(startCellEditModeParams);
@@ -244,17 +233,13 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
244
233
  deleteValue = params.deleteValue,
245
234
  initialValue = params.initialValue;
246
235
  var newValue = apiRef.current.getCellValue(id, field);
247
- // eslint-disable-next-line @typescript-eslint/naming-convention
248
- var unstable_updateValueOnRender = false;
249
236
  if (deleteValue || initialValue) {
250
237
  newValue = deleteValue ? '' : initialValue;
251
- unstable_updateValueOnRender = true;
252
238
  }
253
239
  var newProps = {
254
240
  value: newValue,
255
241
  error: false,
256
- isProcessingProps: false,
257
- unstable_updateValueOnRender: unstable_updateValueOnRender
242
+ isProcessingProps: false
258
243
  };
259
244
  updateOrDeleteFieldState(id, field, newProps);
260
245
  apiRef.current.setCellFocus(id, field);
@@ -439,7 +424,9 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
439
424
  updateCellModesModel(cellModesModelProp);
440
425
  }
441
426
  }, [cellModesModelProp, updateCellModesModel]);
442
- React.useEffect(function () {
427
+
428
+ // Run this effect synchronously so that the keyboard event can impact the yet-to-be-rendered input.
429
+ useEnhancedEffect(function () {
443
430
  var idToIdLookup = gridRowsDataRowIdToIdLookupSelector(apiRef);
444
431
 
445
432
  // Update the ref here because updateStateToStopCellEditMode may change it later
@@ -6,7 +6,7 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
6
6
  var _excluded = ["id"],
7
7
  _excluded2 = ["id"];
8
8
  import * as React from 'react';
9
- import { unstable_useEventCallback as useEventCallback } from '@mui/utils';
9
+ import { unstable_useEventCallback as useEventCallback, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
10
10
  import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
11
11
  import { GridEditModes, GridRowModes } from '../../../models/gridEditRowModel';
12
12
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
@@ -179,7 +179,6 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
179
179
  var rowParams = apiRef.current.getRowParams(params.id);
180
180
  var _newParams = _extends({}, rowParams, {
181
181
  field: params.field,
182
- key: event.key,
183
182
  reason: _reason
184
183
  });
185
184
  apiRef.current.publishEvent('rowEditStart', _newParams, event);
@@ -189,25 +188,12 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
189
188
  var handleRowEditStart = React.useCallback(function (params) {
190
189
  var id = params.id,
191
190
  field = params.field,
192
- reason = params.reason,
193
- key = params.key,
194
- columns = params.columns;
191
+ reason = params.reason;
195
192
  var startRowEditModeParams = {
196
193
  id: id,
197
194
  fieldToFocus: field
198
195
  };
199
- if (reason === GridRowEditStartReasons.printableKeyDown) {
200
- if (React.version.startsWith('17')) {
201
- // In React 17, cleaning the input is enough.
202
- // The sequence of events makes the key pressed by the end-users update the textbox directly.
203
- startRowEditModeParams.deleteValue = !!field;
204
- } else {
205
- var colDef = columns.find(function (col) {
206
- return col.field === field;
207
- });
208
- startRowEditModeParams.initialValue = colDef.valueParser ? colDef.valueParser(key) : key;
209
- }
210
- } else if (reason === GridRowEditStartReasons.deleteKeyDown) {
196
+ if (reason === GridRowEditStartReasons.printableKeyDown || reason === GridRowEditStartReasons.deleteKeyDown) {
211
197
  startRowEditModeParams.deleteValue = !!field;
212
198
  }
213
199
  apiRef.current.startRowEditMode(startRowEditModeParams);
@@ -322,17 +308,13 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
322
308
  return acc;
323
309
  }
324
310
  var newValue = apiRef.current.getCellValue(id, field);
325
- // eslint-disable-next-line @typescript-eslint/naming-convention
326
- var unstable_updateValueOnRender = false;
327
311
  if (fieldToFocus === field && (deleteValue || initialValue)) {
328
312
  newValue = deleteValue ? '' : initialValue;
329
- unstable_updateValueOnRender = true;
330
313
  }
331
314
  acc[field] = {
332
315
  value: newValue,
333
316
  error: false,
334
- isProcessingProps: false,
335
- unstable_updateValueOnRender: unstable_updateValueOnRender
317
+ isProcessingProps: false
336
318
  };
337
319
  return acc;
338
320
  }, {});
@@ -559,7 +541,9 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
559
541
  updateRowModesModel(rowModesModelProp);
560
542
  }
561
543
  }, [rowModesModelProp, updateRowModesModel]);
562
- React.useEffect(function () {
544
+
545
+ // Run this effect synchronously so that the keyboard event can impact the yet-to-be-rendered input.
546
+ useEnhancedEffect(function () {
563
547
  var idToIdLookup = gridRowsDataRowIdToIdLookupSelector(apiRef);
564
548
 
565
549
  // Update the ref here because updateStateToStopRowEditMode may change it later
@@ -16,6 +16,7 @@ import { unstable_gridFocusColumnGroupHeaderSelector } from '../focus';
16
16
  import { gridColumnGroupsHeaderMaxDepthSelector } from '../columnGrouping/gridColumnGroupsSelector';
17
17
  import { unstable_gridHeaderFilteringEditFieldSelector, unstable_gridHeaderFilteringMenuSelector } from '../headerFiltering/gridHeaderFilteringSelectors';
18
18
  import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
19
+ import { isEventTargetInPortal } from '../../../utils/domUtils';
19
20
  function enrichPageRowsWithPinnedRows(apiRef, rows) {
20
21
  var pinnedRows = gridPinnedRowsSelector(apiRef) || {};
21
22
  return [].concat(_toConsumableArray(pinnedRows.top || []), _toConsumableArray(rows), _toConsumableArray(pinnedRows.bottom || []));
@@ -412,7 +413,7 @@ export var useGridKeyboardNavigation = function useGridKeyboardNavigation(apiRef
412
413
  }, [apiRef, currentPageRows.length, goToHeader, goToGroupHeader, goToCell, getRowIdFromIndex]);
413
414
  var handleCellKeyDown = React.useCallback(function (params, event) {
414
415
  // Ignore portal
415
- if (!event.currentTarget.contains(event.target)) {
416
+ if (isEventTargetInPortal(event)) {
416
417
  return;
417
418
  }
418
419
 
@@ -15,6 +15,7 @@ import { isKeyboardEvent, isNavigationKey } from '../../../utils/keyboardUtils';
15
15
  import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
16
16
  import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../../../constants/gridDetailPanelToggleField';
17
17
  import { gridClasses } from '../../../constants/gridClasses';
18
+ import { isEventTargetInPortal } from '../../../utils/domUtils';
18
19
  var getSelectionModelPropValue = function getSelectionModelPropValue(selectionModelProp, prevSelectionModel) {
19
20
  if (selectionModelProp == null) {
20
21
  return selectionModelProp;
@@ -312,7 +313,7 @@ export var useGridRowSelection = function useGridRowSelection(apiRef, props) {
312
313
 
313
314
  // Ignore portal
314
315
  // Do not apply shortcuts if the focus is not on the cell root component
315
- if (!event.currentTarget.contains(event.target)) {
316
+ if (isEventTargetInPortal(event)) {
316
317
  return;
317
318
  }
318
319
  if (isNavigationKey(event.key) && event.shiftKey) {
package/legacy/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v6.18.2
2
+ * @mui/x-data-grid v6.18.4
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -54,7 +54,7 @@ export { useGridInitializeState } from '../hooks/utils/useGridInitializeState';
54
54
  export { getColumnsToExport, defaultGetRowsToExport } from '../hooks/features/export/utils';
55
55
  export * from '../utils/createControllablePromise';
56
56
  export { createSelector, createSelectorMemoized, unstable_resetCreateSelectorCache } from '../utils/createSelector';
57
- export { findParentElementFromClassName, getActiveElement } from '../utils/domUtils';
57
+ export { findParentElementFromClassName, getActiveElement, isEventTargetInPortal } from '../utils/domUtils';
58
58
  export { isNavigationKey } from '../utils/keyboardUtils';
59
59
  export { clamp, isDeepEqual, isNumber, isFunction, isObject } from '../utils/utils';
60
60
  export { buildWarning } from '../utils/warning';
@@ -62,34 +62,32 @@ var bgBGGrid = {
62
62
  filterOperatorIsEmpty: 'е празен',
63
63
  filterOperatorIsNotEmpty: 'не е празен',
64
64
  filterOperatorIsAnyOf: 'е някой от',
65
- // 'filterOperator=': '=',
66
- // 'filterOperator!=': '!=',
67
- // 'filterOperator>': '>',
68
- // 'filterOperator>=': '>=',
69
- // 'filterOperator<': '<',
70
- // 'filterOperator<=': '<=',
71
-
65
+ 'filterOperator=': '=',
66
+ 'filterOperator!=': '!=',
67
+ 'filterOperator>': '>',
68
+ 'filterOperator>=': '>=',
69
+ 'filterOperator<': '<',
70
+ 'filterOperator<=': '<=',
72
71
  // Header filter operators text
73
- // headerFilterOperatorContains: 'Contains',
74
- // headerFilterOperatorEquals: 'Equals',
75
- // headerFilterOperatorStartsWith: 'Starts with',
76
- // headerFilterOperatorEndsWith: 'Ends with',
77
- // headerFilterOperatorIs: 'Is',
78
- // headerFilterOperatorNot: 'Is not',
79
- // headerFilterOperatorAfter: 'Is after',
80
- // headerFilterOperatorOnOrAfter: 'Is on or after',
81
- // headerFilterOperatorBefore: 'Is before',
82
- // headerFilterOperatorOnOrBefore: 'Is on or before',
83
- // headerFilterOperatorIsEmpty: 'Is empty',
84
- // headerFilterOperatorIsNotEmpty: 'Is not empty',
85
- // headerFilterOperatorIsAnyOf: 'Is any of',
86
- // 'headerFilterOperator=': 'Equals',
87
- // 'headerFilterOperator!=': 'Not equals',
88
- // 'headerFilterOperator>': 'Greater than',
89
- // 'headerFilterOperator>=': 'Greater than or equal to',
90
- // 'headerFilterOperator<': 'Less than',
91
- // 'headerFilterOperator<=': 'Less than or equal to',
92
-
72
+ headerFilterOperatorContains: 'Съдържа',
73
+ headerFilterOperatorEquals: 'Равнo',
74
+ headerFilterOperatorStartsWith: 'Започва с',
75
+ headerFilterOperatorEndsWith: 'Завършва с',
76
+ headerFilterOperatorIs: 'Равно е на',
77
+ headerFilterOperatorNot: 'Не се равнява на',
78
+ headerFilterOperatorAfter: 'След',
79
+ headerFilterOperatorOnOrAfter: 'След (включително)',
80
+ headerFilterOperatorBefore: 'Преди',
81
+ headerFilterOperatorOnOrBefore: 'Преди (включително)',
82
+ headerFilterOperatorIsEmpty: 'Празен',
83
+ headerFilterOperatorIsNotEmpty: 'Не е празен',
84
+ headerFilterOperatorIsAnyOf: 'Всичко от',
85
+ 'headerFilterOperator=': 'Равно',
86
+ 'headerFilterOperator!=': 'Различно',
87
+ 'headerFilterOperator>': 'По-голямо от',
88
+ 'headerFilterOperator>=': 'По-голямо или равно на',
89
+ 'headerFilterOperator<': 'По-малко от',
90
+ 'headerFilterOperator<=': 'По-малко или равно на',
93
91
  // Filter values text
94
92
  filterValueAny: 'всякакви',
95
93
  filterValueTrue: 'вярно',
@@ -147,19 +145,17 @@ var bgBGGrid = {
147
145
  return "\u0421\u043F\u0440\u0438 \u0433\u0440\u0443\u043F\u0438\u0440\u0430\u043D\u0435 \u043F\u043E ".concat(name);
148
146
  },
149
147
  // Master/detail
150
- // detailPanelToggle: 'Detail panel toggle',
148
+ detailPanelToggle: 'Превключване на панела с детайли',
151
149
  expandDetailPanel: 'Разгъване',
152
150
  collapseDetailPanel: 'Свиване',
153
151
  // Row reordering text
154
- rowReorderingHeaderName: 'Подредба на редове'
155
-
152
+ rowReorderingHeaderName: 'Подредба на редове',
156
153
  // Aggregation
157
- // aggregationMenuItemHeader: 'Aggregation',
158
- // aggregationFunctionLabelSum: 'sum',
159
- // aggregationFunctionLabelAvg: 'avg',
160
- // aggregationFunctionLabelMin: 'min',
161
- // aggregationFunctionLabelMax: 'max',
162
- // aggregationFunctionLabelSize: 'size',
154
+ aggregationMenuItemHeader: 'Агрегиране',
155
+ aggregationFunctionLabelSum: 'сума',
156
+ aggregationFunctionLabelAvg: 'срст',
157
+ aggregationFunctionLabelMin: 'мин',
158
+ aggregationFunctionLabelMax: 'макс',
159
+ aggregationFunctionLabelSize: 'размер'
163
160
  };
164
-
165
161
  export var bgBG = getGridLocalization(bgBGGrid, bgBGCore);
@@ -49,47 +49,45 @@ var daDKGrid = {
49
49
  filterPanelInputLabel: 'Værdi',
50
50
  filterPanelInputPlaceholder: 'Filter værdi',
51
51
  // Filter operators text
52
- filterOperatorContains: 'Indeholder',
53
- filterOperatorEquals: 'Lig med',
54
- filterOperatorStartsWith: 'Begynder med',
55
- filterOperatorEndsWith: 'Ender med',
56
- filterOperatorIs: 'Er lig med',
57
- filterOperatorNot: 'Er ikke lig med',
58
- filterOperatorAfter: 'Efter',
59
- filterOperatorOnOrAfter: ' eller efter',
60
- filterOperatorBefore: 'Før',
61
- filterOperatorOnOrBefore: ' eller før',
62
- filterOperatorIsEmpty: 'Indeholder ikke data',
63
- filterOperatorIsNotEmpty: 'Indeholder data',
52
+ filterOperatorContains: 'indeholder',
53
+ filterOperatorEquals: 'lig med',
54
+ filterOperatorStartsWith: 'begynder med',
55
+ filterOperatorEndsWith: 'ender med',
56
+ filterOperatorIs: 'er lig med',
57
+ filterOperatorNot: 'er ikke lig med',
58
+ filterOperatorAfter: 'efter',
59
+ filterOperatorOnOrAfter: ' eller efter',
60
+ filterOperatorBefore: 'før',
61
+ filterOperatorOnOrBefore: ' eller før',
62
+ filterOperatorIsEmpty: 'indeholder ikke data',
63
+ filterOperatorIsNotEmpty: 'indeholder data',
64
64
  filterOperatorIsAnyOf: 'indeholder en af',
65
- // 'filterOperator=': '=',
66
- // 'filterOperator!=': '!=',
67
- // 'filterOperator>': '>',
68
- // 'filterOperator>=': '>=',
69
- // 'filterOperator<': '<',
70
- // 'filterOperator<=': '<=',
71
-
65
+ 'filterOperator=': '=',
66
+ 'filterOperator!=': '!=',
67
+ 'filterOperator>': '>',
68
+ 'filterOperator>=': '>=',
69
+ 'filterOperator<': '<',
70
+ 'filterOperator<=': '<=',
72
71
  // Header filter operators text
73
- // headerFilterOperatorContains: 'Contains',
74
- // headerFilterOperatorEquals: 'Equals',
75
- // headerFilterOperatorStartsWith: 'Starts with',
76
- // headerFilterOperatorEndsWith: 'Ends with',
77
- // headerFilterOperatorIs: 'Is',
78
- // headerFilterOperatorNot: 'Is not',
79
- // headerFilterOperatorAfter: 'Is after',
80
- // headerFilterOperatorOnOrAfter: 'Is on or after',
81
- // headerFilterOperatorBefore: 'Is before',
82
- // headerFilterOperatorOnOrBefore: 'Is on or before',
83
- // headerFilterOperatorIsEmpty: 'Is empty',
84
- // headerFilterOperatorIsNotEmpty: 'Is not empty',
85
- // headerFilterOperatorIsAnyOf: 'Is any of',
86
- // 'headerFilterOperator=': 'Equals',
87
- // 'headerFilterOperator!=': 'Not equals',
88
- // 'headerFilterOperator>': 'Greater than',
89
- // 'headerFilterOperator>=': 'Greater than or equal to',
90
- // 'headerFilterOperator<': 'Less than',
91
- // 'headerFilterOperator<=': 'Less than or equal to',
92
-
72
+ headerFilterOperatorContains: 'Indeholder',
73
+ headerFilterOperatorEquals: 'Lig med',
74
+ headerFilterOperatorStartsWith: 'Begynder med',
75
+ headerFilterOperatorEndsWith: 'Ender med',
76
+ headerFilterOperatorIs: 'Er lig med',
77
+ headerFilterOperatorNot: 'Er ikke lig med',
78
+ headerFilterOperatorAfter: 'Efter',
79
+ headerFilterOperatorOnOrAfter: ' eller efter',
80
+ headerFilterOperatorBefore: 'Før',
81
+ headerFilterOperatorOnOrBefore: ' eller før',
82
+ headerFilterOperatorIsEmpty: 'Indeholder ikke data',
83
+ headerFilterOperatorIsNotEmpty: 'Indeholder data',
84
+ headerFilterOperatorIsAnyOf: 'Indeholder en af',
85
+ 'headerFilterOperator=': 'Lig med',
86
+ 'headerFilterOperator!=': 'Ikke lig med',
87
+ 'headerFilterOperator>': 'Større end',
88
+ 'headerFilterOperator>=': 'Større end eller lig med',
89
+ 'headerFilterOperator<': 'Mindre end',
90
+ 'headerFilterOperator<=': 'Mindre end eller lig med',
93
91
  // Filter values text
94
92
  filterValueAny: 'hvilken som helst',
95
93
  filterValueTrue: 'positiv',
@@ -6,6 +6,7 @@ var GridCellEditStartReasons = /*#__PURE__*/function (GridCellEditStartReasons)
6
6
  GridCellEditStartReasons["cellDoubleClick"] = "cellDoubleClick";
7
7
  GridCellEditStartReasons["printableKeyDown"] = "printableKeyDown";
8
8
  GridCellEditStartReasons["deleteKeyDown"] = "deleteKeyDown";
9
+ GridCellEditStartReasons["pasteKeyDown"] = "pasteKeyDown";
9
10
  return GridCellEditStartReasons;
10
11
  }(GridCellEditStartReasons || {});
11
12
  /**
@@ -51,4 +51,13 @@ export var getActiveElement = function getActiveElement() {
51
51
  return getActiveElement(activeEl.shadowRoot);
52
52
  }
53
53
  return activeEl;
54
- };
54
+ };
55
+ export function isEventTargetInPortal(event) {
56
+ if (
57
+ // The target is not an element when triggered by a Select inside the cell
58
+ // See https://github.com/mui/material-ui/issues/10534
59
+ event.target.nodeType === 1 && !event.currentTarget.contains(event.target)) {
60
+ return true;
61
+ }
62
+ return false;
63
+ }
package/locales/bgBG.js CHANGED
@@ -60,34 +60,32 @@ const bgBGGrid = {
60
60
  filterOperatorIsEmpty: 'е празен',
61
61
  filterOperatorIsNotEmpty: 'не е празен',
62
62
  filterOperatorIsAnyOf: 'е някой от',
63
- // 'filterOperator=': '=',
64
- // 'filterOperator!=': '!=',
65
- // 'filterOperator>': '>',
66
- // 'filterOperator>=': '>=',
67
- // 'filterOperator<': '<',
68
- // 'filterOperator<=': '<=',
69
-
63
+ 'filterOperator=': '=',
64
+ 'filterOperator!=': '!=',
65
+ 'filterOperator>': '>',
66
+ 'filterOperator>=': '>=',
67
+ 'filterOperator<': '<',
68
+ 'filterOperator<=': '<=',
70
69
  // Header filter operators text
71
- // headerFilterOperatorContains: 'Contains',
72
- // headerFilterOperatorEquals: 'Equals',
73
- // headerFilterOperatorStartsWith: 'Starts with',
74
- // headerFilterOperatorEndsWith: 'Ends with',
75
- // headerFilterOperatorIs: 'Is',
76
- // headerFilterOperatorNot: 'Is not',
77
- // headerFilterOperatorAfter: 'Is after',
78
- // headerFilterOperatorOnOrAfter: 'Is on or after',
79
- // headerFilterOperatorBefore: 'Is before',
80
- // headerFilterOperatorOnOrBefore: 'Is on or before',
81
- // headerFilterOperatorIsEmpty: 'Is empty',
82
- // headerFilterOperatorIsNotEmpty: 'Is not empty',
83
- // headerFilterOperatorIsAnyOf: 'Is any of',
84
- // 'headerFilterOperator=': 'Equals',
85
- // 'headerFilterOperator!=': 'Not equals',
86
- // 'headerFilterOperator>': 'Greater than',
87
- // 'headerFilterOperator>=': 'Greater than or equal to',
88
- // 'headerFilterOperator<': 'Less than',
89
- // 'headerFilterOperator<=': 'Less than or equal to',
90
-
70
+ headerFilterOperatorContains: 'Съдържа',
71
+ headerFilterOperatorEquals: 'Равнo',
72
+ headerFilterOperatorStartsWith: 'Започва с',
73
+ headerFilterOperatorEndsWith: 'Завършва с',
74
+ headerFilterOperatorIs: 'Равно е на',
75
+ headerFilterOperatorNot: 'Не се равнява на',
76
+ headerFilterOperatorAfter: 'След',
77
+ headerFilterOperatorOnOrAfter: 'След (включително)',
78
+ headerFilterOperatorBefore: 'Преди',
79
+ headerFilterOperatorOnOrBefore: 'Преди (включително)',
80
+ headerFilterOperatorIsEmpty: 'Празен',
81
+ headerFilterOperatorIsNotEmpty: 'Не е празен',
82
+ headerFilterOperatorIsAnyOf: 'Всичко от',
83
+ 'headerFilterOperator=': 'Равно',
84
+ 'headerFilterOperator!=': 'Различно',
85
+ 'headerFilterOperator>': 'По-голямо от',
86
+ 'headerFilterOperator>=': 'По-голямо или равно на',
87
+ 'headerFilterOperator<': 'По-малко от',
88
+ 'headerFilterOperator<=': 'По-малко или равно на',
91
89
  // Filter values text
92
90
  filterValueAny: 'всякакви',
93
91
  filterValueTrue: 'вярно',
@@ -135,19 +133,17 @@ const bgBGGrid = {
135
133
  groupColumn: name => `Групирай по ${name}`,
136
134
  unGroupColumn: name => `Спри групиране по ${name}`,
137
135
  // Master/detail
138
- // detailPanelToggle: 'Detail panel toggle',
136
+ detailPanelToggle: 'Превключване на панела с детайли',
139
137
  expandDetailPanel: 'Разгъване',
140
138
  collapseDetailPanel: 'Свиване',
141
139
  // Row reordering text
142
- rowReorderingHeaderName: 'Подредба на редове'
143
-
140
+ rowReorderingHeaderName: 'Подредба на редове',
144
141
  // Aggregation
145
- // aggregationMenuItemHeader: 'Aggregation',
146
- // aggregationFunctionLabelSum: 'sum',
147
- // aggregationFunctionLabelAvg: 'avg',
148
- // aggregationFunctionLabelMin: 'min',
149
- // aggregationFunctionLabelMax: 'max',
150
- // aggregationFunctionLabelSize: 'size',
142
+ aggregationMenuItemHeader: 'Агрегиране',
143
+ aggregationFunctionLabelSum: 'сума',
144
+ aggregationFunctionLabelAvg: 'срст',
145
+ aggregationFunctionLabelMin: 'мин',
146
+ aggregationFunctionLabelMax: 'макс',
147
+ aggregationFunctionLabelSize: 'размер'
151
148
  };
152
-
153
149
  export const bgBG = getGridLocalization(bgBGGrid, bgBGCore);