import { Button, Input, Modal, ModalBody, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalOverlay, Select, Text, useToast, } from "@chakra-ui/react"; export default function (props: { isOpen: boolean; onClose: () => void }) { function pasteHandler(e: ClipboardEvent) { if (!props.isOpen) return; const evidenceElement = document.getElementById( "evidence" ) as HTMLInputElement; if (!evidenceElement.files && e.clipboardData?.files) { evidenceElement.files = e.clipboardData.files; return; } if (!evidenceElement.files || !e.clipboardData?.files.length) return; if (typeof window["DataTransfer"] === "undefined") return alert("Your browser is too old to paste images in."); const dataTransfer = new DataTransfer(); for (const file of evidenceElement.files) dataTransfer.items.add(file); dataTransfer.items.add(e.clipboardData.files[0]); evidenceElement.files = dataTransfer.files; } addEventListener("paste", pasteHandler); function reset() { removeEventListener("paste", pasteHandler); ( document.getElementById("punishment") as unknown as HTMLSelectElement ).selectedIndex = -1; (document.getElementById("user") as HTMLInputElement).value = ""; (document.getElementById("evidence") as HTMLInputElement).files = null; props.onClose(); } async function submit() { const form = new FormData(); const { files } = document.getElementById("evidence") as HTMLInputElement; const punishment = ( document.getElementById("punishment") as unknown as HTMLSelectElement ).item(0)?.value as string; const { value: user } = document.getElementById("user") as HTMLInputElement; form.append("user", user); form.append("punishment", punishment); if (files) { for (let i = 0; i < files.length; i++) form.append(`file${i}`, files[i], files[i].name); } const postReq = await fetch("/api/infractions/new", { body: form, method: "POST", }); if (postReq.ok) { useToast()({ description: "Infraction created", duration: 5000, isClosable: true, status: "success", title: "Success", }); props.onClose(); return; } useToast()({ description: `Failed to create infraction (${ ((await postReq.json()) as { error: string }).error })`, duration: 5000, isClosable: true, status: "error", title: "Error", }); } return ( New Infraction User ID

Punishment

Evidence
); }