@mui/x-data-grid-pro 6.0.0-beta.2 → 6.0.0-beta.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 (43) hide show
  1. package/CHANGELOG.md +164 -0
  2. package/components/DataGridProColumnHeaders.js +3 -2
  3. package/components/DataGridProVirtualScroller.d.ts +1 -1
  4. package/components/DataGridProVirtualScroller.js +7 -3
  5. package/components/GridColumnMenuPinningItem.js +30 -21
  6. package/components/GridDetailPanelToggleCell.js +6 -4
  7. package/components/GridTreeDataGroupingCell.js +6 -5
  8. package/hooks/features/columnPinning/useGridColumnPinning.js +9 -6
  9. package/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +4 -2
  10. package/hooks/features/columnReorder/useGridColumnReorder.js +8 -3
  11. package/index.js +1 -1
  12. package/legacy/components/DataGridProColumnHeaders.js +3 -2
  13. package/legacy/components/DataGridProVirtualScroller.js +7 -3
  14. package/legacy/components/GridColumnMenuPinningItem.js +30 -21
  15. package/legacy/components/GridDetailPanelToggleCell.js +6 -4
  16. package/legacy/components/GridTreeDataGroupingCell.js +6 -5
  17. package/legacy/hooks/features/columnPinning/useGridColumnPinning.js +9 -6
  18. package/legacy/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +4 -2
  19. package/legacy/hooks/features/columnReorder/useGridColumnReorder.js +8 -3
  20. package/legacy/index.js +1 -1
  21. package/legacy/utils/releaseInfo.js +1 -1
  22. package/modern/components/DataGridProColumnHeaders.js +3 -2
  23. package/modern/components/DataGridProVirtualScroller.js +7 -3
  24. package/modern/components/GridColumnMenuPinningItem.js +30 -21
  25. package/modern/components/GridDetailPanelToggleCell.js +5 -4
  26. package/modern/components/GridTreeDataGroupingCell.js +5 -4
  27. package/modern/hooks/features/columnPinning/useGridColumnPinning.js +9 -6
  28. package/modern/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +4 -2
  29. package/modern/hooks/features/columnReorder/useGridColumnReorder.js +8 -3
  30. package/modern/index.js +1 -1
  31. package/modern/utils/releaseInfo.js +1 -1
  32. package/node/components/DataGridProColumnHeaders.js +2 -1
  33. package/node/components/DataGridProVirtualScroller.js +6 -2
  34. package/node/components/GridColumnMenuPinningItem.js +30 -21
  35. package/node/components/GridDetailPanelToggleCell.js +5 -4
  36. package/node/components/GridTreeDataGroupingCell.js +5 -4
  37. package/node/hooks/features/columnPinning/useGridColumnPinning.js +9 -6
  38. package/node/hooks/features/columnPinning/useGridColumnPinningPreProcessors.js +4 -2
  39. package/node/hooks/features/columnReorder/useGridColumnReorder.js +8 -3
  40. package/node/index.js +1 -1
  41. package/node/utils/releaseInfo.js +1 -1
  42. package/package.json +5 -5
  43. package/utils/releaseInfo.js +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,112 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 6.0.0-beta.4
7
+
8
+ _Feb 16, 2023_
9
+
10
+ We'd like to offer a big thanks to the 8 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - ⚡️ Improve grid performance by reducing rerenders (#7857) @cherniavskii
13
+ - 📚 Documentation improvements
14
+ - 🐞 Bugfixes
15
+
16
+ ### `@mui/x-data-grid@v6.0.0-beta.4` / `@mui/x-data-grid-pro@v6.0.0-beta.4` / `@mui/x-data-grid-premium@v6.0.0-beta.4`
17
+
18
+ #### Changes
19
+
20
+ - [DataGrid] Add interface for `singleSelect` column (#7685) @m4theushw
21
+ - [DataGrid] Allow to pass props to the `TrapFocus` inside the panel wrapper (#7733) @Vivek-Prajapatii
22
+ - [DataGrid] Avoid unnecessary rerenders after `updateRows` (#7857) @cherniavskii
23
+ - [DataGridPro] Change cursor when dragging a column (#7725) @sai6855
24
+ - [DataGridPremium] Fix `leafField` to have correct focus value (#7950) @MBilalShafi
25
+
26
+ ### `@mui/x-date-pickers@v6.0.0-beta.4` / `@mui/x-date-pickers-pro@v6.0.0-beta.4`
27
+
28
+ #### Changes
29
+
30
+ - [DateRangePicker] Fix slide transition by avoiding useless component re-rendering (#7874) @LukasTy
31
+ - [fields] Support Backspace key on `Android` (#7842) @flaviendelangle
32
+ - [fields] Support escaped characters on `Luxon` (#7888) @flaviendelangle
33
+ - [pickers] Prepare new pickers for custom fields (#7806) @flaviendelangle
34
+
35
+ ### `@mui/x-codemod@v6.0.0-beta.4`
36
+
37
+ #### Changes
38
+
39
+ - [codemod] Fix import path (#7952) @LukasTy
40
+
41
+ ### Docs
42
+
43
+ - [docs] Add an info callout specifying the current state of desktop time view (#7933) @LukasTy
44
+ - [docs] Add missing param in `useGridApiEventHandler` examples (#7939) @flaviendelangle
45
+ - [docs] Fix markdown table alignments (#7898) @oliviertassinari
46
+ - [docs] Improve `DataGrid` migration guide (#7861) @MBilalShafi
47
+ - [docs] Update `LocalizationProvider` `dateAdapter` with a link to the doc (#7872) @LukasTy
48
+
49
+ ### Core
50
+
51
+ - [core] Run editing field tests on all major adapters (#7868) @flaviendelangle
52
+
53
+ ## 6.0.0-beta.3
54
+
55
+ _Feb 9, 2023_
56
+
57
+ We'd like to offer a big thanks to the 11 contributors who made this release possible. Here are some highlights ✨:
58
+
59
+ - ⬅️ Add right-to-left support for the data grid (#6580) @yaredtsy
60
+ - ⚡️ Improve grid resize performance (#7864) @cherniavskii
61
+ - ✨ New codemods for migrating to v6 @MBilalShafi
62
+ - 📚 Documentation improvements
63
+ - 🐞 Bugfixes
64
+
65
+ ### `@mui/x-data-grid@v6.0.0-beta.3` / `@mui/x-data-grid-pro@v6.0.0-beta.3` / `@mui/x-data-grid-premium@v6.0.0-beta.3`
66
+
67
+ #### Changes
68
+
69
+ - [DataGrid] Add `BaseIconButton` component slot (#7329) @123joshuawu
70
+ - [DataGrid] Allow to customize the value displayed in the filter button tooltip (#6956) @ithrforu
71
+ - [DataGrid] Improve grid resize performance (#7864) @cherniavskii
72
+ - [DataGrid] Make `apiRef.current.getRowWithUpdatedValues` stable (#7788) @m4theushw
73
+ - [DataGrid] Support RTL (#6580) @yaredtsy
74
+ - [DataGrid] Improve query selectors for selecting cell element (#7354) @yaredtsy
75
+ - [l10n] Improve Brazilian Portuguese (pt-BR) locale (#7854) @ed-ateixeira
76
+
77
+ ### `@mui/x-date-pickers@v6.0.0-beta.3` / `@mui/x-date-pickers-pro@v6.0.0-beta.3`
78
+
79
+ #### Changes
80
+
81
+ - [fields] Allow to select year 2000 on 2-digit year section (#7858) @flaviendelangle
82
+ - [fields] Fix year editing on `day.js` (#7862) @flaviendelangle
83
+ - [fields] Fix year editing on valid date (#7834) @flaviendelangle
84
+ - [fields] Reset query when pressing `Backspace` or `Delete` (#7855) @flaviendelangle
85
+ - [pickers] Clean Popper position on new pickers (#7445) @flaviendelangle
86
+ - [pickers] Ditch pickers `skipLibCheck` (#7808) @LukasTy
87
+ - [pickers] Improve JSDoc and resulting API docs pages (#7847) @LukasTy
88
+
89
+ ### `@mui/x-codemod@v6.0.0-beta.3`
90
+
91
+ #### Changes
92
+
93
+ - [codemod] Add more cases to `rename-selectors-and-events` codemod (#7856) @MBilalShafi
94
+ - [codemod] Add warning message to the codemods and migration guide (#7813) @MBilalShafi
95
+ - [codemod] Add codemod to remove unnecessary `experimentalFeatures` flag (#7836) @MBilalShafi
96
+ - [codemod] Rename `GridFilterItem` props (#7483) @MBilalShafi
97
+ - [codemod] Rename `linkOperators` to `logicOperators` (#7707) @MBilalShafi
98
+ - [codemod] Replace `onCellFocusOut` prop for Data Grid (#7786) @MBilalShafi
99
+
100
+ ### Docs
101
+
102
+ - [docs] Add a "Whats new in v6" page linked on the sidebar (#7820) @joserodolfofreitas
103
+ - [docs] Fix hydration crash in pickers (#7734) @oliviertassinari
104
+ - [docs] Remove no longer relevant range shortcuts section (#7840) @LukasTy
105
+ - [docs] Use `@next` tag in grid and pickers installation instructions (#7814) @cherniavskii
106
+
107
+ ### Core
108
+
109
+ - [core] Remove `tslint` package leftovers (#7841) @LukasTy
110
+ - [test] Use `createDescribes` for `describeValue` and `describeValidation` (#7866) @flaviendelangle
111
+
6
112
  ## 6.0.0-beta.2
7
113
 
8
114
  We'd like to offer a big thanks to the 11 contributors who made this release possible. Here are some highlights ✨:
@@ -2073,6 +2179,64 @@ You can find more information about the new api, including how to set those tran
2073
2179
  - [test] Skip tests for column pinning and dynamic row height (#5997) @m4theushw
2074
2180
  - [website] Improve security header @oliviertassinari
2075
2181
 
2182
+ ## 5.17.24
2183
+
2184
+ _Feb 16, 2023_
2185
+
2186
+ We'd like to offer a big thanks to the 5 contributors who made this release possible. Here are some highlights ✨:
2187
+
2188
+ - 🌍 Add Hungarian (hu-HU) locale
2189
+ - 🐞 Bugfixes
2190
+
2191
+ ### `@mui/x-data-grid@v5.17.24` / `@mui/x-data-grid-pro@v5.17.24` / `@mui/x-data-grid-premium@v5.17.24`
2192
+
2193
+ #### Changes
2194
+
2195
+ - [DataGrid] Allow to pass props to the `TrapFocus` inside the panel wrapper (#7897) @Vivek-Prajapatii
2196
+ - [DataGrid] Avoid unnecessary rerenders after `updateRows` (#7945) @cherniavskii
2197
+ - [DataGridPro] Change cursor when dragging a column (#7878) @sai6855
2198
+ - [DataGridPremium] Fix `leafField` to have correct focus value (#7959) @MBilalShafi
2199
+
2200
+ ### `@mui/x-date-pickers@v5.0.19` / `@mui/x-date-pickers-pro@v5.0.19`
2201
+
2202
+ #### Changes
2203
+
2204
+ - [l10n] Add Hungarian (hu-HU) locale (#7796) @noherczeg
2205
+
2206
+ ## 5.17.23
2207
+
2208
+ _Feb 9, 2023_
2209
+
2210
+ We'd like to offer a big thanks to the 6 contributors who made this release possible. Here are some highlights ✨:
2211
+
2212
+ - 🌍 Improve Brazilian Portuguese (pt-BR) locale
2213
+ - 🎉 Add banner and callouts to inform about MUI X v6 beta
2214
+ - 🐞 Bugfixes
2215
+
2216
+ ### `@mui/x-data-grid@v5.17.23` / `@mui/x-data-grid-pro@v5.17.23` / `@mui/x-data-grid-premium@v5.17.23`
2217
+
2218
+ #### Changes
2219
+
2220
+ - [DataGrid] Allow to customize the value displayed in the filter button tooltip (#7816) @ithrforu
2221
+ - [DataGrid] Fix `getCellElement` method not working with pinned columns (#7844) @yaredtsy
2222
+ - [DataGrid] Fix stale rows issue in `unstable_replaceRows` (#7694) @MBilalShafi
2223
+ - [l10n] Improve Brazilian Portuguese (pt-BR) locale (#7850) @ed-ateixeira
2224
+
2225
+ ### `@mui/x-date-pickers@v_5.0.18` / `@mui/x-date-pickers-pro@v_5.0.18`
2226
+
2227
+ #### Changes
2228
+
2229
+ - [pickers] Update pickers when new value has a distinct timezone (#7853) @alexfauquette
2230
+
2231
+ ### Docs
2232
+
2233
+ - [docs] Add messages in v5 doc to inform people about v6 (#7838) @flaviendelangle
2234
+ - [docs] Fix 301 link @oliviertassinari
2235
+
2236
+ ### Core
2237
+
2238
+ - [core] Upgrade monorepo (#7849) @cherniavskii
2239
+
2076
2240
  ## 5.17.22
2077
2241
 
2078
2242
  _Feb 2, 2023_
@@ -3,7 +3,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  const _excluded = ["style", "className", "innerRef"];
4
4
  import * as React from 'react';
5
5
  import { unstable_composeClasses as composeClasses, unstable_useEventCallback as useEventCallback } from '@mui/utils';
6
- import { styled, alpha } from '@mui/material/styles';
6
+ import { styled, alpha, useTheme } from '@mui/material/styles';
7
7
  import { getDataGridUtilityClass, gridClasses, useGridSelector, useGridApiEventHandler, gridVisibleColumnFieldsSelector, GridColumnHeaderSeparatorSides } from '@mui/x-data-grid';
8
8
  import { GridColumnHeaders, GridColumnHeadersInner, useGridColumnHeaders } from '@mui/x-data-grid/internals';
9
9
  import { useGridRootProps } from '../hooks/utils/useGridRootProps';
@@ -78,6 +78,7 @@ export const DataGridProColumnHeaders = /*#__PURE__*/React.forwardRef(function D
78
78
  const apiRef = useGridApiContext();
79
79
  const visibleColumnFields = useGridSelector(apiRef, gridVisibleColumnFieldsSelector);
80
80
  const [scrollbarSize, setScrollbarSize] = React.useState(0);
81
+ const theme = useTheme();
81
82
  const handleContentSizeChange = useEventCallback(() => {
82
83
  const rootDimensions = apiRef.current.getRootDimensions();
83
84
  if (!rootDimensions) {
@@ -90,7 +91,7 @@ export const DataGridProColumnHeaders = /*#__PURE__*/React.forwardRef(function D
90
91
  });
91
92
  useGridApiEventHandler(apiRef, 'virtualScrollerContentSizeChange', handleContentSizeChange);
92
93
  const pinnedColumns = useGridSelector(apiRef, gridPinnedColumnsSelector);
93
- const [leftPinnedColumns, rightPinnedColumns] = filterColumns(pinnedColumns, visibleColumnFields);
94
+ const [leftPinnedColumns, rightPinnedColumns] = filterColumns(pinnedColumns, visibleColumnFields, theme.direction === 'rtl');
94
95
  const {
95
96
  isDragging,
96
97
  renderContext,
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { GridPinnedColumns } from '../hooks/features/columnPinning';
3
- export declare const filterColumns: (pinnedColumns: GridPinnedColumns, columns: string[]) => [string[], string[]];
3
+ export declare const filterColumns: (pinnedColumns: GridPinnedColumns, columns: string[], invert?: boolean) => [string[], string[]];
4
4
  interface DataGridProVirtualScrollerProps extends React.HTMLAttributes<HTMLDivElement> {
5
5
  disableVirtualization?: boolean;
6
6
  }
@@ -2,7 +2,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  const _excluded = ["className", "disableVirtualization"];
4
4
  import * as React from 'react';
5
- import { styled, alpha } from '@mui/material/styles';
5
+ import { styled, alpha, useTheme } from '@mui/material/styles';
6
6
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
7
7
  import { useGridSelector, getDataGridUtilityClass, gridClasses, gridVisibleColumnFieldsSelector, gridRowsMetaSelector, useGridApiEventHandler, GridOverlays } from '@mui/x-data-grid';
8
8
  import { GridVirtualScroller, GridVirtualScrollerContent, GridVirtualScrollerRenderZone, useGridVirtualScroller, calculatePinnedRowsHeight } from '@mui/x-data-grid/internals';
@@ -14,7 +14,7 @@ import { GridDetailPanel } from './GridDetailPanel';
14
14
  import { gridPinnedRowsSelector } from '../hooks/features/rowPinning/gridRowPinningSelector';
15
15
  import { jsx as _jsx } from "react/jsx-runtime";
16
16
  import { jsxs as _jsxs } from "react/jsx-runtime";
17
- export const filterColumns = (pinnedColumns, columns) => {
17
+ export const filterColumns = (pinnedColumns, columns, invert) => {
18
18
  var _pinnedColumns$left, _pinnedColumns$right;
19
19
  if (!Array.isArray(pinnedColumns.left) && !Array.isArray(pinnedColumns.right)) {
20
20
  return [[], []];
@@ -33,6 +33,9 @@ export const filterColumns = (pinnedColumns, columns) => {
33
33
  // Filter out from the remaining columns those columns already pinned to the left
34
34
  field => !leftPinnedColumns.includes(field));
35
35
  const rightPinnedColumns = filter(pinnedColumns.right, columnsWithoutLeftPinnedColumns);
36
+ if (invert) {
37
+ return [rightPinnedColumns, leftPinnedColumns];
38
+ }
36
39
  return [leftPinnedColumns, rightPinnedColumns];
37
40
  };
38
41
  const useUtilityClasses = ownerState => {
@@ -153,6 +156,7 @@ const DataGridProVirtualScroller = /*#__PURE__*/React.forwardRef(function DataGr
153
156
  const rightColumns = React.useRef(null);
154
157
  const topPinnedRowsRenderZoneRef = React.useRef(null);
155
158
  const bottomPinnedRowsRenderZoneRef = React.useRef(null);
159
+ const theme = useTheme();
156
160
  const handleRenderZonePositioning = React.useCallback(({
157
161
  top,
158
162
  left
@@ -182,7 +186,7 @@ const DataGridProVirtualScroller = /*#__PURE__*/React.forwardRef(function DataGr
182
186
  };
183
187
  };
184
188
  const pinnedColumns = useGridSelector(apiRef, gridPinnedColumnsSelector);
185
- const [leftPinnedColumns, rightPinnedColumns] = filterColumns(pinnedColumns, visibleColumnFields);
189
+ const [leftPinnedColumns, rightPinnedColumns] = filterColumns(pinnedColumns, visibleColumnFields, theme.direction === 'rtl');
186
190
  const pinnedRows = useGridSelector(apiRef, gridPinnedRowsSelector);
187
191
  const topPinnedRowsData = React.useMemo(() => (pinnedRows == null ? void 0 : pinnedRows.top) || [], [pinnedRows == null ? void 0 : pinnedRows.top]);
188
192
  const bottomPinnedRowsData = React.useMemo(() => (pinnedRows == null ? void 0 : pinnedRows.bottom) || [], [pinnedRows == null ? void 0 : pinnedRows.bottom]);
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import { useTheme } from '@mui/material/styles';
2
3
  import PropTypes from 'prop-types';
3
4
  import MenuItem from '@mui/material/MenuItem';
4
5
  import ListItemIcon from '@mui/material/ListItemIcon';
@@ -15,14 +16,35 @@ function GridColumnMenuPinningItem(props) {
15
16
  } = props;
16
17
  const apiRef = useGridApiContext();
17
18
  const rootProps = useGridRootProps();
18
- const pinColumn = side => event => {
19
+ const theme = useTheme();
20
+ const pinColumn = React.useCallback(side => event => {
19
21
  apiRef.current.pinColumn(colDef.field, side);
20
22
  onClick(event);
21
- };
23
+ }, [apiRef, colDef.field, onClick]);
22
24
  const unpinColumn = event => {
23
25
  apiRef.current.unpinColumn(colDef.field);
24
26
  onClick(event);
25
27
  };
28
+ const pinToLeftMenuItem = /*#__PURE__*/_jsxs(MenuItem, {
29
+ onClick: pinColumn(GridPinnedPosition.left),
30
+ children: [/*#__PURE__*/_jsx(ListItemIcon, {
31
+ children: /*#__PURE__*/_jsx(rootProps.components.ColumnMenuPinLeftIcon, {
32
+ fontSize: "small"
33
+ })
34
+ }), /*#__PURE__*/_jsx(ListItemText, {
35
+ children: apiRef.current.getLocaleText('pinToLeft')
36
+ })]
37
+ });
38
+ const pinToRightMenuItem = /*#__PURE__*/_jsxs(MenuItem, {
39
+ onClick: pinColumn(GridPinnedPosition.right),
40
+ children: [/*#__PURE__*/_jsx(ListItemIcon, {
41
+ children: /*#__PURE__*/_jsx(rootProps.components.ColumnMenuPinRightIcon, {
42
+ fontSize: "small"
43
+ })
44
+ }), /*#__PURE__*/_jsx(ListItemText, {
45
+ children: apiRef.current.getLocaleText('pinToRight')
46
+ })]
47
+ });
26
48
  if (!colDef) {
27
49
  return null;
28
50
  }
@@ -49,26 +71,13 @@ function GridColumnMenuPinningItem(props) {
49
71
  })]
50
72
  });
51
73
  }
74
+ if (theme.direction === 'rtl') {
75
+ return /*#__PURE__*/_jsxs(React.Fragment, {
76
+ children: [pinToRightMenuItem, pinToLeftMenuItem]
77
+ });
78
+ }
52
79
  return /*#__PURE__*/_jsxs(React.Fragment, {
53
- children: [/*#__PURE__*/_jsxs(MenuItem, {
54
- onClick: pinColumn(GridPinnedPosition.left),
55
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
56
- children: /*#__PURE__*/_jsx(rootProps.components.ColumnMenuPinLeftIcon, {
57
- fontSize: "small"
58
- })
59
- }), /*#__PURE__*/_jsx(ListItemText, {
60
- children: apiRef.current.getLocaleText('pinToLeft')
61
- })]
62
- }), /*#__PURE__*/_jsxs(MenuItem, {
63
- onClick: pinColumn(GridPinnedPosition.right),
64
- children: [/*#__PURE__*/_jsx(ListItemIcon, {
65
- children: /*#__PURE__*/_jsx(rootProps.components.ColumnMenuPinRightIcon, {
66
- fontSize: "small"
67
- })
68
- }), /*#__PURE__*/_jsx(ListItemText, {
69
- children: apiRef.current.getLocaleText('pinToRight')
70
- })]
71
- })]
80
+ children: [pinToLeftMenuItem, pinToRightMenuItem]
72
81
  });
73
82
  }
74
83
  process.env.NODE_ENV !== "production" ? GridColumnMenuPinningItem.propTypes = {
@@ -1,7 +1,7 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
1
2
  import * as React from 'react';
2
3
  import PropTypes from 'prop-types';
3
4
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
4
- import IconButton from '@mui/material/IconButton';
5
5
  import { getDataGridUtilityClass, useGridSelector } from '@mui/x-data-grid';
6
6
  import { useGridRootProps } from '../hooks/utils/useGridRootProps';
7
7
  import { useGridApiContext } from '../hooks/utils/useGridApiContext';
@@ -18,6 +18,7 @@ const useUtilityClasses = ownerState => {
18
18
  return composeClasses(slots, getDataGridUtilityClass, classes);
19
19
  };
20
20
  function GridDetailPanelToggleCell(props) {
21
+ var _rootProps$components;
21
22
  const {
22
23
  id,
23
24
  value: isExpanded
@@ -32,16 +33,17 @@ function GridDetailPanelToggleCell(props) {
32
33
  const contentCache = useGridSelector(apiRef, gridDetailPanelExpandedRowsContentCacheSelector);
33
34
  const hasContent = /*#__PURE__*/React.isValidElement(contentCache[id]);
34
35
  const Icon = isExpanded ? rootProps.components.DetailPanelCollapseIcon : rootProps.components.DetailPanelExpandIcon;
35
- return /*#__PURE__*/_jsx(IconButton, {
36
+ return /*#__PURE__*/_jsx(rootProps.components.BaseIconButton, _extends({
36
37
  size: "small",
37
38
  tabIndex: -1,
38
39
  disabled: !hasContent,
39
40
  className: classes.root,
40
- "aria-label": isExpanded ? apiRef.current.getLocaleText('collapseDetailPanel') : apiRef.current.getLocaleText('expandDetailPanel'),
41
+ "aria-label": isExpanded ? apiRef.current.getLocaleText('collapseDetailPanel') : apiRef.current.getLocaleText('expandDetailPanel')
42
+ }, (_rootProps$components = rootProps.componentsProps) == null ? void 0 : _rootProps$components.baseIconButton, {
41
43
  children: /*#__PURE__*/_jsx(Icon, {
42
44
  fontSize: "inherit"
43
45
  })
44
- });
46
+ }));
45
47
  }
46
48
  process.env.NODE_ENV !== "production" ? GridDetailPanelToggleCell.propTypes = {
47
49
  // ----------------------------- Warning --------------------------------
@@ -1,7 +1,7 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
1
2
  import * as React from 'react';
2
3
  import PropTypes from 'prop-types';
3
4
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
4
- import IconButton from '@mui/material/IconButton';
5
5
  import Box from '@mui/material/Box';
6
6
  import { useGridSelector, gridFilteredDescendantCountLookupSelector, getDataGridUtilityClass } from '@mui/x-data-grid';
7
7
  import { useGridRootProps } from '../hooks/utils/useGridRootProps';
@@ -19,7 +19,7 @@ const useUtilityClasses = ownerState => {
19
19
  return composeClasses(slots, getDataGridUtilityClass, classes);
20
20
  };
21
21
  function GridTreeDataGroupingCell(props) {
22
- var _filteredDescendantCo;
22
+ var _filteredDescendantCo, _rootProps$components;
23
23
  const {
24
24
  id,
25
25
  field,
@@ -50,15 +50,16 @@ function GridTreeDataGroupingCell(props) {
50
50
  },
51
51
  children: [/*#__PURE__*/_jsx("div", {
52
52
  className: classes.toggle,
53
- children: filteredDescendantCount > 0 && /*#__PURE__*/_jsx(IconButton, {
53
+ children: filteredDescendantCount > 0 && /*#__PURE__*/_jsx(rootProps.components.BaseIconButton, _extends({
54
54
  size: "small",
55
55
  onClick: handleClick,
56
56
  tabIndex: -1,
57
- "aria-label": rowNode.childrenExpanded ? apiRef.current.getLocaleText('treeDataCollapse') : apiRef.current.getLocaleText('treeDataExpand'),
57
+ "aria-label": rowNode.childrenExpanded ? apiRef.current.getLocaleText('treeDataCollapse') : apiRef.current.getLocaleText('treeDataExpand')
58
+ }, rootProps == null ? void 0 : (_rootProps$components = rootProps.componentsProps) == null ? void 0 : _rootProps$components.baseIconButton, {
58
59
  children: /*#__PURE__*/_jsx(Icon, {
59
60
  fontSize: "inherit"
60
61
  })
61
- })
62
+ }))
62
63
  }), /*#__PURE__*/_jsxs("span", {
63
64
  children: [formattedValue === undefined ? rowNode.groupingKey : formattedValue, !hideDescendantCount && filteredDescendantCount > 0 ? ` (${filteredDescendantCount})` : '']
64
65
  })]
@@ -1,5 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
+ import { useTheme } from '@mui/material/styles';
3
4
  import { useGridSelector, gridVisibleColumnDefinitionsSelector, gridColumnsTotalWidthSelector, gridColumnPositionsSelector, gridVisibleColumnFieldsSelector, gridClasses, useGridApiMethod, useGridApiEventHandler, gridColumnFieldsSelector } from '@mui/x-data-grid';
4
5
  import { useGridRegisterPipeProcessor } from '@mui/x-data-grid/internals';
5
6
  import { GridPinnedPosition } from './gridColumnPinningInterface';
@@ -31,7 +32,7 @@ const mergeStateWithPinnedColumns = pinnedColumns => state => _extends({}, state
31
32
  export const useGridColumnPinning = (apiRef, props) => {
32
33
  var _props$initialState4;
33
34
  const pinnedColumns = useGridSelector(apiRef, gridPinnedColumnsSelector);
34
-
35
+ const theme = useTheme();
35
36
  // Each visible row (not to be confused with a filter result) is composed of a central .MuiDataGrid-row element
36
37
  // and up to two additional .MuiDataGrid-row's, one for the columns pinned to the left and another
37
38
  // for those on the right side. When hovering any of these elements, the :hover styles are applied only to
@@ -80,7 +81,7 @@ export const useGridColumnPinning = (apiRef, props) => {
80
81
  return initialValue;
81
82
  }
82
83
  const visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
83
- const [leftPinnedColumns, rightPinnedColumns] = filterColumns(pinnedColumns, visibleColumnFields);
84
+ const [leftPinnedColumns, rightPinnedColumns] = filterColumns(pinnedColumns, visibleColumnFields, theme.direction === 'rtl');
84
85
  if (!params.colIndex || leftPinnedColumns.length === 0 && rightPinnedColumns.length === 0) {
85
86
  return initialValue;
86
87
  }
@@ -88,7 +89,9 @@ export const useGridColumnPinning = (apiRef, props) => {
88
89
  const columnsTotalWidth = gridColumnsTotalWidthSelector(apiRef);
89
90
  const columnPositions = gridColumnPositionsSelector(apiRef);
90
91
  const clientWidth = apiRef.current.virtualScrollerRef.current.clientWidth;
91
- const scrollLeft = apiRef.current.virtualScrollerRef.current.scrollLeft;
92
+
93
+ // When using RTL, `scrollLeft` becomes negative, so we must ensure that we only compare values.
94
+ const scrollLeft = Math.abs(apiRef.current.virtualScrollerRef.current.scrollLeft);
92
95
  const offsetWidth = visibleColumns[params.colIndex].computedWidth;
93
96
  const offsetLeft = columnPositions[params.colIndex];
94
97
  const leftPinnedColumnsWidth = columnPositions[leftPinnedColumns.length];
@@ -107,7 +110,7 @@ export const useGridColumnPinning = (apiRef, props) => {
107
110
  });
108
111
  }
109
112
  return initialValue;
110
- }, [apiRef, pinnedColumns, props.disableColumnPinning]);
113
+ }, [apiRef, pinnedColumns, props.disableColumnPinning, theme.direction]);
111
114
  const addColumnMenuItems = React.useCallback((columnMenuItems, colDef) => {
112
115
  if (props.disableColumnPinning) {
113
116
  return columnMenuItems;
@@ -121,7 +124,7 @@ export const useGridColumnPinning = (apiRef, props) => {
121
124
  targetIndex
122
125
  }) => {
123
126
  const visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
124
- const [leftPinnedColumns, rightPinnedColumns] = filterColumns(pinnedColumns, visibleColumnFields);
127
+ const [leftPinnedColumns, rightPinnedColumns] = filterColumns(pinnedColumns, visibleColumnFields, theme.direction === 'rtl');
125
128
  if (leftPinnedColumns.length === 0 && rightPinnedColumns.length === 0) {
126
129
  return initialValue;
127
130
  }
@@ -134,7 +137,7 @@ export const useGridColumnPinning = (apiRef, props) => {
134
137
  return targetIndex >= firstRightPinnedColumnIndex ? false : initialValue;
135
138
  }
136
139
  return initialValue;
137
- }, [apiRef, pinnedColumns]);
140
+ }, [apiRef, pinnedColumns, theme.direction]);
138
141
  const stateExportPreProcessing = React.useCallback((prevState, context) => {
139
142
  var _props$initialState3, _pinnedColumnsToExpor, _pinnedColumnsToExpor2;
140
143
  const pinnedColumnsToExport = gridPinnedColumnsSelector(apiRef.current.state);
@@ -1,5 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
+ import { useTheme } from '@mui/material/styles';
3
4
  import { useGridRegisterPipeProcessor } from '@mui/x-data-grid/internals';
4
5
  import { gridPinnedColumnsSelector } from './gridColumnPinningSelector';
5
6
  import { columnPinningStateInitializer } from './useGridColumnPinning';
@@ -10,6 +11,7 @@ export const useGridColumnPinningPreProcessors = (apiRef, props) => {
10
11
  pinnedColumns: pinnedColumnsProp,
11
12
  initialState
12
13
  } = props;
14
+ const theme = useTheme();
13
15
  let pinnedColumns = gridPinnedColumnsSelector(apiRef.current.state);
14
16
  if (pinnedColumns == null) {
15
17
  // Since the state is not ready yet lets use the initializer to get which
@@ -26,7 +28,7 @@ export const useGridColumnPinningPreProcessors = (apiRef, props) => {
26
28
  if (columnsState.orderedFields.length === 0 || disableColumnPinning) {
27
29
  return columnsState;
28
30
  }
29
- const [leftPinnedColumns, rightPinnedColumns] = filterColumns(pinnedColumns, columnsState.orderedFields);
31
+ const [leftPinnedColumns, rightPinnedColumns] = filterColumns(pinnedColumns, columnsState.orderedFields, theme.direction === 'rtl');
30
32
  let newOrderedFields;
31
33
  const allPinnedColumns = [...leftPinnedColumns, ...rightPinnedColumns];
32
34
  const {
@@ -99,6 +101,6 @@ export const useGridColumnPinningPreProcessors = (apiRef, props) => {
99
101
  return _extends({}, columnsState, {
100
102
  orderedFields: [...leftPinnedColumns, ...centerColumns, ...rightPinnedColumns]
101
103
  });
102
- }, [apiRef, disableColumnPinning, pinnedColumns]);
104
+ }, [apiRef, disableColumnPinning, pinnedColumns, theme.direction]);
103
105
  useGridRegisterPipeProcessor(apiRef, 'hydrateColumns', reorderPinnedColumns);
104
106
  };
@@ -1,6 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
4
+ import { useTheme } from '@mui/material/styles';
4
5
  import { useGridApiEventHandler, getDataGridUtilityClass, useGridLogger, useGridApiOptionHandler } from '@mui/x-data-grid';
5
6
  import { gridColumnReorderDragColSelector } from './columnReorderSelector';
6
7
  const CURSOR_MOVE_DIRECTION_LEFT = 'left';
@@ -41,6 +42,7 @@ export const useGridColumnReorder = (apiRef, props) => {
41
42
  classes: props.classes
42
43
  };
43
44
  const classes = useUtilityClasses(ownerState);
45
+ const theme = useTheme();
44
46
  React.useEffect(() => {
45
47
  return () => {
46
48
  clearTimeout(removeDnDStylesTimeout.current);
@@ -56,6 +58,9 @@ export const useGridColumnReorder = (apiRef, props) => {
56
58
  event.stopPropagation();
57
59
  dragColNode.current = event.currentTarget;
58
60
  dragColNode.current.classList.add(classes.columnHeaderDragging);
61
+ if (event.dataTransfer) {
62
+ event.dataTransfer.effectAllowed = 'move';
63
+ }
59
64
  apiRef.current.setState(state => _extends({}, state, {
60
65
  columnReorder: _extends({}, state.columnReorder, {
61
66
  dragCol: params.field
@@ -149,8 +154,8 @@ export const useGridColumnReorder = (apiRef, props) => {
149
154
  const visibleColumns = apiRef.current.getVisibleColumns();
150
155
  const allColumns = apiRef.current.getAllColumns();
151
156
  const cursorMoveDirectionX = getCursorMoveDirectionX(cursorPosition.current, coordinates);
152
- const hasMovedLeft = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_LEFT && targetColIndex < dragColIndex;
153
- const hasMovedRight = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_RIGHT && dragColIndex < targetColIndex;
157
+ const hasMovedLeft = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_LEFT && theme.direction === 'rtl' ? dragColIndex < targetColIndex : targetColIndex < dragColIndex;
158
+ const hasMovedRight = cursorMoveDirectionX === CURSOR_MOVE_DIRECTION_RIGHT && theme.direction === 'rtl' ? targetColIndex < dragColIndex : dragColIndex < targetColIndex;
154
159
  if (hasMovedLeft || hasMovedRight) {
155
160
  let canBeReordered;
156
161
  let indexOffsetInHiddenColumns = 0;
@@ -191,7 +196,7 @@ export const useGridColumnReorder = (apiRef, props) => {
191
196
  }
192
197
  cursorPosition.current = coordinates;
193
198
  }
194
- }, [apiRef, logger]);
199
+ }, [apiRef, logger, theme.direction]);
195
200
  const handleDragEnd = React.useCallback((params, event) => {
196
201
  const dragColField = gridColumnReorderDragColSelector(apiRef);
197
202
  if (props.disableColumnReorder || !dragColField) {
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid-pro v6.0.0-beta.2
2
+ * @mui/x-data-grid-pro v6.0.0-beta.4
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the
@@ -5,7 +5,7 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
5
  var _excluded = ["style", "className", "innerRef"];
6
6
  import * as React from 'react';
7
7
  import { unstable_composeClasses as composeClasses, unstable_useEventCallback as useEventCallback } from '@mui/utils';
8
- import { styled, alpha } from '@mui/material/styles';
8
+ import { styled, alpha, useTheme } from '@mui/material/styles';
9
9
  import { getDataGridUtilityClass, gridClasses, useGridSelector, useGridApiEventHandler, gridVisibleColumnFieldsSelector, GridColumnHeaderSeparatorSides } from '@mui/x-data-grid';
10
10
  import { GridColumnHeaders, GridColumnHeadersInner, useGridColumnHeaders } from '@mui/x-data-grid/internals';
11
11
  import { useGridRootProps } from '../hooks/utils/useGridRootProps';
@@ -77,6 +77,7 @@ export var DataGridProColumnHeaders = /*#__PURE__*/React.forwardRef(function Dat
77
77
  _React$useState2 = _slicedToArray(_React$useState, 2),
78
78
  scrollbarSize = _React$useState2[0],
79
79
  setScrollbarSize = _React$useState2[1];
80
+ var theme = useTheme();
80
81
  var handleContentSizeChange = useEventCallback(function () {
81
82
  var rootDimensions = apiRef.current.getRootDimensions();
82
83
  if (!rootDimensions) {
@@ -89,7 +90,7 @@ export var DataGridProColumnHeaders = /*#__PURE__*/React.forwardRef(function Dat
89
90
  });
90
91
  useGridApiEventHandler(apiRef, 'virtualScrollerContentSizeChange', handleContentSizeChange);
91
92
  var pinnedColumns = useGridSelector(apiRef, gridPinnedColumnsSelector);
92
- var _filterColumns = filterColumns(pinnedColumns, visibleColumnFields),
93
+ var _filterColumns = filterColumns(pinnedColumns, visibleColumnFields, theme.direction === 'rtl'),
93
94
  _filterColumns2 = _slicedToArray(_filterColumns, 2),
94
95
  leftPinnedColumns = _filterColumns2[0],
95
96
  rightPinnedColumns = _filterColumns2[1];
@@ -5,7 +5,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
5
5
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
6
6
  var _excluded = ["className", "disableVirtualization"];
7
7
  import * as React from 'react';
8
- import { styled, alpha } from '@mui/material/styles';
8
+ import { styled, alpha, useTheme } from '@mui/material/styles';
9
9
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
10
10
  import { useGridSelector, getDataGridUtilityClass, gridClasses, gridVisibleColumnFieldsSelector, gridRowsMetaSelector, useGridApiEventHandler, GridOverlays } from '@mui/x-data-grid';
11
11
  import { GridVirtualScroller, GridVirtualScrollerContent, GridVirtualScrollerRenderZone, useGridVirtualScroller, calculatePinnedRowsHeight } from '@mui/x-data-grid/internals';
@@ -17,7 +17,7 @@ import { GridDetailPanel } from './GridDetailPanel';
17
17
  import { gridPinnedRowsSelector } from '../hooks/features/rowPinning/gridRowPinningSelector';
18
18
  import { jsx as _jsx } from "react/jsx-runtime";
19
19
  import { jsxs as _jsxs } from "react/jsx-runtime";
20
- export var filterColumns = function filterColumns(pinnedColumns, columns) {
20
+ export var filterColumns = function filterColumns(pinnedColumns, columns, invert) {
21
21
  var _pinnedColumns$left, _pinnedColumns$right;
22
22
  if (!Array.isArray(pinnedColumns.left) && !Array.isArray(pinnedColumns.right)) {
23
23
  return [[], []];
@@ -40,6 +40,9 @@ export var filterColumns = function filterColumns(pinnedColumns, columns) {
40
40
  return !leftPinnedColumns.includes(field);
41
41
  });
42
42
  var rightPinnedColumns = filter(pinnedColumns.right, columnsWithoutLeftPinnedColumns);
43
+ if (invert) {
44
+ return [rightPinnedColumns, leftPinnedColumns];
45
+ }
43
46
  return [leftPinnedColumns, rightPinnedColumns];
44
47
  };
45
48
  var useUtilityClasses = function useUtilityClasses(ownerState) {
@@ -156,6 +159,7 @@ var DataGridProVirtualScroller = /*#__PURE__*/React.forwardRef(function DataGrid
156
159
  var rightColumns = React.useRef(null);
157
160
  var topPinnedRowsRenderZoneRef = React.useRef(null);
158
161
  var bottomPinnedRowsRenderZoneRef = React.useRef(null);
162
+ var theme = useTheme();
159
163
  var handleRenderZonePositioning = React.useCallback(function (_ref7) {
160
164
  var top = _ref7.top,
161
165
  left = _ref7.left;
@@ -184,7 +188,7 @@ var DataGridProVirtualScroller = /*#__PURE__*/React.forwardRef(function DataGrid
184
188
  };
185
189
  };
186
190
  var pinnedColumns = useGridSelector(apiRef, gridPinnedColumnsSelector);
187
- var _filterColumns = filterColumns(pinnedColumns, visibleColumnFields),
191
+ var _filterColumns = filterColumns(pinnedColumns, visibleColumnFields, theme.direction === 'rtl'),
188
192
  _filterColumns2 = _slicedToArray(_filterColumns, 2),
189
193
  leftPinnedColumns = _filterColumns2[0],
190
194
  rightPinnedColumns = _filterColumns2[1];