import { useState } from "react"; import type { FacetItem } from "../analysis/facets.ts"; import { Dropdown } from "../../ui/index.ts"; // мультиселект с поиском: пустой выбор = без фильтра (строки 913–938) export function MultiSelect({ items, selected, allLabel, onChange }: { items: FacetItem[]; selected: Set; allLabel: string; onChange(next: Set): void; }) { const [q, setQ] = useState(""); const sel = items.filter((i) => selected.has(i.value)); const label = !sel.length ? allLabel : sel.length === 1 ? sel[0].label : `${sel[0].label} +${sel.length - 1}`; const shown = items.filter((i) => !q || i.label.toLowerCase().includes(q.toLowerCase()) || i.value.toLowerCase().includes(q.toLowerCase())); const flip = (v: string, on: boolean) => { const n = new Set(selected); if (on) n.add(v); else n.delete(v); onChange(n); }; return ( setQ("")} button={({ open, toggle }) => ( )}> {() => ( <> setQ(e.target.value)} />
{!shown.length &&
ничего не найдено
} {shown.map((i) => ( ))}
)}
); }