import React from "react"; import FilterDropdown from "./filters/FilterDropdown"; import FilterRange from "./filters/FilterRange"; // Типизация для фильтра export type FilterConfig = | { type: "dropdown"; title: string; options: string[]; multi?: boolean; showAll?: boolean; defaultOpen?: boolean; hasMore?: boolean; onShowMore?: () => void; } | { type: "range"; title: string; min: number; max: number; }; interface FiltersProps { filters: FilterConfig[]; onFilterChange: (type: string, value: any) => void; filterValues?: { [key: string]: any; }; searchQuery?: string; onSearchChange?: (value: string) => void; isLoading?: boolean; } const Filters: React.FC = ({ filters, onFilterChange, filterValues = {}, searchQuery = '', onSearchChange, isLoading = false }) => (
{/* Поиск - показываем только если есть обработчик */} {onSearchChange && (
e.preventDefault()}> onSearchChange(e.target.value)} />
)} {/* Фильтры из пропса */} {filters.map((filter, idx) => { if (filter.type === "dropdown") { return ( onFilterChange(filter.title, values)} /> ); } if (filter.type === "range") { return ( onFilterChange(filter.title, value)} /> ); } return null; })}
); export default Filters;