"use client"; import { useState } from "react"; import { Plus, Code2 } from "lucide-react"; import { Button } from "@/components/ui/button"; import { DialogTrigger } from "@/components/ui/dialog"; import { SkillCategory, Team } from "@/lib/types"; import { TreeViewPage } from "../management/tree-view-page"; import { useTreeView } from "@/hooks/use-tree-view"; import { useFormDialog } from "@/hooks/use-form-dialog"; import { useSkillsManagement } from "@/hooks/use-skills-management"; import { SkillFormDialog } from "./skill-form-dialog"; import { SkillsList } from "./skills-list"; interface SkillsManagementPageProps { skillCategories: SkillCategory[]; initialSkills: any[]; } export function SkillsManagementPage({ skillCategories, initialSkills, }: SkillsManagementPageProps) { const [searchTerm, setSearchTerm] = useState(""); const { isCreateDialogOpen, isEditDialogOpen, openCreateDialog, closeCreateDialog, openEditDialog, closeEditDialog, } = useFormDialog(); const { skills, isLoading, editingSkill, skillFormData, isSubmitting, setSkillFormData, resetForm, handleCreateSkill, handleEditSkill, handleUpdateSkill, handleDeleteSkill, } = useSkillsManagement(skillCategories, initialSkills); // Utilisation du hook factorisé pour la vue arborescente const { filteredDataByCategory: filteredSkillsByCategory, expandedCategories, toggleCategory, expandAll, collapseAll, } = useTreeView({ data: skills, searchFields: ["name", "description"], groupBy: (skill) => skill.category, searchTerm, onSearchChange: setSearchTerm, }); const handleCreateSubmit = async () => { const success = await handleCreateSkill(); if (success) { closeCreateDialog(); } }; const handleEditSubmit = async () => { const success = await handleUpdateSkill(); if (success) { closeEditDialog(); } }; const handleOpenCreateDialog = () => { resetForm(); openCreateDialog(); }; const handleOpenEditDialog = (skill: any) => { handleEditSkill(skill); openEditDialog(); }; const headerActions = ( ); const emptyState = (
{searchTerm ? "Essayez de modifier vos critères de recherche" : "Commencez par créer votre première skill"}