import { CurrentUserMark } from '../../types/mark.ts' import styles from './style.module.scss' import { MARK_TYPE_TRANSLATION, NEXT, SIGN } from '../../utils/const.ts' import { findNextIncompleteCurrentUserMark, isCurrentUserMarksComplete, isCurrentValueLast } from '../../utils' import { useState } from 'react' interface MarkFormFieldProps { handleSubmit: (event: any) => void handleSelectedMarkValueChange: (event: any) => void selectedMark: CurrentUserMark selectedMarkValue: string currentUserMarks: CurrentUserMark[] handleCurrentUserMarkChange: (mark: CurrentUserMark) => void } /** * Responsible for rendering a form field connected to a mark and keeping track of its value. */ const MarkFormField = ({ handleSubmit, handleSelectedMarkValueChange, selectedMark, selectedMarkValue, currentUserMarks, handleCurrentUserMarkChange }: MarkFormFieldProps) => { const [displayActions, setDisplayActions] = useState(true) const getSubmitButtonText = () => (isReadyToSign() ? SIGN : NEXT) const isReadyToSign = () => isCurrentUserMarksComplete(currentUserMarks) || isCurrentValueLast(currentUserMarks, selectedMark, selectedMarkValue) const isCurrent = (currentMark: CurrentUserMark) => currentMark.id === selectedMark.id const isDone = (currentMark: CurrentUserMark) => isCurrent(currentMark) ? !!selectedMarkValue : currentMark.isCompleted const findNext = () => { return ( currentUserMarks[selectedMark.id] || findNextIncompleteCurrentUserMark(currentUserMarks) ) } const handleFormSubmit = (event: React.FormEvent) => { event.preventDefault() console.log('handle form submit runs...') return isReadyToSign() ? handleSubmit(event) : handleCurrentUserMarkChange(findNext()!) } const toggleActions = () => setDisplayActions(!displayActions) return (

Add your signature

handleFormSubmit(e)}>
{currentUserMarks.map((mark, index) => { return (
{isCurrent(mark) && (
)}
) })}
) } export default MarkFormField