import { useEffect, useState } from 'react'; import ConceptSelect from '../../components/Common/ConceptSelect'; import Modal from '../../components/Common/Modal'; import TextArea from '../../components/Common/TextArea'; import RSInput from '../../components/RSInput'; import { CstType,ICstCreateData } from '../../utils/models'; import { CstTypeSelector, getCstTypeLabel } from '../../utils/staticUI'; interface DlgCreateCstProps { hideWindow: () => void 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.length > 0 ? data[0].value : CstType.BASE)} />