@mui/x-data-grid-pro
Version:
The Pro plan edition of the MUI X Data Grid components.
52 lines (49 loc) • 2.83 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useGridDetailPanelPreProcessors = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var React = _interopRequireWildcard(require("react"));
var _xDataGrid = require("@mui/x-data-grid");
var _internals = require("@mui/x-data-grid/internals");
var _gridDetailPanelToggleColDef = require("./gridDetailPanelToggleColDef");
var _gridDetailPanelSelector = require("./gridDetailPanelSelector");
const useGridDetailPanelPreProcessors = (privateApiRef, props) => {
const addToggleColumn = React.useCallback(columnsState => {
if (props.getDetailPanelContent == null) {
// Remove the toggle column, when it exists
if (columnsState.lookup[_gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD]) {
delete columnsState.lookup[_gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD];
columnsState.orderedFields = columnsState.orderedFields.filter(field => field !== _gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD);
}
return columnsState;
}
// Don't add the toggle column if there's already one
// The user might have manually added it to have it in a custom position
if (columnsState.lookup[_gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD]) {
return columnsState;
}
// Otherwise, add the toggle column at the beginning
columnsState.orderedFields = [_gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD, ...columnsState.orderedFields];
columnsState.lookup[_gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_FIELD] = (0, _extends2.default)({}, _gridDetailPanelToggleColDef.GRID_DETAIL_PANEL_TOGGLE_COL_DEF, {
headerName: privateApiRef.current.getLocaleText('detailPanelToggle')
});
return columnsState;
}, [privateApiRef, props.getDetailPanelContent]);
const addExpandedClassToRow = React.useCallback((classes, id) => {
if (props.getDetailPanelContent == null) {
return classes;
}
const expandedRowIds = (0, _gridDetailPanelSelector.gridDetailPanelExpandedRowIdsSelector)(privateApiRef);
if (!expandedRowIds.has(id)) {
return classes;
}
return [...classes, _xDataGrid.gridClasses['row--detailPanelExpanded']];
}, [privateApiRef, props.getDetailPanelContent]);
(0, _internals.useGridRegisterPipeProcessor)(privateApiRef, 'hydrateColumns', addToggleColumn);
(0, _internals.useGridRegisterPipeProcessor)(privateApiRef, 'rowClassName', addExpandedClassToRow);
};
exports.useGridDetailPanelPreProcessors = useGridDetailPanelPreProcessors;