phone-mask-uz
Version:
A flexible React component for formatting and validating Uzbekistan phone numbers
3 lines (2 loc) • 2.5 kB
JavaScript
import r,{forwardRef as e,useRef as n,useState as o,useEffect as t,useCallback as a}from"react";var p=function(){return p=Object.assign||function(r){for(var e,n=1,o=arguments.length;n<o;n++)for(var t in e=arguments[n])Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r},p.apply(this,arguments)};"function"==typeof SuppressedError&&SuppressedError;var l=function(r){var e=r.replace(/[^+\d]/g,"");if(!e.startsWith("+998"))return"+998 ";var n=e.slice(4).replace(/\s/g,""),o=[n.slice(0,2),n.slice(2,5),n.slice(5,7),n.slice(7,9)];return"+998 ".concat(o.filter(Boolean).join(" "))},i=function(r){var e=r.replace(/\D/g,"");return 12===e.length&&e.startsWith("998")},s=e((function(e,i){var s=e.value,c=void 0===s?"":s,u=e.onChange,f=e.error,v=e.showError,d=void 0===v||v,h=e.className,m=void 0===h?"":h,g=e.disabled,y=void 0!==g&&g,b=e.inputComponent,O=e.inputProps,w=void 0===O?{}:O,P=e.wrapperComponent,_=e.wrapperProps,j=void 0===_?{}:_,C=e.placeholder,E=void 0===C?"+998 __ ___ __ __":C,N=function(r,e){var n={};for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&e.indexOf(o)<0&&(n[o]=r[o]);if(null!=r&&"function"==typeof Object.getOwnPropertySymbols){var t=0;for(o=Object.getOwnPropertySymbols(r);t<o.length;t++)e.indexOf(o[t])<0&&Object.prototype.propertyIsEnumerable.call(r,o[t])&&(n[o[t]]=r[o[t]])}return n}(e,["value","onChange","error","showError","className","disabled","inputComponent","inputProps","wrapperComponent","wrapperProps","placeholder"]),S=n(null),W=o(l(c)),x=W[0],B=W[1],D=o(!1),F=D[0],I=D[1],k=o(!0),q=k[0],z=k[1],A=function(r){var e=r.replace(/\D/g,"");return 12===e.length&&e.startsWith("998")};t((function(){var r=l(c);B(r),z(A(r))}),[c]);var G=a((function(r){var e=r.target.value;if(e.startsWith("+998")){var n=l(e),o=A(n);B(n),z(o),u&&u(n,o)}}),[u]),H=function(){I(!0),x&&"+998"!==x||(B("+998"),u&&u("+998",!1))},J=function(){I(!1),"+998"===x&&(B(""),u&&u("",!1))},K=a((function(){var r=["phone-input"];return m&&r.push(m),F&&r.push("focused"),!q&&d&&r.push("error"),r.join(" ")}),[m,F,q,d]),L=b?r.createElement(b,p({ref:i||S,value:x,onChange:G,onFocus:H,onBlur:J,disabled:y,className:K(),placeholder:E},w,N)):r.createElement("input",p({ref:i||S,type:"tel",value:x,onChange:G,onFocus:H,onBlur:J,disabled:y,placeholder:E,className:K()},N));return P?r.createElement(P,p({},j,{error:d?f:void 0}),L):L}));s.displayName="PhoneInput";export{s as PhoneInput,s as default,i as isValidPhoneNumber,l as normalizePhoneNumber};
//# sourceMappingURL=index.esm.js.map