@polaritybit/smart-table
Advanced tools
Comparing version 0.0.11 to 0.0.12
@@ -155,3 +155,3 @@ import { jsx, jsxs } from 'react/jsx-runtime'; | ||
function usePagination({ items = [], options, onPageChange }) { | ||
const [activePage, setActivePage] = useState(0); | ||
const [activePage, setActivePage] = useState(options?.activePage ?? 0); | ||
const stableOnPageChange = useStableCallback( | ||
@@ -162,7 +162,13 @@ onPageChange ?? (() => { | ||
useEffect(() => { | ||
setActivePage(0); | ||
}, [options?.pageSize]); | ||
useEffect(() => { | ||
stableOnPageChange?.(activePage); | ||
}, [activePage, stableOnPageChange]); | ||
setActivePage(options?.activePage ?? 0); | ||
}, [options?.pageSize, options?.activePage]); | ||
const handlePageChange = useCallback( | ||
function handlePageChange2(page) { | ||
if (typeof options?.activePage !== "number") { | ||
setActivePage(page); | ||
} | ||
stableOnPageChange?.(page); | ||
}, | ||
[options?.activePage, stableOnPageChange] | ||
); | ||
const [pageItems, pageCount] = useMemo(() => { | ||
@@ -182,3 +188,3 @@ if (!options?.totalItems) { | ||
}, [items, options?.pageSize, options?.totalItems, activePage]); | ||
return { pageItems, pageCount, activePage, setActivePage }; | ||
return { pageItems, pageCount, activePage, setActivePage: handlePageChange }; | ||
} | ||
@@ -294,5 +300,5 @@ | ||
if (!paginationOptions?.totalItems) { | ||
setActivePage(0); | ||
setActivePage(paginationOptions?.activePage ?? 0); | ||
} | ||
}, [items, setActivePage, paginationOptions?.totalItems]); | ||
}, [items, setActivePage, paginationOptions?.totalItems, paginationOptions?.activePage]); | ||
useEffect(() => { | ||
@@ -299,0 +305,0 @@ stableOnSortChange?.(sortProperties); |
export type PaginationOptions = { | ||
pageSize: number; | ||
activePage?: number; | ||
totalItems?: number; | ||
@@ -14,3 +15,3 @@ }; | ||
activePage: number; | ||
setActivePage: import("react").Dispatch<import("react").SetStateAction<number>>; | ||
setActivePage: (page: number) => void; | ||
}; |
@@ -0,8 +1,5 @@ | ||
import { PaginationOptions } from './hooks/use-pagination.hook'; | ||
import { SortDirection, SortPredicate } from './hooks/use-sort.hook'; | ||
import { DeepPartial, SmartTableConfig } from './smart-table-config.context'; | ||
export declare const DEFAULT_PAGE_SIZE = 25; | ||
export type PaginationOptions = { | ||
pageSize: number; | ||
totalItems?: number; | ||
}; | ||
export type TableColumn<T = Record<string, unknown>> = { | ||
@@ -9,0 +6,0 @@ key: string; |
{ | ||
"name": "@polaritybit/smart-table", | ||
"private": false, | ||
"version": "0.0.11", | ||
"version": "0.0.12", | ||
"type": "module", | ||
@@ -6,0 +6,0 @@ "main": "dist/index.js", |
import { splitEvery } from 'ramda' | ||
import { useMemo, useState, useEffect } from 'react' | ||
import { useMemo, useState, useEffect, useCallback } from 'react' | ||
import { useStableCallback } from './use-stable-callback.hook' | ||
@@ -8,2 +8,3 @@ import { DEFAULT_PAGE_SIZE } from '../smart-table.component' | ||
pageSize: number | ||
activePage?: number | ||
totalItems?: number | ||
@@ -19,3 +20,3 @@ } | ||
export function usePagination<T>({ items = [], options, onPageChange }: PaginationHookData<T>) { | ||
const [activePage, setActivePage] = useState(0) | ||
const [activePage, setActivePage] = useState(options?.activePage ?? 0) | ||
const stableOnPageChange = useStableCallback( | ||
@@ -29,9 +30,16 @@ onPageChange ?? | ||
useEffect(() => { | ||
setActivePage(0) | ||
}, [options?.pageSize]) | ||
setActivePage(options?.activePage ?? 0) | ||
}, [options?.pageSize, options?.activePage]) | ||
useEffect(() => { | ||
stableOnPageChange?.(activePage) | ||
}, [activePage, stableOnPageChange]) | ||
const handlePageChange = useCallback( | ||
function handlePageChange(page: number) { | ||
if (typeof options?.activePage !== 'number') { | ||
setActivePage(page) | ||
} | ||
stableOnPageChange?.(page) | ||
}, | ||
[options?.activePage, stableOnPageChange], | ||
) | ||
const [pageItems, pageCount] = useMemo(() => { | ||
@@ -57,3 +65,3 @@ if (!options?.totalItems) { | ||
return { pageItems, pageCount, activePage, setActivePage } | ||
return { pageItems, pageCount, activePage, setActivePage: handlePageChange } | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
63790
1431