diff --git a/artifacts/tx-os/src/pages/executive-meetings-print.tsx b/artifacts/tx-os/src/pages/executive-meetings-print.tsx index b51414ec..b4bb09f4 100644 --- a/artifacts/tx-os/src/pages/executive-meetings-print.tsx +++ b/artifacts/tx-os/src/pages/executive-meetings-print.tsx @@ -116,13 +116,31 @@ export default function ExecutiveMeetingsPrintPage() { .no-print { display: none !important; } body { background: white; } @page { size: A4; margin: 14mm; } + /* On A4 the table always fits the page; drop the screen-only + scroll guard so the layout stays identical to today and the + # column can shrink to its natural width. */ + .em-print-scroll { overflow: visible !important; } + .em-print-table { min-width: 0 !important; } + .em-print-table th:first-child { width: auto !important; } + } + /* Screen-only horizontal scroll guard — prevents the table from + breaking the page layout on phones (<640px). */ + .em-print-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; } + .em-print-table { + border-collapse: collapse; + width: 100%; + min-width: 640px; } - .em-print-table { border-collapse: collapse; width: 100%; } .em-print-table th, .em-print-table td { border: 1px solid #d1d5db; padding: 8px 10px; text-align: center; vertical-align: middle; + /* Long Arabic names have few break opportunities; force wrap so + the cell never overflows its border. */ + word-break: break-word; + overflow-wrap: anywhere; + white-space: normal; } .em-print-table th { background: #0B1E3F; @@ -130,6 +148,17 @@ export default function ExecutiveMeetingsPrintPage() { font-weight: 600; } .em-print-table tr.hl td { background: #fecaca; } + .em-print-attendees { + display: flex; + flex-direction: column; + gap: 2px; + text-align: center; + line-height: 1.4; + } + .em-print-attendees .em-print-attendee-num { + color: #6b7280; + margin-inline-end: 4px; + } `}
| {t.no} | -{t.meeting} | -{t.attendees} | -{t.time} | -
|---|---|---|---|
| {m.dailyNumber} | -
- {title}
- {m.location ? (
-
- {m.location}
-
- ) : null}
- |
- - {attendees || "—"} - | -{time} | -
| {t.no} | +{t.meeting} | +{t.attendees} | +{t.time} | +
|---|---|---|---|
| {m.dailyNumber} | +
+ {title}
+ {m.location ? (
+
+ {m.location}
+
+ ) : null}
+ |
+
+ {attendees.length === 0 ? (
+ "—"
+ ) : (
+
+ {attendees.map((a, idx) => (
+
+ )}
+
+
+ {idx + 1}-
+
+ {a.title ? `${a.name} (${a.title})` : a.name}
+
+ ))}
+ |
+ {time} | +