Refactor to use defineModel

This commit is contained in:
Elia Bieri 2024-09-19 15:49:34 +02:00
parent f2c7c48e84
commit b44bd048ee
2 changed files with 27 additions and 55 deletions

View File

@ -1,23 +1,9 @@
<script setup lang="ts"> <script setup lang="ts">
import { t } from "i18next"; import { t } from "i18next";
import { computed } from "vue";
const props = defineProps<{ const model = defineModel<{
modelValue: {
payment_method: string; payment_method: string;
}; }>({ required: true });
}>();
const emit = defineEmits(["update:modelValue"]);
const model = computed({
get() {
return props.modelValue;
},
set(value) {
emit("update:modelValue", value);
},
});
const paymentMethods = [ const paymentMethods = [
{ value: "credit_card", label: t("a.Debit-/Kreditkarte/Twint") }, { value: "credit_card", label: t("a.Debit-/Kreditkarte/Twint") },
@ -42,7 +28,7 @@ const paymentMethods = [
</div> </div>
</div> </div>
<div v-if="props.modelValue.payment_method === 'cembra_byjuno'" class="col-span-full"> <div v-if="model.payment_method === 'cembra_byjuno'" class="col-span-full">
<p class="mt-4"> <p class="mt-4">
{{ $t("shop.paymentCembraByjunoMessage") }} {{ $t("shop.paymentCembraByjunoMessage") }}
</p> </p>

View File

@ -2,10 +2,8 @@
import ItDatePicker from "@/components/ui/ItDatePicker.vue"; import ItDatePicker from "@/components/ui/ItDatePicker.vue";
import { useEntities } from "@/services/entities"; import { useEntities } from "@/services/entities";
import "@vuepic/vue-datepicker/dist/main.css"; import "@vuepic/vue-datepicker/dist/main.css";
import { computed } from "vue";
const props = defineProps<{ const model = defineModel<{
modelValue: {
first_name: string; first_name: string;
last_name: string; last_name: string;
street: string; street: string;
@ -17,21 +15,9 @@ const props = defineProps<{
phone_number: string; phone_number: string;
birth_date: string; birth_date: string;
}; }>({ required: true });
}>();
const emit = defineEmits(["update:modelValue"]);
const { countries } = useEntities(); const { countries } = useEntities();
const address = computed({
get() {
return props.modelValue;
},
set(value) {
emit("update:modelValue", value);
},
});
</script> </script>
<template> <template>
@ -43,7 +29,7 @@ const address = computed({
<div class="mt-2"> <div class="mt-2">
<input <input
id="first-name" id="first-name"
v-model="address.first_name" v-model="model.first_name"
type="text" type="text"
name="first-name" name="first-name"
required required
@ -60,7 +46,7 @@ const address = computed({
<div class="mt-2"> <div class="mt-2">
<input <input
id="last-name" id="last-name"
v-model="address.last_name" v-model="model.last_name"
type="text" type="text"
name="last-name" name="last-name"
required required
@ -80,7 +66,7 @@ const address = computed({
<div class="mt-2"> <div class="mt-2">
<input <input
id="street-address" id="street-address"
v-model="address.street" v-model="model.street"
type="text" type="text"
required required
name="street-address" name="street-address"
@ -100,7 +86,7 @@ const address = computed({
<div class="mt-2"> <div class="mt-2">
<input <input
id="street-number" id="street-number"
v-model="address.street_number" v-model="model.street_number"
name="street-number" name="street-number"
type="text" type="text"
autocomplete="street-number" autocomplete="street-number"
@ -119,7 +105,7 @@ const address = computed({
<div class="mt-2"> <div class="mt-2">
<input <input
id="postal-code" id="postal-code"
v-model="address.postal_code" v-model="model.postal_code"
type="text" type="text"
required required
name="postal-code" name="postal-code"
@ -136,7 +122,7 @@ const address = computed({
<div class="mt-2"> <div class="mt-2">
<input <input
id="city" id="city"
v-model="address.city" v-model="model.city"
type="text" type="text"
name="city" name="city"
required required
@ -153,7 +139,7 @@ const address = computed({
<div class="mt-2"> <div class="mt-2">
<select <select
id="country" id="country"
v-model="address.country_code" v-model="model.country_code"
required required
name="country" name="country"
autocomplete="country-name" autocomplete="country-name"
@ -170,14 +156,14 @@ const address = computed({
</div> </div>
</div> </div>
<div v-if="address.payment_method === 'cembra_byjuno'" class="col-span-full"> <div v-if="model.payment_method === 'cembra_byjuno'" class="col-span-full">
<label for="phone" class="block text-sm font-medium leading-6 text-gray-900"> <label for="phone" class="block text-sm font-medium leading-6 text-gray-900">
{{ $t("a.Telefonnummer") }} {{ $t("a.Telefonnummer") }}
</label> </label>
<div class="mt-2"> <div class="mt-2">
<input <input
id="phone" id="phone"
v-model="address.phone_number" v-model="model.phone_number"
type="text" type="text"
name="phone" name="phone"
autocomplete="phone-number" autocomplete="phone-number"
@ -186,12 +172,12 @@ const address = computed({
</div> </div>
</div> </div>
<div v-if="address.payment_method === 'cembra_byjuno'" class="col-span-full"> <div v-if="model.payment_method === 'cembra_byjuno'" class="col-span-full">
<label for="birth-date" class="block text-sm font-medium leading-6 text-gray-900"> <label for="birth-date" class="block text-sm font-medium leading-6 text-gray-900">
{{ $t("a.Geburtsdatum") }} {{ $t("a.Geburtsdatum") }}
</label> </label>
<div class="mt-2"> <div class="mt-2">
<ItDatePicker v-model="address.birth_date"></ItDatePicker> <ItDatePicker v-model="model.birth_date"></ItDatePicker>
</div> </div>
</div> </div>
</div> </div>