import { Link, Route, Routes } from "@solidjs/router"; import HeaderImage from "./assets/header.jpg"; import LogoImage from "./assets/logo.jpg"; import axios from "axios"; import { createStore } from "solid-js/store"; import { onMount } from "solid-js"; const PageTextToHtml = ({ content }) => { const parser = new DOMParser(); // Create a new DOMParser instance. const doc = parser.parseFromString( content, // Convert the text/html content to html and give it to the parser to convert it to an html element. "text/html" ); return doc.body; // Return the body html element. }; function App() { // Create a navbar pages store object that will have the pages // created in the backend dynamically visible including if they // are dropdown items. const [navbarPages, setNavbarPages] = createStore([], { name: "navbar-pages", }); // Create the pages store that will store all pages that the // router needs to show. const [pages, setPages] = createStore([], { name: "pages-list", }); onMount(() => { axios .get("http://192.168.1.133:1337/api/pages?populate=*") .then((response) => { setNavbarPages([ ...response.data.data.map((page) => { // Map the pages data that the backend returns in the response. return page.attributes.IsDropDown // Check if the page must be a dropdown item. ? { // If it is. name: page.attributes.name, slug: page.attributes.slug, isDropdown: page.attributes.IsDropDown, dropdownPages: [ ...page.attributes.page_contents.data.map( // Map the pages that are related to the page. (page_content) => { return { name: page_content.attributes.title, slug: page_content.attributes.slug, }; } ), ], } : { // If it isn't. name: page.attributes.name, slug: page.attributes.slug, isDropdown: page.attributes.IsDropDown, }; }), ]); response.data.data.map((page) => { // Map the pages data returned in the response. if (!page.attributes.IsDropDown) { // If the page isn't a dropdown item. const single = page.attributes.page_contents.data[0]; // Get the page as a single object. setPages([ // Add it to the pages store. ...pages, { slug: single.attributes.slug, content: single.attributes.content, }, ]); } else { setPages([ // Add all the pages related to the page to the pages store. ...pages, ...page.attributes.page_contents.data.map((single) => { return { slug: single.attributes.slug, content: single.attributes.content, }; }), ]); } }); }); }); return (
{page.name}
{page.isDropdown && ( )} ))}