UNPKG

@progress/kendo-angular-pivotgrid

Version:
69 lines (68 loc) 3.46 kB
/**----------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the project root for more information *-------------------------------------------------------------------------------------------*/ import { Directive, EventEmitter, NgZone, Output, Renderer2 } from '@angular/core'; import { ChipComponent } from '@progress/kendo-angular-buttons'; import { Keys } from '@progress/kendo-angular-common'; import { Subscription } from 'rxjs'; import * as i0 from "@angular/core"; import * as i1 from "@progress/kendo-angular-buttons"; /** * @hidden */ export class ChipKeyboardNavigationDirective { host; renderer; ngZone; keydownSub = new Subscription(); reorder = new EventEmitter(); constructor(host, renderer, ngZone) { this.host = host; this.renderer = renderer; this.ngZone = ngZone; } ngOnInit() { const chipElement = this.host.element.nativeElement; this.ngZone.runOutsideAngular(() => { this.keydownSub.add(this.renderer.listen(chipElement, 'keydown', (ev) => { ev.preventDefault(); const isAltDown = ev.keyCode === Keys.ArrowDown && ev.altKey; const menuIcon = this.host.element.nativeElement.querySelector('.k-i-more-vertical, .k-svg-i-more-vertical'); const isCtrlOrMeta = ev.ctrlKey || ev.metaKey; const shiftAndMeta = ev.shiftKey && isCtrlOrMeta; const isArrow = [Keys.ArrowLeft, Keys.ArrowRight, Keys.ArrowDown, Keys.ArrowUp].includes(ev.keyCode); const isReorderAction = shiftAndMeta && isArrow; if (isAltDown && menuIcon) { menuIcon.click(); } else if (isReorderAction) { const direction = { [Keys.ArrowDown]: 'down', [Keys.ArrowUp]: 'up', [Keys.ArrowRight]: 'right', [Keys.ArrowLeft]: 'left' }[ev.keyCode]; this.reorder.emit({ direction, sender: this.host }); } })); }); } ngOnDestroy() { this.keydownSub.unsubscribe(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChipKeyboardNavigationDirective, deps: [{ token: i1.ChipComponent }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ChipKeyboardNavigationDirective, isStandalone: true, selector: "[kendoChipKeyboardNavigation]", outputs: { reorder: "reorder" }, ngImport: i0 }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ChipKeyboardNavigationDirective, decorators: [{ type: Directive, args: [{ selector: '[kendoChipKeyboardNavigation]', standalone: true }] }], ctorParameters: function () { return [{ type: i1.ChipComponent }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { reorder: [{ type: Output }] } });