<template> <form id="subedit" class="p-3 grid gap-3" @submit.prevent="submit"> <save-button form="subedit"></save-button> <box heading="Beitrag"> <div class="grid gap-4 sm:grid-cols-2"> <f-text id="name" v-model="inner.name" label="Name" size="sm" required></f-text> <f-select id="fee_id" name="fee_id" :options="fees" v-model="inner.fee_id" label="Nami-Beitrag" size="sm" required ></f-select> </div> </box> <box heading="Positionen"> <div class="flex flex-col space-y-4"> <div v-for="(pos, index) in inner.children" :key="index" class="flex space-x-2 items-end"> <f-text :id="`name-${index}`" v-model="pos.name" label="Name" size="sm" required></f-text> <f-text :id="`amount-${index}`" v-model="pos.amount" label="Beitrag" size="sm" mode="area" required ></f-text> <a href="#" @click.prevent="inner.children.splice(index, 1)" class="btn btn-sm btn-danger icon flex-none" > <svg-sprite src="trash" class="w-5 h-5"></svg-sprite> </a> </div> <a href="#" @click.prevent="inner.children.push({name: '', amount: 0})" class="btn btn-sm flex btn-primary flex self-start mt-4" > <svg-sprite src="plus" class="w-5 h-5"></svg-sprite> Position hinzufügen </a> </div> </box> </form> </template> <script> export default { data: function () { return { inner: {}, }; }, props: { data: {}, fees: {}, mode: {}, }, methods: { submit() { this.mode === 'create' ? this.$inertia.post(`/subscription`, this.inner) : this.$inertia.patch(`/subscription/${this.inner.id}`, this.inner); }, }, created() { this.inner = this.data; }, }; </script>