UNPKG

@tanstack/table-core

Version:

Headless UI for building powerful tables & datagrids for TS/JS.

170 lines (165 loc) 6.21 kB
/** * table-core * * Copyright (c) TanStack * * This source code is licensed under the MIT license found in the * LICENSE.md file in the root directory of this source tree. * * @license MIT */ 'use strict'; var utils = require('../utils.js'); // const defaultPageIndex = 0; const defaultPageSize = 10; const getDefaultPaginationState = () => ({ pageIndex: defaultPageIndex, pageSize: defaultPageSize }); const RowPagination = { getInitialState: state => { return { ...state, pagination: { ...getDefaultPaginationState(), ...(state == null ? void 0 : state.pagination) } }; }, getDefaultOptions: table => { return { onPaginationChange: utils.makeStateUpdater('pagination', table) }; }, createTable: table => { let registered = false; let queued = false; table._autoResetPageIndex = () => { var _ref, _table$options$autoRe; if (!registered) { table._queue(() => { registered = true; }); return; } if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) { if (queued) return; queued = true; table._queue(() => { table.resetPageIndex(); queued = false; }); } }; table.setPagination = updater => { const safeUpdater = old => { let newState = utils.functionalUpdate(updater, old); return newState; }; return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater); }; table.resetPagination = defaultState => { var _table$initialState$p; table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState()); }; table.setPageIndex = updater => { table.setPagination(old => { let pageIndex = utils.functionalUpdate(updater, old.pageIndex); const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1; pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex)); return { ...old, pageIndex }; }); }; table.resetPageIndex = defaultState => { var _table$initialState$p2, _table$initialState; table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex); }; table.resetPageSize = defaultState => { var _table$initialState$p3, _table$initialState2; table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize); }; table.setPageSize = updater => { table.setPagination(old => { const pageSize = Math.max(1, utils.functionalUpdate(updater, old.pageSize)); const topRowIndex = old.pageSize * old.pageIndex; const pageIndex = Math.floor(topRowIndex / pageSize); return { ...old, pageIndex, pageSize }; }); }; //deprecated table.setPageCount = updater => table.setPagination(old => { var _table$options$pageCo; let newPageCount = utils.functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1); if (typeof newPageCount === 'number') { newPageCount = Math.max(-1, newPageCount); } return { ...old, pageCount: newPageCount }; }); table.getPageOptions = utils.memo(() => [table.getPageCount()], pageCount => { let pageOptions = []; if (pageCount && pageCount > 0) { pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i); } return pageOptions; }, utils.getMemoOptions(table.options, 'debugTable', 'getPageOptions')); table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0; table.getCanNextPage = () => { const { pageIndex } = table.getState().pagination; const pageCount = table.getPageCount(); if (pageCount === -1) { return true; } if (pageCount === 0) { return false; } return pageIndex < pageCount - 1; }; table.previousPage = () => { return table.setPageIndex(old => old - 1); }; table.nextPage = () => { return table.setPageIndex(old => { return old + 1; }); }; table.firstPage = () => { return table.setPageIndex(0); }; table.lastPage = () => { return table.setPageIndex(table.getPageCount() - 1); }; table.getPrePaginationRowModel = () => table.getExpandedRowModel(); table.getPaginationRowModel = () => { if (!table._getPaginationRowModel && table.options.getPaginationRowModel) { table._getPaginationRowModel = table.options.getPaginationRowModel(table); } if (table.options.manualPagination || !table._getPaginationRowModel) { return table.getPrePaginationRowModel(); } return table._getPaginationRowModel(); }; table.getPageCount = () => { var _table$options$pageCo2; return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize); }; table.getRowCount = () => { var _table$options$rowCou; return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length; }; } }; exports.RowPagination = RowPagination; //# sourceMappingURL=RowPagination.js.map