From 29a119f51d1417890453cdcbefc1392b82de4a54 Mon Sep 17 00:00:00 2001 From: jtricerolph Date: Mon, 20 Jul 2026 12:42:32 +0000 Subject: [PATCH] =?UTF-8?q?Vertical=20tab=20order=20on=20worksheet=20overr?= =?UTF-8?q?ide=20inputs=20(pickup=20=E2=86=92=20dry=20=E2=86=92=20wet=20co?= =?UTF-8?q?lumns)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/pages/DirectorsForecast.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/DirectorsForecast.tsx b/frontend/src/pages/DirectorsForecast.tsx index 2a3ceda7..d7155e0e 100644 --- a/frontend/src/pages/DirectorsForecast.tsx +++ b/frontend/src/pages/DirectorsForecast.tsx @@ -168,10 +168,15 @@ function WorksheetTab({ year, month }: { year: number; month: number }) { - {data.days.map(day => { + {data.days.map((day, i) => { + const n = data.days.length const c = computedDay(day) const ovr = overrides[day.date] || { pickup_rooms: '', pickup_avg_rate: '', dry_override: '', wet_override: '' } const rowCls = day.is_today ? 'df-row-today' : day.is_past ? 'df-row-past' : '' + // tabIndex groups: pickup col → dry col → wet col (vertical tab order) + const tabPickup = i + 1 + const tabDry = n + i + 1 + const tabWet = n * 2 + i + 1 return ( {DOW_NAMES[day.dow]} @@ -186,6 +191,7 @@ function WorksheetTab({ year, month }: { year: number; month: number }) { {canEdit && !day.is_past ? ( setOvr(day.date, 'pickup_rooms', e.target.value)} className="df-cell-input" /> ) : ( @@ -201,6 +207,7 @@ function WorksheetTab({ year, month }: { year: number; month: number }) { {canEdit ? ( setOvr(day.date, 'dry_override', e.target.value)} className="df-cell-input" /> @@ -209,6 +216,7 @@ function WorksheetTab({ year, month }: { year: number; month: number }) { {canEdit ? ( setOvr(day.date, 'wet_override', e.target.value)} className="df-cell-input" />