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 @@ 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, + }, + }) +} @@ -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