es-grid-template
Version:
es-grid-template
33 lines (32 loc) • 1.28 kB
JavaScript
import { pageSizeOptions } from "../../../grid-component/hooks";
const stateKey = 'pagination';
export function paginationFeature(opts = {}) {
return function paginationData(pipeline) {
const {
pagination
} = opts;
const dataSource = pipeline.getDataSource();
if (process.env.NODE_ENV !== 'production') {
// if (!hasAnySortableColumns(columns)) {
// console.warn(
// '[ali-react-table] commonTransform.sort 缺少可排序的列,请通过 column.features.sortable 来指定哪些列可排序',
// columns,
// )
// }
}
pipeline.dataSource(processDataSource(dataSource));
return pipeline;
function processDataSource(data) {
if (pagination === false || pagination && pagination.onChange) {
return data;
}
const currentPage = pagination?.currentPage ?? pipeline.getStateAtKey(stateKey)?.currentPage ?? 1;
const pageSize = pagination?.pageSize ?? pipeline.getStateAtKey(stateKey)?.pageSize ?? pageSizeOptions[0];
const safePage = Math.max(1, Math.min(currentPage, pagination?.total || 1));
const start = (safePage - 1) * pageSize;
const end = start + pageSize;
const pageData = data.slice(start, end);
return pageData;
}
};
}