UNPKG

@mui/x-data-grid-pro

Version:

The Pro plan edition of the Data Grid components (MUI X).

45 lines 2.02 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import * as React from 'react'; import composeClasses from '@mui/utils/composeClasses'; import { getDataGridUtilityClass } from '@mui/x-data-grid'; import { useGridRegisterPipeProcessor } from '@mui/x-data-grid/internals'; import { GRID_REORDER_COL_DEF } from './gridRowReorderColDef'; const useUtilityClasses = ownerState => { const { classes } = ownerState; return React.useMemo(() => { const slots = { rowReorderCellContainer: ['rowReorderCellContainer'], columnHeaderReorder: ['columnHeaderReorder'] }; return composeClasses(slots, getDataGridUtilityClass, classes); }, [classes]); }; export const useGridRowReorderPreProcessors = (privateApiRef, props) => { const ownerState = { classes: props.classes }; const classes = useUtilityClasses(ownerState); const updateReorderColumn = React.useCallback(columnsState => { const reorderColumn = _extends({}, GRID_REORDER_COL_DEF, { cellClassName: classes.rowReorderCellContainer, headerClassName: classes.columnHeaderReorder, headerName: privateApiRef.current.getLocaleText('rowReorderingHeaderName') }); const shouldHaveReorderColumn = props.rowReordering; const haveReorderColumn = columnsState.lookup[reorderColumn.field] != null; if (shouldHaveReorderColumn && haveReorderColumn) { return columnsState; } if (shouldHaveReorderColumn && !haveReorderColumn) { columnsState.lookup[reorderColumn.field] = reorderColumn; columnsState.orderedFields = [reorderColumn.field, ...columnsState.orderedFields]; } else if (!shouldHaveReorderColumn && haveReorderColumn) { delete columnsState.lookup[reorderColumn.field]; columnsState.orderedFields = columnsState.orderedFields.filter(field => field !== reorderColumn.field); } return columnsState; }, [privateApiRef, classes, props.rowReordering]); useGridRegisterPipeProcessor(privateApiRef, 'hydrateColumns', updateReorderColumn); };