Skip to content
Snippets Groups Projects
MenuMobile.tsx 3.15 KiB
Newer Older
import { Link } from "@onegeo/gatsby-theme-onegeo"
Tojo Andrianomentsoaniaina's avatar
Tojo Andrianomentsoaniaina committed
import { graphql, useStaticQuery } from "gatsby"
Toavina's avatar
Toavina committed
import React from "react"
Tojo's avatar
Tojo committed

const MenuMobile = () => {
Tojo Andrianomentsoaniaina's avatar
Tojo Andrianomentsoaniaina committed

    const data = useStaticQuery(graphql`
        fragment MenuItem on DirectusData_menus {
            name
            url
            page {
                slug
            }
        }

        fragment MenusRecursive on DirectusData_menus {
            children {
                ...MenuItem
                children {
                    ...MenuItem
                    children {
                        ...MenuItem
                    }
                }
            }
        }

        query {
            directus {
                menus(
                    filter: {
                        status: { _eq: "published" }
                    }
                ) {
                    name
                    ...MenusRecursive
                }
            }
        }
    `)

    const menuContent = data.directus.menus

    const header = menuContent.filter((head:any) => {
        return head.name == "Header"
    })

    const menu = header[0].children

    const items = (item:any) => {
        return (
            <ul className="p-2 z-50 bg-base-100 shadow-md">
                {item.children.map((itemChild: any, idx: number) => {
                    return (
                        <li key={idx}>
                            <Link
                                to="#"
                                activeClassName="text-neutral-content hover:bg-submenu active:bg-allsubmenu z-50"
                            >
                                {itemChild.name}
                            </Link>
                            {(itemChild?.children.length > 0) && items(itemChild)}
Tojo Andrianomentsoaniaina's avatar
Tojo Andrianomentsoaniaina committed
                        </li>
                    )
                })}
            </ul>
        )
    }
Tojo's avatar
Tojo committed

Toavina's avatar
Toavina committed
    return (
        <>
            {/* MENU CLASSIQUE */}
            <ul
                tabIndex={0}
                className="menu menu-compact dropdown-content mt-3 p-2 shadow bg-base-100 rounded-box w-52 z-50"
            >
                {menu.map((item: any, key: number) => {
Tojo's avatar
Tojo committed
                    return (
Toavina's avatar
Toavina committed
                        <li key={key}>
Tojo Andrianomentsoaniaina's avatar
Tojo Andrianomentsoaniaina committed
                            <Link to="#">
                                {item.name}
                                {(item?.children.length > 0) && (
Toavina's avatar
Toavina committed
                                    <svg
                                        className="fill-current"
                                        xmlns="http://www.w3.org/2000/svg"
                                        width="24"
                                        height="24"
                                        viewBox="0 0 24 24"
                                    >
                                        <path d="M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z" />
                                    </svg>
                                )}
                            </Link>
                            {item?.children.length > 0 && items(item)}
Toavina's avatar
Toavina committed
                        </li>
                    )
                })}
            </ul>
            {/* END MENU CLASSIQUE */}
        </>
    )
}
Tojo's avatar
Tojo committed

Toavina's avatar
Toavina committed
export default MenuMobile