/* eslint-disable max-classes-per-file */ import * as React from 'react'; import classnames from 'classnames'; import { NavLink } from 'react-router-dom'; import IReactComponentProps from '../../../common/structures/IReactComponentProps'; import styles from './VerticalNav.scss'; import FlyTooltip from '../../overlays/FlyTooltip/FlyTooltip'; interface INavProps extends IReactComponentProps { title?: string | undefined; } export const VerticalNav = (props: INavProps) => { const { className, id, children, style, title } = props; return ( ); }; interface IProps extends IReactComponentProps { className?: string; fadeIn?: boolean; navLinkActive?: boolean; navLinkActiveClassName?: string; navLinkClass?: string; routeTo?: string; tooltip?: string | null; type?: 'addsite' | 'button' | 'filler' | 'navlink' | 'switcher'; } export const VerticalNavItem = (props: IProps) => { const { 'aria-label': ariaLabel, 'aria-expanded': ariaExpanded, 'aria-controls': ariaControls, id, className, fadeIn, navLinkActive, navLinkActiveClassName, navLinkClass, routeTo, tooltip, type, children, onClick, } = props; const renderWrapper = (child: any, additionalTooltipClassName?: string | string[]) => { return tooltip ? ( {child} ) : (
{child}
); }; const renderTypeNavLink = ( additionalTooltipClassName?: string | string[], additionalNavLinkClass?: string | string[] ) => { return renderWrapper( {children} , additionalTooltipClassName ); }; const renderTypeButton = (additionalTooltipClassName?: string | string[]) => { return renderWrapper( , additionalTooltipClassName ); }; const renderTypeFiller = () => { return
; }; const renderTypeAddSite = () => { return renderTypeNavLink(styles.FlyTooltip__AddSite, [styles.VerticalNav_Add, 'TID_VerticalNav_NavLink_Add']); }; const renderTypeSwitcher = () => { return
{children}
; }; switch (type) { case 'addsite': return renderTypeAddSite(); case 'button': return renderTypeButton(); case 'filler': return renderTypeFiller(); case 'navlink': return renderTypeNavLink(); case 'switcher': return renderTypeSwitcher(); default: console.error(`The VerticalNavItem type '${type}' is invalid and will not render.`); return null; } }; VerticalNavItem.defaultProps = { fadeIn: true, type: 'navlink', };