feat(election): relational agenda items, PDF download, email redesign, and nav fixes

- Replace flat agenda text field with relational agenda items (add/remove rows)
- Fix edit form pre-populating saved agenda using [value]+(input) binding
- Add PDF download button: opens print-ready window with full meeting details
- Redesign meeting invite email: table-based layout, compact header, amber agenda
  box with numbered badges, two-column footer
- Fix stale email agenda bug: refresh entity after agenda save to bypass EclipseLink
  L1 identity map cache
- Remove permission wrapper from Election sidenav item; add routerLink to toolbar

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jaanu423
2026-07-06 16:54:04 +05:30
co-authored by Claude Sonnet 4.6
parent e952bc546f
commit 8a1b7d5d6c
5 changed files with 371 additions and 48 deletions
@@ -1244,6 +1244,99 @@ $font:
gap: 12px;
}
// ── Agenda Items ──────────────────────────────────────────────────
.agenda-list {
display: flex;
flex-direction: column;
gap: 8px;
margin-bottom: 8px;
}
.agenda-item-row {
display: flex;
align-items: center;
gap: 8px;
.agenda-num {
font-size: 12px;
color: #94a3b8;
min-width: 18px;
text-align: right;
flex-shrink: 0;
}
input {
flex: 1;
}
}
.btn-remove-agenda {
background: none;
border: none;
cursor: pointer;
color: #ef4444;
padding: 4px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 6px;
flex-shrink: 0;
transition: background 0.15s;
mat-icon {
font-size: 20px;
height: 20px;
width: 20px;
}
&:hover {
background: #fef2f2;
}
}
.btn-add-agenda {
display: inline-flex;
align-items: center;
gap: 4px;
background: none;
border: 1px dashed #cbd5e1;
border-radius: 8px;
cursor: pointer;
color: #6366f1;
padding: 6px 12px;
font-size: 12px;
font-weight: 600;
transition:
border-color 0.15s,
background 0.15s;
mat-icon {
font-size: 16px;
height: 16px;
width: 16px;
}
&:hover {
border-color: #6366f1;
background: #eef2ff;
}
}
.meeting-agenda-preview {
display: flex;
align-items: center;
gap: 4px;
font-size: 12px;
color: #64748b;
margin-top: 2px;
.meta-icon {
font-size: 14px;
height: 14px;
width: 14px;
}
}
@media (width <= 600px) {
.committee-page {
padding: 16px;