UNPKG

primereact

Version:

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