import { ComponentRef } from '@angular/core'; import { Observable, Subject } from 'rxjs'; export declare enum ElTrigger { NOOP = "noop", CLICK = "click", HOVER = "hover", HINT = "hint", FOCUS = "focus" } /** * Provides entity with two event stream: show and hide. * Each stream provides different events depends on implementation. * We have three main trigger strategies: click, hint and hover. * */ export interface ElTriggerStrategy { show$: Observable; hide$: Observable; destroy(): any; } /** * TODO maybe we have to use renderer.listen instead of observableFromEvent? * Renderer provides capability use it in service worker, ssr and so on. * */ export declare abstract class ElTriggerStrategyBase implements ElTriggerStrategy { protected document: Document; protected host: HTMLElement; protected container: () => ComponentRef; destroy(): void; protected destroyed$: Subject<{}>; protected isNotOnHostOrContainer(event: Event): boolean; protected isOnHostOrContainer(event: Event): boolean; protected isOnHost({ target }: Event): boolean; protected isOnContainer({ target }: Event): boolean; abstract show$: Observable; abstract hide$: Observable; constructor(document: Document, host: HTMLElement, container: () => ComponentRef); } /** * Creates show and hide event streams. * Fires toggle event when the click was performed on the host element. * Fires close event when the click was performed on the document but * not on the host or container. * */ export declare class ElClickTriggerStrategy extends ElTriggerStrategyBase { protected click$: Observable<[boolean, Event]>; readonly show$: Observable; readonly hide$: Observable; } /** * Creates show and hide event streams. * Fires open event when a mouse hovers over the host element and stay over at least 100 milliseconds. * Fires close event when the mouse leaves the host element and stops out of the host and popover container. * */ export declare class ElHoverTriggerStrategy extends ElTriggerStrategyBase { show$: Observable; hide$: Observable; } /** * Creates show and hide event streams. * Fires open event when a mouse hovers over the host element and stay over at least 100 milliseconds. * Fires close event when the mouse leaves the host element. * */ export declare class ElHintTriggerStrategy extends ElTriggerStrategyBase { show$: Observable; hide$: Observable; } /** * Creates show and hide event streams. * Fires open event when a focus is on the host element and stay over at least 100 milliseconds. * Fires close event when the focus leaves the host element. * */ export declare class ElFocusTriggerStrategy extends ElTriggerStrategyBase { protected focusOut$: Observable; protected clickIn$: Observable; protected clickOut$: Observable; protected tabKeyPress$: Observable; show$: Observable; hide$: Observable; } /** * Creates empty show and hide event streams. * */ export declare class ElNoopTriggerStrategy extends ElTriggerStrategyBase { show$: Observable; hide$: Observable; } export declare class ElTriggerStrategyBuilderService { protected _document: any; protected _host: HTMLElement; protected _container: () => ComponentRef; protected _trigger: ElTrigger; constructor(_document: any); trigger(trigger: ElTrigger): this; host(host: HTMLElement): this; container(container: () => ComponentRef): this; build(): ElTriggerStrategy; }