igniteui-angular-sovn
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
82 lines (73 loc) • 2.57 kB
text/typescript
import { CancelableEventArgs, CancelableBrowserEventArgs, IBaseEventArgs, mkenum } from '../core/utils';
import { IgxDropDownItemBaseDirective } from './drop-down-item.base';
import { IToggleView } from '../core/navigation/IToggleView';
import { EventEmitter, InjectionToken } from '@angular/core';
import { DisplayDensityBase } from '../core/density';
/** @hidden */
export enum Navigate {
Up = -1,
Down = 1
}
/** Key actions that have designated handlers in IgxDropDownComponent */
export const DropDownActionKey = mkenum({
ESCAPE: 'escape',
ENTER: 'enter',
SPACE: 'space'
});
export type DropDownActionKey = (typeof DropDownActionKey)[keyof typeof DropDownActionKey];
/**
* Interface that encapsulates selectionChanging event arguments - old selection, new selection and cancel selection.
*
* @export
*/
export interface ISelectionEventArgs extends CancelableEventArgs, IBaseEventArgs {
oldSelection: IgxDropDownItemBaseDirective;
newSelection: IgxDropDownItemBaseDirective;
}
/**
* Interface for an instance of IgxDropDownNavigationDirective
*
* @export
*/
export interface IDropDownNavigationDirective {
target: any;
handleKeyDown(event: KeyboardEvent): void;
onArrowDownKeyDown(event?: KeyboardEvent): void;
onArrowUpKeyDown(event?: KeyboardEvent): void;
onEndKeyDown(event?: KeyboardEvent): void;
onHomeKeyDown(event?: KeyboardEvent): void;
}
export const IGX_DROPDOWN_BASE = new InjectionToken<IDropDownBase>('IgxDropDownBaseToken');
/**
* @hidden
*/
export interface IDropDownList extends DisplayDensityBase {
selectionChanging: EventEmitter<ISelectionEventArgs>;
width: string;
height: string;
id: string;
maxHeight: string;
collapsed: boolean;
items: IgxDropDownItemBaseDirective[];
headers: IgxDropDownItemBaseDirective[];
focusedItem: IgxDropDownItemBaseDirective;
navigateFirst(): void;
navigateLast(): void;
navigateNext(): void;
navigatePrev(): void;
navigateItem(newIndex: number, direction?: Navigate): void;
onItemActionKey(key: DropDownActionKey, event?: Event): void;
}
/**
* @hidden
*/
export interface IDropDownBase extends IDropDownList, IToggleView {
selectedItem: any;
opening: EventEmitter<CancelableBrowserEventArgs>;
opened: EventEmitter<IBaseEventArgs>;
closing: EventEmitter<CancelableBrowserEventArgs>;
closed: EventEmitter<IBaseEventArgs>;
allowItemsFocus?: boolean;
setSelectedItem(index: number): void;
selectItem(item: IgxDropDownItemBaseDirective, event?: Event): void;
}