import { DEFAULT_INITIAL_DATA, defaultInitialDataTs, fieldWrapperCss, fieldWrapperTs, } from '@flowgram.ai/demo-node-form'; import { Editor } from '../editor.tsx'; import { PreviewEditor } from '../../preview-editor.tsx'; import { nodeRegistry } from './node-registry.tsx'; const nodeRegistryFile = { code: `import { DataEvent, EffectFuncProps, Field, FieldRenderProps, FormMeta, ValidateTrigger, WorkflowNodeRegistry, } from '@flowgram.ai/free-layout-editor'; import { FieldWrapper } from '@flowgram.ai/demo-node-form'; import { Input } from '@douyinfe/semi-ui'; import '../index.css'; const render = () => (
Effect Examples
{({ field }: FieldRenderProps) => ( )} {({ field }: FieldRenderProps) => ( )} {({ field }: FieldRenderProps) => ( )}
); interface FormData { field1: string; field2: string; field3: string; } const formMeta: FormMeta = { render, validateTrigger: ValidateTrigger.onChange, effect: { field1: [ { event: DataEvent.onValueChange, effect: ({ value }: EffectFuncProps) => { console.log('field1 value:', value); }, }, ], field2: [ { event: DataEvent.onValueChange, effect: ({ value, form }: EffectFuncProps) => { form.setValueIn('field3', 'field2 value is ' + value); }, }, ], }, }; export const nodeRegistry: WorkflowNodeRegistry = { type: 'custom', meta: {}, defaultPorts: [{ type: 'output' }, { type: 'input' }], formMeta, }; `, active: true, }; export const NodeFormEffectPreview = () => { const files = { 'node-registry.tsx': nodeRegistryFile, 'initial-data.ts': { code: defaultInitialDataTs, active: true }, 'field-wrapper.tsx': { code: fieldWrapperTs, active: true }, 'field-wrapper.css': { code: fieldWrapperCss, active: true }, }; return ( ); };