import * as _angular_core from '@angular/core'; import { TemplateRef, Signal, EventEmitter, QueryList, Injector, ElementRef } from '@angular/core'; import { TriggerConfig } from '@fundamental-ngx/core/popover'; import { Placement } from '@fundamental-ngx/core/shared'; import { SearchFieldComponent } from '@fundamental-ngx/btp/search-field'; import { FdbViewMode } from '@fundamental-ngx/btp/shared'; import { OverflowItemRef } from '@fundamental-ngx/core/overflow-layout'; import { ButtonComponent } from '@fundamental-ngx/core/button'; import * as i1 from '@fundamental-ngx/btp/button'; import * as i2 from '@fundamental-ngx/cdk/utils'; import { HasElementRef } from '@fundamental-ngx/cdk/utils'; import * as i1$1 from '@fundamental-ngx/core/content-density'; import { ContentDensityMode, ContentDensityDirective } from '@fundamental-ngx/core/content-density'; declare class ToolHeaderActionClass { /** Whether the element is forced to be visible. */ forceVisibility: boolean; /** Template of the action section */ templateRef: TemplateRef; /** @hidden */ readonly isSeparator: boolean; static ɵfac: _angular_core.ɵɵFactoryDeclaration, never>; static ɵdir: _angular_core.ɵɵDirectiveDeclaration, never, never, { "forceVisibility": { "alias": "forceVisibility"; "required": false; }; }, {}, never, never, true, never>; static ngAcceptInputType_forceVisibility: unknown; } declare class ToolHeaderActionSeparatorComponent extends ToolHeaderActionClass { /** @hidden */ templateRef: TemplateRef; /** @hidden */ readonly isSeparator = true; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class ToolHeaderProductSwitchComponent { /** Placement of a popover. */ readonly placement: _angular_core.InputSignal; /** Whether the product switch is disabled. */ readonly disabled: _angular_core.InputSignal; /** Whether the popover should close when the escape key is pressed. */ readonly closeOnEscapeKey: _angular_core.InputSignal; /** Whether the popover should close when a click is made outside its boundaries. */ readonly closeOnOutsideClick: _angular_core.InputSignal; /** Whether the popover should have an arrow. */ readonly noArrow: _angular_core.InputSignal; /** Whether to wrap content with fd-scrollbar directive. */ readonly disableScrollbar: _angular_core.InputSignal; /** The trigger events that will open/close the popover. */ readonly triggers: _angular_core.InputSignal<(string | TriggerConfig)[]>; /** Whether the popover should be focusTrapped. */ readonly focusTrapped: _angular_core.InputSignal; /** Whether the popover should automatically move focus into the trapped region. */ readonly focusAutoCapture: _angular_core.InputSignal; /** Two-way binding for isOpen state */ readonly isOpen: _angular_core.ModelSignal; /** Event emitted right before the popover is being opened. */ readonly beforeOpen: _angular_core.OutputEmitterRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } interface ToolHeaderActionContext { hidden: boolean; } declare class ToolHeaderActionDirective extends ToolHeaderActionClass { /** * Button component which will be used for the action **/ button: ButtonComponent; /** @hidden */ templateRef: TemplateRef; /** @hidden */ static ngTemplateContextGuard(dir: ToolHeaderActionDirective, ctx: unknown): ctx is ToolHeaderActionContext; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } declare class ToolHeaderLogoDirective { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } declare class ToolHeaderUserDirective { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } interface FdbToolHeaderState { backButtonVisible: boolean; menuButtonVisible: boolean; logoVisible: boolean; productNameVisible: boolean; secondTitleVisible: boolean; searchFieldVisible: boolean; searchFieldToggleActionVisible: boolean; providedActionsVisible: boolean; userAvatarVisible: boolean; productSwitchVisible: boolean; voiceInputVisible: boolean; separatorsBetweenActionsVisible: boolean; } declare abstract class ToolHeaderComponentClass { /** @hidden */ mode$: Signal; /** @hidden */ orientation$: Signal<'landscape' | 'portrait'>; /** @hidden */ searchField$: Signal; /** @hidden */ searchFieldExpanded$: Signal; /** Mode signal */ protected _mode$: _angular_core.WritableSignal; /** @hidden */ protected _orientation$: _angular_core.WritableSignal<"landscape" | "portrait">; /** @hidden */ protected fdbToolHeaderState: Signal; /** Search field signal */ protected _searchField$: _angular_core.WritableSignal; /** @hidden */ protected _searchFieldExpanded$: _angular_core.WritableSignal; /** * RTL signal * @hidden */ protected rtl: Signal; /** @hidden */ private readonly _rtlService; /** @hidden */ constructor(); } declare class ToolHeaderComponent extends ToolHeaderComponentClass { /** * (required) the Product Name is the official name of the tool. */ productName: string; /** * Second Title is an optional second text identifier of the tool. **/ secondTitle?: string; /** Mode */ set _mode(mode: FdbViewMode); /** @hidden */ set _orientation(orientation: 'landscape' | 'portrait'); /** * Whether to show the menu button */ showMenuButton: boolean; /** * Whether to show the voice input action button on * the right side of the tool header, when the mode is mobile * and the search input is expanded */ showVoiceInputAction: boolean; /** * Event emitted when the menu button is clicked **/ menuClick: EventEmitter; /** * Event emitted when user intends to expand the menu. * Happens when user clicks `right arrow` key on the menu button * if on ltr or `left arrow` key if on rtl. **/ menuExpand: EventEmitter; /** * Event emitted when user intends to collapse the menu. * Happens when user clicks `left arrow` key on the menu button * if on ltr or `right arrow` key if on rtl. **/ menuCollapse: EventEmitter; /** * Event emitted when the microphone button is clicked **/ microphoneClick: EventEmitter; /** * Event emitted when the default logo is clicked */ logoClick: EventEmitter; /** @hidden */ _contentActions: QueryList; /** @hidden */ _toolHeaderLogoDirective?: ToolHeaderLogoDirective; /** @hidden */ set _searchField(searchField: SearchFieldComponent); /** @hidden */ _toolHeaderUser?: ToolHeaderUserDirective; /** @hidden */ _toolHeaderProductSwitch?: unknown; /** @hidden */ protected readonly _hiddenActions$: _angular_core.WritableSignal[]>; /** @hidden */ private readonly _injector; /** @hidden */ private _mapOfItemsAndInjectors; /** * The handler, responsible for closing the search field * on outside click * @hidden **/ _onClick(event: MouseEvent): void; /** * The handler, responsible for the focusing on the search field, * when the user presses `Ctrl + K` or `Cmd + K` keys * @hidden **/ _onKeyDown(): void; /** * Expand the search field **/ expandSearchField(): void; /** @hidden */ protected _handleMenuLeftArrowKey(): void; /** @hidden */ protected _handleMenuRightArrowKey(): void; /** @hidden */ protected _handleHiddenItemsChange($event: OverflowItemRef[]): void; /** @hidden */ protected _indirectFocusableItemInjector(parent: Injector, item: OverflowItemRef): Injector; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; static ngAcceptInputType_showMenuButton: unknown; static ngAcceptInputType_showVoiceInputAction: unknown; } declare class ToolHeaderActionButtonDirective { static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } interface FdbToolHeaderModeConfig { desktop: number; tabletLandscape: [number, number]; tabletPortrait: [number, number]; phone: number; } /** * Directive that automatically adjusts the ToolHeader's mode, orientation, * and content density based on the element's width. * * Content density is derived from the detected mode: * - Desktop mode (empty string): COMPACT density for mouse/keyboard interaction * - Tablet/Phone modes: COZY density for touch-friendly interaction * * @example * * * * * @example * * */ declare class ToolHeaderAutoModeDirective implements HasElementRef { /** * What sizes should be used to determine mode. * Sizes mean the width of the tool header, not the whole screen. **/ set config(config: Partial); /** * Current mode of the ToolHeaderComponent */ modeChange: EventEmitter; /** * Current orientation of the ToolHeaderComponent */ orientationChange: EventEmitter<"landscape" | "portrait">; /** * Current content density of the ToolHeaderComponent */ contentDensityChange: EventEmitter; /** * Reference to the element on which the directive is applied. */ readonly elementRef: ElementRef; /** * Current configuration of the directive. */ protected _config: _angular_core.WritableSignal; /** * Reference to the ContentDensityDirective provided via hostDirectives. * Used to programmatically set the content density based on the detected mode. */ protected _contentDensity: ContentDensityDirective; /** * Signal of the Width of the element */ protected _elementWidth: _angular_core.Signal; /** * Reference to the ToolHeaderComponent */ protected _toolHeaderComponent: ToolHeaderComponent; /** * Computed signal that determines the current mode and orientation * based on the element's width and configuration breakpoints. * * Returns a tuple of [mode, orientation] where mode is: * - '' (empty): desktop mode, triggers COMPACT density * - 'tablet': tablet mode, triggers COZY density * - 'phone': phone mode, triggers COZY density */ protected _currentMode: _angular_core.Signal<[FdbViewMode, "landscape" | "portrait"]>; /** * @hidden */ private readonly _destroyRef; /** * @hidden */ constructor(); /** * Determines the mode and orientation based on width and configuration. * * @param width - Current width of the element in pixels * @param config - Breakpoint configuration for mode detection * @returns Tuple of [mode, orientation] where mode affects content density */ private _getMode; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } interface FdbToolHeaderActionButton { templateRef?: TemplateRef; glyph: string; label: string; forceVisibility?: boolean; clickCallback: () => void; hasBadge?: boolean; hasSeparator?: boolean; } export { ToolHeaderActionButtonDirective, ToolHeaderActionDirective, ToolHeaderActionSeparatorComponent, ToolHeaderAutoModeDirective, ToolHeaderComponent, ToolHeaderLogoDirective, ToolHeaderProductSwitchComponent, ToolHeaderUserDirective }; export type { FdbToolHeaderActionButton, ToolHeaderActionContext };