order-buttons: add onComplete button

This commit is contained in:
vchikalkin 2025-06-27 14:19:58 +03:00
parent c5799a7f00
commit 204e3b7581
2 changed files with 23 additions and 1 deletions

View File

@ -38,6 +38,12 @@ export function OrderButtons({ documentId }: Readonly<OrderComponentProps>) {
}
}
function handleOnComplete() {
if (isMaster) {
updateSlot({ data: { state: Enum_Order_State.Completed } });
}
}
function handleOnRepeat() {
push('/orders/add', order);
}
@ -48,6 +54,7 @@ export function OrderButtons({ documentId }: Readonly<OrderComponentProps>) {
onCancel={
isCancelled || (!isMaster && isCancelling) || isCompleted ? undefined : () => handleCancel()
}
onComplete={isApproved && isMaster ? handleOnComplete : undefined}
onConfirm={
!isMaster ||
isApproved ||

View File

@ -8,6 +8,7 @@ type FloatingActionPanelProps = {
readonly isLoading?: boolean;
readonly isOpen?: boolean;
readonly onCancel?: () => void;
readonly onComplete?: () => void;
readonly onConfirm?: () => void;
readonly onDelete?: () => void;
readonly onRepeat?: () => void;
@ -18,13 +19,14 @@ export default function FloatingActionPanel({
isLoading = false,
isOpen,
onCancel,
onComplete,
onConfirm,
onDelete,
onRepeat,
onToggle,
}: FloatingActionPanelProps) {
// Если не переданы обработчики, скрываем панель
if (!onCancel && !onConfirm && !onDelete && !onRepeat && !onToggle) return null;
if (!onCancel && !onConfirm && !onDelete && !onComplete && !onRepeat && !onToggle) return null;
return (
<Card className="fixed inset-x-4 bottom-4 z-50 rounded-3xl border-0 bg-background/95 p-4 shadow-2xl backdrop-blur-sm dark:bg-primary/5 md:bottom-6 md:left-auto md:right-6 md:p-6">
@ -71,6 +73,19 @@ export default function FloatingActionPanel({
</Button>
)}
{/* Кнопка выполнено */}
{onComplete && (
<Button
className="w-full rounded-2xl bg-green-500 text-sm text-white transition-all duration-200 hover:bg-green-600 dark:bg-green-600 dark:hover:bg-green-700 sm:w-auto"
disabled={isLoading}
onClick={onComplete}
size="sm"
>
<Check className="mr-2 size-4" />
<span>Завершить</span>
</Button>
)}
{/* Кнопка удалить */}
{onDelete && (
<Button