You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.7 KiB
Vue

<script setup lang="ts">
import { useShoppingListStore } from '../store/shoppingList';
import { ref, reactive, defineProps } from 'vue';
import { useRouter } from 'vue-router';
const store = useShoppingListStore();
const router = useRouter();
const props = defineProps({
item: Object,
});
const isValid = ref(false);
const item = reactive({
name: props.item.name,
price: props.item.price / 100,
user: props.item.user.name,
description: props.item.description,
});
const form = ref(null);
const submit = () => {
console.log(isValid.value)
if (isValid.value === false) return;
props.item.name = item.name;
props.item.price = item.price * 100;
props.item.user = store.users.find(user => user.name === item.user);
props.item.description = item.description;
router.push('/shopping-list');
};
</script>
<template>
<v-form ref="form" v-model="isValid" lazy-validation>
<v-text-field
label="Item Name"
required
v-model="item.name"
validate-on="blur"
:rules="[v => !!v || 'Item is required']"
/>
<v-text-field
label="Price"
suffix="€"
required
v-model="item.price"
validate-on="blur"
:rules="[v => !!v || 'Item is required']"
/>
<v-text-field
label="Description"
required
v-model="item.description"
validate-on="blur"
:rules="[v => !!v || 'Item is required']"
/>
<v-select
label="User"
:items="store.users.map(user => user.name)"
required
v-model="item.user"
validate-on="blur"
:rules="[v => !!v || 'Item is required']"
/>
<v-btn color="primary" @click="submit()">edit item</v-btn>
</v-form>
</template>