--- import type { Submit } from '@astro-reactive/common'; import { FormGroup, FormControl } from '../core'; import FieldSet from './FieldSet.astro'; import Field from './Field.astro'; import ShortUniqueId from 'short-unique-id'; export interface Props { formGroups: FormGroup | FormGroup[]; readOnly?: boolean; showValidationHints?: boolean; validateOnLoad?: boolean; submitControl?: Submit; theme?: 'light' | 'dark'; } const { submitControl, formGroups = [], theme, showValidationHints = false, validateOnLoad = false, readOnly = false, } = Astro.props; const uid = new ShortUniqueId({ length: 9 }); const formTheme = theme ?? 'light'; const formName = Array.isArray(formGroups) ? null : formGroups?.name || null; const formId = Array.isArray(formGroups) ? uid() : formGroups?.id || null; // if `validateOnLoad` prop is true, // it should forced all FormControl to validate on load if (validateOnLoad) { if (Array.isArray(formGroups)) { formGroups.forEach(group => group.controls.forEach(control => control.setValidateOnLoad(validateOnLoad) ) ); } else { formGroups.controls.forEach(control => control.setValidateOnLoad(validateOnLoad) ) } } ---
{ Array.isArray(formGroups) ? formGroups?.map((group) => (
)) : formGroups?.controls.map((control) => ( )) } { submitControl && ( ) }