Ontica/Empiria.Land.Intranet

View on GitHub
src/app/shared/directives/form-keydown-enter.directive.ts

Summary

Maintainability
A
0 mins
Test Coverage
/**
 * @license
 * Copyright (c) La Vía Óntica SC, Ontica LLC and contributors. All rights reserved.
 *
 * See LICENSE.txt in the project root for complete license information.
 */

import { Directive, EventEmitter, HostListener, Output } from '@angular/core';


@Directive({
  selector: 'form[empNgFormKeyDownEnter]'
})
export class EmpFormKeyDownEnterDirective {

  @Output() public empNgFormKeyDownEnter = new EventEmitter<void>();

  @HostListener('keydown.enter', ['$event'])
  public onKeyDownEnter(event: KeyboardEvent): void {
    const targetTagName = (event.target as HTMLElement).tagName.toLowerCase();

    if (targetTagName === 'textarea') {
      event.stopPropagation();
    } else {
      event.preventDefault();
      this.empNgFormKeyDownEnter.emit();
    }
  }

}