diff --git a/src/fireedge/src/client/containers/TestApi/ResponseForm.js b/src/fireedge/src/client/containers/TestApi/ResponseForm.js index 7f50487a0b..8442c6f9ff 100644 --- a/src/fireedge/src/client/containers/TestApi/ResponseForm.js +++ b/src/fireedge/src/client/containers/TestApi/ResponseForm.js @@ -35,14 +35,14 @@ const ResponseForm = ({ handleChangeResponse, command: { name, httpMethod, params } }) => { - const { control, handleSubmit, errors, formState } = useForm() + const { control, handleSubmit, formState } = useForm() const memoParams = useMemo(() => Object.entries(params), [name]) const onSubmit = async dataForm => { try { const config = requestConfig(dataForm, { name, httpMethod, params }) - const { id, ...res } = await RestClient.request(config) ?? {} + const res = await RestClient.request(config) ?? {} handleChangeResponse(JSON.stringify(res, null, '\t')) } catch (err) { handleChangeResponse(JSON.stringify(err.data, null, '\t')) @@ -68,66 +68,70 @@ const ResponseForm = ({ onSubmit={handleSubmit(onSubmit)} autoComplete='off' > - {memoParams?.map(([nameParam, { default: defaultValue }]) => ( - - ({ - boolean: onChange(e.target.checked)} - /> - )} - label={nameParam} - labelPlacement='end' - />, - object: onChange(newValue ?? '')} - renderTags={(tags, getTagProps) => - tags.map((tag, index) => ( - { + const { message: errorMessage } = formState.errors[paramName] ?? {} + + return ( + + ({ + boolean: onChange(e.target.checked)} /> - )) - } - renderInput={(params) => ( - - )} - /> - }[typeof defaultValue] ?? ( - - ))} - control={control} - name={`${nameParam}`} - defaultValue={defaultValue} - /> - - ))} + )} + label={paramName} + labelPlacement='end' + />, + object: onChange(newValue ?? '')} + renderTags={(tags, getTagProps) => + tags.map((tag, index) => ( + + )) + } + renderInput={(params) => ( + + )} + /> + }[typeof defaultValue] ?? ( + + ))} + control={control} + name={`${paramName}`} + defaultValue={defaultValue} + /> + + ) + })} COMMANDS[0]) const [response, setResponse] = useState('') - const handleChangeCommand = evt => setName(evt?.target?.value) + const handleChangeCommand = (_, value) => setName(value) const handleChangeResponse = res => setResponse(res) return ( @@ -46,23 +46,16 @@ function TestApi () { > - COMMANDS, [])} value={name} onChange={handleChangeCommand} - > - - {useMemo(() => - COMMANDS.map(commandName => ( - - ), []) + renderInput={(params) => ( + )} - + /> {name && name !== '' && ( [/* To add the fields validation */], []) + const resolver = useMemo(() => object() /* To add the form schema */, []) + + const methods = useForm({ + mode: 'onSubmit', + defaultValues: resolver.default(), + resolver: yupResolver(resolver, { isSubmit: true }) + }) + + const onSubmit = values => { + console.log({ values }) + } + + return ( + + + + + + + + + + + + + ) +} + +export default TestForm diff --git a/src/fireedge/src/client/router/dev.js b/src/fireedge/src/client/router/dev.js index 3bf65ae368..c8fc046e8d 100644 --- a/src/fireedge/src/client/router/dev.js +++ b/src/fireedge/src/client/router/dev.js @@ -17,9 +17,11 @@ import loadable from '@loadable/component' import { Code as DevIcon } from 'iconoir-react' const TestApi = loadable(() => import('client/containers/TestApi'), { ssr: false }) +const TestForm = loadable(() => import('client/containers/TestForm'), { ssr: false }) export const PATH = { - TEST_API: '/test-api' + TEST_API: '/test-api', + TEST_FORM: '/test-form' } export const ENDPOINTS = [ @@ -30,6 +32,14 @@ export const ENDPOINTS = [ sidebar: true, icon: DevIcon, Component: TestApi + }, + { + label: 'Test Form', + path: PATH.TEST_FORM, + devMode: true, + sidebar: true, + icon: DevIcon, + Component: TestForm } ]