mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-04 09:13:08 +00:00
fix: Address PR #695 review feedback for TooltipProvider refactor
- Add delayDuration={300} to global TooltipProvider in app.tsx to
maintain consistent tooltip timing (previously many components used
delayDuration={200}, so 300ms is a good compromise per review)
- Remove leftover TooltipProvider wrappers in task-node.tsx that were
still referenced after import was removed (causing build failure)
- Remove leftover TooltipProvider wrapper in account-section.tsx
- Fix Tooltip+Popover nesting focus management issue in
graph-filter-controls.tsx by adding onOpenAutoFocus={(e) =>
e.preventDefault()} to PopoverContent components
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -76,7 +76,7 @@ export default function App() {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TooltipProvider>
|
<TooltipProvider delayDuration={300}>
|
||||||
<RouterProvider router={router} />
|
<RouterProvider router={router} />
|
||||||
{showSplash && !disableSplashScreen && <SplashScreen onComplete={handleSplashComplete} />}
|
{showSplash && !disableSplashScreen && <SplashScreen onComplete={handleSplashComplete} />}
|
||||||
</TooltipProvider>
|
</TooltipProvider>
|
||||||
|
|||||||
@@ -164,7 +164,11 @@ export function GraphFilterControls({
|
|||||||
</TooltipTrigger>
|
</TooltipTrigger>
|
||||||
<TooltipContent>Filter by Category</TooltipContent>
|
<TooltipContent>Filter by Category</TooltipContent>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
<PopoverContent align="start" className="w-56 p-2">
|
<PopoverContent
|
||||||
|
align="start"
|
||||||
|
className="w-56 p-2"
|
||||||
|
onOpenAutoFocus={(e) => e.preventDefault()}
|
||||||
|
>
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<div className="text-xs font-medium text-muted-foreground px-2 py-1">Categories</div>
|
<div className="text-xs font-medium text-muted-foreground px-2 py-1">Categories</div>
|
||||||
|
|
||||||
@@ -236,7 +240,11 @@ export function GraphFilterControls({
|
|||||||
</TooltipTrigger>
|
</TooltipTrigger>
|
||||||
<TooltipContent>Filter by Status</TooltipContent>
|
<TooltipContent>Filter by Status</TooltipContent>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
<PopoverContent align="start" className="w-56 p-2">
|
<PopoverContent
|
||||||
|
align="start"
|
||||||
|
className="w-56 p-2"
|
||||||
|
onOpenAutoFocus={(e) => e.preventDefault()}
|
||||||
|
>
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<div className="text-xs font-medium text-muted-foreground px-2 py-1">Status</div>
|
<div className="text-xs font-medium text-muted-foreground px-2 py-1">Status</div>
|
||||||
|
|
||||||
|
|||||||
@@ -286,50 +286,44 @@ export const TaskNode = memo(function TaskNode({ data, selected }: TaskNodeProps
|
|||||||
|
|
||||||
{/* Blocked indicator */}
|
{/* Blocked indicator */}
|
||||||
{data.isBlocked && !data.error && data.status === 'backlog' && (
|
{data.isBlocked && !data.error && data.status === 'backlog' && (
|
||||||
<TooltipProvider delayDuration={200}>
|
<Tooltip>
|
||||||
<Tooltip>
|
<TooltipTrigger asChild>
|
||||||
<TooltipTrigger asChild>
|
<div className="p-1 rounded bg-orange-500/20">
|
||||||
<div className="p-1 rounded bg-orange-500/20">
|
<Lock className="w-3 h-3 text-orange-500" />
|
||||||
<Lock className="w-3 h-3 text-orange-500" />
|
</div>
|
||||||
</div>
|
</TooltipTrigger>
|
||||||
</TooltipTrigger>
|
<TooltipContent side="top" className="text-xs max-w-[200px]">
|
||||||
<TooltipContent side="top" className="text-xs max-w-[200px]">
|
<p>Blocked by {data.blockingDependencies.length} dependencies</p>
|
||||||
<p>Blocked by {data.blockingDependencies.length} dependencies</p>
|
</TooltipContent>
|
||||||
</TooltipContent>
|
</Tooltip>
|
||||||
</Tooltip>
|
|
||||||
</TooltipProvider>
|
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Error indicator */}
|
{/* Error indicator */}
|
||||||
{data.error && (
|
{data.error && (
|
||||||
<TooltipProvider delayDuration={200}>
|
<Tooltip>
|
||||||
<Tooltip>
|
<TooltipTrigger asChild>
|
||||||
<TooltipTrigger asChild>
|
<div className="p-1 rounded bg-[var(--status-error-bg)]">
|
||||||
<div className="p-1 rounded bg-[var(--status-error-bg)]">
|
<AlertCircle className="w-3 h-3 text-[var(--status-error)]" />
|
||||||
<AlertCircle className="w-3 h-3 text-[var(--status-error)]" />
|
</div>
|
||||||
</div>
|
</TooltipTrigger>
|
||||||
</TooltipTrigger>
|
<TooltipContent side="top" className="text-xs max-w-[250px]">
|
||||||
<TooltipContent side="top" className="text-xs max-w-[250px]">
|
<p>{data.error}</p>
|
||||||
<p>{data.error}</p>
|
</TooltipContent>
|
||||||
</TooltipContent>
|
</Tooltip>
|
||||||
</Tooltip>
|
|
||||||
</TooltipProvider>
|
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Stopped indicator - task is in_progress but not actively running */}
|
{/* Stopped indicator - task is in_progress but not actively running */}
|
||||||
{isStopped && (
|
{isStopped && (
|
||||||
<TooltipProvider delayDuration={200}>
|
<Tooltip>
|
||||||
<Tooltip>
|
<TooltipTrigger asChild>
|
||||||
<TooltipTrigger asChild>
|
<div className="p-1 rounded bg-[var(--status-warning-bg)]">
|
||||||
<div className="p-1 rounded bg-[var(--status-warning-bg)]">
|
<Pause className="w-3 h-3 text-[var(--status-warning)]" />
|
||||||
<Pause className="w-3 h-3 text-[var(--status-warning)]" />
|
</div>
|
||||||
</div>
|
</TooltipTrigger>
|
||||||
</TooltipTrigger>
|
<TooltipContent side="top" className="text-xs max-w-[200px]">
|
||||||
<TooltipContent side="top" className="text-xs max-w-[200px]">
|
<p>Task paused - click menu to resume</p>
|
||||||
<p>Task paused - click menu to resume</p>
|
</TooltipContent>
|
||||||
</TooltipContent>
|
</Tooltip>
|
||||||
</Tooltip>
|
|
||||||
</TooltipProvider>
|
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Actions dropdown */}
|
{/* Actions dropdown */}
|
||||||
|
|||||||
@@ -134,24 +134,22 @@ export function AccountSection() {
|
|||||||
})}
|
})}
|
||||||
</SelectContent>
|
</SelectContent>
|
||||||
</Select>
|
</Select>
|
||||||
<TooltipProvider>
|
<Tooltip>
|
||||||
<Tooltip>
|
<TooltipTrigger asChild>
|
||||||
<TooltipTrigger asChild>
|
<Button
|
||||||
<Button
|
variant="ghost"
|
||||||
variant="ghost"
|
size="icon"
|
||||||
size="icon"
|
onClick={handleRefreshEditors}
|
||||||
onClick={handleRefreshEditors}
|
disabled={isRefreshing || isLoadingEditors}
|
||||||
disabled={isRefreshing || isLoadingEditors}
|
className="shrink-0 h-9 w-9"
|
||||||
className="shrink-0 h-9 w-9"
|
>
|
||||||
>
|
{isRefreshing ? <Spinner size="sm" /> : <RefreshCw className="w-4 h-4" />}
|
||||||
{isRefreshing ? <Spinner size="sm" /> : <RefreshCw className="w-4 h-4" />}
|
</Button>
|
||||||
</Button>
|
</TooltipTrigger>
|
||||||
</TooltipTrigger>
|
<TooltipContent>
|
||||||
<TooltipContent>
|
<p>Refresh available editors</p>
|
||||||
<p>Refresh available editors</p>
|
</TooltipContent>
|
||||||
</TooltipContent>
|
</Tooltip>
|
||||||
</Tooltip>
|
|
||||||
</TooltipProvider>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user