Skip to content

Commit 05a93bc

Browse files
committed
feat(textfield): align textfield on mdc 0.22
add dense property
1 parent 9e2aae2 commit 05a93bc

File tree

2 files changed

+59
-21
lines changed

2 files changed

+59
-21
lines changed

components/textfield/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ var vm = new Vue({
4444
| props | Type | default | Description |
4545
|-------|------|---------|-------------|
4646
|`v-model`| String || binds textfield value |
47+
|`dense`| Boolean | | compresses the textfield to make it slightly smaller |
4748
|`label`| String | | hint text |
4849
|`helptext`| String | | help text |
4950
|`helptext-persistent`| Boolean | | whether help text is persistent |

components/textfield/mdc-textfield.vue

Lines changed: 58 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
</div>
1414

1515
<!--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"
1818
:value="value" @input="updateValue($event.target.value)"
1919
:rows="rows" :cols="cols"
2020
:minlength="minlength" :maxlength="maxlength"
2121
:disabled="disabled" :aria-controls="'help-'+_uid"
2222
></textarea>
23-
<label ref="label" :class="labelClassesUpgraded" :for="_uid" v-if="label">
23+
<label ref="label" :class="labelClasses" :for="_uid" v-if="label">
2424
{{ label }}
2525
</label>
2626
</div>
@@ -43,11 +43,13 @@
4343
:required="required" :size="size"
4444
:minlength="minlength" :maxlength="maxlength"
4545
: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">
4747
{{ label }}
4848
</label>
49+
<div ref="bottom" :class="bottomClasses"></div>
4950
</div>
5051

52+
<!--help text -->
5153
<p ref="help" :id="'help-'+_uid" :class="helpClasses"
5254
aria-hidden="true" v-if="helptext">
5355
{{ helptext }}
@@ -58,6 +60,7 @@
5860

5961
<script lang="babel">
6062
import MDCTextfieldFoundation from '@material/textfield/foundation'
63+
import {RippleBase} from '../util'
6164
6265
export default {
6366
props: {
@@ -70,6 +73,7 @@ export default {
7073
.includes(value)
7174
}
7275
},
76+
'dense': Boolean,
7377
'label': String,
7478
'helptext': String,
7579
'helptext-persistent': Boolean,
@@ -90,15 +94,20 @@ export default {
9094
rootClasses: {
9195
'mdc-textfield': true,
9296
'mdc-textfield--upgraded': true,
97+
'mdc-textfield--disabled': this.disabled,
98+
'mdc-textfield--dense': this.dense,
9399
'mdc-textfield--fullwidth': this.fullwidth,
94-
'mdc-textfield--multiline': this.multiline
100+
'mdc-textfield--textarea': this.multiline
95101
},
96102
inputClasses: {
97103
'mdc-textfield__input': true
98104
},
99105
labelClasses: {
100106
'mdc-textfield__label': true
101107
},
108+
bottomClasses: {
109+
'mdc-textfield__bottom-line': true
110+
},
102111
helpClasses: {
103112
'mdc-textfield-helptext': true,
104113
'mdc-textfield-helptext--persistent': this.helptextPersistent,
@@ -132,6 +141,21 @@ export default {
132141
removeClassFromLabel: (className) => {
133142
this.$delete(this.labelClasses, className)
134143
},
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+
},
135159
addClassToHelptext: (className) => {
136160
this.$set(this.helpClasses, className, true)
137161
},
@@ -142,29 +166,32 @@ export default {
142166
return this.$refs.help &&
143167
this.$refs.help.classList.contains(className)
144168
},
169+
registerInputInteractionHandler: (evtType, handler) => {
170+
this.$refs.input.addEventListener(evtType, handler)
171+
},
172+
deregisterInputInteractionHandler: (evtType, handler) => {
173+
this.$refs.input.removeEventListener(evtType, handler)
174+
},
145175
registerInputFocusHandler: (handler) => {
146176
this.$refs.input.addEventListener('focus', handler)
147177
},
148178
deregisterInputFocusHandler: (handler) => {
149179
this.$refs.input.removeEventListener('focus', handler)
150180
},
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+
}
162185
},
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+
}
165190
},
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+
}
168195
},
169196
setHelptextAttr: (name, value) => {
170197
if (this.$refs.help) {
@@ -178,12 +205,22 @@ export default {
178205
},
179206
getNativeInput: () => {
180207
return this.$refs.input
181-
}
208+
},
182209
})
183210
this.foundation.init()
211+
212+
if (this.textbox) {
213+
this.ripple = new RippleBase(this)
214+
this.ripple.init()
215+
}
216+
217+
184218
},
185219
beforeDestroy () {
186220
this.foundation.destroy()
221+
if (this.ripple) {
222+
this.ripple.destroy()
223+
}
187224
}
188225
}
189226
</script>

0 commit comments

Comments
 (0)