diff --git a/frontend/components/bc/BcAccordion.vue b/frontend/components/bc/BcAccordion.vue
new file mode 100644
index 000000000..c8ddfca41
--- /dev/null
+++ b/frontend/components/bc/BcAccordion.vue
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/components/bc/BcCard.vue b/frontend/components/bc/BcCard.vue
new file mode 100644
index 000000000..f2eed9a5a
--- /dev/null
+++ b/frontend/components/bc/BcCard.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/components/bc/BcText.vue b/frontend/components/bc/BcText.vue
index 57d343cf6..588198ecf 100644
--- a/frontend/components/bc/BcText.vue
+++ b/frontend/components/bc/BcText.vue
@@ -1,8 +1,9 @@
-
beaconcha.in
-
+
diff --git a/frontend/components/notifications/NotificationsDashboardsTable.vue b/frontend/components/notifications/NotificationsDashboardsTable.vue
index f221486a7..51510411d 100644
--- a/frontend/components/notifications/NotificationsDashboardsTable.vue
+++ b/frontend/components/notifications/NotificationsDashboardsTable.vue
@@ -8,6 +8,7 @@ import type { DashboardType } from '~/types/dashboard'
import { useUserDashboardStore } from '~/stores/dashboard/useUserDashboardStore'
import type { ChainIDs } from '~/types/network'
import type { NotificationDashboardsTableRow } from '~/types/api/notifications'
+import { NotificationsDashboardDialogEntity } from '#components'
defineEmits<{ (e: 'openDialog'): void }>()
@@ -40,11 +41,6 @@ const colsVisible = computed(() => {
}
})
-const openDialog = () => {
- // TODO: implement dialog
- alert('not implemented yet 😪')
-}
-
const getDashboardType = (isAccount: boolean): DashboardType => isAccount ? 'account' : 'validator'
const { overview } = useNotificationsDashboardOverviewStore()
const mapEventtypeToText = (eventType: NotificationDashboardsTableRow['event_types'][number]) => {
@@ -95,6 +91,20 @@ const mapEventtypeToText = (eventType: NotificationDashboardsTableRow['event_typ
const textDashboardNotifications = (event_types: NotificationDashboardsTableRow['event_types']) => {
return event_types.map(mapEventtypeToText).join(', ')
}
+
+const dialog = useDialog()
+
+const showDialog = (row: { identifier: string } & NotificationDashboardsTableRow) => {
+ dialog.open(NotificationsDashboardDialogEntity, {
+ data: {
+ dashboard_id: row.dashboard_id,
+ epoch: row.epoch,
+ group_id: row.group_id,
+ group_name: row.group_name,
+ identifier: row.identifier,
+ },
+ })
+}
@@ -104,9 +114,6 @@ const textDashboardNotifications = (event_types: NotificationDashboardsTableRow[
:search-placeholder="$t('notifications.dashboards.search_placeholder')"
@set-search="setSearch"
>
-
- NETWORK_SWITCHER_COMPONENT
-
-
+
+
+
@@ -373,17 +384,6 @@ $breakpoint-lg: 1024px;
@include utils.truncate-text;
}
-:deep(.bc-table-header) {
- .h1 {
- display: none;
- }
-
- @media (min-width: $breakpoint-lg) {
- .h1 {
- display: block;
- }
- }
-}
:deep(.right-info) {
flex-direction: column;
justify-content: center;
diff --git a/frontend/locales/en.json b/frontend/locales/en.json
index be4f6211d..50347c887 100644
--- a/frontend/locales/en.json
+++ b/frontend/locales/en.json
@@ -613,6 +613,25 @@
"heading":"Delete all notifications",
"paragraph": "Do you really want to delete all notifications for this dashboard?"
},
+ "entity": {
+ "attestation_missed":"Attestation missed ({0})",
+ "group_back_online": "Group back online ({0})",
+ "group_offline": "Group Offline ({0})",
+ "group_offline_reminder": "Group Offline reminder ({0})",
+ "max_collteral":"Maximum Collateral reached ({0})",
+ "min_collteral":"Minimum Collateral reached ({0})",
+ "proposal_done": "Proposal done ({0})",
+ "proposal_missed": "Proposal missed ({0})",
+ "slashed": "Slashed ({0})",
+ "sync_comittee": "Synce Commitee ({0})",
+ "title": "Notifications",
+ "upcoming_proposal": "Upcoming proposal ({0})",
+ "validator_back_online": "Validator back online ({0})",
+ "validator_offline_reminder": "Validator Offline reminder ({0})",
+ "validatore_offline": "Validator Offline",
+ "withdrawal": "Withdrawal ({0})"
+
+ },
"heading_webhook": "Edit Webhook",
"info_send_via_discord": {
"_link": "Discord webhook",
diff --git a/frontend/stores/notifications/useNotificationsDashboardDetailsStore.ts b/frontend/stores/notifications/useNotificationsDashboardDetailsStore.ts
new file mode 100644
index 000000000..c678c952a
--- /dev/null
+++ b/frontend/stores/notifications/useNotificationsDashboardDetailsStore.ts
@@ -0,0 +1,43 @@
+import type {
+ InternalGetUserNotificationsValidatorDashboardResponse,
+ NotificationDashboardsTableRow, NotificationValidatorDashboardDetail,
+} from '~/types/api/notifications'
+import { API_PATH } from '~/types/customFetch'
+
+export const useNotificationsDashboardDetailsStore = defineStore('notifications-dashboard-details', () => {
+ const { fetch } = useCustomFetch()
+ const detailsList = ref(new Map())
+
+ const getDetails = async ({
+ dashboard_id,
+ epoch,
+ group_id,
+ }: Pick,
+ ) => {
+ return fetch(
+ API_PATH.NOTIFICATIONS_DASHBOARDS_DETAILS_VALIDATOR,
+ {},
+ {
+ dashboard_id,
+ epoch,
+ group_id,
+ },
+ )
+ }
+
+ const addDetails = ({
+ details,
+ identifier,
+ }: {
+ details: NotificationValidatorDashboardDetail,
+ identifier: string,
+ }) => {
+ detailsList.value.set(identifier, details)
+ }
+
+ return {
+ addDetails,
+ detailsList,
+ getDetails,
+ }
+})
diff --git a/frontend/stores/notifications/useNotificationsDashboardStore.ts b/frontend/stores/notifications/useNotificationsDashboardStore.ts
index 41f392627..3a8e59fec 100644
--- a/frontend/stores/notifications/useNotificationsDashboardStore.ts
+++ b/frontend/stores/notifications/useNotificationsDashboardStore.ts
@@ -30,7 +30,8 @@ export function useNotificationsDashboardStore(networkId: globalThis.Ref