From 2759e22ee0648b69d8007f37f08aa476e3f04c47 Mon Sep 17 00:00:00 2001 From: Cristiano Magro <cristiano.magro@vola.it> Date: Mon, 30 Dec 2024 20:14:37 +0100 Subject: [PATCH] submit form new contact --- 07 - development setup/vue-cli-01-a-new-vue-project/src/main.js | 2 + 07 - development setup/vue-cli-01-a-new-vue-project/src/components/NewFriend.vue | 39 +++++++++++++++++++ 07 - development setup/vue-cli-01-a-new-vue-project/src/App.vue | 61 +++++++++++++++++++++++------- 3 files changed, 87 insertions(+), 15 deletions(-) diff --git a/07 - development setup/vue-cli-01-a-new-vue-project/src/App.vue b/07 - development setup/vue-cli-01-a-new-vue-project/src/App.vue index a9ca593..9859157 100644 --- a/07 - development setup/vue-cli-01-a-new-vue-project/src/App.vue +++ b/07 - development setup/vue-cli-01-a-new-vue-project/src/App.vue @@ -3,17 +3,16 @@ <header> <h1>My friends</h1> </header> + <new-friend @add-contact="addContact"></new-friend> <ul> - <friend-contact - v-for="friend in friends" - :key="friend.id" - :id="friend.id" - :name="friend.name" - :phone-number="friend.phone" - :email-address="friend.email" - :is-favorite="friend.isFavorite" - @toggle-favorite="toggleFavoriteStatus" - ></friend-contact> + <friend-contact v-for="friend in friends" + :key="friend.id" + :id="friend.id" + :name="friend.name" + :phone-number="friend.phone" + :email-address="friend.email" + :is-favorite="friend.isFavorite" + @toggle-favorite="toggleFavoriteStatus"></friend-contact> </ul> </section> </template> @@ -35,18 +34,33 @@ name: "Julie Jones", phone: "09876 543 221", email: "julie@localhost.com", - isFavorite: true, + isFavorite: true, }, ], } }, - methods:{ - toggleFavoriteStatus(friendId){ - const found = this.friends.find( + watch: { + + }, + methods: { + toggleFavoriteStatus(friendId) { + const found = this.friends.find( (friend) => friend.id === friendId ); found.isFavorite = !found.isFavorite; + }, + + addContact(name, phone, email) { + const newFriendContact={ + id: new Date().toISOString + name, + name: name, + phone: phone, + email:email, + }; + + this.friends.push(newFriendContact); } + } }; </script> @@ -84,7 +98,8 @@ list-style: none; } -#app li { +#app li, +#app form { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26); margin: 1rem auto; border-radius: 10px; @@ -117,4 +132,20 @@ border-color: #ec3169; box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.26); } + +#app input { + font: inherit; + padding: 0.15rem; +} + +#app label { + font-weight: bold; + margin-right: 1rem; + width: 7rem; + display: inline-block; +} + +#app form div { + margin: 1rem 0; +} </style> \ No newline at end of file diff --git a/07 - development setup/vue-cli-01-a-new-vue-project/src/components/NewFriend.vue b/07 - development setup/vue-cli-01-a-new-vue-project/src/components/NewFriend.vue new file mode 100644 index 0000000..3d9e8fb --- /dev/null +++ b/07 - development setup/vue-cli-01-a-new-vue-project/src/components/NewFriend.vue @@ -0,0 +1,39 @@ +<template> + <form @submit.prevent="submitData"> + <div> + <label>Nome:</label> + <input type="text" v-model="name" /><br> + </div> + <div> + <label>Phone:</label> + <input type="tel" v-model="phone" /><br> + </div> + <div> + <label>Email:</label> + <input type="email" v-model="email" /><br> + </div> + <div> + <button>Add new friend</button> + </div> + </form> +</template> + +<script> +export default { + data() { + return { + name: "", + phone: "", + email: "", + } + }, + emits: ['add-contact'], + methods: { + submitData() { + this.$emit('add-contact', this.name, this.phone, this.email); + } + } +} +</script> + +<style></style> \ No newline at end of file diff --git a/07 - development setup/vue-cli-01-a-new-vue-project/src/main.js b/07 - development setup/vue-cli-01-a-new-vue-project/src/main.js index ac37128..7200c0b 100644 --- a/07 - development setup/vue-cli-01-a-new-vue-project/src/main.js +++ b/07 - development setup/vue-cli-01-a-new-vue-project/src/main.js @@ -2,9 +2,11 @@ import App from "./App.vue"; import FriendContact from "./components/FriendContact.vue"; +import NewFriend from "./components/NewFriend.vue"; const app = createApp(App); app.component("friend-contact", FriendContact); +app.component("new-friend", NewFriend); app.mount("#app"); -- Gitblit v1.8.0