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

126 lines
3.4 KiB
TypeScript
Raw Normal View History

2023-09-11 20:31:54 +03:00
import { useLayoutEffect, useState } from 'react';
2023-09-14 16:53:38 +03:00
import Divider from '../../components/Common/Divider';
2023-09-19 17:55:17 +03:00
import MiniButton from '../../components/Common/MiniButton';
2023-09-11 20:31:54 +03:00
import Modal from '../../components/Common/Modal';
2023-09-14 16:53:38 +03:00
import SelectMulti from '../../components/Common/SelectMulti';
2023-09-11 20:31:54 +03:00
import TextArea from '../../components/Common/TextArea';
2023-09-19 17:55:17 +03:00
import { CheckIcon, ChevronDoubleUpIcon, ChevronUpIcon, CrossIcon } from '../../components/Icons';
import { Grammeme } from '../../models/language';
2023-09-11 20:31:54 +03:00
import { IConstituenta } from '../../models/rsform';
2023-09-19 17:55:17 +03:00
import { SelectorGrammems } from '../../utils/selectors';
2023-09-11 20:31:54 +03:00
interface DlgEditTermProps {
hideWindow: () => void
target: IConstituenta
onSave: () => void
}
function DlgEditTerm({ hideWindow, target, onSave }: DlgEditTermProps) {
const [term, setTerm] = useState('');
2023-09-19 17:55:17 +03:00
const [inputText, setInputText] = useState('');
const [inputTags, setInputTags] = useState<{ value: Grammeme, label: string }[]>([]);
2023-09-11 20:31:54 +03:00
// function getData() {
// return {
// };
// }
const handleSubmit = () => onSave(); // getData()
2023-09-19 17:55:17 +03:00
function handleAddForm() {
}
function handleResetForm() {
}
function handleGenerateSelected() {
}
function handleGenerateBasics() {
}
2023-09-11 20:31:54 +03:00
useLayoutEffect(
() => {
setTerm(target.term_resolved);
}, [target]);
return (
2023-09-19 17:55:17 +03:00
<Modal
title='Редактирование словоформ'
hideWindow={hideWindow}
submitText='Сохранить данные'
canSubmit
onSubmit={handleSubmit}
>
<div className='min-w-[40rem]'>
<TextArea id='nominal' label='Начальная форма'
placeholder='Начальная форма'
rows={1}
value={term}
disabled={true}
spellCheck
/>
<Divider margins='my-4'/>
<div className='flex items-start gap-2 justify-stretch min-h-[6.3rem]'>
<div className='flex flex-col gap-1'>
<TextArea
placeholder='Введите текст'
rows={2}
dimensions='min-w-[20rem]'
2023-09-14 16:53:38 +03:00
2023-09-19 17:55:17 +03:00
value={inputText}
onChange={event => setInputText(event.target.value)}
2023-09-14 16:53:38 +03:00
/>
2023-09-19 17:55:17 +03:00
<div className='flex items-center justify-start'>
<MiniButton
tooltip='Добавить словоформу'
icon={<CheckIcon size={6} color='text-success'/>}
onClick={handleAddForm}
/>
<MiniButton
tooltip='Сбросить словоформу'
icon={<CrossIcon size={6} color='text-warning'/>}
onClick={handleResetForm}
/>
<MiniButton
tooltip='Генерировать словоформу'
icon={<ChevronUpIcon size={6} color='text-primary'/>}
onClick={handleGenerateSelected}
/>
<MiniButton
tooltip='Генерировать базовые словоформы'
icon={<ChevronDoubleUpIcon size={6} color='text-primary'/>}
onClick={handleGenerateBasics}
/>
</div>
2023-09-14 16:53:38 +03:00
</div>
2023-09-19 17:55:17 +03:00
<SelectMulti
className='z-modal-top min-w-[20rem] max-w-[20rem] h-full flex-grow'
options={SelectorGrammems}
placeholder='Выберите граммемы'
value={inputTags}
onChange={data => setInputTags(data.map(value => value))}
/>
</div>
<div>
Таблица
2023-09-14 16:53:38 +03:00
</div>
2023-09-19 17:55:17 +03:00
</div>
</Modal>);
2023-09-11 20:31:54 +03:00
}
export default DlgEditTerm;