Keep new worktree dialog actions visible while scrolling (#21915)

* Keep new worktree dialog actions outside scrolling content

* Trigger missing PR checks
This commit is contained in:
Neil
2026-09-20 22:54:03 -07:00
committed by GitHub
parent 9324bb8137
commit 4feca6baa1
3 changed files with 13 additions and 11 deletions
@@ -59,6 +59,7 @@ export default function NewWorkspaceComposerCard(
const {
contextualTourSource,
containerClassName,
contentClassName,
composerRef,
onComposerNodeChange,
nameInputRef,
@@ -290,12 +291,12 @@ export default function NewWorkspaceComposerCard(
onDragEnter={dragHandlers.onDragEnter}
onDragLeave={dragHandlers.onDragLeave}
className={cn(
'grid min-w-0 gap-1 rounded-md transition',
'flex min-h-0 min-w-0 flex-1 flex-col gap-1 rounded-md transition',
isFileDragOver && 'ring-2 ring-ring/30',
containerClassName
)}
>
<div className="min-w-0 space-y-4 pt-3">
<div className={cn('min-h-0 min-w-0 space-y-4 pt-3', contentClassName)}>
<NewWorkspaceComposerProjectSection
{...props}
projectOptions={projectOptions}
@@ -337,10 +338,12 @@ export default function NewWorkspaceComposerCard(
activeFolderWorkspaceId={activeFolderWorkspaceId}
/>
</div>
<NewWorkspaceComposerFooter
{...props}
submitShortcutModifierLabel={getScreenSubmitModifierLabel()}
/>
<div className="shrink-0 space-y-1">
<NewWorkspaceComposerFooter
{...props}
submitShortcutModifierLabel={getScreenSubmitModifierLabel()}
/>
</div>
<AddRemoteHostDialog mode={addRemoteHostMode} onOpenChange={setAddRemoteHostMode} />
{setLocationDialogMounted ? (
<React.Suspense fallback={null}>
@@ -291,11 +291,9 @@ function QuickTabBody({
</DialogHeader>
<NewWorkspaceComposerCard
contextualTourSource={modalData.contextualTourSource}
// Why: the scroll container clips children (overflow-y-auto forces overflow-x to auto),
// while Orca's standard field focus ring paints 3px outside the control and the ghost
// "Advanced" disclosure pulls its padded hover highlight ~8px left to align its label with
// the field labels. Inset px-2 so both stay fully visible instead of clipped at the edge.
containerClassName="min-h-0 flex-1 overflow-y-auto px-2 scrollbar-sleek"
// Keep focus rings and the Advanced hover highlight inside the scroll padding.
containerClassName="px-2"
contentClassName="-mx-2 flex-1 overflow-y-auto px-2 pb-1 scrollbar-sleek"
composerRef={composerRef}
onComposerNodeChange={onComposerNodeChange}
nameInputRef={nameInputRef}
@@ -30,6 +30,7 @@ export const EMPTY_EPHEMERAL_VM_RECIPES: EphemeralVmRecipeOption[] = []
export type NewWorkspaceComposerCardProps = {
contextualTourSource?: string
containerClassName?: string
contentClassName?: string
composerRef?: React.RefObject<HTMLDivElement | null>
onComposerNodeChange?: (node: HTMLDivElement | null) => void
nameInputRef?: React.RefObject<HTMLInputElement | null>