import { useEffect, useState } from 'react'; import Modal, { ModalProps } from '../../components/Common/Modal'; import SelectSingle from '../../components/Common/SelectSingle'; import TextArea from '../../components/Common/TextArea'; import RSInput from '../../components/RSInput'; import { CstType,ICstCreateData } from '../../models/rsform'; import { SelectorCstType } from '../../utils/selectors'; import { getCstTypeLabel } from '../../utils/staticUI'; interface DlgCreateCstProps extends Pick { initial?: ICstCreateData onCreate: (data: ICstCreateData) => void } function DlgCreateCst({ hideWindow, initial, onCreate }: DlgCreateCstProps) { const [validated, setValidated] = useState(false); const [selectedType, setSelectedType] = useState(CstType.BASE); const [term, setTerm] = useState(''); const [textDefinition, setTextDefinition] = useState(''); const [expression, setExpression] = useState(''); const [convention, setConvention] = useState(''); function getData(): ICstCreateData { return { cst_type: selectedType, insert_after: initial?.insert_after ?? null, alias: '', convention: convention, definition_formal: expression, definition_raw: textDefinition, term_raw: term }; } const handleSubmit = () => onCreate(getData()); useEffect(() => { if (initial) { setSelectedType(initial.cst_type); setTerm(initial.term_raw); setTextDefinition(initial.definition_raw); setExpression(initial.definition_formal); setConvention(initial.convention); } }, [initial]); useEffect(() => setValidated(selectedType !== undefined), [selectedType]); return (
setSelectedType(data?.value ?? CstType.BASE)} />