A password input made with vuetify
https://pytness.github.io/vuetify-password-input/
$ npm install vuetify-password-input
# Password strenght fucntion
$ npm install zxcvbn
plugins/vuetify-password-input.ts
import Vue from 'vue'
import PasswordInputPlugin from 'vuetify-password-input'
import { VTextField } from 'vuetify/lib'
Vue.use(PasswordInputPlugin, {
components: { VTextField }
});
export default PasswordInputPlugin
App.vue
<template>
<v-main>
<v-container>
<v-row>
<v-col cols="12" md="4">
<v-password-input
v-model="password"
toggleable
counter
show_strength
:strength_function="calc_strength"
:rules="[min_rules]"
/>
</v-col>
</v-row>
</v-container>
</v-main>
</template>
<script lang="ts">
import {
Component,
Vue
} from 'vue-property-decorator';
import zxcvbn from 'zxcvbn'
@Component({})
export default class App extends Vue {
public password: string = '';
public min_rule(value: string): boolean | string {
return value.length > 8 || 'Password must be at least 8 characters long';
}
public calc_strength(value: string) {
return zxcvbn(value).score;
}
}
</script>
-
toggleable: boolean
: Enables password visibility toggling iftrue
. -
loading: boolean
: Enables loading animation. Has priority overshow_strength
. -
show_strength: boolean
: Displays a 4-segment bar in theprogress
slot iftrue
. Needsstrength_function
to work. -
strength_function: (password: string) => 0, 1, 2, 3, 4
: A function that returns a strength value for a given password. If this function isasync
, theloading
property will be set totrue
while it executes. -
append-icon: string
: Passed tov-text-field
by default unlesstoggleable
istrue
, in which case this will be overriden bymdi-eye/mdi-eye-off
.
Any other properties will be handled by the inner v-text-field