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);