import LtrTextField from "@/core/components/LtrTextField"; import StyledForm from "@/core/components/StyledForm"; import { yupResolver } from "@hookform/resolvers/yup"; import { Box, Button, Checkbox, Chip, DialogActions, DialogContent, Divider, FormControlLabel, FormHelperText, Grid, Skeleton, Stack, } from "@mui/material"; import { Controller, useForm } from "react-hook-form"; import { array, object, string } from "yup"; import useRequest from "@/lib/hooks/useRequest"; import { ROLE_SERVICE } from "@/core/utils/routes"; import usePermissionsList from "@/lib/hooks/usePermissionsList"; const defaultValues = { name: "", name_fa: "", permissions: [], }; const validationSchema = object().shape({ name: string().required("نام فارسی نقش را وارد کنید"), name_fa: string().required("نام انگلیسی نقش را وارد کنید"), permissions: array().min(1, "حداقل یک دسترسی را انتخاب نمایید"), }); const CreateRoleForm = ({ setOpen, mutate }) => { const requestServer = useRequest({ notificationSuccess: true }); const { permissions, loadingPermissions } = usePermissionsList(); const { control, handleSubmit, formState: { isSubmitting, errors }, } = useForm({ defaultValues, resolver: yupResolver(validationSchema) }); const onSubmit = async (data) => { try { await requestServer(ROLE_SERVICE, "post", { data: { permissions: data.permissions, name: data.name, name_fa: data.name_fa, }, }); setOpen(false); mutate(); } catch (error) {} }; return ( <> { return ( ); }} name={"name"} /> { return ( ); }} name={"name_fa"} /> {!loadingPermissions ? ( ( <> {permissions.map((permission) => ( { const value = parseInt(e.target.value, 10); if (e.target.checked) { field.onChange([...field.value, value]); } else { field.onChange( field.value.filter((id) => id !== value) ); } }} /> } label={permission.name_fa} /> ))} {!!error && error.message} )} /> ) : ( )} ); }; export default CreateRoleForm;