import { computed } from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.0.2/vue.esm-browser.js';
import LabeledForm from '/_export/code/vuejs/vue3/labeled_form?codeblock=0';
import TwoInputsForm from '/_export/code/vuejs/vue3/two_inputs_form?codeblock=0';
const LabeledTwoInputsForm = {
template: `
<labeled-form
:errors="errorsCombined"
:label-text="labelText"
:form-wrapper-classes="formWrapperClasses"
:form-wrapper-styles="formWrapperStyles"
:label-wrapper-classes="labelWrapperClasses"
:label-wrapper-styles="labelWrapperStyles"
:form-error-class="formErrorClass"
:label-error-class="labelErrorClass"
>
<template #label v-if="!labelText">
<slot name="label">
</slot>
</template>
<two-inputs-form
v-bind="$attrs"
v-model:first-value="firstValue"
v-model:second-value="secondValue"
@update:first-value="$emit('update:firstValue', $event.target.value)"
@update:second-value="$emit('update:secondValue', $event.target.value)"
:first-errors="firstErrors"
:second-errors="secondErrors"
:control-wrapper-classes="controlWrapperClasses"
:control-wrapper-styles="controlWrapperStyles"
:control-classes="controlClasses"
:control-styles="controlStyles"
:control-error-class="controlErrorClass"
:message-wrapper-classes="messageWrapperClasses"
:message-wrapper-styles="messageWrapperStyles"
:message-error-class="messageErrorClass"
>
</two-inputs-form>
</labeled-form>
`,
components: {
labeledForm: LabeledForm,
twoInputsForm: TwoInputsForm
},
props: {
firstValue: { type: String },
secondValue: { type: String },
firstErrors: { type: Array, default: [] },
secondErrors: { 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: {} },
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) {
const errorsCombined = computed(() => {
return props.firstErrors.concat(props.secondErrors)
})
return { errorsCombined }
}
};
export default LabeledTwoInputsForm;