From 8480d4ef05d995ee67c1460cf273c899fa59e89c Mon Sep 17 00:00:00 2001 From: Cristiano Magro <cristiano.magro@vola.it> Date: Sat, 28 Dec 2024 23:15:49 +0100 Subject: [PATCH] emitting custom event --- 07 - development setup/vue-cli-01-a-new-vue-project/src/App.vue | 140 ++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 114 insertions(+), 26 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 8f45030..a9ca593 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 @@ -1,32 +1,120 @@ <template> - <section> - <h2>My friends</h2> - <ul> - <friend-contact></friend-contact> - <friend-contact></friend-contact> - </ul> - </section> + <section> + <header> + <h1>My friends</h1> + </header> + <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> + </ul> + </section> </template> <script> export default { - data() { - return { - friends: [ - { - id: "manuel", - name: "Manuel Lorenz", - phone: "01234 5678 991", - email: "manuel@localhost.com", - }, - { - id: "julie", - name: "Julie Jones", - phone: "09876 543 221", - email: "julie@localhost.com", - }, - ], - } - }, + data() { + return { + friends: [ + { + id: "manuel", + name: "Manuel Lorenz", + phone: "01234 5678 991", + email: "manuel@localhost.com", + isFavorite: true, + }, + { + id: "julie", + name: "Julie Jones", + phone: "09876 543 221", + email: "julie@localhost.com", + isFavorite: true, + }, + ], + } + }, + methods:{ + toggleFavoriteStatus(friendId){ + const found = this.friends.find( + (friend) => friend.id === friendId + ); + found.isFavorite = !found.isFavorite; + } + } }; -</script> \ No newline at end of file +</script> + +<style> +@import url('https://fonts.googleapis.com/css2?family=Jost&display=swap'); + +* { + box-sizing: border-box; +} + +html { + font-family: 'Jost', sans-serif; +} + +body { + margin: 0; +} + +header { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26); + margin: 3rem auto; + border-radius: 10px; + padding: 1rem; + background-color: #58004d; + color: white; + text-align: center; + width: 90%; + max-width: 40rem; +} + +#app ul { + margin: 0; + padding: 0; + list-style: none; +} + +#app li { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26); + margin: 1rem auto; + border-radius: 10px; + padding: 1rem; + text-align: center; + width: 90%; + max-width: 40rem; +} + +#app h2 { + font-size: 2rem; + border-bottom: 4px solid #ccc; + color: #58004d; + margin: 0 0 1rem 0; +} + +#app button { + font: inherit; + cursor: pointer; + border: 1px solid #ff0077; + background-color: #ff0077; + color: white; + padding: 0.05rem 1rem; + box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.26); +} + +#app button:hover, +#app button:active { + background-color: #ec3169; + border-color: #ec3169; + box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.26); +} +</style> \ No newline at end of file -- Gitblit v1.8.0