.
This commit is contained in:
parent
65c3e1f324
commit
0caf747d4e
@ -2,6 +2,7 @@ import {
|
|||||||
Button,
|
Button,
|
||||||
DropdownMenu,
|
DropdownMenu,
|
||||||
DropdownMenuContent,
|
DropdownMenuContent,
|
||||||
|
DropdownMenuGroup,
|
||||||
DropdownMenuItem,
|
DropdownMenuItem,
|
||||||
DropdownMenuSeparator,
|
DropdownMenuSeparator,
|
||||||
DropdownMenuTrigger,
|
DropdownMenuTrigger,
|
||||||
@ -75,12 +76,10 @@ export const UpdateCommitButtonGroup = ({
|
|||||||
|
|
||||||
// ⛳️ RHF opcional: auto-detectar isSubmitting si no se pasó isLoading
|
// ⛳️ RHF opcional: auto-detectar isSubmitting si no se pasó isLoading
|
||||||
let rhfIsSubmitting = false;
|
let rhfIsSubmitting = false;
|
||||||
try {
|
|
||||||
const ctx = useFormContext();
|
const ctx = useFormContext();
|
||||||
rhfIsSubmitting = !!ctx?.formState?.isSubmitting;
|
rhfIsSubmitting = !!ctx?.formState?.isSubmitting;
|
||||||
} catch {
|
|
||||||
// No hay provider de RHF; ignorar
|
|
||||||
}
|
|
||||||
const busy = isLoading ?? rhfIsSubmitting;
|
const busy = isLoading ?? rhfIsSubmitting;
|
||||||
const computedDisabled = !!(disabled || (preventDoubleSubmit && busy));
|
const computedDisabled = !!(disabled || (preventDoubleSubmit && busy));
|
||||||
|
|
||||||
@ -100,53 +99,57 @@ export const UpdateCommitButtonGroup = ({
|
|||||||
{/* Menú de acciones adicionales */}
|
{/* Menú de acciones adicionales */}
|
||||||
{hasSecondaryActions && (
|
{hasSecondaryActions && (
|
||||||
<DropdownMenu>
|
<DropdownMenu>
|
||||||
<DropdownMenuTrigger>
|
<DropdownMenuTrigger
|
||||||
<Button className="px-2" disabled={computedDisabled} size="sm" variant="ghost">
|
render={
|
||||||
<MoreHorizontalIcon className="h-4 w-4" />
|
<Button className="px-2" disabled={computedDisabled} size="sm" variant="ghost">
|
||||||
<span className="sr-only">Más acciones</span>
|
<MoreHorizontalIcon className="h-4 w-4" />
|
||||||
</Button>
|
<span className="sr-only">Más acciones</span>
|
||||||
</DropdownMenuTrigger>
|
</Button>
|
||||||
|
}
|
||||||
|
/>
|
||||||
<DropdownMenuContent align="end" className="w-48">
|
<DropdownMenuContent align="end" className="w-48">
|
||||||
{onReset && (
|
<DropdownMenuGroup>
|
||||||
<DropdownMenuItem
|
{onReset && (
|
||||||
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 />
|
|
||||||
<DropdownMenuItem
|
<DropdownMenuItem
|
||||||
className="text-destructive focus:text-destructive"
|
className="text-muted-foreground"
|
||||||
onClick={onDelete}
|
disabled={computedDisabled}
|
||||||
|
onClick={onReset}
|
||||||
>
|
>
|
||||||
<Trash2Icon className="mr-2 h-4 w-4" />
|
<RotateCcwIcon className="mr-2 h-4 w-4" />
|
||||||
Eliminar
|
Deshacer cambios
|
||||||
</DropdownMenuItem>
|
</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>
|
</DropdownMenuContent>
|
||||||
</DropdownMenu>
|
</DropdownMenu>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user