13
13
</div >
14
14
15
15
<!-- multiline case-->
16
- <div div ref =" root" :class =" rootClasses" v-else-if =" multiline" >
17
- <textarea ref =" input" :class =" inputClasses"
16
+ <div ref =" root" :class =" rootClasses" v-else-if =" multiline" >
17
+ <textarea ref =" input" :class =" inputClasses" :id = " _uid "
18
18
:value =" value" @input =" updateValue($event.target.value)"
19
19
:rows =" rows" :cols =" cols"
20
20
:minlength =" minlength" :maxlength =" maxlength"
21
21
:disabled =" disabled" :aria-controls =" 'help-'+_uid"
22
22
></textarea >
23
- <label ref =" label" :class =" labelClassesUpgraded " :for =" _uid" v-if =" label" >
23
+ <label ref =" label" :class =" labelClasses " :for =" _uid" v-if =" label" >
24
24
{{ label }}
25
25
</label >
26
26
</div >
43
43
:required =" required" :size =" size"
44
44
:minlength =" minlength" :maxlength =" maxlength"
45
45
:disabled =" disabled" :aria-controls =" 'help-'+_uid" >
46
- <label ref =" label" :class =" labelClassesUpgraded " :for =" _uid" v-if =" label" >
46
+ <label ref =" label" :class =" labelClasses " :for =" _uid" v-if =" label" >
47
47
{{ label }}
48
48
</label >
49
+ <div ref =" bottom" :class =" bottomClasses" ></div >
49
50
</div >
50
51
52
+ <!-- help text -->
51
53
<p ref =" help" :id =" 'help-'+_uid" :class =" helpClasses"
52
54
aria-hidden =" true" v-if =" helptext" >
53
55
{{ helptext }}
58
60
59
61
<script lang="babel">
60
62
import MDCTextfieldFoundation from ' @material/textfield/foundation'
63
+ import {RippleBase } from ' ../util'
61
64
62
65
export default {
63
66
props: {
@@ -70,6 +73,7 @@ export default {
70
73
.includes (value)
71
74
}
72
75
},
76
+ ' dense' : Boolean ,
73
77
' label' : String ,
74
78
' helptext' : String ,
75
79
' helptext-persistent' : Boolean ,
@@ -90,15 +94,20 @@ export default {
90
94
rootClasses: {
91
95
' mdc-textfield' : true ,
92
96
' mdc-textfield--upgraded' : true ,
97
+ ' mdc-textfield--disabled' : this .disabled ,
98
+ ' mdc-textfield--dense' : this .dense ,
93
99
' mdc-textfield--fullwidth' : this .fullwidth ,
94
- ' mdc-textfield--multiline ' : this .multiline
100
+ ' mdc-textfield--textarea ' : this .multiline
95
101
},
96
102
inputClasses: {
97
103
' mdc-textfield__input' : true
98
104
},
99
105
labelClasses: {
100
106
' mdc-textfield__label' : true
101
107
},
108
+ bottomClasses: {
109
+ ' mdc-textfield__bottom-line' : true
110
+ },
102
111
helpClasses: {
103
112
' mdc-textfield-helptext' : true ,
104
113
' mdc-textfield-helptext--persistent' : this .helptextPersistent ,
@@ -132,6 +141,21 @@ export default {
132
141
removeClassFromLabel : (className ) => {
133
142
this .$delete (this .labelClasses , className)
134
143
},
144
+ setIconAttr : (/* name: string, value: string */ ) => {},
145
+ eventTargetHasClass : (target , className ) => target .classList .contains (className),
146
+ registerTextFieldInteractionHandler : (evtType , handler ) => {
147
+ this .$refs .root .addEventListener (evtType, handler)
148
+ },
149
+ deregisterTextFieldInteractionHandler : (evtType , handler ) => {
150
+ this .$refs .root .removeEventListener (evtType, handler)
151
+ },
152
+ notifyIconAction : () => {},
153
+ addClassToBottomLine : (className ) => {
154
+ this .$set (this .bottomClasses , className, true )
155
+ },
156
+ removeClassFromBottomLine : (className ) => {
157
+ this .$delete (this .bottomClasses , className)
158
+ },
135
159
addClassToHelptext : (className ) => {
136
160
this .$set (this .helpClasses , className, true )
137
161
},
@@ -142,29 +166,32 @@ export default {
142
166
return this .$refs .help &&
143
167
this .$refs .help .classList .contains (className)
144
168
},
169
+ registerInputInteractionHandler : (evtType , handler ) => {
170
+ this .$refs .input .addEventListener (evtType, handler)
171
+ },
172
+ deregisterInputInteractionHandler : (evtType , handler ) => {
173
+ this .$refs .input .removeEventListener (evtType, handler)
174
+ },
145
175
registerInputFocusHandler : (handler ) => {
146
176
this .$refs .input .addEventListener (' focus' , handler)
147
177
},
148
178
deregisterInputFocusHandler : (handler ) => {
149
179
this .$refs .input .removeEventListener (' focus' , handler)
150
180
},
151
- registerInputBlurHandler : (handler ) => {
152
- this .$refs .input .addEventListener (' blur' , handler)
153
- },
154
- deregisterInputBlurHandler : (handler ) => {
155
- this .$refs .input .removeEventListener (' blur' , handler)
156
- },
157
- registerInputInputHandler : (handler ) => {
158
- this .$refs .input .addEventListener (' input' , handler)
159
- },
160
- deregisterInputInputHandler : (handler ) => {
161
- this .$refs .input .removeEventListener (' input' , handler)
181
+ registerTransitionEndHandler : (handler ) => {
182
+ if (this .$refs .bottom ) {
183
+ this .$refs .bottom .addEventListener (' transitionend' , handler)
184
+ }
162
185
},
163
- registerInputKeydownHandler : (handler ) => {
164
- this .$refs .input .addEventListener (' keydown' , handler)
186
+ deregisterTransitionEndHandler : (handler ) => {
187
+ if (this .$refs .bottom ) {
188
+ this .$refs .bottom .removeEventListener (' transitionend' , handler)
189
+ }
165
190
},
166
- deregisterInputKeydownHandler : (handler ) => {
167
- this .$refs .input .removeEventListener (' keydown' , handler)
191
+ setBottomLineAttr : (name , value ) => {
192
+ if (this .$refs .bottom ) {
193
+ this .$refs .bottom .setAttribute (name, value)
194
+ }
168
195
},
169
196
setHelptextAttr : (name , value ) => {
170
197
if (this .$refs .help ) {
@@ -178,12 +205,22 @@ export default {
178
205
},
179
206
getNativeInput : () => {
180
207
return this .$refs .input
181
- }
208
+ },
182
209
})
183
210
this .foundation .init ()
211
+
212
+ if (this .textbox ) {
213
+ this .ripple = new RippleBase (this )
214
+ this .ripple .init ()
215
+ }
216
+
217
+
184
218
},
185
219
beforeDestroy () {
186
220
this .foundation .destroy ()
221
+ if (this .ripple ) {
222
+ this .ripple .destroy ()
223
+ }
187
224
}
188
225
}
189
226
</script >
0 commit comments