From 2c31ff766814fe5eaa9e29fd6d62293f3519905d Mon Sep 17 00:00:00 2001 From: Abhinav Ohri Date: Thu, 24 Sep 2026 22:54:22 +0530 Subject: [PATCH] feat(proposals): show participant response summary Assisted-by: Codex:gpt-5 Signed-off-by: Abhinav Ohri --- src/views/Proposal/ProposalEditor.vue | 29 ++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/views/Proposal/ProposalEditor.vue b/src/views/Proposal/ProposalEditor.vue index 7dd562167f..187cc97bdb 100644 --- a/src/views/Proposal/ProposalEditor.vue +++ b/src/views/Proposal/ProposalEditor.vue @@ -25,10 +25,14 @@ {{ selectedProposal?.location || t('calendar', 'No Location') }}
-
-
- - {{ selectedProposal?.duration ? selectedProposal.duration + ' min' : '-' }} +
+ + {{ selectedProposal?.duration ? selectedProposal.duration + ' min' : '-' }} +
+
+
+ + {{ participantSummary }}
(() => !selectedProposal.value || selecte const modalEditSaveLabel = computed(() => !selectedProposal.value || selectedProposal.value.id ? t('calendar', 'Update') : t('calendar', 'Create')) +const participantSummary = computed(() => { + const participants = selectedProposal.value?.participants ?? [] + const responded = participants.filter(({ status }) => status === ProposalParticipantStatus.Responded).length + return t('calendar', '{responded} of {invited} responded', { + invited: participants.length, + responded, + }) +}) + const modalEditSaveState = computed(() => { if (!selectedProposal.value) { // disable if no proposal selected @@ -1017,14 +1031,15 @@ onBeforeUnmount(() => { gap: calc(var(--default-grid-baseline) * 2); } -.proposal-viewer__content-duration-and-actions { +.proposal-viewer__content-participants-and-actions { display: flex; justify-content: space-between; align-items: center; } .proposal-viewer__content-location, -.proposal-viewer__content-duration { +.proposal-viewer__content-duration, +.proposal-viewer__content-participants { display: flex; align-items: center; gap: calc(var(--default-grid-baseline) * 2);