드롭다운 목록에서 채울 양식 선택
드롭다운 목록은 옵션 목록을 사용자에게 표시하는 작고 정리된 방법을 제공합니다. 드롭다운 목록에 있는 항목이 listforms API의 결과로 채워집니다.
드롭다운 목록
다음 코드를 사용하여 드롭다운 목록을 listforms API 호출 결과로 채웠습니다. 사용자 선택에 따라 사용자가 작성하여 제출할 수 있도록 적응형 양식이 표시됩니다. 이 인터페이스를 만드는 데 재질 UI 구성 요소가 사용되었습니다.
import * as React from 'react';
import Form from './components/Form';
import PlainText from './components/plainText';
import TextField from './components/TextField';
import Button from './components/Button';
import Box from '@mui/material/Box';
import InputLabel from '@mui/material/InputLabel';
import MenuItem from '@mui/material/MenuItem';
import FormControl from '@mui/material/FormControl';
import Select, { SelectChangeEvent } from '@mui/material/Select';
import { AdaptiveForm } from "@aemforms/af-react-renderer";
import { useState,useEffect } from "react";
export default function SelectFormFromDropDownList()
{
const extendMappings =
{
'plain-text' : PlainText,
'text-input' : TextField,
'button' : Button,
'form': Form
};
const[formID, setFormID] = useState('');
const[afForms,SetOptions] = useState([]);
const [selectedForm, setForm] = useState('');
const HandleChange = (event) =>
{
console.log("The form id is "+event.target.value)
setFormID(event.target.value)
};
const getForm = async () =>
{
console.log("The formID in getForm"+ formID);
const resp = await fetch(`/adobe/forms/af/${formID}`);
let formJSON = await resp.json();
console.log(formJSON.afModelDefinition);
setForm(formJSON.afModelDefinition);
}
const getAFForms =async()=>
{
const response = await fetch("/adobe/forms/af/listforms")
//let myresp = await response.status;
let myForms = await response.json();
console.log("Got response"+myForms.items[0].title);
console.log(myForms.items)
//setFormID('test');
SetOptions(myForms.items)
}
useEffect( ()=>{
getAFForms()
},[]);
useEffect( ()=>{
getForm()
},[formID]);
return (
<Box sx={{ minWidth: 120 }}>
<FormControl fullWidth>
<InputLabel id="demo-simple-select-label">Please select the form</InputLabel>
<Select
labelId="demo-simple-select-label"
id="demo-simple-select"
value={formID}
label="Please select a form"
onChange={HandleChange}
>
{afForms.map((afForm,index) => (
<MenuItem key={index} value={afForm.id}>{afForm.title}</MenuItem>
))}
</Select>
</FormControl>
<div><AdaptiveForm mappings={extendMappings} formJson={selectedForm}/></div>
</Box>
);
}
이 사용자 인터페이스를 만드는 데 사용된 API 호출은 다음과 같습니다
const resp = await fetch(`/adobe/forms/af/${formID}`);
let formJSON = await resp.json();
console.log(formJSON.afModelDefinition);
setForm(formJSON.afModelDefinition);
- 선택한 양식을 표시합니다. 다음 코드를 사용하여 선택한 양식을 표시했습니다. AdaptiveForm 요소는 aemforms/af-react-renderer npm 패키지에 제공되며 매핑 및 formJson을 그 속성으로 사용합니다
<div><AdaptiveForm mappings={extendMappings} formJson={selectedForm}/></div>
8de24117-1378-413c-a581-01e660b7163e