@mui/x-data-grid
Version:
The Community plan edition of the Data Grid components (MUI X).
39 lines • 1.72 kB
JavaScript
import { gridColumnDefinitionsSelector, gridVisibleColumnDefinitionsSelector } from "../columns/index.js";
import { gridFilteredSortedRowIdsSelector } from "../filter/index.js";
import { gridPinnedRowsSelector, gridRowTreeSelector } from "../rows/gridRowsSelector.js";
import { gridRowSelectionCountSelector, gridRowSelectionIdsSelector } from "../rowSelection/gridRowSelectionSelector.js";
export const getColumnsToExport = ({
apiRef,
options
}) => {
const columns = gridColumnDefinitionsSelector(apiRef);
if (options.fields) {
return options.fields.reduce((currentColumns, field) => {
const column = columns.find(col => col.field === field);
if (column) {
currentColumns.push(column);
}
return currentColumns;
}, []);
}
const validColumns = options.allColumns ? columns : gridVisibleColumnDefinitionsSelector(apiRef);
return validColumns.filter(column => !column.disableExport);
};
export const defaultGetRowsToExport = ({
apiRef
}) => {
const filteredSortedRowIds = gridFilteredSortedRowIdsSelector(apiRef);
const rowTree = gridRowTreeSelector(apiRef);
const selectedRowsCount = gridRowSelectionCountSelector(apiRef);
const bodyRows = filteredSortedRowIds.filter(id => rowTree[id].type !== 'footer');
const pinnedRows = gridPinnedRowsSelector(apiRef);
const topPinnedRowsIds = pinnedRows?.top?.map(row => row.id) || [];
const bottomPinnedRowsIds = pinnedRows?.bottom?.map(row => row.id) || [];
bodyRows.unshift(...topPinnedRowsIds);
bodyRows.push(...bottomPinnedRowsIds);
if (selectedRowsCount > 0) {
const selectedRows = gridRowSelectionIdsSelector(apiRef);
return bodyRows.filter(id => selectedRows.has(id));
}
return bodyRows;
};