import * as React from 'react'; import DownOutlined from '@ant-design/icons/DownOutlined'; import omit from 'omit.js'; import DropDown, { DropDownProps } from '../dropdown/dropdown'; import { ConfigConsumer, ConfigConsumerProps } from '../config-provider'; export interface BreadcrumbItemProps { prefixCls?: string; separator?: React.ReactNode; href?: string; overlay?: DropDownProps['overlay']; dropdownProps?: DropDownProps; onClick?: React.MouseEventHandler; } export default class BreadcrumbItem extends React.Component { static __ANT_BREADCRUMB_ITEM = true; static defaultProps = { separator: '/', }; renderBreadcrumbItem = ({ getPrefixCls }: ConfigConsumerProps) => { const { prefixCls: customizePrefixCls, separator, children, ...restProps } = this.props; const prefixCls = getPrefixCls('breadcrumb', customizePrefixCls); let link; if ('href' in this.props) { link = ( {children} ); } else { link = ( {children} ); } // wrap to dropDown link = this.renderBreadcrumbNode(link, prefixCls); if (children) { return ( {link} {separator && separator !== '' && ( {separator} )} ); } return null; }; /** * if overlay is have * Wrap a DropDown */ renderBreadcrumbNode = (breadcrumbItem: React.ReactNode, prefixCls: string) => { const { overlay, dropdownProps } = this.props; if (overlay) { return ( {breadcrumbItem} ); } return breadcrumbItem; }; render() { return {this.renderBreadcrumbItem}; } }