import { BaseComponentProps } from '@aws-amplify/ui-react'; import { ComponentMetadata, StudioComponent, StudioComponentChild, StudioForm, StudioNode } from '@aws-amplify/codegen-ui'; import { JsxChild, JsxElement } from 'typescript'; import { ReactComponentRenderer } from '../react-component-renderer'; import { ImportCollection } from '../imports'; import { ReactRenderConfig } from '../react-render-config'; import { defaultRenderConfig } from '../react-studio-template-renderer-helper'; export default class FormRenderer extends ReactComponentRenderer { protected form: StudioForm; protected componentMetadata: ComponentMetadata; protected importCollection: ImportCollection; protected renderConfig: ReactRenderConfig & typeof defaultRenderConfig; protected parent?: StudioNode | undefined; constructor(component: StudioComponent | StudioComponentChild, form: StudioForm, // we are passing in form here as it's the top level component componentMetadata: ComponentMetadata, importCollection: ImportCollection, renderConfig: ReactRenderConfig & typeof defaultRenderConfig, parent?: StudioNode | undefined); protected isRenderingGraphQL: () => boolean; renderElement(renderChildren: (children: StudioComponentChild[]) => JsxChild[]): JsxElement; private renderCollectionOpeningElement; /** * generates the necessary function call if using * - datastore * - custom */ private getOnSubmitDSCall; private getFormOnSubmitAttribute; }