import { useEffect, useRef } from 'react'; import type { NumberRecordFieldValue, NumberRecordFormField, RequiredFieldValue } from '@douglasneuroinformatics/libui-form-types'; import type { Simplify } from 'type-fest'; import { Heading } from '../Heading/Heading.tsx'; import { NumberField } from './NumberField/NumberField.tsx'; import type { BaseFieldComponentProps } from './types.ts'; export type NumberRecordFieldProps = Simplify< BaseFieldComponentProps & NumberRecordFormField> >; export const NumberRecordField = ({ disableAutoPrefix, disabled, error: recordError, items, label, options, readOnly, setError: setRecordError, setValue: setRecordValue, value: recordValue }: NumberRecordFieldProps) => { const optionsRef = useRef(options); useEffect(() => { if (!recordValue) { setRecordValue({}); } }, []); useEffect(() => { if (optionsRef.current !== options) { setRecordValue({}); optionsRef.current = options; } }, [options]); if (!recordValue) { return null; } return (
{label}
{Object.keys(items).map((name) => { const item = items[name]!; return ( setRecordError({ ...recordError, [name]: error })} setValue={(value) => setRecordValue({ ...recordValue, [name]: value })} value={recordValue?.[name]} variant="radio" {...item} /> ); })}
); };