diff --git a/ui/src/pages/tablo.tsx b/ui/src/pages/tablo.tsx index 8e2ea53..fb29b74 100644 --- a/ui/src/pages/tablo.tsx +++ b/ui/src/pages/tablo.tsx @@ -2,6 +2,13 @@ import { SignOutButton } from "@ui/components/SignOutButton"; import { CreateTabloModal } from "@ui/components/CreateTabloModal"; import { TabloModal } from "@ui/components/TabloModal"; import { DeleteTabloModal } from "@ui/components/DeleteTabloModal"; +import { + Select, + SelectButton, + SelectPopover, + SelectListBox, + SelectListItem, +} from "@ui/ui-library/select"; import { useState } from "react"; import { useTablosList, @@ -12,18 +19,42 @@ import { import { LoadingSpinner } from "@ui/components/LoadingSpinner"; import { TabloInsert, TabloUpdate, UserTablo } from "@ui/types/tablos.types"; +type FilterOption = { + id: "all" | "owned" | "invited"; + name: string; +}; + +const filterOptions: FilterOption[] = [ + { id: "all", name: "Tous" }, + { id: "owned", name: "Mes tablos" }, + { id: "invited", name: "Invitations" }, +]; + export const TabloPage = () => { const [contextMenuTablo, setContextMenuTablo] = useState(null); const [isCreateModalOpen, setIsCreateModalOpen] = useState(false); const [viewingTablo, setViewingTablo] = useState(null); const [deletingTablo, setDeletingTablo] = useState(null); const [isDeleting, setIsDeleting] = useState(false); + const [filterType, setFilterType] = useState<"all" | "owned" | "invited">( + "all" + ); const { data: tablos, isLoading, error } = useTablosList(); const createTabloMutation = useCreateTablo(); const { mutateAsync: updateTablo } = useUpdateTablo(); const { mutateAsync: deleteTablo } = useDeleteTablo(); + // Filter tablos based on ownership + const filteredTablos = tablos?.filter((tablo) => { + if (filterType === "owned") { + return tablo.is_admin; + } else if (filterType === "invited") { + return !tablo.is_admin; + } + return true; // 'all' case + }); + const menuItems = [ { name: "Conversations" }, { name: "Planning" }, @@ -496,6 +527,29 @@ export const TabloPage = () => { Tablos
+ {/* Filter Controls */} +
+ +
+
- {tablos && tablos.length > 0 ? ( + {filteredTablos && filteredTablos.length > 0 ? (
{/* Render tablos */} - {tablos.map((tablo) => renderTablo(tablo))} + {filteredTablos.map((tablo) => renderTablo(tablo))}
) : (

- Aucun tablo trouvé + {filterType === "owned" + ? "Aucun tablo possédé trouvé" + : filterType === "invited" + ? "Aucune invitation trouvée" + : "Aucun tablo trouvé"}