diff --git a/src/config/Paths.tsx b/src/config/Paths.tsx
index 1f7e239..5ddb833 100644
--- a/src/config/Paths.tsx
+++ b/src/config/Paths.tsx
@@ -24,6 +24,7 @@ export const Paths = {
list: '/form-builder/list/',
create: '/form-builder/create/',
update: '/form-builder/update/',
+ values: '/form-builder/values/'
},
order: {
list: '/order/list'
diff --git a/src/pages/formBuilder/AttributeValues.tsx b/src/pages/formBuilder/AttributeValues.tsx
index 8576ec7..9e05286 100644
--- a/src/pages/formBuilder/AttributeValues.tsx
+++ b/src/pages/formBuilder/AttributeValues.tsx
@@ -1,18 +1,18 @@
import { type FC } from 'react'
import { useParams } from 'react-router-dom'
-import { useDeleteAttributeValue, useGetAttributeValues } from '../hooks/useProductData'
-import CreateValue from '../components/CreateValue'
+import { useDeleteFieldValue, useGetFieldValues } from './hooks/useFormBuilderData'
+import CreateValue from './components/CreateValue'
import Table from '@/components/Table'
-import UpdateValue from '../components/UpdateValue'
+import UpdateValue from './components/UpdateValue'
import TrashWithConfrim from '@/components/TrashWithConfrim'
import { toast } from 'react-toastify'
import { extractErrorMessage } from '@/config/func'
-const AttributeValues: FC = () => {
+const FormBuilderValues: FC = () => {
const { id } = useParams()
- const { data, refetch } = useGetAttributeValues(Number(id))
- const { mutate: deleteValue, isPending } = useDeleteAttributeValue()
+ const { data, refetch } = useGetFieldValues(Number(id))
+ const { mutate: deleteValue, isPending } = useDeleteFieldValue()
const handleDelete = (id: number) => {
deleteValue(id, {
@@ -76,4 +76,4 @@ const AttributeValues: FC = () => {
)
}
-export default AttributeValues
\ No newline at end of file
+export default FormBuilderValues
\ No newline at end of file
diff --git a/src/pages/formBuilder/Create.tsx b/src/pages/formBuilder/Create.tsx
index 83d2502..a556f92 100644
--- a/src/pages/formBuilder/Create.tsx
+++ b/src/pages/formBuilder/Create.tsx
@@ -26,7 +26,7 @@ const FormBuilderCreate: FC = () => {
isRequired: true,
order: 1,
type: FieldTypeEnum.text,
- entityType: 'product',
+ entityType: type!,
multiple: false,
},
validationSchema: Yup.object({
@@ -49,7 +49,7 @@ const FormBuilderCreate: FC = () => {
-
ساخت ویژگی جدید
+
ساخت فیلد جدید
@@ -65,7 +65,7 @@ const FormBuilderCreate: FC = () => {
diff --git a/src/pages/formBuilder/List.tsx b/src/pages/formBuilder/List.tsx
index d6195eb..73816e5 100644
--- a/src/pages/formBuilder/List.tsx
+++ b/src/pages/formBuilder/List.tsx
@@ -11,7 +11,7 @@ import { extractErrorMessage } from '@/config/func'
const FormBuilderList: FC = () => {
- const { id } = useParams()
+ const { id, type } = useParams()
const { mutate: deleteField, isPending } = useDeleteField()
const { data, refetch } = useGetFields(Number(id))
@@ -30,17 +30,17 @@ const FormBuilderList: FC = () => {
return (
-
ویژگی ها
+
فیلد ها
@@ -71,7 +71,7 @@ const FormBuilderList: FC = () => {
title: 'مقادیر',
render: (item) => {
return (
-
+
diff --git a/src/pages/formBuilder/Update.tsx b/src/pages/formBuilder/Update.tsx
index b294ba5..970979f 100644
--- a/src/pages/formBuilder/Update.tsx
+++ b/src/pages/formBuilder/Update.tsx
@@ -26,7 +26,7 @@ const FormBuilderUpdate: FC = () => {
isRequired: true,
order: 1,
type: FieldTypeEnum.text,
- entityType: 'product',
+ entityType: '',
multiple: false
},
validationSchema: Yup.object({
@@ -67,7 +67,7 @@ const FormBuilderUpdate: FC = () => {
-
ویرایش ویژگی
+
ویرایش فیلد
@@ -83,7 +83,7 @@ const FormBuilderUpdate: FC = () => {
diff --git a/src/pages/formBuilder/components/CreateValue.tsx b/src/pages/formBuilder/components/CreateValue.tsx
new file mode 100644
index 0000000..65ec5db
--- /dev/null
+++ b/src/pages/formBuilder/components/CreateValue.tsx
@@ -0,0 +1,99 @@
+import { useState, type FC } from 'react'
+import Button from '@/components/Button'
+import { AddSquare, TickCircle } from 'iconsax-react'
+import DefaulModal from '@/components/DefaulModal'
+import { useFormik } from 'formik'
+import type { CreateFieldValueType } from '../types/Types'
+import * as Yup from 'yup'
+import Input from '@/components/Input'
+import { useCreateFieldValue } from '../hooks/useFormBuilderData'
+import { extractErrorMessage } from '@/config/func'
+import { toast } from 'react-toastify'
+
+type Props = {
+ id: number,
+ refetch: () => void,
+}
+
+const CreateValue: FC
= ({ id, refetch }) => {
+
+
+ const { mutate: createValue } = useCreateFieldValue()
+ const [showModal, setShowModal] = useState(false)
+
+ const formik = useFormik({
+ initialValues: {
+ value: '',
+ order: 1
+ },
+ validationSchema: Yup.object({
+ value: Yup.string().required('این فیلد اجباری است')
+ }),
+ onSubmit: (values) => {
+ createValue({ id: id, params: values }, {
+ onSuccess: () => {
+ refetch()
+ setShowModal(false)
+ },
+ onError: (error) => {
+ toast.error(extractErrorMessage(error))
+ }
+
+ })
+ }
+ })
+
+ return (
+
+
+
+
setShowModal(false)}
+ isHeader
+ title_header='ساخت مقدار جدید'
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+export default CreateValue
\ No newline at end of file
diff --git a/src/pages/formBuilder/components/UpdateValue.tsx b/src/pages/formBuilder/components/UpdateValue.tsx
new file mode 100644
index 0000000..9086d2f
--- /dev/null
+++ b/src/pages/formBuilder/components/UpdateValue.tsx
@@ -0,0 +1,110 @@
+import { useEffect, useState, type FC } from 'react'
+import Button from '@/components/Button'
+import { Edit, TickCircle } from 'iconsax-react'
+import DefaulModal from '@/components/DefaulModal'
+import { useFormik } from 'formik'
+import type { CreateFieldValueType } from '../types/Types'
+import * as Yup from 'yup'
+import Input from '@/components/Input'
+import { useGetFieldValueDetail, useUpdateFieldValue } from '../hooks/useFormBuilderData'
+import { extractErrorMessage } from '@/config/func'
+import { toast } from 'react-toastify'
+
+type Props = {
+ id: number,
+ refetch: () => void,
+}
+
+const UpdateValue: FC = ({ id, refetch }) => {
+
+
+ const [showModal, setShowModal] = useState(false)
+ const { mutate: updateValue } = useUpdateFieldValue()
+ const { data, refetch: refetchDeetail } = useGetFieldValueDetail(id, showModal)
+
+ const formik = useFormik({
+ initialValues: {
+ value: '',
+ order: 1
+ },
+ validationSchema: Yup.object({
+ value: Yup.string().required('این فیلد اجباری است')
+ }),
+ onSubmit: (values) => {
+ updateValue({ id: id, params: values }, {
+ onSuccess: () => {
+ refetch()
+ refetchDeetail()
+ setShowModal(false)
+ },
+ onError: (error) => {
+ toast.error(extractErrorMessage(error))
+ }
+
+ })
+ }
+ })
+
+ useEffect(() => {
+
+ if (data) {
+ formik.setValues({
+ value: data?.data.value,
+ order: data?.data.order
+ })
+ }
+
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [data])
+
+
+ return (
+
+ )
+}
+
+export default UpdateValue
\ No newline at end of file
diff --git a/src/pages/formBuilder/types/Types.ts b/src/pages/formBuilder/types/Types.ts
index d129fe9..ac92f45 100644
--- a/src/pages/formBuilder/types/Types.ts
+++ b/src/pages/formBuilder/types/Types.ts
@@ -7,7 +7,7 @@ export type CreateFieldType = {
type: FieldTypeEnum,
order: number,
multiple: boolean,
- entityType: 'product' | 'print'
+ entityType:string, // 'product' | 'print'
}
export type FieldType = {
@@ -19,7 +19,7 @@ export type FieldType = {
product: number,
type: FieldTypeEnum,
multiple: boolean,
- entityType: 'product' | 'print'
+ entityType:string, // 'product' | 'print'
}
export type FieldResponseType = BaseResponse;
diff --git a/src/router/MainRouter.tsx b/src/router/MainRouter.tsx
index deea42b..420f203 100644
--- a/src/router/MainRouter.tsx
+++ b/src/router/MainRouter.tsx
@@ -36,6 +36,7 @@ import AttributeValues from '@/pages/product/attribute/AttributeValues'
import FormBuilderList from '@/pages/formBuilder/List'
import FormBuilderCreate from '@/pages/formBuilder/Create'
import FormBuilderUpdate from '@/pages/formBuilder/Update'
+import FormBuilderValues from '@/pages/formBuilder/AttributeValues'
const MainRouter: FC = () => {
return (
@@ -67,6 +68,7 @@ const MainRouter: FC = () => {
} />
} />
} />
+ } />
} />
} />