@if (loading) {

Loading committees...

} @else if (committees.length === 0) {
groups

No committees yet

Create a committee by selecting directors from the current election.

} @else {
@for (c of committees; track c.id) {
@if (c.image) { } @else { groups }

{{ c.name }}

{{ c.status }}
@if (c.description) {

{{ c.description }}

}
person {{ c.members?.length ?? 0 }} member{{ (c.members?.length ?? 0) !== 1 ? 's' : '' }}
@if (c.members?.length > 0) {
@for (m of c.members.slice(0, 5); track m.id) {
@if (getMemberPhoto(m.memberId)) { } @else { {{ m.candidateName?.charAt(0) }} }
} @if (c.members.length > 5) {
+{{ c.members.length - 5 }}
}
@for (m of c.members; track m.id) {
@if (getMemberPhoto(m.memberId)) { } @else { {{ m.candidateName?.charAt(0) }} }
{{ m.candidateName }} {{ m.designation || m.postName }}
}
}
@if (isMeetingsExpanded(c.id)) {
@if (c.status === 'ACTIVE') { } @if (isMeetingsLoading(c.id)) {
Loading...
} @else if (getMeetings(c.id).length === 0) {
event_busy No meetings scheduled
} @else {
@for (m of getMeetings(c.id); track m.id) {
{{ meetingModeIcon(m.mode) }}
{{ m.title }} {{ m.status }}
calendar_today {{ m.meetingDate | date: 'dd MMM yyyy' }} @if (m.meetingTime) { · schedule {{ m.meetingTime }} }
@if (m.mode === 'ONLINE' && m.platform) {
videocam {{ m.platform }} @if (m.meetingLink) { open_in_new Join }
} @if (m.mode === 'OFFLINE' && m.venue) {
place {{ m.venue }}{{ m.city ? ', ' + m.city : '' }}
} @if (m.agendaItems?.length > 0) {
format_list_bulleted {{ m.agendaItems.length }} agenda item{{ m.agendaItems.length !== 1 ? 's' : '' }}
}
@if (m.status === 'COMPLETED') { } @if (c.status === 'ACTIVE') { @if (m.status === 'SCHEDULED') { } }
}
}
}
@if (c.status === 'ACTIVE') { } @else { block Dissolved }
}
}
@if (showForm) {

{{ editingId ? 'Edit Committee' : 'New Committee' }}

@if (form.image) { Committee photo
edit zoom_in
} @else { add_photo_alternate Add Photo }
@if (form.image) { }
@if (submitted && !form.name?.trim()) { Name is required }
Select Members (Current Election Directors)
@if (directorsLoading) {
Loading directors...
} @else if (availableDirectors.length === 0) {
info No active directors found for the current election.
} @else {
@for (d of availableDirectors; track d.id) {
@if (getMemberPhoto(d.memberId)) { } @else { {{ d.candidateName?.charAt(0) }} }
{{ d.candidateName }} {{ d.designation || d.postName }}
@if (isSelected(d.id)) { check_circle } @else { radio_button_unchecked }
}
{{ form.selectedIds.length }} member{{ form.selectedIds.length !== 1 ? 's' : '' }} selected
}
} @if (showMeetingForm) {

{{ editingMeetingId ? 'Edit Meeting' : 'Schedule Meeting' }}

@if (submittedMeeting && meetingErrors['title']) { {{ meetingErrors['title'] }} }
@if (submittedMeeting && meetingErrors['meetingDate']) { {{ meetingErrors['meetingDate'] }} }
@if (meetingForm.mode === 'ONLINE') {
video_call Online Details
@if (submittedMeeting && meetingErrors['meetingLink']) { {{ meetingErrors['meetingLink'] }} }
} @if (meetingForm.mode === 'OFFLINE') {
location_on Venue Details
}
@for (item of meetingForm.agendaItems; track $index) {
{{ $index + 1 }}. @if (meetingForm.agendaItems.length > 1) { }
}
} @if (showVotePanel) {
how_to_vote
Vote Summary & Resolutions
@if (votePanelMeeting) {
{{ votePanelMeeting.title }} · {{ votePanelMeeting.meetingDate | date: 'dd MMM yyyy' }}
}
@if (voteSummaryLoading) {
autorenew Loading votes…
} @else if (voteSummary.length === 0) {
inbox

No agenda items found for this meeting.

} @else { @for (item of voteSummary; track item.agendaId) {
{{ $index + 1 }} {{ item.agendaItem }}
check_circle{{ item.approvedCount }} Approved
cancel{{ item.rejectedCount }} Rejected
pause_circle{{ item.abstainCount }} Abstain
pending{{ item.pendingCount }} Pending
@if (item.resolution) { {{ item.resolution === 'APPROVED' ? '✅ Approved' : item.resolution === 'REJECTED' ? '❌ Rejected' : '⏸ Deferred' }} } @else { Awaiting Chairman / Vice Chairman vote }
} }
}