Tweaking banner component

This commit is contained in:
PascalMarchesseault
2024-08-08 00:59:10 -04:00
parent 31f186ada9
commit 6409303139
3 changed files with 73 additions and 33 deletions

View File

@@ -1,53 +1,85 @@
<script setup>
import {useSubscriptionStore} from "@/stores/subscriptionStore.js";
import {computed} from "vue";
import {computed, ref} from "vue";
const props = defineProps({
creator: {type: Object, required: true},
});
const subscriptionStore = useSubscriptionStore()
const subscriptionStore = useSubscriptionStore();
const isSubscribe = computed(() => !subscriptionStore.isSubscribeTo(props.creator.id))
const isSubscribe = computed(() => !subscriptionStore.isSubscribeTo(props.creator.id));
function subscribeToCreator() {
subscriptionStore.subscribeTo(props.creator.id)
subscriptionStore.subscribeTo(props.creator.id);
}
// Référence pour contrôler l'affichage du modal
const showUnsubscribeModal = ref(false);
function unsubscribeFromCreator() {
subscriptionStore.unsubscribeFrom(props.creator.id)
subscriptionStore.unsubscribeFrom(props.creator.id);
// Fermer le modal après désabonnement
showUnsubscribeModal.value = false;
}
</script>
<template>
<template v-if="isSubscribe">
<v-btn class="action mr-4"
@click="subscribeToCreator()"
style="transition: background-color 0.3s ease;">
<v-btn
class="action mr-4"
variant="outlined"
@click="subscribeToCreator"
color="white"
>
S'ABONNER
</v-btn>
</template>
<template v-else>
<v-btn class="action mr-4"
@click="unsubscribeFromCreator()"
style="transition: background-color 0.3s ease;">
<v-btn
class="action mr-4"
variant="outlined"
@click="showUnsubscribeModal = true"
style="transition: background-color 0.3s ease;"
color="white"
>
SE DESABONNER
</v-btn>
</template>
<v-dialog v-model="showUnsubscribeModal" max-width="500">
<v-card class="text-center rounded-xl"
:style="{
border: `3px solid ${creator.colors.menu}`
}">
<div class="flex items-center justify-between py-4 text-2xl font-bold border-b mb-2">
<div class="flex-1 text-center">
Déabonnement
</div>
</div>
<v-card-title>Confirmation</v-card-title>
<v-card-text>Êtes-vous sûr de vouloir vous désabonner ?</v-card-text>
<v-card-actions class="justify-center px-4 pb-4">
<v-btn text class="flex-grow-1" variant="outlined"
style="background-color: rgba(255, 255, 255, 0.1); color: rgba(0, 0, 0, 0.4);"
@click="unsubscribeFromCreator">Oui
</v-btn>
<v-btn color="secondary" class="flex-grow-1"
:style="{ borderColor: creator.colors.menu, color: creator.colors.menu }" variant="outlined"
@click="showUnsubscribeModal = false "> <div :style="{color: creator.colors.menu}">non</div>
</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<style scoped>
.action {
@apply py-2 px-4 rounded bg-gray-100 hover:bg-gray-300
}
</style>
@apply py-2 px-4 rounded;
border: 1px solid currentColor;
}
</style>