import React from 'react'; import {isIFormGroup, isIFormField} from './interfaces/form'; import {getFormFieldComponent} from './form-field'; import {assertNever} from 'core/helpers/typescript-helpers'; import {FormGroupWrapper} from './form-group-wrapper'; import {IFormGroup} from 'superdesk-api'; interface IProps { formConfig: IFormGroup; item: {[key: string]: any}; editMode: boolean; issues: {[field: string]: Array}; handleFieldChange(field: keyof IProps['item'], nextValue: valueof): void; } // The component is recursive! export class FormViewEdit extends React.Component { render() { const group: IFormGroup = this.props.formConfig; return ( { group.form.map((item, i) => { if (isIFormGroup(item)) { return ( ); } else if (isIFormField(item)) { const FieldComponent = getFormFieldComponent(item.type); return ( this.props.handleFieldChange( item.field != null ? item.field : fieldName, nextValue, ) } /> ); } else { return assertNever(item); } }) } ); } }