'use client'; import { useCallback } from 'react'; import Dropdown from '@/components/ui/Dropdown'; import SelectorButton from '@/components/ui/SelectorButton'; import useDropdown from '@/hooks/useDropdown'; import useWindowSize from '@/hooks/useWindowSize'; import { CstMatchMode } from '@/models/miscellaneous'; import { prefixes } from '@/utils/constants'; import { describeCstMatchMode, labelCstMatchMode } from '@/utils/labels'; import { IconAlias, IconTerm, IconFilter, IconFormula, IconText } from '../Icons'; import DropdownButton from '../ui/DropdownButton'; function MatchModeIcon(mode: CstMatchMode, size: string, color?: string) { switch (mode) { case CstMatchMode.ALL: return ; case CstMatchMode.TEXT: return ; case CstMatchMode.EXPR: return ; case CstMatchMode.TERM: return ; case CstMatchMode.NAME: return ; } } interface SelectMatchModeProps { value: CstMatchMode; onChange: (value: CstMatchMode) => void; } function SelectMatchMode({ value, onChange }: SelectMatchModeProps) { const menu = useDropdown(); const size = useWindowSize(); const handleChange = useCallback( (newValue: CstMatchMode) => { menu.hide(); onChange(newValue); }, [menu, onChange] ); return (
{Object.values(CstMatchMode) .filter(value => !isNaN(Number(value))) .map((value, index) => { const matchMode = value as CstMatchMode; return ( handleChange(matchMode)} >
{MatchModeIcon(matchMode, '1rem')} {labelCstMatchMode(matchMode)}: {describeCstMatchMode(matchMode)}
); })}
); } export default SelectMatchMode;