es-grid-template
Version:
es-grid-template
39 lines (37 loc) • 1.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.paginationFeature = paginationFeature;
var _hooks = require("../../../grid-component/hooks");
const stateKey = 'pagination';
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 ?? _hooks.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;
}
};
}