This commit is contained in:
David Arranz 2026-04-13 09:53:48 +02:00
parent 65c3e1f324
commit 0caf747d4e

View File

@ -2,6 +2,7 @@ import {
Button,
DropdownMenu,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuTrigger,
@ -75,12 +76,10 @@ export const UpdateCommitButtonGroup = ({
// ⛳️ RHF opcional: auto-detectar isSubmitting si no se pasó isLoading
let rhfIsSubmitting = false;
try {
const ctx = useFormContext();
rhfIsSubmitting = !!ctx?.formState?.isSubmitting;
} catch {
// No hay provider de RHF; ignorar
}
const ctx = useFormContext();
rhfIsSubmitting = !!ctx?.formState?.isSubmitting;
const busy = isLoading ?? rhfIsSubmitting;
const computedDisabled = !!(disabled || (preventDoubleSubmit && busy));
@ -100,53 +99,57 @@ export const UpdateCommitButtonGroup = ({
{/* Menú de acciones adicionales */}
{hasSecondaryActions && (
<DropdownMenu>
<DropdownMenuTrigger>
<Button className="px-2" disabled={computedDisabled} size="sm" variant="ghost">
<MoreHorizontalIcon className="h-4 w-4" />
<span className="sr-only">Más acciones</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuTrigger
render={
<Button className="px-2" disabled={computedDisabled} size="sm" variant="ghost">
<MoreHorizontalIcon className="h-4 w-4" />
<span className="sr-only">Más acciones</span>
</Button>
}
/>
<DropdownMenuContent align="end" className="w-48">
{onReset && (
<DropdownMenuItem
className="text-muted-foreground"
disabled={computedDisabled}
onClick={onReset}
>
<RotateCcwIcon className="mr-2 h-4 w-4" />
Deshacer cambios
</DropdownMenuItem>
)}
{onPreview && (
<DropdownMenuItem className="text-muted-foreground" onClick={onPreview}>
<EyeIcon className="mr-2 h-4 w-4" />
Vista previa
</DropdownMenuItem>
)}
{onDuplicate && (
<DropdownMenuItem className="text-muted-foreground" onClick={onDuplicate}>
<CopyIcon className="mr-2 h-4 w-4" />
Duplicar
</DropdownMenuItem>
)}
{onBack && (
<DropdownMenuItem className="text-muted-foreground" onClick={onBack}>
<ArrowLeftIcon className="mr-2 h-4 w-4" />
Volver
</DropdownMenuItem>
)}
{onDelete && (
<>
<DropdownMenuSeparator />
<DropdownMenuGroup>
{onReset && (
<DropdownMenuItem
className="text-destructive focus:text-destructive"
onClick={onDelete}
className="text-muted-foreground"
disabled={computedDisabled}
onClick={onReset}
>
<Trash2Icon className="mr-2 h-4 w-4" />
Eliminar
<RotateCcwIcon className="mr-2 h-4 w-4" />
Deshacer cambios
</DropdownMenuItem>
</>
)}
)}
{onPreview && (
<DropdownMenuItem className="text-muted-foreground" onClick={onPreview}>
<EyeIcon className="mr-2 h-4 w-4" />
Vista previa
</DropdownMenuItem>
)}
{onDuplicate && (
<DropdownMenuItem className="text-muted-foreground" onClick={onDuplicate}>
<CopyIcon className="mr-2 h-4 w-4" />
Duplicar
</DropdownMenuItem>
)}
{onBack && (
<DropdownMenuItem className="text-muted-foreground" onClick={onBack}>
<ArrowLeftIcon className="mr-2 h-4 w-4" />
Volver
</DropdownMenuItem>
)}
{onDelete && (
<>
<DropdownMenuSeparator />
<DropdownMenuItem
className="text-destructive focus:text-destructive"
onClick={onDelete}
>
<Trash2Icon className="mr-2 h-4 w-4" />
Eliminar
</DropdownMenuItem>
</>
)}
</DropdownMenuGroup>
</DropdownMenuContent>
</DropdownMenu>
)}