UNPKG

@yyasinaslan/easyform

Version:
60 lines 6.5 kB
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==