UNPKG

@douyinfe/semi-ui

Version:

A modern, comprehensive, flexible design system and UI library. Connect DesignOps & DevOps. Quickly build beautiful React apps. Maintained by Douyin-fe team.

87 lines (86 loc) 3.77 kB
import React from 'react'; import propTypes from 'prop-types'; import { BreadcrumbAdapter } from '@douyinfe/semi-foundation/lib/es/breadcrumb/foundation'; import '@douyinfe/semi-foundation/lib/es/breadcrumb/breadcrumb.css'; import { noop } from '@douyinfe/semi-foundation/lib/es/utils/function'; import BaseComponent, { BaseProps } from '../_base/baseComponent'; import BreadcrumbItem, { RouteProps, BreadcrumbItemInfo } from './item'; import { BreadContextType } from './bread-context'; import { TooltipProps } from '../tooltip'; export type { RouteProps, BreadcrumbItemProps, BreadcrumbItemInfo } from './item'; export interface showToolTipProps { width?: string | number; ellipsisPos?: 'end' | 'middle'; opts?: TooltipProps; } export type MoreType = 'default' | 'popover'; export interface BreadcrumbProps extends BaseProps { routes?: Array<RouteProps | string>; onClick?: (route: RouteProps, event: React.MouseEvent) => void; separator?: React.ReactNode; compact?: boolean; style?: React.CSSProperties; renderItem?: (route: RouteProps) => React.ReactNode; className?: string; showTooltip?: boolean | showToolTipProps; maxItemCount?: number; autoCollapse?: boolean; renderMore?: (restItem: Array<React.ReactNode>) => React.ReactNode; moreType?: MoreType; 'aria-label'?: React.AriaAttributes['aria-label']; activeIndex?: number; } interface BreadcrumbState { isCollapsed: boolean; } declare class Breadcrumb extends BaseComponent<BreadcrumbProps, BreadcrumbState> { static contextType: React.Context<BreadContextType>; static Item: typeof BreadcrumbItem; static propTypes: { activeIndex: propTypes.Requireable<number>; routes: propTypes.Requireable<any[]>; onClick: propTypes.Requireable<(...args: any[]) => any>; separator: propTypes.Requireable<propTypes.ReactNodeLike>; compact: propTypes.Requireable<boolean>; children: propTypes.Requireable<propTypes.ReactNodeLike>; style: propTypes.Requireable<object>; renderItem: propTypes.Requireable<(...args: any[]) => any>; showTooltip: propTypes.Requireable<NonNullable<boolean | propTypes.InferProps<{ width: propTypes.Requireable<NonNullable<string | number>>; ellipsisPos: propTypes.Requireable<string>; opts: propTypes.Requireable<object>; }>>>; className: propTypes.Requireable<string>; autoCollapse: propTypes.Requireable<boolean>; maxItemCount: propTypes.Requireable<number>; renderMore: propTypes.Requireable<(...args: any[]) => any>; moreType: propTypes.Requireable<string>; 'aria-label': propTypes.Requireable<string>; }; static defaultProps: { routes: []; onClick: typeof noop; renderItem: undefined; separator: string; compact: boolean; showTooltip: { width: number; ellipsisPos: string; }; autoCollapse: boolean; moreType: string; maxItemCount: number; 'aria-label': string; }; constructor(props: BreadcrumbProps); get adapter(): BreadcrumbAdapter<BreadcrumbProps, BreadcrumbState>; componentDidMount(): void; componentWillUnmount(): void; renderPopoverMore(restItem: Array<React.ReactNode>): React.JSX.Element; handleCollapse: (template: Array<React.ReactNode>, itemsLen: number) => React.ReactNode[]; renderRouteItems: (items: Array<RouteProps>, shouldCollapse: boolean, moreTypeIsPopover: boolean) => React.JSX.Element[]; renderList: () => Array<React.ReactNode>; onClick: (info: BreadcrumbItemInfo, event: React.MouseEvent) => void; render(): React.JSX.Element; } export default Breadcrumb;