'use client'; import { useCallback } from 'react'; import Dropdown from '@/components/ui/Dropdown'; import SelectorButton from '@/components/ui/SelectorButton'; import useDropdown from '@/hooks/useDropdown'; import { LocationHead } from '@/models/library'; import { prefixes } from '@/utils/constants'; import { describeLocationHead, labelLocationHead } from '@/utils/labels'; import { LocationHeadIcon } from '../DomainIcons'; import DropdownButton from '../ui/DropdownButton'; interface SelectLocationHeadProps { value: LocationHead; onChange: (value: LocationHead) => void; excluded?: LocationHead[]; } function SelectLocationHead({ value, excluded = [], onChange }: SelectLocationHeadProps) { const menu = useDropdown(); const handleChange = useCallback( (newValue: LocationHead) => { menu.hide(); onChange(newValue); }, [menu, onChange] ); return (
} text={labelLocationHead(value)} onClick={menu.toggle} /> {Object.values(LocationHead) .filter(head => !excluded.includes(head)) .map((head, index) => { return ( handleChange(head)} title={describeLocationHead(head)} >
{labelLocationHead(head)}
); })}
); } export default SelectLocationHead;