import React, { useState, useEffect } from "react"; import { Box, TextField, Typography, Collapse, CircularProgress } from "@mui/material"; import axios from "axios"; const Faq = ({ showFAQ }) => { const [faqSearch, setFaqSearch] = useState(""); const [filteredFaqs, setFilteredFaqs] = useState([]); const [faqs, setFaqs] = useState([]); const [loading, setLoading] = useState(true); // Ajout d'un état de chargement const [error, setError] = useState(null); // Ajout d'un état d'erreur useEffect(() => { const fetchFaqs = async () => { try { // Requête pour récupérer les FAQs depuis l'API WordPress const response = await axios.get( "https://preprod.octopusdesign.fr/api-octopus/server/wp-json/wp/v2/pages/116?_fields=acf.faq.faq_list" ); const faqList = response.data.acf?.faq?.faq_list; // Chemin vers le répéteur dans l'API if (faqList && Array.isArray(faqList)) { const formattedFaqs = faqList.map((item) => ({ question: item.question || "Question non définie", answer: item.answer || "Réponse non définie", })); setFaqs(formattedFaqs); setFilteredFaqs(formattedFaqs); // Initialiser la liste filtrée } else { console.warn("Aucune FAQ trouvée dans le champ répéteur."); setError("Aucune FAQ disponible pour le moment."); } } catch (error) { console.error("Erreur lors de la récupération des FAQs :", error); setError("Impossible de récupérer les FAQs. Veuillez réessayer plus tard."); } finally { setLoading(false); // Désactiver le chargement } }; fetchFaqs(); }, []); const handleSearch = (e) => { const searchTerm = e.target.value.toLowerCase(); setFaqSearch(searchTerm); const filtered = faqs.filter((faq) => faq.question.toLowerCase().includes(searchTerm) ); setFilteredFaqs(filtered); }; return ( FAQ {loading ? ( ) : error ? ( {error} ) : ( <> {/* Barre de recherche */} {/* Liste des FAQs */} {filteredFaqs.length > 0 ? ( filteredFaqs.map((faq, index) => ( {faq.question} )) ) : ( Aucun résultat trouvé. Essayez un autre mot-clé. )} )} ); }; export default Faq;