import { FormEventHandler, Fragment, PropsWithChildren, useEffect, useState } from 'react'; import { Dialog, Transition } from '@headlessui/react'; import { FileText, Box, XCircle, ArrowRightCircle, CheckCircle, XOctagon, Code } from 'react-feather'; import { useForm } from '@inertiajs/react'; import FormGroup from '@/Components/FormGroup'; import InputLabel from '@/Components/InputLabel'; import TextInput from '@/Components/TextInput'; import InputError from '@/Components/InputError'; import ErrorButton from '@/Components/ErrorButton'; import PrimaryButton from '@/Components/PrimaryButton'; import axios from 'axios'; import Modal from '@/Components/Modal'; import ModalButton from '@/Components/ModalButton'; export default function AddFrameworkModal({ show = false, maxWidth = '2xl', closeable = true, onClose = () => {}, onFrameworkAdded = () => {}, className = '', }: PropsWithChildren<{ show: boolean; maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl'; closeable?: boolean; onClose: CallableFunction; onFrameworkAdded: CallableFunction; className?: string; }>) { const close = () => { if (closeable) { onClose(); } }; const maxWidthClass = { sm: 'sm:max-w-sm', md: 'sm:max-w-md', lg: 'sm:max-w-lg', xl: 'sm:max-w-xl', '2xl': 'sm:max-w-2xl', }[maxWidth]; const { data, setData, reset, errors } = useForm({ frameworkName: '', version:'', }); useEffect(() => { return () => { reset('frameworkName'); reset('version'); }; }, []); const [status, setStatus] = useState(''); const [feedback, setFeedback] = useState(''); const [isSuccessModalOpen, setIsSuccessModalOpen] = useState(false); const [isErrorModalOpen, setIsErrorModalOpen] = useState(false); const handleCloseSuccessModal = () => { setIsSuccessModalOpen(false); onFrameworkAdded(); close(); } const submit: FormEventHandler = async (e) => { e.preventDefault(); try { const response = await axios.post(route('framework.add'), data); setStatus('Success') setFeedback(response.data.message); setIsSuccessModalOpen(true); } catch (error) { setStatus('Error') if (axios.isAxiosError(error)) { setFeedback(error.response?.data.message || 'An error occurred'); } else { setFeedback('An unexpected error occurred'); } setIsErrorModalOpen(true); } }; return (

Add New Framework

setData('frameworkName', e.target.value)} />
setData('version', e.target.value)} />
Cancel Save
setIsSuccessModalOpen(false)} maxWidth="lg" styling='success'>

{ status }

{ feedback }

Close
setIsErrorModalOpen(false)} maxWidth="lg" styling='error'>

{ status }

{ feedback }

setIsErrorModalOpen(false)} className="bg-error-main text-white hover:bg-error-hover active:bg-error-pressed"> Close
); }