From 1b7e9eb168ebc170852f626a355c8582b970f3b9 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Tue, 7 Oct 2025 09:32:08 +0330 Subject: [PATCH] cancel order --- .../[id]/cancel/components/CancelForm.tsx | 108 +++++++++++++++ .../cancel/components/ProductSelection.tsx | 71 ++++++++++ src/app/profile/orders/[id]/cancel/page.tsx | 131 ++++++++++++++++++ .../[id]/components/OrderProductItem.tsx | 22 +-- src/app/profile/orders/[id]/page.tsx | 34 +++-- src/app/profile/orders/[id]/return/page.tsx | 9 ++ src/app/profile/orders/hooks/useOrdersData.ts | 15 +- src/app/profile/orders/service/Service.ts | 29 ++-- src/app/profile/orders/types/Types.ts | 22 +++ 9 files changed, 407 insertions(+), 34 deletions(-) create mode 100644 src/app/profile/orders/[id]/cancel/components/CancelForm.tsx create mode 100644 src/app/profile/orders/[id]/cancel/components/ProductSelection.tsx create mode 100644 src/app/profile/orders/[id]/cancel/page.tsx create mode 100644 src/app/profile/orders/[id]/return/page.tsx diff --git a/src/app/profile/orders/[id]/cancel/components/CancelForm.tsx b/src/app/profile/orders/[id]/cancel/components/CancelForm.tsx new file mode 100644 index 0000000..299afc4 --- /dev/null +++ b/src/app/profile/orders/[id]/cancel/components/CancelForm.tsx @@ -0,0 +1,108 @@ +'use client' +import React from 'react' +import { useForm } from 'react-hook-form' +import { yupResolver } from '@hookform/resolvers/yup' +import * as yup from 'yup' +import Select from '@/components/Select' +import { Button } from '@/components/ui/button' + +interface CancelFormData { + reason: string + description: string +} + +interface CancelFormProps { + onSubmit: (data: CancelFormData) => void + isLoading: boolean + cancelReasons: Array<{ _id: string; title: string }> + selectedItemsCount: number +} + +const cancelFormSchema = yup.object({ + reason: yup.string().required('دلیل لغو سفارش را انتخاب کنید'), + description: yup.string().required('توضیحات را وارد کنید').min(10, 'توضیحات باید حداقل ۱۰ کاراکتر باشد') +}) + +const CancelForm: React.FC = ({ + onSubmit, + isLoading, + cancelReasons, + selectedItemsCount +}) => { + const { + register, + handleSubmit, + watch, + setValue, + formState: { errors }, + reset + } = useForm({ + resolver: yupResolver(cancelFormSchema) + }) + + const handleFormSubmit = (data: CancelFormData) => { + onSubmit(data) + reset() + } + + return ( +
+

دلیل لغو و توضیحات

+ +
+