@mui/x-data-grid-premium
Version:
The Premium plan edition of the MUI X Data Grid Components.
43 lines • 2.02 kB
JavaScript
import * as React from 'react';
import { useGridSelector, gridColumnLookupSelector } from '@mui/x-data-grid-pro';
import { useGridApiContext } from "../../../hooks/utils/useGridApiContext.js";
import { gridRowGroupingSanitizedModelSelector } from "../../../hooks/features/rowGrouping/gridRowGroupingSelector.js";
import { getRowGroupingCriteriaFromGroupingField, GRID_ROW_GROUPING_SINGLE_GROUPING_FIELD, isGroupingColumn } from "../../../hooks/features/rowGrouping/gridRowGroupingUtils.js";
import { useGridRootProps } from "../../../hooks/utils/useGridRootProps.js";
import { jsx as _jsx } from "react/jsx-runtime";
export function GridColumnMenuRowGroupItem(props) {
const {
colDef,
onClick
} = props;
const apiRef = useGridApiContext();
const rowGroupingModel = useGridSelector(apiRef, gridRowGroupingSanitizedModelSelector);
const columnsLookup = useGridSelector(apiRef, gridColumnLookupSelector);
const rootProps = useGridRootProps();
const renderUnGroupingMenuItem = field => {
const ungroupColumn = event => {
apiRef.current.removeRowGroupingCriteria(field);
onClick(event);
};
const groupedColumn = columnsLookup[field];
const name = groupedColumn.headerName ?? field;
return /*#__PURE__*/_jsx(rootProps.slots.baseMenuItem, {
onClick: ungroupColumn,
disabled: !groupedColumn.groupable,
iconStart: /*#__PURE__*/_jsx(rootProps.slots.columnMenuUngroupIcon, {
fontSize: "small"
}),
children: apiRef.current.getLocaleText('unGroupColumn')(name)
}, field);
};
if (process.env.NODE_ENV !== "production") renderUnGroupingMenuItem.displayName = "renderUnGroupingMenuItem";
if (!colDef || !isGroupingColumn(colDef.field)) {
return null;
}
if (colDef.field === GRID_ROW_GROUPING_SINGLE_GROUPING_FIELD) {
return /*#__PURE__*/_jsx(React.Fragment, {
children: rowGroupingModel.map(renderUnGroupingMenuItem)
});
}
return renderUnGroupingMenuItem(getRowGroupingCriteriaFromGroupingField(colDef.field));
}