ConceptPortal-public/rsconcept/frontend/src/pages/RSFormPage/elements/MatchModePicker.tsx

56 lines
2.0 KiB
TypeScript
Raw Normal View History

import { useCallback } from 'react';
import Dropdown from '../../../components/Common/Dropdown';
import DropdownButton from '../../../components/Common/DropdownButton';
import useDropdown from '../../../hooks/useDropdown';
2023-09-11 20:31:54 +03:00
import { CstMatchMode } from '../../../models/miscelanious';
2023-09-21 14:58:01 +03:00
import { labelCstMathchMode } from '../../../utils/labels';
interface MatchModePickerProps {
value: CstMatchMode
onChange: (value: CstMatchMode) => void
}
function MatchModePicker({ value, onChange }: MatchModePickerProps) {
const pickerMenu = useDropdown();
const handleChange = useCallback(
(newValue: CstMatchMode) => {
pickerMenu.hide();
onChange(newValue);
}, [pickerMenu, onChange]);
return (
2023-08-24 11:10:04 +03:00
<div ref={pickerMenu.ref} className='h-full min-w-[3.4rem]'>
<span
className='text-sm font-semibold underline cursor-pointer select-none whitespace-nowrap'
tabIndex={-1}
onClick={pickerMenu.toggle}
>
2023-09-21 14:58:01 +03:00
{labelCstMathchMode(value)}
</span>
{ pickerMenu.isActive &&
<Dropdown>
<DropdownButton onClick={() => handleChange(CstMatchMode.ALL)}>
<p><b>везде:</b> искать во всех атрибутах</p>
</DropdownButton>
<DropdownButton onClick={() => handleChange(CstMatchMode.EXPR)}>
2023-08-08 23:04:21 +03:00
<p><b>выраж:</b> искать в формальных выражениях</p>
</DropdownButton>
<DropdownButton onClick={() => handleChange(CstMatchMode.TERM)}>
<p><b>термин:</b> искать в терминах</p>
</DropdownButton>
<DropdownButton onClick={() => handleChange(CstMatchMode.TEXT)}>
<p><b>текст:</b> искать в определениях и конвенциях</p>
</DropdownButton>
<DropdownButton onClick={() => handleChange(CstMatchMode.NAME)}>
2023-08-24 11:10:04 +03:00
<p><b>имя:</b> искать в идентификаторах конституент</p>
</DropdownButton>
</Dropdown>
}
</div>
);
}
export default MatchModePicker;