====== Vue.js 3.x TwoInputsForm コンポーネント ====== ===== 要求 ===== * 2 つの text input を実装するエラーメッセージ表示付きコンポーネント * v-model 対応 ===== コード ===== import { computed } from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.0.11/vue.esm-browser.js'; import { getWrapClass } from 'https://wws.jp/_export/code/vuejs/vue3/form_utils?codeblock=0'; const TwoInputsForm = { template: `
`, props: { type: { type: String, default: 'text' }, firstValue: { type: String, default: '' }, secondValue: { type: String, default: '' }, firstErrors: { type: Array, default: [] }, secondErrors: { 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' }, }, emits: ['update:firstValue', 'update:lastValue'], setup(props, context) { const computedFirstControlWrapperClasses = computed(() => { return getWrapClass( props.firstErrors, props.controlWrapperClasses, props.controlErrorClass ) }) const computedSecondControlWrapperClasses = computed(() => { return getWrapClass( props.secondErrors, props.controlWrapperClasses, props.controlErrorClass ) }) const computedFirstMessageWrapperClasses = computed(() => { return getWrapClass( props.firstErrors, props.messageWrapperClasses, props.messageErrorClass ) }) const computedSecondMessageWrapperClasses = computed(() => { return getWrapClass( props.secondErrors, props.messageWrapperClasses, props.messageErrorClass ) }) return { computedFirstControlWrapperClasses, computedFirstMessageWrapperClasses, computedSecondControlWrapperClasses, computedSecondMessageWrapperClasses } } }; export default TwoInputsForm;
===== Props ===== ^ Property ^ Type ^ Default ^ Description ^ | **firstValue** | String | | | | **secondValue** | String | | | | **controlWrapperClasses** | Array | [] | select を囲う div タグに反映するクラス | | **controlWrapperStyles** | Object | {} | select を囲う div タグに反映するスタイル | | **controlClasses** | Array | [] | 入力コントロールに反映するクラス | | **controlStyles** | Object | {} | 入力コントロールに反映するスタイル | | **messageWrapperClasses** | Array | [] | エラーメッセージを囲う div タグに反映するクラス | | **firstErrors** | Array | [] | エラーメッセージの配列 | | **secondErrors** | Array | [] | エラーメッセージの配列 | | **controlErrorClass** | String | 'has-error' | コントロールに反映するエラークラス | | **messageErrorClass** | String | 'text-danger' | エラーメッセージに反映するエラークラス | **※ ここで記述されていない number や date, time などに指定可能なプロパティ min, max, step などは $attrs で input タグに自動的にバインドする.** ===== Events ===== ^ Event ^ Value ^ | **update:value** | 選択された値 | ===== Demo =====