import { computed } from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.0.2/vue.esm-browser.js';
import { getWrapClass, generalizeOptions } from 'https://wws.jp/_export/code/vuejs/vue3/form_utils?codeblock=0';
const CheckboxForm = {
template: `
<div :class="computedControlWrapperClasses" :style="controlWrapperStyles">
<label>
<input type="checkbox"
:class="controlClasses"
:style="controlStyles"
:checked="value"
@change="onChange"
>
</label>
<div :class="computedMessageWrapperClasses" :style="messageWrapperStyles">
<template v-for="msg in errors">
<span>{{ msg }}</span><br>
</template>
</div>
</div>
`,
props: {
value: { type: Boolean },
errors: { type: Array, default: [] },
controlWrapperClasses: { type: Array, default: [] },
controlWrapperStyles: { type: Object, default: {} },
controlClasses: { type: Array, default: [] },
controlStyles: { type: Object, default: {} },
messageWrapperClasses: { type: Array, default: [] },
messageWrapperStyles: { type: Object, default: {} },
controlErrorClass: { type: String, default: 'has-error' },
messageErrorClass: { type: String, default: 'text-danger' },
},
setup(props, context) {
const computedControlWrapperClasses = computed(() => {
return getWrapClass(
props.errors,
props.controlWrapperClasses,
props.controlErrorClass
)
})
const computedMessageWrapperClasses = computed(() => {
return getWrapClass(
props.errors,
props.messageWrapperClasses,
props.messageErrorClass
)
})
function onChange(event) {
context.emit('update:value', event.target.checked)
}
return {
computedControlWrapperClasses,
computedMessageWrapperClasses,
onChange
}
}
};
export default CheckboxForm;