Files
imphnen-frontend-service/apps/backoffice/src/app/(protected)/permissions/_components/modal-update-permission.tsx
T

91 lines
2.3 KiB
TypeScript
Raw Normal View History

import { useEffect } from 'react';
import { useForm } from 'react-hook-form';
import { toast } from 'sonner';
2025-04-07 02:19:07 +07:00
import { Button } from '@imphnen-frontend-service/ui/atoms';
import { Modal } from '@imphnen-frontend-service/ui/molecules';
import { ControlledInputField } from '@imphnen-frontend-service/ui/organisms';
2025-04-07 02:19:07 +07:00
interface IModalUpdatePermission {
isOpen: boolean;
onClose: () => void;
handleUpdate?: () => Promise<boolean>;
currentStep?: number;
nextStep: () => void;
prevStep: () => void;
resetStep: () => void;
initialValues?: { name?: string };
onDataCapture?: (data: any) => void;
2025-04-07 02:19:07 +07:00
}
const ModalUpdatePermission = ({
isOpen,
onClose,
resetStep,
handleUpdate,
initialValues,
onDataCapture,
2025-04-07 02:19:07 +07:00
}: IModalUpdatePermission) => {
const form = useForm<{ name: string }>({
mode: 'all',
defaultValues: initialValues,
});
useEffect(() => {
if (isOpen) {
form.reset(initialValues);
}
}, [isOpen, initialValues]);
const onSubmit = form.handleSubmit(async (data) => {
try {
onDataCapture?.(data);
if (handleUpdate) await handleUpdate();
toast.success('Perubahan permissions berhasil dilakukan');
onClose();
resetStep();
} catch (error) {
console.log(error);
toast.error('Perubahan permissions gagal dilakukan');
}
2025-04-07 02:19:07 +07:00
});
return (
<Modal
className="min-w-[400px] bg-primary-50 rounded-lg p-[40px] flex flex-col gap-3 text-center"
isOpen={isOpen}
onClose={onClose}
disableEscapeKeyDown={true}
>
<Modal.Header>
<h2 className="text-p1 font-semibold text-primary-500">
Update Permissions
</h2>
</Modal.Header>
<Modal.Content className="flex flex-col gap-8">
<form onSubmit={onSubmit} className="flex flex-col gap-8">
<ControlledInputField
control={form.control}
label="Name"
name="name"
type="text"
placeholder="Nama Permission"
size="lg"
className="w-full"
/>
2025-04-07 02:19:07 +07:00
<Button
variant="primary"
size="lg"
className="w-full"
type="submit"
>
Update Permission
</Button>
</form>
2025-04-07 02:19:07 +07:00
</Modal.Content>
</Modal>
);
};
export default ModalUpdatePermission;