Skip to content

Commit eb73b4d

Browse files
khamerraybotha
andauthored
feat: Add $attrs to input field (#39)
* Pass through attributes to <input> element * Update src/components/PasswordStrengthMeter.vue Co-Authored-By: Raymond Botha <[email protected]> Co-authored-by: Raymond Botha <[email protected]>
1 parent 15fb327 commit eb73b4d

File tree

3 files changed

+3256
-1865
lines changed

3 files changed

+3256
-1865
lines changed

src/App.vue

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
<template>
22
<div id="app">
33
<h1>Password Strength Meter</h1>
4-
<password v-model="password" :toggle="true"></password>
4+
5+
<password v-model="password" :toggle="true" />
6+
7+
<password v-model="password" disabled="disabled" placeholder="This input is disabled." />
8+
9+
<password v-model="password" id="custom-id" name="custom_name" />
10+
511
</div>
612
</template>
713

src/components/PasswordStrengthMeter.vue

Lines changed: 8 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,19 @@
55
class="Password__group"
66
>
77
<input
8+
v-bind="$attrs"
89
:type="inputType"
9-
:ref="referanceValue"
10-
:class="[defaultClass, disabled ? disabledClass : '']"
11-
:name="name"
12-
:id="id"
13-
:placeholder="placeholder"
14-
:required="required"
15-
:disabled="disabled"
16-
:autocomplete="autocomplete"
17-
v-bind:value="value"
10+
:ref="referenceValue"
11+
:class="[defaultClass, $attrs.disabled ? disabledClass : '']"
12+
:value="value"
1813
@input="evt => emitValue('input', evt.target.value)"
1914
@blur="evt => emitValue('blur', evt.target.value)"
2015
@focus="evt => emitValue('focus', evt.target.value)"
2116
>
2217
<div class="Password__icons">
2318
<div
2419
v-if="badge"
25-
v-bind:class="[isSecure ? successClass : '', !isSecure && isActive ? errorClass : '' ]"
20+
:class="[isSecure ? successClass : '', !isSecure && isActive ? errorClass : '' ]"
2621
class="Password__badge"
2722
v-cloak
2823
>
@@ -49,8 +44,8 @@
4944
</div>
5045
</div>
5146

52-
<div v-if="showStrengthMeter" v-bind:class="[strengthMeterClass]">
53-
<div v-bind:class="[strengthMeterFillClass]" :data-score="passwordStrength"></div>
47+
<div v-if="showStrengthMeter" :class="[strengthMeterClass]">
48+
<div :class="[strengthMeterFillClass]" :data-score="passwordStrength"></div>
5449
</div>
5550
</div>
5651
</template>
@@ -60,61 +55,13 @@
6055
6156
export default {
6257
props: {
63-
/**
64-
* Input field id
65-
* @type {String}
66-
*/
67-
id: {
68-
type: String,
69-
default: 'password'
70-
},
71-
/**
72-
* Input field placeholder text
73-
* @type {String}
74-
*/
75-
placeholder: {
76-
type: String,
77-
default: 'Please enter your password'
78-
},
79-
/**
80-
* Input field autocomplete
81-
* @type {String}
82-
*/
83-
autocomplete: {
84-
type: String,
85-
default: 'new-password'
86-
},
8758
/**
8859
* Binded value
8960
* @type {Object}
9061
*/
9162
value: {
9263
type: String
9364
},
94-
/**
95-
* Input field name
96-
* @type {String}
97-
*/
98-
name: {
99-
type: String,
100-
default: 'password'
101-
},
102-
/**
103-
* Input field required attribute
104-
* @type {Boolean}
105-
*/
106-
required: {
107-
type: Boolean,
108-
default: true
109-
},
110-
/**
111-
* Input field disabled attribute
112-
* @type {Boolean}
113-
*/
114-
disabled: {
115-
type: Boolean,
116-
default: false
117-
},
11865
/**
11966
* Password min length.
12067
* Right now only visual for the badge
@@ -157,7 +104,7 @@
157104
* Prop to change the
158105
* ref of the input
159106
*/
160-
referanceValue: {
107+
referenceValue: {
161108
type: String,
162109
default: 'input'
163110
},

0 commit comments

Comments
 (0)