@mui/x-data-grid 6.2.1 → 6.3.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.
- package/CHANGELOG.md +70 -1
- package/components/base/GridBody.js +8 -1
- package/components/cell/GridActionsCell.d.ts +2 -3
- package/components/cell/GridActionsCell.js +9 -1
- package/components/containers/GridRootStyles.js +3 -1
- package/components/panel/GridPanel.d.ts +2 -2
- package/constants/gridClasses.js +1 -1
- package/hooks/features/columnGrouping/useGridColumnGrouping.js +22 -15
- package/index.js +1 -1
- package/joy/joySlots.js +114 -6
- package/legacy/components/base/GridBody.js +8 -1
- package/legacy/components/cell/GridActionsCell.js +11 -2
- package/legacy/components/containers/GridRootStyles.js +3 -1
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +22 -15
- package/legacy/index.js +1 -1
- package/legacy/joy/joySlots.js +113 -6
- package/legacy/locales/frFR.js +2 -2
- package/legacy/locales/trTR.js +2 -2
- package/legacy/locales/zhCN.js +2 -2
- package/locales/frFR.js +2 -2
- package/locales/trTR.js +2 -2
- package/locales/zhCN.js +2 -2
- package/material/index.d.ts +2 -2
- package/modern/components/base/GridBody.js +8 -1
- package/modern/components/cell/GridActionsCell.js +9 -1
- package/modern/components/containers/GridRootStyles.js +3 -1
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +21 -14
- package/modern/index.js +1 -1
- package/modern/joy/joySlots.js +112 -6
- package/modern/locales/frFR.js +2 -2
- package/modern/locales/trTR.js +2 -2
- package/modern/locales/zhCN.js +2 -2
- package/node/components/base/GridBody.js +8 -1
- package/node/components/cell/GridActionsCell.js +9 -1
- package/node/components/containers/GridRootStyles.js +3 -1
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +20 -11
- package/node/index.js +1 -1
- package/node/joy/joySlots.js +112 -6
- package/node/locales/frFR.js +2 -2
- package/node/locales/trTR.js +2 -2
- package/node/locales/zhCN.js +2 -2
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,75 @@
|
|
|
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.3.0
|
|
7
|
+
|
|
8
|
+
_Apr 28, 2023_
|
|
9
|
+
|
|
10
|
+
We'd like to offer a big thanks to the 15 contributors who made this release possible. Here are some highlights ✨:
|
|
11
|
+
|
|
12
|
+
- 🚀 New [time-picking UI](https://mui.com/x/react-date-pickers/digital-clock/) designed for desktops (#7958) @LukasTy
|
|
13
|
+
|
|
14
|
+
<img src="https://user-images.githubusercontent.com/4941090/235072007-de39a397-e4a4-4c98-8e10-5ee4ad440108.gif" width="494" />
|
|
15
|
+
|
|
16
|
+
- ✨ Picker fields [now always include a leading zero](https://mui.com/x/react-date-pickers/adapters-locale/#respect-leading-zeros-in-fields) on digit sections (#8527) @flaviendelangle
|
|
17
|
+
- 🌍 Improve Chinese (zh-CN), French (fr-FR), and Turkish (tr-TR) locales
|
|
18
|
+
- 🐞 Bugfixes
|
|
19
|
+
- 📚 Documentation improvements
|
|
20
|
+
|
|
21
|
+
### `@mui/x-data-grid@v6.3.0` / `@mui/x-data-grid-pro@v6.3.0` / `@mui/x-data-grid-premium@v6.3.0`
|
|
22
|
+
|
|
23
|
+
#### Changes
|
|
24
|
+
|
|
25
|
+
- [DataGrid] Add overlay classes to `gridClasses` (#8686) @lindapaiste
|
|
26
|
+
- [DataGrid] Avoid passing `api` prop to div (#8679) @someden
|
|
27
|
+
- [DataGrid] Fix 'ResizeObserver loop limit exceeded' error (#8744) @m4theushw
|
|
28
|
+
- [DataGrid] Add Joy UI slots (button and switch) (#8699) @siriwatknp
|
|
29
|
+
- [DataGrid] Fix aggregation label alignment (#8694) @joserodolfofreitas
|
|
30
|
+
- [DataGridPremium] Fix infinite loop when updating grouped rows (#8693) @cherniavskii
|
|
31
|
+
- [DataGridPro] Fix error after updating `columns` and `columnGroupingModel` at once (#8730) @cherniavskii
|
|
32
|
+
- [l10n] Improve Chinese (zh-CN) locale (#8753) @SakumyZ
|
|
33
|
+
- [l10n] Improve French (fr-FR) locale (#8704) @Jul13nT
|
|
34
|
+
- [l10n] Improve Turkish (tr-TR) locale (#8783) @cccaaannn
|
|
35
|
+
|
|
36
|
+
### `@mui/x-date-pickers@v6.3.0` / `@mui/x-date-pickers-pro@v6.3.0`
|
|
37
|
+
|
|
38
|
+
#### Changes
|
|
39
|
+
|
|
40
|
+
- [fields] Always add leading zeroes on digit sections (#8527) @flaviendelangle
|
|
41
|
+
- [fields] Pass the `readOnly` prop to `InputProps` instead of `inputProps` (#8659) @flaviendelangle
|
|
42
|
+
- [pickers] Add missing export for `caES` locale (#8782) @flaviendelangle
|
|
43
|
+
- [pickers] Add new `DigitalClock` desktop time picking experience (#7958) @LukasTy
|
|
44
|
+
- [pickers] Do not use `instanceOf DateTime` in `AdapterLuxon` (#8734) @flaviendelangle
|
|
45
|
+
- [pickers] Fix date calendar `selected` & `disabled` day style (#8773) @LukasTy
|
|
46
|
+
- [pickers] Migrate `AdapterDateFns` to our repository (#8736) @flaviendelangle
|
|
47
|
+
- [pickers] Migrate `AdapterLuxon` to our repository (#8600) @flaviendelangle
|
|
48
|
+
- [pickers] Migrate `AdapterMomentHijri` to our repository (#8776) @flaviendelangle
|
|
49
|
+
- [pickers] Migrate `AdapterMomentJalaali` and `AdapterDateFnsJalali` to our repository (#8741) @flaviendelangle
|
|
50
|
+
- [pickers] Migrate `AdapterMoment` to our repository (#8700) @flaviendelangle
|
|
51
|
+
- [pickers] Refactor the validation files (#8622) @flaviendelangle
|
|
52
|
+
- [pickers] Use `en dash` instead of `em dash` in multi input range fields (#8738) @flaviendelangle
|
|
53
|
+
- [l10n] Improve Chinese (zh-CN) locale (#8753) @SakumyZ
|
|
54
|
+
- [l10n] Improve Turkish (tr-TR) locale (#8783) @cccaaannn
|
|
55
|
+
|
|
56
|
+
### Docs
|
|
57
|
+
|
|
58
|
+
- [docs] Add icons for charts menu (#8752) @alexfauquette
|
|
59
|
+
- [docs] Document the supported formats (#8746) @flaviendelangle
|
|
60
|
+
- [docs] Fix Hijri demo (#8698) @alexfauquette
|
|
61
|
+
- [docs] Fix `x-codemod` package version in changelog (#8690) @MBilalShafi
|
|
62
|
+
- [docs] Fix columns special properties code example (#8414) @mikkelhl
|
|
63
|
+
- [docs] Fix error in `minDateTime` `validation` page section (#8777) @LukasTy
|
|
64
|
+
- [docs] Update custom field pickers using theme scoping (#8609) @siriwatknp
|
|
65
|
+
- [docs] Use community version of data grid for column grouping demo (#7346) @ASchwad
|
|
66
|
+
- [docs] Use new `slots` / `slotProps` props in the pickers migration guide (#8341) @flaviendelangle
|
|
67
|
+
|
|
68
|
+
### Core
|
|
69
|
+
|
|
70
|
+
- [core] Cleanup picker tests (#8652) @flaviendelangle
|
|
71
|
+
- [core] Use `adapter.lib` instead of `adapterName` in `describeAdapters` (#8779) @flaviendelangle
|
|
72
|
+
- [charts] Adapt line and scatter plot to the "band" scale type (#8701) @alexfauquette
|
|
73
|
+
- [charts] Link the Gantt Charts issue in the docs (#8739) @flaviendelangle
|
|
74
|
+
|
|
6
75
|
## 6.2.1
|
|
7
76
|
|
|
8
77
|
_Apr 20, 2023_
|
|
@@ -31,7 +100,7 @@ We'd like to offer a big thanks to the 9 contributors who made this release poss
|
|
|
31
100
|
- [pickers] Do not include the time in date components when going to today (#8657) @flaviendelangle
|
|
32
101
|
- [pickers] Sync internal state with controlled value (#8674) @alexfauquette
|
|
33
102
|
|
|
34
|
-
### `@mui/x-codemod@v6.
|
|
103
|
+
### `@mui/x-codemod@v6.2.1`
|
|
35
104
|
|
|
36
105
|
#### Changes
|
|
37
106
|
|
|
@@ -45,13 +45,20 @@ function GridBody(props) {
|
|
|
45
45
|
if (typeof ResizeObserver === 'undefined') {
|
|
46
46
|
return () => {};
|
|
47
47
|
}
|
|
48
|
+
let animationFrame;
|
|
48
49
|
const observer = new ResizeObserver(() => {
|
|
49
|
-
|
|
50
|
+
// See https://github.com/mui/mui-x/issues/8733
|
|
51
|
+
animationFrame = window.requestAnimationFrame(() => {
|
|
52
|
+
apiRef.current.computeSizeAndPublishResizeEvent();
|
|
53
|
+
});
|
|
50
54
|
});
|
|
51
55
|
if (elementToObserve) {
|
|
52
56
|
observer.observe(elementToObserve);
|
|
53
57
|
}
|
|
54
58
|
return () => {
|
|
59
|
+
if (animationFrame) {
|
|
60
|
+
window.cancelAnimationFrame(animationFrame);
|
|
61
|
+
}
|
|
55
62
|
if (elementToObserve) {
|
|
56
63
|
observer.unobserve(elementToObserve);
|
|
57
64
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { GridRenderCellParams } from '../../models/params/gridCellParams';
|
|
3
3
|
import { GridMenuProps } from '../menu/GridMenu';
|
|
4
|
-
interface GridActionsCellProps extends Omit<GridRenderCellParams, '
|
|
5
|
-
|
|
6
|
-
formattedValue?: GridRenderCellParams['formattedValue'];
|
|
4
|
+
interface GridActionsCellProps extends Omit<GridRenderCellParams, 'api'> {
|
|
5
|
+
api?: GridRenderCellParams['api'];
|
|
7
6
|
position?: GridMenuProps['position'];
|
|
8
7
|
}
|
|
9
8
|
declare function GridActionsCell(props: GridActionsCellProps): JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["colDef", "id", "hasFocus", "isEditable", "field", "value", "formattedValue", "row", "rowNode", "cellMode", "tabIndex", "position", "focusElementRef"];
|
|
3
|
+
const _excluded = ["api", "colDef", "id", "hasFocus", "isEditable", "field", "value", "formattedValue", "row", "rowNode", "cellMode", "tabIndex", "position", "focusElementRef"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import MenuList from '@mui/material/MenuList';
|
|
@@ -189,6 +189,7 @@ process.env.NODE_ENV !== "production" ? GridActionsCell.propTypes = {
|
|
|
189
189
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
190
190
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
191
191
|
// ----------------------------------------------------------------------
|
|
192
|
+
api: PropTypes.object,
|
|
192
193
|
/**
|
|
193
194
|
* The mode of the cell.
|
|
194
195
|
*/
|
|
@@ -211,6 +212,9 @@ process.env.NODE_ENV !== "production" ? GridActionsCell.propTypes = {
|
|
|
211
212
|
focus: PropTypes.func.isRequired
|
|
212
213
|
})
|
|
213
214
|
})]),
|
|
215
|
+
/**
|
|
216
|
+
* The cell value formatted with the column valueFormatter.
|
|
217
|
+
*/
|
|
214
218
|
formattedValue: PropTypes.any,
|
|
215
219
|
/**
|
|
216
220
|
* If true, the cell is the active element.
|
|
@@ -237,6 +241,10 @@ process.env.NODE_ENV !== "production" ? GridActionsCell.propTypes = {
|
|
|
237
241
|
* the tabIndex value.
|
|
238
242
|
*/
|
|
239
243
|
tabIndex: PropTypes.oneOf([-1, 0]).isRequired,
|
|
244
|
+
/**
|
|
245
|
+
* The cell value.
|
|
246
|
+
* If the column has `valueGetter`, use `params.row` to directly access the fields.
|
|
247
|
+
*/
|
|
240
248
|
value: PropTypes.any
|
|
241
249
|
} : void 0;
|
|
242
250
|
export { GridActionsCell };
|
|
@@ -204,7 +204,9 @@ export const GridRootStyles = styled('div', {
|
|
|
204
204
|
minWidth: 0,
|
|
205
205
|
flex: 1,
|
|
206
206
|
whiteSpace: 'nowrap',
|
|
207
|
-
overflow: 'hidden'
|
|
207
|
+
overflow: 'hidden',
|
|
208
|
+
// to anchor the aggregation label
|
|
209
|
+
position: 'relative'
|
|
208
210
|
},
|
|
209
211
|
[`& .${gridClasses.columnHeaderTitleContainerContent}`]: {
|
|
210
212
|
overflow: 'hidden',
|
|
@@ -16,12 +16,12 @@ export interface GridPanelProps extends Partial<React.ComponentProps<typeof Grid
|
|
|
16
16
|
open: boolean;
|
|
17
17
|
}
|
|
18
18
|
export declare const gridPanelClasses: Record<keyof GridPanelClasses, string>;
|
|
19
|
-
declare const GridPanelRoot: import("@emotion/styled").StyledComponent<Pick<Omit<import("@mui/base").
|
|
19
|
+
declare const GridPanelRoot: import("@emotion/styled").StyledComponent<Pick<Omit<import("@mui/base").PopperProps<"div", {}>, "direction"> & {
|
|
20
20
|
components?: {
|
|
21
21
|
Root?: React.ElementType<any> | undefined;
|
|
22
22
|
} | undefined;
|
|
23
23
|
componentsProps?: {
|
|
24
|
-
root?: import("@mui/base").SlotComponentProps<"div", import("@mui/base").
|
|
24
|
+
root?: import("@mui/base").SlotComponentProps<"div", import("@mui/base").PopperRootSlotPropsOverrides, import("@mui/base").PopperOwnProps> | undefined;
|
|
25
25
|
} | undefined;
|
|
26
26
|
sx?: import("@mui/material/styles").SxProps<import("@mui/material/styles").Theme> | undefined;
|
|
27
27
|
} & React.RefAttributes<HTMLDivElement>, "hidden" | "color" | "content" | "style" | "open" | "translate" | "container" | "transition" | "slot" | "title" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoFocus" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "nonce" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "component" | "sx" | "components" | "placement" | "disablePortal" | "modifiers" | "anchorEl" | "keepMounted" | "popperOptions" | "popperRef" | "slotProps" | "slots" | "componentsProps" | keyof React.RefAttributes<HTMLDivElement>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & {
|
package/constants/gridClasses.js
CHANGED
|
@@ -2,4 +2,4 @@ import { unstable_generateUtilityClasses as generateUtilityClasses, unstable_gen
|
|
|
2
2
|
export function getDataGridUtilityClass(slot) {
|
|
3
3
|
return generateUtilityClass('MuiDataGrid', slot);
|
|
4
4
|
}
|
|
5
|
-
export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
5
|
+
export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
@@ -7,10 +7,7 @@ import { gridColumnGroupsLookupSelector, gridColumnGroupsUnwrappedModelSelector
|
|
|
7
7
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
8
8
|
import { getColumnGroupsHeaderStructure, unwrapGroupingColumnModel } from './gridColumnGroupsUtils';
|
|
9
9
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
10
|
-
import { gridColumnFieldsSelector,
|
|
11
|
-
// GridColumnsState,
|
|
12
|
-
gridVisibleColumnFieldsSelector } from '../columns';
|
|
13
|
-
import { useGridSelector } from '../../utils/useGridSelector';
|
|
10
|
+
import { gridColumnFieldsSelector, gridVisibleColumnFieldsSelector } from '../columns';
|
|
14
11
|
const createGroupLookup = columnGroupingModel => {
|
|
15
12
|
let groupLookup = {};
|
|
16
13
|
columnGroupingModel.forEach(node => {
|
|
@@ -102,19 +99,15 @@ export const useGridColumnGrouping = (apiRef, props) => {
|
|
|
102
99
|
});
|
|
103
100
|
});
|
|
104
101
|
}, [apiRef, props.columnGroupingModel]);
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
const visibleColumnFields = useGridSelector(apiRef, gridVisibleColumnFieldsSelector);
|
|
108
|
-
/**
|
|
109
|
-
* EFFECTS
|
|
110
|
-
*/
|
|
111
|
-
React.useEffect(() => {
|
|
112
|
-
var _props$experimentalFe2, _props$columnGrouping4, _props$columnGrouping5;
|
|
102
|
+
const updateColumnGroupingState = React.useCallback(columnGroupingModel => {
|
|
103
|
+
var _props$experimentalFe2;
|
|
113
104
|
if (!((_props$experimentalFe2 = props.experimentalFeatures) != null && _props$experimentalFe2.columnGrouping)) {
|
|
114
105
|
return;
|
|
115
106
|
}
|
|
116
|
-
const
|
|
117
|
-
const
|
|
107
|
+
const columnFields = gridColumnFieldsSelector(apiRef);
|
|
108
|
+
const visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
|
|
109
|
+
const groupLookup = createGroupLookup(columnGroupingModel != null ? columnGroupingModel : []);
|
|
110
|
+
const unwrappedGroupingModel = unwrapGroupingColumnModel(columnGroupingModel != null ? columnGroupingModel : []);
|
|
118
111
|
const columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel);
|
|
119
112
|
const maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max(...visibleColumnFields.map(field => {
|
|
120
113
|
var _unwrappedGroupingMod4, _unwrappedGroupingMod5;
|
|
@@ -130,5 +123,19 @@ export const useGridColumnGrouping = (apiRef, props) => {
|
|
|
130
123
|
}
|
|
131
124
|
});
|
|
132
125
|
});
|
|
133
|
-
}, [apiRef,
|
|
126
|
+
}, [apiRef, (_props$experimentalFe3 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe3.columnGrouping]);
|
|
127
|
+
useGridApiEventHandler(apiRef, 'columnIndexChange', handleColumnIndexChange);
|
|
128
|
+
useGridApiEventHandler(apiRef, 'columnsChange', () => {
|
|
129
|
+
updateColumnGroupingState(props.columnGroupingModel);
|
|
130
|
+
});
|
|
131
|
+
useGridApiEventHandler(apiRef, 'columnVisibilityModelChange', () => {
|
|
132
|
+
updateColumnGroupingState(props.columnGroupingModel);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* EFFECTS
|
|
137
|
+
*/
|
|
138
|
+
React.useEffect(() => {
|
|
139
|
+
updateColumnGroupingState(props.columnGroupingModel);
|
|
140
|
+
}, [updateColumnGroupingState, props.columnGroupingModel]);
|
|
134
141
|
};
|
package/index.js
CHANGED
package/joy/joySlots.js
CHANGED
|
@@ -1,13 +1,47 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["touchRippleRef", "inputProps", "onChange", "color", "size", "checked", "sx", "value", "inputRef"]
|
|
3
|
+
const _excluded = ["touchRippleRef", "inputProps", "onChange", "color", "size", "checked", "sx", "value", "inputRef"],
|
|
4
|
+
_excluded2 = ["startIcon", "color", "endIcon", "size", "sx", "variant"],
|
|
5
|
+
_excluded3 = ["color", "size", "sx"],
|
|
6
|
+
_excluded4 = ["name", "checkedIcon", "color", "disableRipple", "disableFocusRipple", "disableTouchRipple", "edge", "icon", "inputProps", "inputRef", "size", "sx", "onChange", "onClick"];
|
|
4
7
|
import * as React from 'react';
|
|
5
8
|
import JoyCheckbox from '@mui/joy/Checkbox';
|
|
6
9
|
import JoyInput from '@mui/joy/Input';
|
|
7
10
|
import JoyFormControl from '@mui/joy/FormControl';
|
|
8
11
|
import JoyFormLabel from '@mui/joy/FormLabel';
|
|
12
|
+
import JoyButton from '@mui/joy/Button';
|
|
13
|
+
import JoyIconButton from '@mui/joy/IconButton';
|
|
14
|
+
import JoySwitch from '@mui/joy/Switch';
|
|
9
15
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
16
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
+
function convertColor(color) {
|
|
18
|
+
if (color === 'secondary') {
|
|
19
|
+
return 'primary';
|
|
20
|
+
}
|
|
21
|
+
if (color === 'error') {
|
|
22
|
+
return 'danger';
|
|
23
|
+
}
|
|
24
|
+
if (color === 'default' || color === 'inherit') {
|
|
25
|
+
return 'neutral';
|
|
26
|
+
}
|
|
27
|
+
return color;
|
|
28
|
+
}
|
|
29
|
+
function convertSize(size) {
|
|
30
|
+
return size ? {
|
|
31
|
+
small: 'sm',
|
|
32
|
+
medium: 'md',
|
|
33
|
+
large: 'lg'
|
|
34
|
+
}[size] : size;
|
|
35
|
+
}
|
|
36
|
+
function convertVariant(variant) {
|
|
37
|
+
return variant ? {
|
|
38
|
+
outlined: 'outlined',
|
|
39
|
+
contained: 'solid',
|
|
40
|
+
text: 'plain',
|
|
41
|
+
standard: 'plain',
|
|
42
|
+
filled: 'soft'
|
|
43
|
+
}[variant] : variant;
|
|
44
|
+
}
|
|
11
45
|
const Checkbox = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
12
46
|
let {
|
|
13
47
|
inputProps,
|
|
@@ -56,14 +90,88 @@ const TextField = /*#__PURE__*/React.forwardRef(({
|
|
|
56
90
|
})]
|
|
57
91
|
});
|
|
58
92
|
});
|
|
93
|
+
const Button = /*#__PURE__*/React.forwardRef(function Button(_ref2, ref) {
|
|
94
|
+
var _convertVariant;
|
|
95
|
+
let {
|
|
96
|
+
startIcon,
|
|
97
|
+
color,
|
|
98
|
+
endIcon,
|
|
99
|
+
size,
|
|
100
|
+
sx,
|
|
101
|
+
variant
|
|
102
|
+
} = _ref2,
|
|
103
|
+
props = _objectWithoutPropertiesLoose(_ref2, _excluded2);
|
|
104
|
+
return /*#__PURE__*/_jsx(JoyButton, _extends({}, props, {
|
|
105
|
+
size: convertSize(size),
|
|
106
|
+
color: convertColor(color),
|
|
107
|
+
variant: (_convertVariant = convertVariant(variant)) != null ? _convertVariant : 'plain',
|
|
108
|
+
ref: ref,
|
|
109
|
+
startDecorator: startIcon,
|
|
110
|
+
endDecorator: endIcon,
|
|
111
|
+
sx: sx
|
|
112
|
+
}));
|
|
113
|
+
});
|
|
114
|
+
const IconButton = /*#__PURE__*/React.forwardRef(function IconButton(_ref3, ref) {
|
|
115
|
+
var _convertColor;
|
|
116
|
+
let {
|
|
117
|
+
color,
|
|
118
|
+
size,
|
|
119
|
+
sx
|
|
120
|
+
} = _ref3,
|
|
121
|
+
props = _objectWithoutPropertiesLoose(_ref3, _excluded3);
|
|
122
|
+
return /*#__PURE__*/_jsx(JoyIconButton, _extends({}, props, {
|
|
123
|
+
size: convertSize(size),
|
|
124
|
+
color: (_convertColor = convertColor(color)) != null ? _convertColor : 'neutral',
|
|
125
|
+
variant: "plain",
|
|
126
|
+
ref: ref,
|
|
127
|
+
sx: sx
|
|
128
|
+
}));
|
|
129
|
+
});
|
|
130
|
+
const Switch = /*#__PURE__*/React.forwardRef(function Switch(_ref4, ref) {
|
|
131
|
+
let {
|
|
132
|
+
name,
|
|
133
|
+
color: colorProp,
|
|
134
|
+
edge,
|
|
135
|
+
icon,
|
|
136
|
+
inputProps,
|
|
137
|
+
inputRef,
|
|
138
|
+
size,
|
|
139
|
+
sx,
|
|
140
|
+
onChange,
|
|
141
|
+
onClick
|
|
142
|
+
} = _ref4,
|
|
143
|
+
props = _objectWithoutPropertiesLoose(_ref4, _excluded4);
|
|
144
|
+
return /*#__PURE__*/_jsx(JoySwitch, _extends({}, props, {
|
|
145
|
+
onChange: onChange,
|
|
146
|
+
size: convertSize(size),
|
|
147
|
+
color: convertColor(colorProp),
|
|
148
|
+
ref: ref,
|
|
149
|
+
slotProps: {
|
|
150
|
+
input: _extends({}, inputProps, {
|
|
151
|
+
name,
|
|
152
|
+
onClick: onClick,
|
|
153
|
+
ref: inputRef
|
|
154
|
+
}),
|
|
155
|
+
thumb: {
|
|
156
|
+
children: icon
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
sx: [_extends({}, edge === 'start' && {
|
|
160
|
+
ml: '-8px'
|
|
161
|
+
}, edge === 'end' && {
|
|
162
|
+
mr: '-8px'
|
|
163
|
+
}), ...(Array.isArray(sx) ? sx : [sx])]
|
|
164
|
+
}));
|
|
165
|
+
});
|
|
59
166
|
const joySlots = {
|
|
60
167
|
baseCheckbox: Checkbox,
|
|
61
|
-
baseTextField: TextField
|
|
168
|
+
baseTextField: TextField,
|
|
169
|
+
baseButton: Button,
|
|
170
|
+
baseIconButton: IconButton,
|
|
171
|
+
baseSwitch: Switch
|
|
62
172
|
// BaseFormControl: MUIFormControl,
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
// BaseButton: MUIButton,
|
|
66
|
-
// BaseIconButton: MUIIconButton,
|
|
173
|
+
// baseSelect: Select,
|
|
174
|
+
// baseSelectOption: Option,
|
|
67
175
|
// BaseTooltip: MUITooltip,
|
|
68
176
|
// BasePopper: MUIPopper,
|
|
69
177
|
};
|
|
@@ -47,13 +47,20 @@ function GridBody(props) {
|
|
|
47
47
|
if (typeof ResizeObserver === 'undefined') {
|
|
48
48
|
return function () {};
|
|
49
49
|
}
|
|
50
|
+
var animationFrame;
|
|
50
51
|
var observer = new ResizeObserver(function () {
|
|
51
|
-
|
|
52
|
+
// See https://github.com/mui/mui-x/issues/8733
|
|
53
|
+
animationFrame = window.requestAnimationFrame(function () {
|
|
54
|
+
apiRef.current.computeSizeAndPublishResizeEvent();
|
|
55
|
+
});
|
|
52
56
|
});
|
|
53
57
|
if (elementToObserve) {
|
|
54
58
|
observer.observe(elementToObserve);
|
|
55
59
|
}
|
|
56
60
|
return function () {
|
|
61
|
+
if (animationFrame) {
|
|
62
|
+
window.cancelAnimationFrame(animationFrame);
|
|
63
|
+
}
|
|
57
64
|
if (elementToObserve) {
|
|
58
65
|
observer.unobserve(elementToObserve);
|
|
59
66
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
3
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
4
|
-
var _excluded = ["colDef", "id", "hasFocus", "isEditable", "field", "value", "formattedValue", "row", "rowNode", "cellMode", "tabIndex", "position", "focusElementRef"];
|
|
4
|
+
var _excluded = ["api", "colDef", "id", "hasFocus", "isEditable", "field", "value", "formattedValue", "row", "rowNode", "cellMode", "tabIndex", "position", "focusElementRef"];
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
7
|
import MenuList from '@mui/material/MenuList';
|
|
@@ -18,7 +18,8 @@ var hasActions = function hasActions(colDef) {
|
|
|
18
18
|
};
|
|
19
19
|
function GridActionsCell(props) {
|
|
20
20
|
var _rootProps$slotProps;
|
|
21
|
-
var
|
|
21
|
+
var api = props.api,
|
|
22
|
+
colDef = props.colDef,
|
|
22
23
|
id = props.id,
|
|
23
24
|
hasFocus = props.hasFocus,
|
|
24
25
|
isEditable = props.isEditable,
|
|
@@ -221,6 +222,7 @@ process.env.NODE_ENV !== "production" ? GridActionsCell.propTypes = {
|
|
|
221
222
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
222
223
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
223
224
|
// ----------------------------------------------------------------------
|
|
225
|
+
api: PropTypes.object,
|
|
224
226
|
/**
|
|
225
227
|
* The mode of the cell.
|
|
226
228
|
*/
|
|
@@ -243,6 +245,9 @@ process.env.NODE_ENV !== "production" ? GridActionsCell.propTypes = {
|
|
|
243
245
|
focus: PropTypes.func.isRequired
|
|
244
246
|
})
|
|
245
247
|
})]),
|
|
248
|
+
/**
|
|
249
|
+
* The cell value formatted with the column valueFormatter.
|
|
250
|
+
*/
|
|
246
251
|
formattedValue: PropTypes.any,
|
|
247
252
|
/**
|
|
248
253
|
* If true, the cell is the active element.
|
|
@@ -269,6 +274,10 @@ process.env.NODE_ENV !== "production" ? GridActionsCell.propTypes = {
|
|
|
269
274
|
* the tabIndex value.
|
|
270
275
|
*/
|
|
271
276
|
tabIndex: PropTypes.oneOf([-1, 0]).isRequired,
|
|
277
|
+
/**
|
|
278
|
+
* The cell value.
|
|
279
|
+
* If the column has `valueGetter`, use `params.row` to directly access the fields.
|
|
280
|
+
*/
|
|
272
281
|
value: PropTypes.any
|
|
273
282
|
} : void 0;
|
|
274
283
|
export { GridActionsCell };
|
|
@@ -82,7 +82,9 @@ export var GridRootStyles = styled('div', {
|
|
|
82
82
|
minWidth: 0,
|
|
83
83
|
flex: 1,
|
|
84
84
|
whiteSpace: 'nowrap',
|
|
85
|
-
overflow: 'hidden'
|
|
85
|
+
overflow: 'hidden',
|
|
86
|
+
// to anchor the aggregation label
|
|
87
|
+
position: 'relative'
|
|
86
88
|
}), _defineProperty(_extends2, "& .".concat(gridClasses.columnHeaderTitleContainerContent), {
|
|
87
89
|
overflow: 'hidden',
|
|
88
90
|
display: 'flex',
|
|
@@ -2,4 +2,4 @@ import { unstable_generateUtilityClasses as generateUtilityClasses, unstable_gen
|
|
|
2
2
|
export function getDataGridUtilityClass(slot) {
|
|
3
3
|
return generateUtilityClass('MuiDataGrid', slot);
|
|
4
4
|
}
|
|
5
|
-
export var gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
5
|
+
export var gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
@@ -9,10 +9,7 @@ import { gridColumnGroupsLookupSelector, gridColumnGroupsUnwrappedModelSelector
|
|
|
9
9
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
10
10
|
import { getColumnGroupsHeaderStructure, unwrapGroupingColumnModel } from './gridColumnGroupsUtils';
|
|
11
11
|
import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
12
|
-
import { gridColumnFieldsSelector,
|
|
13
|
-
// GridColumnsState,
|
|
14
|
-
gridVisibleColumnFieldsSelector } from '../columns';
|
|
15
|
-
import { useGridSelector } from '../../utils/useGridSelector';
|
|
12
|
+
import { gridColumnFieldsSelector, gridVisibleColumnFieldsSelector } from '../columns';
|
|
16
13
|
var createGroupLookup = function createGroupLookup(columnGroupingModel) {
|
|
17
14
|
var groupLookup = {};
|
|
18
15
|
columnGroupingModel.forEach(function (node) {
|
|
@@ -100,19 +97,15 @@ export var useGridColumnGrouping = function useGridColumnGrouping(apiRef, props)
|
|
|
100
97
|
});
|
|
101
98
|
});
|
|
102
99
|
}, [apiRef, props.columnGroupingModel]);
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
var visibleColumnFields = useGridSelector(apiRef, gridVisibleColumnFieldsSelector);
|
|
106
|
-
/**
|
|
107
|
-
* EFFECTS
|
|
108
|
-
*/
|
|
109
|
-
React.useEffect(function () {
|
|
110
|
-
var _props$experimentalFe2, _props$columnGrouping4, _props$columnGrouping5;
|
|
100
|
+
var updateColumnGroupingState = React.useCallback(function (columnGroupingModel) {
|
|
101
|
+
var _props$experimentalFe2;
|
|
111
102
|
if (!((_props$experimentalFe2 = props.experimentalFeatures) != null && _props$experimentalFe2.columnGrouping)) {
|
|
112
103
|
return;
|
|
113
104
|
}
|
|
114
|
-
var
|
|
115
|
-
var
|
|
105
|
+
var columnFields = gridColumnFieldsSelector(apiRef);
|
|
106
|
+
var visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
|
|
107
|
+
var groupLookup = createGroupLookup(columnGroupingModel != null ? columnGroupingModel : []);
|
|
108
|
+
var unwrappedGroupingModel = unwrapGroupingColumnModel(columnGroupingModel != null ? columnGroupingModel : []);
|
|
116
109
|
var columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel);
|
|
117
110
|
var maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max.apply(Math, _toConsumableArray(visibleColumnFields.map(function (field) {
|
|
118
111
|
var _unwrappedGroupingMod4, _unwrappedGroupingMod5;
|
|
@@ -128,5 +121,19 @@ export var useGridColumnGrouping = function useGridColumnGrouping(apiRef, props)
|
|
|
128
121
|
}
|
|
129
122
|
});
|
|
130
123
|
});
|
|
131
|
-
}, [apiRef,
|
|
124
|
+
}, [apiRef, (_props$experimentalFe3 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe3.columnGrouping]);
|
|
125
|
+
useGridApiEventHandler(apiRef, 'columnIndexChange', handleColumnIndexChange);
|
|
126
|
+
useGridApiEventHandler(apiRef, 'columnsChange', function () {
|
|
127
|
+
updateColumnGroupingState(props.columnGroupingModel);
|
|
128
|
+
});
|
|
129
|
+
useGridApiEventHandler(apiRef, 'columnVisibilityModelChange', function () {
|
|
130
|
+
updateColumnGroupingState(props.columnGroupingModel);
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* EFFECTS
|
|
135
|
+
*/
|
|
136
|
+
React.useEffect(function () {
|
|
137
|
+
updateColumnGroupingState(props.columnGroupingModel);
|
|
138
|
+
}, [updateColumnGroupingState, props.columnGroupingModel]);
|
|
132
139
|
};
|
package/legacy/index.js
CHANGED