@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
51 lines • 15.2 kB
JavaScript
import { Component, Input, Output, EventEmitter } from '@angular/core';
import { ControlContainer, NgForm } from '@angular/forms';
import * as i0 from "@angular/core";
import * as i1 from "@angular/forms";
import * as i2 from "@angular/common";
import * as i3 from "@c8y/ngx-components";
import * as i4 from "./child-predicates.component";
export class DynamicAccessMappingComponent {
constructor(controlContainer) {
this.controlContainer = controlContainer;
this.onRemoveAccessMapping = new EventEmitter();
}
ngOnChanges() {
if (this.accessMapping && this.apps && this.groups) {
this.setSelectedItems();
}
}
onRemoveAllChildPredicates() {
this.onRemoveAccessMapping.emit(this.accessMapping);
}
getIds(selectedItems) {
return selectedItems.map(item => parseInt(item.id, 10));
}
setSelectedItems() {
if (this.accessMapping) {
if (this.accessMapping.thenGroups) {
this.selectedGroups = this.groups.filter(item => this.accessMapping.thenGroups.includes(item.id));
}
if (this.accessMapping.thenApplications) {
this.selectedApps = this.apps.filter(item => this.accessMapping.thenApplications.includes(+item.id));
}
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicAccessMappingComponent, deps: [{ token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DynamicAccessMappingComponent, selector: "c8y-sso-dynamic-access-mapping", inputs: { groups: "groups", apps: "apps", accessMapping: "accessMapping", accessMappingIndex: "accessMappingIndex" }, outputs: { onRemoveAccessMapping: "onRemoveAccessMapping" }, usesOnChanges: true, ngImport: i0, template: "<fieldset class=\"c8y-fieldset p-8\">\n <div *ngIf=\"accessMapping.when.childPredicates.length != 0\">\n <c8y-sso-child-predicates\n [childPredicates]=\"accessMapping.when.childPredicates\"\n [accessMappingIndex]=\"'am' + accessMappingIndex\"\n (onRemoveAllChildPredicates)=\"onRemoveAllChildPredicates()\"\n ></c8y-sso-child-predicates>\n\n <fieldset class=\"c8y-fieldset p-16\">\n <legend>\n {{ 'Provide access to' | translate }}\n </legend>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div\n title=\"{{ 'Default global roles' | translate }}\"\n class=\"form-group\"\n >\n <label\n [for]=\"'groups' + accessMappingIndex\"\n class=\"control-label\"\n >\n {{ 'Default global roles' | translate }}\n </label>\n <c8y-select-legacy\n [id]=\"'groups' + accessMappingIndex\"\n [items]=\"groups\"\n [selected]=\"selectedGroups\"\n [disableApplyOnNoSelection]=\"true\"\n (onChange)=\"controlContainer.control.markAsDirty(); selectedGroups = $event; accessMapping.thenGroups = getIds($event)\"\n ></c8y-select-legacy>\n </div>\n </div>\n <div class=\"col-sm-6\">\n <div\n title=\"{{ 'Default applications' | translate }}\"\n class=\"form-group\"\n >\n <label\n [for]=\"'apps' + accessMappingIndex\"\n class=\"control-label\"\n >\n {{ 'Default applications' | translate }}\n </label>\n <c8y-select-legacy\n [id]=\"'apps' + accessMappingIndex\"\n [items]=\"apps\"\n [selected]=\"selectedApps\"\n [disableApplyOnNoSelection]=\"true\"\n (onChange)=\"controlContainer.control.markAsDirty(); selectedApps = $event; accessMapping.thenApplications = getIds($event)\"\n ></c8y-select-legacy>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n</fieldset>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.SelectLegacyComponent, selector: "c8y-select-legacy", inputs: ["placeholder", "selectedLabel", "applyLabel", "items", "selected", "updateItems", "disableApplyOnNoSelection", "addDropdownContainerToBody"], outputs: ["onChange"] }, { kind: "component", type: i4.ChildPredicatesComponent, selector: "c8y-sso-child-predicates", inputs: ["childPredicates", "accessMappingIndex"], outputs: ["onRemoveAllChildPredicates"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicAccessMappingComponent, decorators: [{
type: Component,
args: [{ selector: 'c8y-sso-dynamic-access-mapping', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<fieldset class=\"c8y-fieldset p-8\">\n <div *ngIf=\"accessMapping.when.childPredicates.length != 0\">\n <c8y-sso-child-predicates\n [childPredicates]=\"accessMapping.when.childPredicates\"\n [accessMappingIndex]=\"'am' + accessMappingIndex\"\n (onRemoveAllChildPredicates)=\"onRemoveAllChildPredicates()\"\n ></c8y-sso-child-predicates>\n\n <fieldset class=\"c8y-fieldset p-16\">\n <legend>\n {{ 'Provide access to' | translate }}\n </legend>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div\n title=\"{{ 'Default global roles' | translate }}\"\n class=\"form-group\"\n >\n <label\n [for]=\"'groups' + accessMappingIndex\"\n class=\"control-label\"\n >\n {{ 'Default global roles' | translate }}\n </label>\n <c8y-select-legacy\n [id]=\"'groups' + accessMappingIndex\"\n [items]=\"groups\"\n [selected]=\"selectedGroups\"\n [disableApplyOnNoSelection]=\"true\"\n (onChange)=\"controlContainer.control.markAsDirty(); selectedGroups = $event; accessMapping.thenGroups = getIds($event)\"\n ></c8y-select-legacy>\n </div>\n </div>\n <div class=\"col-sm-6\">\n <div\n title=\"{{ 'Default applications' | translate }}\"\n class=\"form-group\"\n >\n <label\n [for]=\"'apps' + accessMappingIndex\"\n class=\"control-label\"\n >\n {{ 'Default applications' | translate }}\n </label>\n <c8y-select-legacy\n [id]=\"'apps' + accessMappingIndex\"\n [items]=\"apps\"\n [selected]=\"selectedApps\"\n [disableApplyOnNoSelection]=\"true\"\n (onChange)=\"controlContainer.control.markAsDirty(); selectedApps = $event; accessMapping.thenApplications = getIds($event)\"\n ></c8y-select-legacy>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n</fieldset>\n" }]
}], ctorParameters: () => [{ type: i1.ControlContainer }], propDecorators: { groups: [{
type: Input
}], apps: [{
type: Input
}], accessMapping: [{
type: Input
}], onRemoveAccessMapping: [{
type: Output
}], accessMappingIndex: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1hY2Nlc3MtbWFwcGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9hdXRoLWNvbmZpZ3VyYXRpb24vc3NvLWNvbmZpZ3VyYXRpb24vdGVtcGxhdGUtcGFydHMvYWNjZXNzLW1hcHBpbmcvZHluYW1pYy1hY2Nlc3MtbWFwcGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9hdXRoLWNvbmZpZ3VyYXRpb24vc3NvLWNvbmZpZ3VyYXRpb24vdGVtcGxhdGUtcGFydHMvYWNjZXNzLW1hcHBpbmcvZHluYW1pYy1hY2Nlc3MtbWFwcGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBUzFELE1BQU0sT0FBTyw2QkFBNkI7SUFZeEMsWUFBbUIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFKM0MsMEJBQXFCLEdBQWdDLElBQUksWUFBWSxFQUFFLENBQUM7SUFJMUIsQ0FBQztJQUV6RCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsMEJBQTBCO1FBQ3hCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYTtRQUNsQixPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQ2hELENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQ3ZELENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7K0dBekNVLDZCQUE2QjttR0FBN0IsNkJBQTZCLDhRQ1YxQyxvbUVBeURBLHFvQkRqRGlCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDOzs0RkFFeEQsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLGdDQUFnQyxpQkFFM0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7cUZBRzFELE1BQU07c0JBQWQsS0FBSztnQkFHRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFDSSxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBRUUsa0JBQWtCO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElBcHBsaWNhdGlvbiwgSVVzZXJHcm91cCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFjY2Vzc01hcHBpbmcgfSBmcm9tICcuLi8uLi9zc28tY29uZmlndXJhdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1zc28tZHluYW1pYy1hY2Nlc3MtbWFwcGluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWFjY2Vzcy1tYXBwaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljQWNjZXNzTWFwcGluZ0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGdyb3VwczogSVVzZXJHcm91cFtdO1xuICBzZWxlY3RlZEdyb3VwczogSVVzZXJHcm91cFtdO1xuXG4gIEBJbnB1dCgpIGFwcHM6IElBcHBsaWNhdGlvbltdO1xuICBzZWxlY3RlZEFwcHM6IElBcHBsaWNhdGlvbltdO1xuXG4gIEBJbnB1dCgpIGFjY2Vzc01hcHBpbmc6IEFjY2Vzc01hcHBpbmc7XG4gIEBPdXRwdXQoKSBvblJlbW92ZUFjY2Vzc01hcHBpbmc6IEV2ZW50RW1pdHRlcjxBY2Nlc3NNYXBwaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASW5wdXQoKSBhY2Nlc3NNYXBwaW5nSW5kZXg6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcikge31cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hY2Nlc3NNYXBwaW5nICYmIHRoaXMuYXBwcyAmJiB0aGlzLmdyb3Vwcykge1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zKCk7XG4gICAgfVxuICB9XG5cbiAgb25SZW1vdmVBbGxDaGlsZFByZWRpY2F0ZXMoKSB7XG4gICAgdGhpcy5vblJlbW92ZUFjY2Vzc01hcHBpbmcuZW1pdCh0aGlzLmFjY2Vzc01hcHBpbmcpO1xuICB9XG5cbiAgZ2V0SWRzKHNlbGVjdGVkSXRlbXMpIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRJdGVtcy5tYXAoaXRlbSA9PiBwYXJzZUludChpdGVtLmlkLCAxMCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZEl0ZW1zKCkge1xuICAgIGlmICh0aGlzLmFjY2Vzc01hcHBpbmcpIHtcbiAgICAgIGlmICh0aGlzLmFjY2Vzc01hcHBpbmcudGhlbkdyb3Vwcykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzID0gdGhpcy5ncm91cHMuZmlsdGVyKGl0ZW0gPT5cbiAgICAgICAgICB0aGlzLmFjY2Vzc01hcHBpbmcudGhlbkdyb3Vwcy5pbmNsdWRlcyhpdGVtLmlkKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYWNjZXNzTWFwcGluZy50aGVuQXBwbGljYXRpb25zKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBcHBzID0gdGhpcy5hcHBzLmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgdGhpcy5hY2Nlc3NNYXBwaW5nLnRoZW5BcHBsaWNhdGlvbnMuaW5jbHVkZXMoK2l0ZW0uaWQpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZmllbGRzZXQgY2xhc3M9XCJjOHktZmllbGRzZXQgcC04XCI+XG4gIDxkaXYgKm5nSWY9XCJhY2Nlc3NNYXBwaW5nLndoZW4uY2hpbGRQcmVkaWNhdGVzLmxlbmd0aCAhPSAwXCI+XG4gICAgPGM4eS1zc28tY2hpbGQtcHJlZGljYXRlc1xuICAgICAgW2NoaWxkUHJlZGljYXRlc109XCJhY2Nlc3NNYXBwaW5nLndoZW4uY2hpbGRQcmVkaWNhdGVzXCJcbiAgICAgIFthY2Nlc3NNYXBwaW5nSW5kZXhdPVwiJ2FtJyArIGFjY2Vzc01hcHBpbmdJbmRleFwiXG4gICAgICAob25SZW1vdmVBbGxDaGlsZFByZWRpY2F0ZXMpPVwib25SZW1vdmVBbGxDaGlsZFByZWRpY2F0ZXMoKVwiXG4gICAgPjwvYzh5LXNzby1jaGlsZC1wcmVkaWNhdGVzPlxuXG4gICAgPGZpZWxkc2V0IGNsYXNzPVwiYzh5LWZpZWxkc2V0IHAtMTZcIj5cbiAgICAgIDxsZWdlbmQ+XG4gICAgICAgIHt7ICdQcm92aWRlIGFjY2VzcyB0bycgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbGVnZW5kPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICB0aXRsZT1cInt7ICdEZWZhdWx0IGdsb2JhbCByb2xlcycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgW2Zvcl09XCInZ3JvdXBzJyArIGFjY2Vzc01hcHBpbmdJbmRleFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdEZWZhdWx0IGdsb2JhbCByb2xlcycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8Yzh5LXNlbGVjdC1sZWdhY3lcbiAgICAgICAgICAgICAgW2lkXT1cIidncm91cHMnICsgYWNjZXNzTWFwcGluZ0luZGV4XCJcbiAgICAgICAgICAgICAgW2l0ZW1zXT1cImdyb3Vwc1wiXG4gICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZEdyb3Vwc1wiXG4gICAgICAgICAgICAgIFtkaXNhYmxlQXBwbHlPbk5vU2VsZWN0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiY29udHJvbENvbnRhaW5lci5jb250cm9sLm1hcmtBc0RpcnR5KCk7IHNlbGVjdGVkR3JvdXBzID0gJGV2ZW50OyBhY2Nlc3NNYXBwaW5nLnRoZW5Hcm91cHMgPSBnZXRJZHMoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9jOHktc2VsZWN0LWxlZ2FjeT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0RlZmF1bHQgYXBwbGljYXRpb25zJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBbZm9yXT1cIidhcHBzJyArIGFjY2Vzc01hcHBpbmdJbmRleFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdEZWZhdWx0IGFwcGxpY2F0aW9ucycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8Yzh5LXNlbGVjdC1sZWdhY3lcbiAgICAgICAgICAgICAgW2lkXT1cIidhcHBzJyArIGFjY2Vzc01hcHBpbmdJbmRleFwiXG4gICAgICAgICAgICAgIFtpdGVtc109XCJhcHBzXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkQXBwc1wiXG4gICAgICAgICAgICAgIFtkaXNhYmxlQXBwbHlPbk5vU2VsZWN0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiY29udHJvbENvbnRhaW5lci5jb250cm9sLm1hcmtBc0RpcnR5KCk7IHNlbGVjdGVkQXBwcyA9ICRldmVudDsgYWNjZXNzTWFwcGluZy50aGVuQXBwbGljYXRpb25zID0gZ2V0SWRzKCRldmVudClcIlxuICAgICAgICAgICAgPjwvYzh5LXNlbGVjdC1sZWdhY3k+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9maWVsZHNldD5cbiAgPC9kaXY+XG48L2ZpZWxkc2V0PlxuIl19