import { useForm, Controller } from 'react-hook-form'; import { pick } from 'lodash'; import { QuestionInput, Question, Maybe, Answer } from 'libs/graphql/types'; import { makeStyles } from '@material-ui/core/styles'; import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle, MenuItem, TextField, } from '@material-ui/core'; const ANSWERS = Object.keys(Answer); export interface FormDialogProps extends Pick { question?: Maybe; onClose: () => void; onSubmit: (input: QuestionInput) => Promise | boolean; } const FormDialog = ({ open, onClose, question, onSubmit }: FormDialogProps) => { const editMode = Boolean(question); const { register, handleSubmit, errors, control, formState: { isSubmitting }, } = useForm({}); const classes = useStyles(); const _onSubmit = async (data: QuestionInput) => { const filtered = editMode ? pick( data, Object.keys(data).filter(key => data[key as keyof QuestionInput]) ) : data; const success = await onSubmit(filtered); if (success) { onClose(); } }; return (
{editMode ? 'Edycja pytania' : 'Tworzenie pytania'} {ANSWERS.map(answer => ( {answer} ))} } /> {ANSWERS.map(answer => { const upper = answer.toUpperCase(); return ( //(question as any)[`answer${upper}`] ); })}
); }; const useStyles = makeStyles(theme => ({ dialogContent: { '& > *:not(:last-child)': { marginBottom: theme.spacing(1), }, }, })); export default FormDialog;