<template>
    <div>
        <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"
                :email-address="friend.email"
                :phone-number="friend.phone"
                :is-favorite="friend.isFavorite"
                @toggle-favorite="togggleFavoriteStatus"
                @delete-friend="deleteFriend"
            ></friend-contact>
        </ul>
    </div>
</template>

<script>
export default {
    data() {
        return {
            friends: [
                {
                    id: "manuel",
                    name: "Manuel Lorenz",
                    phone: "0123 4567 890",
                    email: "manuel@localhost.com",
                    isFavorite: true,
                },
                {
                    id: "julie",
                    name: "Julie Jones",
                    phone: "9876 5432 210",
                    email: "julie@localhost.com",
                    isFavorite: false,
                },
            ],
        };
    },
    methods: {
        togggleFavoriteStatus(friendId) {
            const identifiedFriend = this.friends.find(
                (friend) => friend.id === friendId
            );
            identifiedFriend.isFavorite = !identifiedFriend.isFavorite;
        },
        addContact(NewFriend) {
            this.friends.push(NewFriend);
        },
        deleteFriend(id) {
            //if the ID matches drop the friend
            this.friends = this.friends.filter((friend) => friend.id !== id);
        },
    },
};
</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,
#app form {
    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);
}
#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>
