import { FC, useEffect } from 'react'; import { Redirect, Route, Switch } from 'react-router-dom'; import { faBars as burgerIcon } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import classNames from 'classnames'; import { withSelectedServer } from '../servers/helpers/withSelectedServer'; import { useSwipeable, useToggle } from '../utils/helpers/hooks'; import { supportsOrphanVisits, supportsTagVisits } from '../utils/helpers/features'; import { isReachableServer } from '../servers/data'; import NotFound from './NotFound'; import { AsideMenuProps } from './AsideMenu'; import './MenuLayout.scss'; const MenuLayout = ( TagsList: FC, ShortUrls: FC, AsideMenu: FC, CreateShortUrl: FC, ShortUrlVisits: FC, TagVisits: FC, OrphanVisits: FC, ServerError: FC, Overview: FC, EditShortUrl: FC, ) => withSelectedServer(({ location, selectedServer }) => { const [ sidebarVisible, toggleSidebar, showSidebar, hideSidebar ] = useToggle(); useEffect(() => hideSidebar(), [ location ]); if (!isReachableServer(selectedServer)) { return ; } const addTagsVisitsRoute = supportsTagVisits(selectedServer); const addOrphanVisitsRoute = supportsOrphanVisits(selectedServer); const burgerClasses = classNames('menu-layout__burger-icon', { 'menu-layout__burger-icon--active': sidebarVisible }); const swipeableProps = useSwipeable(showSidebar, hideSidebar); return ( <>
hideSidebar()}>
{addTagsVisitsRoute && } {addOrphanVisitsRoute && } List short URLs} />
); }, ServerError); export default MenuLayout;