/** @packageDocumentation * @module Item */ import * as React from "react"; import { BadgeType, ConditionalStringValue, OnItemExecutedFunc, StringGetter } from "@bentley/ui-abstract"; import { CommonProps, IconSpec, SizeProps } from "@bentley/ui-core"; import { Direction } from "@bentley/ui-ninezone"; import { ActionButtonItemDef } from "../shared/ActionButtonItemDef"; import { AnyItemDef } from "../shared/AnyItemDef"; import { GroupItemProps } from "../shared/GroupItemProps"; import { BaseItemState, ItemDefBase } from "../shared/ItemDefBase"; /** An Item that opens a group of items. * @public */ export declare class GroupItemDef extends ActionButtonItemDef { private static _sId; static groupIdPrefix: string; groupId: string; direction: Direction; itemsInColumn: number; items: AnyItemDef[]; directionExplicit: boolean; defaultActiveItemId?: string; /** @internal */ overflow: boolean; private _itemList; private _itemMap; private _panelLabel; constructor(groupItemProps: GroupItemProps, onItemExecuted?: OnItemExecutedFunc); get id(): string; /** Get the panelLabel string */ get panelLabel(): string; /** Set the panelLabel. * @param v A string or a function to get the string. */ setPanelLabel(v: string | StringGetter | ConditionalStringValue): void; resolveItems(force?: boolean): void; getItemById(id: string): ItemDefBase | undefined; getItemByIndex(index: number): ItemDefBase | undefined; get itemCount(): number; execute(): void; toolbarReactNode(index?: number): React.ReactNode; } interface ToolGroupItem { iconSpec?: IconSpec; label: string; trayId?: string; badgeType?: BadgeType; } interface ToolGroupTray { title: string; items: Map; groupItemDef: GroupItemDef; } declare type ToolGroupTrayMap = Map; interface GroupItemComponentProps extends CommonProps { groupItemDef: GroupItemDef; onSizeKnown?: (size: SizeProps) => void; } interface GroupItemState extends BaseItemState { activeItemId: string; activeToolId: string; groupItemDef: GroupItemDef; trayId: string; backTrays: ReadonlyArray; trays: ToolGroupTrayMap; } /** Group Item React component. * @internal */ export declare class GroupItem extends React.Component { /** @internal */ readonly state: Readonly; private _componentUnmounting; private _childSyncIds?; private _childRefreshRequired; private _trayIndex; private _closeOnPanelOpened; private _ref; constructor(props: GroupItemComponentProps); private _loadChildSyncIds; private _handleSyncUiEvent; componentDidMount(): void; componentWillUnmount(): void; shouldComponentUpdate(nextProps: GroupItemComponentProps, nextState: GroupItemState): boolean; private getGroupItemState; private resetTrayId; private generateTrayId; private processGroupItemDef; componentDidUpdate(prevProps: GroupItemComponentProps, _prevState: GroupItemState): void; private get _tray(); private getTray; private _handleKeyDown; render(): React.ReactNode; private _handleOpenPanel; private _handleClick; private _handleDragInteractionClick; private _handleOverflowClick; private _handleDragInteractionOutsideClick; private _handleOutsideClick; private _handleToolActivatedEvent; private _handleToolPanelOpenedEvent; private closeGroupButton; private handleToolGroupItemClicked; private getGroupTray; getItemById(id: string): ItemDefBase | undefined; private _handleBack; private _handleExpanderClick; } /** Properties for the [[GroupButton]] React component * @public */ export interface GroupButtonProps extends GroupItemProps, CommonProps { } /** Group Button React component * @public */ export declare function GroupButton(props: GroupButtonProps): JSX.Element; /** @internal */ export declare const getFirstItem: (groupItemDef: GroupItemDef) => AnyItemDef | undefined; /** @internal */ export declare const getFirstItemId: (groupItemDef: GroupItemDef) => string; export {}; //# sourceMappingURL=GroupItem.d.ts.map