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) • 17.8 kB
JavaScript
import*as e from"react";import{useMountEffect as n,useUpdateEffect as t}from"primereact/hooks";import{InputText as r}from"primereact/inputtext";import{Ripple as u}from"primereact/ripple";import{Tooltip as l}from"primereact/tooltip";import{ObjectUtils as a,DomHandler as i,classNames as c}from"primereact/utils";function o(){return o=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},o.apply(this,arguments)}function s(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function f(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function p(e){if(Array.isArray(e))return f(e)}function d(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function m(e,n){if(e){if("string"==typeof e)return f(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?f(e,n):void 0}}function g(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function v(e){return p(e)||d(e)||m(e)||g()}function y(e){if(Array.isArray(e))return e}function b(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,u,l=[],a=!0,i=!1;try{for(t=t.call(e);!(a=(r=t.next()).done)&&(l.push(r.value),!n||l.length!==n);a=!0);}catch(e){i=!0,u=e}finally{try{a||null==t.return||t.return()}finally{if(i)throw u}}return l}}function h(){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 x(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function I(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?x(Object(t),!0).forEach((function(n){s(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):x(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}var w=e.memo(e.forwardRef((function(s,f){var p,d,g=e.useState(!1),x=(d=2,y(p=g)||b(p,d)||m(p,d)||h()),D=x[0],O=x[1],R=e.useRef(null),S=e.useRef(null),E=e.useRef(null),F=e.useRef(null),C=e.useRef(null),N=e.useRef(null),A=e.useRef(null),P=e.useRef(null),j=e.useRef(null),k=e.useRef(null),B=e.useRef(null),M=e.useRef(null),K=e.useRef(null),T=e.useRef(null),L=e.useRef(null),G=e.useRef(null),z=e.useRef(null),U=s.showButtons&&"stacked"===s.buttonLayout,V=s.showButtons&&"horizontal"===s.buttonLayout,_=s.showButtons&&"vertical"===s.buttonLayout,q=s.inputMode||("decimal"!==s.mode||s.minFractionDigits?"decimal":"numeric"),W=function(){return{localeMatcher:s.localeMatcher,style:s.mode,currency:s.currency,currencyDisplay:s.currencyDisplay,useGrouping:s.useGrouping,minimumFractionDigits:s.minFractionDigits,maximumFractionDigits:s.maxFractionDigits}},$=function(){C.current=new Intl.NumberFormat(s.locale,W());var e=v(new Intl.NumberFormat(s.locale,{useGrouping:!1}).format(9876543210)).reverse(),n=new Map(e.map((function(e,n){return[e,n]})));k.current=new RegExp("[".concat(e.join(""),"]"),"g"),B.current=J(),M.current=Q(),K.current=X(),T.current=Y(),L.current=ee(),G.current=Z(),z.current=function(e){return n.get(e)}},H=function(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},Y=function(){var e=new Intl.NumberFormat(s.locale,I(I({},W()),{},{useGrouping:!1}));return new RegExp("[".concat(e.format(1.1).replace(K.current,"").trim().replace(k.current,""),"]"),"g")},J=function(){var e=new Intl.NumberFormat(s.locale,{useGrouping:!0});return N.current=e.format(1e6).trim().replace(k.current,"").charAt(0),new RegExp("[".concat(N.current,"]"),"g")},Q=function(){var e=new Intl.NumberFormat(s.locale,{useGrouping:!1});return new RegExp("[".concat(e.format(-1).trim().replace(k.current,""),"]"),"g")},X=function(){if(s.currency){var e=new Intl.NumberFormat(s.locale,{style:"currency",currency:s.currency,currencyDisplay:s.currencyDisplay,minimumFractionDigits:0,maximumFractionDigits:0});return new RegExp("[".concat(e.format(1).replace(/\s/g,"").replace(k.current,"").replace(B.current,""),"]"),"g")}return new RegExp("[]","g")},Z=function(){if(s.prefix)A.current=s.prefix;else{var e=new Intl.NumberFormat(s.locale,{style:s.mode,currency:s.currency,currencyDisplay:s.currencyDisplay});A.current=e.format(1).split("1")[0]}return new RegExp("".concat(H(A.current||"")),"g")},ee=function(){if(s.suffix)P.current=s.suffix;else{var e=new Intl.NumberFormat(s.locale,{style:s.mode,currency:s.currency,currencyDisplay:s.currencyDisplay,minimumFractionDigits:0,maximumFractionDigits:0});P.current=e.format(1).split("1")[1]}return new RegExp("".concat(H(P.current||"")),"g")},ne=function(e){if(null!=e){if("-"===e)return e;if(s.format){var n=new Intl.NumberFormat(s.locale,W()).format(e);return s.prefix&&(n=s.prefix+n),s.suffix&&(n+=s.suffix),n}return e.toString()}return""},te=function(e){var n=e.replace(L.current,"").replace(G.current,"").trim().replace(/\s/g,"").replace(K.current,"").replace(B.current,"").replace(M.current,"-").replace(T.current,".").replace(k.current,z.current);if(n){if("-"===n)return n;var t=+n;return isNaN(t)?null:t}return null},re=function e(n,t,r){var u=t||500;Je(),E.current=setTimeout((function(){e(n,40,r)}),u),ue(n,r)},ue=function(e,n){if(S.current){var t=s.step*n,r=te(S.current.value)||0,u=Ge(r+t);!i.isTouchDevice()&&Ue(u,null,"spin"),$e(e,u),Te(e,r,u)}},le=function(e){s.disabled||s.readOnly||(re(e,null,1),e.preventDefault())},ae=function(e){s.disabled||s.readOnly||(s.autoFocus&&i.focus(S.current,s.autoFocus),re(e,null,1),e.preventDefault())},ie=function(){s.disabled||s.readOnly||(Je(),event.preventDefault())},ce=function(){s.disabled||s.readOnly||Je()},oe=function(){s.disabled||s.readOnly||Je()},se=function(){s.disabled||s.readOnly||Je()},fe=function(e){s.disabled||s.readOnly||32!==e.keyCode&&13!==e.keyCode||re(e,null,1)},pe=function(e){s.disabled||s.readOnly||(re(e,null,-1),e.preventDefault())},de=function(){s.disabled||s.readOnly||(Je(),event.preventDefault())},me=function(e){s.disabled||s.readOnly||(s.autoFocus&&i.focus(S.current,s.autoFocus),re(e,null,-1),e.preventDefault())},ge=function(){s.disabled||s.readOnly||Je()},ve=function(){s.disabled||s.readOnly||Je()},ye=function(){s.disabled||s.readOnly||Je()},be=function(e){s.disabled||s.readOnly||32!==e.keyCode&&13!==e.keyCode||re(e,null,-1)},he=function(e){s.disabled||s.readOnly||(j.current&&(e.target.value=F.current),j.current=!1)},xe=function(e){if(!s.disabled&&!s.readOnly)if(F.current=e.target.value,e.shiftKey||e.altKey)j.current=!0;else{var n=e.target.selectionStart,t=e.target.selectionEnd,r=e.target.value,u=null;switch(e.altKey&&e.preventDefault(),e.which){case 38:ue(e,1),e.preventDefault();break;case 40:ue(e,-1),e.preventDefault();break;case 37:ke(r.charAt(n-1))||e.preventDefault();break;case 39:ke(r.charAt(n))||e.preventDefault();break;case 13:case 9:u=Ge(te(r)),S.current.value=ne(u),S.current.setAttribute("aria-valuenow",u),$e(e,u);break;case 8:if(e.preventDefault(),n===t){var l=r.charAt(n-1),a=Ee(r),i=a.decimalCharIndex,c=a.decimalCharIndexWithoutPrefix;if(ke(l)){var o=We(r);if(B.current.test(l))B.current.lastIndex=0,u=r.slice(0,n-2)+r.slice(n-1);else if(T.current.test(l))T.current.lastIndex=0,o?S.current.setSelectionRange(n-1,n-1):u=r.slice(0,n-1)+r.slice(n);else if(i>0&&n>i){var f=Se()&&(s.minFractionDigits||0)<o?"":"0";u=r.slice(0,n-1)+f+r.slice(n)}else 1===c?(u=r.slice(0,n-1)+"0"+r.slice(n),u=te(u)>0?u:""):u=r.slice(0,n-1)+r.slice(n)}Me(e,u,null,"delete-single")}else u=Ae(r,n,t),Me(e,u,null,"delete-range");break;case 46:if(e.preventDefault(),n===t){var p=r.charAt(n),d=Ee(r),m=d.decimalCharIndex,g=d.decimalCharIndexWithoutPrefix;if(ke(p)){var v=We(r);if(B.current.test(p))B.current.lastIndex=0,u=r.slice(0,n)+r.slice(n+2);else if(T.current.test(p))T.current.lastIndex=0,v?S.current.setSelectionRange(n+1,n+1):u=r.slice(0,n)+r.slice(n+1);else if(m>0&&n>m){var y=Se()&&(s.minFractionDigits||0)<v?"":"0";u=r.slice(0,n)+y+r.slice(n+1)}else 1===g?(u=r.slice(0,n)+"0"+r.slice(n+1),u=te(u)>0?u:""):u=r.slice(0,n)+r.slice(n+1)}Me(e,u,null,"delete-back-single")}else u=Ae(r,n,t),Me(e,u,null,"delete-range")}s.onKeyDown&&s.onKeyDown(e)}},Ie=function(e){if(!s.disabled&&!s.readOnly){var n=e.which||e.keyCode;13!==n&&e.preventDefault();var t=String.fromCharCode(n),r=Re(t),u=Oe(t);(48<=n&&n<=57||u||r)&&Ce(e,t,{isDecimalSign:r,isMinusSign:u})}},we=function(e){if(e.preventDefault(),!s.disabled&&!s.readOnly){var n=(e.clipboardData||window.clipboardData).getData("Text");if(n){var t=te(n);null!=t&&Ce(e,t.toString())}}},De=function(){return null===s.min||s.min<0},Oe=function(e){return!(!M.current.test(e)&&"-"!==e)&&(M.current.lastIndex=0,!0)},Re=function(e){return!!T.current.test(e)&&(T.current.lastIndex=0,!0)},Se=function(){return"decimal"===s.mode},Ee=function(e){var n=e.search(T.current);T.current.lastIndex=0;var t=e.replace(G.current,"").trim().replace(/\s/g,"").replace(K.current,"").search(T.current);return T.current.lastIndex=0,{decimalCharIndex:n,decimalCharIndexWithoutPrefix:t}},Fe=function(e){var n=e.search(T.current);T.current.lastIndex=0;var t=e.search(M.current);M.current.lastIndex=0;var r=e.search(L.current);L.current.lastIndex=0;var u=e.search(K.current);return K.current.lastIndex=0,{decimalCharIndex:n,minusCharIndex:t,suffixCharIndex:r,currencyCharIndex:u}},Ce=function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{isDecimalSign:!1,isMinusSign:!1},r=n.search(M.current);if(M.current.lastIndex=0,De()||-1===r){var u,l=S.current.selectionStart,a=S.current.selectionEnd,i=S.current.value.trim(),c=Fe(i),o=c.decimalCharIndex,f=c.minusCharIndex,p=c.suffixCharIndex,d=c.currencyCharIndex;if(t.isMinusSign)0===l&&(u=i,-1!==f&&0===a||(u=Ne(i,n,0,a)),Me(e,u,n,"insert"));else if(t.isDecimalSign)o>0&&l===o?Me(e,i,n,"insert"):(o>l&&o<a||-1===o&&s.maxFractionDigits)&&(u=Ne(i,n,l,a),Me(e,u,n,"insert"));else{var m=C.current.resolvedOptions().maximumFractionDigits,g=l!==a?"range-insert":"insert";if(o>0&&l>o){if(l+n.length-(o+1)<=m){var v=d>=l?d-1:p>=l?p:i.length;u=i.slice(0,l)+n+i.slice(l+n.length,v)+i.slice(v),Me(e,u,n,g)}}else u=Ne(i,n,l,a),Me(e,u,n,g)}}},Ne=function(e,n,t,r){if(2===("."===n?n:n.split(".")).length){var u=e.slice(t,r).search(T.current);return T.current.lastIndex=0,u>0?e.slice(0,t)+ne(n)+e.slice(r):e||ne(n)}return r-t===e.length?ne(n):0===t?n+e.slice(r):r===e.length?e.slice(0,t)+n:e.slice(0,t)+n+e.slice(r)},Ae=function(e,n,t){return t-n===e.length?"":0===n?e.slice(t):t===e.length?e.slice(0,n):e.slice(0,n)+e.slice(t)},Pe=function(){var e=S.current.selectionStart,n=S.current.value,t=n.length,r=null,u=(A.current||"").length,l=(n=n.replace(G.current,"")).charAt(e-=u);if(ke(l))return e+u;for(var a=e-1;a>=0;){if(l=n.charAt(a),ke(l)){r=a+u;break}a--}if(null!==r)S.current.setSelectionRange(r+1,r+1);else{for(a=e;a<t;){if(l=n.charAt(a),ke(l)){r=a+u;break}a++}null!==r&&S.current.setSelectionRange(r,r)}return r||0},je=function(){Pe()},ke=function(e){return!(1!==e.length||!(k.current.test(e)||T.current.test(e)||B.current.test(e)||M.current.test(e)))&&(Be(),!0)},Be=function(){k.current.lastIndex=0,T.current.lastIndex=0,B.current.lastIndex=0,M.current.lastIndex=0},Me=function(e,n,t,r){var u=S.current.value,l=null;null!=n&&(l=Ke(te(n)),Ue(l,t,r,n),Te(e,u,l))},Ke=function(e){return e||s.allowEmpty?e:s.min||0},Te=function(e,n,t){s.onChange&&Le(n,t)&&s.onChange({originalEvent:e,value:t})},Le=function(e,n){return null===n&&null!==e||null!=n&&n!==("string"==typeof e?te(e):e)},Ge=function(e){return"-"===e?null:ze(e)},ze=function(e){return a.isEmpty(e)?null:null!==s.min&&e<s.min?s.min:null!==s.max&&e>s.max?s.max:e},Ue=function(e,n,t,r){n=n||"";var u=S.current,l=u.value,a=ne(e),i=l.length;if(a!==r&&(a=qe(a,r)),0===i){u.value=a,u.setSelectionRange(0,0);var c=Pe()+n.length;u.setSelectionRange(c,c)}else{var o=u.selectionStart,s=u.selectionEnd;u.value=a;var f=a.length;if("range-insert"===t){var p=te((l||"").slice(0,o)),d=(null!==p?p.toString():"").split("").join("(".concat(N.current,")?")),m=new RegExp(d,"g");m.test(a);var g=n.split("").join("(".concat(N.current,")?")),v=new RegExp(g,"g");v.test(a.slice(m.lastIndex)),u.setSelectionRange(s=m.lastIndex+v.lastIndex,s)}else if(f===i)"insert"===t||"delete-back-single"===t?u.setSelectionRange(s+1,s+1):"delete-single"===t?u.setSelectionRange(s-1,s-1):"delete-range"!==t&&"spin"!==t||u.setSelectionRange(s,s);else if("delete-back-single"===t){var y=l.charAt(s-1),b=l.charAt(s),h=i-f,x=B.current.test(b);x&&1===h?s+=1:!x&&ke(y)&&(s+=-1*h+1),B.current.lastIndex=0,u.setSelectionRange(s,s)}else if("-"===l&&"insert"===t){u.setSelectionRange(0,0);var I=Pe()+n.length+1;u.setSelectionRange(I,I)}else u.setSelectionRange(s+=f-i,s)}u.setAttribute("aria-valuenow",e)},Ve=function(e){e=Ke(e);var n=S.current,t=n.value,r=_e(e);t!==r&&(n.value=r,n.setAttribute("aria-valuenow",e))},_e=function(e){return ne(Ke(e))},qe=function(e,n){if(e&&n){var t=n.search(T.current);return T.current.lastIndex=0,-1!==t?e.split(T.current)[0]+n.slice(t):e}return e},We=function(e){if(e){var n=e.split(T.current);if(2===n.length)return n[1].replace(L.current,"").trim().replace(/\s/g,"").replace(K.current,"").length}return 0},$e=function(e,n){s.onValueChange&&s.onValueChange({originalEvent:e,value:n,stopPropagation:function(){},preventDefault:function(){},target:{name:s.name,id:s.id,value:n}})},He=function(e){O(!0),s.onFocus&&s.onFocus(e)},Ye=function(e){if(O(!1),S.current){var n=S.current.value;if(Le(n,s.value)){var t=Ge(te(n));Ve(t),$e(e,t)}}s.onBlur&&s.onBlur(e)},Je=function(){E.current&&clearInterval(E.current)},Qe=function(){Ve(ze(s.value));var e=Ge(s.value);null!==s.value&&s.value!==e&&$e(null,e)},Xe=function(){return C.current};e.useImperativeHandle(f,(function(){return{props:s,getFormatter:Xe,getElement:function(){return R.current},getInput:function(){return S.current}}})),e.useEffect((function(){a.combinedRefs(S,s.inputRef)}),[S,s.inputRef]),n((function(){$();var e=Ge(s.value);null!==s.value&&s.value!==e&&$e(null,e)})),t((function(){$(),Qe()}),[s.locale,s.localeMatcher,s.mode,s.currency,s.currencyDisplay,s.useGrouping,s.minFractionDigits,s.maxFractionDigits,s.suffix,s.prefix]),t((function(){Qe()}),[s.value]);var Ze,en,nn=function(){var n=c("p-inputnumber-button p-inputnumber-button-up p-button p-button-icon-only p-component",{"p-disabled":s.disabled},s.incrementButtonClassName),t=c("p-button-icon",s.incrementButtonIcon);return e.createElement("button",{type:"button",className:n,onMouseLeave:oe,onMouseDown:ae,onMouseUp:ce,onKeyDown:fe,onKeyUp:se,onTouchStart:le,onTouchEnd:ie,disabled:s.disabled,tabIndex:-1},e.createElement("span",{className:t}),e.createElement(u,null))},tn=function(){var n=c("p-inputnumber-button p-inputnumber-button-down p-button p-button-icon-only p-component",{"p-disabled":s.disabled},s.decrementButtonClassName),t=c("p-button-icon",s.decrementButtonIcon);return e.createElement("button",{type:"button",className:n,onMouseLeave:ve,onMouseDown:me,onMouseUp:ge,onKeyDown:be,onKeyUp:ye,onTouchStart:pe,onTouchEnd:de,disabled:s.disabled,tabIndex:-1},e.createElement("span",{className:t}),e.createElement(u,null))},rn=a.isNotEmpty(s.tooltip),un=a.findDiffKeys(s,w.defaultProps),ln=a.reduceKeys(un,i.DATA_PROPS),an=a.reduceKeys(un,i.ARIA_PROPS),cn=c("p-inputnumber p-component p-inputwrapper",{"p-inputwrapper-filled":null!=s.value&&s.value.toString().length>0,"p-inputwrapper-focus":D,"p-inputnumber-buttons-stacked":U,"p-inputnumber-buttons-horizontal":V,"p-inputnumber-buttons-vertical":_},s.className),on=function(){var n=c("p-inputnumber-input",s.inputClassName),t=_e(s.value);return e.createElement(r,o({ref:S,id:s.inputId,style:s.inputStyle,role:"spinbutton",className:n,defaultValue:t,type:s.type,size:s.size,tabIndex:s.tabIndex,inputMode:q,maxLength:s.maxLength,disabled:s.disabled,required:s.required,pattern:s.pattern,placeholder:s.placeholder,readOnly:s.readOnly,name:s.name,autoFocus:s.autoFocus,onKeyDown:xe,onKeyPress:Ie,onInput:he,onClick:je,onBlur:Ye,onFocus:He,onPaste:we,min:s.min,max:s.max,"aria-valuemin":s.min,"aria-valuemax":s.max,"aria-valuenow":s.value},an,ln))}(),sn=(Ze=s.showButtons&&nn(),en=s.showButtons&&tn(),U?e.createElement("span",{className:"p-inputnumber-button-group"},Ze,en):e.createElement(e.Fragment,null,Ze,en));return e.createElement(e.Fragment,null,e.createElement("span",o({ref:R,id:s.id,className:cn,style:s.style},un),on,sn),rn&&e.createElement(l,o({target:R,content:s.tooltip},s.tooltipOptions)))})));w.displayName="InputNumber",w.defaultProps={__TYPE:"InputNumber",allowEmpty:!0,ariaLabelledBy:null,autoFocus:!1,buttonLayout:"stacked",className:null,currency:void 0,currencyDisplay:void 0,decrementButtonClassName:null,decrementButtonIcon:"pi pi-angle-down",disabled:!1,format:!0,id:null,incrementButtonClassName:null,incrementButtonIcon:"pi pi-angle-up",inputClassName:null,inputId:null,inputMode:null,inputRef:null,inputStyle:null,locale:void 0,localeMatcher:void 0,max:null,maxFractionDigits:void 0,min:null,minFractionDigits:void 0,mode:"decimal",name:null,onBlur:null,onChange:null,onFocus:null,onKeyDown:null,onValueChange:null,pattern:null,placeholder:null,prefix:null,readOnly:!1,required:!1,showButtons:!1,size:null,step:1,style:null,suffix:null,tabIndex:null,tooltip:null,tooltipOptions:null,type:"text",useGrouping:!0,value:null};export{w as InputNumber};