49 lines
1.3 KiB
Vue
49 lines
1.3 KiB
Vue
<script setup>
|
|
|
|
import {onMounted, reactive} from "vue";
|
|
import FormWrapper from "components/FormWrapper.vue";
|
|
import {setDefaultData} from "src/composables/form/formHandling";
|
|
import {defaultValues, isRequestPending} from "src/composables/form/props";
|
|
import {isRequired} from "src/composables/form/rules";
|
|
|
|
const formData = reactive({
|
|
id: null,
|
|
callSign: "",
|
|
model: "",
|
|
manufacturer: "",
|
|
description: "",
|
|
photo: null,
|
|
organizationId: null
|
|
});
|
|
|
|
const props = defineProps({
|
|
defaultValues,
|
|
isRequestPending
|
|
});
|
|
|
|
const rules = {
|
|
callSign: [
|
|
v => isRequired(v)
|
|
],
|
|
};
|
|
|
|
onMounted(() => {
|
|
if (Object.keys(props.defaultValues).length > 0)
|
|
setDefaultData(formData, props.defaultValues);
|
|
})
|
|
</script>
|
|
|
|
<template>
|
|
<FormWrapper v-model="formData" :is-request-pending="isRequestPending">
|
|
<q-input type="text" :rules="rules.callSign" v-model="formData.callSign" label="Volací značka"/>
|
|
<q-input type="text" v-model="formData.model" label="Model"/>
|
|
<q-input type="text" v-model="formData.manufacturer" label="Výrobce"/>
|
|
<q-input type="textarea" v-model="formData.description" label="Popis" />
|
|
|
|
|
|
{{ props.defaultValues.photoUrl }}
|
|
<q-img :src="props.defaultValues.photoUrl" v-if="props.defaultValues.photoUrl" />
|
|
<q-file v-model="formData.photo" label="Fotografie" />
|
|
</FormWrapper>
|
|
</template>
|