UNPKG

md2

Version:

Angular2 based Material Design components, directives and services are Accordion, Autocomplete, Chips(Tags), Collapse, Colorpicker, Data Table, Datepicker, Dialog(Modal), Menu, Multiselect, Select, Tabs, Tags(Chips), Toast and Tooltip.

98 lines (97 loc) 4.43 kB
import { ElementRef, EventEmitter, NgZone, OnDestroy, Optional, Renderer2 } from '@angular/core'; import { Observable } from 'rxjs/Observable'; import { Platform } from '../platform/platform'; import 'rxjs/add/observable/of'; export declare const TOUCH_BUFFER_MS = 650; export declare type FocusOrigin = 'touch' | 'mouse' | 'keyboard' | 'program'; /** Monitors mouse and keyboard events to determine the cause of focus events. */ export declare class FocusOriginMonitor { private _ngZone; private _platform; /** The focus origin that the next focus event is a result of. */ private _origin; /** The FocusOrigin of the last focus event tracked by the FocusOriginMonitor. */ private _lastFocusOrigin; /** Whether the window has just been focused. */ private _windowFocused; /** The target of the last touch event. */ private _lastTouchTarget; /** The timeout id of the touch timeout, used to cancel timeout later. */ private _touchTimeout; /** Weak map of elements being monitored to their info. */ private _elementInfo; constructor(_ngZone: NgZone, _platform: Platform); /** * Monitors focus on an element and applies appropriate CSS classes. * @param element The element to monitor * @param renderer The renderer to use to apply CSS classes to the element. * @param checkChildren Whether to count the element as focused when its children are focused. * @returns An observable that emits when the focus state of the element changes. * When the element is blurred, null will be emitted. */ monitor(element: HTMLElement, renderer: Renderer2, checkChildren: boolean): Observable<FocusOrigin>; /** * Stops monitoring an element and removes all focus classes. * @param element The element to stop monitoring. */ stopMonitoring(element: HTMLElement): void; /** * Focuses the element via the specified focus origin. * @param element The element to focus. * @param origin The focus origin. */ focusVia(element: HTMLElement, origin: FocusOrigin): void; /** Register necessary event listeners on the document and window. */ private _registerDocumentEvents(); /** * Sets the focus classes on the element based on the given focus origin. * @param element The element to update the classes on. * @param origin The focus origin. */ private _setClasses(element, origin); /** * Sets the origin and schedules an async function to clear it at the end of the event queue. * @param origin The origin to set. */ private _setOriginForCurrentEventQueue(origin); /** * Checks whether the given focus event was caused by a touchstart event. * @param event The focus event to check. * @returns Whether the event was caused by a touch. */ private _wasCausedByTouch(event); /** * Handles focus events on a registered element. * @param event The focus event. * @param element The monitored element. */ private _onFocus(event, element); /** * Handles blur events on a registered element. * @param event The blur event. * @param element The monitored element. */ private _onBlur(event, element); } /** * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or * programmatically) and adds corresponding classes to the element. * * There are two variants of this directive: * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is * focused. * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused. */ export declare class CdkMonitorFocus implements OnDestroy { private _elementRef; private _focusOriginMonitor; cdkFocusChange: EventEmitter<FocusOrigin>; constructor(_elementRef: ElementRef, _focusOriginMonitor: FocusOriginMonitor, renderer: Renderer2); ngOnDestroy(): void; } export declare function FOCUS_ORIGIN_MONITOR_PROVIDER_FACTORY(parentDispatcher: FocusOriginMonitor, ngZone: NgZone, platform: Platform): FocusOriginMonitor; export declare const FOCUS_ORIGIN_MONITOR_PROVIDER: { provide: typeof FocusOriginMonitor; deps: (typeof NgZone | typeof Platform | Optional[])[]; useFactory: (parentDispatcher: FocusOriginMonitor, ngZone: NgZone, platform: Platform) => FocusOriginMonitor; };