From 3cfd6ca654d5f74c04c4061dea593ec8f1525bf0 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 25 Apr 2026 06:56:56 +0000 Subject: [PATCH] Add commish right-click context menus to MiniDraftGrid team headers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds onAdjustTimeBankOpen and onSetAutodraftOpen props to MiniDraftGrid so the last-two-rounds display on the Participants tab shows the same "Adjust Time Bank…" / "Set Autodraft…" context menu on right-click that the full Draft Board already exposes. Also passes those callbacks from the route's miniDraftGrid useMemo so they are wired up for commissioners. https://claude.ai/code/session_017JCShLVs9xZ6FZmyrUFaE1 --- app/components/draft/MiniDraftGrid.tsx | 36 +++++++++++++++++-- .../leagues/$leagueId.draft.$seasonId.tsx | 4 ++- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/app/components/draft/MiniDraftGrid.tsx b/app/components/draft/MiniDraftGrid.tsx index 6646099..89a9da9 100644 --- a/app/components/draft/MiniDraftGrid.tsx +++ b/app/components/draft/MiniDraftGrid.tsx @@ -50,6 +50,8 @@ export interface MiniDraftGridProps { autodraftStatus?: Record; seasonStatus?: SeasonStatus; draftPaused?: boolean; + onAdjustTimeBankOpen?: (teamId: string) => void; + onSetAutodraftOpen?: (teamId: string) => void; onForceAutopick?: (pickNumber: number, teamId: string) => void; onForceManualPickOpen?: (pickNumber: number, teamId: string) => void; onReplacePick?: (pickNumber: number, teamId: string) => void; @@ -66,6 +68,8 @@ export const MiniDraftGrid = memo(function MiniDraftGrid({ autodraftStatus = {}, seasonStatus, draftPaused, + onAdjustTimeBankOpen, + onSetAutodraftOpen, onForceAutopick, onForceManualPickOpen, onReplacePick, @@ -151,8 +155,10 @@ export const MiniDraftGrid = memo(function MiniDraftGrid({ {draftSlots.map((slot) => { const teamTime = teamTimers[slot.team.id]; const isAutodraft = autodraftStatus[slot.team.id]?.isEnabled ?? false; - return ( -
+ const hasHeaderMenu = !!(onAdjustTimeBankOpen || onSetAutodraftOpen); + + const headerInner = ( +
{isAutodraft && ( A @@ -164,6 +170,32 @@ export const MiniDraftGrid = memo(function MiniDraftGrid({
); + + if (hasHeaderMenu) { + return ( + + +
+ {headerInner} +
+
+ + {onAdjustTimeBankOpen && ( + onAdjustTimeBankOpen(slot.team.id)}> + Adjust Time Bank... + + )} + {onSetAutodraftOpen && ( + onSetAutodraftOpen(slot.team.id)}> + Set Autodraft... + + )} + +
+ ); + } + + return
{headerInner}
; })}
diff --git a/app/routes/leagues/$leagueId.draft.$seasonId.tsx b/app/routes/leagues/$leagueId.draft.$seasonId.tsx index 0171c34..e73f1de 100644 --- a/app/routes/leagues/$leagueId.draft.$seasonId.tsx +++ b/app/routes/leagues/$leagueId.draft.$seasonId.tsx @@ -955,11 +955,13 @@ export default function DraftRoom() { autodraftStatus, seasonStatus: season.status, draftPaused: isPaused, + onAdjustTimeBankOpen: isCommissioner ? handleAdjustTimeBankOpen : undefined, + onSetAutodraftOpen: isCommissioner ? handleSetAutodraftOpen : undefined, onForceAutopick: isCommissioner ? handleForceAutopick : undefined, onForceManualPickOpen: isCommissioner ? handleForceManualPickOpen : undefined, onReplacePick: isCommissioner ? handleReplacePickOpen : undefined, onRollbackToPick: isCommissioner && !isDraftComplete ? handleRollbackToPick : undefined, - }), [draftSlots, draftGrid, currentPick, currentRound, ownerMap, teamTimers, autodraftStatus, season.status, isPaused, isCommissioner, handleForceAutopick, handleForceManualPickOpen, handleReplacePickOpen, handleRollbackToPick, isDraftComplete]); + }), [draftSlots, draftGrid, currentPick, currentRound, ownerMap, teamTimers, autodraftStatus, season.status, isPaused, isCommissioner, handleAdjustTimeBankOpen, handleSetAutodraftOpen, handleForceAutopick, handleForceManualPickOpen, handleReplacePickOpen, handleRollbackToPick, isDraftComplete]); const availableParticipantsSectionProps = useMemo(() => ({ participants: filteredParticipants,