import React, { useContext } from 'react'; import { ConfigProvider, Breadcrumb as AntdBreadcrumb, BreadcrumbProps, } from 'antd'; import { Menu } from '../Menu'; import classNames from 'classnames'; import BreadcrumbItem, { BreadcrumbItemInterface } from './BreadcrumbItem'; import './style/index.less'; import { getUuid } from '@btri-ui/utils'; interface ExtraProperty { Item: BreadcrumbItemInterface; } const Breadcrumb = (props: BreadcrumbProps & ExtraProperty) => { // 为了与 antd 的生态保持兼容性,我们要求必须要使用 `.@{ant-prefix}` 变量来生成类名 const { getPrefixCls } = useContext(ConfigProvider.ConfigContext); const prefixCls = getPrefixCls('btri-breadcrumb'); const { children } = props; let overlayMenu; if ((children as Array).length > 3) { const overlay = (children as Array).slice(1, -2).map(Item => { const { children, href } = Item.props; return ( {children} ); }); overlayMenu = {overlay}; } const crumbs = overlayMenu ? [ ...(children as Array).slice(0, 1), ... , (children as Array).slice(-2), ] : children; return ( {crumbs} ); }; Breadcrumb.Item = BreadcrumbItem; export { Breadcrumb };