@lanaco/lnc-react-ui
Version:
React component library
13 lines (12 loc) • 3.37 kB
JavaScript
"use strict";const o=require("react/jsx-runtime"),E=require("react"),t=require("./index-BPVoEhTF.cjs"),P=require("./Button.cjs"),b=require("./IconButton.cjs"),_=require("./ButtonGroup.cjs"),C=require("./emotion-styled.browser.esm-Cle7tAM9.cjs"),G=require("./emotion-element-f0de968e.browser.esm-B7k6i6lC.cjs"),w=require("./useUpdateEffect-BtMgpgIV.cjs"),U=C.newStyled.div`
display: inline-flex;
flex-wrap: wrap;
width: 100%;
gap: 0.375rem;
justify-content: ${u=>u.horizontalAlignment};
`,$=C.newStyled.div`
& > .button-group-pagination-lnc {
width: 100%;
justify-content: ${u=>u.horizontalAlignment};
}
`,O=u=>{const{icons:c={},borderRadius:d="regular",currentPage:f=1,buttonType:q="outline",currentPageButtonType:B="tinted",withFirstLast:m=!0,withButtonGroup:N=!0,disabledNext:v=!1,disabledPrevious:k=!1,disabledFirst:S=!1,disabledLast:z=!1,disabled:i=!1,totalNumberOfPages:g=1,pagesOffset:y=0,horizontalAlignment:T="left",onPageChange:F=()=>{},className:h="",style:x={},color:L="primary",size:R="small"}=u,l={theme:G.useTheme(),size:R,color:L,btnType:q},[s,a]=E.useState(f);w.useUpdateEffect(()=>{a(f)},[f]),w.useUpdateEffect(()=>{F(s)},[s]);const p=(r,e)=>{e=="next"&&s<g?a(s+1):e=="previous"&&s>1?a(s-1):e=="last"&&s!=g?a(g):e=="first"&&s!=1?a(1):isNaN(+e)||a(e)},A=()=>{let r=[];for(let e=s-y>0?s-y:1;e<s&&e>0;e++)r.push(o.jsx(P,{...l,borderRadius:d,onClick:n=>p(n,e),btnType:"basic",text:e.toString(),disabled:i},e));r.push(o.jsx(P,{...l,borderRadius:d,btnType:B,text:s.toString(),disabled:i},s));for(let e=s+1;e<=s+y&&e<=g;e++)r.push(o.jsx(P,{...l,borderRadius:d,onClick:n=>p(n,e),btnType:"basic",text:e.toString(),disabled:i},e));return r},j=(r=null)=>{var e={};return r&&(e.borderRadius=r),o.jsxs(o.Fragment,{children:[m&&o.jsx(b,{...l,icon:c.doubleLeft||"angle-double-left",disabled:S||i,onClick:n=>p(n,"first"),...e}),o.jsx(b,{...l,icon:c.left||"angle-left",disabled:k||i,onClick:n=>p(n,"previous"),...e}),A(),o.jsx(b,{...l,icon:c.right||"angle-right",disabled:v||i,onClick:n=>p(n,"next"),...e}),m&&o.jsx(b,{...l,icon:c.doubleRight||"angle-double-right",disabled:z||i,onClick:n=>p(n,"last"),...e})]})};return N?o.jsx($,{horizontalAlignment:T,children:o.jsx(_,{className:"button-group-pagination-lnc "+h,style:x,borderRadius:d,children:j()})}):o.jsx(U,{horizontalAlignment:T,className:h,style:x,children:j(d)})};O.propTypes={icons:t.PropTypes.shape({left:t.PropTypes.element,right:t.PropTypes.element,doubleLeft:t.PropTypes.element,doubleRight:t.PropTypes.element}),disabled:t.PropTypes.bool,borderRadius:t.PropTypes.oneOf(["slight","regular","edged","curved","none"]),buttonType:t.PropTypes.oneOf(["filled","tinted","outline","basic"]),currentPageButtonType:t.PropTypes.oneOf(["filled","tinted","outline","basic"]),withFirstLast:t.PropTypes.bool,withButtonGroup:t.PropTypes.bool,currentPage:t.PropTypes.number,totalNumberOfPages:t.PropTypes.number,pagesOffset:t.PropTypes.number,disabledNext:t.PropTypes.bool,disabledPrevious:t.PropTypes.bool,disabledFirst:t.PropTypes.bool,disabledLast:t.PropTypes.bool,horizontalAlignment:t.PropTypes.oneOf(["left","center","right"]),onPageChange:t.PropTypes.func,className:t.PropTypes.string,style:t.PropTypes.object,size:t.PropTypes.oneOf(["small","medium","large"]),color:t.PropTypes.oneOf(["primary","secondary","success","warning","danger","information","neutral","gray"])};module.exports=O;