import { useEffect, useState } from "react"; import InputText from "../../../../../../components/ui/input/InputText"; import InputRadioGroup from "../../../../../../components/ui/input/InputRadioGroup"; import { BlockVariableDto } from "./BlockVariableDto"; import InputSelect from "../../../../../../components/ui/input/InputSelect"; import CollapsibleRow from "../../../../../../components/ui/tables/CollapsibleRow"; import InputCheckbox from "../../../../../../components/ui/input/InputCheckbox"; export default function BlockVariableForm({ name, item, onUpdate }: { name: string; item?: BlockVariableDto; onUpdate: (item: BlockVariableDto) => void }) { const [state, setState] = useState(item || { type: "manual" }); useEffect(() => { onUpdate(state); // eslint-disable-next-line react-hooks/exhaustive-deps }, [state]); return ( } initial={false}>
setState({ ...state, type: value?.toString() as "manual" | "param" | "query" })} options={[ { name: "Manual", value: "manual" }, { name: "Param", value: "param" }, { name: "Query", value: "query" }, ]} /> {state.type === "manual" && ( setState({ ...state, value: value?.toString() })} required placeholder="Default: null" /> )} {state.type === "query" && ( setState({ ...state, query: value?.toString() })} required /> )} {state.type === "param" && ( setState({ ...state, param: value as "id1" | "id2" })} options={[ { name: ":id1", value: "id1" }, { name: ":id2", value: "id2" }, ]} /> )} setState({ ...state, required: Boolean(value) })} />
); } function VariableDescription({ title, item }: { title: string; item?: BlockVariableDto }) { return (
{title}
{item && ( <>
•
{item.type}
{item.type === "manual" && ( <>
•
{item.value ?? "null"}
)} {item.type === "param" && ( <>
•
{item.param}
)} {item.type === "query" && ( <>
•
{item.query}
)} )}
); }