diff --git a/src/pages/setting/JobsPage.tsx b/src/pages/setting/JobsPage.tsx new file mode 100644 index 0000000..378e8ec --- /dev/null +++ b/src/pages/setting/JobsPage.tsx @@ -0,0 +1,107 @@ +import { type FC, useEffect, useState } from 'react' +import { useGetSiteSetting, useUpdateSiteSetting } from './hooks/useSettingData' +import { SiteSettingPageEnum } from './enum/Enum' +import { useFormik } from 'formik' +import type { UpdateSiteSetting } from './types/Types' +import { toast } from 'react-toastify' +import { Pages } from '@/config/Pages' +import * as Yup from 'yup' +import { useNavigate } from 'react-router-dom' +import Button from '@/components/Button' +import TextEditor from '@/components/TextEditor' +import PageLoading from '@/components/PageLoading' +import Error from '@/components/Error' +import { TickCircle } from 'iconsax-react' + +const JobsPage: FC = () => { + const navigate = useNavigate() + const { data: siteSetting, isLoading: siteSettingLoading, error: siteSettingError } = useGetSiteSetting(SiteSettingPageEnum.jobsContent) + const updateSiteSettingMutation = useUpdateSiteSetting() + const [formData, setFormData] = useState({ jobsContent: '' }) + + const formik = useFormik({ + initialValues: formData, + validationSchema: Yup.object({ + jobsContent: Yup.string().required('متن فرصت‌های شغلی الزامی است'), + }), + onSubmit: (values) => { + updateSiteSettingMutation.mutate(values, { + onSuccess: () => { + toast.success('فرصت‌های شغلی با موفقیت ویرایش شد') + navigate(Pages.pages.jobs) + } + }) + }, + enableReinitialize: true + }) + + useEffect(() => { + if (siteSetting?.results?.siteSetting?.jobsContent) { + const newData = { jobsContent: siteSetting.results.siteSetting.jobsContent } + setFormData(newData) + } + }, [siteSetting]) + + if (siteSettingLoading) { + return ( +
+ +
+ ) + } + + if (siteSettingError) { + return ( +
+ +
+ ) + } + + return ( +
+
+
+

ویرایش فرصت‌های شغلی

+
+
+ +
+
+ +
+
+
+
+
+ متن فرصت‌های شغلی +
+ formik.setFieldValue('jobsContent', value)} + placeholder='متن فرصت‌های شغلی را وارد کنید...' + /> + {formik.touched.jobsContent && formik.errors.jobsContent && ( +
+ {formik.errors.jobsContent} +
+ )} +
+
+
+
+
+ ) +} + +export default JobsPage \ No newline at end of file diff --git a/src/router/Main.tsx b/src/router/Main.tsx index e826f36..9a2d67b 100644 --- a/src/router/Main.tsx +++ b/src/router/Main.tsx @@ -52,6 +52,7 @@ import FaqUpdate from '@/pages/setting/FaqUpdate' import ShipmentPage from '@/pages/setting/ShipmentPage' import PrivacyPage from '@/pages/setting/PrivacyPage' import ReturnPolicyPage from '@/pages/setting/ReturnPolicyPage' +import JobsPage from '@/pages/setting/JobsPage' const MainRouter: FC = () => { @@ -129,6 +130,7 @@ const MainRouter: FC = () => { } /> } /> } /> + } />