koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
1 lines • 2.95 kB
Source Map (JSON)
{"version":3,"file":"usePagePaginationState.cjs","sources":["../../../../src/lib/Pagination/usePagePaginationState.ts"],"sourcesContent":["import {useCallback, useState} from 'react';\n\nconst getVisible = (totalPages: number, selectedPage: number) => {\n switch (selectedPage) {\n case 1: {\n return [selectedPage + 1, selectedPage + 2, selectedPage + 3];\n }\n case 2: {\n return [selectedPage, selectedPage + 1, selectedPage + 2];\n }\n case totalPages: {\n return [selectedPage - 3, selectedPage - 2, selectedPage - 1];\n }\n case totalPages - 1: {\n return [selectedPage - 2, selectedPage - 1, selectedPage];\n }\n default: {\n return [selectedPage - 1, selectedPage, selectedPage + 1];\n }\n }\n};\n\nexport const usePagePaginationState = (totalPages: number, initiallySelected: number) => {\n const [selectedPage, setSelectedPage] = useState(initiallySelected);\n const first = 1;\n const last = totalPages;\n const visible = getVisible(totalPages, selectedPage);\n const nextPage = selectedPage + 1 <= totalPages ? selectedPage + 1 : 1;\n const previousPage = selectedPage - 1 >= 1 ? selectedPage - 1 : totalPages;\n const isLong = totalPages > 7;\n const maxDigits = totalPages.toString().length + 1;\n const checkValidity = useCallback(\n (pageNumber: number | null) => {\n if (pageNumber === null) {\n return true;\n }\n return pageNumber >= 1 && pageNumber <= totalPages;\n },\n [totalPages]\n );\n return {\n first,\n last,\n visible,\n setSelectedPage,\n selectedPage,\n nextPage,\n previousPage,\n isLong,\n maxDigits,\n checkValidity,\n };\n};\n"],"names":["getVisible","totalPages","selectedPage","usePagePaginationState","initiallySelected","setSelectedPage","useState","first","last","visible","nextPage","previousPage","isLong","maxDigits","checkValidity","useCallback","pageNumber"],"mappings":"sHAEMA,EAAa,CAACC,EAAoBC,IAAyB,CAC7D,OAAQA,EAAc,CAClB,IAAK,GACD,MAAO,CAACA,EAAe,EAAGA,EAAe,EAAGA,EAAe,CAAC,EAEhE,IAAK,GACD,MAAO,CAACA,EAAcA,EAAe,EAAGA,EAAe,CAAC,EAE5D,KAAKD,EACD,MAAO,CAACC,EAAe,EAAGA,EAAe,EAAGA,EAAe,CAAC,EAEhE,KAAKD,EAAa,EACd,MAAO,CAACC,EAAe,EAAGA,EAAe,EAAGA,CAAY,EAE5D,QACI,MAAO,CAACA,EAAe,EAAGA,EAAcA,EAAe,CAAC,CAC5D,CAER,EAEaC,EAAyB,CAACF,EAAoBG,IAA8B,CACrF,KAAM,CAACF,EAAcG,CAAe,EAAIC,EAAAA,SAASF,CAAiB,EAC5DG,EAAQ,EACRC,EAAOP,EACPQ,EAAUT,EAAWC,EAAYC,CAAY,EAC7CQ,EAAWR,EAAe,GAAKD,EAAaC,EAAe,EAAI,EAC/DS,EAAeT,EAAe,GAAK,EAAIA,EAAe,EAAID,EAC1DW,EAASX,EAAa,EACtBY,EAAYZ,EAAW,SAAS,EAAE,OAAS,EAC3Ca,EAAgBC,EAAA,YACjBC,GACOA,IAAe,KACR,GAEJA,GAAc,GAAKA,GAAcf,EAE5C,CAACA,CAAU,CACf,EACO,MAAA,CACH,MAAAM,EACA,KAAAC,EACA,QAAAC,EACA,gBAAAJ,EACA,aAAAH,EACA,SAAAQ,EACA,aAAAC,EACA,OAAAC,EACA,UAAAC,EACA,cAAAC,CACJ,CACJ"}