@progress/kendo-angular-pivotgrid
Version:
PivotGrid package for Angular
69 lines (68 loc) • 3.46 kB
JavaScript
/**-----------------------------------------------------------------------------------------
* 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
}] } });