import React, {FC, HTMLAttributes, useState } from 'react';
import { Icon } from '../../';
export interface BottoneHamburgerProps extends HTMLAttributes {
/** id del data-bs-target**/
data_bs_target?: string;
/** Tipo di menu che il bottone deve aprire **/
menuType?: "horizontal" | "vertical" | "sidebar" ;
/** Stato del menu a comparsa **/
isOpenSide?: boolean;
/** Funzione per il menu a comparsa **/
toggleMenu?: CallableFunction;
}
function showVertMenu(show: boolean, id: string) {
const vMenu: (HTMLElement | null) = document.getElementById(id)
if (vMenu) {
if (show) {
vMenu.setAttribute('style', "display:block")
} else {
vMenu.setAttribute('style', "display:none")
}
}
}
function setIcon(show: boolean) {
const opener: (HTMLElement | null) = document.getElementById("it25-btn-vmenu-opener")
const closer: (HTMLElement | null) = document.getElementById("it25-btn-vmenu-closer")
if (opener && closer) {
if (show) {
opener.classList.replace("d-block", "d-none")
closer.classList.replace("d-none", "d-block")
} else {
closer.classList.replace("d-block", "d-none")
opener.classList.replace("d-none", "d-block")
}
}
}
export const BottoneHamburger: FC = ({
data_bs_target = "#it25-main-nav",
menuType = "horizontal",
isOpenSide,
toggleMenu
}) => {
const aria_controls = data_bs_target.substring(1, data_bs_target.length);
const [openNav, setOpenNav] = useState(isOpenSide);
const toggle = () => {
setOpenNav(!openNav)
if (menuType=='vertical') {
showVertMenu(!openNav, aria_controls);
setIcon(!openNav);
}
if (menuType=='sidebar') {
toggleMenu?.(!isOpenSide);
setIcon(!openNav);
}
if (menuType=='horizontal') {
toggleMenu?.(!isOpenSide);
}
};
let data_bs_toggle = "collapse";
let classNameButton = "btn btn-xs"
if (menuType == "horizontal") {
data_bs_toggle = "navbarcollapsible";
classNameButton = "custom-navbar-toggler ".concat(classNameButton);
}
if (menuType == "sidebar") {
classNameButton = "custom-navbar-toggler ".concat(classNameButton).concat(" d-md-none");
}
return (
)
};