| ... | @@ -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 | }; |
| 256 | | 260 | |
| 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 | <MenuTrigger | 362 | <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"> |