From 17717eb1958133cffff5eb0817331904a55753ed Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Sun, 7 Jun 2026 14:23:51 +0330 Subject: [PATCH] clean code --- src/pages/designer/Request.tsx | 147 +----------------- .../components/DesignerRequestForm.tsx | 142 +++++++++++++++++ src/pages/designer/designerRequestForm.ts | 44 ++++++ src/pages/designer/hooks/useDesignerData.ts | 38 +++++ 4 files changed, 230 insertions(+), 141 deletions(-) create mode 100644 src/pages/designer/components/DesignerRequestForm.tsx create mode 100644 src/pages/designer/designerRequestForm.ts diff --git a/src/pages/designer/Request.tsx b/src/pages/designer/Request.tsx index 08bd0bc..a747d3a 100644 --- a/src/pages/designer/Request.tsx +++ b/src/pages/designer/Request.tsx @@ -1,152 +1,17 @@ -import Button from "@/components/Button"; -import DatePicker from "@/components/DatePicker"; -import Error from "@/components/Error"; -import Input from "@/components/Input"; -import Textarea from "@/components/Textarea"; -import { toast } from "@/components/Toast"; -import UploadBoxDraggble from "@/components/UploadBoxDraggble"; -import { extractErrorMessage } from "@/helpers/utils"; +import DesignerRequestForm from "@/pages/designer/components/DesignerRequestForm"; +import { useSubmitDesignRequest } from "@/pages/designer/hooks/useDesignerData"; import { usePageTitle } from "@/hooks/usePageTitle"; -import { useInitiateDesignRequest } from "@/pages/designer/hooks/useDesignerData"; -import type { DesignerRequestFormValues } from "@/pages/designer/types/Types"; -import { useMultipleUpload } from "@/pages/uploader/hooks/useUploaderData"; -import { Form, Formik, type FormikHelpers, type FormikProps } from "formik"; import { type FC } from "react"; -import * as Yup from "yup"; - -const PRICE_PER_PAGE = 1000; - -const initialValues: DesignerRequestFormValues = { - title: "", - count: "", - desc: "", - expectedDate: "", - attachments: [], -}; - -const validationSchema = Yup.object({ - title: Yup.string().trim().required("عنوان کاتالوگ الزامی است"), - count: Yup.number() - .transform((value, originalValue) => (originalValue === "" ? undefined : value)) - .optional() - .min(1, "حداقل تعداد صفحات ۱ است"), - desc: Yup.string().trim(), - expectedDate: Yup.string().required("زمان تحویل الزامی است"), - attachments: Yup.array(), -}); - -type DesignerRequestFormFieldsProps = FormikProps; - -const DesignerRequestFormFields: FC = ({ values, errors, touched, isSubmitting, setFieldValue, setFieldTouched, handleChange, handleBlur }) => { - const totalPrice = (values.count === "" ? 0 : values.count) * PRICE_PER_PAGE; - - const handleAttachmentChange = (files: File[]) => { - setFieldValue("attachments", files); - setFieldTouched("attachments", true); - }; - - return ( -
- - -
- { - setFieldValue("expectedDate", date); - setFieldTouched("expectedDate", true); - }} - error_text={touched.expectedDate ? errors.expectedDate : undefined} - /> - { - const value = event.target.value; - setFieldValue("count", value === "" ? "" : Number(value)); - }} - onBlur={handleBlur} - error_text={touched.count ? errors.count : undefined} - /> -
- -