fix: double close button

This commit is contained in:
WangCham
2026-04-06 08:22:31 +08:00
parent 8f1317b39e
commit 7cd063bb5d
2 changed files with 21 additions and 14 deletions

View File

@@ -405,7 +405,7 @@ export default function PluginInstallProgressDialog() {
return (
<Dialog open={open} onOpenChange={(o) => !o && handleClose()}>
<DialogContent className="w-[460px] max-h-[80vh] p-6 bg-white dark:bg-[#1a1a1e] overflow-y-auto">
<DialogContent className="w-[460px] max-h-[80vh] p-6 bg-white dark:bg-[#1a1a1e] overflow-y-auto" hideCloseButton>
<DialogHeader>
<DialogTitle className="flex items-center gap-3">
<Download className="size-5" />
@@ -422,14 +422,16 @@ export default function PluginInstallProgressDialog() {
{selectedTask && <TaskProgressContent task={selectedTask} />}
<div className="flex justify-end gap-2 mt-2">
{selectedTask &&
(selectedTask.stage === InstallStage.DONE ||
selectedTask.stage === InstallStage.ERROR) && (
<Button variant="outline" size="sm" onClick={handleDismiss}>
{t('plugins.installProgress.dismiss')}
</Button>
)}
<Button variant="default" size="sm" onClick={handleClose}>
<Button
variant="default"
size="sm"
onClick={
selectedTask?.stage === InstallStage.DONE ||
selectedTask?.stage === InstallStage.ERROR
? handleDismiss
: handleClose
}
>
{selectedTask?.stage === InstallStage.DONE ||
selectedTask?.stage === InstallStage.ERROR
? t('common.close')

View File

@@ -109,8 +109,11 @@ function DialogOverlay({
function DialogContent({
className,
children,
hideCloseButton = false,
...props
}: React.ComponentProps<typeof DialogPrimitive.Content>) {
}: React.ComponentProps<typeof DialogPrimitive.Content> & {
hideCloseButton?: boolean;
}) {
return (
<DialogPortal data-slot="dialog-portal">
<DialogOverlay />
@@ -123,10 +126,12 @@ function DialogContent({
{...props}
>
{children}
<DialogPrimitive.Close className="ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4">
<XIcon />
<span className="sr-only">Close</span>
</DialogPrimitive.Close>
{!hideCloseButton && (
<DialogPrimitive.Close className="ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4">
<XIcon />
<span className="sr-only">Close</span>
</DialogPrimitive.Close>
)}
</DialogPrimitive.Content>
</DialogPortal>
);