/** @packageDocumentation * @module Breadcrumb */ import "./Breadcrumb.scss"; import * as React from "react"; import { PropertyRecord } from "@bentley/ui-abstract"; import { CommonProps } from "@bentley/ui-core"; import { BeInspireTree, BeInspireTreeNode } from "../tree/deprecated/component/BeInspireTree"; import { TreeDataProvider, TreeNodeItem } from "../tree/TreeDataProvider"; import { BreadcrumbPath } from "./BreadcrumbPath"; /** @internal */ export declare type BreadcrumbNodeRenderer = (props: BreadcrumbNodeProps, node?: TreeNodeItem, parent?: TreeNodeItem) => React.ReactNode; /** Properties for [[Breadcrumb]] component * @beta */ export interface BreadcrumbProps extends CommonProps { /** Manager to coordinate state between Breadcrumb element and BreadcrumbDetails element. */ path?: BreadcrumbPath; /** Data provider for tree content */ dataProvider: TreeDataProvider; /** Initial current node */ initialCurrent?: TreeNodeItem; /** Character used to separate discrete tree nodes in Breadcrumb text mode. Default: "\\" */ delimiter?: string; /** Width in pixels, if number, and in specified css units, if string. Default: "15em" */ width?: number | string; /** Whether to show up-dir directory pop button on the left. Default: true */ showUpDir?: boolean; /** Which BreadcrumbMode to initially start with. Default: BreadcrumbMode.Dropdown */ initialBreadcrumbMode?: BreadcrumbMode; /** Whether to show white background and border. Default: true */ background?: boolean; /** Static breadcrumb element. Default: false */ staticOnly?: boolean; /** Disable plain-text input for the breadcrumb navigation. Default: false */ dropdownOnly?: boolean; /** Whether to disallow navigation to leaf nodes (nodes with no children). Default: true */ parentsOnly?: boolean; /** Callback triggered when child node is loaded with an asynchronous dataProvider. */ onChildrenLoaded?: (parent: TreeNodeItem, children: TreeNodeItem[]) => void; /** Callback triggered when root nodes are loaded with an asynchronous dataProvider. */ onRootNodesLoaded?: (nodes: TreeNodeItem[]) => void; /** @internal */ renderNode?: BreadcrumbNodeRenderer; /** @internal */ onRender?: () => void; /** @internal */ expandedNodes?: boolean; } /** Enum for Breadcrumb Mode * @beta */ export declare enum BreadcrumbMode { Dropdown = "dropdown", Input = "input" } /** @internal */ interface BreadcrumbState { prev: { dataProvider: TreeDataProvider; modelReady: boolean; }; model: BeInspireTree; modelReady: boolean; width: number | string; current?: TreeNodeItem; currentMode: BreadcrumbMode; pathString: string; } /** * Breadcrumb navigation component, with two discrete modes: text mode, and dropdown mode. * Text mode includes autocomplete suggestions. * Both dropdown and text mode support arrow and tab navigation. * @beta */ export declare class Breadcrumb extends React.Component { private _mounted; /** @internal */ static defaultProps: Partial; /** @internal */ readonly state: Readonly; /** @internal */ constructor(props: BreadcrumbProps); private static createModel; /** @internal */ static getDerivedStateFromProps(props: BreadcrumbProps, state: BreadcrumbState): BreadcrumbState | null; /** @internal */ componentDidMount(): void; /** @internal */ componentWillUnmount(): void; /** @internal */ shouldComponentUpdate(nextProps: BreadcrumbProps, nextState: BreadcrumbState): boolean; /** @internal */ componentDidUpdate(prevProps: BreadcrumbProps, prevState: BreadcrumbState): void; private assignModelListeners; private dropModelListeners; private assignDataProviderListeners; private dropDataProviderListeners; private _handleUpdate; private _onModelLoaded; private _onChildrenLoaded; private _onModelChanged; private _onModelReady; private _onTreeNodeChanged; private static inspireNodeFromTreeNodeItem; /** @internal */ render(): React.ReactNode; private _setDropdown; private _setInput; private _handleNodeChange; } /** @internal */ export interface InputSwitchProps { tree: BeInspireTree; node?: BeInspireTreeNode; pathString: string; currentMode: BreadcrumbMode; onInputStart?: () => void; onInputCancel: () => void; onNodeChange: (node?: TreeNodeItem) => void; showUpDir?: boolean; parentsOnly?: boolean; renderNode?: BreadcrumbNodeRenderer; width: number | string; delimiter: string; expandedNode?: boolean; } /** @internal */ export declare class InputSwitchComponent extends React.PureComponent { render(): React.ReactNode; } /** @internal */ export interface BreadcrumbInputProps { width: number | string; delimiter?: string; onCancel: () => void; onNodeChange: (node: TreeNodeItem | undefined) => void; parentsOnly?: boolean; tree: BeInspireTree; node?: BeInspireTreeNode; pathString: string; } /** @internal */ export interface BreadcrumbInputState { autocompleting: boolean; autocompleteList: string[]; messageBoxOpened: boolean; } /** @internal */ export declare class BreadcrumbInput extends React.Component { private _inputElement; private _autocomplete; private _mounted; /** @internal */ readonly state: Readonly; render(): JSX.Element; private _handleMessageBoxClose; /** @internal */ componentDidMount(): void; /** @internal */ componentWillUnmount(): void; private _handleClose; private _getAutocompleteList; private _findChildUserInput; private _findChildParentPartial; private _find; private _handleClick; private _handleKeyDown; private _handleKeyUp; private _handleChange; } /** Properties for [[BreadcrumbNode]] component * @beta */ export interface BreadcrumbNodeProps { /** Icon class string */ icon: string; /** Node label */ label: PropertyRecord; /** @internal */ onRender?: () => void; } /** Default BreadcrumbNode component * @beta */ export declare class BreadcrumbNode extends React.Component { constructor(props: BreadcrumbNodeProps); render(): React.ReactNode; componentDidMount(): void; componentDidUpdate(): void; } export {}; //# sourceMappingURL=Breadcrumb.d.ts.map