koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
3 lines (2 loc) • 1.45 kB
JavaScript
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),n=require("react"),S=require("classnames"),y=require("../../internal/Icons/IconEnter.cjs"),P=require("../../internal/hooks/useMatchMedia.cjs"),t=require("./DataTable.module.css.cjs"),k=require("../Pagination/Pagination.cjs"),q=({setCurrentPage:s,currentPage:d,pagesAmount:o,pageSize:p,onPageSizeChange:c,rowsCount:u})=>{const g=n.useRef(null),[e,b]=n.useState(p),i=n.useCallback(l=>l<=u,[u]),f=n.useCallback(l=>{const N=parseInt(l.target.value);b(N)},[]),h=n.useCallback(l=>{l.key==="Enter"&&i(e)&&(c(e),s(1))},[i,c,e,s]),m=n.useCallback(()=>{i(e)&&(c(e),s(1))},[i,c,e,s]),r=P.useMatchMedia("(width >= 768px)"),x=r||o<=7,j=r||o>7;return a.jsxs("div",{className:t.default.paginationWrapper,children:[a.jsx(k.Pagination,{showPageButtons:x,showNavigation:j,onPageSelect:s,selectedPage:d,totalPages:o}),a.jsxs("div",{className:t.default.paginationFieldset,children:[a.jsx("label",{htmlFor:"input",className:t.default.paginationLabel,children:"Rows per page:"}),a.jsx("input",{min:1,max:u,ref:g,onKeyUp:h,onChange:f,value:e,id:"input",type:"number",className:S(t.default.paginationInput,{[t.default.error]:!i(e)})}),a.jsx("button",{disabled:!i(e),className:t.default.paginationButton,onClick:m,children:a.jsx(y.IconEnter,{className:t.default.icon})})]})]})};exports.Pagination=q;
//# sourceMappingURL=Pagination.cjs.map