UNPKG

@asi-ngtools/lib

Version:

This project is a little components library, simple to use, which will help you to simplify your project.

148 lines (147 loc) 13.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { FormControl, FormGroupDirective, FormGroupName } from '@angular/forms'; import { Injector } from '@angular/core'; import { AsiMessage } from './asi-message.directive'; import { Component, Input, ElementRef, ContentChildren, QueryList, Inject, forwardRef, } from '@angular/core'; export class AsiErrorMessages { /** * @param {?} element * @param {?} formGroupDirective * @param {?} injector */ constructor(element, formGroupDirective, injector) { this.element = element; this.formGroupDirective = formGroupDirective; this.injector = injector; /** * Display error one by one */ this.showOne = false; this.errorMessages = []; this.submitted = false; } /** * @return {?} */ ngOnInit() { /** @type {?} */ const formGroupName = this.injector.get(FormGroupName, null); if (this.forName) { if (!formGroupName) { this.for = /** @type {?} */ (this.formGroupDirective.control.controls[this.forName]); } else { /** @type {?} */ const groupFormName = /** @type {?} */ (this.formGroupDirective.control.controls[formGroupName.name]); this.for = /** @type {?} */ (groupFormName.controls[this.forName]); } } this.formGroupDirective.ngSubmit.subscribe(() => { this.submitted = true; this.onStatusChange(); }); this.for.statusChanges.subscribe(() => { this.submitted = false; this.onStatusChange(); }); } /** * @return {?} */ ngAfterContentInit() { if (this.isFieldRequired()) { this.element.nativeElement.parentElement.classList.add('asi-required'); } } /** * @return {?} */ isFieldRequired() { /** @type {?} */ let required = false; this.messages.forEach(element => { if (element.error === 'required') { required = true; } }); return required; } /** * Methode appellée à chaque changement de l'entré du composant "for" * @return {?} */ onStatusChange() { /** @type {?} */ let messagesError = []; if (this.for.touched || this.submitted) { if (this.for.errors != null && this.messages != null) { this.messages.forEach(message => { if (this.for.errors[message.error] && (!message.onSubmit || this.submitted) && !(this.showOne && messagesError.length > 0)) { messagesError.push(message); } }); } } this.errorMessages = messagesError; if (this.errorMessages.length > 0) { this.element.nativeElement.parentElement.classList.add('asi-has-error'); this.element.nativeElement.classList.add('active'); } else { this.element.nativeElement.parentElement.classList.remove('asi-has-error'); this.element.nativeElement.classList.remove('active'); } } } AsiErrorMessages.decorators = [ { type: Component, args: [{ selector: 'error-messages , asi-error-messages', host: { 'class': 'asi-component asi-error-messages' }, template: "<div class=\"errorPanel\">\r\n <ng-content select=\"message\"></ng-content>\r\n <div *ngFor=\"let message of errorMessages\" class=\"asi-error-message\">{{message.value | translate}}</div>\r\n</div>\r\n" }] } ]; /** @nocollapse */ AsiErrorMessages.ctorParameters = () => [ { type: ElementRef }, { type: FormGroupDirective, decorators: [{ type: Inject, args: [forwardRef(() => FormGroupDirective),] }] }, { type: Injector } ]; AsiErrorMessages.propDecorators = { for: [{ type: Input }], forName: [{ type: Input }], showOne: [{ type: Input }], messages: [{ type: ContentChildren, args: [AsiMessage,] }] }; if (false) { /** * link the error messages to a formControl * @type {?} */ AsiErrorMessages.prototype.for; /** * link the error messages to a formControl by is name * @type {?} */ AsiErrorMessages.prototype.forName; /** * Display error one by one * @type {?} */ AsiErrorMessages.prototype.showOne; /** @type {?} */ AsiErrorMessages.prototype.messages; /** @type {?} */ AsiErrorMessages.prototype.errorMessages; /** @type {?} */ AsiErrorMessages.prototype.submitted; /** @type {?} */ AsiErrorMessages.prototype.element; /** @type {?} */ AsiErrorMessages.prototype.formGroupDirective; /** @type {?} */ AsiErrorMessages.prototype.injector; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLWVycm9yLW1lc3NhZ2VzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhc2ktbmd0b29scy9saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hc2ktZXJyb3ItbWVzc2FnZXMvYXNpLWVycm9yLW1lc3NhZ2VzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQVUsZUFBZSxFQUNuQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsR0FDaEQsTUFBTSxlQUFlLENBQUM7QUFPdkIsTUFBTTs7Ozs7O0lBY0osWUFBb0IsT0FBbUIsRUFDaUIsa0JBQXNDLEVBQ3BGO1FBRlUsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNpQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3BGLGFBQVEsR0FBUixRQUFROzs7O3VCQVRDLEtBQUs7NkJBSVcsRUFBRTt5QkFDekIsS0FBSztLQUtoQjs7OztJQUVELFFBQVE7O1FBQ04sTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLEdBQUcscUJBQWdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMs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QUFNLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2RDtLQUNGOzs7WUFuRkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQ0FBcUM7Z0JBQy9DLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRTtnQkFDckQsd05BQWdEO2FBQ2pEOzs7O1lBUm1CLFVBQVU7WUFKUixrQkFBa0IsdUJBNEJuQyxNQUFNLFNBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1lBM0J2QyxRQUFROzs7a0JBZWQsS0FBSztzQkFFTCxLQUFLO3NCQUVMLEtBQUs7dUJBRUwsZUFBZSxTQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBGb3JtR3JvdXBOYW1lLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXNpTWVzc2FnZSB9IGZyb20gJy4vYXNpLW1lc3NhZ2UuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCwgSW5wdXQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgQ29udGVudENoaWxkcmVuLFxuICBBZnRlckNvbnRlbnRJbml0LCBRdWVyeUxpc3QsIEluamVjdCwgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Vycm9yLW1lc3NhZ2VzICwgYXNpLWVycm9yLW1lc3NhZ2VzJyxcbiAgaG9zdDogeyAnY2xhc3MnOiAnYXNpLWNvbXBvbmVudCBhc2ktZXJyb3ItbWVzc2FnZXMnIH0sXG4gIHRlbXBsYXRlVXJsOiAnYXNpLWVycm9yLW1lc3NhZ2VzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBc2lFcnJvck1lc3NhZ2VzIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcblxuICAvKiogbGluayB0aGUgZXJyb3IgbWVzc2FnZXMgdG8gYSBmb3JtQ29udHJvbCAqL1xuICBASW5wdXQoKSBmb3I6IEZvcm1Db250cm9sO1xuICAvKiogbGluayB0aGUgZXJyb3IgbWVzc2FnZXMgdG8gYSBmb3JtQ29udHJvbCBieSBpcyBuYW1lICovXG4gIEBJbnB1dCgpIGZvck5hbWU6IHN0cmluZztcbiAgLyoqIERpc3BsYXkgZXJyb3Igb25lIGJ5IG9uZSAqL1xuICBASW5wdXQoKSBzaG93T25lID0gZmFsc2U7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihBc2lNZXNzYWdlKSBtZXNzYWdlczogUXVlcnlMaXN0PEFzaU1lc3NhZ2U+O1xuXG4gIGVycm9yTWVzc2FnZXM6IEFycmF5PEFzaU1lc3NhZ2U+ID0gW107XG4gIHN1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gRm9ybUdyb3VwRGlyZWN0aXZlKSkgcHJpdmF0ZSBmb3JtR3JvdXBEaXJlY3RpdmU6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgZm9ybUdyb3VwTmFtZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEZvcm1Hcm91cE5hbWUsIG51bGwpO1xuICAgIGlmICh0aGlzLmZvck5hbWUpIHtcbiAgICAgIGlmICghZm9ybUdyb3VwTmFtZSkge1xuICAgICAgICB0aGlzLmZvciA9IDxGb3JtQ29udHJvbD50aGlzLmZvcm1Hcm91cERpcmVjdGl2ZS5jb250cm9sLmNvbnRyb2xzW3RoaXMuZm9yTmFtZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBncm91cEZvcm1OYW1lOiBGb3JtR3JvdXAgPSA8Rm9ybUdyb3VwPnRoaXMuZm9ybUdyb3VwRGlyZWN0aXZlLmNvbnRyb2wuY29udHJvbHNbZm9ybUdyb3VwTmFtZS5uYW1lXTtcbiAgICAgICAgdGhpcy5mb3IgPSA8Rm9ybUNvbnRyb2w+Z3JvdXBGb3JtTmFtZS5jb250cm9sc1t0aGlzLmZvck5hbWVdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZm9ybUdyb3VwRGlyZWN0aXZlLm5nU3VibWl0LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICB0aGlzLm9uU3RhdHVzQ2hhbmdlKCk7XG4gICAgfSk7XG4gICAgdGhpcy5mb3Iuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMub25TdGF0dXNDaGFuZ2UoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAodGhpcy5pc0ZpZWxkUmVxdWlyZWQoKSkge1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhc2ktcmVxdWlyZWQnKTtcbiAgICB9XG4gIH1cblxuICBpc0ZpZWxkUmVxdWlyZWQoKSB7XG4gICAgbGV0IHJlcXVpcmVkID0gZmFsc2U7XG4gICAgdGhpcy5tZXNzYWdlcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuZXJyb3IgPT09ICdyZXF1aXJlZCcpIHtcbiAgICAgICAgcmVxdWlyZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXF1aXJlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2RlIGFwcGVsbMOpZSDDoCBjaGFxdWUgY2hhbmdlbWVudCBkZSBsJ2VudHLDqSBkdSBjb21wb3NhbnQgXCJmb3JcIlxuICAgKi9cbiAgb25TdGF0dXNDaGFuZ2UoKSB7XG4gICAgbGV0IG1lc3NhZ2VzRXJyb3I6IEFycmF5PEFzaU1lc3NhZ2U+ID0gW107XG4gICAgaWYgKHRoaXMuZm9yLnRvdWNoZWQgfHwgdGhpcy5zdWJtaXR0ZWQpIHtcbiAgICAgIGlmICh0aGlzLmZvci5lcnJvcnMgIT0gbnVsbCAmJiB0aGlzLm1lc3NhZ2VzICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlcy5mb3JFYWNoKG1lc3NhZ2UgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmZvci5lcnJvcnNbbWVzc2FnZS5lcnJvcl0gJiYgKCFtZXNzYWdlLm9uU3VibWl0IHx8IHRoaXMuc3VibWl0dGVkKSAmJiAhKHRoaXMuc2hvd09uZSAmJiBtZXNzYWdlc0Vycm9yLmxlbmd0aCA+IDApKSB7XG4gICAgICAgICAgICBtZXNzYWdlc0Vycm9yLnB1c2gobWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gbWVzc2FnZXNFcnJvcjtcbiAgICBpZiAodGhpcy5lcnJvck1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYXNpLWhhcy1lcnJvcicpO1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnYXNpLWhhcy1lcnJvcicpO1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7XG4gICAgfVxuICB9XG59XG4iXX0=