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';
|
2024-08-17 22:30:49 +03:00
|
|
|
|
import { LibraryItemID, LibraryItemType } from '@/models/library';
|
2024-06-07 20:17:03 +03:00
|
|
|
|
|
2024-06-26 19:47:05 +03:00
|
|
|
|
interface TabSchemaProps {
|
2024-06-07 20:17:03 +03:00
|
|
|
|
selected?: LibraryItemID;
|
|
|
|
|
setSelected: (newValue: LibraryItemID) => void;
|
|
|
|
|
}
|
|
|
|
|
|
2024-06-26 19:47:05 +03:00
|
|
|
|
function TabSchema({ selected, 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]);
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<AnimateFade className='flex flex-col'>
|
|
|
|
|
<div className='flex items-center gap-6'>
|
|
|
|
|
<span className='select-none'>Выбрана</span>
|
|
|
|
|
<TextInput
|
|
|
|
|
id='dlg_selected_schema_title'
|
|
|
|
|
disabled
|
|
|
|
|
noBorder
|
|
|
|
|
className='w-full'
|
|
|
|
|
placeholder='Выберите из списка ниже'
|
|
|
|
|
value={selectedInfo?.title ?? ''}
|
|
|
|
|
dense
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
<PickSchema
|
|
|
|
|
id='dlg_schema_picker' // prettier: split lines
|
2024-08-17 22:30:49 +03:00
|
|
|
|
items={library.items}
|
|
|
|
|
itemType={LibraryItemType.RSFORM}
|
2024-09-10 17:40:30 +03:00
|
|
|
|
rows={14}
|
2024-06-07 20:17:03 +03:00
|
|
|
|
value={selected}
|
|
|
|
|
onSelectValue={setSelected}
|
|
|
|
|
/>
|
|
|
|
|
</AnimateFade>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
2024-06-26 19:47:05 +03:00
|
|
|
|
export default TabSchema;
|