import React, { ReactNode, useState } from "react" import { Dialog, useTheme, FormLabel, DialogTitle, DialogContent, DialogContentText, FormControl, Button, DialogActions, MenuItem, Select, } from "@mui/material" import { actionCreator } from "../action" import { DebouncedInputTextField } from "./Debounce" import { useRecoilValue } from "recoil" import { studySummariesState } from "../state" import RemoveIcon from "@mui/icons-material/Remove" import AddIcon from "@mui/icons-material/Add" export const useCreateStudyDialog = (): [() => void, () => ReactNode] => { const theme = useTheme() const action = actionCreator() const [newStudyName, setNewStudyName] = useState("") const [openNewStudyDialog, setOpenNewStudyDialog] = useState(false) const [directions, setDirections] = useState(["minimize"]) const studies = useRecoilValue(studySummariesState) const newStudyNameAlreadyUsed = studies.some( (v) => v.study_name === newStudyName ) const handleCloseNewStudyDialog = () => { setOpenNewStudyDialog(false) setNewStudyName("") setDirections(["minimize"]) } const handleCreateNewStudy = () => { action.createNewStudy(newStudyName, directions) setOpenNewStudyDialog(false) setNewStudyName("") setDirections(["minimize"]) } const openDialog = () => { setOpenNewStudyDialog(true) } const renderCreateNewStudyDialog = () => { return ( { handleCloseNewStudyDialog() }} aria-labelledby="create-study-dialog-title" > New Study Please enter the study name and directions here. { setNewStudyName(s) }} delay={500} textFieldProps={{ autoFocus: true, fullWidth: true, error: newStudyNameAlreadyUsed, helperText: newStudyNameAlreadyUsed ? `"${newStudyName}" is already used` : "", label: "Study name", type: "text", }} /> {directions.map((d, i) => ( Objective {i}: ))} ) } return [openDialog, renderCreateNewStudyDialog] }