<template> <el-dropdown class="notification"> <el-row> <el-button type="info" :icon="Message" circle> <div class="text-length">{{ length1 + length2 }}</div> <!-- notification--> <!-- <font-awesome-icon icon="fa-solid fa-envelope" />--> <!-- Notification<el-icon class="el-icon--right"><arrow-down /></el-icon>--> </el-button> </el-row> <template #dropdown> <el-dropdown-menu> <el-dropdown-item v-for="offer in offers" :key="offer.offerId"> <a> <router-link :to=" '/matched-result/' + offer.offerId + '/' + offer.wishlistItemId " style="color: blue" > <div class="offer-match"> <div class="offer-text"></div> <font-awesome-icon icon="fa-solid fa-circle-info" /> Offer Matched </div> </router-link> </a> </el-dropdown-item> <el-dropdown-item type="primary" v-for="offer in offers2" :key="offer.offerId" > <a ><router-link :to=" '/matched-result/' + offer.offerId + '/' + offer.wishlistItemId " style="color: blue" > <div class="offer-match"> <font-awesome-icon icon="fa-solid fa-circle-info" /> WishList Matched </div> </router-link> </a> </el-dropdown-item> </el-dropdown-menu> </template> </el-dropdown> </template> <script setup lang="ts"> import { ref, watch } from "vue"; import { OfferNotification } from "@/models/OfferNotification"; import * as NotificationService from "@/services/NotificationService"; import { useRoute } from "vue-router"; import { onMounted } from "vue"; import { Message } from "@element-plus/icons-vue"; const route = useRoute(); function getCookie(userId: string) { const value = `; ${document.cookie}`; const parts: string[] = value.split(`; ${userId}=`); if (parts.length === 2) return parts?.pop()?.split(";").shift(); } const offers = ref([] as OfferNotification[]); const offers2 = ref([] as OfferNotification[]); const length1 = ref(-1); const length2 = ref(-1); async function fetchNotification(userId: number) { const response = await NotificationService.getNotificationFromServerWithID( userId ); // const response2 = // await NotificationService.getNotificationwishFromServerWithID(userId); // console.log(response2); offers.value = response.data; length1.value = response.data.length; // offers2.value = response2.data; } async function fetchNotificationwish(userId: number) { const response2 = await NotificationService.getNotificationwishFromServerWithID(userId); offers2.value = response2.data; length2.value = response2.data.length; } watch( () => route.name, (values) => { const userIdString: string = getCookie("userId"); let userIdNumber = +userIdString; fetchNotification(userIdNumber); fetchNotificationwish(userIdNumber); }, { immediate: true } ); </script> <style scoped> .example-showcase .el-dropdown + .el-dropdown { margin-left: 15px; } .example-showcase .el-dropdown-link { cursor: pointer; color: var(--el-color-primary); display: flex; align-items: center; } .offer-match { display: flex; margin-right: 2px; } .offer-text { font-size: 25px; font-family: "Apple Symbols"; color: #1e5be6; margin-left: 2px; } .text-length { font-size: 20px; color: white; height: 20px; width: 20px; background-color: #cc0000; border-radius: 50%; display: inline-block; } a:link { text-decoration: none; } a:visited { text-decoration: none; } a:hover { text-decoration: none; } a:active { text-decoration: none; } </style>