import * as React from "react"; import * as ReactDOM from "react-dom"; import { NavMenuState } from "./NavBarTypes"; import { StyledNavMenuContainer, StyledNavMenuResponsiveContainer, StyledMobileNavMenu } from "./styledComponents"; import { NavLinkRegistryText, NavLinkRegistryHomeText, NavLinkParameterizerText, NavLinkContractAddressesText, NavLinkStoryBoostsText, NavLinkProjectBoostsText, NavLinkConstitutionText, NavLinkFoundationText, NavLinkFaqText, NavLinkStoryfeedText, NavLinkPublishersText, } from "./textComponents"; import { NavLink } from "./NavLink"; import { NavDropDown } from "./NavDropDown"; import { NavMenuResponsiveToggleButton } from "./NavMenuResponsiveToggleButton"; interface NavMenuCloseDrawerProp { closeDrawer?(): void; } const NavMenuLinksComponent: React.FunctionComponent = props => { let mobileOnClickProp: any = {}; if (props.closeDrawer) { mobileOnClickProp = { onClick: props.closeDrawer }; } return ( <> }> }> ); }; class NavMenuResponsiveDrawer extends React.Component { public bucket: HTMLDivElement = document.createElement("div"); public componentDidMount(): void { document.body.appendChild(this.bucket); } public componentWillUnmount(): void { document.body.removeChild(this.bucket); } public render(): React.ReactPortal | null { if (!this.props.isResponsiveDrawerOpen) { return null; } const mobileNavMenu = ( <> ); return ReactDOM.createPortal(mobileNavMenu, this.bucket); } } export class NavMenu extends React.Component<{}, NavMenuState> { constructor(props: {}) { super(props); this.state = { isResponsiveDrawerOpen: false, }; } public render(): JSX.Element { return ( <> this.toggleResponsiveMenuDrawer()} /> ); } private toggleResponsiveMenuDrawer = (): void => { this.setState({ isResponsiveDrawerOpen: !this.state.isResponsiveDrawerOpen }); }; private closeResponsiveMenuDrawer = (): void => { this.setState({ isResponsiveDrawerOpen: false }); }; }