@onecx/angular-accelerator 5.1.5 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/data-list-grid/data-list-grid.component.mjs +7 -1
- package/esm2022/lib/components/data-table/data-table.component.mjs +8 -1
- package/esm2022/lib/components/search-header/search-header.component.mjs +9 -3
- package/esm2022/lib/directives/if-permission.directive.mjs +16 -5
- package/esm2022/lib/services/breadcrumb.service.mjs +26 -11
- package/fesm2022/onecx-angular-accelerator.mjs +62 -20
- package/fesm2022/onecx-angular-accelerator.mjs.map +1 -1
- package/lib/components/data-list-grid/data-list-grid.component.d.ts +1 -0
- package/lib/components/data-table/data-table.component.d.ts +1 -0
- package/lib/components/search-header/search-header.component.d.ts +3 -1
- package/lib/directives/if-permission.directive.d.ts +7 -4
- package/lib/services/breadcrumb.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -17,6 +17,8 @@ export class SearchHeaderComponent {
|
|
|
17
17
|
this.viewMode = 'basic';
|
|
18
18
|
this.manualBreadcrumbs = false;
|
|
19
19
|
this._actions = [];
|
|
20
|
+
this.searchButtonDisabled = false;
|
|
21
|
+
this.resetButtonDisabled = false;
|
|
20
22
|
this.searched = new EventEmitter();
|
|
21
23
|
this.resetted = new EventEmitter();
|
|
22
24
|
this.selectedSearchConfigChanged = new EventEmitter();
|
|
@@ -96,11 +98,11 @@ export class SearchHeaderComponent {
|
|
|
96
98
|
this.selectedSearchConfigChanged?.emit(searchConfig);
|
|
97
99
|
}
|
|
98
100
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SearchHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
99
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: SearchHeaderComponent, selector: "ocx-search-header", inputs: { searchConfigs: "searchConfigs", header: "header", headline: "headline", subheader: "subheader", viewMode: "viewMode", manualBreadcrumbs: "manualBreadcrumbs", actions: "actions" }, outputs: { searched: "searched", resetted: "resetted", selectedSearchConfigChanged: "selectedSearchConfigChanged", viewModeChanged: "viewModeChanged" }, queries: [{ propertyName: "additionalToolbarContent", first: true, predicate: ["additionalToolbarContent"], descendants: true }, { propertyName: "additionalToolbarContentLeft", first: true, predicate: ["additionalToolbarContentLeft"], descendants: true }], viewQueries: [{ propertyName: "searchParameterFields", first: true, predicate: ["searchParameterFields"], descendants: true }], ngImport: i0, template: "<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n <ocx-search-config [searchConfigs]=\"searchConfigs\" (selectedSearchConfigChanged)=\"confirmSearchConfig($event)\">\n </ocx-search-config>\n <ng-container
|
|
101
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: SearchHeaderComponent, selector: "ocx-search-header", inputs: { searchConfigs: "searchConfigs", header: "header", headline: "headline", subheader: "subheader", viewMode: "viewMode", manualBreadcrumbs: "manualBreadcrumbs", actions: "actions", searchButtonDisabled: "searchButtonDisabled", resetButtonDisabled: "resetButtonDisabled" }, outputs: { searched: "searched", resetted: "resetted", selectedSearchConfigChanged: "selectedSearchConfigChanged", viewModeChanged: "viewModeChanged" }, queries: [{ propertyName: "additionalToolbarContent", first: true, predicate: ["additionalToolbarContent"], descendants: true }, { propertyName: "additionalToolbarContentLeft", first: true, predicate: ["additionalToolbarContentLeft"], descendants: true }], viewQueries: [{ propertyName: "searchParameterFields", first: true, predicate: ["searchParameterFields"], descendants: true }], ngImport: i0, template: "<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n <ocx-search-config [searchConfigs]=\"searchConfigs\" (selectedSearchConfigChanged)=\"confirmSearchConfig($event)\">\n </ocx-search-config>\n <ng-container\n *ngIf=\"_additionalToolbarContentLeft\"\n [ngTemplateOutlet]=\"_additionalToolbarContentLeft\"\n ></ng-container>\n </ng-template>\n <ng-template #additionalToolbarContent>\n <ng-container *ngIf=\"_additionalToolbarContent\" [ngTemplateOutlet]=\"_additionalToolbarContent\"></ng-container>\n </ng-template>\n <div class=\"search-criteria-container\">\n <div #searchParameterFields>\n <ng-content></ng-content>\n <div class=\"search-criteria-buttons\">\n <p-button\n id=\"resetButton\"\n *ngIf=\"resetted.observed\"\n (onClick)=\"onResetClicked()\"\n label=\"{{ 'OCX_SEARCH_HEADER.RESET_BUTTON.TEXT' | translate }}\"\n icon=\"pi pi-eraser\"\n [attr.aria-label]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate\"\n title=\"{{ 'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate }}\"\n [disabled]=\"resetButtonDisabled\"\n >\n </p-button>\n\n <p-button\n id=\"searchButton\"\n (onClick)=\"onSearchClicked()\"\n label=\"{{ 'OCX_SEARCH_HEADER.SEARCH_BUTTON.TEXT' | translate }}\"\n icon=\"pi pi-search\"\n [attr.aria-label]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate\"\n title=\"{{ 'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate }}\"\n [disabled]=\"searchButtonDisabled\"\n >\n </p-button>\n </div>\n </div>\n </div>\n</ocx-page-header>\n", styles: [".search-criteria-buttons{display:flex;flex-flow:row;align-items:flex-start;gap:.5rem;margin-top:.5rem}.search-criteria-container{width:100%;display:flex}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i3.SearchConfigComponent, selector: "ocx-search-config", inputs: ["searchConfigs", "placeholderKey"], outputs: ["selectedSearchConfigChanged"] }, { kind: "component", type: i4.PageHeaderComponent, selector: "ocx-page-header", inputs: ["header", "loading", "figureBackground", "showFigure", "figureImage", "disableDefaultActions", "subheader", "actions", "objectDetails", "showBreadcrumbs", "manualBreadcrumbs", "enableGridView", "gridLayoutDesktopColumns"], outputs: ["save"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
|
|
100
102
|
}
|
|
101
103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SearchHeaderComponent, decorators: [{
|
|
102
104
|
type: Component,
|
|
103
|
-
args: [{ selector: 'ocx-search-header', template: "<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n <ocx-search-config [searchConfigs]=\"searchConfigs\" (selectedSearchConfigChanged)=\"confirmSearchConfig($event)\">\n </ocx-search-config>\n <ng-container
|
|
105
|
+
args: [{ selector: 'ocx-search-header', template: "<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n <ocx-search-config [searchConfigs]=\"searchConfigs\" (selectedSearchConfigChanged)=\"confirmSearchConfig($event)\">\n </ocx-search-config>\n <ng-container\n *ngIf=\"_additionalToolbarContentLeft\"\n [ngTemplateOutlet]=\"_additionalToolbarContentLeft\"\n ></ng-container>\n </ng-template>\n <ng-template #additionalToolbarContent>\n <ng-container *ngIf=\"_additionalToolbarContent\" [ngTemplateOutlet]=\"_additionalToolbarContent\"></ng-container>\n </ng-template>\n <div class=\"search-criteria-container\">\n <div #searchParameterFields>\n <ng-content></ng-content>\n <div class=\"search-criteria-buttons\">\n <p-button\n id=\"resetButton\"\n *ngIf=\"resetted.observed\"\n (onClick)=\"onResetClicked()\"\n label=\"{{ 'OCX_SEARCH_HEADER.RESET_BUTTON.TEXT' | translate }}\"\n icon=\"pi pi-eraser\"\n [attr.aria-label]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate\"\n title=\"{{ 'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate }}\"\n [disabled]=\"resetButtonDisabled\"\n >\n </p-button>\n\n <p-button\n id=\"searchButton\"\n (onClick)=\"onSearchClicked()\"\n label=\"{{ 'OCX_SEARCH_HEADER.SEARCH_BUTTON.TEXT' | translate }}\"\n icon=\"pi pi-search\"\n [attr.aria-label]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate\"\n title=\"{{ 'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate }}\"\n [disabled]=\"searchButtonDisabled\"\n >\n </p-button>\n </div>\n </div>\n </div>\n</ocx-page-header>\n", styles: [".search-criteria-buttons{display:flex;flex-flow:row;align-items:flex-start;gap:.5rem;margin-top:.5rem}.search-criteria-container{width:100%;display:flex}\n"] }]
|
|
104
106
|
}], propDecorators: { searchConfigs: [{
|
|
105
107
|
type: Input
|
|
106
108
|
}], header: [{
|
|
@@ -115,6 +117,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
115
117
|
type: Input
|
|
116
118
|
}], actions: [{
|
|
117
119
|
type: Input
|
|
120
|
+
}], searchButtonDisabled: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], resetButtonDisabled: [{
|
|
123
|
+
type: Input
|
|
118
124
|
}], searched: [{
|
|
119
125
|
type: Output
|
|
120
126
|
}], resetted: [{
|
|
@@ -133,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
133
139
|
type: ViewChild,
|
|
134
140
|
args: ['searchParameterFields']
|
|
135
141
|
}] } });
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1oZWFkZXIvc2VhcmNoLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1oZWFkZXIvc2VhcmNoLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7Ozs7Ozs7QUFJdEI7Ozs7O0dBS0c7QUFNSCxNQUFNLE9BQU8scUJBQXFCO0lBTGxDO1FBT1csV0FBTSxHQUFHLEVBQUUsQ0FBQTtRQWFYLGFBQVEsR0FBeUIsT0FBTyxDQUFBO1FBQ3hDLHNCQUFpQixHQUFHLEtBQUssQ0FBQTtRQUNsQyxhQUFRLEdBQWEsRUFBRSxDQUFBO1FBVWIsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFBO1FBQ2hELGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQTtRQUNoRCxnQ0FBMkIsR0FBbUMsSUFBSSxZQUFZLEVBQUUsQ0FBQTtRQUNoRixvQkFBZSxHQUF1QyxJQUFJLFlBQVksRUFBRSxDQUFBO1FBZ0JsRixnQkFBVyxHQUFHLEtBQUssQ0FBQTtRQUNuQixrQkFBYSxHQUFhLEVBQUUsQ0FBQTtLQTREN0I7SUF2R0M7O09BRUc7SUFDSCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDcEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENB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OEdBMUdVLHFCQUFxQjtrR0FBckIscUJBQXFCLGl4QkN6QmxDLDJ1REEwQ0E7OzJGRGpCYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1COzhCQUtwQixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFNRixRQUFRO3NCQURYLEtBQUs7Z0JBT0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRixPQUFPO3NCQURWLEtBQUs7Z0JBU0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLDJCQUEyQjtzQkFBcEMsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUVQLHdCQUF3QjtzQkFEdkIsWUFBWTt1QkFBQywwQkFBMEI7Z0JBT3hDLDRCQUE0QjtzQkFEM0IsWUFBWTt1QkFBQyw4QkFBOEI7Z0JBT1IscUJBQXFCO3NCQUF4RCxTQUFTO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuLi9wYWdlLWhlYWRlci9wYWdlLWhlYWRlci5jb21wb25lbnQnXG5pbXBvcnQgeyBTZWFyY2hDb25maWdJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2VhcmNoLWNvbmZpZy1pbmZvJ1xuXG4vKipcbiAqIFRvIHRyaWdnZXIgdGhlIHNlYXJjaCB3aGVuIEVudGVyIGtleSBpcyBwcmVzc2VkIGluc2lkZSBhIHNlYXJjaCBwYXJhbWV0ZXIgZmllbGQsXG4gKiBhbiBFdmVudExpc3RlbmVyIGZvciBrZXl1cCBlbnRlciBldmVudCBpcyBhZGRlZCBmb3IgSFRNTCBlbGVtZW50cyB3aGljaCBoYXZlIGFuIGlucHV0LlxuICogUGxlYXNlIGFkZCB0aGUgRXZlbnRMaXN0ZW5lciB5b3Vyc2VsZiBtYW51YWxseSwgaWYgeW91IHdhbnQgdG8gaGF2ZSB0aGF0IGZ1bmN0aW9uYWxpdHkgZm9yIHNvbWUgb3RoZXIgZWxlbWVudHNcbiAqIHdoaWNoIGRvIG5vdCBoYXZlIGFuIGlucHV0IGVsZW1lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29jeC1zZWFyY2gtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBzZWFyY2hDb25maWdzOiBTZWFyY2hDb25maWdJbmZvW10gfCB1bmRlZmluZWRcbiAgQElucHV0KCkgaGVhZGVyID0gJydcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZXBsYWNlZCBieSBoZWFkZXJcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBoZWFkbGluZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmhlYWRlclxuICB9XG4gIHNldCBoZWFkbGluZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5oZWFkZXIgPSB2YWx1ZVxuICB9XG4gIEBJbnB1dCgpIHN1YmhlYWRlcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIHZpZXdNb2RlOiAnYmFzaWMnIHwgJ2FkdmFuY2VkJyA9ICdiYXNpYydcbiAgQElucHV0KCkgbWFudWFsQnJlYWRjcnVtYnMgPSBmYWxzZVxuICBfYWN0aW9uczogQWN0aW9uW10gPSBbXVxuICBASW5wdXQoKVxuICBnZXQgYWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9uc1xuICB9XG4gIHNldCBhY3Rpb25zKHZhbHVlKSB7XG4gICAgdGhpcy5fYWN0aW9ucyA9IHZhbHVlXG4gICAgdGhpcy51cGRhdGVIZWFkZXJBY3Rpb25zKClcbiAgfVxuXG4gIEBPdXRwdXQoKSBzZWFyY2hlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIHJlc2V0dGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAT3V0cHV0KCkgc2VsZWN0ZWRTZWFyY2hDb25maWdDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8U2VhcmNoQ29uZmlnSW5mbz4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIHZpZXdNb2RlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPCdiYXNpYycgfCAnYWR2YW5jZWQnPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAQ29udGVudENoaWxkKCdhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnQnKVxuICBhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcblxuICBnZXQgX2FkZGl0aW9uYWxUb29sYmFyQ29udGVudCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5hZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRcbiAgfVxuICBAQ29udGVudENoaWxkKCdhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0JylcbiAgYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuXG4gIGdldCBfYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5hZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0XG4gIH1cblxuICBAVmlld0NoaWxkKCdzZWFyY2hQYXJhbWV0ZXJGaWVsZHMnKSBzZWFyY2hQYXJhbWV0ZXJGaWVsZHM6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWRcblxuICBoYXNBZHZhbmNlZCA9IGZhbHNlXG4gIGhlYWRlckFjdGlvbnM6IEFjdGlvbltdID0gW11cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRLZXlVcEV2ZW50TGlzdGVuZXIoKVxuICB9XG5cbiAgdG9nZ2xlVmlld01vZGUoKSB7XG4gICAgdGhpcy52aWV3TW9kZSA9IHRoaXMudmlld01vZGUgPT09ICdiYXNpYycgPyAnYWR2YW5jZWQnIDogJ2Jhc2ljJ1xuICAgIHRoaXMudmlld01vZGVDaGFuZ2VkPy5lbWl0KHRoaXMudmlld01vZGUpXG4gICAgdGhpcy51cGRhdGVIZWFkZXJBY3Rpb25zKClcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYWRkS2V5VXBFdmVudExpc3RlbmVyKCkpXG4gIH1cblxuICBvblJlc2V0Q2xpY2tlZCgpIHtcbiAgICB0aGlzLnJlc2V0dGVkLmVtaXQoKVxuICB9XG5cbiAgb25TZWFyY2hDbGlja2VkKCkge1xuICAgIHRoaXMuc2VhcmNoZWQuZW1pdCgpXG4gIH1cblxuICB1cGRhdGVIZWFkZXJBY3Rpb25zKCkge1xuICAgIGNvbnN0IGhlYWRlckFjdGlvbnM6IEFjdGlvbltdID0gW11cbiAgICBpZiAodGhpcy5oYXNBZHZhbmNlZCkge1xuICAgICAgaGVhZGVyQWN0aW9ucy5wdXNoKHtcbiAgICAgICAgaWQ6ICdzaW1wbGVBZHZhbmNlZEJ1dHRvbicsXG4gICAgICAgIGxhYmVsS2V5OlxuICAgICAgICAgIHRoaXMudmlld01vZGUgPT09ICdiYXNpYydcbiAgICAgICAgICAgID8gJ09DWF9TRUFSQ0hfSEVBREVSLlRPR0dMRV9CVVRUT04uQURWQU5DRUQuVEVYVCdcbiAgICAgICAgICAgIDogJ09DWF9TRUFSQ0hfSEVBREVSLlRPR0dMRV9CVVRUT04uU0lNUExFLlRFWFQnLFxuICAgICAgICBhY3Rpb25DYWxsYmFjazogKCkgPT4gdGhpcy50b2dnbGVWaWV3TW9kZSgpLFxuICAgICAgICBzaG93OiAnYWx3YXlzJyxcbiAgICAgICAgdGl0bGVLZXk6XG4gICAgICAgICAgdGhpcy52aWV3TW9kZSA9PT0gJ2Jhc2ljJ1xuICAgICAgICAgICAgPyAnT0NYX1NFQVJDSF9IRUFERVIuVE9HR0xFX0JVVFRPTi5BRFZBTkNFRC5ERVRBSUwnXG4gICAgICAgICAgICA6ICdPQ1hfU0VBUkNIX0hFQURFUi5UT0dHTEVfQlVUVE9OLlNJTVBMRS5ERVRBSUwnLFxuICAgICAgfSlcbiAgICB9XG4gICAgdGhpcy5oZWFkZXJBY3Rpb25zID0gaGVhZGVyQWN0aW9ucy5jb25jYXQodGhpcy5hY3Rpb25zKVxuICB9XG5cbiAgYWRkS2V5VXBFdmVudExpc3RlbmVyKCkge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudHMgPSB0aGlzLnNlYXJjaFBhcmFtZXRlckZpZWxkcz8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCcpXG4gICAgaW5wdXRFbGVtZW50cy5mb3JFYWNoKChpbnB1dEVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgaWYgKCFpbnB1dEVsZW1lbnQubGlzdGVuZXJBZGRlZCkge1xuICAgICAgICBpbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoZXZlbnQ6IGFueSkgPT4gdGhpcy5vblNlYXJjaEtleXVwKGV2ZW50KSlcbiAgICAgICAgaW5wdXRFbGVtZW50Lmxpc3RlbmVyQWRkZWQgPSB0cnVlXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIG9uU2VhcmNoS2V5dXAoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudC5jb2RlID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLm9uU2VhcmNoQ2xpY2tlZCgpXG4gICAgfVxuICB9XG5cbiAgY29uZmlybVNlYXJjaENvbmZpZyhzZWFyY2hDb25maWc6IFNlYXJjaENvbmZpZ0luZm8pIHtcbiAgICB0aGlzLnNlbGVjdGVkU2VhcmNoQ29uZmlnQ2hhbmdlZD8uZW1pdChzZWFyY2hDb25maWcpXG4gIH1cbn1cbiIsIjxvY3gtcGFnZS1oZWFkZXJcbiAgW2hlYWRlcl09XCJoZWFkZXIgfHwgKCdPQ1hfU0VBUkNIX0hFQURFUi5IRUFERVInIHwgdHJhbnNsYXRlKVwiXG4gIFtzdWJoZWFkZXJdPVwic3ViaGVhZGVyXCJcbiAgW21hbnVhbEJyZWFkY3J1bWJzXT1cIm1hbnVhbEJyZWFkY3J1bWJzXCJcbiAgW2FjdGlvbnNdPVwiaGVhZGVyQWN0aW9uc1wiXG4+XG4gIDxuZy10ZW1wbGF0ZSAjYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdD5cbiAgICA8b2N4LXNlYXJjaC1jb25maWcgW3NlYXJjaENvbmZpZ3NdPVwic2VhcmNoQ29uZmlnc1wiIChzZWxlY3RlZFNlYXJjaENvbmZpZ0NoYW5nZWQpPVwiY29uZmlybVNlYXJjaENvbmZpZygkZXZlbnQpXCI+XG4gICAgPC9vY3gtc2VhcmNoLWNvbmZpZz5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2FkZGl0aW9uYWxUb29sYmFyQ29udGVudExlZnRcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJfYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdFwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2FkZGl0aW9uYWxUb29sYmFyQ29udGVudD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2FkZGl0aW9uYWxUb29sYmFyQ29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9hZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInNlYXJjaC1jcml0ZXJpYS1jb250YWluZXJcIj5cbiAgICA8ZGl2ICNzZWFyY2hQYXJhbWV0ZXJGaWVsZHM+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNyaXRlcmlhLWJ1dHRvbnNcIj5cbiAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgaWQ9XCJyZXNldEJ1dHRvblwiXG4gICAgICAgICAgKm5nSWY9XCJyZXNldHRlZC5vYnNlcnZlZFwiXG4gICAgICAgICAgKG9uQ2xpY2spPVwib25SZXNldENsaWNrZWQoKVwiXG4gICAgICAgICAgbGFiZWw9XCJ7eyAnT0NYX1NFQVJDSF9IRUFERVIuUkVTRVRfQlVUVE9OLlRFWFQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBpY29uPVwicGkgcGktZXJhc2VyXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidPQ1hfU0VBUkNIX0hFQURFUi5SRVNFVF9CVVRUT04uREVUQUlMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAnT0NYX1NFQVJDSF9IRUFERVIuUkVTRVRfQlVUVE9OLkRFVEFJTCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICA+XG4gICAgICAgIDwvcC1idXR0b24+XG5cbiAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgaWQ9XCJzZWFyY2hCdXR0b25cIlxuICAgICAgICAgIChvbkNsaWNrKT1cIm9uU2VhcmNoQ2xpY2tlZCgpXCJcbiAgICAgICAgICBsYWJlbD1cInt7ICdPQ1hfU0VBUkNIX0hFQURFUi5TRUFSQ0hfQlVUVE9OLlRFWFQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBpY29uPVwicGkgcGktc2VhcmNoXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidPQ1hfU0VBUkNIX0hFQURFUi5TRUFSQ0hfQlVUVE9OLkRFVEFJTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ09DWF9TRUFSQ0hfSEVBREVSLlNFQVJDSF9CVVRUT04uREVUQUlMJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgID5cbiAgICAgICAgPC9wLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvb2N4LXBhZ2UtaGVhZGVyPlxuIl19
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1oZWFkZXIvc2VhcmNoLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1oZWFkZXIvc2VhcmNoLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7Ozs7Ozs7QUFJdEI7Ozs7O0dBS0c7QUFNSCxNQUFNLE9BQU8scUJBQXFCO0lBTGxDO1FBT1csV0FBTSxHQUFHLEVBQUUsQ0FBQTtRQWFYLGFBQVEsR0FBeUIsT0FBTyxDQUFBO1FBQ3hDLHNCQUFpQixHQUFHLEtBQUssQ0FBQTtRQUNsQyxhQUFRLEdBQWEsRUFBRSxDQUFBO1FBU2QseUJBQW9CLEdBQUcsS0FBSyxDQUFBO1FBQzVCLHdCQUFtQixHQUFHLEtBQUssQ0FBQTtRQUUxQixhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUE7UUFDaEQsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFBO1FBQ2hELGdDQUEyQixHQUFtQyxJQUFJLFlBQVksRUFBRSxDQUFBO1FBQ2hGLG9CQUFlLEdBQXVDLElBQUksWUFBWSxFQUFFLENBQUE7UUFnQmxGLGdCQUFXLEdBQUcsS0FBSyxDQUFBO1FBQ25CLGtCQUFhLEdBQWEsRUFBRSxDQUFBO0tBNEQ3QjtJQXpHQzs7T0FFRztJQUNILElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQTtJQUNwQixDQUFDO0lB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QUksQ0FBQywyQkFBMkIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDdEQsQ0FBQzs4R0E1R1UscUJBQXFCO2tHQUFyQixxQkFBcUIsMjJCQ3pCbEMsNDFEQStDQTs7MkZEdEJhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7OEJBS3BCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQU1GLFFBQVE7c0JBRFgsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdGLE9BQU87c0JBRFYsS0FBSztnQkFRRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRywyQkFBMkI7c0JBQXBDLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFFUCx3QkFBd0I7c0JBRHZCLFlBQVk7dUJBQUMsMEJBQTBCO2dCQU94Qyw0QkFBNEI7c0JBRDNCLFlBQVk7dUJBQUMsOEJBQThCO2dCQU9SLHFCQUFxQjtzQkFBeEQsU0FBUzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi4vcGFnZS1oZWFkZXIvcGFnZS1oZWFkZXIuY29tcG9uZW50J1xuaW1wb3J0IHsgU2VhcmNoQ29uZmlnSW5mbyB9IGZyb20gJy4uLy4uL21vZGVsL3NlYXJjaC1jb25maWctaW5mbydcblxuLyoqXG4gKiBUbyB0cmlnZ2VyIHRoZSBzZWFyY2ggd2hlbiBFbnRlciBrZXkgaXMgcHJlc3NlZCBpbnNpZGUgYSBzZWFyY2ggcGFyYW1ldGVyIGZpZWxkLFxuICogYW4gRXZlbnRMaXN0ZW5lciBmb3Iga2V5dXAgZW50ZXIgZXZlbnQgaXMgYWRkZWQgZm9yIEhUTUwgZWxlbWVudHMgd2hpY2ggaGF2ZSBhbiBpbnB1dC5cbiAqIFBsZWFzZSBhZGQgdGhlIEV2ZW50TGlzdGVuZXIgeW91cnNlbGYgbWFudWFsbHksIGlmIHlvdSB3YW50IHRvIGhhdmUgdGhhdCBmdW5jdGlvbmFsaXR5IGZvciBzb21lIG90aGVyIGVsZW1lbnRzXG4gKiB3aGljaCBkbyBub3QgaGF2ZSBhbiBpbnB1dCBlbGVtZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvY3gtc2VhcmNoLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgc2VhcmNoQ29uZmlnczogU2VhcmNoQ29uZmlnSW5mb1tdIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGhlYWRlciA9ICcnXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVwbGFjZWQgYnkgaGVhZGVyXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgaGVhZGxpbmUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJcbiAgfVxuICBzZXQgaGVhZGxpbmUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuaGVhZGVyID0gdmFsdWVcbiAgfVxuICBASW5wdXQoKSBzdWJoZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSB2aWV3TW9kZTogJ2Jhc2ljJyB8ICdhZHZhbmNlZCcgPSAnYmFzaWMnXG4gIEBJbnB1dCgpIG1hbnVhbEJyZWFkY3J1bWJzID0gZmFsc2VcbiAgX2FjdGlvbnM6IEFjdGlvbltdID0gW11cbiAgQElucHV0KClcbiAgZ2V0IGFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbnNcbiAgfVxuICBzZXQgYWN0aW9ucyh2YWx1ZSkge1xuICAgIHRoaXMuX2FjdGlvbnMgPSB2YWx1ZVxuICAgIHRoaXMudXBkYXRlSGVhZGVyQWN0aW9ucygpXG4gIH1cbiAgQElucHV0KCkgc2VhcmNoQnV0dG9uRGlzYWJsZWQgPSBmYWxzZVxuICBASW5wdXQoKSByZXNldEJ1dHRvbkRpc2FibGVkID0gZmFsc2VcblxuICBAT3V0cHV0KCkgc2VhcmNoZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSByZXNldHRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIHNlbGVjdGVkU2VhcmNoQ29uZmlnQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFNlYXJjaENvbmZpZ0luZm8+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIEBPdXRwdXQoKSB2aWV3TW9kZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjwnYmFzaWMnIHwgJ2FkdmFuY2VkJz4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQENvbnRlbnRDaGlsZCgnYWRkaXRpb25hbFRvb2xiYXJDb250ZW50JylcbiAgYWRkaXRpb25hbFRvb2xiYXJDb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG5cbiAgZ2V0IF9hZGRpdGlvbmFsVG9vbGJhckNvbnRlbnQoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYWRkaXRpb25hbFRvb2xiYXJDb250ZW50XG4gIH1cbiAgQENvbnRlbnRDaGlsZCgnYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdCcpXG4gIGFkZGl0aW9uYWxUb29sYmFyQ29udGVudExlZnQ6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcblxuICBnZXQgX2FkZGl0aW9uYWxUb29sYmFyQ29udGVudExlZnQoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdFxuICB9XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoUGFyYW1ldGVyRmllbGRzJykgc2VhcmNoUGFyYW1ldGVyRmllbGRzOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkXG5cbiAgaGFzQWR2YW5jZWQgPSBmYWxzZVxuICBoZWFkZXJBY3Rpb25zOiBBY3Rpb25bXSA9IFtdXG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkS2V5VXBFdmVudExpc3RlbmVyKClcbiAgfVxuXG4gIHRvZ2dsZVZpZXdNb2RlKCkge1xuICAgIHRoaXMudmlld01vZGUgPSB0aGlzLnZpZXdNb2RlID09PSAnYmFzaWMnID8gJ2FkdmFuY2VkJyA6ICdiYXNpYydcbiAgICB0aGlzLnZpZXdNb2RlQ2hhbmdlZD8uZW1pdCh0aGlzLnZpZXdNb2RlKVxuICAgIHRoaXMudXBkYXRlSGVhZGVyQWN0aW9ucygpXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmFkZEtleVVwRXZlbnRMaXN0ZW5lcigpKVxuICB9XG5cbiAgb25SZXNldENsaWNrZWQoKSB7XG4gICAgdGhpcy5yZXNldHRlZC5lbWl0KClcbiAgfVxuXG4gIG9uU2VhcmNoQ2xpY2tlZCgpIHtcbiAgICB0aGlzLnNlYXJjaGVkLmVtaXQoKVxuICB9XG5cbiAgdXBkYXRlSGVhZGVyQWN0aW9ucygpIHtcbiAgICBjb25zdCBoZWFkZXJBY3Rpb25zOiBBY3Rpb25bXSA9IFtdXG4gICAgaWYgKHRoaXMuaGFzQWR2YW5jZWQpIHtcbiAgICAgIGhlYWRlckFjdGlvbnMucHVzaCh7XG4gICAgICAgIGlkOiAnc2ltcGxlQWR2YW5jZWRCdXR0b24nLFxuICAgICAgICBsYWJlbEtleTpcbiAgICAgICAgICB0aGlzLnZpZXdNb2RlID09PSAnYmFzaWMnXG4gICAgICAgICAgICA/ICdPQ1hfU0VBUkNIX0hFQURFUi5UT0dHTEVfQlVUVE9OLkFEVkFOQ0VELlRFWFQnXG4gICAgICAgICAgICA6ICdPQ1hfU0VBUkNIX0hFQURFUi5UT0dHTEVfQlVUVE9OLlNJTVBMRS5URVhUJyxcbiAgICAgICAgYWN0aW9uQ2FsbGJhY2s6ICgpID0+IHRoaXMudG9nZ2xlVmlld01vZGUoKSxcbiAgICAgICAgc2hvdzogJ2Fsd2F5cycsXG4gICAgICAgIHRpdGxlS2V5OlxuICAgICAgICAgIHRoaXMudmlld01vZGUgPT09ICdiYXNpYydcbiAgICAgICAgICAgID8gJ09DWF9TRUFSQ0hfSEVBREVSLlRPR0dMRV9CVVRUT04uQURWQU5DRUQuREVUQUlMJ1xuICAgICAgICAgICAgOiAnT0NYX1NFQVJDSF9IRUFERVIuVE9HR0xFX0JVVFRPTi5TSU1QTEUuREVUQUlMJyxcbiAgICAgIH0pXG4gICAgfVxuICAgIHRoaXMuaGVhZGVyQWN0aW9ucyA9IGhlYWRlckFjdGlvbnMuY29uY2F0KHRoaXMuYWN0aW9ucylcbiAgfVxuXG4gIGFkZEtleVVwRXZlbnRMaXN0ZW5lcigpIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnRzID0gdGhpcy5zZWFyY2hQYXJhbWV0ZXJGaWVsZHM/Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQnKVxuICAgIGlucHV0RWxlbWVudHMuZm9yRWFjaCgoaW5wdXRFbGVtZW50OiBhbnkpID0+IHtcbiAgICAgIGlmICghaW5wdXRFbGVtZW50Lmxpc3RlbmVyQWRkZWQpIHtcbiAgICAgICAgaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGV2ZW50OiBhbnkpID0+IHRoaXMub25TZWFyY2hLZXl1cChldmVudCkpXG4gICAgICAgIGlucHV0RWxlbWVudC5saXN0ZW5lckFkZGVkID0gdHJ1ZVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBvblNlYXJjaEtleXVwKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5vblNlYXJjaENsaWNrZWQoKVxuICAgIH1cbiAgfVxuXG4gIGNvbmZpcm1TZWFyY2hDb25maWcoc2VhcmNoQ29uZmlnOiBTZWFyY2hDb25maWdJbmZvKSB7XG4gICAgdGhpcy5zZWxlY3RlZFNlYXJjaENvbmZpZ0NoYW5nZWQ/LmVtaXQoc2VhcmNoQ29uZmlnKVxuICB9XG59XG4iLCI8b2N4LXBhZ2UtaGVhZGVyXG4gIFtoZWFkZXJdPVwiaGVhZGVyIHx8ICgnT0NYX1NFQVJDSF9IRUFERVIuSEVBREVSJyB8IHRyYW5zbGF0ZSlcIlxuICBbc3ViaGVhZGVyXT1cInN1YmhlYWRlclwiXG4gIFttYW51YWxCcmVhZGNydW1ic109XCJtYW51YWxCcmVhZGNydW1ic1wiXG4gIFthY3Rpb25zXT1cImhlYWRlckFjdGlvbnNcIlxuPlxuICA8bmctdGVtcGxhdGUgI2FkZGl0aW9uYWxUb29sYmFyQ29udGVudExlZnQ+XG4gICAgPG9jeC1zZWFyY2gtY29uZmlnIFtzZWFyY2hDb25maWdzXT1cInNlYXJjaENvbmZpZ3NcIiAoc2VsZWN0ZWRTZWFyY2hDb25maWdDaGFuZ2VkKT1cImNvbmZpcm1TZWFyY2hDb25maWcoJGV2ZW50KVwiPlxuICAgIDwvb2N4LXNlYXJjaC1jb25maWc+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2FkZGl0aW9uYWxUb29sYmFyQ29udGVudD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2FkZGl0aW9uYWxUb29sYmFyQ29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9hZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInNlYXJjaC1jcml0ZXJpYS1jb250YWluZXJcIj5cbiAgICA8ZGl2ICNzZWFyY2hQYXJhbWV0ZXJGaWVsZHM+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNyaXRlcmlhLWJ1dHRvbnNcIj5cbiAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgaWQ9XCJyZXNldEJ1dHRvblwiXG4gICAgICAgICAgKm5nSWY9XCJyZXNldHRlZC5vYnNlcnZlZFwiXG4gICAgICAgICAgKG9uQ2xpY2spPVwib25SZXNldENsaWNrZWQoKVwiXG4gICAgICAgICAgbGFiZWw9XCJ7eyAnT0NYX1NFQVJDSF9IRUFERVIuUkVTRVRfQlVUVE9OLlRFWFQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBpY29uPVwicGkgcGktZXJhc2VyXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidPQ1hfU0VBUkNIX0hFQURFUi5SRVNFVF9CVVRUT04uREVUQUlMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAnT0NYX1NFQVJDSF9IRUFERVIuUkVTRVRfQlVUVE9OLkRFVEFJTCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXNldEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgPlxuICAgICAgICA8L3AtYnV0dG9uPlxuXG4gICAgICAgIDxwLWJ1dHRvblxuICAgICAgICAgIGlkPVwic2VhcmNoQnV0dG9uXCJcbiAgICAgICAgICAob25DbGljayk9XCJvblNlYXJjaENsaWNrZWQoKVwiXG4gICAgICAgICAgbGFiZWw9XCJ7eyAnT0NYX1NFQVJDSF9IRUFERVIuU0VBUkNIX0JVVFRPTi5URVhUJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgaWNvbj1cInBpIHBpLXNlYXJjaFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInT0NYX1NFQVJDSF9IRUFERVIuU0VBUkNIX0JVVFRPTi5ERVRBSUwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdPQ1hfU0VBUkNIX0hFQURFUi5TRUFSQ0hfQlVUVE9OLkRFVEFJTCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWFyY2hCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgID5cbiAgICAgICAgPC9wLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvb2N4LXBhZ2UtaGVhZGVyPlxuIl19
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Directive, ElementRef, Inject, InjectionToken, Input, Optional, Renderer2, TemplateRef, ViewContainerRef, } from '@angular/core';
|
|
2
|
+
import { UserService } from '@onecx/angular-integration-interface';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@onecx/angular-integration-interface";
|
|
3
5
|
/**
|
|
4
6
|
* This checker always returns true, basically disabling the permission system on the UI side
|
|
5
7
|
*/
|
|
@@ -17,14 +19,19 @@ export class IfPermissionDirective {
|
|
|
17
19
|
set ocxIfNotPermissionPermissions(value) {
|
|
18
20
|
this.ocxIfPermissionPermissions = value;
|
|
19
21
|
}
|
|
20
|
-
constructor(renderer, el, viewContainer,
|
|
22
|
+
constructor(renderer, el, viewContainer, hasPermissionChecker, templateRef, userService) {
|
|
21
23
|
this.renderer = renderer;
|
|
22
24
|
this.el = el;
|
|
23
25
|
this.viewContainer = viewContainer;
|
|
24
|
-
this.
|
|
26
|
+
this.hasPermissionChecker = hasPermissionChecker;
|
|
25
27
|
this.templateRef = templateRef;
|
|
28
|
+
this.userService = userService;
|
|
26
29
|
this.onMissingPermission = 'hide';
|
|
27
30
|
this.negate = false;
|
|
31
|
+
if (!(hasPermissionChecker || userService)) {
|
|
32
|
+
throw 'IfPermission requires UserService or HasPermissionChecker to be provided!';
|
|
33
|
+
}
|
|
34
|
+
this.permissionChecker = hasPermissionChecker ?? userService;
|
|
28
35
|
}
|
|
29
36
|
ngOnInit() {
|
|
30
37
|
if (this.permission) {
|
|
@@ -51,19 +58,23 @@ export class IfPermissionDirective {
|
|
|
51
58
|
}
|
|
52
59
|
return result;
|
|
53
60
|
}
|
|
54
|
-
return this.permissionChecker
|
|
61
|
+
return this.permissionChecker?.hasPermission(permission);
|
|
55
62
|
}
|
|
56
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IfPermissionDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: HAS_PERMISSION_CHECKER }, { token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
63
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IfPermissionDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: HAS_PERMISSION_CHECKER, optional: true }, { token: i0.TemplateRef, optional: true }, { token: i1.UserService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
57
64
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.2", type: IfPermissionDirective, selector: "[ocxIfPermission], [ocxIfNotPermission]", inputs: { permission: ["ocxIfPermission", "permission"], notPermission: ["ocxIfNotPermission", "notPermission"], onMissingPermission: "onMissingPermission", ocxIfPermissionPermissions: "ocxIfPermissionPermissions", ocxIfNotPermissionPermissions: "ocxIfNotPermissionPermissions" }, ngImport: i0 }); }
|
|
58
65
|
}
|
|
59
66
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IfPermissionDirective, decorators: [{
|
|
60
67
|
type: Directive,
|
|
61
68
|
args: [{ selector: '[ocxIfPermission], [ocxIfNotPermission]' }]
|
|
62
69
|
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
|
|
70
|
+
type: Optional
|
|
71
|
+
}, {
|
|
63
72
|
type: Inject,
|
|
64
73
|
args: [HAS_PERMISSION_CHECKER]
|
|
65
74
|
}] }, { type: i0.TemplateRef, decorators: [{
|
|
66
75
|
type: Optional
|
|
76
|
+
}] }, { type: i1.UserService, decorators: [{
|
|
77
|
+
type: Optional
|
|
67
78
|
}] }], propDecorators: { permission: [{
|
|
68
79
|
type: Input,
|
|
69
80
|
args: ['ocxIfPermission']
|
|
@@ -77,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
77
88
|
}], ocxIfNotPermissionPermissions: [{
|
|
78
89
|
type: Input
|
|
79
90
|
}] } });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYtcGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9kaXJlY3RpdmVzL2lmLXBlcm1pc3Npb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7OztBQU1sRTs7R0FFRztBQUNILE1BQU0sT0FBTyw0QkFBNEI7SUFDdkMsYUFBYSxDQUFDLGNBQXNCO1FBQ2xDLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQXVCLGVBQWUsQ0FBQyxDQUFBO0FBRy9GLE1BQU0sT0FBTyxxQkFBcUI7SUFFaEMsSUFBaUMsYUFBYSxDQUFDLEtBQXlCO1FBQ3RFLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFBO0lBQ3BCLENBQUM7SUFLRCxJQUNJLDZCQUE2QixDQUFDLEtBQTJCO1FBQzNELElBQUksQ0FBQywwQkFBMEIsR0FBRyxLQUFLLENBQUE7SUFDekMsQ0FBQztJQUtELFlBQ1UsUUFBbUIsRUFDbkIsRUFBYyxFQUNkLGFBQStCLEVBRy9CLG9CQUEyQyxFQUMvQixXQUE4QixFQUM5QixXQUF5QjtRQVByQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFHL0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF1QjtRQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWM7UUFuQnRDLHdCQUFtQixHQUF1QixNQUFNLENBQUE7UUFTekQsV0FBTSxHQUFHLEtBQUssQ0FBQTtRQVlaLElBQUksQ0FBQyxDQUFDLG9CQUFvQixJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDM0MsTUFBTSwyRUFBMkUsQ0FBQTtRQUNuRixDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLG9CQUFvQixJQUFJLFdBQVcsQ0FBQTtJQUM5RCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFBO2dCQUMzRSxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtnQkFDNUIsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7Z0JBQ3pELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsVUFBa0I7UUFDOUIsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ25FLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDWixPQUFPLENBQUMsR0FBRyxDQUFDLDBDQUEwQyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBQ3JFLENBQUM7WUFDRCxPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDMUQsQ0FBQzs4R0E1RFUscUJBQXFCLHFHQXVCdEIsc0JBQXNCO2tHQXZCckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHlDQUF5QyxFQUFFOzswQkF1QjdELFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsc0JBQXNCOzswQkFFN0IsUUFBUTs7MEJBQ1IsUUFBUTt5Q0F6QmUsVUFBVTtzQkFBbkMsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ1MsYUFBYTtzQkFBN0MsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBS2xCLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFRywwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBRUYsNkJBQTZCO3NCQURoQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEhhc1Blcm1pc3Npb25DaGVja2VyIHtcbiAgaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uS2V5OiBzdHJpbmcpOiBib29sZWFuXG59XG5cbi8qKlxuICogVGhpcyBjaGVja2VyIGFsd2F5cyByZXR1cm5zIHRydWUsIGJhc2ljYWxseSBkaXNhYmxpbmcgdGhlIHBlcm1pc3Npb24gc3lzdGVtIG9uIHRoZSBVSSBzaWRlXG4gKi9cbmV4cG9ydCBjbGFzcyBBbHdheXNHcmFudFBlcm1pc3Npb25DaGVja2VyIGltcGxlbWVudHMgSGFzUGVybWlzc2lvbkNoZWNrZXIge1xuICBoYXNQZXJtaXNzaW9uKF9wZXJtaXNzaW9uS2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBIQVNfUEVSTUlTU0lPTl9DSEVDS0VSID0gbmV3IEluamVjdGlvblRva2VuPEhhc1Blcm1pc3Npb25DaGVja2VyPignaGFzUGVybWlzc2lvbicpXG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tvY3hJZlBlcm1pc3Npb25dLCBbb2N4SWZOb3RQZXJtaXNzaW9uXScgfSlcbmV4cG9ydCBjbGFzcyBJZlBlcm1pc3Npb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoJ29jeElmUGVybWlzc2lvbicpIHBlcm1pc3Npb246IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoJ29jeElmTm90UGVybWlzc2lvbicpIHNldCBub3RQZXJtaXNzaW9uKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBlcm1pc3Npb24gPSB2YWx1ZVxuICAgIHRoaXMubmVnYXRlID0gdHJ1ZVxuICB9XG5cbiAgQElucHV0KCkgb25NaXNzaW5nUGVybWlzc2lvbjogJ2hpZGUnIHwgJ2Rpc2FibGUnID0gJ2hpZGUnXG5cbiAgQElucHV0KCkgb2N4SWZQZXJtaXNzaW9uUGVybWlzc2lvbnM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpXG4gIHNldCBvY3hJZk5vdFBlcm1pc3Npb25QZXJtaXNzaW9ucyh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLm9jeElmUGVybWlzc2lvblBlcm1pc3Npb25zID0gdmFsdWVcbiAgfVxuXG4gIHByaXZhdGUgcGVybWlzc2lvbkNoZWNrZXI6IEhhc1Blcm1pc3Npb25DaGVja2VyIHwgdW5kZWZpbmVkXG4gIG5lZ2F0ZSA9IGZhbHNlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChIQVNfUEVSTUlTU0lPTl9DSEVDS0VSKVxuICAgIHByaXZhdGUgaGFzUGVybWlzc2lvbkNoZWNrZXI/OiBIYXNQZXJtaXNzaW9uQ2hlY2tlcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8YW55PixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHVzZXJTZXJ2aWNlPzogVXNlclNlcnZpY2VcbiAgKSB7XG4gICAgaWYgKCEoaGFzUGVybWlzc2lvbkNoZWNrZXIgfHwgdXNlclNlcnZpY2UpKSB7XG4gICAgICB0aHJvdyAnSWZQZXJtaXNzaW9uIHJlcXVpcmVzIFVzZXJTZXJ2aWNlIG9yIEhhc1Blcm1pc3Npb25DaGVja2VyIHRvIGJlIHByb3ZpZGVkISdcbiAgICB9XG5cbiAgICB0aGlzLnBlcm1pc3Npb25DaGVja2VyID0gaGFzUGVybWlzc2lvbkNoZWNrZXIgPz8gdXNlclNlcnZpY2VcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnBlcm1pc3Npb24pIHtcbiAgICAgIGlmICh0aGlzLm5lZ2F0ZSA9PT0gdGhpcy5oYXNQZXJtaXNzaW9uKHRoaXMucGVybWlzc2lvbikpIHtcbiAgICAgICAgaWYgKHRoaXMub25NaXNzaW5nUGVybWlzc2lvbiA9PT0gJ2Rpc2FibGUnKSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5vY3hJZlBlcm1pc3Npb25QZXJtaXNzaW9ucykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5vY3hJZlBlcm1pc3Npb25QZXJtaXNzaW9ucy5pbmNsdWRlcyhwZXJtaXNzaW9uKVxuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ/Cfka7igI3imYDvuI8gTm8gcGVybWlzc2lvbiBpbiBvdmVyd3JpdGVzIGZvcjogYCcsIHBlcm1pc3Npb24pXG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25DaGVja2VyPy5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pXG4gIH1cbn1cbiJdfQ==
|
|
@@ -3,18 +3,27 @@ import { Injectable } from '@angular/core';
|
|
|
3
3
|
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
|
|
4
4
|
import { TranslateService } from '@ngx-translate/core';
|
|
5
5
|
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
|
6
|
-
import { BehaviorSubject, filter } from 'rxjs';
|
|
6
|
+
import { BehaviorSubject, filter, map } from 'rxjs';
|
|
7
|
+
import { SyncableTopic } from '@onecx/accelerator';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "@angular/router";
|
|
9
10
|
import * as i2 from "@ngx-translate/core";
|
|
11
|
+
// This topic is defined here and not in integration-interface, because
|
|
12
|
+
// it is not used as framework independent integration but for improving
|
|
13
|
+
// angular specific things
|
|
14
|
+
class ManualBreadcrumbsTopic extends SyncableTopic {
|
|
15
|
+
constructor() {
|
|
16
|
+
super('manualBreadcrumbs', 1);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
10
19
|
let BreadcrumbService = class BreadcrumbService {
|
|
11
20
|
constructor(router, activeRoute, translateService) {
|
|
12
21
|
this.router = router;
|
|
13
22
|
this.activeRoute = activeRoute;
|
|
14
23
|
this.translateService = translateService;
|
|
15
|
-
this.itemsSource = new
|
|
24
|
+
this.itemsSource$ = new ManualBreadcrumbsTopic();
|
|
16
25
|
this.generatedItemsSource = new BehaviorSubject([]);
|
|
17
|
-
this.itemsHandler = this.itemsSource
|
|
26
|
+
this.itemsHandler = this.itemsSource$.pipe(map((manualBreadcrumbs) => manualBreadcrumbs.menuItems));
|
|
18
27
|
this.generateBreadcrumbs(this.activeRoute.snapshot);
|
|
19
28
|
this.router.events
|
|
20
29
|
.pipe(untilDestroyed(this), filter((e) => e instanceof NavigationEnd))
|
|
@@ -87,15 +96,19 @@ let BreadcrumbService = class BreadcrumbService {
|
|
|
87
96
|
];
|
|
88
97
|
if (translationKeys.length) {
|
|
89
98
|
this.translateService.get(translationKeys).subscribe((translations) => {
|
|
90
|
-
this.itemsSource
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
99
|
+
this.itemsSource$.publish({
|
|
100
|
+
menuItems: items.map((i) => ({
|
|
101
|
+
...i,
|
|
102
|
+
label: translations[i.labelKey || ''] || i.label,
|
|
103
|
+
title: translations[i.titleKey || ''] || i.title,
|
|
104
|
+
})),
|
|
105
|
+
});
|
|
95
106
|
});
|
|
96
107
|
}
|
|
97
108
|
else {
|
|
98
|
-
this.itemsSource
|
|
109
|
+
this.itemsSource$.publish({
|
|
110
|
+
menuItems: items,
|
|
111
|
+
});
|
|
99
112
|
}
|
|
100
113
|
}
|
|
101
114
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: BreadcrumbService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -103,11 +116,13 @@ let BreadcrumbService = class BreadcrumbService {
|
|
|
103
116
|
};
|
|
104
117
|
BreadcrumbService = __decorate([
|
|
105
118
|
UntilDestroy(),
|
|
106
|
-
__metadata("design:paramtypes", [Router,
|
|
119
|
+
__metadata("design:paramtypes", [Router,
|
|
120
|
+
ActivatedRoute,
|
|
121
|
+
TranslateService])
|
|
107
122
|
], BreadcrumbService);
|
|
108
123
|
export { BreadcrumbService };
|
|
109
124
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: BreadcrumbService, decorators: [{
|
|
110
125
|
type: Injectable,
|
|
111
126
|
args: [{ providedIn: 'any' }]
|
|
112
127
|
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.TranslateService }] });
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvc2VydmljZXMvYnJlYWRjcnVtYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQWdDLGFBQWEsRUFBWSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMvRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFBOzs7O0FBTXZDLElBQU0saUJBQWlCLEdBQXZCLE1BQU0saUJBQWlCO0lBTTVCLFlBQW9CLE1BQWMsRUFBVSxXQUEyQixFQUFVLGdCQUFrQztRQUEvRixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUwzRyxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFhLEVBQUUsQ0FBQyxDQUFBO1FBQ3pELHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFhLEVBQUUsQ0FBQyxDQUFBO1FBRTFELGlCQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUc1QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07YUFDZixJQUFJLENBQ0gsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVB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QyxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6RCxDQUFBO1FBQ0QsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFpQixFQUFFLEVBQUU7Z0JBQ3pFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNuQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNoQixHQUFHLENBQUM7b0JBQ0osS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLO29CQUNoRCxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7aUJBQ2pELENBQUMsQ0FBQyxDQUNKLENBQUE7WUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDOUIsQ0FBQztJQUNILENBQUM7OEdBaEdVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRkosS0FBSzs7QUFFbEIsaUJBQWlCO0lBRDdCLFlBQVksRUFBRTtxQ0FPZSxNQUFNLEVBQXVCLGNBQWMsRUFBNEIsZ0JBQWdCO0dBTnhHLGlCQUFpQixDQWlHN0I7OzJGQWpHWSxpQkFBaUI7a0JBRjdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGF0YSwgTmF2aWdhdGlvbkVuZCwgUGFyYW1NYXAsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknXG5pbXBvcnQgeyBCcmVhZENydW1iTWVudUl0ZW0gfSBmcm9tICcuLi9tb2RlbC9icmVhZGNydW1iLW1lbnUtaXRlbS5tb2RlbCdcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAnYW55JyB9KVxuQFVudGlsRGVzdHJveSgpXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYlNlcnZpY2Uge1xuICBwcml2YXRlIGl0ZW1zU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPihbXSlcbiAgZ2VuZXJhdGVkSXRlbXNTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lbnVJdGVtW10+KFtdKVxuXG4gIGl0ZW1zSGFuZGxlciA9IHRoaXMuaXRlbXNTb3VyY2UuYXNPYnNlcnZhYmxlKClcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGFjdGl2ZVJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWJzKHRoaXMuYWN0aXZlUm91dGUuc25hcHNob3QpXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcyksXG4gICAgICAgIGZpbHRlcigoZSkgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3RcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWJzKHJvb3QpXG4gICAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUJyZWFkY3J1bWJzKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCkge1xuICAgIGlmIChyb3V0ZT8uZGF0YVsnbWZlSW5mbyddKSB7XG4gICAgICBjb25zdCBicmVhZGNydW1iczogTWVudUl0ZW1bXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiByb3V0ZS5kYXRhWydtZmVJbmZvJ10ucHJvZHVjdE5hbWUsXG4gICAgICAgICAgcm91dGVyTGluazogcm91dGUuZGF0YVsnbWZlSW5mbyddLmJhc2VIcmVmLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgICAgY29uc3QgYmFzZVVybDogc3RyaW5nW10gPSAocm91dGUuZGF0YVsnbWZlSW5mbyddLmJhc2VIcmVmIGFzIHN0cmluZykuc3BsaXQoJy8nKS5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSlcbiAgICAgIGNvbnN0IHBhcmVudFVybDogc3RyaW5nW10gPSByb3V0ZS51cmwubWFwKCh1cmwpID0+IHVybC5wYXRoKVxuICAgICAgY29uc3QgaXNVc2luZ01hdGNoZXIgPSAhcGFyZW50VXJsLmV2ZXJ5KChpdGVtKSA9PiBiYXNlVXJsLmluY2x1ZGVzKGl0ZW0pKVxuICAgICAgaWYgKGlzVXNpbmdNYXRjaGVyKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlQnJlYWRjcnVtYihyb3V0ZSwgcGFyZW50VXJsLCBicmVhZGNydW1icylcbiAgICAgIH1cbiAgICAgIHRoaXMuYWRkQnJlYWRjcnVtYihyb3V0ZS5maXJzdENoaWxkLCBwYXJlbnRVcmwsIGJyZWFkY3J1bWJzKVxuICAgICAgdGhpcy5nZW5lcmF0ZWRJdGVtc1NvdXJjZS5uZXh0KGJyZWFkY3J1bWJzKVxuICAgIH0gZWxzZSBpZiAocm91dGU/LmRhdGFbJ2JyZWFkY3J1bWInXSkge1xuICAgICAgY29uc3QgYnJlYWRjcnVtYnM6IE1lbnVJdGVtW10gPSBbXVxuICAgICAgdGhpcy5hZGRCcmVhZGNydW1iKHJvdXRlLCBbXSwgYnJlYWRjcnVtYnMpXG4gICAgICB0aGlzLmdlbmVyYXRlZEl0ZW1zU291cmNlLm5leHQoYnJlYWRjcnVtYnMpXG4gICAgfSBlbHNlIGlmIChyb3V0ZSkge1xuICAgICAgdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWJzKHJvdXRlLmZpcnN0Q2hpbGQpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRCcmVhZGNydW1iKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCwgcGFyZW50VXJsOiBzdHJpbmdbXSwgYnJlYWRjcnVtYnM6IE1lbnVJdGVtW10pIHtcbiAgICBpZiAocm91dGUgJiYgcm91dGUudXJsKSB7XG4gICAgICBjb25zdCByb3V0ZVVybCA9IHBhcmVudFVybC5jb25jYXQocm91dGUudXJsLm1hcCgodXJsKSA9PiB1cmwucGF0aCkpXG4gICAgICBpZiAocm91dGUucm91dGVDb25maWc/LnBhdGgpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVCcmVhZGNydW1iKHJvdXRlLCByb3V0ZVVybCwgYnJlYWRjcnVtYnMpXG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWRkQnJlYWRjcnVtYihyb3V0ZS5maXJzdENoaWxkLCByb3V0ZVVybCwgYnJlYWRjcnVtYnMpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVCcmVhZGNydW1iKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCByb3V0ZVVybDogc3RyaW5nW10sIGJyZWFkY3J1bWJzOiBNZW51SXRlbVtdKSB7XG4gICAgaWYgKHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXSkge1xuICAgICAgY29uc3QgYnJlYWRjcnVtYjogTWVudUl0ZW0gPSB7XG4gICAgICAgIGxhYmVsOiB0aGlzLmdldExhYmVsKHJvdXRlLmRhdGEsIHJvdXRlLnBhcmFtTWFwKSxcbiAgICAgICAgcm91dGVyTGluazogJy8nICsgcm91dGVVcmwuam9pbignLycpLFxuICAgICAgfVxuICAgICAgYnJlYWRjcnVtYnMucHVzaChicmVhZGNydW1iKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBicmVhZGNydW1iOiBNZW51SXRlbSA9IHtcbiAgICAgICAgbGFiZWw6ICdOQScsXG4gICAgICAgIHJvdXRlckxpbms6ICcvJyArIHJvdXRlVXJsLmpvaW4oJy8nKSxcbiAgICAgIH1cbiAgICAgIGJyZWFkY3J1bWJzLnB1c2goYnJlYWRjcnVtYilcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldExhYmVsKGRhdGE6IERhdGEsIHBhcmFtczogUGFyYW1NYXApIHtcbiAgICBpZiAodHlwZW9mIGRhdGFbJ2JyZWFkY3J1bWJGbiddID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gZGF0YVsnYnJlYWRjcnVtYkZuJ10oZGF0YSwgcGFyYW1zKVxuICAgIH1cbiAgICByZXR1cm4gZGF0YVsnYnJlYWRjcnVtYiddXG4gIH1cblxuICBzZXRJdGVtcyhpdGVtczogQnJlYWRDcnVtYk1lbnVJdGVtW10pIHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbktleXMgPSBbXG4gICAgICAuLi5pdGVtcy5tYXAoKGkpID0+IGkubGFiZWxLZXkgfHwgJycpLmZpbHRlcigobCkgPT4gISFsKSxcbiAgICAgIC4uLml0ZW1zLm1hcCgoaSkgPT4gaS50aXRsZUtleSB8fCAnJykuZmlsdGVyKChsKSA9PiAhIWwpLFxuICAgIF1cbiAgICBpZiAodHJhbnNsYXRpb25LZXlzLmxlbmd0aCkge1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0cmFuc2xhdGlvbktleXMpLnN1YnNjcmliZSgodHJhbnNsYXRpb25zOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pdGVtc1NvdXJjZS5uZXh0KFxuICAgICAgICAgIGl0ZW1zLm1hcCgoaSkgPT4gKHtcbiAgICAgICAgICAgIC4uLmksXG4gICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zW2kubGFiZWxLZXkgfHwgJyddIHx8IGkubGFiZWwsXG4gICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRpb25zW2kudGl0bGVLZXkgfHwgJyddIHx8IGkudGl0bGUsXG4gICAgICAgICAgfSkpXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXRlbXNTb3VyY2UubmV4dChpdGVtcylcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvc2VydmljZXMvYnJlYWRjcnVtYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQWdDLGFBQWEsRUFBWSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMvRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUduRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7Ozs7QUFNbEQsdUVBQXVFO0FBQ3ZFLHdFQUF3RTtBQUN4RSwwQkFBMEI7QUFDMUIsTUFBTSxzQkFBdUIsU0FBUSxhQUFnQztJQUNuRTtRQUNFLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUMvQixDQUFDO0NBQ0Y7QUFJTSxJQUFNLGlCQUFpQixHQUF2QixNQUFNLGlCQUFpQjtJQU01QixZQUNVLE1BQWMsRUFDZCxXQUEyQixFQUMzQixnQkFBa0M7UUFGbEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBUnBDLGlCQUFZLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxDQUFBO1FBQ25ELHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFhLEVBQUUsQ0FBQyxDQUFBO1FBRTFELGlCQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVks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QUM7OEdBdEdVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRkosS0FBSzs7QUFFbEIsaUJBQWlCO0lBRDdCLFlBQVksRUFBRTtxQ0FRSyxNQUFNO1FBQ0QsY0FBYztRQUNULGdCQUFnQjtHQVRqQyxpQkFBaUIsQ0F1RzdCOzsyRkF2R1ksaUJBQWlCO2tCQUY3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIERhdGEsIE5hdmlnYXRpb25FbmQsIFBhcmFtTWFwLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknXG5pbXBvcnQgeyBCcmVhZENydW1iTWVudUl0ZW0gfSBmcm9tICcuLi9tb2RlbC9icmVhZGNydW1iLW1lbnUtaXRlbS5tb2RlbCdcbmltcG9ydCB7IFN5bmNhYmxlVG9waWMgfSBmcm9tICdAb25lY3gvYWNjZWxlcmF0b3InXG5cbmludGVyZmFjZSBNYW51YWxCcmVhZGNydW1icyB7XG4gIG1lbnVJdGVtczogTWVudUl0ZW1bXVxufVxuXG4vLyBUaGlzIHRvcGljIGlzIGRlZmluZWQgaGVyZSBhbmQgbm90IGluIGludGVncmF0aW9uLWludGVyZmFjZSwgYmVjYXVzZVxuLy8gaXQgaXMgbm90IHVzZWQgYXMgZnJhbWV3b3JrIGluZGVwZW5kZW50IGludGVncmF0aW9uIGJ1dCBmb3IgaW1wcm92aW5nXG4vLyBhbmd1bGFyIHNwZWNpZmljIHRoaW5nc1xuY2xhc3MgTWFudWFsQnJlYWRjcnVtYnNUb3BpYyBleHRlbmRzIFN5bmNhYmxlVG9waWM8TWFudWFsQnJlYWRjcnVtYnM+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ21hbnVhbEJyZWFkY3J1bWJzJywgMSlcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdhbnknIH0pXG5AVW50aWxEZXN0cm95KClcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iU2VydmljZSB7XG4gIHByaXZhdGUgaXRlbXNTb3VyY2UkID0gbmV3IE1hbnVhbEJyZWFkY3J1bWJzVG9waWMoKVxuICBnZW5lcmF0ZWRJdGVtc1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWVudUl0ZW1bXT4oW10pXG5cbiAgaXRlbXNIYW5kbGVyID0gdGhpcy5pdGVtc1NvdXJjZSQucGlwZShtYXAoKG1hbnVhbEJyZWFkY3J1bWJzKSA9PiBtYW51YWxCcmVhZGNydW1icy5tZW51SXRlbXMpKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhY3RpdmVSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZ2VuZXJhdGVCcmVhZGNydW1icyh0aGlzLmFjdGl2ZVJvdXRlLnNuYXBzaG90KVxuICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpLFxuICAgICAgICBmaWx0ZXIoKGUpID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC5yb290XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVCcmVhZGNydW1icyhyb290KVxuICAgICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVCcmVhZGNydW1icyhyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwpIHtcbiAgICBpZiAocm91dGU/LmRhdGFbJ21mZUluZm8nXSkge1xuICAgICAgY29uc3QgYnJlYWRjcnVtYnM6IE1lbnVJdGVtW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogcm91dGUuZGF0YVsnbWZlSW5mbyddLnByb2R1Y3ROYW1lLFxuICAgICAgICAgIHJvdXRlckxpbms6IHJvdXRlLmRhdGFbJ21mZUluZm8nXS5iYXNlSHJlZixcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICAgIGNvbnN0IGJhc2VVcmw6IHN0cmluZ1tdID0gKHJvdXRlLmRhdGFbJ21mZUluZm8nXS5iYXNlSHJlZiBhcyBzdHJpbmcpLnNwbGl0KCcvJykuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUpXG4gICAgICBjb25zdCBwYXJlbnRVcmw6IHN0cmluZ1tdID0gcm91dGUudXJsLm1hcCgodXJsKSA9PiB1cmwucGF0aClcbiAgICAgIGNvbnN0IGlzVXNpbmdNYXRjaGVyID0gIXBhcmVudFVybC5ldmVyeSgoaXRlbSkgPT4gYmFzZVVybC5pbmNsdWRlcyhpdGVtKSlcbiAgICAgIGlmIChpc1VzaW5nTWF0Y2hlcikge1xuICAgICAgICB0aGlzLmNyZWF0ZUJyZWFkY3J1bWIocm91dGUsIHBhcmVudFVybCwgYnJlYWRjcnVtYnMpXG4gICAgICB9XG4gICAgICB0aGlzLmFkZEJyZWFkY3J1bWIocm91dGUuZmlyc3RDaGlsZCwgcGFyZW50VXJsLCBicmVhZGNydW1icylcbiAgICAgIHRoaXMuZ2VuZXJhdGVkSXRlbXNTb3VyY2UubmV4dChicmVhZGNydW1icylcbiAgICB9IGVsc2UgaWYgKHJvdXRlPy5kYXRhWydicmVhZGNydW1iJ10pIHtcbiAgICAgIGNvbnN0IGJyZWFkY3J1bWJzOiBNZW51SXRlbVtdID0gW11cbiAgICAgIHRoaXMuYWRkQnJlYWRjcnVtYihyb3V0ZSwgW10sIGJyZWFkY3J1bWJzKVxuICAgICAgdGhpcy5nZW5lcmF0ZWRJdGVtc1NvdXJjZS5uZXh0KGJyZWFkY3J1bWJzKVxuICAgIH0gZWxzZSBpZiAocm91dGUpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVCcmVhZGNydW1icyhyb3V0ZS5maXJzdENoaWxkKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkQnJlYWRjcnVtYihyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwsIHBhcmVudFVybDogc3RyaW5nW10sIGJyZWFkY3J1bWJzOiBNZW51SXRlbVtdKSB7XG4gICAgaWYgKHJvdXRlICYmIHJvdXRlLnVybCkge1xuICAgICAgY29uc3Qgcm91dGVVcmwgPSBwYXJlbnRVcmwuY29uY2F0KHJvdXRlLnVybC5tYXAoKHVybCkgPT4gdXJsLnBhdGgpKVxuICAgICAgaWYgKHJvdXRlLnJvdXRlQ29uZmlnPy5wYXRoKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlQnJlYWRjcnVtYihyb3V0ZSwgcm91dGVVcmwsIGJyZWFkY3J1bWJzKVxuICAgICAgfVxuXG4gICAgICB0aGlzLmFkZEJyZWFkY3J1bWIocm91dGUuZmlyc3RDaGlsZCwgcm91dGVVcmwsIGJyZWFkY3J1bWJzKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQnJlYWRjcnVtYihyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgcm91dGVVcmw6IHN0cmluZ1tdLCBicmVhZGNydW1iczogTWVudUl0ZW1bXSkge1xuICAgIGlmIChyb3V0ZS5kYXRhWydicmVhZGNydW1iJ10pIHtcbiAgICAgIGNvbnN0IGJyZWFkY3J1bWI6IE1lbnVJdGVtID0ge1xuICAgICAgICBsYWJlbDogdGhpcy5nZXRMYWJlbChyb3V0ZS5kYXRhLCByb3V0ZS5wYXJhbU1hcCksXG4gICAgICAgIHJvdXRlckxpbms6ICcvJyArIHJvdXRlVXJsLmpvaW4oJy8nKSxcbiAgICAgIH1cbiAgICAgIGJyZWFkY3J1bWJzLnB1c2goYnJlYWRjcnVtYilcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYnJlYWRjcnVtYjogTWVudUl0ZW0gPSB7XG4gICAgICAgIGxhYmVsOiAnTkEnLFxuICAgICAgICByb3V0ZXJMaW5rOiAnLycgKyByb3V0ZVVybC5qb2luKCcvJyksXG4gICAgICB9XG4gICAgICBicmVhZGNydW1icy5wdXNoKGJyZWFkY3J1bWIpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRMYWJlbChkYXRhOiBEYXRhLCBwYXJhbXM6IFBhcmFtTWFwKSB7XG4gICAgaWYgKHR5cGVvZiBkYXRhWydicmVhZGNydW1iRm4nXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGRhdGFbJ2JyZWFkY3J1bWJGbiddKGRhdGEsIHBhcmFtcylcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFbJ2JyZWFkY3J1bWInXVxuICB9XG5cbiAgc2V0SXRlbXMoaXRlbXM6IEJyZWFkQ3J1bWJNZW51SXRlbVtdKSB7XG4gICAgY29uc3QgdHJhbnNsYXRpb25LZXlzID0gW1xuICAgICAgLi4uaXRlbXMubWFwKChpKSA9PiBpLmxhYmVsS2V5IHx8ICcnKS5maWx0ZXIoKGwpID0+ICEhbCksXG4gICAgICAuLi5pdGVtcy5tYXAoKGkpID0+IGkudGl0bGVLZXkgfHwgJycpLmZpbHRlcigobCkgPT4gISFsKSxcbiAgICBdXG4gICAgaWYgKHRyYW5zbGF0aW9uS2V5cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQodHJhbnNsYXRpb25LZXlzKS5zdWJzY3JpYmUoKHRyYW5zbGF0aW9uczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXRlbXNTb3VyY2UkLnB1Ymxpc2goe1xuICAgICAgICAgIG1lbnVJdGVtczogaXRlbXMubWFwKChpKSA9PiAoe1xuICAgICAgICAgICAgLi4uaSxcbiAgICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGlvbnNbaS5sYWJlbEtleSB8fCAnJ10gfHwgaS5sYWJlbCxcbiAgICAgICAgICAgIHRpdGxlOiB0cmFuc2xhdGlvbnNbaS50aXRsZUtleSB8fCAnJ10gfHwgaS50aXRsZSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW1zU291cmNlJC5wdWJsaXNoKHtcbiAgICAgICAgbWVudUl0ZW1zOiBpdGVtcyxcbiAgICAgIH0pXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Directive,
|
|
2
|
+
import { InjectionToken, Directive, Optional, Inject, Input, HostListener, EventEmitter, Output, Component, Injectable, Injector, LOCALE_ID, Pipe, ViewEncapsulation, ContentChild, ViewChild, NgModule, APP_INITIALIZER, inject } from '@angular/core';
|
|
3
|
+
import * as i3 from '@onecx/angular-integration-interface';
|
|
4
|
+
import { UserService } from '@onecx/angular-integration-interface';
|
|
3
5
|
import * as i1 from '@angular/common/http';
|
|
4
6
|
import * as i4 from '@angular/common';
|
|
5
7
|
import { CurrencyPipe, DecimalPipe, DatePipe, Location, CommonModule } from '@angular/common';
|
|
@@ -13,13 +15,12 @@ import * as i1$1 from '@ngx-translate/core';
|
|
|
13
15
|
import { TranslateService, TranslatePipe, TranslateModule } from '@ngx-translate/core';
|
|
14
16
|
import * as i2$1 from 'primeng/api';
|
|
15
17
|
import { PrimeIcons } from 'primeng/api';
|
|
16
|
-
import { BehaviorSubject, filter, concat, of,
|
|
17
|
-
import * as i3 from '@onecx/angular-integration-interface';
|
|
18
|
-
import { UserService } from '@onecx/angular-integration-interface';
|
|
18
|
+
import { BehaviorSubject, map, filter, concat, of, combineLatest, mergeMap, first, tap, firstValueFrom, skip, defaultIfEmpty, forkJoin } from 'rxjs';
|
|
19
19
|
import { __decorate, __metadata } from 'tslib';
|
|
20
20
|
import * as i1$2 from '@angular/router';
|
|
21
21
|
import { NavigationEnd, Router, ActivatedRoute, RouterModule } from '@angular/router';
|
|
22
22
|
import { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';
|
|
23
|
+
import { SyncableTopic, isValidDate as isValidDate$1 } from '@onecx/accelerator';
|
|
23
24
|
import * as i5 from 'primeng/breadcrumb';
|
|
24
25
|
import { BreadcrumbModule } from 'primeng/breadcrumb';
|
|
25
26
|
import * as i8 from 'primeng/menu';
|
|
@@ -34,7 +35,6 @@ import * as i6$1 from 'primeng/selectbutton';
|
|
|
34
35
|
import { SelectButtonModule } from 'primeng/selectbutton';
|
|
35
36
|
import * as i7 from 'primeng/dataview';
|
|
36
37
|
import { DataViewModule } from 'primeng/dataview';
|
|
37
|
-
import { isValidDate as isValidDate$1, SyncableTopic } from '@onecx/accelerator';
|
|
38
38
|
import * as i7$1 from 'primeng/table';
|
|
39
39
|
import { TableModule } from 'primeng/table';
|
|
40
40
|
import * as i9 from 'primeng/multiselect';
|
|
@@ -63,14 +63,19 @@ class IfPermissionDirective {
|
|
|
63
63
|
set ocxIfNotPermissionPermissions(value) {
|
|
64
64
|
this.ocxIfPermissionPermissions = value;
|
|
65
65
|
}
|
|
66
|
-
constructor(renderer, el, viewContainer,
|
|
66
|
+
constructor(renderer, el, viewContainer, hasPermissionChecker, templateRef, userService) {
|
|
67
67
|
this.renderer = renderer;
|
|
68
68
|
this.el = el;
|
|
69
69
|
this.viewContainer = viewContainer;
|
|
70
|
-
this.
|
|
70
|
+
this.hasPermissionChecker = hasPermissionChecker;
|
|
71
71
|
this.templateRef = templateRef;
|
|
72
|
+
this.userService = userService;
|
|
72
73
|
this.onMissingPermission = 'hide';
|
|
73
74
|
this.negate = false;
|
|
75
|
+
if (!(hasPermissionChecker || userService)) {
|
|
76
|
+
throw 'IfPermission requires UserService or HasPermissionChecker to be provided!';
|
|
77
|
+
}
|
|
78
|
+
this.permissionChecker = hasPermissionChecker ?? userService;
|
|
74
79
|
}
|
|
75
80
|
ngOnInit() {
|
|
76
81
|
if (this.permission) {
|
|
@@ -97,19 +102,23 @@ class IfPermissionDirective {
|
|
|
97
102
|
}
|
|
98
103
|
return result;
|
|
99
104
|
}
|
|
100
|
-
return this.permissionChecker
|
|
105
|
+
return this.permissionChecker?.hasPermission(permission);
|
|
101
106
|
}
|
|
102
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IfPermissionDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: HAS_PERMISSION_CHECKER }, { token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
107
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IfPermissionDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: HAS_PERMISSION_CHECKER, optional: true }, { token: i0.TemplateRef, optional: true }, { token: i3.UserService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
103
108
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.2", type: IfPermissionDirective, selector: "[ocxIfPermission], [ocxIfNotPermission]", inputs: { permission: ["ocxIfPermission", "permission"], notPermission: ["ocxIfNotPermission", "notPermission"], onMissingPermission: "onMissingPermission", ocxIfPermissionPermissions: "ocxIfPermissionPermissions", ocxIfNotPermissionPermissions: "ocxIfNotPermissionPermissions" }, ngImport: i0 }); }
|
|
104
109
|
}
|
|
105
110
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IfPermissionDirective, decorators: [{
|
|
106
111
|
type: Directive,
|
|
107
112
|
args: [{ selector: '[ocxIfPermission], [ocxIfNotPermission]' }]
|
|
108
113
|
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
|
|
114
|
+
type: Optional
|
|
115
|
+
}, {
|
|
109
116
|
type: Inject,
|
|
110
117
|
args: [HAS_PERMISSION_CHECKER]
|
|
111
118
|
}] }, { type: i0.TemplateRef, decorators: [{
|
|
112
119
|
type: Optional
|
|
120
|
+
}] }, { type: i3.UserService, decorators: [{
|
|
121
|
+
type: Optional
|
|
113
122
|
}] }], propDecorators: { permission: [{
|
|
114
123
|
type: Input,
|
|
115
124
|
args: ['ocxIfPermission']
|
|
@@ -243,14 +252,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
243
252
|
type: Output
|
|
244
253
|
}] } });
|
|
245
254
|
|
|
255
|
+
// This topic is defined here and not in integration-interface, because
|
|
256
|
+
// it is not used as framework independent integration but for improving
|
|
257
|
+
// angular specific things
|
|
258
|
+
class ManualBreadcrumbsTopic extends SyncableTopic {
|
|
259
|
+
constructor() {
|
|
260
|
+
super('manualBreadcrumbs', 1);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
246
263
|
let BreadcrumbService = class BreadcrumbService {
|
|
247
264
|
constructor(router, activeRoute, translateService) {
|
|
248
265
|
this.router = router;
|
|
249
266
|
this.activeRoute = activeRoute;
|
|
250
267
|
this.translateService = translateService;
|
|
251
|
-
this.itemsSource = new
|
|
268
|
+
this.itemsSource$ = new ManualBreadcrumbsTopic();
|
|
252
269
|
this.generatedItemsSource = new BehaviorSubject([]);
|
|
253
|
-
this.itemsHandler = this.itemsSource
|
|
270
|
+
this.itemsHandler = this.itemsSource$.pipe(map((manualBreadcrumbs) => manualBreadcrumbs.menuItems));
|
|
254
271
|
this.generateBreadcrumbs(this.activeRoute.snapshot);
|
|
255
272
|
this.router.events
|
|
256
273
|
.pipe(untilDestroyed(this), filter((e) => e instanceof NavigationEnd))
|
|
@@ -323,15 +340,19 @@ let BreadcrumbService = class BreadcrumbService {
|
|
|
323
340
|
];
|
|
324
341
|
if (translationKeys.length) {
|
|
325
342
|
this.translateService.get(translationKeys).subscribe((translations) => {
|
|
326
|
-
this.itemsSource
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
343
|
+
this.itemsSource$.publish({
|
|
344
|
+
menuItems: items.map((i) => ({
|
|
345
|
+
...i,
|
|
346
|
+
label: translations[i.labelKey || ''] || i.label,
|
|
347
|
+
title: translations[i.titleKey || ''] || i.title,
|
|
348
|
+
})),
|
|
349
|
+
});
|
|
331
350
|
});
|
|
332
351
|
}
|
|
333
352
|
else {
|
|
334
|
-
this.itemsSource
|
|
353
|
+
this.itemsSource$.publish({
|
|
354
|
+
menuItems: items,
|
|
355
|
+
});
|
|
335
356
|
}
|
|
336
357
|
}
|
|
337
358
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: BreadcrumbService, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -339,7 +360,9 @@ let BreadcrumbService = class BreadcrumbService {
|
|
|
339
360
|
};
|
|
340
361
|
BreadcrumbService = __decorate([
|
|
341
362
|
UntilDestroy(),
|
|
342
|
-
__metadata("design:paramtypes", [Router,
|
|
363
|
+
__metadata("design:paramtypes", [Router,
|
|
364
|
+
ActivatedRoute,
|
|
365
|
+
TranslateService])
|
|
343
366
|
], BreadcrumbService);
|
|
344
367
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: BreadcrumbService, decorators: [{
|
|
345
368
|
type: Injectable,
|
|
@@ -627,6 +650,8 @@ class SearchHeaderComponent {
|
|
|
627
650
|
this.viewMode = 'basic';
|
|
628
651
|
this.manualBreadcrumbs = false;
|
|
629
652
|
this._actions = [];
|
|
653
|
+
this.searchButtonDisabled = false;
|
|
654
|
+
this.resetButtonDisabled = false;
|
|
630
655
|
this.searched = new EventEmitter();
|
|
631
656
|
this.resetted = new EventEmitter();
|
|
632
657
|
this.selectedSearchConfigChanged = new EventEmitter();
|
|
@@ -706,11 +731,11 @@ class SearchHeaderComponent {
|
|
|
706
731
|
this.selectedSearchConfigChanged?.emit(searchConfig);
|
|
707
732
|
}
|
|
708
733
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SearchHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
709
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: SearchHeaderComponent, selector: "ocx-search-header", inputs: { searchConfigs: "searchConfigs", header: "header", headline: "headline", subheader: "subheader", viewMode: "viewMode", manualBreadcrumbs: "manualBreadcrumbs", actions: "actions" }, outputs: { searched: "searched", resetted: "resetted", selectedSearchConfigChanged: "selectedSearchConfigChanged", viewModeChanged: "viewModeChanged" }, queries: [{ propertyName: "additionalToolbarContent", first: true, predicate: ["additionalToolbarContent"], descendants: true }, { propertyName: "additionalToolbarContentLeft", first: true, predicate: ["additionalToolbarContentLeft"], descendants: true }], viewQueries: [{ propertyName: "searchParameterFields", first: true, predicate: ["searchParameterFields"], descendants: true }], ngImport: i0, template: "<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n <ocx-search-config [searchConfigs]=\"searchConfigs\" (selectedSearchConfigChanged)=\"confirmSearchConfig($event)\">\n </ocx-search-config>\n <ng-container
|
|
734
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: SearchHeaderComponent, selector: "ocx-search-header", inputs: { searchConfigs: "searchConfigs", header: "header", headline: "headline", subheader: "subheader", viewMode: "viewMode", manualBreadcrumbs: "manualBreadcrumbs", actions: "actions", searchButtonDisabled: "searchButtonDisabled", resetButtonDisabled: "resetButtonDisabled" }, outputs: { searched: "searched", resetted: "resetted", selectedSearchConfigChanged: "selectedSearchConfigChanged", viewModeChanged: "viewModeChanged" }, queries: [{ propertyName: "additionalToolbarContent", first: true, predicate: ["additionalToolbarContent"], descendants: true }, { propertyName: "additionalToolbarContentLeft", first: true, predicate: ["additionalToolbarContentLeft"], descendants: true }], viewQueries: [{ propertyName: "searchParameterFields", first: true, predicate: ["searchParameterFields"], descendants: true }], ngImport: i0, template: "<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n <ocx-search-config [searchConfigs]=\"searchConfigs\" (selectedSearchConfigChanged)=\"confirmSearchConfig($event)\">\n </ocx-search-config>\n <ng-container\n *ngIf=\"_additionalToolbarContentLeft\"\n [ngTemplateOutlet]=\"_additionalToolbarContentLeft\"\n ></ng-container>\n </ng-template>\n <ng-template #additionalToolbarContent>\n <ng-container *ngIf=\"_additionalToolbarContent\" [ngTemplateOutlet]=\"_additionalToolbarContent\"></ng-container>\n </ng-template>\n <div class=\"search-criteria-container\">\n <div #searchParameterFields>\n <ng-content></ng-content>\n <div class=\"search-criteria-buttons\">\n <p-button\n id=\"resetButton\"\n *ngIf=\"resetted.observed\"\n (onClick)=\"onResetClicked()\"\n label=\"{{ 'OCX_SEARCH_HEADER.RESET_BUTTON.TEXT' | translate }}\"\n icon=\"pi pi-eraser\"\n [attr.aria-label]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate\"\n title=\"{{ 'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate }}\"\n [disabled]=\"resetButtonDisabled\"\n >\n </p-button>\n\n <p-button\n id=\"searchButton\"\n (onClick)=\"onSearchClicked()\"\n label=\"{{ 'OCX_SEARCH_HEADER.SEARCH_BUTTON.TEXT' | translate }}\"\n icon=\"pi pi-search\"\n [attr.aria-label]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate\"\n title=\"{{ 'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate }}\"\n [disabled]=\"searchButtonDisabled\"\n >\n </p-button>\n </div>\n </div>\n </div>\n</ocx-page-header>\n", styles: [".search-criteria-buttons{display:flex;flex-flow:row;align-items:flex-start;gap:.5rem;margin-top:.5rem}.search-criteria-container{width:100%;display:flex}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: SearchConfigComponent, selector: "ocx-search-config", inputs: ["searchConfigs", "placeholderKey"], outputs: ["selectedSearchConfigChanged"] }, { kind: "component", type: PageHeaderComponent, selector: "ocx-page-header", inputs: ["header", "loading", "figureBackground", "showFigure", "figureImage", "disableDefaultActions", "subheader", "actions", "objectDetails", "showBreadcrumbs", "manualBreadcrumbs", "enableGridView", "gridLayoutDesktopColumns"], outputs: ["save"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
710
735
|
}
|
|
711
736
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SearchHeaderComponent, decorators: [{
|
|
712
737
|
type: Component,
|
|
713
|
-
args: [{ selector: 'ocx-search-header', template: "<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n <ocx-search-config [searchConfigs]=\"searchConfigs\" (selectedSearchConfigChanged)=\"confirmSearchConfig($event)\">\n </ocx-search-config>\n <ng-container
|
|
738
|
+
args: [{ selector: 'ocx-search-header', template: "<ocx-page-header\n [header]=\"header || ('OCX_SEARCH_HEADER.HEADER' | translate)\"\n [subheader]=\"subheader\"\n [manualBreadcrumbs]=\"manualBreadcrumbs\"\n [actions]=\"headerActions\"\n>\n <ng-template #additionalToolbarContentLeft>\n <ocx-search-config [searchConfigs]=\"searchConfigs\" (selectedSearchConfigChanged)=\"confirmSearchConfig($event)\">\n </ocx-search-config>\n <ng-container\n *ngIf=\"_additionalToolbarContentLeft\"\n [ngTemplateOutlet]=\"_additionalToolbarContentLeft\"\n ></ng-container>\n </ng-template>\n <ng-template #additionalToolbarContent>\n <ng-container *ngIf=\"_additionalToolbarContent\" [ngTemplateOutlet]=\"_additionalToolbarContent\"></ng-container>\n </ng-template>\n <div class=\"search-criteria-container\">\n <div #searchParameterFields>\n <ng-content></ng-content>\n <div class=\"search-criteria-buttons\">\n <p-button\n id=\"resetButton\"\n *ngIf=\"resetted.observed\"\n (onClick)=\"onResetClicked()\"\n label=\"{{ 'OCX_SEARCH_HEADER.RESET_BUTTON.TEXT' | translate }}\"\n icon=\"pi pi-eraser\"\n [attr.aria-label]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate\"\n title=\"{{ 'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate }}\"\n [disabled]=\"resetButtonDisabled\"\n >\n </p-button>\n\n <p-button\n id=\"searchButton\"\n (onClick)=\"onSearchClicked()\"\n label=\"{{ 'OCX_SEARCH_HEADER.SEARCH_BUTTON.TEXT' | translate }}\"\n icon=\"pi pi-search\"\n [attr.aria-label]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate\"\n title=\"{{ 'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate }}\"\n [disabled]=\"searchButtonDisabled\"\n >\n </p-button>\n </div>\n </div>\n </div>\n</ocx-page-header>\n", styles: [".search-criteria-buttons{display:flex;flex-flow:row;align-items:flex-start;gap:.5rem;margin-top:.5rem}.search-criteria-container{width:100%;display:flex}\n"] }]
|
|
714
739
|
}], propDecorators: { searchConfigs: [{
|
|
715
740
|
type: Input
|
|
716
741
|
}], header: [{
|
|
@@ -725,6 +750,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
725
750
|
type: Input
|
|
726
751
|
}], actions: [{
|
|
727
752
|
type: Input
|
|
753
|
+
}], searchButtonDisabled: [{
|
|
754
|
+
type: Input
|
|
755
|
+
}], resetButtonDisabled: [{
|
|
756
|
+
type: Input
|
|
728
757
|
}], searched: [{
|
|
729
758
|
type: Output
|
|
730
759
|
}], resetted: [{
|
|
@@ -1169,6 +1198,7 @@ class DataListGridComponent extends DataSortBase {
|
|
|
1169
1198
|
return this._data$.getValue();
|
|
1170
1199
|
}
|
|
1171
1200
|
set data(value) {
|
|
1201
|
+
!this._data$.getValue().length ?? this.resetPage();
|
|
1172
1202
|
this._originalData = [...value];
|
|
1173
1203
|
this._data$.next([...value]);
|
|
1174
1204
|
}
|
|
@@ -1176,6 +1206,7 @@ class DataListGridComponent extends DataSortBase {
|
|
|
1176
1206
|
return this._filters$.getValue();
|
|
1177
1207
|
}
|
|
1178
1208
|
set filters(value) {
|
|
1209
|
+
!this._filters$.getValue().length ?? this.resetPage();
|
|
1179
1210
|
this._filters$.next(value);
|
|
1180
1211
|
}
|
|
1181
1212
|
get sortDirection() {
|
|
@@ -1409,6 +1440,10 @@ class DataListGridComponent extends DataSortBase {
|
|
|
1409
1440
|
this.page = page;
|
|
1410
1441
|
this.pageChanged.emit(page);
|
|
1411
1442
|
}
|
|
1443
|
+
resetPage() {
|
|
1444
|
+
this.page = 0;
|
|
1445
|
+
this.pageChanged.emit(this.page);
|
|
1446
|
+
}
|
|
1412
1447
|
fieldIsTruthy(object, key) {
|
|
1413
1448
|
return !!this.resolveFieldData(object, key);
|
|
1414
1449
|
}
|
|
@@ -1719,6 +1754,7 @@ class DataTableComponent extends DataSortBase {
|
|
|
1719
1754
|
return this._rows$.getValue();
|
|
1720
1755
|
}
|
|
1721
1756
|
set rows(value) {
|
|
1757
|
+
!this._rows$.getValue().length ?? this.resetPage();
|
|
1722
1758
|
this._rows$.next(value);
|
|
1723
1759
|
}
|
|
1724
1760
|
get selectedRows() {
|
|
@@ -1731,6 +1767,7 @@ class DataTableComponent extends DataSortBase {
|
|
|
1731
1767
|
return this._filters$.getValue();
|
|
1732
1768
|
}
|
|
1733
1769
|
set filters(value) {
|
|
1770
|
+
!this._filters$.getValue().length ?? this.resetPage();
|
|
1734
1771
|
this._filters$.next(value);
|
|
1735
1772
|
}
|
|
1736
1773
|
get sortDirection() {
|
|
@@ -1933,6 +1970,7 @@ class DataTableComponent extends DataSortBase {
|
|
|
1933
1970
|
this.filters = filters;
|
|
1934
1971
|
}
|
|
1935
1972
|
this.filtered.emit(filters);
|
|
1973
|
+
this.resetPage();
|
|
1936
1974
|
}
|
|
1937
1975
|
getSelectedFilters(columnId) {
|
|
1938
1976
|
return this.filters.filter((filter) => filter.columnId === columnId).map((filter) => filter.value);
|
|
@@ -1967,6 +2005,10 @@ class DataTableComponent extends DataSortBase {
|
|
|
1967
2005
|
this.page = page;
|
|
1968
2006
|
this.pageChanged.emit(page);
|
|
1969
2007
|
}
|
|
2008
|
+
resetPage() {
|
|
2009
|
+
this.page = 0;
|
|
2010
|
+
this.pageChanged.emit(this.page);
|
|
2011
|
+
}
|
|
1970
2012
|
fieldIsTruthy(object, key) {
|
|
1971
2013
|
return !!ObjectUtils.resolveFieldData(object, key);
|
|
1972
2014
|
}
|