2016-07-26 22:55:29 +00:00
|
|
|
<template>
|
2016-07-27 04:55:32 +00:00
|
|
|
<div class="md-input-container" :class="classes">
|
2016-07-26 22:55:29 +00:00
|
|
|
<slot></slot>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<style lang="scss" src="./mdInputContainer.scss"></style>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
let focusedClass = 'md-input-focused';
|
2016-07-27 04:55:32 +00:00
|
|
|
let inlineClass = 'md-input-inline';
|
|
|
|
|
let disabledClass = 'md-input-disabled';
|
2016-07-26 22:55:29 +00:00
|
|
|
let hasValueClass = 'md-has-value';
|
|
|
|
|
|
|
|
|
|
let focusBindFunction;
|
|
|
|
|
let blurBindFunction;
|
2016-07-27 04:55:32 +00:00
|
|
|
let inputBindFunction;
|
2016-07-26 22:55:29 +00:00
|
|
|
|
|
|
|
|
let manageHasValueClass = function(element, parent) {
|
|
|
|
|
if (element.value.length > 0) {
|
|
|
|
|
parent.classList.add(hasValueClass);
|
|
|
|
|
} else {
|
|
|
|
|
parent.classList.remove(hasValueClass);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2016-07-27 04:55:32 +00:00
|
|
|
let manageDisabled = function(disabled, element) {
|
|
|
|
|
if (disabled) {
|
|
|
|
|
element.setAttribute('disabled', 'true');
|
|
|
|
|
} else {
|
|
|
|
|
element.removeAttribute('disabled');
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2016-07-26 22:55:29 +00:00
|
|
|
export default {
|
2016-07-27 04:55:32 +00:00
|
|
|
props: {
|
|
|
|
|
mdInline: Boolean,
|
|
|
|
|
mdDisabled: Boolean
|
|
|
|
|
},
|
|
|
|
|
computed: {
|
|
|
|
|
classes() {
|
|
|
|
|
let cssClasses = [];
|
|
|
|
|
|
|
|
|
|
this.mdInline && cssClasses.push(inlineClass);
|
|
|
|
|
this.mdDisabled && cssClasses.push(disabledClass);
|
|
|
|
|
|
|
|
|
|
return cssClasses.join(' ');
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
watch: {
|
|
|
|
|
mdDisabled(disabled) {
|
|
|
|
|
manageDisabled(disabled, this.input);
|
|
|
|
|
}
|
|
|
|
|
},
|
2016-07-26 22:55:29 +00:00
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
input: false
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
ready() {
|
|
|
|
|
let container = this.$el;
|
|
|
|
|
|
|
|
|
|
this.input = container.querySelector('input');
|
|
|
|
|
|
|
|
|
|
focusBindFunction = function() {
|
|
|
|
|
container.classList.add(focusedClass);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
blurBindFunction = function() {
|
|
|
|
|
container.classList.remove(focusedClass);
|
|
|
|
|
manageHasValueClass(this, container);
|
|
|
|
|
};
|
|
|
|
|
|
2016-07-27 04:55:32 +00:00
|
|
|
inputBindFunction = function() {
|
|
|
|
|
manageHasValueClass(this, container);
|
|
|
|
|
};
|
|
|
|
|
|
2016-07-26 22:55:29 +00:00
|
|
|
this.input.addEventListener('focus', focusBindFunction);
|
|
|
|
|
this.input.addEventListener('blur', blurBindFunction);
|
2016-07-27 04:55:32 +00:00
|
|
|
this.input.addEventListener('input', inputBindFunction);
|
2016-07-26 22:55:29 +00:00
|
|
|
|
|
|
|
|
manageHasValueClass(this.input, container);
|
2016-07-27 04:55:32 +00:00
|
|
|
manageDisabled(this.mdDisabled, this.input);
|
2016-07-27 05:57:02 +00:00
|
|
|
},
|
|
|
|
|
beforeDestroy() {
|
|
|
|
|
this.input.removeEventListener('focus', focusBindFunction);
|
|
|
|
|
this.input.removeEventListener('blur', blurBindFunction);
|
|
|
|
|
this.input.removeEventListener('input', inputBindFunction);
|
2016-07-26 22:55:29 +00:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
</script>
|