@nextcloud/vue
Version:
Nextcloud vue components
2 lines (1 loc) • 2.85 kB
JavaScript
"use strict";const r=require("vue-material-design-icons/Eye.vue"),a=require("vue-material-design-icons/EyeOff.vue"),i=require("./NcInputField.cjs"),n=require("debounce"),l=require("@nextcloud/axios"),o=require("@nextcloud/initial-state"),d=require("@nextcloud/router"),s=require("../chunks/l10n-46d0c1c0.cjs"),u=require("../chunks/logger-01af1a78.cjs"),p=require("../chunks/_plugin-vue2_normalizer-764a4c12.cjs"),c={name:"NcPasswordField",components:{NcInputField:i,Eye:r,EyeOff:a},inheritAttrs:!1,props:{...i.props,helperText:{type:String,default:""},checkPasswordStrength:{type:Boolean,default:!1},minlength:{type:Number,default:0},maxlength:{type:Number,default:null},showTrailingButton:{type:Boolean,default:!0}},emits:["valid","invalid","update:value"],data(){return{isPasswordHidden:!0,internalHelpMessage:"",passwordPolicy:o.loadState("core","capabilities",{}).password_policy||null,isValid:null}},computed:{computedError(){return this.error||this.isValid===!1},computedSuccess(){return this.success||this.isValid===!0},computedHelperText(){return this.helperText.length>0?this.helperText:this.internalHelpMessage},rules(){const{minlength:e,passwordPolicy:t}=this;return{minlength:e!=null?e:t==null?void 0:t.minLength}},trailingButtonLabelPassword(){return this.isPasswordHidden?s.t("Show password"):s.t("Hide password")}},watch:{value(e){if(this.checkPasswordStrength){if(this.passwordPolicy===null)return;this.passwordPolicy&&this.checkPassword(e)}}},methods:{focus(){this.$refs.inputField.focus()},select(){this.$refs.inputField.select()},handleInput(e){this.$emit("update:value",e.target.value)},togglePasswordVisibility(){this.isPasswordHidden=!this.isPasswordHidden},checkPassword:n(async function(e){try{const{data:t}=await l.post(d.generateOcsUrl("apps/password_policy/api/v1/validate"),{password:e});if(this.isValid=t.ocs.data.passed,t.ocs.data.passed){this.internalHelpMessage=s.t("Password is secure"),this.$emit("valid");return}this.internalHelpMessage=t.ocs.data.reason,this.$emit("invalid")}catch(t){u.logger.error("Password policy returned an error",t)}},500)}};var h=function(){var e=this,t=e._self._c;return t("NcInputField",e._g(e._b({ref:"inputField",attrs:{type:e.isPasswordHidden?"password":"text","show-trailing-button":e.showTrailingButton&&!0,"trailing-button-label":e.trailingButtonLabelPassword,"helper-text":e.computedHelperText,error:e.computedError,success:e.computedSuccess,minlength:e.rules.minlength},on:{"trailing-button-click":e.togglePasswordVisibility,input:e.handleInput},scopedSlots:e._u([{key:"trailing-button-icon",fn:function(){return[e.isPasswordHidden?t("Eye",{attrs:{size:18}}):t("EyeOff",{attrs:{size:18}})]},proxy:!0}])},"NcInputField",{...e.$attrs,...e.$props},!1),e.$listeners),[e._t("default")],2)},w=[],g=p.normalizeComponent(c,h,w,!1,null,null,null,null);const m=g.exports;module.exports=m;