ConceptPortal-public/rsconcept/frontend/src/pages/RSFormPage/DlgCreateCst.tsx

50 lines
1.3 KiB
TypeScript
Raw Normal View History

2023-07-25 20:27:29 +03:00
import { useEffect, useState } from 'react';
import Select from 'react-select';
2023-07-25 20:27:29 +03:00
import Modal from '../../components/Common/Modal';
import { type CstType } from '../../utils/models';
import { CstTypeSelector, getCstTypeLabel } from '../../utils/staticUI';
2023-07-22 12:24:14 +03:00
2023-07-28 00:03:37 +03:00
interface DlgCreateCstProps {
2023-07-25 22:29:33 +03:00
hideWindow: () => void
defaultType?: CstType
2023-07-22 12:24:14 +03:00
onCreate: (type: CstType) => void
}
2023-07-29 03:31:21 +03:00
function DlgCreateCst({ hideWindow, defaultType, onCreate }: DlgCreateCstProps) {
2023-07-22 12:24:14 +03:00
const [validated, setValidated] = useState(false);
2023-07-25 20:27:29 +03:00
const [selectedType, setSelectedType] = useState<CstType | undefined>(undefined);
2023-07-22 12:24:14 +03:00
const handleSubmit = () => {
if (selectedType) onCreate(selectedType);
2023-07-22 12:24:14 +03:00
};
useEffect(() => {
setSelectedType(defaultType);
}, [defaultType]);
useEffect(() => {
setValidated(selectedType !== undefined);
}, [selectedType]
);
2023-07-22 12:24:14 +03:00
return (
2023-07-25 20:27:29 +03:00
<Modal
2023-07-22 12:24:14 +03:00
title='Создание конституенты'
2023-07-25 22:29:33 +03:00
hideWindow={hideWindow}
2023-07-22 12:24:14 +03:00
canSubmit={validated}
onSubmit={handleSubmit}
>
2023-07-25 20:27:29 +03:00
<Select
options={CstTypeSelector}
placeholder='Выберите тип'
filterOption={null}
2023-07-25 20:27:29 +03:00
value={selectedType && { value: selectedType, label: getCstTypeLabel(selectedType) }}
onChange={(data) => { setSelectedType(data?.value); }}
/>
2023-07-22 12:24:14 +03:00
</Modal>
2023-07-29 03:31:21 +03:00
);
2023-07-22 12:24:14 +03:00
}
2023-07-28 00:03:37 +03:00
export default DlgCreateCst;