@yyasinaslan/easyform
Version:
Angular Easy Form
60 lines • 6.5 kB
JavaScript
import { Directive, EventEmitter, HostListener, inject } from '@angular/core';
import { FormFieldDirective } from "./form-field.directive";
import * as i0 from "@angular/core";
/**
* Bind events to input, textarea, select elements and emit events to the parent form field directive
*/
export class BindEventsDirective {
constructor() {
this.formFieldDirective = inject(FormFieldDirective, { skipSelf: true });
this.emitEvent = (event) => {
const directive = this.formFieldDirective;
if (directive.fieldEvent && directive.fieldEvent instanceof EventEmitter) {
// Check if there are any subscribers to the event
if (directive.fieldEvent.observed) {
directive.fieldEvent.emit(event);
}
}
};
}
onInput(event) {
this.emitEvent(event);
}
onFocus(event) {
this.emitEvent(event);
}
onBlur(event) {
this.emitEvent(event);
}
onKeyup(event) {
this.emitEvent(event);
}
onKeydown(event) {
this.emitEvent(event);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BindEventsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: BindEventsDirective, isStandalone: true, selector: "input[bindEvents], textarea[bindEvents], select[bindEvents]", host: { listeners: { "input": "onInput($event)", "focus": "onFocus($event)", "blur": "onBlur($event)", "keyup": "onKeyup($event)", "keydown": "onKeydown($event)" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BindEventsDirective, decorators: [{
type: Directive,
args: [{
selector: 'input[bindEvents], textarea[bindEvents], select[bindEvents]',
standalone: true
}]
}], propDecorators: { onInput: [{
type: HostListener,
args: ['input', ['$event']]
}], onFocus: [{
type: HostListener,
args: ['focus', ['$event']]
}], onBlur: [{
type: HostListener,
args: ['blur', ['$event']]
}], onKeyup: [{
type: HostListener,
args: ['keyup', ['$event']]
}], onKeydown: [{
type: HostListener,
args: ['keydown', ['$event']]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZC1ldmVudHMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWFzeS1mb3JtL3NyYy9saWIvZGlyZWN0aXZlcy9iaW5kLWV2ZW50cy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFMUQ7O0dBRUc7QUFLSCxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBS0UsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFzQmxFLGNBQVMsR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQzNCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUMxQyxJQUFJLFNBQVMsQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDLFVBQVUsWUFBWSxZQUFZLEVBQUUsQ0FBQztnQkFDekUsa0RBQWtEO2dCQUNsRCxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2xDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQTtLQUVGO0lBOUJvQyxPQUFPLENBQUMsS0FBWTtRQUNyRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFa0MsT0FBTyxDQUFDLEtBQVk7UUFDckQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRWlDLE1BQU0sQ0FBQyxLQUFZO1FBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVrQyxPQUFPLENBQUMsS0FBWTtRQUNyRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFb0MsU0FBUyxDQUFDLEtBQVk7UUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDOytHQXJCVSxtQkFBbUI7bUdBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNkRBQTZEO29CQUN2RSxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBSW9DLE9BQU87c0JBQXpDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUlFLE9BQU87c0JBQXpDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUlDLE1BQU07c0JBQXZDLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUlHLE9BQU87c0JBQXpDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUlJLFNBQVM7c0JBQTdDLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1GaWVsZERpcmVjdGl2ZX0gZnJvbSBcIi4vZm9ybS1maWVsZC5kaXJlY3RpdmVcIjtcclxuXHJcbi8qKlxyXG4gKiBCaW5kIGV2ZW50cyB0byBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCBlbGVtZW50cyBhbmQgZW1pdCBldmVudHMgdG8gdGhlIHBhcmVudCBmb3JtIGZpZWxkIGRpcmVjdGl2ZVxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdpbnB1dFtiaW5kRXZlbnRzXSwgdGV4dGFyZWFbYmluZEV2ZW50c10sIHNlbGVjdFtiaW5kRXZlbnRzXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmluZEV2ZW50c0RpcmVjdGl2ZSB7XHJcbiAgZm9ybUZpZWxkRGlyZWN0aXZlID0gaW5qZWN0KEZvcm1GaWVsZERpcmVjdGl2ZSwge3NraXBTZWxmOiB0cnVlfSk7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JywgWyckZXZlbnQnXSkgb25JbnB1dChldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMuZW1pdEV2ZW50KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJywgWyckZXZlbnQnXSkgb25Gb2N1cyhldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMuZW1pdEV2ZW50KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInLCBbJyRldmVudCddKSBvbkJsdXIoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLmVtaXRFdmVudChldmVudCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pIG9uS2V5dXAoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLmVtaXRFdmVudChldmVudCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSkgb25LZXlkb3duKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5lbWl0RXZlbnQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgZW1pdEV2ZW50ID0gKGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgY29uc3QgZGlyZWN0aXZlID0gdGhpcy5mb3JtRmllbGREaXJlY3RpdmU7XHJcbiAgICBpZiAoZGlyZWN0aXZlLmZpZWxkRXZlbnQgJiYgZGlyZWN0aXZlLmZpZWxkRXZlbnQgaW5zdGFuY2VvZiBFdmVudEVtaXR0ZXIpIHtcclxuICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzdWJzY3JpYmVycyB0byB0aGUgZXZlbnRcclxuICAgICAgaWYgKGRpcmVjdGl2ZS5maWVsZEV2ZW50Lm9ic2VydmVkKSB7XHJcbiAgICAgICAgZGlyZWN0aXZlLmZpZWxkRXZlbnQuZW1pdChldmVudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==