| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- /**
- * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
- * SPDX-License-Identifier: MIT
- */
- import React from 'react';
- import { Field } from '@flowgram.ai/free-layout-editor';
- import { validateFlowValue } from '@flowgram.ai/form-materials';
- import { Button } from '@douyinfe/semi-ui';
- import { FreeFormMetaStoryBuilder, FormHeader } from '../../free-form-meta-story-builder';
- const DynamicValueInput = React.lazy(() =>
- import('@flowgram.ai/form-materials').then((module) => ({
- default: module.DynamicValueInput,
- }))
- );
- const PromptEditorWithVariables = React.lazy(() =>
- import('@flowgram.ai/form-materials').then((module) => ({
- default: module.PromptEditorWithVariables,
- }))
- );
- export const BasicStory = () => (
- <FreeFormMetaStoryBuilder
- filterEndNode
- transformInitialNode={{
- custom_0: (node) => {
- node.data.dynamic_value_input = {
- type: 'ref',
- content: ['start_0', 'unknown_key'],
- };
- node.data.required_dynamic_value_input = {
- type: 'constant',
- content: '',
- };
- node.data.prompt_editor = {
- type: 'template',
- content: 'Hello {{start_0.unknown_key}}',
- };
- return node;
- },
- }}
- formMeta={{
- validate: {
- dynamic_value_input: ({ value, context }) =>
- validateFlowValue(value, {
- node: context.node,
- errorMessages: {
- required: 'Value is required',
- unknownVariable: 'Unknown Variable',
- },
- }),
- required_dynamic_value_input: ({ value, context }) =>
- validateFlowValue(value, {
- node: context.node,
- required: true,
- errorMessages: {
- required: 'Value is required',
- unknownVariable: 'Unknown Variable',
- },
- }),
- prompt_editor: ({ value, context }) =>
- validateFlowValue(value, {
- node: context.node,
- required: true,
- errorMessages: {
- required: 'Prompt is required',
- unknownVariable: 'Unknown Variable In Template',
- },
- }),
- },
- render: ({ form }) => (
- <>
- <FormHeader />
- <b>Validate variable valid</b>
- <Field<any> name="dynamic_value_input">
- {({ field, fieldState }) => (
- <>
- <DynamicValueInput
- value={field.value}
- onChange={(value) => field.onChange(value)}
- />
- <span style={{ color: 'red' }}>
- {fieldState.errors?.map((e) => e.message).join('\n')}
- </span>
- </>
- )}
- </Field>
- <br />
- <b>Validate required value</b>
- <Field<any> name="required_dynamic_value_input">
- {({ field, fieldState }) => (
- <>
- <DynamicValueInput
- value={field.value}
- onChange={(value) => field.onChange(value)}
- />
- <span style={{ color: 'red' }}>
- {fieldState.errors?.map((e) => e.message).join('\n')}
- </span>
- </>
- )}
- </Field>
- <br />
- <b>Validate required and variables valid in prompt</b>
- <Field<any> name="prompt_editor">
- {({ field, fieldState }) => (
- <>
- <PromptEditorWithVariables
- value={field.value}
- onChange={(value) => field.onChange(value)}
- />
- <span style={{ color: 'red' }}>
- {fieldState.errors?.map((e) => e.message).join('\n')}
- </span>
- </>
- )}
- </Field>
- <br />
- <Button onClick={() => form.validate()}>Trigger Validate</Button>
- </>
- ),
- }}
- />
- );
|