UNPKG

es-grid-template

Version:

es-grid-template

33 lines (32 loc) 1.28 kB
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; } }; }