diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json
index 9d3297f..9fd2984 100644
--- a/public/locales/fa/app.json
+++ b/public/locales/fa/app.json
@@ -360,7 +360,8 @@
"permission_min_error": "حداقل باید یک دسترسی انتخاب شود",
"type_id": "نوع کاربر",
"navgan_id": "کد ناوگان",
- "button-update": "ویرایش"
+ "button-update": "ویرایش",
+ "loading_permissions_list": "درحال دریافت لیست دسترسی ها"
},
"UploadSystem": {
"upload_file": "فایل خود را بارگذاری کنید",
@@ -467,6 +468,7 @@
"type_id": "نوع کاربر",
"navgan_id": "کد ناوگان",
"button-cancel": "انصراف",
- "button-add": "ثبت"
+ "button-add": "ثبت",
+ "loading_permissions_list": "درحال دریافت لیست دسترسی ها"
}
}
diff --git a/src/components/dashboard/role-management/Form/CreateForm/CreateContent.jsx b/src/components/dashboard/role-management/Form/CreateForm/CreateContent.jsx
index 45b14ba..e276e5d 100644
--- a/src/components/dashboard/role-management/Form/CreateForm/CreateContent.jsx
+++ b/src/components/dashboard/role-management/Form/CreateForm/CreateContent.jsx
@@ -1,6 +1,6 @@
import {
Button,
- Checkbox,
+ Checkbox, CircularProgress,
DialogActions,
DialogContent,
FormControl,
@@ -9,7 +9,7 @@ import {
FormLabel,
Grid,
Stack,
- TextField
+ TextField, Typography
} from "@mui/material";
import {useTranslations} from "next-intl";
import useRequest from "@/lib/app/hooks/useRequest";
@@ -21,7 +21,7 @@ import usePermissions from "@/lib/app/hooks/usePermissions";
const CreateContent = ({mutate, setOpenConfirmDialog}) => {
const t = useTranslations();
const requestServer = useRequest({auth: true})
- const {permissions_list} = usePermissions()
+ const {permissions_list, isLoading} = usePermissions()
const validationSchema = Yup.object().shape({
name: Yup.string().required(t("AddDialog.name_error")),
name_fa: Yup.string().required(t("AddDialog.name_fa_error")),
@@ -93,29 +93,40 @@ const CreateContent = ({mutate, setOpenConfirmDialog}) => {
sx={{mt: 2}}
>
{formik.touched.permissions && formik.errors.permissions}
-
- {permissions_list ? (
- permissions_list.map((permission) => (
-
- {
- if (e.target.checked) {
- formik.setFieldValue("permissions", [...formik.values.permissions, permission.id])
- } else {
- formik.setFieldValue("permissions", formik.values.permissions.filter((id) => id !== permission.id))
- }
- }}
+ {isLoading ?
+
+
+ {t("AddDialog.loading_permissions_list")}
+
+ : (
+
+ <>
+ {permissions_list.map((permission, index) => (
+
+ {
+ if (e.target.checked) {
+ formik.setFieldValue("permissions", [...formik.values.permissions, permission.id])
+ } else {
+ formik.setFieldValue("permissions", formik.values.permissions.filter((id) => id !== permission.id))
+ }
+ }}
+ />
+ }
+ label={permission.name_fa}
/>
- }
- label={permission.name_fa}
- />
-
- ))
- ) : null}
-
+
+ ))}
+ >
+
+ )
+ }
diff --git a/src/components/dashboard/role-management/Form/UpdateForm/UpdateContent.jsx b/src/components/dashboard/role-management/Form/UpdateForm/UpdateContent.jsx
index 8e13b12..037ed99 100644
--- a/src/components/dashboard/role-management/Form/UpdateForm/UpdateContent.jsx
+++ b/src/components/dashboard/role-management/Form/UpdateForm/UpdateContent.jsx
@@ -4,7 +4,7 @@ import usePermissions from "@/lib/app/hooks/usePermissions";
import useRequest from "@/lib/app/hooks/useRequest";
import {
Button,
- Checkbox,
+ Checkbox, CircularProgress,
DialogActions,
DialogContent,
FormControl,
@@ -13,7 +13,7 @@ import {
FormLabel,
Grid,
Stack,
- TextField
+ TextField, Typography
} from "@mui/material"
import {useFormik} from "formik";
import {useTranslations} from "next-intl";
@@ -23,7 +23,7 @@ const UpdateContent = ({row, mutate, setOpenConfirmDialog}) => {
const t = useTranslations();
const requestServer = useRequest({auth: true})
const {update_notification} = useNotification()
- const {permissions_list} = usePermissions()
+ const {permissions_list, isLoading} = usePermissions()
const validationSchema = Yup.object().shape({
name: Yup.string().required(t("UpdateDialog.name_error")),
@@ -93,29 +93,40 @@ const UpdateContent = ({row, mutate, setOpenConfirmDialog}) => {
sx={{mt: 2}}
>
{formik.touched.permissions && formik.errors.permissions}
-
- {permissions_list ? (
- permissions_list.map((permission) => (
-
- {
- if (e.target.checked) {
- formik.setFieldValue("permissions", [...formik.values.permissions, permission.id])
- } else {
- formik.setFieldValue("permissions", formik.values.permissions.filter((id) => id !== permission.id))
- }
- }}
+ {isLoading ?
+
+
+ {t("UpdateDialog.loading_permissions_list")}
+
+ : (
+
+ <>
+ {permissions_list.map((permission) => (
+
+ {
+ if (e.target.checked) {
+ formik.setFieldValue("permissions", [...formik.values.permissions, permission.id])
+ } else {
+ formik.setFieldValue("permissions", formik.values.permissions.filter((id) => id !== permission.id))
+ }
+ }}
+ />
+ }
+ label={permission.name_fa}
/>
- }
- label={permission.name_fa}
- />
-
- ))
- ) : null}
-
+
+ ))}
+ >
+
+ )
+ }
diff --git a/src/lib/app/hooks/usePermissions.jsx b/src/lib/app/hooks/usePermissions.jsx
index 0e6aa07..2e6fff5 100644
--- a/src/lib/app/hooks/usePermissions.jsx
+++ b/src/lib/app/hooks/usePermissions.jsx
@@ -11,15 +11,16 @@ const usePermissions = () => {
})
};
- const {data} = useSWR(GET_PERMISSIONS_LIST, fetcher, {
+ const {data, isLoading} = useSWR(GET_PERMISSIONS_LIST, fetcher, {
revalidateIfStale: false,
revalidateOnFocus: false,
- revalidateOnReconnect: false
+ revalidateOnReconnect: false,
+ keepPreviousData : true
})
const permissions_list = data
//swr config
// render data
- return {permissions_list}
+ return {permissions_list, isLoading}
}
export default usePermissions;
\ No newline at end of file