diff --git a/src/lib/dialog/base-dialog.component.ts b/src/lib/dialog/base-dialog.component.ts new file mode 100644 index 0000000..c1429b3 --- /dev/null +++ b/src/lib/dialog/base-dialog.component.ts @@ -0,0 +1,19 @@ +import { Directive, HostListener } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { IqserEventTarget } from '@iqser/common-ui'; + +@Directive() +export abstract class BaseDialogComponent { + + abstract form: FormGroup; + abstract get changed(): boolean; + abstract save(): void; + + @HostListener('window:keydown.Enter', ['$event']) + onEnter(event: KeyboardEvent): void { + const node = (event.target as IqserEventTarget).localName; + if (this.form.valid && this.changed && node !== 'textarea') { + this.save(); + } + } +}