added filter buttons

This commit is contained in:
SlimusMinus
2026-06-11 01:00:19 +03:00
parent 66ef2f623f
commit 148820e9d3
2 changed files with 83 additions and 10 deletions

View File

@@ -17,6 +17,8 @@ export default function MainFeed() {
const [sidebarOpen, setSidebarOpen] = useState(false);
// Активный пункт навигации в сайдбаре
const [activeNav, setActiveNav] = useState("Главная");
// Фильтр по типу объявления: null (все) | "loss" | "found"
const [typeFilter, setTypeFilter] = useState(null);
// Открыта ли модалка создания нового объявления
const [modalOpen, setModalOpen] = useState(false);
// Объявление, которое сейчас редактируется (null — модалка закрыта)
@@ -72,16 +74,23 @@ export default function MainFeed() {
const handleNewAd = useCallback(() => loadFeed(), [loadFeed]);
const handleEditSave = useCallback(() => loadFeed(), [loadFeed]);
// Фильтруем объявления в зависимости от выбранной вкладки
const filteredAds = activeNav === "Главная"
? ads
: ads.filter(ad =>
activeNav === "Вещи"
? ["Вещь", "Другое"].includes(ad.category)
: activeNav === "Питомцы"
? ad.category === "Питомец"
: false
);
// Фильтруем объявления в зависимости от выбранной вкладки и фильтра типа
const filteredAds = (() => {
let result = activeNav === "Главная"
? ads
: ads.filter(ad =>
activeNav === "Вещи"
? ["Вещь", "Другое"].includes(ad.category)
: activeNav === "Питомцы"
? ad.category === "Питомец"
: false
);
// Применяем фильтр по типу объявления
if (typeFilter) {
result = result.filter(ad => ad.type === typeFilter);
}
return result;
})();
/**
* Рендерит содержимое ленты в зависимости от текущего состояния:
@@ -158,6 +167,28 @@ export default function MainFeed() {
<div className="f-topbar-spacer" />
</div>
{/* Фильтр по типу объявления */}
<div className="f-filter-bar">
<button
className={`f-filter-btn${typeFilter === null ? " active" : ""}`}
onClick={() => setTypeFilter(null)}
>
Все объявления
</button>
<button
className={`f-filter-btn${typeFilter === "loss" ? " active" : ""}`}
onClick={() => setTypeFilter("loss")}
>
🔴 Потери
</button>
<button
className={`f-filter-btn${typeFilter === "found" ? " active" : ""}`}
onClick={() => setTypeFilter("found")}
>
🟢 Находки
</button>
</div>
{/* Основная область: лента + правый сайдбар */}
<div className="f-wrap">
<div className="f-feed">