Portal/rsconcept/frontend/src/dialogs/DlgInlineSynthesis/TabSchema.tsx

51 lines
1.6 KiB
TypeScript
Raw Normal View History

2024-06-07 20:17:03 +03:00
'use client';
import { useMemo } from 'react';
import PickSchema from '@/components/select/PickSchema';
import TextInput from '@/components/ui/TextInput';
import AnimateFade from '@/components/wrap/AnimateFade';
import { useLibrary } from '@/context/LibraryContext';
import { LibraryItemID, LibraryItemType } from '@/models/library';
2024-09-12 13:27:06 +03:00
import { IRSForm } from '@/models/rsform';
import { sortItemsForInlineSynthesis } from '@/models/rsformAPI';
2024-06-07 20:17:03 +03:00
interface TabSchemaProps {
2024-06-07 20:17:03 +03:00
selected?: LibraryItemID;
setSelected: (newValue: LibraryItemID) => void;
2024-09-12 13:27:06 +03:00
receiver: IRSForm;
2024-06-07 20:17:03 +03:00
}
2024-09-12 13:27:06 +03:00
function TabSchema({ selected, receiver, setSelected }: TabSchemaProps) {
2024-06-07 20:17:03 +03:00
const library = useLibrary();
const selectedInfo = useMemo(() => library.items.find(item => item.id === selected), [selected, library.items]);
2024-09-12 13:27:06 +03:00
const sortedItems = useMemo(() => sortItemsForInlineSynthesis(receiver, library.items), [receiver, library.items]);
2024-06-07 20:17:03 +03:00
return (
<AnimateFade className='flex flex-col'>
2024-09-15 13:20:25 +03:00
<PickSchema
id='dlg_schema_picker' // prettier: split lines
items={sortedItems}
itemType={LibraryItemType.RSFORM}
rows={14}
value={selected}
onSelectValue={setSelected}
/>
<div className='flex items-center gap-6 '>
2024-06-07 20:17:03 +03:00
<span className='select-none'>Выбрана</span>
<TextInput
id='dlg_selected_schema_title'
disabled
noBorder
2024-09-21 20:03:49 +03:00
className='flex-grow'
placeholder='Схема не выбрана'
2024-06-07 20:17:03 +03:00
value={selectedInfo?.title ?? ''}
dense
/>
</div>
</AnimateFade>
);
}
export default TabSchema;