import classNames from 'classnames'; import React, { useState } from 'react'; import { isUrl } from '../../../utils/navigation'; import { Link } from '../Link'; import { NavbarItem } from '../Navbar'; interface Props { className?: string; items: NavbarItem[]; isArrowless?: boolean; isRight?: boolean; } export const NavbarDropdown: React.FC = (props) => { const [isActive, setIsActive] = useState(false); return (
setIsActive(true)} onMouseLeave={() => setIsActive(false)} > {/** * Link content is populated by children prop * This is the only way a dash component can take a component as a prop */} {props.children}
{props.items.map((item, i) => { if (item.isDivider) { /** Use an
for dividers */ return
; } else if (item.isMenuLabel) { /** Use a and the menu-label class for menu labels */ return ( {item.label} ); } else if (item.href && isUrl(item.href)) { /** Use a regular tag for full external links */ return ( setIsActive(false)} > {item.label} ); } else { /** Use a component for internal links */ return ( setIsActive(false)}> {item.label} ); } })}
); }; NavbarDropdown.defaultProps = { items: [] };