import React, { useContext, useEffect, useState } from 'react'; import { ConfigProvider, Breadcrumb, BreadcrumbProps, BreadcrumbItemProps, DropDownProps, } from 'antd'; import classNames from 'classnames'; import './style/index.less'; import { Tooltip, Icon } from '../index'; const AntdBreadcrumbItem = Breadcrumb.Item; export interface BreadcrumbItemInterface extends React.FC { __ANT_BREADCRUMB_ITEM: boolean; } type breadcrumbItemProps = { dropDownConfig?: DropDownProps; isOutEllipsis?: boolean; iconName?: string; maxLength?: number; }; const BreadcrumbItem = (props: BreadcrumbItemProps & breadcrumbItemProps) => { // 为了与 antd 的生态保持兼容性,我们要求必须要使用 `.@{ant-prefix}` 变量来生成类名 const { getPrefixCls } = useContext(ConfigProvider.ConfigContext); const prefixCls = getPrefixCls('btri-breadcrumb'); const { dropDownConfig, iconName, isOutEllipsis, maxLength = 10, ...other } = props; const [isEllipsis, setEllipsis] = useState(false); useEffect(() => { const data = props.children; setEllipsis(typeof data == 'string' && data.length > maxLength); }, [props.children]); return ( <> {isEllipsis ? ( {props.children} ) : props.overlay && !isOutEllipsis ? (
{props.children}
) : iconName ? ( <> {props.children} ) : ( props.children )}
); }; BreadcrumbItem.__ANT_BREADCRUMB_ITEM = true; export default BreadcrumbItem;