atst/js/components/multi_checkbox_input.js
2019-01-03 16:12:40 -05:00

59 lines
1.3 KiB
JavaScript

import otherinput from '../components/other_input'
import optionsinput from '../components/options_input'
import textinput from '../components/text_input'
export default {
name: 'multicheckboxinput',
components: {
otherinput,
optionsinput,
textinput,
},
props: {
name: String,
initialErrors: {
type: Array,
default: () => []
},
initialValue: {
type: Array,
default: () => []
}
},
data: function () {
const showError = (this.initialErrors && this.initialErrors.length) || false
return {
showError: showError,
showValid: !showError && !!this.initialValue,
validationError: this.initialErrors.join(' '),
otherChecked: this.initialValue.includes("other") ? true : this.otherChecked
}
},
mounted: function () {
for (let child of this.$el.firstChild.lastElementChild.children) {
if (this.initialValue.includes(child.firstChild.value)) {
child.firstChild.checked = true
}
}
},
methods: {
onInput: function (e) {
this.$root.$emit('field-change', {
value: e.target.value,
name: this.name
})
this.showError = false
this.showValid = true
},
otherToggle: function() {
this.otherChecked = !this.otherChecked
}
}
}