From a0df51dd23a0bdb77dd9385c951d7c71ccf2f1b7 Mon Sep 17 00:00:00 2001 From: Masum ULU Date: Mon, 12 Jun 2023 14:35:57 +0300 Subject: [PATCH] caps-lock directive added --- .../src/lib/directives/caps-lock.directive.ts | 30 +++++++++++++++++++ .../packages/core/src/lib/directives/index.ts | 1 + 2 files changed, 31 insertions(+) create mode 100644 npm/ng-packs/packages/core/src/lib/directives/caps-lock.directive.ts diff --git a/npm/ng-packs/packages/core/src/lib/directives/caps-lock.directive.ts b/npm/ng-packs/packages/core/src/lib/directives/caps-lock.directive.ts new file mode 100644 index 0000000000..7da2eb32cf --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/directives/caps-lock.directive.ts @@ -0,0 +1,30 @@ +import { Directive, EventEmitter, HostListener, Output } from '@angular/core'; + +@Directive({ + standalone: true, + selector: '[abpCapsLock]', +}) +export class TrackCapsLockDirective { + @Output('abpCapsLock') capsLock = new EventEmitter(); + + @HostListener('window:keydown', ['$event']) + onKeyDown(event: KeyboardEvent): void { + this.capsLock.emit(this.capS(event)); + } + @HostListener('window:keyup', ['$event']) + onKeyUp(event: KeyboardEvent): void { + this.capsLock.emit(this.capS(event)); + } + + capS(e) { + var s = String.fromCharCode(e.which); + if ( + (s.toUpperCase() === s && s.toLowerCase() !== s && e.shiftKey) || + (s.toUpperCase() !== s && s.toLowerCase() === s && e.shiftKey) || + e.getModifierState('CapsLock') + ) { + return true; + } + return false; + } +} diff --git a/npm/ng-packs/packages/core/src/lib/directives/index.ts b/npm/ng-packs/packages/core/src/lib/directives/index.ts index a2f5d8e4fe..d5d6e22c31 100644 --- a/npm/ng-packs/packages/core/src/lib/directives/index.ts +++ b/npm/ng-packs/packages/core/src/lib/directives/index.ts @@ -7,3 +7,4 @@ export * from './permission.directive'; export * from './replaceable-template.directive'; export * from './stop-propagation.directive'; export * from './show-password.directive'; +export * from './caps-lock.directive';