From 032050bacc4b0a48e3993b2cbd931d941b2395cf Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Sun, 7 Jun 2026 12:37:41 +0330 Subject: [PATCH] fix bug design datepcker --- src/components/DatePicker.tsx | 33 ++-- src/pages/designer/Request.tsx | 308 ++++++++++++++------------------- src/shared/SideBar.tsx | 67 +------ 3 files changed, 153 insertions(+), 255 deletions(-) diff --git a/src/components/DatePicker.tsx b/src/components/DatePicker.tsx index 04b6e75..5be5c1c 100644 --- a/src/components/DatePicker.tsx +++ b/src/components/DatePicker.tsx @@ -5,6 +5,7 @@ import persian_fa from 'react-date-object/locales/persian_fa'; import DateObject from 'react-date-object'; import { clx } from '../helpers/utils'; import { Calendar } from 'iconsax-react'; +import Error from './Error'; type Props = { onChange: (date: string) => void; @@ -88,26 +89,22 @@ const DatePickerComponent: FC = (props: Props) => {
{props.label}
} -
- setValue(date as DateObject)} - calendar={persian} - locale={persian_fa} - calendarPosition="bottom-right" - className={`rmdp-mobile ${props.className}`} - /> +
+
+ setValue(date as DateObject)} + calendar={persian} + locale={persian_fa} + calendarPosition="bottom-right" + className={`rmdp-mobile ${props.className}`} + /> + +
{props.error_text && props.error_text !== '' && ( -
- {props.error_text} -
+ )} - -
); diff --git a/src/pages/designer/Request.tsx b/src/pages/designer/Request.tsx index 9f3b56d..634b598 100644 --- a/src/pages/designer/Request.tsx +++ b/src/pages/designer/Request.tsx @@ -1,205 +1,157 @@ -import { usePageTitle } from '@/hooks/usePageTitle' -import { type FC } from 'react' -import { Form, Formik, type FormikProps } from 'formik' -import * as Yup from 'yup' -import Button from '@/components/Button' -import DatePicker from '@/components/DatePicker' -import Input from '@/components/Input' -import Select from '@/components/Select' -import Textarea from '@/components/Textarea' -import UploadBoxDraggble from '@/components/UploadBoxDraggble' -import Error from '@/components/Error' -import { useSingleUpload } from '@/pages/uploader/hooks/useUploaderData' +import Button from "@/components/Button"; +import DatePicker from "@/components/DatePicker"; +import Error from "@/components/Error"; +import Input from "@/components/Input"; +import Select from "@/components/Select"; +import Textarea from "@/components/Textarea"; +import UploadBoxDraggble from "@/components/UploadBoxDraggble"; +import { usePageTitle } from "@/hooks/usePageTitle"; +import { useSingleUpload } from "@/pages/uploader/hooks/useUploaderData"; +import { Form, Formik, type FormikProps } from "formik"; +import { type FC } from "react"; +import * as Yup from "yup"; -const PRICE_PER_PAGE = 1000 +const PRICE_PER_PAGE = 1000; const pageCountOptions = Array.from({ length: 20 }, (_, index) => { - const value = index + 1 - return { - value: String(value), - label: String(value), - } -}) + const value = index + 1; + return { + value: String(value), + label: String(value), + }; +}); export type DesignerRequestFormValues = { - title: string - count: number - desc: string - expectedDate: string - attachments: string[] -} + title: string; + count: number; + desc: string; + expectedDate: string; + attachments: string[]; +}; const initialValues: DesignerRequestFormValues = { - title: '', - count: 1, - desc: '', - expectedDate: '', - attachments: [], -} + title: "", + count: 1, + desc: "", + expectedDate: "", + attachments: [], +}; const validationSchema = Yup.object({ - title: Yup.string().trim().required('عنوان کاتالوگ الزامی است'), - count: Yup.number() - .min(1, 'حداقل تعداد صفحات ۱ است') - .max(20, 'حداکثر تعداد صفحات ۲۰ است') - .required('تعداد صفحات الزامی است'), - desc: Yup.string().trim(), - expectedDate: Yup.string().required('زمان تحویل الزامی است'), - attachments: Yup.array().of(Yup.string()), -}) + title: Yup.string().trim().required("عنوان کاتالوگ الزامی است"), + count: Yup.number().min(1, "حداقل تعداد صفحات ۱ است").max(20, "حداکثر تعداد صفحات ۲۰ است").required("تعداد صفحات الزامی است"), + desc: Yup.string().trim(), + expectedDate: Yup.string().required("زمان تحویل الزامی است"), + attachments: Yup.array().of(Yup.string()), +}); type DesignerRequestFormFieldsProps = FormikProps & { - uploadFile: ReturnType['mutateAsync'] - isUploading: boolean -} + uploadFile: ReturnType["mutateAsync"]; + isUploading: boolean; +}; const DesignerRequestFormFields: FC = ({ - values, - errors, - touched, - isSubmitting, - setFieldValue, - setFieldTouched, - handleChange, - handleBlur, - uploadFile, - isUploading, + values, + errors, + touched, + isSubmitting, + setFieldValue, + setFieldTouched, + handleChange, + handleBlur, + uploadFile, + isUploading, }) => { - const totalPrice = values.count * PRICE_PER_PAGE + const totalPrice = values.count * PRICE_PER_PAGE; - const handleAttachmentChange = async (files: File[]) => { - if (files.length === 0) { - await setFieldValue('attachments', []) - setFieldTouched('attachments', true) - return - } - - try { - const response = await uploadFile(files[0]) - await setFieldValue('attachments', [response.data.url]) - } catch { - await setFieldValue('attachments', []) - } finally { - setFieldTouched('attachments', true) - } + const handleAttachmentChange = async (files: File[]) => { + if (files.length === 0) { + await setFieldValue("attachments", []); + setFieldTouched("attachments", true); + return; } - return ( -
- + try { + const response = await uploadFile(files[0]); + await setFieldValue("attachments", [response.data.url]); + } catch { + await setFieldValue("attachments", []); + } finally { + setFieldTouched("attachments", true); + } + }; -
- { - setFieldValue('expectedDate', date) - setFieldTouched('expectedDate', true) - }} - error_text={touched.expectedDate ? errors.expectedDate : undefined} - /> - -