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) 6.36 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=!0,u=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(l.push(r.value),!t||l.length!==t);a=!0);}catch(e){u=!0,o=e}finally{try{a||null==n.return||n.return()}finally{if(u)throw o}}return l}}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 v(){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 h(e,t){return d(e)||g(e,t)||w(e,t)||v()}var E=e.memo(e.forwardRef((function(d,g){var y=d.promptLabel||n("passwordPrompt"),w=d.weakLabel||n("weak"),v=d.mediumLabel||n("medium"),b=d.strongLabel||n("strong"),k=h(e.useState(!1),2),R=k[0],x=k[1],S=h(e.useState(null),2),N=S[0],C=S[1],O=h(e.useState(y),2),I=O[0],A=O[1],L=h(e.useState(!1),2),P=L[0],T=L[1],j=h(e.useState(!1),2),M=j[0],z=j[1],F=e.useRef(null),H=e.useRef(null),J=e.useRef(d.inputRef),K=e.useRef(new RegExp(d.mediumRegex)),U=e.useRef(new RegExp(d.strongRegex)),X=M?"text":"password",Z=h(o({target:F,overlay:H,listener:function(e,t){t.valid&&Q()},when:R}),2),B=Z[0],V=Z[1],_=J.current&&J.current.value,D=e.useMemo((function(){return s.isNotEmpty(d.value)||s.isNotEmpty(d.defaultValue)||s.isNotEmpty(_)}),[d.value,d.defaultValue,_]),Y=function(){if(N){var e=null;switch(N.strength){case"weak":e=w;break;case"medium":e=v;break;case"strong":e=b}e&&I!==e&&A(e)}else I!==y&&A(y)},$=function(e){d.feedback&&u.emit("overlay-click",{originalEvent:e,target:F.current})},q=function(){z((function(e){return!e}))},G=function(){Y(),x(!0)},Q=function(){x(!1)},W=function(){c.set("overlay",H.current,t.autoZIndex,t.zIndex.overlay),J.current&&p.alignOverlay(H.current,J.current.parentElement,d.appendTo||t.appendTo)},ee=function(){B(),d.onShow&&d.onShow()},te=function(){V()},ne=function(){c.clear(H.current),d.onHide&&d.onHide()},re=function(e){return U.current.test(e)?3:K.current.test(e)?2:e.length?1:0};e.useImperativeHandle(g,(function(){return{props:d,getElement:function(){return F.current},getOverlay:function(){return H.current},getInput:function(){return J.current}}})),e.useEffect((function(){s.combinedRefs(J,d.inputRef)}),[J,d.inputRef]),e.useEffect((function(){K.current=new RegExp(d.mediumRegex)}),[d.mediumRegex]),e.useEffect((function(){U.current=new RegExp(d.strongRegex)}),[d.strongRegex]),e.useEffect((function(){!D&&p.hasClass(F.current,"p-inputwrapper-filled")&&p.removeClass(F.current,"p-inputwrapper-filled")}),[D]),l((function(){c.clear(H.current)}));var oe,le,ae,ue,ie,se,pe,ce=f("p-password p-component p-inputwrapper",{"p-inputwrapper-filled":D,"p-inputwrapper-focus":P,"p-input-icon-right":d.toggleMask},d.className),fe=f("p-password-input",d.inputClassName),me=s.findDiffKeys(d,E.defaultProps),de=function(){if(d.toggleMask){var t=M?"pi pi-eye-slash":"pi pi-eye",n=e.createElement("i",{className:t,onClick:q});if(d.icon)n=s.getJSXElement(d.icon,{onClick:q,className:t,element:n,props:d});return n}return null}(),ge=(oe=f("p-password-panel p-component",d.panelClassName),ae=(le=N||{strength:"",width:"0%"}).strength,ue=le.width,ie=s.getJSXElement(d.header,d),se=s.getJSXElement(d.footer,d),pe=d.content?s.getJSXElement(d.content,d):e.createElement(e.Fragment,null,e.createElement("div",{className:"p-password-meter"},e.createElement("div",{className:"p-password-strength ".concat(ae),style:{width:ue}})),e.createElement("div",{className:"p-password-info ".concat(ae)},I)),e.createElement(i,{element:e.createElement(r,{nodeRef:H,classNames:"p-connected-overlay",in:R,timeout:{enter:120,exit:100},options:d.transitionOptions,unmountOnExit:!0,onEnter:W,onEntered:ee,onExit:te,onExited:ne},e.createElement("div",{ref:H,className:oe,style:d.panelStyle,onClick:$},ie,pe,se)),appendTo:d.appendTo}));return e.createElement("div",{ref:F,id:d.id,className:ce,style:d.style},e.createElement(a,m({ref:J,id:d.inputId},me,{type:X,className:fe,style:d.inputStyle,onFocus:function(e){T(!0),d.feedback&&G(),d.onFocus&&d.onFocus(e)},onBlur:function(e){T(!1),d.feedback&&Q(),d.onBlur&&d.onBlur(e)},onKeyUp:function(e){var t=e.keyCode||e.which;if(d.feedback){var n=null,r=null;switch(re(e.target.value)){case 1:n=w,r={strength:"weak",width:"33.33%"};break;case 2:n=v,r={strength:"medium",width:"66.66%"};break;case 3:n=b,r={strength:"strong",width:"100%"};break;default:n=y,r=null}C(r),A(n),t&&!R&&G()}d.onKeyUp&&d.onKeyUp(e)},onInput:function(e,t){d.onInput&&d.onInput(e,t),d.onChange||(s.isNotEmpty(e.target.value)?p.addClass(F.current,"p-inputwrapper-filled"):p.removeClass(F.current,"p-inputwrapper-filled"))},tooltip:d.tooltip,tooltipOptions:d.tooltipOptions})),de,ge)})));E.displayName="Password",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};export{E as Password};