@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
107 lines • 14.2 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { IgxDropDownItemNavigationDirective } from '../drop-down/drop-down-navigation.directive';
import { Directive, Input, HostListener } from '@angular/core';
import { Subscription, timer } from 'rxjs';
/** @hidden @internal */
let IgxSelectItemNavigationDirective = class IgxSelectItemNavigationDirective extends IgxDropDownItemNavigationDirective {
constructor() {
super(null);
// tslint:disable:member-ordering
this.inputStream = '';
this.clearStream$ = Subscription.EMPTY;
}
/** Captures keydown events and calls the appropriate handlers on the target component */
handleKeyDown(event) {
if (!event || event.shiftKey) {
return;
}
const key = event.key.toLowerCase();
if (event.altKey && (key === 'arrowdown' || key === 'arrowup' || key === 'down' || key === 'up')) {
this.target.toggle();
return;
}
if (this.target.collapsed) {
switch (key) {
case 'space':
case 'spacebar':
case ' ':
case 'enter':
event.preventDefault();
this.target.open();
return;
case 'arrowdown':
case 'down':
this.target.navigateNext();
this.target.selectItem(this.target.focusedItem);
event.preventDefault();
return;
case 'arrowup':
case 'up':
this.target.navigatePrev();
this.target.selectItem(this.target.focusedItem);
event.preventDefault();
return;
default:
break;
}
}
super.handleKeyDown(event);
}
/** Handle continuous letter typing navigation */
captureKey(event) {
// relying only on key, available on all major browsers:
// https://caniuse.com/#feat=keyboardevent-key (IE/Edge quirk doesn't affect letter typing)
if (!event || !event.key || event.key.length > 1) {
// ignore longer keys ('Alt', 'ArrowDown', etc)
return;
}
this.clearStream$.unsubscribe();
this.clearStream$ = timer(500).subscribe(() => {
this.inputStream = '';
});
this.inputStream += event.key;
const focusedItem = this.target.focusedItem;
// select the item
if (focusedItem && this.inputStream.length > 1 && focusedItem.itemText.toLowerCase().startsWith(this.inputStream.toLowerCase())) {
return;
}
this.activateItemByText(this.inputStream);
}
activateItemByText(text) {
const items = this.target.items;
const activeItemIndex = items.indexOf(this.target.focusedItem) || 0;
// ^ this is focused OR selected if the dd is closed
let nextItem = items.slice(activeItemIndex + 1).find(x => !x.disabled && (x.itemText.toLowerCase().startsWith(text.toLowerCase())));
if (!nextItem) {
nextItem = items.slice(0, activeItemIndex).find(x => !x.disabled && (x.itemText.toLowerCase().startsWith(text.toLowerCase())));
}
if (!nextItem) {
return;
}
if (this.target.collapsed) {
this.target.selectItem(nextItem);
}
this.target.navigateItem(items.indexOf(nextItem));
}
ngOnDestroy() {
this.clearStream$.unsubscribe();
}
};
__decorate([
Input('igxSelectItemNavigation'),
__metadata("design:type", Object)
], IgxSelectItemNavigationDirective.prototype, "target", void 0);
__decorate([
HostListener('keyup', ['$event']),
__metadata("design:type", Function),
__metadata("design:paramtypes", [KeyboardEvent]),
__metadata("design:returntype", void 0)
], IgxSelectItemNavigationDirective.prototype, "captureKey", null);
IgxSelectItemNavigationDirective = __decorate([
Directive({
selector: '[igxSelectItemNavigation]'
}),
__metadata("design:paramtypes", [])
], IgxSelectItemNavigationDirective);
export { IgxSelectItemNavigationDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW5hdmlnYXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9zZWxlY3Qvc2VsZWN0LW5hdmlnYXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNqRyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJM0Msd0JBQXdCO0FBSXhCLElBQWEsZ0NBQWdDLEdBQTdDLE1BQWEsZ0NBQWlDLFNBQVEsa0NBQWtDO0lBS3BGO1FBQWdCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQTJDNUIsaUNBQWlDO1FBQ3pCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGlCQUFZLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztJQTdDYixDQUFDO0lBRTlCLHlGQUF5RjtJQUN6RixhQUFhLENBQUMsS0FBb0I7UUFDOUIsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQzFCLE9BQU87U0FDVjtRQUVELE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxLQUFLLFdBQVcsSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQzlGLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckIsT0FBTztTQUNWO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUN2QixRQUFRLEdBQUcs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LENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xJO1FBRUQsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNYLE9BQU87U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDcEM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7Q0FDSixDQUFBO0FBaEdHO0lBREMsS0FBSyxDQUFDLHlCQUF5QixDQUFDOztnRUFDSjtBQW1EN0I7SUFEQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7O3FDQUNULGFBQWE7O2tFQW9CckM7QUExRVEsZ0NBQWdDO0lBSDVDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSwyQkFBMkI7S0FDeEMsQ0FBQzs7R0FDVyxnQ0FBZ0MsQ0FtRzVDO1NBbkdZLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElneERyb3BEb3duSXRlbU5hdmlnYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi9kcm9wLWRvd24vZHJvcC1kb3duLW5hdmlnYXRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJZ3hTZWxlY3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3QtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4U2VsZWN0QmFzZSB9IGZyb20gJy4vc2VsZWN0LmNvbW1vbic7XG5cbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4U2VsZWN0SXRlbU5hdmlnYXRpb25dJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hTZWxlY3RJdGVtTmF2aWdhdGlvbkRpcmVjdGl2ZSBleHRlbmRzIElneERyb3BEb3duSXRlbU5hdmlnYXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCdpZ3hTZWxlY3RJdGVtTmF2aWdhdGlvbicpXG4gICAgcHVibGljIHRhcmdldDogSWd4U2VsZWN0QmFzZTtcblxuICAgIGNvbnN0cnVjdG9yKCkgeyBzdXBlcihudWxsKTsgfVxuXG4gICAgLyoqIENhcHR1cmVzIGtleWRvd24gZXZlbnRzIGFuZCBjYWxscyB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlcnMgb24gdGhlIHRhcmdldCBjb21wb25lbnQgKi9cbiAgICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICghZXZlbnQgfHwgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoZXZlbnQuYWx0S2V5ICYmIChrZXkgPT09ICdhcnJvd2Rvd24nIHx8IGtleSA9PT0gJ2Fycm93dXAnIHx8IGtleSA9PT0gJ2Rvd24nIHx8IGtleSA9PT0gJ3VwJykpIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvZ2dsZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnc3BhY2ViYXInOlxuICAgICAgICAgICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2VudGVyJzpcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXQub3BlbigpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnYXJyb3dkb3duJzpcbiAgICAgICAgICAgICAgICBjYXNlICdkb3duJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXQubmF2aWdhdGVOZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LnNlbGVjdEl0ZW0odGhpcy50YXJnZXQuZm9jdXNlZEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgICAgICAgICAgY2FzZSAndXAnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldC5uYXZpZ2F0ZVByZXYoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuc2VsZWN0SXRlbSh0aGlzLnRhcmdldC5mb2N1c2VkSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLmhhbmRsZUtleURvd24oZXZlbnQpO1xuICAgIH1cblxuICAgIC8vIHRzbGludDpkaXNhYmxlOm1lbWJlci1vcmRlcmluZ1xuICAgIHByaXZhdGUgaW5wdXRTdHJlYW0gPSAnJztcbiAgICBwcml2YXRlIGNsZWFyU3RyZWFtJCA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAgIC8qKiBIYW5kbGUgY29udGludW91cyBsZXR0ZXIgdHlwaW5nIG5hdmlnYXRpb24gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIGNhcHR1cmVLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgLy8gcmVseWluZyBvbmx5IG9uIGtleSwgYXZhaWxhYmxlIG9uIGFsbCBtYWpvciBicm93c2VyczpcbiAgICAgICAgLy8gaHR0cHM6Ly9jYW5pdXNlLmNvbS8jZmVhdD1rZXlib2FyZGV2ZW50LWtleSAoSUUvRWRnZSBxdWlyayBkb2Vzbid0IGFmZmVjdCBsZXR0ZXIgdHlwaW5nKVxuICAgICAgICBpZiAoIWV2ZW50IHx8ICFldmVudC5rZXkgfHwgZXZlbnQua2V5Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIC8vIGlnbm9yZSBsb25nZXIga2V5cyAoJ0FsdCcsICdBcnJvd0Rvd24nLCBldGMpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsZWFyU3RyZWFtJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLmNsZWFyU3RyZWFtJCA9IHRpbWVyKDUwMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRTdHJlYW0gPSAnJztcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW5wdXRTdHJlYW0gKz0gZXZlbnQua2V5O1xuICAgICAgICBjb25zdCBmb2N1c2VkSXRlbSA9IHRoaXMudGFyZ2V0LmZvY3VzZWRJdGVtIGFzIElneFNlbGVjdEl0ZW1Db21wb25lbnQ7XG5cbiAgICAgICAgLy8gc2VsZWN0IHRoZSBpdGVtXG4gICAgICAgIGlmIChmb2N1c2VkSXRlbSAmJiB0aGlzLmlucHV0U3RyZWFtLmxlbmd0aCA+IDEgJiYgZm9jdXNlZEl0ZW0uaXRlbVRleHQudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHRoaXMuaW5wdXRTdHJlYW0udG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFjdGl2YXRlSXRlbUJ5VGV4dCh0aGlzLmlucHV0U3RyZWFtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWN0aXZhdGVJdGVtQnlUZXh0KHRleHQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMudGFyZ2V0Lml0ZW1zIGFzIElneFNlbGVjdEl0ZW1Db21wb25lbnRbXTtcbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbUluZGV4ID0gaXRlbXMuaW5kZXhPZih0aGlzLnRhcmdldC5mb2N1c2VkSXRlbSBhcyBJZ3hTZWxlY3RJdGVtQ29tcG9uZW50KSB8fCAwO1xuICAgICAgICAvLyBeIHRoaXMgaXMgZm9jdXNlZCBPUiBzZWxlY3RlZCBpZiB0aGUgZGQgaXMgY2xvc2VkXG4gICAgICAgIGxldCBuZXh0SXRlbSA9IGl0ZW1zLnNsaWNlKGFjdGl2ZUl0ZW1JbmRleCArIDEpLmZpbmQoeCA9PiAheC5kaXNhYmxlZCAmJiAoeC5pdGVtVGV4dC50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgodGV4dC50b0xvd2VyQ2FzZSgpKSkpO1xuXG4gICAgICAgIGlmICghbmV4dEl0ZW0pIHtcbiAgICAgICAgICAgIG5leHRJdGVtID0gaXRlbXMuc2xpY2UoMCwgYWN0aXZlSXRlbUluZGV4KS5maW5kKHggPT4gIXguZGlzYWJsZWQgJiYgKHguaXRlbVRleHQudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHRleHQudG9Mb3dlckNhc2UoKSkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbmV4dEl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRhcmdldC5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnNlbGVjdEl0ZW0obmV4dEl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGFyZ2V0Lm5hdmlnYXRlSXRlbShpdGVtcy5pbmRleE9mKG5leHRJdGVtKSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYXJTdHJlYW0kLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuIl19