import { computed } from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.0.2/vue.esm-browser.js';
import { getWrapClass } from 'https://wws.jp/_export/code/vuejs/vue3/form_utils?codeblock=0';
const TextareaForm = {
template: `
<div :class="computedControlWrapperClasses" :style="controlWrapperStyles">
<textarea class="form-control"
:class="controlClasses"
:style="controlStyles"
:value="value"
v-bind="$attrs"
@input="updateValue($event.target.value)"
>
</textarea>
<div :class="computedMessageWrapperClasses" :style="messageWrapperStyles">
<template v-for="msg in errors">
<span>{{ msg }}</span><br>
</template>
</div>
</div>
`,
props: {
value: { type: String },
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 updateValue(v) {
context.emit('update:value', v)
}
return {
computedControlWrapperClasses,
computedMessageWrapperClasses,
updateValue
}
}
};
export default TextareaForm;