UNPKG

primereact

Version:

PrimeReact is an open source UI library for React featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with Prime

2 lines (1 loc) 11 kB
import*as e from"react";import{useUpdateEffect as t}from"primereact/hooks";import{ObjectUtils as a,classNames as n}from"primereact/utils";import{ariaLabel as r,localeOption as l}from"primereact/api";import{Ripple as o}from"primereact/ripple";import{InputNumber as i}from"primereact/inputnumber";import{Dropdown as p}from"primereact/dropdown";function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},s.apply(this,arguments)}function u(e){if(Array.isArray(e))return e}function c(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,l=[],o=!0,i=!1;try{for(a=a.call(e);!(o=(n=a.next()).done)&&(l.push(n.value),!t||l.length!==t);o=!0);}catch(e){i=!0,r=e}finally{try{o||null==a.return||a.return()}finally{if(i)throw r}}return l}}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}function g(e,t){if(e){if("string"==typeof e)return m(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?m(e,t):void 0}}function d(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function b(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function P(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function v(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?P(Object(a),!0).forEach((function(t){b(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):P(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var k=e.memo((function(t){var n={currentPage:t.page+1,totalPages:t.pageCount,first:Math.min(t.first+1,t.totalRecords),last:Math.min(t.first+t.rows,t.totalRecords),rows:t.rows,totalRecords:t.totalRecords},r=t.reportTemplate.replace("{currentPage}",n.currentPage).replace("{totalPages}",n.totalPages).replace("{first}",n.first).replace("{last}",n.last).replace("{rows}",n.rows).replace("{totalRecords}",n.totalRecords),l=e.createElement("span",{className:"p-paginator-current"},r);if(t.template){var o=v(v({},n),{className:"p-paginator-current",element:l,props:t});return a.getJSXElement(t.template,o)}return l}));k.displayName="CurrentPageReport",k.defaultProps={__TYPE:"CurrentPageReport",pageCount:null,page:null,first:null,rows:null,totalRecords:null,reportTemplate:"({currentPage} of {totalPages})",template:null};var y=e.memo((function(t){var l=n("p-paginator-first p-paginator-element p-link",{"p-disabled":t.disabled}),i="p-paginator-icon pi pi-angle-double-left",p=e.createElement("button",{type:"button",className:l,onClick:t.onClick,disabled:t.disabled,"aria-label":r("firstPageLabel")},e.createElement("span",{className:i}),e.createElement(o,null));return t.template?a.getJSXElement(t.template,{onClick:t.onClick,className:l,iconClassName:i,disabled:t.disabled,element:p,props:t}):p}));y.displayName="FirstPageLink",y.defaultProps={__TYPE:"FirstPageLink",disabled:!1,onClick:null,template:null};var C=e.memo((function(t){var n=function(e){t.onChange&&t.onChange(t.rows*(e.value-1),t.rows)},r=t.pageCount>0?t.page+1:0,l=e.createElement(i,{value:r,onChange:n,className:"p-paginator-page-input",disabled:t.disabled});return t.template?a.getJSXElement(t.template,{value:r,onChange:n,disabled:t.disabled,className:"p-paginator-page-input",element:l,props:t}):l}));C.displayName="JumpToPageInput",C.defaultProps={__TYPE:"JumbToPageInput",page:null,rows:null,pageCount:null,disabled:!1,template:null,onChange:null};var w=e.memo((function(t){var l=n("p-paginator-last p-paginator-element p-link",{"p-disabled":t.disabled}),i="p-paginator-icon pi pi-angle-double-right",p=e.createElement("button",{type:"button",className:l,onClick:t.onClick,disabled:t.disabled,"aria-label":r("lastPageLabel")},e.createElement("span",{className:i}),e.createElement(o,null));return t.template?a.getJSXElement(t.template,{onClick:t.onClick,className:l,iconClassName:i,disabled:t.disabled,element:p,props:t}):p}));w.displayName="LastPageLink",w.defaultProps={__TYPE:"LastPageLink",disabled:!1,onClick:null,template:null};var h=e.memo((function(t){var l=n("p-paginator-next p-paginator-element p-link",{"p-disabled":t.disabled}),i="p-paginator-icon pi pi-angle-right",p=e.createElement("button",{type:"button",className:l,onClick:t.onClick,disabled:t.disabled,"aria-label":r("nextPageLabel")},e.createElement("span",{className:i}),e.createElement(o,null));return t.template?a.getJSXElement(t.template,{onClick:t.onClick,className:l,iconClassName:i,disabled:t.disabled,element:p,props:t}):p}));h.displayName="NextPageLink",h.defaultProps={__TYPE:"NextPageLink",disabled:!1,onClick:null,template:null};var E=e.memo((function(t){var l,i=function(e,a){t.onClick&&t.onClick({originalEvent:e,value:a}),e.preventDefault()};if(t.value){var p=t.value[0],s=t.value[t.value.length-1];l=t.value.map((function(l){var u=n("p-paginator-page p-paginator-element p-link",{"p-paginator-page-start":l===p,"p-paginator-page-end":l===s,"p-highlight":l-1===t.page}),c=e.createElement("button",{type:"button",className:u,onClick:function(e){return i(e,l)},"aria-label":"".concat(r("pageLabel")," ").concat(l+1)},l,e.createElement(o,null));t.template&&(c=a.getJSXElement(t.template,{onClick:function(e){return i(e,l)},className:u,view:{startPage:p-1,endPage:s-1},page:l-1,currentPage:t.page,totalPages:t.pageCount,element:c,props:t}));return e.createElement(e.Fragment,{key:l},c)}))}return e.createElement("span",{className:"p-paginator-pages"},l)}));E.displayName="PageLinks",E.defaultProps={__TYPE:"PageLinks",value:null,page:null,rows:null,pageCount:null,links:null,template:null};var N=e.memo((function(t){var l=n("p-paginator-prev p-paginator-element p-link",{"p-disabled":t.disabled}),i="p-paginator-icon pi pi-angle-left",p=e.createElement("button",{type:"button",className:l,onClick:t.onClick,disabled:t.disabled,"aria-label":r("previousPageLabel")},e.createElement("span",{className:i}),e.createElement(o,null));return t.template?a.getJSXElement(t.template,{onClick:t.onClick,className:l,iconClassName:i,disabled:t.disabled,element:p,props:t}):p}));N.displayName="PrevPageLink",N.defaultProps={__TYPE:"PrevPageLink",disabled:!1,onClick:null,template:null};var L=e.memo((function(t){var n=t.options&&t.options.length>0,r=n?t.options.map((function(e){return{label:String(e),value:e}})):[],o=l("choose"),i=n?e.createElement(p,{value:t.value,options:r,onChange:t.onChange,appendTo:t.appendTo,disabled:t.disabled,placeholder:o,"aria-label":o}):null;return t.template?a.getJSXElement(t.template,{value:t.value,options:r,onChange:t.onChange,appendTo:t.appendTo,currentPage:t.page,totalPages:t.pageCount,totalRecords:t.totalRecords,disabled:t.disabled,element:i,props:t}):i}));L.displayName="RowsPerPageDropdown",L.defaultProps={__TYPE:"RowsPerPageDropdown",options:null,value:null,page:null,pageCount:null,totalRecords:0,appendTo:null,onChange:null,template:null,disabled:!1};var R=e.memo(e.forwardRef((function(r,l){var o=e.useRef(null),i=e.useRef(!1),p=Math.floor(r.first/r.rows),m=Math.ceil(r.totalRecords/r.rows),b=0===p,P=p===m-1,v=0===m,S=function(){var e=m,t=Math.min(r.pageLinkSize,e),a=Math.max(0,Math.ceil(p-t/2)),n=Math.min(e-1,a+t-1);return[a=Math.max(0,a-(r.pageLinkSize-(n-a+1))),n]},O=function(){for(var e=[],t=S(),a=t[1],n=t[0];n<=a;n++)e.push(n+1);return e},T=function(e,t){var a=m,n=Math.floor(e/t);n>=0&&n<a&&(r.onPageChange&&r.onPageChange({first:e,rows:t,page:n,pageCount:a}))},j=function(e){T(0,r.rows),e.preventDefault()},_=function(e){T(r.first-r.rows,r.rows),e.preventDefault()},D=function(e){T((e.value-1)*r.rows,r.rows)},J=function(e){T(r.first+r.rows,r.rows),e.preventDefault()},M=function(e){T((m-1)*r.rows,r.rows),e.preventDefault()},x=function(e){var t=e.value;i.current=t!==r.rows,T(0,t)};e.useImperativeHandle(l,(function(){return{props:r,getElement:function(){return o.current}}})),t((function(){i.current||T(r.first,r.rows),i.current=!1}),[r.rows]),t((function(){p>0&&r.first>=r.totalRecords&&T((m-1)*r.rows,r.rows)}),[r.totalRecords]);var X,Y=function(t,a){var n;switch(t){case"FirstPageLink":n=e.createElement(y,{key:t,onClick:j,disabled:b||v,template:a});break;case"PrevPageLink":n=e.createElement(N,{key:t,onClick:_,disabled:b||v,template:a});break;case"NextPageLink":n=e.createElement(h,{key:t,onClick:J,disabled:P||v,template:a});break;case"LastPageLink":n=e.createElement(w,{key:t,onClick:M,disabled:P||v,template:a});break;case"PageLinks":n=e.createElement(E,{key:t,value:O(),page:p,rows:r.rows,pageCount:m,onClick:D,template:a});break;case"RowsPerPageDropdown":n=e.createElement(L,{key:t,value:r.rows,page:p,pageCount:m,totalRecords:r.totalRecords,options:r.rowsPerPageOptions,onChange:x,appendTo:r.dropdownAppendTo,template:a,disabled:v});break;case"CurrentPageReport":n=e.createElement(k,{reportTemplate:r.currentPageReportTemplate,key:t,page:p,pageCount:m,first:r.first,rows:r.rows,totalRecords:r.totalRecords,template:a});break;case"JumpToPageInput":n=e.createElement(C,{key:t,rows:r.rows,page:p,pageCount:m,onChange:T,disabled:v,template:a});break;default:n=null}return n};if(r.alwaysShow||1!==m){var A=a.findDiffKeys(r,R.defaultProps),I=n("p-paginator p-component",r.className),F=a.getJSXElement(r.leftContent,r),z=a.getJSXElement(r.rightContent,r),H=(X=r.template)?"object"===f(X)?X.layout?X.layout.split(" ").map((function(e){var t=e.trim();return Y(t,X[t])})):Object.entries(X).map((function(e){var t,a,n=(a=2,u(t=e)||c(t,a)||g(t,a)||d());return Y(n[0],n[1])})):X.split(" ").map((function(e){return Y(e.trim())})):null,K=F&&e.createElement("div",{className:"p-paginator-left-content"},F),U=z&&e.createElement("div",{className:"p-paginator-right-content"},z);return e.createElement("div",s({ref:o,className:I,style:r.style},A),K,H,U)}return null})));R.displayName="Paginator",R.defaultProps={__TYPE:"Paginator",totalRecords:0,rows:0,first:0,pageLinkSize:5,rowsPerPageOptions:null,alwaysShow:!0,style:null,className:null,template:"FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink RowsPerPageDropdown",onPageChange:null,leftContent:null,rightContent:null,dropdownAppendTo:null,currentPageReportTemplate:"({currentPage} of {totalPages})"};export{R as Paginator};