Task #602: quick-note button in schedule fullscreen mode
The amber "ملاحظة / Note" button (#600) lives in the Executive Meetings page header. The whole header is hidden in fullscreen, so the quick-note panel — which itself already works in fullscreen — had no entry point. User had to exit fullscreen, add the note, then re-enter. Added a floating amber pill next to the existing fullscreen-exit pill at the top-end of the page. Mirrors the header button exactly: - Same handler (setQuickNoteOpen + setQuickNoteTrigger). - Same gating: only Schedule section, hidden while the panel is open or while the bulk-actions toolbar is active. - Same i18n key (executiveMeetings.quickNote.label) — no new strings. - Same amber palette (bg-amber-100 / border-amber-300 / text-[#0B1E3F]) with the Plus icon and label. - Positioned at `top-3 end-14` so it sits inboard of the exit pill (`end-3`, w-9) in both LTR (to the left) and RTL (to the right), with no overlap. - `print:hidden`, `data-testid="em-fullscreen-quicknote"`. Single JSX addition (~36 lines incl. comment) in artifacts/tx-os/src/pages/executive-meetings.tsx, right after the exit-fullscreen button. No other files touched. No new state, no new i18n, no API changes, no dependency changes. Non-fullscreen layout is untouched. tx-os tsc passes.
This commit is contained in:
@@ -1016,6 +1016,43 @@ function ExecutiveMeetingsPageInner() {
|
||||
<Minimize2 className="w-5 h-5" />
|
||||
</button>
|
||||
)}
|
||||
{/* #602: floating amber quick-note pill — the only entry point to
|
||||
the quick-note panel while the page header is hidden in
|
||||
fullscreen. Same gating + handler as the header button at
|
||||
~L1067 so the two behave identically; positioned inboard of
|
||||
the exit pill (end-14 sits to the left of end-3 in LTR and to
|
||||
the right in RTL). Hidden when the panel is already open or
|
||||
while the bulk-actions toolbar is competing for attention. */}
|
||||
{isFullscreen &&
|
||||
section === "schedule" &&
|
||||
!bulkToolbarActive &&
|
||||
!quickNoteOpen && (
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => {
|
||||
setQuickNoteOpen(true);
|
||||
setQuickNoteTrigger((n) => n + 1);
|
||||
}}
|
||||
data-testid="em-fullscreen-quicknote"
|
||||
aria-label={t(
|
||||
"executiveMeetings.quickNote.label",
|
||||
lang === "ar" ? "ملاحظة" : "Note",
|
||||
)}
|
||||
title={t(
|
||||
"executiveMeetings.quickNote.label",
|
||||
lang === "ar" ? "ملاحظة" : "Note",
|
||||
)}
|
||||
className="fixed top-3 end-14 z-50 inline-flex items-center gap-1.5 rounded-full bg-amber-100 hover:bg-amber-200 border border-amber-300 text-[#0B1E3F] h-9 px-3 text-sm font-medium shadow-lg print:hidden"
|
||||
>
|
||||
<Plus className="w-4 h-4" />
|
||||
<span>
|
||||
{t(
|
||||
"executiveMeetings.quickNote.label",
|
||||
lang === "ar" ? "ملاحظة" : "Note",
|
||||
)}
|
||||
</span>
|
||||
</button>
|
||||
)}
|
||||
<header
|
||||
ref={headerRef}
|
||||
data-testid="em-page-header"
|
||||
|
||||
Reference in New Issue
Block a user