From c3aab44b5f4be375235e25146f6cbc7ff9a3adad Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Fri, 31 Jan 2025 15:14:10 +0530 Subject: [PATCH] feat: Add unread badge to sidebar for inbox view (#10803) # Pull Request Template ## Description This PR adds a badge to the icon in the sidebar group header and an unread highlight for the inbox view. ## Type of change - [x] New feature (non-breaking change which adds functionality) ## How Has This Been Tested? **Loom video** https://www.loom.com/share/1a880aa16de249a1836b8d014325c067?sid=87cc7b64-667b-4066-8993-d33abccf7b67 ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [x] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules --- .../components-next/sidebar/Sidebar.vue | 3 +++ .../components-next/sidebar/SidebarGroup.vue | 2 ++ .../sidebar/SidebarGroupHeader.vue | 14 +++++++++-- .../routes/dashboard/inbox/InboxList.vue | 18 ++++++++++----- .../store/modules/notifications/getters.js | 3 +++ .../store/modules/notifications/index.js | 2 +- .../specs/notifications/getters.spec.js | 23 +++++++++++++++++++ 7 files changed, 56 insertions(+), 9 deletions(-) diff --git a/app/javascript/dashboard/components-next/sidebar/Sidebar.vue b/app/javascript/dashboard/components-next/sidebar/Sidebar.vue index dcf4e9740..ca5f8b17e 100644 --- a/app/javascript/dashboard/components-next/sidebar/Sidebar.vue +++ b/app/javascript/dashboard/components-next/sidebar/Sidebar.vue @@ -151,6 +151,9 @@ const menuItems = computed(() => { icon: 'i-lucide-inbox', to: accountScopedRoute('inbox_view'), activeOn: ['inbox_view', 'inbox_view_conversation'], + getterKeys: { + badge: 'notifications/getHasUnreadNotifications', + }, }, { name: 'Conversation', diff --git a/app/javascript/dashboard/components-next/sidebar/SidebarGroup.vue b/app/javascript/dashboard/components-next/sidebar/SidebarGroup.vue index 305171d10..64345c7de 100644 --- a/app/javascript/dashboard/components-next/sidebar/SidebarGroup.vue +++ b/app/javascript/dashboard/components-next/sidebar/SidebarGroup.vue @@ -15,6 +15,7 @@ const props = defineProps({ to: { type: Object, default: null }, activeOn: { type: Array, default: () => [] }, children: { type: Array, default: undefined }, + getterKeys: { type: Object, default: () => ({}) }, }); const { @@ -143,6 +144,7 @@ onMounted(async () => { :name :label :to + :getter-keys="getterKeys" :is-active="isActive" :has-active-child="hasActiveChild" :expandable="hasChildren" diff --git a/app/javascript/dashboard/components-next/sidebar/SidebarGroupHeader.vue b/app/javascript/dashboard/components-next/sidebar/SidebarGroupHeader.vue index 160483a6a..1fd1786a0 100644 --- a/app/javascript/dashboard/components-next/sidebar/SidebarGroupHeader.vue +++ b/app/javascript/dashboard/components-next/sidebar/SidebarGroupHeader.vue @@ -1,7 +1,8 @@