@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
72 lines • 11.2 kB
JavaScript
import { Component, ContentChildren, Input, QueryList } from '@angular/core';
import { MessageDirective } from './message.directive';
import { ValidationPattern } from './validation-pattern';
import { TranslateService } from '@ngx-translate/core';
import { NgFor, NgIf } from '@angular/common';
import { C8yTranslatePipe } from '../i18n';
import * as i0 from "@angular/core";
import * as i1 from "@ngx-translate/core";
export class MessagesComponent {
constructor(translateService) {
this.translateService = translateService;
this.show = {};
this.defaults = ValidationPattern.messages;
this.helpMessage = '';
this.messages = [];
this.messageMap = {};
}
ngAfterContentInit() {
this.messageMap = Object.assign({}, this.defaults, this.customMessages.reduce((messages, directive) => {
messages[directive.name] = directive.text;
return messages;
}, {}));
}
changeVisibility(show) {
this.show = show;
this.ngOnChanges();
}
ngOnChanges() {
if (this.show) {
this.messages = Object.keys(this.show)
.map(key => this.toMessage(key, this.show[key]))
// if an null message is returned, it will not be displayed
.filter(message => message !== null);
}
else {
this.messages = [];
}
}
toMessage(key, value) {
let message = this.messageMap[key];
if ((!message || message === ValidationPattern.messages.pattern) &&
key === 'pattern' &&
typeof value?.requiredPattern === 'string') {
const pattern = value.requiredPattern.replace(/^\//, '').replace(/\/$/, '');
const foundPattern = Object.keys(ValidationPattern.rules).find(tmp => ValidationPattern.rules[tmp].pattern?.source === pattern);
if (foundPattern) {
key = foundPattern;
message = this.messageMap[key];
}
}
if (!message) {
return null;
}
return this.translateService.instant(message, value);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagesComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MessagesComponent, isStandalone: true, selector: "c8y-messages", inputs: { show: "show", defaults: "defaults", helpMessage: "helpMessage" }, queries: [{ propertyName: "customMessages", predicate: MessageDirective }], usesOnChanges: true, ngImport: i0, template: "<small class=\"form-control-feedback-message\">\n <div\n class=\"d-block\"\n *ngFor=\"let msg of messages\"\n >\n {{ msg | translate }}\n </div>\n <div\n class=\"help-block\"\n *ngIf=\"!messages.length && helpMessage\"\n >\n {{ helpMessage | translate }}\n </div>\n <ng-content></ng-content>\n</small>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessagesComponent, decorators: [{
type: Component,
args: [{ selector: 'c8y-messages', standalone: true, imports: [NgIf, NgFor, C8yTranslatePipe], template: "<small class=\"form-control-feedback-message\">\n <div\n class=\"d-block\"\n *ngFor=\"let msg of messages\"\n >\n {{ msg | translate }}\n </div>\n <div\n class=\"help-block\"\n *ngIf=\"!messages.length && helpMessage\"\n >\n {{ helpMessage | translate }}\n </div>\n <ng-content></ng-content>\n</small>\n" }]
}], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { show: [{
type: Input
}], defaults: [{
type: Input
}], helpMessage: [{
type: Input
}], customMessages: [{
type: ContentChildren,
args: [MessageDirective]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9mb3Jtcy9tZXNzYWdlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2Zvcm1zL21lc3NhZ2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7OztBQVEzQyxNQUFNLE9BQU8saUJBQWlCO0lBUTVCLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBUDdDLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsYUFBUSxHQUFXLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztRQUM5QyxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUUxQixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsZUFBVSxHQUFRLEVBQUUsQ0FBQztJQUVvQyxDQUFDO0lBRTFELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQzdCLEVBQUUsRUFDRixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFO1lBQ2pELFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztZQUMxQyxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFZO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ25DLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDaEQsMkRBQTJEO2lCQUMxRCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDekMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVPLFNBQVMsQ0FBQyxHQUFHLEVBQUUsS0FBSztRQUMxQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQ0UsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLEtBQUssaUJBQWlCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUM1RCxHQUFHLEtBQUssU0FBUztZQUNqQixPQUFPLEtBQUssRUFBRSxlQUFlLEtBQUssUUFBUSxFQUMxQyxDQUFDO1lBQ0QsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQzVELEdBQUcsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEtBQUssT0FBTyxDQUNoRSxDQUFDO1lBQ0YsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsR0FBRyxHQUFHLFlBQVksQ0FBQztnQkFDbkIsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7K0dBekRVLGlCQUFpQjttR0FBakIsaUJBQWlCLG1MQUlYLGdCQUFnQixrRENqQm5DLDBVQWVBLDRDREpZLElBQUksNkZBQUUsS0FBSyw4R0FBRSxnQkFBZ0I7OzRGQUU1QixpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0UsY0FBYyxjQUVaLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUM7cUZBRy9CLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQzZCLGNBQWM7c0JBQWhELGVBQWU7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIElucHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lc3NhZ2VEaXJlY3RpdmUgfSBmcm9tICcuL21lc3NhZ2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IFZhbGlkYXRpb25QYXR0ZXJuIH0gZnJvbSAnLi92YWxpZGF0aW9uLXBhdHRlcm4nO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQzh5VHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uL2kxOG4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbWVzc2FnZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgTmdGb3IsIEM4eVRyYW5zbGF0ZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc2hvdzogb2JqZWN0ID0ge307XG4gIEBJbnB1dCgpIGRlZmF1bHRzOiBvYmplY3QgPSBWYWxpZGF0aW9uUGF0dGVybi5tZXNzYWdlcztcbiAgQElucHV0KCkgaGVscE1lc3NhZ2UgPSAnJztcbiAgQENvbnRlbnRDaGlsZHJlbihNZXNzYWdlRGlyZWN0aXZlKSBjdXN0b21NZXNzYWdlczogUXVlcnlMaXN0PE1lc3NhZ2VEaXJlY3RpdmU+O1xuICBtZXNzYWdlcyA9IFtdO1xuICBtZXNzYWdlTWFwOiBhbnkgPSB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMubWVzc2FnZU1hcCA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIHRoaXMuZGVmYXVsdHMsXG4gICAgICB0aGlzLmN1c3RvbU1lc3NhZ2VzLnJlZHVjZSgobWVzc2FnZXMsIGRpcmVjdGl2ZSkgPT4ge1xuICAgICAgICBtZXNzYWdlc1tkaXJlY3RpdmUubmFtZV0gPSBkaXJlY3RpdmUudGV4dDtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VzO1xuICAgICAgfSwge30pXG4gICAgKTtcbiAgfVxuXG4gIGNoYW5nZVZpc2liaWxpdHkoc2hvdzogb2JqZWN0KSB7XG4gICAgdGhpcy5zaG93ID0gc2hvdztcbiAgICB0aGlzLm5nT25DaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5zaG93KSB7XG4gICAgICB0aGlzLm1lc3NhZ2VzID0gT2JqZWN0LmtleXModGhpcy5zaG93KVxuICAgICAgICAubWFwKGtleSA9PiB0aGlzLnRvTWVzc2FnZShrZXksIHRoaXMuc2hvd1trZXldKSlcbiAgICAgICAgLy8gaWYgYW4gbnVsbCBtZXNzYWdlIGlzIHJldHVybmVkLCBpdCB3aWxsIG5vdCBiZSBkaXNwbGF5ZWRcbiAgICAgICAgLmZpbHRlcihtZXNzYWdlID0+IG1lc3NhZ2UgIT09IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1lc3NhZ2VzID0gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0b01lc3NhZ2Uoa2V5LCB2YWx1ZSkge1xuICAgIGxldCBtZXNzYWdlID0gdGhpcy5tZXNzYWdlTWFwW2tleV07XG4gICAgaWYgKFxuICAgICAgKCFtZXNzYWdlIHx8IG1lc3NhZ2UgPT09IFZhbGlkYXRpb25QYXR0ZXJuLm1lc3NhZ2VzLnBhdHRlcm4pICYmXG4gICAgICBrZXkgPT09ICdwYXR0ZXJuJyAmJlxuICAgICAgdHlwZW9mIHZhbHVlPy5yZXF1aXJlZFBhdHRlcm4gPT09ICdzdHJpbmcnXG4gICAgKSB7XG4gICAgICBjb25zdCBwYXR0ZXJuID0gdmFsdWUucmVxdWlyZWRQYXR0ZXJuLnJlcGxhY2UoL15cXC8vLCAnJykucmVwbGFjZSgvXFwvJC8sICcnKTtcbiAgICAgIGNvbnN0IGZvdW5kUGF0dGVybiA9IE9iamVjdC5rZXlzKFZhbGlkYXRpb25QYXR0ZXJuLnJ1bGVzKS5maW5kKFxuICAgICAgICB0bXAgPT4gVmFsaWRhdGlvblBhdHRlcm4ucnVsZXNbdG1wXS5wYXR0ZXJuPy5zb3VyY2UgPT09IHBhdHRlcm5cbiAgICAgICk7XG4gICAgICBpZiAoZm91bmRQYXR0ZXJuKSB7XG4gICAgICAgIGtleSA9IGZvdW5kUGF0dGVybjtcbiAgICAgICAgbWVzc2FnZSA9IHRoaXMubWVzc2FnZU1hcFtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQobWVzc2FnZSwgdmFsdWUpO1xuICB9XG59XG4iLCI8c21hbGwgY2xhc3M9XCJmb3JtLWNvbnRyb2wtZmVlZGJhY2stbWVzc2FnZVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJkLWJsb2NrXCJcbiAgICAqbmdGb3I9XCJsZXQgbXNnIG9mIG1lc3NhZ2VzXCJcbiAgPlxuICAgIHt7IG1zZyB8IHRyYW5zbGF0ZSB9fVxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiaGVscC1ibG9ja1wiXG4gICAgKm5nSWY9XCIhbWVzc2FnZXMubGVuZ3RoICYmIGhlbHBNZXNzYWdlXCJcbiAgPlxuICAgIHt7IGhlbHBNZXNzYWdlIHwgdHJhbnNsYXRlIH19XG4gIDwvZGl2PlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L3NtYWxsPlxuIl19