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) 6.72 kB
import*as e from"react";import t,{localeOption as n}from"primereact/api";import{CSSTransition as r}from"primereact/csstransition";import{useOverlayListener as o,useUnmountEffect as l}from"primereact/hooks";import{InputText as a}from"primereact/inputtext";import{OverlayService as u}from"primereact/overlayservice";import{Portal as i}from"primereact/portal";import{ObjectUtils as s,DomHandler as p,ZIndexUtils as c,classNames as f}from"primereact/utils";function m(){return m=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},m.apply(this,arguments)}function d(e){if(Array.isArray(e))return e}function g(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,l,a,u=[],i=!0,s=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=l.call(n)).done)&&(u.push(r.value),u.length!==t);i=!0);}catch(e){s=!0,o=e}finally{try{if(!i&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(s)throw o}}return u}}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function w(e,t){if(e){if("string"==typeof e)return y(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}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 v(e,t){return d(e)||g(e,t)||w(e,t)||h()}var E={defaultProps:{__TYPE:"Password",id:null,inputId:null,inputRef:null,promptLabel:null,weakLabel:null,mediumLabel:null,strongLabel:null,mediumRegex:"^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})",strongRegex:"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})",feedback:!0,toggleMask:!1,appendTo:null,header:null,content:null,footer:null,icon:null,tooltip:null,tooltipOptions:null,style:null,className:null,inputStyle:null,inputClassName:null,panelStyle:null,panelClassName:null,transitionOptions:null,onInput:null,onShow:null,onHide:null,children:void 0},getProps:function(e){return s.getMergedProps(e,E.defaultProps)},getOtherProps:function(e){return s.getDiffProps(e,E.defaultProps)}},b=e.memo(e.forwardRef((function(d,g){var y=E.getProps(d),w=y.promptLabel||n("passwordPrompt"),h=y.weakLabel||n("weak"),b=y.mediumLabel||n("medium"),k=y.strongLabel||n("strong"),R=v(e.useState(!1),2),x=R[0],S=R[1],N=v(e.useState(null),2),O=N[0],C=N[1],P=v(e.useState(w),2),I=P[0],A=P[1],j=v(e.useState(!1),2),L=j[0],T=j[1],M=v(e.useState(!1),2),z=M[0],F=M[1],H=e.useRef(null),J=e.useRef(null),U=e.useRef(y.inputRef),X=e.useRef(new RegExp(y.mediumRegex)),Z=e.useRef(new RegExp(y.strongRegex)),B=z?"text":"password",K=v(o({target:H,overlay:J,listener:function(e,t){t.valid&&W()},when:x}),2),V=K[0],_=K[1],D=U.current&&U.current.value,Y=e.useMemo((function(){return s.isNotEmpty(y.value)||s.isNotEmpty(y.defaultValue)||s.isNotEmpty(D)}),[y.value,y.defaultValue,D]),$=function(){if(O){var e=null;switch(O.strength){case"weak":e=h;break;case"medium":e=b;break;case"strong":e=k}e&&I!==e&&A(e)}else I!==w&&A(w)},q=function(e){y.feedback&&u.emit("overlay-click",{originalEvent:e,target:H.current})},G=function(){F((function(e){return!e}))},Q=function(){$(),S(!0)},W=function(){S(!1)},ee=function(){c.set("overlay",J.current,t.autoZIndex,t.zIndex.overlay),U.current&&p.alignOverlay(J.current,U.current.parentElement,y.appendTo||t.appendTo)},te=function(){V(),y.onShow&&y.onShow()},ne=function(){_()},re=function(){c.clear(J.current),y.onHide&&y.onHide()},oe=function(e){return Z.current.test(e)?3:X.current.test(e)?2:e.length?1:0};e.useImperativeHandle(g,(function(){return{props:y,focus:function(){return p.focus(U.current)},getElement:function(){return H.current},getOverlay:function(){return J.current},getInput:function(){return U.current}}})),e.useEffect((function(){s.combinedRefs(U,y.inputRef)}),[U,y.inputRef]),e.useEffect((function(){X.current=new RegExp(y.mediumRegex)}),[y.mediumRegex]),e.useEffect((function(){Z.current=new RegExp(y.strongRegex)}),[y.strongRegex]),e.useEffect((function(){!Y&&p.hasClass(H.current,"p-inputwrapper-filled")&&p.removeClass(H.current,"p-inputwrapper-filled")}),[Y]),l((function(){c.clear(J.current)}));var le,ae,ue,ie,se,pe,ce,fe=f("p-password p-component p-inputwrapper",{"p-inputwrapper-filled":Y,"p-inputwrapper-focus":L,"p-input-icon-right":y.toggleMask},y.className),me=f("p-password-input",y.inputClassName),de=E.getOtherProps(y),ge=function(){if(y.toggleMask){var t=z?"pi pi-eye-slash":"pi pi-eye",n=e.createElement("i",{className:t,onClick:G});if(y.icon)n=s.getJSXElement(y.icon,{onClick:G,className:t,element:n,props:y});return n}return null}(),ye=(le=f("p-password-panel p-component",y.panelClassName,{"p-input-filled":"filled"===t.inputStyle,"p-ripple-disabled":!1===t.ripple}),ue=(ae=O||{strength:"",width:"0%"}).strength,ie=ae.width,se=s.getJSXElement(y.header,y),pe=s.getJSXElement(y.footer,y),ce=y.content?s.getJSXElement(y.content,y):e.createElement(e.Fragment,null,e.createElement("div",{className:"p-password-meter"},e.createElement("div",{className:"p-password-strength ".concat(ue),style:{width:ie}})),e.createElement("div",{className:"p-password-info ".concat(ue)},I)),e.createElement(i,{element:e.createElement(r,{nodeRef:J,classNames:"p-connected-overlay",in:x,timeout:{enter:120,exit:100},options:y.transitionOptions,unmountOnExit:!0,onEnter:ee,onEntered:te,onExit:ne,onExited:re},e.createElement("div",{ref:J,className:le,style:y.panelStyle,onClick:q},se,ce,pe)),appendTo:y.appendTo}));return e.createElement("div",{ref:H,id:y.id,className:fe,style:y.style},e.createElement(a,m({ref:U,id:y.inputId},de,{type:B,className:me,style:y.inputStyle,onFocus:function(e){T(!0),y.feedback&&Q(),y.onFocus&&y.onFocus(e)},onBlur:function(e){T(!1),y.feedback&&W(),y.onBlur&&y.onBlur(e)},onKeyUp:function(e){var t=e.keyCode||e.which;if(y.feedback){var n=null,r=null;switch(oe(e.target.value)){case 1:n=h,r={strength:"weak",width:"33.33%"};break;case 2:n=b,r={strength:"medium",width:"66.66%"};break;case 3:n=k,r={strength:"strong",width:"100%"};break;default:n=w,r=null}C(r),A(n),t&&!x&&Q()}y.onKeyUp&&y.onKeyUp(e)},onInput:function(e,t){y.onInput&&y.onInput(e,t),y.onChange||(s.isNotEmpty(e.target.value)?p.addClass(H.current,"p-inputwrapper-filled"):p.removeClass(H.current,"p-inputwrapper-filled"))},tooltip:y.tooltip,tooltipOptions:y.tooltipOptions})),ge,ye)})));b.displayName="Password";export{b as Password};