Skip to content

Commit 2b46d34

Browse files
committed
fix: restore focus to sidebar toggle button and prevent focus flicker on mobile drawer close
1 parent 2bb06c6 commit 2b46d34

2 files changed

Lines changed: 17 additions & 3 deletions

File tree

apps/web/app/components/layout/AppSidebar.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,13 @@ export function AppSidebar({ isOpen = true, onOpenChange }: AppSidebarProps) {
131131
if (isMobile) {
132132
return (
133133
<Drawer open={isOpen} onOpenChange={onOpenChange} direction="left">
134-
<DrawerContent className="bg-background rounded-none border-none p-0 data-[vaul-drawer-direction=left]:w-72">
134+
<DrawerContent
135+
className="bg-background rounded-none border-none p-0 data-[vaul-drawer-direction=left]:w-72"
136+
onCloseAutoFocus={(e) => {
137+
e.preventDefault();
138+
document.getElementById("sidebar-toggle-button")?.focus();
139+
}}
140+
>
135141
<DrawerTitle className="sr-only">Navigation Menu</DrawerTitle>
136142
<DrawerDescription className="sr-only">
137143
Main application navigation links

apps/web/app/components/layout/SidebarToggle.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,29 @@
11
import { PanelLeftIcon } from "lucide-react";
2-
import { Button, cn } from "@kreozalabs/kei-ui";
2+
import { Button, cn, useIsMobile } from "@kreozalabs/kei-ui";
33

44
interface SidebarToggleProps {
55
onClick?: () => void;
66
className?: string;
77
}
88

99
export function SidebarToggle({ onClick, className }: SidebarToggleProps) {
10+
const isMobile = useIsMobile();
11+
1012
return (
1113
<Button
1214
variant="ghost"
1315
size="icon"
16+
id="sidebar-toggle-button"
1417
className={cn(
1518
"hover:bg-muted/80 text-muted-foreground/40 hover:text-foreground size-8 rounded-lg border-none transition-all active:scale-90",
1619
className
1720
)}
18-
onClick={onClick}
21+
onClick={(e) => {
22+
if (isMobile) {
23+
e.currentTarget.blur();
24+
}
25+
onClick?.();
26+
}}
1927
title="Toggle Sidebar (Ctrl+B)"
2028
>
2129
<PanelLeftIcon className="size-5" />

0 commit comments

Comments
 (0)