authorgravatar for hi@4bs3nt.comjan <hi@4bs3nt.com> 2026-07-27 19:59:21+02:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-07-27 19:59:21+02:00
logf0121f31d0e7c069f4007480fc13907c28efd4d5
treeabf695a8210b7b498c390137c3a6f50bff100c58
parent0e19c103ef07b6a2c143839d2d2a9cf223915d1e
signature Signed by PGP key B5690EEEBB952194

fix: close actions dropdown when editing (#4660)


1 files changed, 15 insertions(+), 2 deletions(-)

apps/web/src/components/ProjectScriptsControl.tsx+15-2
...@@ -138,6 +138,10 @@ export default function ProjectScriptsControl({...@@ -138,6 +138,10 @@ export default function ProjectScriptsControl({
138}: ProjectScriptsControlProps) {138}: ProjectScriptsControlProps) {
139 const addScriptFormId = React.useId();139 const addScriptFormId = React.useId();
140 const [editingScriptId, setEditingScriptId] = useState<string | null>(null);140 const [editingScriptId, setEditingScriptId] = useState<string | null>(null);
141 const [actionsMenuOpen, setActionsMenuOpen] = useState({
142 scripts: false,
143 imports: false,
144 });
141 const [dialogOpen, setDialogOpen] = useState(false);145 const [dialogOpen, setDialogOpen] = useState(false);
142 const [name, setName] = useState("");146 const [name, setName] = useState("");
143 const [command, setCommand] = useState("");147 const [command, setCommand] = useState("");
...@@ -255,6 +259,7 @@ export default function ProjectScriptsControl({...@@ -255,6 +259,7 @@ export default function ProjectScriptsControl({
255 };259 };
256260
257 const openEditDialog = (script: ProjectScript) => {261 const openEditDialog = (script: ProjectScript) => {
262 setActionsMenuOpen({ scripts: false, imports: false });
258 setEditingScriptId(script.id);263 setEditingScriptId(script.id);
259 setName(script.name);264 setName(script.name);
260 setCommand(script.command);265 setCommand(script.command);
...@@ -349,7 +354,11 @@ export default function ProjectScriptsControl({...@@ -349,7 +354,11 @@ export default function ProjectScriptsControl({
349 <TooltipPopup side="top">Run {primaryScript.name}</TooltipPopup>354 <TooltipPopup side="top">Run {primaryScript.name}</TooltipPopup>
350 </Tooltip>355 </Tooltip>
351 <GroupSeparator className="hidden @3xl/header-actions:block" />356 <GroupSeparator className="hidden @3xl/header-actions:block" />
352 <Menu highlightItemOnHover={false}>357 <Menu
358 highlightItemOnHover={false}
359 open={actionsMenuOpen.scripts}
360 onOpenChange={(open) => setActionsMenuOpen({ scripts: open, imports: false })}
361 >
353 <MenuTrigger362 <MenuTrigger
354 render={<Button size="icon-xs" variant="outline" aria-label="Script actions" />}363 render={<Button size="icon-xs" variant="outline" aria-label="Script actions" />}
355 >364 >
...@@ -408,7 +417,11 @@ export default function ProjectScriptsControl({...@@ -408,7 +417,11 @@ export default function ProjectScriptsControl({
408 </Menu>417 </Menu>
409 </Group>418 </Group>
410 ) : importableScripts.length > 0 ? (419 ) : importableScripts.length > 0 ? (
411 <Menu highlightItemOnHover={false}>420 <Menu
421 highlightItemOnHover={false}
422 open={actionsMenuOpen.imports}
423 onOpenChange={(open) => setActionsMenuOpen({ scripts: false, imports: open })}
424 >
412 <MenuTrigger render={<Button size="xs" variant="outline" aria-label="Project actions" />}>425 <MenuTrigger render={<Button size="xs" variant="outline" aria-label="Project actions" />}>
413 <PlusIcon className="size-3.5" />426 <PlusIcon className="size-3.5" />
414 <span className="sr-only @3xl/header-actions:not-sr-only @3xl/header-actions:ml-0.5">427 <span className="sr-only @3xl/header-actions:not-sr-only @3xl/header-actions:ml-0.5">