th-vue-material
Version:
Material Design for Vue.js
59 lines (58 loc) • 1.33 kB
JavaScript
export default {
props: {
debounce: {
type: Number,
default: 1E3
},
disabled: Boolean,
fetch: {
type: Function
},
filterList: Function,
list: {
type: Array,
default() {
return [];
}
},
minChars: {
type: Number,
default: 1
},
name: String,
prepareResponseData: Function,
printAttribute: {
type: String,
default: 'name'
},
queryParam: {
type: String,
default: 'q'
},
required: Boolean
},
methods: {
onFocus() {
if (this.parentContainer) {
this.parentContainer.isFocused = true;
}
},
onBlur() {
this.parentContainer.isFocused = false;
this.setParentValue();
},
verifyProps() {
if (!this.parentContainer) {
return this.throwErrorDestroy('You should wrap the md-input in a md-input-container');
} else if (this.listIsEmpty && this.filterList) {
return this.throwErrorDestroy('You should use a `filterList` function prop with the `list` prop');
} else if (!this.fetch && this.listIsEmpty) {
return this.throwErrorDestroy('You should use a `fetch` function prop');
}
},
throwErrorDestroy(errorMessage) {
this.$destroy();
throw new Error(errorMessage);
}
}
};