UNPKG

ion-form-error-messages

Version:

An ionic 4 component that will display a list of error messages for a given reactive form formGroup object.

180 lines 15.1 kB
/** * @fileoverview added by tsickle * Generated from: ion-form-error-messages.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, Input } from '@angular/core'; import { FormGroup } from '@angular/forms'; var IonFormErrorMessagesComponent = /** @class */ (function () { function IonFormErrorMessagesComponent() { this.color = 'danger'; } Object.defineProperty(IonFormErrorMessagesComponent.prototype, "filteredControls", { get: /** * @return {?} */ function () { if (!this.formGroup) { return []; } /** @type {?} */ var controls = this.objectToKeys(this.formGroup.controls); if (controls && (this.controls || this.control)) { /** @type {?} */ var filterToUse_1 = []; if (this.control) { filterToUse_1.push(this.control); } if (Array.isArray(this.controls)) { filterToUse_1 = filterToUse_1.concat(this.controls); } if (filterToUse_1.length) { controls = controls.filter((/** * @param {?} control * @return {?} */ function (control) { return filterToUse_1.indexOf(control) >= 0; })); } } return controls; }, enumerable: true, configurable: true }); /** * @return {?} */ IonFormErrorMessagesComponent.prototype.ngOnInit = /** * @return {?} */ function () { }; /** * @param {?} controlKey * @return {?} */ IonFormErrorMessagesComponent.prototype.getErrors = /** * @param {?} controlKey * @return {?} */ function (controlKey) { if (!this.formGroup || !this.formGroup.controls || !this.formGroup.controls[controlKey]) { return {}; } return this.formGroup.controls[controlKey].errors; }; /** * @return {?} */ IonFormErrorMessagesComponent.prototype.isAnyControlInvalid = /** * @return {?} */ function () { var e_1, _a; /** @type {?} */ var controlKeys = Object.keys(this.formGroup.controls); /** @type {?} */ var isInvalid = false; try { for (var controlKeys_1 = tslib_1.__values(controlKeys), controlKeys_1_1 = controlKeys_1.next(); !controlKeys_1_1.done; controlKeys_1_1 = controlKeys_1.next()) { var controlKey = controlKeys_1_1.value; if (this.isControlInvalid(controlKey)) { isInvalid = true; break; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (controlKeys_1_1 && !controlKeys_1_1.done && (_a = controlKeys_1.return)) _a.call(controlKeys_1); } finally { if (e_1) throw e_1.error; } } return isInvalid; }; /** * @param {?} controlKey * @return {?} */ IonFormErrorMessagesComponent.prototype.isControlInvalid = /** * @param {?} controlKey * @return {?} */ function (controlKey) { var e_2, _a; /** @type {?} */ var control = this.formGroup.controls[controlKey]; if (!control || !control.errors) { return false; } else { /** @type {?} */ var errorKeys = Object.keys(control.errors); /** @type {?} */ var isInvalid = false; try { for (var errorKeys_1 = tslib_1.__values(errorKeys), errorKeys_1_1 = errorKeys_1.next(); !errorKeys_1_1.done; errorKeys_1_1 = errorKeys_1.next()) { var errorKey = errorKeys_1_1.value; if (this.messages[controlKey][errorKey]) { isInvalid = true; break; } } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (errorKeys_1_1 && !errorKeys_1_1.done && (_a = errorKeys_1.return)) _a.call(errorKeys_1); } finally { if (e_2) throw e_2.error; } } return control.invalid && isInvalid && (control.dirty || control.touched); } }; /** * @param {?} value * @return {?} */ IonFormErrorMessagesComponent.prototype.objectToKeys = /** * @param {?} value * @return {?} */ function (value) { if (!value) { return value; } return Object.keys(value); }; IonFormErrorMessagesComponent.decorators = [ { type: Component, args: [{ selector: 'ion-form-error-messages', template: "\n <ion-item *ngIf=\"isAnyControlInvalid()\" lines=\"none\">\n <ion-grid class=\"ion-no-padding\">\n <ng-container *ngFor=\"let controlKey of filteredControls\">\n <ng-container *ngFor=\"let errorKey of objectToKeys(getErrors(controlKey))\">\n <ng-container *ngIf=\"messages[controlKey] || {} as errorMessages\">\n <ion-row *ngIf=\"errorMessages[errorKey]\">\n <ion-col class=\"ion-no-padding ion-text-wrap\">\n <ion-text [color]=\"color\" [innerHtml]=\"errorMessages[errorKey]\"> </ion-text>\n </ion-col>\n </ion-row>\n </ng-container>\n </ng-container>\n </ng-container>\n </ion-grid>\n </ion-item>\n ", styles: [' ion-item { --min-height: 16px; font-size: 14px;}'] }] } ]; /** @nocollapse */ IonFormErrorMessagesComponent.ctorParameters = function () { return []; }; IonFormErrorMessagesComponent.propDecorators = { formGroup: [{ type: Input }], messages: [{ type: Input }], color: [{ type: Input }], control: [{ type: Input }], controls: [{ type: Input }] }; return IonFormErrorMessagesComponent; }()); export { IonFormErrorMessagesComponent }; if (false) { /** @type {?} */ IonFormErrorMessagesComponent.prototype.formGroup; /** @type {?} */ IonFormErrorMessagesComponent.prototype.messages; /** @type {?} */ IonFormErrorMessagesComponent.prototype.color; /** @type {?} */ IonFormErrorMessagesComponent.prototype.control; /** @type {?} */ IonFormErrorMessagesComponent.prototype.controls; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uLWZvcm0tZXJyb3ItbWVzc2FnZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaW9uLWZvcm0tZXJyb3ItbWVzc2FnZXMvIiwic291cmNlcyI6WyJpb24tZm9ybS1lcnJvci1tZXNzYWdlcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDO0lBZ0RJO1FBeEJTLFVBQUssR0FBRyxRQUFRLENBQUM7SUF3QlgsQ0FBQztJQXBCaEIsc0JBQUksMkRBQWdCOzs7O1FBQXBCO1lBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2pCLE9BQU8sRUFBRSxDQUFDO2FBQ2I7O2dCQUNHLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQ3pELElBQUksUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7O29CQUN6QyxhQUFXLEdBQWEsRUFBRTtnQkFDOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNkLGFBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNsQztnQkFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUM5QixhQUFXLEdBQUcsYUFBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ25EO2dCQUVELElBQUksYUFBVyxDQUFDLE1BQU0sRUFBRTtvQkFDcEIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNOzs7O29CQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsYUFBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQWpDLENBQWlDLEVBQUMsQ0FBQztpQkFDNUU7YUFDSjtZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ3BCLENBQUM7OztPQUFBOzs7O0lBR0QsZ0RBQVE7OztJQUFSLGNBQVksQ0FBQzs7Ozs7SUFFYixpREFBUzs7OztJQUFULFVBQVUsVUFBa0I7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3JGLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN0RCxDQUFDOzs7O0lBRUQsMkRBQW1COzs7SUFBbkI7OztZQUNVLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDOztZQUNwRCxTQUFTLEdBQUcsS0FBSzs7WUFDckIsS0FBeUIsSUFBQSxnQkFBQSxpQkFBQSxXQUFXLENBQUEsd0NBQUEsaUVBQUU7Z0JBQWpDLElBQU0sVUFBVSx3QkFBQTtnQkFDakIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQUU7b0JBQ25DLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ2pCLE1BQU07aUJBQ1Q7YUFDSjs7Ozs7Ozs7O1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQzs7Ozs7SUFFRCx3REFBZ0I7Ozs7SUFBaEIsVUFBaUIsVUFBa0I7OztZQUN6QixPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQzdCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO2FBQU07O2dCQUNHLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7O2dCQUN6QyxTQUFTLEdBQUcsS0FBSzs7Z0JBRXJCLEtBQXVCLElBQUEsY0FBQSxpQkFBQSxTQUFTLENBQUEsb0NBQUEsMkRBQUU7b0JBQTdCLElBQU0sUUFBUSxzQkFBQTtvQkFDZixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUU7d0JBQ3JDLFNBQVMsR0FBRyxJQUFJLENBQUM7d0JBQ2pCLE1BQU07cUJBQ1Q7aUJBQ0o7Ozs7Ozs7OztZQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sSUFBSSxTQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3RTtJQUNMLENBQUM7Ozs7O0lBRUQsb0RBQVk7Ozs7SUFBWixVQUFhLEtBQVU7UUFDbkIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7O2dCQS9GSixTQUFTLFNBQUM7b0JBQ1AsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsUUFBUSxFQUFFLDY0QkFnQlQ7NkJBQ1EsbURBQW1EO2lCQUMvRDs7Ozs7NEJBRUksS0FBSzsyQkFDTCxLQUFLO3dCQUNMLEtBQUs7MEJBQ0wsS0FBSzsyQkFDTCxLQUFLOztJQXNFVixvQ0FBQztDQUFBLEFBaEdELElBZ0dDO1NBM0VZLDZCQUE2Qjs7O0lBQ3RDLGtEQUE4Qjs7SUFDOUIsaURBQXNFOztJQUN0RSw4Q0FBMEI7O0lBQzFCLGdEQUF5Qjs7SUFDekIsaURBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaW9uLWZvcm0tZXJyb3ItbWVzc2FnZXMnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxpb24taXRlbSAqbmdJZj1cImlzQW55Q29udHJvbEludmFsaWQoKVwiIGxpbmVzPVwibm9uZVwiPlxuICAgICAgICAgICAgPGlvbi1ncmlkIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb250cm9sS2V5IG9mIGZpbHRlcmVkQ29udHJvbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3JLZXkgb2Ygb2JqZWN0VG9LZXlzKGdldEVycm9ycyhjb250cm9sS2V5KSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlc1tjb250cm9sS2V5XSB8fCB7fSBhcyBlcnJvck1lc3NhZ2VzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJlcnJvck1lc3NhZ2VzW2Vycm9yS2V5XVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1uby1wYWRkaW5nIGlvbi10ZXh0LXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdGV4dCBbY29sb3JdPVwiY29sb3JcIiBbaW5uZXJIdG1sXT1cImVycm9yTWVzc2FnZXNbZXJyb3JLZXldXCI+IDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgICA8L2lvbi1pdGVtPlxuICAgIGAsXG4gICAgc3R5bGVzOiBbJyBpb24taXRlbSB7IC0tbWluLWhlaWdodDogMTZweDsgZm9udC1zaXplOiAxNHB4O30nXVxufSlcbmV4cG9ydCBjbGFzcyBJb25Gb3JtRXJyb3JNZXNzYWdlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgQElucHV0KCkgbWVzc2FnZXM6IHsgW2NvbnRyb2w6IHN0cmluZ106IHsgW2Vycm9yOiBzdHJpbmddOiBzdHJpbmcgfSB9O1xuICAgIEBJbnB1dCgpIGNvbG9yID0gJ2Rhbmdlcic7XG4gICAgQElucHV0KCkgY29udHJvbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvbnRyb2xzOiBzdHJpbmdbXTtcblxuICAgIGdldCBmaWx0ZXJlZENvbnRyb2xzKCkge1xuICAgICAgICBpZiAoIXRoaXMuZm9ybUdyb3VwKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvbnRyb2xzID0gdGhpcy5vYmplY3RUb0tleXModGhpcy5mb3JtR3JvdXAuY29udHJvbHMpO1xuICAgICAgICBpZiAoY29udHJvbHMgJiYgKHRoaXMuY29udHJvbHMgfHwgdGhpcy5jb250cm9sKSkge1xuICAgICAgICAgICAgbGV0IGZpbHRlclRvVXNlOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgICAgIGZpbHRlclRvVXNlLnB1c2godGhpcy5jb250cm9sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuY29udHJvbHMpKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyVG9Vc2UgPSBmaWx0ZXJUb1VzZS5jb25jYXQodGhpcy5jb250cm9scyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmaWx0ZXJUb1VzZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb250cm9scyA9IGNvbnRyb2xzLmZpbHRlcihjb250cm9sID0+IGZpbHRlclRvVXNlLmluZGV4T2YoY29udHJvbCkgPj0gMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRyb2xzO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHt9XG5cbiAgICBnZXRFcnJvcnMoY29udHJvbEtleTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtR3JvdXAgfHwgIXRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzIHx8ICF0aGlzLmZvcm1Hcm91cC5jb250cm9sc1tjb250cm9sS2V5XSkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xLZXldLmVycm9ycztcbiAgICB9XG5cbiAgICBpc0FueUNvbnRyb2xJbnZhbGlkKCkge1xuICAgICAgICBjb25zdCBjb250cm9sS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKTtcbiAgICAgICAgbGV0IGlzSW52YWxpZCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2xLZXkgb2YgY29udHJvbEtleXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ29udHJvbEludmFsaWQoY29udHJvbEtleSkpIHtcbiAgICAgICAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0ludmFsaWQ7XG4gICAgfVxuXG4gICAgaXNDb250cm9sSW52YWxpZChjb250cm9sS2V5OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xLZXldO1xuICAgICAgICBpZiAoIWNvbnRyb2wgfHwgIWNvbnRyb2wuZXJyb3JzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvcktleXMgPSBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycyk7XG4gICAgICAgICAgICBsZXQgaXNJbnZhbGlkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZXJyb3JLZXkgb2YgZXJyb3JLZXlzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWVzc2FnZXNbY29udHJvbEtleV1bZXJyb3JLZXldKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb250cm9sLmludmFsaWQgJiYgaXNJbnZhbGlkICYmIChjb250cm9sLmRpcnR5IHx8IGNvbnRyb2wudG91Y2hlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvYmplY3RUb0tleXModmFsdWU6IGFueSk6IHN0cmluZ1tdIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gICAgfVxufVxuIl19