UNPKG

@catull/igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

149 lines 14.9 kB
import { __decorate, __metadata, __param } from "tslib"; import { Directive, Optional, Self, Input, HostListener, Inject } from '@angular/core'; import { IGX_DROPDOWN_BASE } from './drop-down.common'; import { IgxDropDownBaseDirective } from './drop-down.base'; import { DropDownActionKey } from './drop-down.common'; /** * Navigation Directive that handles keyboard events on its host and controls a targeted IgxDropDownBaseDirective component */ var IgxDropDownItemNavigationDirective = /** @class */ (function () { function IgxDropDownItemNavigationDirective(dropdown) { this.dropdown = dropdown; this._target = null; } Object.defineProperty(IgxDropDownItemNavigationDirective.prototype, "target", { /** * Gets the target of the navigation directive; * * ```typescript * // Get * export class MyComponent { * ... * @ContentChild(IgxDropDownNavigationDirective) * navDirective: IgxDropDownNavigationDirective = null * ... * const navTarget: IgxDropDownBaseDirective = navDirective.navTarget * } * ``` */ get: function () { return this._target; }, /** * Sets the target of the navigation directive; * If no valid target is passed, it falls back to the drop down context * * ```html * <!-- Set --> * <input [igxDropDownItemNavigation]="dropdown" /> * ... * <igx-drop-down #dropdown> * ... * </igx-drop-down> * ``` */ set: function (target) { this._target = target ? target : this.dropdown; }, enumerable: true, configurable: true }); /** * Captures keydown events and calls the appropriate handlers on the target component */ IgxDropDownItemNavigationDirective.prototype.handleKeyDown = function (event) { if (event) { var key = event.key.toLowerCase(); if (!this.target.collapsed) { // If dropdown is opened var navKeys = ['esc', 'escape', 'enter', 'space', 'spacebar', ' ', 'arrowup', 'up', 'arrowdown', 'down', 'home', 'end']; if (navKeys.indexOf(key) === -1) { // If key has appropriate function in DD return; } event.preventDefault(); event.stopPropagation(); } else { // If dropdown is closed, do nothing return; } switch (key) { case 'esc': case 'escape': this.target.onItemActionKey(DropDownActionKey.ESCAPE, event); break; case 'enter': this.target.onItemActionKey(DropDownActionKey.ENTER, event); break; case 'space': case 'spacebar': case ' ': this.target.onItemActionKey(DropDownActionKey.SPACE, event); break; case 'arrowup': case 'up': this.onArrowUpKeyDown(); break; case 'arrowdown': case 'down': this.onArrowDownKeyDown(); break; case 'home': this.onHomeKeyDown(); break; case 'end': this.onEndKeyDown(); break; default: return; } } }; /** * Navigates to previous item */ IgxDropDownItemNavigationDirective.prototype.onArrowDownKeyDown = function () { this.target.navigateNext(); }; /** * Navigates to previous item */ IgxDropDownItemNavigationDirective.prototype.onArrowUpKeyDown = function () { this.target.navigatePrev(); }; /** * Navigates to target's last item */ IgxDropDownItemNavigationDirective.prototype.onEndKeyDown = function () { this.target.navigateLast(); }; /** * Navigates to target's first item */ IgxDropDownItemNavigationDirective.prototype.onHomeKeyDown = function () { this.target.navigateFirst(); }; IgxDropDownItemNavigationDirective.ctorParameters = function () { return [ { type: IgxDropDownBaseDirective, decorators: [{ type: Self }, { type: Optional }, { type: Inject, args: [IGX_DROPDOWN_BASE,] }] } ]; }; __decorate([ Input('igxDropDownItemNavigation'), __metadata("design:type", IgxDropDownBaseDirective), __metadata("design:paramtypes", [IgxDropDownBaseDirective]) ], IgxDropDownItemNavigationDirective.prototype, "target", null); __decorate([ HostListener('keydown', ['$event']), __metadata("design:type", Function), __metadata("design:paramtypes", [KeyboardEvent]), __metadata("design:returntype", void 0) ], IgxDropDownItemNavigationDirective.prototype, "handleKeyDown", null); IgxDropDownItemNavigationDirective = __decorate([ Directive({ selector: '[igxDropDownItemNavigation]' }), __param(0, Self()), __param(0, Optional()), __param(0, Inject(IGX_DROPDOWN_BASE)), __metadata("design:paramtypes", [IgxDropDownBaseDirective]) ], IgxDropDownItemNavigationDirective); return IgxDropDownItemNavigationDirective; }()); export { IgxDropDownItemNavigationDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLW5hdmlnYXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9kcm9wLWRvd24vZHJvcC1kb3duLW5hdmlnYXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQ7O0dBRUc7QUFJSDtJQUlJLDRDQUFrRSxRQUFrQztRQUFsQyxhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUYxRixZQUFPLEdBQTZCLElBQUksQ0FBQztJQUVxRCxDQUFDO0lBZ0J6RyxzQkFBSSxzREFBTTtRQWRWOzs7Ozs7Ozs7Ozs7O1dBYUc7YUFDSDtZQUNJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN4QixDQUFDO1FBRUQ7Ozs7Ozs7Ozs7OztXQVlHO2FBRUgsVUFBVyxNQUFnQztZQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25ELENBQUM7OztPQWxCQTtJQW9CRDs7T0FFRztJQUVILDBEQUFhLEdBQWIsVUFBYyxLQUFvQjtRQUM5QixJQUFJLEtBQUssRUFBRTtZQUNQLElBQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUs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QUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT3B0aW9uYWwsIFNlbGYsIElucHV0LCBIb3N0TGlzdGVuZXIsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUdYX0RST1BET1dOX0JBU0UgfSBmcm9tICcuL2Ryb3AtZG93bi5jb21tb24nO1xuaW1wb3J0IHsgSURyb3BEb3duTmF2aWdhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vZHJvcC1kb3duLmNvbW1vbic7XG5pbXBvcnQgeyBJZ3hEcm9wRG93bkJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2Ryb3AtZG93bi5iYXNlJztcbmltcG9ydCB7IERyb3BEb3duQWN0aW9uS2V5IH0gZnJvbSAnLi9kcm9wLWRvd24uY29tbW9uJztcblxuLyoqXG4gKiBOYXZpZ2F0aW9uIERpcmVjdGl2ZSB0aGF0IGhhbmRsZXMga2V5Ym9hcmQgZXZlbnRzIG9uIGl0cyBob3N0IGFuZCBjb250cm9scyBhIHRhcmdldGVkIElneERyb3BEb3duQmFzZURpcmVjdGl2ZSBjb21wb25lbnRcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4RHJvcERvd25JdGVtTmF2aWdhdGlvbl0nXG59KVxuZXhwb3J0IGNsYXNzIElneERyb3BEb3duSXRlbU5hdmlnYXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBJRHJvcERvd25OYXZpZ2F0aW9uRGlyZWN0aXZlIHtcblxuICAgIHByb3RlY3RlZCBfdGFyZ2V0OiBJZ3hEcm9wRG93bkJhc2VEaXJlY3RpdmUgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoQFNlbGYoKSBAT3B0aW9uYWwoKSBASW5qZWN0KElHWF9EUk9QRE9XTl9CQVNFKSBwdWJsaWMgZHJvcGRvd246IElneERyb3BEb3duQmFzZURpcmVjdGl2ZSkgeyB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB0YXJnZXQgb2YgdGhlIG5hdmlnYXRpb24gZGlyZWN0aXZlO1xuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIEdldFxuICAgICAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gICAgICogIC4uLlxuICAgICAqICBAQ29udGVudENoaWxkKElneERyb3BEb3duTmF2aWdhdGlvbkRpcmVjdGl2ZSlcbiAgICAgKiAgbmF2RGlyZWN0aXZlOiBJZ3hEcm9wRG93bk5hdmlnYXRpb25EaXJlY3RpdmUgPSBudWxsXG4gICAgICogIC4uLlxuICAgICAqICBjb25zdCBuYXZUYXJnZXQ6IElneERyb3BEb3duQmFzZURpcmVjdGl2ZSA9IG5hdkRpcmVjdGl2ZS5uYXZUYXJnZXRcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgZ2V0IHRhcmdldCgpOiBJZ3hEcm9wRG93bkJhc2VEaXJlY3RpdmUge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRhcmdldCBvZiB0aGUgbmF2aWdhdGlvbiBkaXJlY3RpdmU7XG4gICAgICogSWYgbm8gdmFsaWQgdGFyZ2V0IGlzIHBhc3NlZCwgaXQgZmFsbHMgYmFjayB0byB0aGUgZHJvcCBkb3duIGNvbnRleHRcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tIFNldCAtLT5cbiAgICAgKiA8aW5wdXQgW2lneERyb3BEb3duSXRlbU5hdmlnYXRpb25dPVwiZHJvcGRvd25cIiAvPlxuICAgICAqIC4uLlxuICAgICAqIDxpZ3gtZHJvcC1kb3duICNkcm9wZG93bj5cbiAgICAgKiAuLi5cbiAgICAgKiA8L2lneC1kcm9wLWRvd24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hEcm9wRG93bkl0ZW1OYXZpZ2F0aW9uJylcbiAgICBzZXQgdGFyZ2V0KHRhcmdldDogSWd4RHJvcERvd25CYXNlRGlyZWN0aXZlKSB7XG4gICAgICAgIHRoaXMuX3RhcmdldCA9IHRhcmdldCA/IHRhcmdldCA6IHRoaXMuZHJvcGRvd247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FwdHVyZXMga2V5ZG93biBldmVudHMgYW5kIGNhbGxzIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVycyBvbiB0aGUgdGFyZ2V0IGNvbXBvbmVudFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy50YXJnZXQuY29sbGFwc2VkKSB7IC8vIElmIGRyb3Bkb3duIGlzIG9wZW5lZFxuICAgICAgICAgICAgICAgIGNvbnN0IG5hdktleXMgPSBbJ2VzYycsICdlc2NhcGUnLCAnZW50ZXInLCAnc3BhY2UnLCAnc3BhY2ViYXInLCAnICcsXG4gICAgICAgICAgICAnYXJyb3d1cCcsICd1cCcsICdhcnJvd2Rvd24nLCAnZG93bicsICdob21lJywgJ2VuZCddO1xuICAgICAgICAgICAgICAgIGlmIChuYXZLZXlzLmluZGV4T2Yoa2V5KSA9PT0gLTEpIHsgLy8gSWYga2V5IGhhcyBhcHByb3ByaWF0ZSBmdW5jdGlvbiBpbiBERFxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9IGVsc2UgeyAvLyBJZiBkcm9wZG93biBpcyBjbG9zZWQsIGRvIG5vdGhpbmdcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2VzYyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZXNjYXBlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXQub25JdGVtQWN0aW9uS2V5KERyb3BEb3duQWN0aW9uS2V5LkVTQ0FQRSwgZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdlbnRlcic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0Lm9uSXRlbUFjdGlvbktleShEcm9wRG93bkFjdGlvbktleS5FTlRFUiwgZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnc3BhY2ViYXInOlxuICAgICAgICAgICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldC5vbkl0ZW1BY3Rpb25LZXkoRHJvcERvd25BY3Rpb25LZXkuU1BBQ0UsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndXAnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dVcEtleURvd24oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYXJyb3dkb3duJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkb3duJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkFycm93RG93bktleURvd24oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnaG9tZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Ib21lS2V5RG93bigpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRW5kS2V5RG93bigpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gcHJldmlvdXMgaXRlbVxuICAgICAqL1xuICAgIG9uQXJyb3dEb3duS2V5RG93bigpIHtcbiAgICAgICAgdGhpcy50YXJnZXQubmF2aWdhdGVOZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGVzIHRvIHByZXZpb3VzIGl0ZW1cbiAgICAgKi9cbiAgICBvbkFycm93VXBLZXlEb3duKCkge1xuICAgICAgICB0aGlzLnRhcmdldC5uYXZpZ2F0ZVByZXYoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gdGFyZ2V0J3MgbGFzdCBpdGVtXG4gICAgICovXG4gICAgb25FbmRLZXlEb3duKCkge1xuICAgICAgICB0aGlzLnRhcmdldC5uYXZpZ2F0ZUxhc3QoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gdGFyZ2V0J3MgZmlyc3QgaXRlbVxuICAgICAqL1xuICAgIG9uSG9tZUtleURvd24oKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0Lm5hdmlnYXRlRmlyc3QoKTtcbiAgICB9XG59XG4iXX0=