@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
56 lines (55 loc) • 1.29 kB
JavaScript
import { ensurePluginOrder, useGetLatest, makePropGetter } from "react-table";
const useInstanceHook = (instance) => {
ensurePluginOrder(
instance.plugins,
[
"usePagination",
"useHvGlobalFilter",
"useHvFilters",
"useGroupBy",
"useHvSortBy",
"useHvRowExpand"
],
"useHvPagination"
);
const getInstance = useGetLatest(instance);
const getHvPaginationProps = makePropGetter(
instance.getHooks().getHvPaginationProps,
{
instance: getInstance()
}
);
Object.assign(instance, {
getHvPaginationProps
});
};
const defaultGetHvPaginationProps = (props, { instance }) => {
const {
canPreviousPage,
canNextPage,
pageOptions,
gotoPage,
setPageSize,
state: { pageSize, pageIndex },
labels
} = instance;
const nextProps = {
canPrevious: canPreviousPage,
canNext: canNextPage,
pages: pageOptions.length,
page: pageIndex,
pageSize,
onPageChange: gotoPage,
onPageSizeChange: setPageSize,
labels
};
return [props, nextProps];
};
const useHvPagination = (hooks) => {
hooks.getHvPaginationProps = [defaultGetHvPaginationProps];
hooks.useInstance.push(useInstanceHook);
};
useHvPagination.pluginName = "useHvPagination";
export {
useHvPagination
};