@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
TypeScript
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;