diff --git a/apps/web/components/orders/order-buttons.tsx b/apps/web/components/orders/order-buttons.tsx index 12bfa69..0ac070b 100644 --- a/apps/web/components/orders/order-buttons.tsx +++ b/apps/web/components/orders/order-buttons.tsx @@ -11,7 +11,7 @@ export function OrderButtons({ documentId }: Readonly) { const { data: { order } = {} } = useOrderQuery({ documentId }); - const { mutate: updateSlot } = useOrderMutation({ documentId }); + const { isPending, mutate: updateSlot } = useOrderMutation({ documentId }); if (!order) return null; @@ -36,6 +36,7 @@ export function OrderButtons({ documentId }: Readonly) { return ( handleCancel() } diff --git a/apps/web/components/schedule/slot-buttons.tsx b/apps/web/components/schedule/slot-buttons.tsx index c2f4044..018469a 100644 --- a/apps/web/components/schedule/slot-buttons.tsx +++ b/apps/web/components/schedule/slot-buttons.tsx @@ -10,9 +10,9 @@ import { useRouter } from 'next/navigation'; export function SlotButtons({ documentId }: Readonly) { const { data: { slot } = {} } = useSlotQuery({ documentId }); - const { mutate: updateSlot } = useSlotMutation({ documentId }); + const { isPending: isPendingUpdate, mutate: updateSlot } = useSlotMutation({ documentId }); - const { mutate: deleteSlot } = useSlotDelete({ documentId }); + const { isPending: isPendingDelete, mutate: deleteSlot } = useSlotDelete({ documentId }); const router = useRouter(); @@ -38,6 +38,7 @@ export function SlotButtons({ documentId }: Readonly) { return ( handleDeleteSlot()} onToggle={() => { diff --git a/apps/web/components/shared/action-panel.tsx b/apps/web/components/shared/action-panel.tsx index 4b1e134..c57db51 100644 --- a/apps/web/components/shared/action-panel.tsx +++ b/apps/web/components/shared/action-panel.tsx @@ -5,6 +5,7 @@ import { Card } from '@repo/ui/components/ui/card'; import { Ban, Check, Lock, RotateCcw, Trash2, Unlock } from 'lucide-react'; type FloatingActionPanelProps = { + readonly isLoading?: boolean; readonly isOpen?: boolean; readonly onCancel?: () => void; readonly onConfirm?: () => void; @@ -14,6 +15,7 @@ type FloatingActionPanelProps = { }; export default function FloatingActionPanel({ + isLoading = false, isOpen, onCancel, onConfirm, @@ -38,6 +40,7 @@ export default function FloatingActionPanel({ : 'bg-gray-500 text-white hover:bg-gray-600 dark:bg-gray-600 dark:hover:bg-gray-700' } `} + disabled={isLoading} onClick={onToggle} size="sm" > @@ -59,6 +62,7 @@ export default function FloatingActionPanel({ {onRepeat && (