====== Vue.js 3.x LabeledCheckboxForm コンポーネント ====== ===== 要求 ===== * Checkbox タグのラベル付きコンポーネント * v-model 対応 * 再利用可能なコンポーネントとする。 ===== コード ===== import LabeledForm from '/_export/code/vuejs/vue3/labeled_form?codeblock=0'; import CheckboxForm from '/_export/code/vuejs/vue3/checkbox_form?codeblock=0'; const LabeledCheckboxForm = { template: ` `, components: { labeledForm: LabeledForm, checkboxForm: CheckboxForm }, props: { value: { type: Array }, options: { type: Array, default: [] }, errors: { type: Array, default: [] }, labelText: { type: String }, formWrapperClasses: { type: Array, default: [] }, formWrapperStyles: { type: Object, default: {} }, labelWrapperClasses: { type: Array, default: [] }, labelWrapperStyles: { type: Object, default: {} }, controlWrapperClasses: { type: Array, default: [] }, controlWrapperStyles: { type: Object, default: {} }, controlClasses: { type: Array, default: [] }, controlStyles: { type: Object, default: {} }, optionClasses: { type: Array }, optionStyles: { type: Object }, messageWrapperClasses: { type: Array, default: [] }, messageWrapperStyles: { type: Object, default: {} }, formErrorClass: { type: String, default: 'has-error' }, labelErrorClass: { type: String, default: 'text-danger' }, controlErrorClass: { type: String, default: 'is-invalid' }, messageErrorClass: { type: String, default: 'text-danger' }, }, setup(props, context) { function updateValue(v) { context.emit('update:value', v) } return { updateValue } } }; export default LabeledCheckboxForm; ===== Props ===== ==== value ==== * type: Array ==== options ==== * type: Array * default: [] ==== errors ==== * type: Array * default: [] ==== labelText ==== * type: String ==== formWrapperClasses ==== * type: Array * default: [] ==== formWrapperStyles ==== * type: Object * default: {} ==== labelWrapperClasses ==== * type: Array * default: [] ==== labelWrapperStyles ==== * type: Object * default: { paddingTop: '7px' } ==== 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' ==== formErrorClass ==== * type: String * default: 'has-error' ==== labelErrorClass ==== * type: String * default: 'text-danger' ===== Events ===== ===== Demo ===== ==== テーブルライクなレイアウト ====