import Link from '../link' import { Props as LinkBasicProps } from '../link/link' import React, { useMemo } from 'react' import withDefaults from '../utils/with-defaults' import { pickChild } from '../utils/collections' import BreadcrumbsSeparator from './breadcrumbs-separator' interface Props { href?: string nextLink?: boolean onClick?: (event: React.MouseEvent) => void className?: string } const defaultProps = { nextLink: false, className: '' } type NativeAttrs = Omit, keyof Props> type NativeLinkAttrs = Omit export type BreadcrumbsProps = Props & typeof defaultProps & NativeLinkAttrs const BreadcrumbsItem = React.forwardRef< HTMLAnchorElement, React.PropsWithChildren >( ( { href, nextLink, onClick, children, className, ...props }, ref: React.Ref ) => { const isLink = useMemo(() => href !== undefined || nextLink, [href, nextLink]) const [withoutSepChildren] = pickChild(children, BreadcrumbsSeparator) const clickHandler = (event: React.MouseEvent) => { onClick && onClick(event) } if (!isLink) { return ( {withoutSepChildren} ) } return ( {withoutSepChildren} ) } ) const MemoBreadcrumbsItem = React.memo(BreadcrumbsItem) export default withDefaults(MemoBreadcrumbsItem, defaultProps)