diff --git a/client/src/components/Planner/PlacesSidebar.tsx b/client/src/components/Planner/PlacesSidebar.tsx index 79f27b10..8fa69663 100644 --- a/client/src/components/Planner/PlacesSidebar.tsx +++ b/client/src/components/Planner/PlacesSidebar.tsx @@ -147,7 +147,11 @@ const PlacesSidebar = React.memo(function PlacesSidebar({ const filtered = useMemo(() => places.filter(p => { if (filter === 'unplanned' && plannedIds.has(p.id)) return false - if (categoryFilters.size > 0 && !categoryFilters.has(String(p.category_id))) return false + if (categoryFilters.size > 0) { + if (p.category_id == null) { + if (!categoryFilters.has('uncategorized')) return false + } else if (!categoryFilters.has(String(p.category_id))) return false + } if (search && !p.name.toLowerCase().includes(search.toLowerCase()) && !(p.address || '').toLowerCase().includes(search.toLowerCase())) return false return true @@ -257,7 +261,7 @@ const PlacesSidebar = React.memo(function PlacesSidebar({ const label = categoryFilters.size === 0 ? t('places.allCategories') : categoryFilters.size === 1 - ? categories.find(c => categoryFilters.has(String(c.id)))?.name || t('places.allCategories') + ? (categoryFilters.has('uncategorized') ? t('places.noCategory') : categories.find(c => categoryFilters.has(String(c.id)))?.name || t('places.allCategories')) : `${categoryFilters.size} ${t('places.categoriesSelected')}` return (
@@ -300,6 +304,29 @@ const PlacesSidebar = React.memo(function PlacesSidebar({ ) })} + {places.some(p => p.category_id == null) && (() => { + const active = categoryFilters.has('uncategorized') + return ( + + ) + })()} {categoryFilters.size > 0 && (