carbon-react
Version:
A library of reusable React components for easily building user interfaces.
2 lines (1 loc) • 2.37 kB
JavaScript
import{jsxs as e,jsx as t,Fragment as n}from"react/jsx-runtime";import{useRef as r}from"react";import{StyledPagerNavigation as a,StyledPagerNavInner as i,StyledPagerNoSelect as o,StyledPagerNavLabel as l}from"../pager.style.js";import{Number as s}from"../../number/number.component.js";import u from"../../../__internal__/utils/helpers/events/events.js";import p from"../../../__internal__/utils/helpers/guid/index.js";import c from"./pager-navigation-link.component.js";import m from"../../../hooks/__internal__/useLocale/useLocale.js";function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){g(e,t,n[t])}))}return e}const b=({pageSize:g,currentPage:b,setCurrentPage:f,onNext:h,onPrevious:y,onFirst:v,onLast:P,onPagination:_,pageCount:j,showFirstAndLastButtons:k=!0,showPreviousAndNextButtons:C=!0,showPageCount:O=!0,interactivePageNumber:S=!0,hideDisabledElements:w=!1,smallScreenBreakpoint:x})=>{const E=m(),N=`Pager_${r(p()).current}`,D=`${E.pager.pageX()} ${b.toString()} ${E.pager.ofY(j)}`,B=j<=1,L=2===j,$={currentPage:b,pageSize:g,pageCount:j,onPagination:_},F=e=>{const t=+e.target.value;return 0===j?(f(0),_(0,g,"input"),0):t<=0||Number.isNaN(t)?(f(1),_(1,g,"input"),1):t>j?(f(j),_(j,g,"input"),j):(f(t),_(t,g,"input"),t)};return e(a,{smallScreenBreakpoint:x,children:[!B&&e(n,{children:[!L&&k&&t(c,d({type:"first",hideDisabledElements:w,onClick:v},$)),C&&t(c,d({type:"previous",hideDisabledElements:w,onClick:y},$))]}),O&&(S?e(i,{children:[t("label",{htmlFor:N,children:t(o,{children:E.pager.pageX()})}),t(s,{value:b.toString(),"data-element":"current-page",onChange:e=>{f(+e.target.value)},onBlur:F,id:N,onKeyUp:e=>!!u.isEnterKey(e)&&F(e)}),t(o,{"data-element":"max-pages",children:E.pager.ofY(j)})]}):t(l,{"data-element":"current-page-label","data-role":"current-page-label",id:N,"aria-live":"polite",children:D})),!B&&e(n,{children:[C&&t(c,d({type:"next",hideDisabledElements:w,onClick:h},$)),!L&&k&&t(c,d({type:"last",hideDisabledElements:w,onClick:P},$))]})]})};export{b as default};