@mui/x-data-grid-pro
Version:
The Pro plan edition of the MUI X Data Grid components.
69 lines (67 loc) • 4.13 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.useGridRowsOverridableMethods = void 0;
var _formatErrorMessage2 = _interopRequireDefault(require("@mui/x-internals/formatErrorMessage"));
var React = _interopRequireWildcard(require("react"));
var _xDataGrid = require("@mui/x-data-grid");
var _internals = require("@mui/x-data-grid/internals");
var _treeDataReorderExecutor = require("../treeData/treeDataReorderExecutor");
const useGridRowsOverridableMethods = (apiRef, props) => {
const {
processRowUpdate,
onProcessRowUpdateError,
setTreeDataPath,
treeData
} = props;
const {
setRowIndex: setRowIndexFlat,
setRowPosition: setRowPositionFlat
} = (0, _internals.useGridRowsOverridableMethodsCommunity)(apiRef);
const setRowPosition = React.useCallback(async (sourceRowId, targetRowId, position) => {
const sortedFilteredRowIds = (0, _xDataGrid.gridExpandedSortedRowIdsSelector)(apiRef);
const sortedFilteredRowIndexLookup = (0, _xDataGrid.gridExpandedSortedRowIndexLookupSelector)(apiRef);
const rowTree = (0, _xDataGrid.gridRowTreeSelector)(apiRef);
const sourceNode = (0, _xDataGrid.gridRowNodeSelector)(apiRef, sourceRowId);
const targetNode = (0, _xDataGrid.gridRowNodeSelector)(apiRef, targetRowId);
if (!sourceNode) {
throw new Error(process.env.NODE_ENV !== "production" ? `MUI X Data Grid: No row with id "${sourceRowId}" found. ` + 'The source row for reordering does not exist in the grid. ' + 'Verify the row id is correct and the row exists.' : (0, _formatErrorMessage2.default)(128, sourceRowId));
}
if (!targetNode) {
throw new Error(process.env.NODE_ENV !== "production" ? `MUI X Data Grid: No row with id "${targetRowId}" found. ` + 'The target row for reordering does not exist in the grid. ' + 'Verify the row id is correct and the row exists.' : (0, _formatErrorMessage2.default)(129, targetRowId));
}
if (sourceNode.type === 'footer') {
throw new Error(process.env.NODE_ENV !== "production" ? 'MUI X Data Grid: Row reordering does not support reordering of footer rows. ' + 'Footer rows are special rows that cannot be moved. ' + 'Only data rows can be reordered.' : (0, _formatErrorMessage2.default)(130));
}
// Get the target index from the targetRowId using the lookup selector
const targetIndexUnadjusted = sortedFilteredRowIndexLookup[targetRowId];
if (targetIndexUnadjusted === undefined) {
throw new Error(process.env.NODE_ENV !== "production" ? `MUI X Data Grid: Target row with id "${targetRowId}" not found in current view. ` + 'The target row may be filtered out or not visible. ' + 'Ensure the target row is visible in the current grid view.' : (0, _formatErrorMessage2.default)(131, targetRowId));
}
const targetIndex = position === 'below' ? targetIndexUnadjusted + 1 : targetIndexUnadjusted;
const executionContext = {
sourceRowId,
dropPosition: position,
placeholderIndex: targetIndex,
sortedFilteredRowIds,
sortedFilteredRowIndexLookup,
rowTree,
apiRef,
processRowUpdate,
onProcessRowUpdateError,
setTreeDataPath
};
return _treeDataReorderExecutor.treeDataReorderExecutor.execute(executionContext);
}, [apiRef, processRowUpdate, onProcessRowUpdateError, setTreeDataPath]);
const setRowIndex = React.useCallback(async () => {
throw new Error(process.env.NODE_ENV !== "production" ? 'MUI X Data Grid: setRowIndex() is not supported for tree data. ' + 'Tree data uses hierarchical positioning which requires setRowPosition(). ' + 'Use setRowPosition() instead to reorder rows in tree data mode.' : (0, _formatErrorMessage2.default)(132));
}, []);
return {
setRowIndex: treeData ? setRowIndex : setRowIndexFlat,
setRowPosition: treeData ? setRowPosition : setRowPositionFlat
};
};
exports.useGridRowsOverridableMethods = useGridRowsOverridableMethods;