@onecx/angular-accelerator 4.11.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/README.md +7 -0
- package/assets/i18n/de.json +130 -0
- package/assets/i18n/en.json +130 -0
- package/assets/images/placeholder.png +0 -0
- package/assets/styles.scss +8 -0
- package/esm2020/index.mjs +49 -0
- package/esm2020/lib/angular-accelerator-primeng.module.mjs +83 -0
- package/esm2020/lib/angular-accelerator.module.mjs +209 -0
- package/esm2020/lib/components/column-group-selection/column-group-selection.component.mjs +72 -0
- package/esm2020/lib/components/custom-group-column-selector/custom-group-column-selector.component.mjs +108 -0
- package/esm2020/lib/components/data-layout-selection/data-layout-selection.component.mjs +45 -0
- package/esm2020/lib/components/data-list-grid/data-list-grid.component.mjs +358 -0
- package/esm2020/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.mjs +92 -0
- package/esm2020/lib/components/data-sort-base/data-sort-base.mjs +110 -0
- package/esm2020/lib/components/data-table/data-table.component.mjs +350 -0
- package/esm2020/lib/components/data-view/data-view.component.mjs +355 -0
- package/esm2020/lib/components/diagram/diagram.component.mjs +136 -0
- package/esm2020/lib/components/group-by-count-diagram/group-by-count-diagram.component.mjs +109 -0
- package/esm2020/lib/components/interactive-data-view/interactive-data-view.component.mjs +342 -0
- package/esm2020/lib/components/page-header/page-header.component.mjs +189 -0
- package/esm2020/lib/components/search-config/search-config.component.mjs +34 -0
- package/esm2020/lib/components/search-header/search-header.component.mjs +136 -0
- package/esm2020/lib/directives/if-breakpoint.directive.mjs +39 -0
- package/esm2020/lib/directives/if-permission.directive.mjs +53 -0
- package/esm2020/lib/functions/flatten-object.mjs +20 -0
- package/esm2020/lib/model/breadcrumb-menu-item.model.mjs +2 -0
- package/esm2020/lib/model/column-type.model.mjs +9 -0
- package/esm2020/lib/model/data-action.mjs +2 -0
- package/esm2020/lib/model/data-column-name-id.model.mjs +2 -0
- package/esm2020/lib/model/data-sort-direction.mjs +2 -0
- package/esm2020/lib/model/data-table-column.model.mjs +2 -0
- package/esm2020/lib/model/diagram-column.mjs +2 -0
- package/esm2020/lib/model/diagram-data.mjs +2 -0
- package/esm2020/lib/model/diagram-type.mjs +2 -0
- package/esm2020/lib/model/search-config-info.mjs +2 -0
- package/esm2020/lib/pipes/dynamic.pipe.mjs +58 -0
- package/esm2020/lib/pipes/ocxtimeago.pipe.mjs +15 -0
- package/esm2020/lib/services/breadcrumb.service.mjs +79 -0
- package/esm2020/lib/services/translation-cache.service.mjs +54 -0
- package/esm2020/lib/utils/async-translate-loader.utils.mjs +12 -0
- package/esm2020/lib/utils/caching-translate-loader.utils.mjs +15 -0
- package/esm2020/lib/utils/colorutils.mjs +19 -0
- package/esm2020/lib/utils/create-translate-loader.utils.mjs +23 -0
- package/esm2020/lib/utils/dateutils.mjs +32 -0
- package/esm2020/lib/utils/objectutils.mjs +30 -0
- package/esm2020/lib/utils/ocxtimeagointl.utils.mjs +34 -0
- package/esm2020/lib/utils/primeicon.utils.mjs +2 -0
- package/esm2020/lib/utils/translate.combined.loader.mjs +36 -0
- package/esm2020/onecx-angular-accelerator.mjs +5 -0
- package/esm2020/testing/column-group-selection.harness.mjs +10 -0
- package/esm2020/testing/custom-group-column-selector.harness.mjs +31 -0
- package/esm2020/testing/data-layout-selection.harness.mjs +33 -0
- package/esm2020/testing/data-list-grid.harness.mjs +47 -0
- package/esm2020/testing/data-table.harness.mjs +57 -0
- package/esm2020/testing/data-view.harness.mjs +12 -0
- package/esm2020/testing/default-grid-item.harness.mjs +24 -0
- package/esm2020/testing/default-list-item.harness.mjs +24 -0
- package/esm2020/testing/diagram.harness.mjs +22 -0
- package/esm2020/testing/index.mjs +17 -0
- package/esm2020/testing/interactive-data-view.harness.mjs +19 -0
- package/esm2020/testing/more-actions-menu-button.harness.mjs +35 -0
- package/esm2020/testing/onecx-angular-accelerator-testing.mjs +5 -0
- package/esm2020/testing/page-header.harness.mjs +36 -0
- package/esm2020/testing/search-config.harness.mjs +10 -0
- package/fesm2015/onecx-angular-accelerator-testing.mjs +430 -0
- package/fesm2015/onecx-angular-accelerator-testing.mjs.map +1 -0
- package/fesm2015/onecx-angular-accelerator.mjs +3118 -0
- package/fesm2015/onecx-angular-accelerator.mjs.map +1 -0
- package/fesm2020/onecx-angular-accelerator-testing.mjs +338 -0
- package/fesm2020/onecx-angular-accelerator-testing.mjs.map +1 -0
- package/fesm2020/onecx-angular-accelerator.mjs +3085 -0
- package/fesm2020/onecx-angular-accelerator.mjs.map +1 -0
- package/index.d.ts +38 -0
- package/lib/angular-accelerator-primeng.module.d.ts +16 -0
- package/lib/angular-accelerator.module.d.ts +32 -0
- package/lib/components/column-group-selection/column-group-selection.component.d.ts +28 -0
- package/lib/components/custom-group-column-selector/custom-group-column-selector.component.d.ts +45 -0
- package/lib/components/data-layout-selection/data-layout-selection.component.d.ts +25 -0
- package/lib/components/data-list-grid/data-list-grid.component.d.ts +120 -0
- package/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.d.ts +30 -0
- package/lib/components/data-sort-base/data-sort-base.d.ts +32 -0
- package/lib/components/data-table/data-table.component.d.ts +124 -0
- package/lib/components/data-view/data-view.component.d.ts +112 -0
- package/lib/components/diagram/diagram.component.d.ts +43 -0
- package/lib/components/group-by-count-diagram/group-by-count-diagram.component.d.ts +39 -0
- package/lib/components/interactive-data-view/interactive-data-view.component.d.ts +108 -0
- package/lib/components/page-header/page-header.component.d.ts +90 -0
- package/lib/components/search-config/search-config.component.d.ts +16 -0
- package/lib/components/search-header/search-header.component.d.ts +46 -0
- package/lib/directives/if-breakpoint.directive.d.ts +12 -0
- package/lib/directives/if-permission.directive.d.ts +18 -0
- package/lib/functions/flatten-object.d.ts +14 -0
- package/lib/model/breadcrumb-menu-item.model.d.ts +60 -0
- package/lib/model/column-type.model.d.ts +7 -0
- package/lib/model/data-action.d.ts +9 -0
- package/lib/model/data-column-name-id.model.d.ts +4 -0
- package/lib/model/data-sort-direction.d.ts +5 -0
- package/lib/model/data-table-column.model.d.ts +9 -0
- package/lib/model/diagram-column.d.ts +5 -0
- package/lib/model/diagram-data.d.ts +4 -0
- package/lib/model/diagram-type.d.ts +5 -0
- package/lib/model/search-config-info.d.ts +4 -0
- package/lib/pipes/dynamic.pipe.d.ts +13 -0
- package/lib/pipes/ocxtimeago.pipe.d.ts +6 -0
- package/lib/services/breadcrumb.service.d.ts +20 -0
- package/lib/services/translation-cache.service.d.ts +12 -0
- package/lib/utils/async-translate-loader.utils.d.ts +9 -0
- package/lib/utils/caching-translate-loader.utils.d.ts +13 -0
- package/lib/utils/colorutils.d.ts +12 -0
- package/lib/utils/create-translate-loader.utils.d.ts +5 -0
- package/lib/utils/dateutils.d.ts +9 -0
- package/lib/utils/objectutils.d.ts +4 -0
- package/lib/utils/ocxtimeagointl.utils.d.ts +9 -0
- package/lib/utils/primeicon.utils.d.ts +5 -0
- package/lib/utils/translate.combined.loader.d.ts +9 -0
- package/package.json +55 -0
- package/testing/column-group-selection.harness.d.ts +6 -0
- package/testing/custom-group-column-selector.harness.d.ts +14 -0
- package/testing/data-layout-selection.harness.d.ts +11 -0
- package/testing/data-list-grid.harness.d.ts +15 -0
- package/testing/data-table.harness.d.ts +17 -0
- package/testing/data-view.harness.d.ts +8 -0
- package/testing/default-grid-item.harness.d.ts +11 -0
- package/testing/default-list-item.harness.d.ts +12 -0
- package/testing/diagram.harness.d.ts +10 -0
- package/testing/index.d.ts +16 -0
- package/testing/interactive-data-view.harness.d.ts +15 -0
- package/testing/more-actions-menu-button.harness.d.ts +10 -0
- package/testing/page-header.harness.d.ts +13 -0
- package/testing/search-config.harness.d.ts +6 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { Component, ContentChild, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
3
|
+
import { PrimeIcons } from 'primeng/api';
|
|
4
|
+
import { concat, map, of } from 'rxjs';
|
|
5
|
+
import { AppStateService } from '@onecx/angular-integration-interface';
|
|
6
|
+
import { UserService } from '@onecx/angular-integration-interface';
|
|
7
|
+
import { BreadcrumbService } from '../../services/breadcrumb.service';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../../services/breadcrumb.service";
|
|
10
|
+
import * as i2 from "@ngx-translate/core";
|
|
11
|
+
import * as i3 from "@onecx/angular-integration-interface";
|
|
12
|
+
import * as i4 from "@angular/common";
|
|
13
|
+
import * as i5 from "primeng/button";
|
|
14
|
+
import * as i6 from "primeng/menu";
|
|
15
|
+
import * as i7 from "../../pipes/dynamic.pipe";
|
|
16
|
+
export class PageHeaderComponent {
|
|
17
|
+
get actions() {
|
|
18
|
+
return this._actions;
|
|
19
|
+
}
|
|
20
|
+
set actions(value) {
|
|
21
|
+
this._actions = value;
|
|
22
|
+
this.generateInlineActions();
|
|
23
|
+
this.generateOverflowActions();
|
|
24
|
+
}
|
|
25
|
+
constructor(breadcrumbs, translateService, appStateService, userService) {
|
|
26
|
+
this.translateService = translateService;
|
|
27
|
+
this.appStateService = appStateService;
|
|
28
|
+
this.userService = userService;
|
|
29
|
+
this.loading = false;
|
|
30
|
+
this.figureBackground = true;
|
|
31
|
+
this.showFigure = true;
|
|
32
|
+
this.disableDefaultActions = false;
|
|
33
|
+
this.showBreadcrumbs = true;
|
|
34
|
+
this.manualBreadcrumbs = false;
|
|
35
|
+
this.save = new EventEmitter();
|
|
36
|
+
this.overflowActions = [];
|
|
37
|
+
this.dd = new Date();
|
|
38
|
+
this.breadcrumbs = breadcrumbs;
|
|
39
|
+
this.home$ = concat(of({ menuItem: { icon: PrimeIcons.HOME, routerLink: '/' } }), this.appStateService.currentPortal$.pipe(map((portal) => ({
|
|
40
|
+
menuItem: {
|
|
41
|
+
icon: PrimeIcons.HOME,
|
|
42
|
+
routerLink: portal.baseUrl,
|
|
43
|
+
},
|
|
44
|
+
page: portal.portalName,
|
|
45
|
+
}))));
|
|
46
|
+
}
|
|
47
|
+
ngOnChanges(changes) {
|
|
48
|
+
if (changes['actions']) {
|
|
49
|
+
this.generateInlineActions();
|
|
50
|
+
this.generateOverflowActions();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
ngOnInit() {
|
|
54
|
+
if (!this.manualBreadcrumbs) {
|
|
55
|
+
this.breadcrumbs$ = this.breadcrumbs.generatedItemsSource;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
this.breadcrumbs$ = this.breadcrumbs.itemsHandler;
|
|
59
|
+
}
|
|
60
|
+
this.generateInlineActions();
|
|
61
|
+
this.generateOverflowActions();
|
|
62
|
+
}
|
|
63
|
+
onAction(action) {
|
|
64
|
+
switch (action) {
|
|
65
|
+
case 'save':
|
|
66
|
+
this.save.emit();
|
|
67
|
+
break;
|
|
68
|
+
default:
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Generates a list of actions that should be rendered in an overflow menu
|
|
74
|
+
*/
|
|
75
|
+
generateOverflowActions() {
|
|
76
|
+
if (this.actions) {
|
|
77
|
+
const translationKeys = [
|
|
78
|
+
...this.actions.map((a) => a.labelKey || '').filter((a) => !!a),
|
|
79
|
+
...this.actions.map((a) => a.titleKey || '').filter((a) => !!a),
|
|
80
|
+
];
|
|
81
|
+
const translations$ = translationKeys.length ? this.translateService.get(translationKeys) : of([]);
|
|
82
|
+
translations$.subscribe((translations) => {
|
|
83
|
+
const allowedActions = [];
|
|
84
|
+
if (this.actions) {
|
|
85
|
+
this.actions
|
|
86
|
+
.filter((a) => a.show === 'asOverflow')
|
|
87
|
+
.filter((a) => {
|
|
88
|
+
if (a.conditional) {
|
|
89
|
+
if (a.showCondition)
|
|
90
|
+
return a;
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
else
|
|
94
|
+
return a;
|
|
95
|
+
})
|
|
96
|
+
.forEach((action) => {
|
|
97
|
+
this.checkActionPermission(allowedActions, action);
|
|
98
|
+
});
|
|
99
|
+
this.overflowActions = [
|
|
100
|
+
...allowedActions.map((a) => ({
|
|
101
|
+
label: a.labelKey ? translations[a.labelKey] : a.label,
|
|
102
|
+
icon: a.icon,
|
|
103
|
+
title: (a.titleKey ? translations[a.titleKey] : a.title) || (a.labelKey ? translations[a.labelKey] : a.label),
|
|
104
|
+
command: a.actionCallback,
|
|
105
|
+
disabled: a.disabled,
|
|
106
|
+
})),
|
|
107
|
+
];
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Generates a list of actions that should be rendered as inline buttons
|
|
114
|
+
*/
|
|
115
|
+
generateInlineActions() {
|
|
116
|
+
if (this.actions) {
|
|
117
|
+
// Temp array to hold all inline actions that should be visible to the current user
|
|
118
|
+
const allowedActions = [];
|
|
119
|
+
// Check permissions for all actions that should be rendered 'always'
|
|
120
|
+
this.actions
|
|
121
|
+
.filter((a) => a.show === 'always')
|
|
122
|
+
.filter((a) => {
|
|
123
|
+
if (a.conditional) {
|
|
124
|
+
return a.showCondition ? a : null;
|
|
125
|
+
}
|
|
126
|
+
else
|
|
127
|
+
return a;
|
|
128
|
+
})
|
|
129
|
+
.forEach((action) => {
|
|
130
|
+
this.checkActionPermission(allowedActions, action);
|
|
131
|
+
});
|
|
132
|
+
this.inlineActions = [...allowedActions];
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Adds a given action to a given array if the current user is allowed to see it
|
|
137
|
+
* @param allowedActions Array that the action should be added to if the current user is allowed to see it
|
|
138
|
+
* @param action Action for which a permission check should be executed
|
|
139
|
+
*/
|
|
140
|
+
checkActionPermission(allowedActions, action) {
|
|
141
|
+
if (action.permission) {
|
|
142
|
+
if (this.userService.hasPermission(action.permission)) {
|
|
143
|
+
// Push action to allowed array if user has sufficient permissions
|
|
144
|
+
allowedActions.push(action);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
// Push action to allowed array if no permission was specified
|
|
149
|
+
allowedActions.push(action);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
PageHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PageHeaderComponent, deps: [{ token: i1.BreadcrumbService }, { token: i2.TranslateService }, { token: i3.AppStateService }, { token: i3.UserService }], target: i0.ɵɵFactoryTarget.Component });
|
|
154
|
+
PageHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PageHeaderComponent, selector: "ocx-page-header", inputs: { header: "header", loading: "loading", figureBackground: "figureBackground", showFigure: "showFigure", figureImage: "figureImage", disableDefaultActions: "disableDefaultActions", subheader: "subheader", actions: "actions", objectDetails: "objectDetails", showBreadcrumbs: "showBreadcrumbs", manualBreadcrumbs: "manualBreadcrumbs" }, outputs: { save: "save" }, queries: [{ propertyName: "additionalToolbarContent", first: true, predicate: ["additionalToolbarContent"], descendants: true }, { propertyName: "additionalToolbarContentLeft", first: true, predicate: ["additionalToolbarContentLeft"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"onecx-page-header\" name=\"ocx-page-header-wrapper\">\n <ng-container *ngIf=\"showBreadcrumbs\">\n <p-breadcrumb\n [model]=\"items\"\n *ngIf=\"breadcrumbs$ | async as items\"\n [home]=\"(home$ | async)?.menuItem ?? {}\"\n [homeAriaLabel]=\"(home$ | async)?.page ? ('OCX_PAGE_HEADER.HOME_ARIA_LABEL' | translate: { page: (home$ | async)?.page}) : ('OCX_PAGE_HEADER.HOME_DEFAULT_ARIA_LABEL' | translate)\"\n [attr.manual]=\"manualBreadcrumbs\"\n ></p-breadcrumb>\n </ng-container>\n <div class=\"title-bar flex flex-row md:justify-content-between p-2 md:p-3\">\n <div class=\"title-wrap\">\n <div class=\"figure flex h-2rem w-2rem md:h-3rem md:w-3rem\" *ngIf=\"showFigure\">\n <div #previewImage class=\"figure-image absolute top-0 left-0 right-0 bottom-0\">\n <ng-content select=\"[figureImage]\"></ng-content>\n <img *ngIf=\"figureImage\" [src]=\"figureImage\" alt=\"Figure image\" class=\"w-full\" />\n </div>\n <div class=\"colorblob flex-1 border-round\" *ngIf=\"previewImage.children.length === 0\"></div>\n </div>\n <ng-template #skeletonBar>\n <div class=\"header justify-content-evenly\">\n <p-skeleton width=\"10rem\"></p-skeleton>\n <p-skeleton width=\"10rem\"></p-skeleton>\n </div>\n </ng-template>\n <div class=\"header\" *ngIf=\"!loading; else skeletonBar\">\n <h1 *ngIf=\"!!header\">{{ header }}</h1>\n <h2 *ngIf=\"!!subheader\">{{ subheader }}</h2>\n </div>\n </div>\n <div class=\"action-items-wrap mt-2 md:mt-0\">\n <ng-container *ngIf=\"additionalToolbarContentLeft\" [ngTemplateOutlet]=\"additionalToolbarContentLeft\"> </ng-container>\n\n <ng-container *ngIf=\"!disableDefaultActions\"> </ng-container>\n <ng-template #skeletonActions>\n <div class=\"flex\">\n <p-skeleton width=\"5rem\" height=\"2rem\" styleClass=\"mr-2\"></p-skeleton>\n <p-skeleton width=\"2rem\" height=\"2rem\" styleClass=\"mb-2\"></p-skeleton>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!loading; else skeletonActions\">\n <div *ngIf=\"inlineActions && inlineActions.length > 0\" class=\"toolbar flex flex-wrap gap-1 sm:gap-2\">\n <ng-container *ngFor=\"let action of inlineActions\">\n <p-button\n id=\"{{ action.id }}\"\n [icon]=\"action.icon ?? ''\"\n type=\"button\"\n class=\"action-button\"\n [label]=\"action.labelKey ? (action.labelKey | translate) : action.label\"\n (onClick)=\"action.actionCallback()\"\n [title]=\"(action.titleKey ? (action.titleKey | translate) : action.title) || (action.labelKey ? (action.labelKey | translate) : action.label)\"\n [disabled]=\"action.disabled ? action.disabled : false\"\n [attr.name]=\"action.icon ? 'ocx-page-header-inline-action-icon-button' : 'ocx-page-header-inline-action-button'\"\n [ariaLabel]=\"(action.titleKey ? (action.titleKey | translate) : action.title) || (action.labelKey ? (action.labelKey | translate) : action.label)\"\n ></p-button>\n </ng-container>\n </div>\n <ng-content select=\"[toolbarItems]\"></ng-content>\n <ng-container>\n <div *ngIf=\"overflowActions.length !== 0\">\n <button\n id=\"pageHeaderMenuButton\"\n type=\"button\"\n pButton\n icon=\"pi pi-ellipsis-v\"\n title=\"{{ 'OCX_PAGE_HEADER.MORE_ACTIONS' | translate }}\"\n class=\"more-actions-menu-button action-button ml-2\"\n (click)=\"menu.toggle($event)\"\n name=\"ocx-page-header-overflow-action-button\"\n [ariaLabel]=\"('OCX_PAGE_HEADER.MORE_ACTIONS' | translate)\"\n ></button>\n <p-menu #menu [popup]=\"true\" [model]=\"overflowActions\" appendTo=\"body\"></p-menu>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"additionalToolbarContent\" [ngTemplateOutlet]=\"additionalToolbarContent\"> </ng-container>\n </div>\n </div>\n\n <div\n class=\"object-panel flex-column md:flex-row\"\n [class.justify-content-evenly]=\"objectDetails\"\n [class.justify-content-start]=\"!objectDetails\"\n >\n <ng-container *ngIf=\"objectDetails\">\n <div\n class=\"object-info flex flex-row md:flex-column align-items-baseline md:align-items-center justify-content-between\"\n *ngFor=\"let item of objectDetails\"\n >\n <label class=\"flex font-medium text-600\" name=\"object-detail-label\">{{ item.label | dynamicPipe:item.labelPipe }}</label>\n <span\n *ngIf=\"item.icon || item.value\"\n class=\"flex text-900 mt-2\"\n [ngClass]=\"item.icon ? 'gap-1 align-items-center' : null\"\n [title]=\"item.tooltip || ''\"\n name=\"object-detail-value\"\n >\n <i *ngIf=\"item.icon\" class=\"{{item.icon}}\" name=\"object-detail-icon\"></i>\n {{ item.value | dynamicPipe:item.valuePipe:item.valuePipeArgs}}</span\n >\n </div>\n </ng-container>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host(.p-button-label){font-weight:400}:host ::ng-deep .action-button{padding:.5rem;font-weight:400}.onecx-page-header{display:flex;flex-flow:column;border-radius:.25rem;overflow:hidden;background:#fff;box-shadow:0 2px 2px #0000001a;border:1px solid #cdd0d3}.onecx-page-header .title-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;background-color:#f8f9fa;border-top-right-radius:inherit;border-top-left-radius:inherit}.onecx-page-header .title-bar .figure{width:3rem;height:3rem;margin-right:.5rem;position:relative}.onecx-page-header .title-bar .figure .figure-image img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.onecx-page-header .title-bar .figure .colorblob{background-color:var(--primary-color);position:absolute;inset:0}.onecx-page-header .title-bar .title-wrap{display:flex;flex-flow:row;align-items:center;gap:.25rem}.onecx-page-header .title-bar .title-wrap .header{display:flex;align-items:flex-start;justify-content:center;flex-direction:column}.onecx-page-header .title-bar .title-wrap h1{font-size:1em;font-weight:700;margin:0;padding:0}.onecx-page-header .title-bar .title-wrap h2{font-size:1em;font-weight:400;margin:0;padding:0}.onecx-page-header .title-bar .action-items-wrap{display:flex;height:-moz-fit-content;height:fit-content;gap:.5rem;align-items:center;justify-content:space-between}.onecx-page-header .title-bar .action-items-wrap button{padding:.5rem}.onecx-page-header .object-panel{border-top:1px solid #cdd0d3;padding:1rem;display:flex}.onecx-page-header .object-panel:empty{display:none}.badge-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.scale{transform:scale(2)}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i5.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i6.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.DynamicPipe, name: "dynamicPipe" }], encapsulation: i0.ViewEncapsulation.None });
|
|
155
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PageHeaderComponent, decorators: [{
|
|
156
|
+
type: Component,
|
|
157
|
+
args: [{ selector: 'ocx-page-header', encapsulation: ViewEncapsulation.None, template: "<div class=\"onecx-page-header\" name=\"ocx-page-header-wrapper\">\n <ng-container *ngIf=\"showBreadcrumbs\">\n <p-breadcrumb\n [model]=\"items\"\n *ngIf=\"breadcrumbs$ | async as items\"\n [home]=\"(home$ | async)?.menuItem ?? {}\"\n [homeAriaLabel]=\"(home$ | async)?.page ? ('OCX_PAGE_HEADER.HOME_ARIA_LABEL' | translate: { page: (home$ | async)?.page}) : ('OCX_PAGE_HEADER.HOME_DEFAULT_ARIA_LABEL' | translate)\"\n [attr.manual]=\"manualBreadcrumbs\"\n ></p-breadcrumb>\n </ng-container>\n <div class=\"title-bar flex flex-row md:justify-content-between p-2 md:p-3\">\n <div class=\"title-wrap\">\n <div class=\"figure flex h-2rem w-2rem md:h-3rem md:w-3rem\" *ngIf=\"showFigure\">\n <div #previewImage class=\"figure-image absolute top-0 left-0 right-0 bottom-0\">\n <ng-content select=\"[figureImage]\"></ng-content>\n <img *ngIf=\"figureImage\" [src]=\"figureImage\" alt=\"Figure image\" class=\"w-full\" />\n </div>\n <div class=\"colorblob flex-1 border-round\" *ngIf=\"previewImage.children.length === 0\"></div>\n </div>\n <ng-template #skeletonBar>\n <div class=\"header justify-content-evenly\">\n <p-skeleton width=\"10rem\"></p-skeleton>\n <p-skeleton width=\"10rem\"></p-skeleton>\n </div>\n </ng-template>\n <div class=\"header\" *ngIf=\"!loading; else skeletonBar\">\n <h1 *ngIf=\"!!header\">{{ header }}</h1>\n <h2 *ngIf=\"!!subheader\">{{ subheader }}</h2>\n </div>\n </div>\n <div class=\"action-items-wrap mt-2 md:mt-0\">\n <ng-container *ngIf=\"additionalToolbarContentLeft\" [ngTemplateOutlet]=\"additionalToolbarContentLeft\"> </ng-container>\n\n <ng-container *ngIf=\"!disableDefaultActions\"> </ng-container>\n <ng-template #skeletonActions>\n <div class=\"flex\">\n <p-skeleton width=\"5rem\" height=\"2rem\" styleClass=\"mr-2\"></p-skeleton>\n <p-skeleton width=\"2rem\" height=\"2rem\" styleClass=\"mb-2\"></p-skeleton>\n </div>\n </ng-template>\n <ng-container *ngIf=\"!loading; else skeletonActions\">\n <div *ngIf=\"inlineActions && inlineActions.length > 0\" class=\"toolbar flex flex-wrap gap-1 sm:gap-2\">\n <ng-container *ngFor=\"let action of inlineActions\">\n <p-button\n id=\"{{ action.id }}\"\n [icon]=\"action.icon ?? ''\"\n type=\"button\"\n class=\"action-button\"\n [label]=\"action.labelKey ? (action.labelKey | translate) : action.label\"\n (onClick)=\"action.actionCallback()\"\n [title]=\"(action.titleKey ? (action.titleKey | translate) : action.title) || (action.labelKey ? (action.labelKey | translate) : action.label)\"\n [disabled]=\"action.disabled ? action.disabled : false\"\n [attr.name]=\"action.icon ? 'ocx-page-header-inline-action-icon-button' : 'ocx-page-header-inline-action-button'\"\n [ariaLabel]=\"(action.titleKey ? (action.titleKey | translate) : action.title) || (action.labelKey ? (action.labelKey | translate) : action.label)\"\n ></p-button>\n </ng-container>\n </div>\n <ng-content select=\"[toolbarItems]\"></ng-content>\n <ng-container>\n <div *ngIf=\"overflowActions.length !== 0\">\n <button\n id=\"pageHeaderMenuButton\"\n type=\"button\"\n pButton\n icon=\"pi pi-ellipsis-v\"\n title=\"{{ 'OCX_PAGE_HEADER.MORE_ACTIONS' | translate }}\"\n class=\"more-actions-menu-button action-button ml-2\"\n (click)=\"menu.toggle($event)\"\n name=\"ocx-page-header-overflow-action-button\"\n [ariaLabel]=\"('OCX_PAGE_HEADER.MORE_ACTIONS' | translate)\"\n ></button>\n <p-menu #menu [popup]=\"true\" [model]=\"overflowActions\" appendTo=\"body\"></p-menu>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"additionalToolbarContent\" [ngTemplateOutlet]=\"additionalToolbarContent\"> </ng-container>\n </div>\n </div>\n\n <div\n class=\"object-panel flex-column md:flex-row\"\n [class.justify-content-evenly]=\"objectDetails\"\n [class.justify-content-start]=\"!objectDetails\"\n >\n <ng-container *ngIf=\"objectDetails\">\n <div\n class=\"object-info flex flex-row md:flex-column align-items-baseline md:align-items-center justify-content-between\"\n *ngFor=\"let item of objectDetails\"\n >\n <label class=\"flex font-medium text-600\" name=\"object-detail-label\">{{ item.label | dynamicPipe:item.labelPipe }}</label>\n <span\n *ngIf=\"item.icon || item.value\"\n class=\"flex text-900 mt-2\"\n [ngClass]=\"item.icon ? 'gap-1 align-items-center' : null\"\n [title]=\"item.tooltip || ''\"\n name=\"object-detail-value\"\n >\n <i *ngIf=\"item.icon\" class=\"{{item.icon}}\" name=\"object-detail-icon\"></i>\n {{ item.value | dynamicPipe:item.valuePipe:item.valuePipeArgs}}</span\n >\n </div>\n </ng-container>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host(.p-button-label){font-weight:400}:host ::ng-deep .action-button{padding:.5rem;font-weight:400}.onecx-page-header{display:flex;flex-flow:column;border-radius:.25rem;overflow:hidden;background:#fff;box-shadow:0 2px 2px #0000001a;border:1px solid #cdd0d3}.onecx-page-header .title-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;background-color:#f8f9fa;border-top-right-radius:inherit;border-top-left-radius:inherit}.onecx-page-header .title-bar .figure{width:3rem;height:3rem;margin-right:.5rem;position:relative}.onecx-page-header .title-bar .figure .figure-image img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.onecx-page-header .title-bar .figure .colorblob{background-color:var(--primary-color);position:absolute;inset:0}.onecx-page-header .title-bar .title-wrap{display:flex;flex-flow:row;align-items:center;gap:.25rem}.onecx-page-header .title-bar .title-wrap .header{display:flex;align-items:flex-start;justify-content:center;flex-direction:column}.onecx-page-header .title-bar .title-wrap h1{font-size:1em;font-weight:700;margin:0;padding:0}.onecx-page-header .title-bar .title-wrap h2{font-size:1em;font-weight:400;margin:0;padding:0}.onecx-page-header .title-bar .action-items-wrap{display:flex;height:-moz-fit-content;height:fit-content;gap:.5rem;align-items:center;justify-content:space-between}.onecx-page-header .title-bar .action-items-wrap button{padding:.5rem}.onecx-page-header .object-panel{border-top:1px solid #cdd0d3;padding:1rem;display:flex}.onecx-page-header .object-panel:empty{display:none}.badge-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.scale{transform:scale(2)}\n"] }]
|
|
158
|
+
}], ctorParameters: function () { return [{ type: i1.BreadcrumbService }, { type: i2.TranslateService }, { type: i3.AppStateService }, { type: i3.UserService }]; }, propDecorators: { header: [{
|
|
159
|
+
type: Input
|
|
160
|
+
}], loading: [{
|
|
161
|
+
type: Input
|
|
162
|
+
}], figureBackground: [{
|
|
163
|
+
type: Input
|
|
164
|
+
}], showFigure: [{
|
|
165
|
+
type: Input
|
|
166
|
+
}], figureImage: [{
|
|
167
|
+
type: Input
|
|
168
|
+
}], disableDefaultActions: [{
|
|
169
|
+
type: Input
|
|
170
|
+
}], subheader: [{
|
|
171
|
+
type: Input
|
|
172
|
+
}], actions: [{
|
|
173
|
+
type: Input
|
|
174
|
+
}], objectDetails: [{
|
|
175
|
+
type: Input
|
|
176
|
+
}], showBreadcrumbs: [{
|
|
177
|
+
type: Input
|
|
178
|
+
}], manualBreadcrumbs: [{
|
|
179
|
+
type: Input
|
|
180
|
+
}], save: [{
|
|
181
|
+
type: Output
|
|
182
|
+
}], additionalToolbarContent: [{
|
|
183
|
+
type: ContentChild,
|
|
184
|
+
args: ['additionalToolbarContent']
|
|
185
|
+
}], additionalToolbarContentLeft: [{
|
|
186
|
+
type: ContentChild,
|
|
187
|
+
args: ['additionalToolbarContentLeft']
|
|
188
|
+
}] } });
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvY29tcG9uZW50cy9wYWdlLWhlYWRlci9wYWdlLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3BhZ2UtaGVhZGVyL3BhZ2UtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUlOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQVksVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFBOzs7Ozs7Ozs7QUFnRHJFLE1BQU0sT0FBTyxtQkFBbUI7SUF3QjlCLElBQ0ksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQTtJQUN0QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSztRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ3JCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO1FBQzVCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFBO0lBQ2hD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QUNyQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDckQsa0VBQWtFO2dCQUNsRSxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO2FBQzVCO1NBQ0Y7YUFBTTtZQUNMLDhEQUE4RDtZQUM5RCxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQzVCO0lBQ0gsQ0FBQzs7aUhBdkxVLG1CQUFtQjtxR0FBbkIsbUJBQW1CLDhyQkNsRWhDLHVxS0F5R0E7NEZEdkNhLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxpQkFBaUIsaUJBR1osaUJBQWlCLENBQUMsSUFBSTsrTEFJOUIsTUFBTTtzQkFEWixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUlOLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBS0YsT0FBTztzQkFEVixLQUFLO2dCQVdOLGFBQWE7c0JBRFosS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLElBQUk7c0JBREgsTUFBTTtnQkFJUCx3QkFBd0I7c0JBRHZCLFlBQVk7dUJBQUMsMEJBQTBCO2dCQUl4Qyw0QkFBNEI7c0JBRDNCLFlBQVk7dUJBQUMsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgTWVudUl0ZW0sIFByaW1lSWNvbnMgfSBmcm9tICdwcmltZW5nL2FwaSdcbmltcG9ydCB7IGNvbmNhdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICdAb25lY3gvYW5ndWxhci1pbnRlZ3JhdGlvbi1pbnRlcmZhY2UnXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJ0BvbmVjeC9hbmd1bGFyLWludGVncmF0aW9uLWludGVyZmFjZSdcbmltcG9ydCB7IEJyZWFkY3J1bWJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYnJlYWRjcnVtYi5zZXJ2aWNlJ1xuaW1wb3J0IHsgUHJpbWVJY29uIH0gZnJvbSAnLi4vLi4vdXRpbHMvcHJpbWVpY29uLnV0aWxzJ1xuXG4vKipcbiAqIEFjdGlvbiBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbiB7XG4gIGlkPzogc3RyaW5nXG4gIGxhYmVsPzogc3RyaW5nXG4gIGxhYmVsS2V5Pzogc3RyaW5nXG4gIGljb24/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFBlcm1pc3Npb24gZm9yIHRoaXMgYWN0aW9uLiBJZiB0aGUgY3VycmVudCB1c2VyIGRvZXMgbm90IGhhdmUgdGhpcyBwZXJtaXNzaW9uLCB0aGUgYWN0aW9uIHdpbGwgbm90IGJlIHNob3duLlxuICAgKi9cbiAgcGVybWlzc2lvbj86IHN0cmluZ1xuICB0aXRsZT86IHN0cmluZ1xuICB0aXRsZUtleT86IHN0cmluZ1xuICBidG5DbGFzcz86IHN0cmluZ1xuICBhY3Rpb25DYWxsYmFjaygpOiB2b2lkXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBzaG93PzogJ2Fsd2F5cycgfCAnYXNPdmVyZmxvdydcbiAgY29uZGl0aW9uYWw/OiBib29sZWFuXG4gIC8vIE5vdGU6IFRoaXMgY3VycmVudGx5IGRvZXNuJ3Qgd29yayB3aXRoIGR5bmFtaWMgdmFsdWVzLCBzaW5jZSBhIHBhc3NlZCBpbiBBY3Rpb24gaXMganVzdCBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIG9iamVjdC5cbiAgLy8gQXMgYSB3b3JrYXJvdW5kLCB5b3UgY2FuIG1hbnVhbGx5IHVwZGF0ZS9yZXBsYWNlIHRoZSBwYXNzZWQgaW4gQWN0aW9uIGlmIHlvdSB3aXNoIHRvIHVwZGF0ZSBhIHNob3dDb25kaXRpb25cbiAgc2hvd0NvbmRpdGlvbj86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3REZXRhaWxJdGVtIHtcbiAgbGFiZWw6IHN0cmluZ1xuICB2YWx1ZT86IHN0cmluZ1xuICB0b29sdGlwPzogc3RyaW5nXG4gIGljb24/OiBQcmltZUljb25cbiAgbGFiZWxQaXBlPzogVHlwZTxhbnk+XG4gIHZhbHVlUGlwZT86IFR5cGU8YW55PlxuICB2YWx1ZVBpcGVBcmdzPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG9tZUl0ZW0ge1xuICBtZW51SXRlbTogTWVudUl0ZW1cbiAgcGFnZT86IHN0cmluZ1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvY3gtcGFnZS1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVhZGVyOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBASW5wdXQoKVxuICBsb2FkaW5nID0gZmFsc2VcblxuICBASW5wdXQoKVxuICBmaWd1cmVCYWNrZ3JvdW5kID0gdHJ1ZVxuXG4gIEBJbnB1dCgpXG4gIHNob3dGaWd1cmUgPSB0cnVlXG5cbiAgLy9pbWFnZSBmb3QgcHJldmlldyBpbiB0b3AtaGVhZGVyIGxlZnQgc2lkZVxuICBASW5wdXQoKVxuICBmaWd1cmVJbWFnZTogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KClcbiAgZGlzYWJsZURlZmF1bHRBY3Rpb25zID0gZmFsc2VcblxuICBASW5wdXQoKVxuICBzdWJoZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIF9hY3Rpb25zOiBBY3Rpb25bXSB8IHVuZGVmaW5lZFxuICBASW5wdXQoKVxuICBnZXQgYWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9uc1xuICB9XG4gIHNldCBhY3Rpb25zKHZhbHVlKSB7XG4gICAgdGhpcy5fYWN0aW9ucyA9IHZhbHVlXG4gICAgdGhpcy5nZW5lcmF0ZUlubGluZUFjdGlvbnMoKVxuICAgIHRoaXMuZ2VuZXJhdGVPdmVyZmxvd0FjdGlvbnMoKVxuICB9XG5cbiAgQElucHV0KClcbiAgb2JqZWN0RGV0YWlsczogT2JqZWN0RGV0YWlsSXRlbVtdIHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KClcbiAgc2hvd0JyZWFkY3J1bWJzID0gdHJ1ZVxuXG4gIEBJbnB1dCgpXG4gIG1hbnVhbEJyZWFkY3J1bWJzID0gZmFsc2VcblxuICBAT3V0cHV0KClcbiAgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIEBDb250ZW50Q2hpbGQoJ2FkZGl0aW9uYWxUb29sYmFyQ29udGVudCcpXG4gIGFkZGl0aW9uYWxUb29sYmFyQ29udGVudDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuXG4gIEBDb250ZW50Q2hpbGQoJ2FkZGl0aW9uYWxUb29sYmFyQ29udGVudExlZnQnKVxuICBhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0OiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG5cbiAgb3ZlcmZsb3dBY3Rpb25zOiBNZW51SXRlbVtdID0gW11cbiAgaW5saW5lQWN0aW9uczogQWN0aW9uW10gfCB1bmRlZmluZWRcbiAgZGQgPSBuZXcgRGF0ZSgpXG4gIGJyZWFkY3J1bWJzJCE6IE9ic2VydmFibGU8TWVudUl0ZW1bXT5cblxuICBob21lJCE6IE9ic2VydmFibGU8SG9tZUl0ZW0+XG5cbiAgcHJvdGVjdGVkIGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iU2VydmljZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZVNlcnZpY2U6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZVxuICApIHtcbiAgICB0aGlzLmJyZWFkY3J1bWJzID0gYnJlYWRjcnVtYnNcbiAgICB0aGlzLmhvbWUkID0gY29uY2F0KFxuICAgICAgb2YoeyBtZW51SXRlbTogeyBpY29uOiBQcmltZUljb25zLkhPTUUsIHJvdXRlckxpbms6ICcvJyB9IH0pLFxuICAgICAgdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFBvcnRhbCQucGlwZShcbiAgICAgICAgbWFwKChwb3J0YWwpID0+ICh7XG4gICAgICAgICAgbWVudUl0ZW06IHtcbiAgICAgICAgICAgIGljb246IFByaW1lSWNvbnMuSE9NRSxcbiAgICAgICAgICAgIHJvdXRlckxpbms6IHBvcnRhbC5iYXNlVXJsLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFnZTogcG9ydGFsLnBvcnRhbE5hbWUsXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgIClcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2FjdGlvbnMnXSkge1xuICAgICAgdGhpcy5nZW5lcmF0ZUlubGluZUFjdGlvbnMoKVxuICAgICAgdGhpcy5nZW5lcmF0ZU92ZXJmbG93QWN0aW9ucygpXG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm1hbnVhbEJyZWFkY3J1bWJzKSB7XG4gICAgICB0aGlzLmJyZWFkY3J1bWJzJCA9IHRoaXMuYnJlYWRjcnVtYnMuZ2VuZXJhdGVkSXRlbXNTb3VyY2VcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5icmVhZGNydW1icyQgPSB0aGlzLmJyZWFkY3J1bWJzLml0ZW1zSGFuZGxlclxuICAgIH1cbiAgICB0aGlzLmdlbmVyYXRlSW5saW5lQWN0aW9ucygpXG4gICAgdGhpcy5nZW5lcmF0ZU92ZXJmbG93QWN0aW9ucygpXG4gIH1cblxuICBvbkFjdGlvbihhY3Rpb246IHN0cmluZykge1xuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlICdzYXZlJzpcbiAgICAgICAgdGhpcy5zYXZlLmVtaXQoKVxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgbGlzdCBvZiBhY3Rpb25zIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkIGluIGFuIG92ZXJmbG93IG1lbnVcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVPdmVyZmxvd0FjdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuYWN0aW9ucykge1xuICAgICAgY29uc3QgdHJhbnNsYXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgLi4udGhpcy5hY3Rpb25zLm1hcCgoYSkgPT4gYS5sYWJlbEtleSB8fCAnJykuZmlsdGVyKChhKSA9PiAhIWEpLFxuICAgICAgICAuLi50aGlzLmFjdGlvbnMubWFwKChhKSA9PiBhLnRpdGxlS2V5IHx8ICcnKS5maWx0ZXIoKGEpID0+ICEhYSksXG4gICAgICBdXG4gICAgICBjb25zdCB0cmFuc2xhdGlvbnMkID0gdHJhbnNsYXRpb25LZXlzLmxlbmd0aCA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQodHJhbnNsYXRpb25LZXlzKSA6IG9mKFtdKVxuICAgICAgdHJhbnNsYXRpb25zJC5zdWJzY3JpYmUoKHRyYW5zbGF0aW9ucykgPT4ge1xuICAgICAgICBjb25zdCBhbGxvd2VkQWN0aW9uczogQWN0aW9uW10gPSBbXVxuICAgICAgICBpZiAodGhpcy5hY3Rpb25zKSB7XG4gICAgICAgICAgdGhpcy5hY3Rpb25zXG4gICAgICAgICAgICAuZmlsdGVyKChhKSA9PiBhLnNob3cgPT09ICdhc092ZXJmbG93JylcbiAgICAgICAgICAgIC5maWx0ZXIoKGEpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGEuY29uZGl0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICBpZiAoYS5zaG93Q29uZGl0aW9uKSByZXR1cm4gYVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgIH0gZWxzZSByZXR1cm4gYVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5jaGVja0FjdGlvblBlcm1pc3Npb24oYWxsb3dlZEFjdGlvbnMsIGFjdGlvbilcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgdGhpcy5vdmVyZmxvd0FjdGlvbnMgPSBbXG4gICAgICAgICAgICAuLi5hbGxvd2VkQWN0aW9ucy5tYXA8TWVudUl0ZW0+KChhKSA9PiAoe1xuICAgICAgICAgICAgICBsYWJlbDogYS5sYWJlbEtleSA/IHRyYW5zbGF0aW9uc1thLmxhYmVsS2V5XSA6IGEubGFiZWwsXG4gICAgICAgICAgICAgIGljb246IGEuaWNvbixcbiAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgKGEudGl0bGVLZXkgPyB0cmFuc2xhdGlvbnNbYS50aXRsZUtleV0gOiBhLnRpdGxlKSB8fCAoYS5sYWJlbEtleSA/IHRyYW5zbGF0aW9uc1thLmxhYmVsS2V5XSA6IGEubGFiZWwpLFxuICAgICAgICAgICAgICBjb21tYW5kOiBhLmFjdGlvbkNhbGxiYWNrLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogYS5kaXNhYmxlZCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIGxpc3Qgb2YgYWN0aW9ucyB0aGF0IHNob3VsZCBiZSByZW5kZXJlZCBhcyBpbmxpbmUgYnV0dG9uc1xuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUlubGluZUFjdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuYWN0aW9ucykge1xuICAgICAgLy8gVGVtcCBhcnJheSB0byBob2xkIGFsbCBpbmxpbmUgYWN0aW9ucyB0aGF0IHNob3VsZCBiZSB2aXNpYmxlIHRvIHRoZSBjdXJyZW50IHVzZXJcbiAgICAgIGNvbnN0IGFsbG93ZWRBY3Rpb25zOiBBY3Rpb25bXSA9IFtdXG4gICAgICAvLyBDaGVjayBwZXJtaXNzaW9ucyBmb3IgYWxsIGFjdGlvbnMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgJ2Fsd2F5cydcbiAgICAgIHRoaXMuYWN0aW9uc1xuICAgICAgICAuZmlsdGVyKChhKSA9PiBhLnNob3cgPT09ICdhbHdheXMnKVxuICAgICAgICAuZmlsdGVyKChhKSA9PiB7XG4gICAgICAgICAgaWYgKGEuY29uZGl0aW9uYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBhLnNob3dDb25kaXRpb24gPyBhIDogbnVsbFxuICAgICAgICAgIH0gZWxzZSByZXR1cm4gYVxuICAgICAgICB9KVxuICAgICAgICAuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgdGhpcy5jaGVja0FjdGlvblBlcm1pc3Npb24oYWxsb3dlZEFjdGlvbnMsIGFjdGlvbilcbiAgICAgICAgfSlcbiAgICAgIHRoaXMuaW5saW5lQWN0aW9ucyA9IFsuLi5hbGxvd2VkQWN0aW9uc11cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEFkZHMgYSBnaXZlbiBhY3Rpb24gdG8gYSBnaXZlbiBhcnJheSBpZiB0aGUgY3VycmVudCB1c2VyIGlzIGFsbG93ZWQgdG8gc2VlIGl0XG4gICAqIEBwYXJhbSBhbGxvd2VkQWN0aW9ucyBBcnJheSB0aGF0IHRoZSBhY3Rpb24gc2hvdWxkIGJlIGFkZGVkIHRvIGlmIHRoZSBjdXJyZW50IHVzZXIgaXMgYWxsb3dlZCB0byBzZWUgaXRcbiAgICogQHBhcmFtIGFjdGlvbiBBY3Rpb24gZm9yIHdoaWNoIGEgcGVybWlzc2lvbiBjaGVjayBzaG91bGQgYmUgZXhlY3V0ZWRcbiAgICovXG4gIHByaXZhdGUgY2hlY2tBY3Rpb25QZXJtaXNzaW9uKGFsbG93ZWRBY3Rpb25zOiBBY3Rpb25bXSwgYWN0aW9uOiBBY3Rpb24pIHtcbiAgICBpZiAoYWN0aW9uLnBlcm1pc3Npb24pIHtcbiAgICAgIGlmICh0aGlzLnVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24oYWN0aW9uLnBlcm1pc3Npb24pKSB7XG4gICAgICAgIC8vIFB1c2ggYWN0aW9uIHRvIGFsbG93ZWQgYXJyYXkgaWYgdXNlciBoYXMgc3VmZmljaWVudCBwZXJtaXNzaW9uc1xuICAgICAgICBhbGxvd2VkQWN0aW9ucy5wdXNoKGFjdGlvbilcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUHVzaCBhY3Rpb24gdG8gYWxsb3dlZCBhcnJheSBpZiBubyBwZXJtaXNzaW9uIHdhcyBzcGVjaWZpZWRcbiAgICAgIGFsbG93ZWRBY3Rpb25zLnB1c2goYWN0aW9uKVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm9uZWN4LXBhZ2UtaGVhZGVyXCIgbmFtZT1cIm9jeC1wYWdlLWhlYWRlci13cmFwcGVyXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93QnJlYWRjcnVtYnNcIj5cbiAgICA8cC1icmVhZGNydW1iXG4gICAgICBbbW9kZWxdPVwiaXRlbXNcIlxuICAgICAgKm5nSWY9XCJicmVhZGNydW1icyQgfCBhc3luYyAgYXMgaXRlbXNcIlxuICAgICAgW2hvbWVdPVwiKGhvbWUkIHwgYXN5bmMpPy5tZW51SXRlbSA/PyB7fVwiXG4gICAgICBbaG9tZUFyaWFMYWJlbF09XCIoaG9tZSQgfCBhc3luYyk/LnBhZ2UgPyAoJ09DWF9QQUdFX0hFQURFUi5IT01FX0FSSUFfTEFCRUwnIHwgdHJhbnNsYXRlOiB7IHBhZ2U6IChob21lJCB8IGFzeW5jKT8ucGFnZX0pIDogKCdPQ1hfUEFHRV9IRUFERVIuSE9NRV9ERUZBVUxUX0FSSUFfTEFCRUwnIHwgdHJhbnNsYXRlKVwiXG4gICAgICBbYXR0ci5tYW51YWxdPVwibWFudWFsQnJlYWRjcnVtYnNcIlxuICAgID48L3AtYnJlYWRjcnVtYj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJ0aXRsZS1iYXIgZmxleCBmbGV4LXJvdyBtZDpqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwLTIgbWQ6cC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cInRpdGxlLXdyYXBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWd1cmUgZmxleCBoLTJyZW0gdy0ycmVtIG1kOmgtM3JlbSBtZDp3LTNyZW1cIiAqbmdJZj1cInNob3dGaWd1cmVcIj5cbiAgICAgICAgPGRpdiAjcHJldmlld0ltYWdlIGNsYXNzPVwiZmlndXJlLWltYWdlIGFic29sdXRlIHRvcC0wIGxlZnQtMCByaWdodC0wIGJvdHRvbS0wXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZpZ3VyZUltYWdlXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICA8aW1nICpuZ0lmPVwiZmlndXJlSW1hZ2VcIiBbc3JjXT1cImZpZ3VyZUltYWdlXCIgYWx0PVwiRmlndXJlIGltYWdlXCIgY2xhc3M9XCJ3LWZ1bGxcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbG9yYmxvYiBmbGV4LTEgYm9yZGVyLXJvdW5kXCIgKm5nSWY9XCJwcmV2aWV3SW1hZ2UuY2hpbGRyZW4ubGVuZ3RoID09PSAwXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2tlbGV0b25CYXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXIganVzdGlmeS1jb250ZW50LWV2ZW5seVwiPlxuICAgICAgICAgIDxwLXNrZWxldG9uIHdpZHRoPVwiMTByZW1cIj48L3Atc2tlbGV0b24+XG4gICAgICAgICAgPHAtc2tlbGV0b24gd2lkdGg9XCIxMHJlbVwiPjwvcC1za2VsZXRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiICpuZ0lmPVwiIWxvYWRpbmc7IGVsc2Ugc2tlbGV0b25CYXJcIj5cbiAgICAgICAgPGgxICpuZ0lmPVwiISFoZWFkZXJcIj57eyBoZWFkZXIgfX08L2gxPlxuICAgICAgICA8aDIgKm5nSWY9XCIhIXN1YmhlYWRlclwiPnt7IHN1YmhlYWRlciB9fTwvaDI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWl0ZW1zLXdyYXAgbXQtMiBtZDptdC0wXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFkZGl0aW9uYWxUb29sYmFyQ29udGVudExlZnRcIj4gPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGlzYWJsZURlZmF1bHRBY3Rpb25zXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNza2VsZXRvbkFjdGlvbnM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgPHAtc2tlbGV0b24gd2lkdGg9XCI1cmVtXCIgaGVpZ2h0PVwiMnJlbVwiIHN0eWxlQ2xhc3M9XCJtci0yXCI+PC9wLXNrZWxldG9uPlxuICAgICAgICAgIDxwLXNrZWxldG9uIHdpZHRoPVwiMnJlbVwiIGhlaWdodD1cIjJyZW1cIiBzdHlsZUNsYXNzPVwibWItMlwiPjwvcC1za2VsZXRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nOyBlbHNlIHNrZWxldG9uQWN0aW9uc1wiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaW5saW5lQWN0aW9ucyAmJiBpbmxpbmVBY3Rpb25zLmxlbmd0aCA+IDBcIiBjbGFzcz1cInRvb2xiYXIgZmxleCBmbGV4LXdyYXAgZ2FwLTEgc206Z2FwLTJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgaW5saW5lQWN0aW9uc1wiPlxuICAgICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwie3sgYWN0aW9uLmlkIH19XCJcbiAgICAgICAgICAgICAgW2ljb25dPVwiYWN0aW9uLmljb24gPz8gJydcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cImFjdGlvbi5sYWJlbEtleSA/IChhY3Rpb24ubGFiZWxLZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWN0aW9uLmFjdGlvbkNhbGxiYWNrKClcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiKGFjdGlvbi50aXRsZUtleSA/IChhY3Rpb24udGl0bGVLZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLnRpdGxlKSB8fCAoYWN0aW9uLmxhYmVsS2V5ID8gKGFjdGlvbi5sYWJlbEtleSB8IHRyYW5zbGF0ZSkgOiBhY3Rpb24ubGFiZWwpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGlvbi5kaXNhYmxlZCA/IGFjdGlvbi5kaXNhYmxlZCA6IGZhbHNlXCJcbiAgICAgICAgICAgICAgW2F0dHIubmFtZV09XCJhY3Rpb24uaWNvbiA/ICdvY3gtcGFnZS1oZWFkZXItaW5saW5lLWFjdGlvbi1pY29uLWJ1dHRvbicgOiAnb2N4LXBhZ2UtaGVhZGVyLWlubGluZS1hY3Rpb24tYnV0dG9uJ1wiXG4gICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiKGFjdGlvbi50aXRsZUtleSA/IChhY3Rpb24udGl0bGVLZXkgfCB0cmFuc2xhdGUpIDogYWN0aW9uLnRpdGxlKSB8fCAoYWN0aW9uLmxhYmVsS2V5ID8gKGFjdGlvbi5sYWJlbEtleSB8IHRyYW5zbGF0ZSkgOiBhY3Rpb24ubGFiZWwpXCJcbiAgICAgICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Rvb2xiYXJJdGVtc11cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm92ZXJmbG93QWN0aW9ucy5sZW5ndGggIT09IDBcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJwYWdlSGVhZGVyTWVudUJ1dHRvblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS1lbGxpcHNpcy12XCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnT0NYX1BBR0VfSEVBREVSLk1PUkVfQUNUSU9OUycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1vcmUtYWN0aW9ucy1tZW51LWJ1dHRvbiBhY3Rpb24tYnV0dG9uIG1sLTJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwibWVudS50b2dnbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJvY3gtcGFnZS1oZWFkZXItb3ZlcmZsb3ctYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiKCdPQ1hfUEFHRV9IRUFERVIuTU9SRV9BQ1RJT05TJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPHAtbWVudSAjbWVudSBbcG9wdXBdPVwidHJ1ZVwiIFttb2RlbF09XCJvdmVyZmxvd0FjdGlvbnNcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtbWVudT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRcIj4gPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cIm9iamVjdC1wYW5lbCBmbGV4LWNvbHVtbiBtZDpmbGV4LXJvd1wiXG4gICAgW2NsYXNzLmp1c3RpZnktY29udGVudC1ldmVubHldPVwib2JqZWN0RGV0YWlsc1wiXG4gICAgW2NsYXNzLmp1c3RpZnktY29udGVudC1zdGFydF09XCIhb2JqZWN0RGV0YWlsc1wiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JqZWN0RGV0YWlsc1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm9iamVjdC1pbmZvIGZsZXggZmxleC1yb3cgbWQ6ZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtYmFzZWxpbmUgbWQ6YWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb2JqZWN0RGV0YWlsc1wiXG4gICAgICA+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZsZXggZm9udC1tZWRpdW0gdGV4dC02MDBcIiBuYW1lPVwib2JqZWN0LWRldGFpbC1sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfCBkeW5hbWljUGlwZTppdGVtLmxhYmVsUGlwZSB9fTwvbGFiZWw+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJpdGVtLmljb24gfHwgaXRlbS52YWx1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IHRleHQtOTAwIG10LTJcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uaWNvbiA/ICdnYXAtMSBhbGlnbi1pdGVtcy1jZW50ZXInIDogbnVsbFwiXG4gICAgICAgICAgW3RpdGxlXT1cIml0ZW0udG9vbHRpcCB8fCAnJ1wiXG4gICAgICAgICAgbmFtZT1cIm9iamVjdC1kZXRhaWwtdmFsdWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgKm5nSWY9XCJpdGVtLmljb25cIiBjbGFzcz1cInt7aXRlbS5pY29ufX1cIiBuYW1lPVwib2JqZWN0LWRldGFpbC1pY29uXCI+PC9pPlxuICAgICAgICAgIHt7IGl0ZW0udmFsdWUgfCBkeW5hbWljUGlwZTppdGVtLnZhbHVlUGlwZTppdGVtLnZhbHVlUGlwZUFyZ3N9fTwvc3BhblxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "primeng/dropdown";
|
|
6
|
+
import * as i3 from "@angular/forms";
|
|
7
|
+
import * as i4 from "@ngx-translate/core";
|
|
8
|
+
export class SearchConfigComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.placeholderKey = 'OCX_SEARCH_HEADER.OCX_SEARCH_CONFIG.DROPDOWN_DEFAULT';
|
|
11
|
+
this.selectedSearchConfigChanged = new EventEmitter();
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
this.formGroup = new FormGroup({
|
|
15
|
+
searchConfigForm: new FormControl(null),
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
onSearchConfigChange(event) {
|
|
19
|
+
this.selectedSearchConfigChanged?.emit(event.value);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
SearchConfigComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SearchConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
SearchConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SearchConfigComponent, selector: "ocx-search-config", inputs: { searchConfigs: "searchConfigs", placeholderKey: "placeholderKey" }, outputs: { selectedSearchConfigChanged: "selectedSearchConfigChanged" }, ngImport: i0, template: "<div *ngIf=\"formGroup\">\n <form [formGroup]=\"formGroup\">\n <div *ngIf=\"searchConfigs !== undefined\">\n <div *ngIf=\"searchConfigs.length > 0\">\n <p-dropdown\n id=\"searchConfig\"\n formControlName=\"searchConfigForm\"\n [options]=\"searchConfigs\"\n optionLabel=\"name\"\n [placeholder]=\"placeholderKey | translate\"\n [showClear]=\"true\"\n (onChange)=\"onSearchConfigChange($event)\"\n ></p-dropdown>\n </div>\n </div>\n </form>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "overlayDirection", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SearchConfigComponent, decorators: [{
|
|
25
|
+
type: Component,
|
|
26
|
+
args: [{ selector: 'ocx-search-config', template: "<div *ngIf=\"formGroup\">\n <form [formGroup]=\"formGroup\">\n <div *ngIf=\"searchConfigs !== undefined\">\n <div *ngIf=\"searchConfigs.length > 0\">\n <p-dropdown\n id=\"searchConfig\"\n formControlName=\"searchConfigForm\"\n [options]=\"searchConfigs\"\n optionLabel=\"name\"\n [placeholder]=\"placeholderKey | translate\"\n [showClear]=\"true\"\n (onChange)=\"onSearchConfigChange($event)\"\n ></p-dropdown>\n </div>\n </div>\n </form>\n</div>\n" }]
|
|
27
|
+
}], propDecorators: { searchConfigs: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], placeholderKey: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], selectedSearchConfigChanged: [{
|
|
32
|
+
type: Output
|
|
33
|
+
}] } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1jb25maWcvc2VhcmNoLWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1jb25maWcvc2VhcmNoLWNvbmZpZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7Ozs7OztBQVF2RCxNQUFNLE9BQU8scUJBQXFCO0lBTGxDO1FBU1csbUJBQWMsR0FBRyxzREFBc0QsQ0FBQTtRQUdoRixnQ0FBMkIsR0FBbUMsSUFBSSxZQUFZLEVBQUUsQ0FBQTtLQVlqRjtJQVRDLFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDO1lBQzdCLGdCQUFnQixFQUFFLElBQUksV0FBVyxDQUEwQixJQUFJLENBQUM7U0FDakUsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQWtDO1FBQ3JELElBQUksQ0FBQywyQkFBMkIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3JELENBQUM7O21IQWxCVSxxQkFBcUI7dUdBQXJCLHFCQUFxQixnTkNUbEMsaWlCQWlCQTs0RkRSYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1COzhCQU03QixhQUFhO3NCQURaLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHTiwyQkFBMkI7c0JBRDFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IFNlYXJjaENvbmZpZ0luZm8gfSBmcm9tICcuLi8uLi9tb2RlbC9zZWFyY2gtY29uZmlnLWluZm8nXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29jeC1zZWFyY2gtY29uZmlnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1jb25maWcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtY29uZmlnLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaENvbmZpZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHNlYXJjaENvbmZpZ3M6IFNlYXJjaENvbmZpZ0luZm9bXSB8IFtdIHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KCkgcGxhY2Vob2xkZXJLZXkgPSAnT0NYX1NFQVJDSF9IRUFERVIuT0NYX1NFQVJDSF9DT05GSUcuRFJPUERPV05fREVGQVVMVCdcblxuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRTZWFyY2hDb25maWdDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8U2VhcmNoQ29uZmlnSW5mbz4gPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICBmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZFxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgc2VhcmNoQ29uZmlnRm9ybTogbmV3IEZvcm1Db250cm9sPFNlYXJjaENvbmZpZ0luZm8gfCBudWxsPihudWxsKSxcbiAgICB9KVxuICB9XG5cbiAgb25TZWFyY2hDb25maWdDaGFuZ2UoZXZlbnQ6IHsgdmFsdWU6IFNlYXJjaENvbmZpZ0luZm8gfSkge1xuICAgIHRoaXMuc2VsZWN0ZWRTZWFyY2hDb25maWdDaGFuZ2VkPy5lbWl0KGV2ZW50LnZhbHVlKVxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZm9ybUdyb3VwXCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgPGRpdiAqbmdJZj1cInNlYXJjaENvbmZpZ3MgIT09IHVuZGVmaW5lZFwiPlxuICAgICAgPGRpdiAqbmdJZj1cInNlYXJjaENvbmZpZ3MubGVuZ3RoID4gMFwiPlxuICAgICAgICA8cC1kcm9wZG93blxuICAgICAgICAgIGlkPVwic2VhcmNoQ29uZmlnXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hDb25maWdGb3JtXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJzZWFyY2hDb25maWdzXCJcbiAgICAgICAgICBvcHRpb25MYWJlbD1cIm5hbWVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcktleSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCJcbiAgICAgICAgICAob25DaGFuZ2UpPVwib25TZWFyY2hDb25maWdDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L3AtZHJvcGRvd24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Component, ContentChild, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "primeng/button";
|
|
5
|
+
import * as i3 from "../search-config/search-config.component";
|
|
6
|
+
import * as i4 from "../page-header/page-header.component";
|
|
7
|
+
import * as i5 from "@ngx-translate/core";
|
|
8
|
+
/**
|
|
9
|
+
* To trigger the search when Enter key is pressed inside a search parameter field,
|
|
10
|
+
* an EventListener for keyup enter event is added for HTML elements which have an input.
|
|
11
|
+
* Please add the EventListener yourself manually, if you want to have that functionality for some other elements
|
|
12
|
+
* which do not have an input element.
|
|
13
|
+
*/
|
|
14
|
+
export class SearchHeaderComponent {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.header = '';
|
|
17
|
+
this.viewMode = 'basic';
|
|
18
|
+
this.manualBreadcrumbs = false;
|
|
19
|
+
this._actions = [];
|
|
20
|
+
this.searched = new EventEmitter();
|
|
21
|
+
this.resetted = new EventEmitter();
|
|
22
|
+
this.selectedSearchConfigChanged = new EventEmitter();
|
|
23
|
+
this.viewModeChanged = new EventEmitter();
|
|
24
|
+
this.hasAdvanced = false;
|
|
25
|
+
this.headerActions = [];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated Will be replaced by header
|
|
29
|
+
*/
|
|
30
|
+
get headline() {
|
|
31
|
+
return this.header;
|
|
32
|
+
}
|
|
33
|
+
set headline(value) {
|
|
34
|
+
this.header = value;
|
|
35
|
+
}
|
|
36
|
+
get actions() {
|
|
37
|
+
return this._actions;
|
|
38
|
+
}
|
|
39
|
+
set actions(value) {
|
|
40
|
+
this._actions = value;
|
|
41
|
+
this.updateHeaderActions();
|
|
42
|
+
}
|
|
43
|
+
get _additionalToolbarContent() {
|
|
44
|
+
return this.additionalToolbarContent;
|
|
45
|
+
}
|
|
46
|
+
get _additionalToolbarContentLeft() {
|
|
47
|
+
return this.additionalToolbarContentLeft;
|
|
48
|
+
}
|
|
49
|
+
ngAfterViewInit() {
|
|
50
|
+
this.addKeyUpEventListener();
|
|
51
|
+
}
|
|
52
|
+
toggleViewMode() {
|
|
53
|
+
this.viewMode = this.viewMode === 'basic' ? 'advanced' : 'basic';
|
|
54
|
+
this.viewModeChanged?.emit(this.viewMode);
|
|
55
|
+
this.updateHeaderActions();
|
|
56
|
+
setTimeout(() => this.addKeyUpEventListener());
|
|
57
|
+
}
|
|
58
|
+
onResetClicked() {
|
|
59
|
+
this.resetted.emit();
|
|
60
|
+
}
|
|
61
|
+
onSearchClicked() {
|
|
62
|
+
this.searched.emit();
|
|
63
|
+
}
|
|
64
|
+
updateHeaderActions() {
|
|
65
|
+
const headerActions = [];
|
|
66
|
+
if (this.hasAdvanced) {
|
|
67
|
+
headerActions.push({
|
|
68
|
+
id: 'simpleAdvancedButton',
|
|
69
|
+
labelKey: this.viewMode === 'basic'
|
|
70
|
+
? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.TEXT'
|
|
71
|
+
: 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.TEXT',
|
|
72
|
+
actionCallback: () => this.toggleViewMode(),
|
|
73
|
+
show: 'always',
|
|
74
|
+
titleKey: this.viewMode === 'basic'
|
|
75
|
+
? 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.ADVANCED.DETAIL'
|
|
76
|
+
: 'OCX_SEARCH_HEADER.TOGGLE_BUTTON.SIMPLE.DETAIL',
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
this.headerActions = headerActions.concat(this.actions);
|
|
80
|
+
}
|
|
81
|
+
addKeyUpEventListener() {
|
|
82
|
+
const inputElements = this.searchParameterFields?.nativeElement.querySelectorAll('input');
|
|
83
|
+
inputElements.forEach((inputElement) => {
|
|
84
|
+
if (!inputElement.listenerAdded) {
|
|
85
|
+
inputElement.addEventListener('keyup', (event) => this.onSearchKeyup(event));
|
|
86
|
+
inputElement.listenerAdded = true;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
onSearchKeyup(event) {
|
|
91
|
+
if (event.code === 'Enter') {
|
|
92
|
+
this.onSearchClicked();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
confirmSearchConfig(searchConfig) {
|
|
96
|
+
this.selectedSearchConfigChanged?.emit(searchConfig);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
SearchHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SearchHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
100
|
+
SearchHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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 *ngIf=\"_additionalToolbarContentLeft\" [ngTemplateOutlet]=\"_additionalToolbarContentLeft\"></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 [ariaLabel]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate\"\n title=\"{{ 'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate }}\"\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 [ariaLabel]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate\"\n title=\"{{ 'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate }}\"\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", "style", "styleClass", "badgeClass", "ariaLabel"], 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"], outputs: ["save"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SearchHeaderComponent, decorators: [{
|
|
102
|
+
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 *ngIf=\"_additionalToolbarContentLeft\" [ngTemplateOutlet]=\"_additionalToolbarContentLeft\"></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 [ariaLabel]=\"'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate\"\n title=\"{{ 'OCX_SEARCH_HEADER.RESET_BUTTON.DETAIL' | translate }}\"\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 [ariaLabel]=\"'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate\"\n title=\"{{ 'OCX_SEARCH_HEADER.SEARCH_BUTTON.DETAIL' | translate }}\"\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
|
+
}], propDecorators: { searchConfigs: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], header: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}], headline: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], subheader: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], viewMode: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], manualBreadcrumbs: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], actions: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], searched: [{
|
|
119
|
+
type: Output
|
|
120
|
+
}], resetted: [{
|
|
121
|
+
type: Output
|
|
122
|
+
}], selectedSearchConfigChanged: [{
|
|
123
|
+
type: Output
|
|
124
|
+
}], viewModeChanged: [{
|
|
125
|
+
type: Output
|
|
126
|
+
}], additionalToolbarContent: [{
|
|
127
|
+
type: ContentChild,
|
|
128
|
+
args: ['additionalToolbarContent']
|
|
129
|
+
}], additionalToolbarContentLeft: [{
|
|
130
|
+
type: ContentChild,
|
|
131
|
+
args: ['additionalToolbarContentLeft']
|
|
132
|
+
}], searchParameterFields: [{
|
|
133
|
+
type: ViewChild,
|
|
134
|
+
args: ['searchParameterFields']
|
|
135
|
+
}] } });
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1oZWFkZXIvc2VhcmNoLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1oZWFkZXIvc2VhcmNoLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7Ozs7Ozs7QUFJdEI7Ozs7O0dBS0c7QUFNSCxNQUFNLE9BQU8scUJBQXFCO0lBTGxDO1FBT1csV0FBTSxHQUFHLEVBQUUsQ0FBQTtRQWFYLGFBQVEsR0FBeUIsT0FBTyxDQUFBO1FBQ3hDLHNCQUFpQixHQUFHLEtBQUssQ0FBQTtRQUNsQyxhQUFRLEdBQWEsRUFBRSxDQUFBO1FBVWIsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFBO1FBQ2hELGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQTtRQUNoRCxnQ0FBMkIsR0FBbUMsSUFBSSxZQUFZLEVBQUUsQ0FBQTtRQUNoRixvQkFBZSxHQUF1QyxJQUFJLFlBQVksRUFBRSxDQUFBO1FBZ0JsRixnQkFBVyxHQUFHLEtBQUssQ0FBQTtRQUNuQixrQkFBYSxHQUFhLEVBQUUsQ0FBQTtLQTREN0I7SUF2R0M7O09BRUc7SUFDSCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDcEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENB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eEJDekJsQywrdERBMENBOzRGRGpCYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1COzhCQUtwQixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFNRixRQUFRO3NCQURYLEtBQUs7Z0JBT0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRixPQUFPO3NCQURWLEtBQUs7Z0JBU0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLDJCQUEyQjtzQkFBcEMsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUVQLHdCQUF3QjtzQkFEdkIsWUFBWTt1QkFBQywwQkFBMEI7Z0JBT3hDLDRCQUE0QjtzQkFEM0IsWUFBWTt1QkFBQyw4QkFBOEI7Z0JBT1IscUJBQXFCO3NCQUF4RCxTQUFTO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuLi9wYWdlLWhlYWRlci9wYWdlLWhlYWRlci5jb21wb25lbnQnXG5pbXBvcnQgeyBTZWFyY2hDb25maWdJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2VhcmNoLWNvbmZpZy1pbmZvJ1xuXG4vKipcbiAqIFRvIHRyaWdnZXIgdGhlIHNlYXJjaCB3aGVuIEVudGVyIGtleSBpcyBwcmVzc2VkIGluc2lkZSBhIHNlYXJjaCBwYXJhbWV0ZXIgZmllbGQsXG4gKiBhbiBFdmVudExpc3RlbmVyIGZvciBrZXl1cCBlbnRlciBldmVudCBpcyBhZGRlZCBmb3IgSFRNTCBlbGVtZW50cyB3aGljaCBoYXZlIGFuIGlucHV0LlxuICogUGxlYXNlIGFkZCB0aGUgRXZlbnRMaXN0ZW5lciB5b3Vyc2VsZiBtYW51YWxseSwgaWYgeW91IHdhbnQgdG8gaGF2ZSB0aGF0IGZ1bmN0aW9uYWxpdHkgZm9yIHNvbWUgb3RoZXIgZWxlbWVudHNcbiAqIHdoaWNoIGRvIG5vdCBoYXZlIGFuIGlucHV0IGVsZW1lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29jeC1zZWFyY2gtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBzZWFyY2hDb25maWdzOiBTZWFyY2hDb25maWdJbmZvW10gfCB1bmRlZmluZWRcbiAgQElucHV0KCkgaGVhZGVyID0gJydcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZXBsYWNlZCBieSBoZWFkZXJcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBoZWFkbGluZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmhlYWRlclxuICB9XG4gIHNldCBoZWFkbGluZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5oZWFkZXIgPSB2YWx1ZVxuICB9XG4gIEBJbnB1dCgpIHN1YmhlYWRlcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIHZpZXdNb2RlOiAnYmFzaWMnIHwgJ2FkdmFuY2VkJyA9ICdiYXNpYydcbiAgQElucHV0KCkgbWFudWFsQnJlYWRjcnVtYnMgPSBmYWxzZVxuICBfYWN0aW9uczogQWN0aW9uW10gPSBbXVxuICBASW5wdXQoKVxuICBnZXQgYWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9uc1xuICB9XG4gIHNldCBhY3Rpb25zKHZhbHVlKSB7XG4gICAgdGhpcy5fYWN0aW9ucyA9IHZhbHVlXG4gICAgdGhpcy51cGRhdGVIZWFkZXJBY3Rpb25zKClcbiAgfVxuXG4gIEBPdXRwdXQoKSBzZWFyY2hlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIHJlc2V0dGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAT3V0cHV0KCkgc2VsZWN0ZWRTZWFyY2hDb25maWdDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8U2VhcmNoQ29uZmlnSW5mbz4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgQE91dHB1dCgpIHZpZXdNb2RlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPCdiYXNpYycgfCAnYWR2YW5jZWQnPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBAQ29udGVudENoaWxkKCdhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnQnKVxuICBhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcblxuICBnZXQgX2FkZGl0aW9uYWxUb29sYmFyQ29udGVudCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5hZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRcbiAgfVxuICBAQ29udGVudENoaWxkKCdhZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0JylcbiAgYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuXG4gIGdldCBfYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5hZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRMZWZ0XG4gIH1cblxuICBAVmlld0NoaWxkKCdzZWFyY2hQYXJhbWV0ZXJGaWVsZHMnKSBzZWFyY2hQYXJhbWV0ZXJGaWVsZHM6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWRcblxuICBoYXNBZHZhbmNlZCA9IGZhbHNlXG4gIGhlYWRlckFjdGlvbnM6IEFjdGlvbltdID0gW11cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRLZXlVcEV2ZW50TGlzdGVuZXIoKVxuICB9XG5cbiAgdG9nZ2xlVmlld01vZGUoKSB7XG4gICAgdGhpcy52aWV3TW9kZSA9IHRoaXMudmlld01vZGUgPT09ICdiYXNpYycgPyAnYWR2YW5jZWQnIDogJ2Jhc2ljJ1xuICAgIHRoaXMudmlld01vZGVDaGFuZ2VkPy5lbWl0KHRoaXMudmlld01vZGUpXG4gICAgdGhpcy51cGRhdGVIZWFkZXJBY3Rpb25zKClcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYWRkS2V5VXBFdmVudExpc3RlbmVyKCkpXG4gIH1cblxuICBvblJlc2V0Q2xpY2tlZCgpIHtcbiAgICB0aGlzLnJlc2V0dGVkLmVtaXQoKVxuICB9XG5cbiAgb25TZWFyY2hDbGlja2VkKCkge1xuICAgIHRoaXMuc2VhcmNoZWQuZW1pdCgpXG4gIH1cblxuICB1cGRhdGVIZWFkZXJBY3Rpb25zKCkge1xuICAgIGNvbnN0IGhlYWRlckFjdGlvbnM6IEFjdGlvbltdID0gW11cbiAgICBpZiAodGhpcy5oYXNBZHZhbmNlZCkge1xuICAgICAgaGVhZGVyQWN0aW9ucy5wdXNoKHtcbiAgICAgICAgaWQ6ICdzaW1wbGVBZHZhbmNlZEJ1dHRvbicsXG4gICAgICAgIGxhYmVsS2V5OlxuICAgICAgICAgIHRoaXMudmlld01vZGUgPT09ICdiYXNpYydcbiAgICAgICAgICAgID8gJ09DWF9TRUFSQ0hfSEVBREVSLlRPR0dMRV9CVVRUT04uQURWQU5DRUQuVEVYVCdcbiAgICAgICAgICAgIDogJ09DWF9TRUFSQ0hfSEVBREVSLlRPR0dMRV9CVVRUT04uU0lNUExFLlRFWFQnLFxuICAgICAgICBhY3Rpb25DYWxsYmFjazogKCkgPT4gdGhpcy50b2dnbGVWaWV3TW9kZSgpLFxuICAgICAgICBzaG93OiAnYWx3YXlzJyxcbiAgICAgICAgdGl0bGVLZXk6XG4gICAgICAgICAgdGhpcy52aWV3TW9kZSA9PT0gJ2Jhc2ljJ1xuICAgICAgICAgICAgPyAnT0NYX1NFQVJDSF9IRUFERVIuVE9HR0xFX0JVVFRPTi5BRFZBTkNFRC5ERVRBSUwnXG4gICAgICAgICAgICA6ICdPQ1hfU0VBUkNIX0hFQURFUi5UT0dHTEVfQlVUVE9OLlNJTVBMRS5ERVRBSUwnLFxuICAgICAgfSlcbiAgICB9XG4gICAgdGhpcy5oZWFkZXJBY3Rpb25zID0gaGVhZGVyQWN0aW9ucy5jb25jYXQodGhpcy5hY3Rpb25zKVxuICB9XG5cbiAgYWRkS2V5VXBFdmVudExpc3RlbmVyKCkge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudHMgPSB0aGlzLnNlYXJjaFBhcmFtZXRlckZpZWxkcz8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dCcpXG4gICAgaW5wdXRFbGVtZW50cy5mb3JFYWNoKChpbnB1dEVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgaWYgKCFpbnB1dEVsZW1lbnQubGlzdGVuZXJBZGRlZCkge1xuICAgICAgICBpbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoZXZlbnQ6IGFueSkgPT4gdGhpcy5vblNlYXJjaEtleXVwKGV2ZW50KSlcbiAgICAgICAgaW5wdXRFbGVtZW50Lmxpc3RlbmVyQWRkZWQgPSB0cnVlXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIG9uU2VhcmNoS2V5dXAoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudC5jb2RlID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLm9uU2VhcmNoQ2xpY2tlZCgpXG4gICAgfVxuICB9XG5cbiAgY29uZmlybVNlYXJjaENvbmZpZyhzZWFyY2hDb25maWc6IFNlYXJjaENvbmZpZ0luZm8pIHtcbiAgICB0aGlzLnNlbGVjdGVkU2VhcmNoQ29uZmlnQ2hhbmdlZD8uZW1pdChzZWFyY2hDb25maWcpXG4gIH1cbn1cbiIsIjxvY3gtcGFnZS1oZWFkZXJcbiAgW2hlYWRlcl09XCJoZWFkZXIgfHwgKCdPQ1hfU0VBUkNIX0hFQURFUi5IRUFERVInIHwgdHJhbnNsYXRlKVwiXG4gIFtzdWJoZWFkZXJdPVwic3ViaGVhZGVyXCJcbiAgW21hbnVhbEJyZWFkY3J1bWJzXT1cIm1hbnVhbEJyZWFkY3J1bWJzXCJcbiAgW2FjdGlvbnNdPVwiaGVhZGVyQWN0aW9uc1wiXG4+XG4gIDxuZy10ZW1wbGF0ZSAjYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdD5cbiAgICA8b2N4LXNlYXJjaC1jb25maWcgW3NlYXJjaENvbmZpZ3NdPVwic2VhcmNoQ29uZmlnc1wiIChzZWxlY3RlZFNlYXJjaENvbmZpZ0NoYW5nZWQpPVwiY29uZmlybVNlYXJjaENvbmZpZygkZXZlbnQpXCI+XG4gICAgPC9vY3gtc2VhcmNoLWNvbmZpZz5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2FkZGl0aW9uYWxUb29sYmFyQ29udGVudExlZnRcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJfYWRkaXRpb25hbFRvb2xiYXJDb250ZW50TGVmdFwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2FkZGl0aW9uYWxUb29sYmFyQ29udGVudD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2FkZGl0aW9uYWxUb29sYmFyQ29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9hZGRpdGlvbmFsVG9vbGJhckNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInNlYXJjaC1jcml0ZXJpYS1jb250YWluZXJcIj5cbiAgICA8ZGl2ICNzZWFyY2hQYXJhbWV0ZXJGaWVsZHM+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNyaXRlcmlhLWJ1dHRvbnNcIj5cbiAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgaWQ9XCJyZXNldEJ1dHRvblwiXG4gICAgICAgICAgKm5nSWY9XCJyZXNldHRlZC5vYnNlcnZlZFwiXG4gICAgICAgICAgKG9uQ2xpY2spPVwib25SZXNldENsaWNrZWQoKVwiXG4gICAgICAgICAgbGFiZWw9XCJ7eyAnT0NYX1NFQVJDSF9IRUFERVIuUkVTRVRfQlVUVE9OLlRFWFQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBpY29uPVwicGkgcGktZXJhc2VyXCJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cIidPQ1hfU0VBUkNIX0hFQURFUi5SRVNFVF9CVVRUT04uREVUQUlMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAnT0NYX1NFQVJDSF9IRUFERVIuUkVTRVRfQlVUVE9OLkRFVEFJTCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICA+XG4gICAgICAgIDwvcC1idXR0b24+XG5cbiAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgaWQ9XCJzZWFyY2hCdXR0b25cIlxuICAgICAgICAgIChvbkNsaWNrKT1cIm9uU2VhcmNoQ2xpY2tlZCgpXCJcbiAgICAgICAgICBsYWJlbD1cInt7ICdPQ1hfU0VBUkNIX0hFQURFUi5TRUFSQ0hfQlVUVE9OLlRFWFQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBpY29uPVwicGkgcGktc2VhcmNoXCJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cIidPQ1hfU0VBUkNIX0hFQURFUi5TRUFSQ0hfQlVUVE9OLkRFVEFJTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ09DWF9TRUFSQ0hfSEVBREVSLlNFQVJDSF9CVVRUT04uREVUQUlMJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgID5cbiAgICAgICAgPC9wLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvb2N4LXBhZ2UtaGVhZGVyPlxuIl19
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Directive, HostListener, Input, Optional, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class IfBreakpointDirective {
|
|
4
|
+
constructor(viewContainer, templateRef) {
|
|
5
|
+
this.viewContainer = viewContainer;
|
|
6
|
+
this.templateRef = templateRef;
|
|
7
|
+
}
|
|
8
|
+
ngOnInit() {
|
|
9
|
+
this.onResize();
|
|
10
|
+
}
|
|
11
|
+
onResize() {
|
|
12
|
+
const mobileBreakpointVar = getComputedStyle(document.documentElement).getPropertyValue('--mobile-break-point');
|
|
13
|
+
const isMobile = window.matchMedia(`(max-width: ${mobileBreakpointVar})`).matches;
|
|
14
|
+
const isDesktop = !isMobile;
|
|
15
|
+
if ((this.breakpoint === 'mobile' && isMobile) || (this.breakpoint === 'desktop' && isDesktop)) {
|
|
16
|
+
if (this.templateRef && !this.viewContainer.length) {
|
|
17
|
+
this.viewContainer.createEmbeddedView(this.templateRef);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.viewContainer.clear();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
IfBreakpointDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IfBreakpointDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
26
|
+
IfBreakpointDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: IfBreakpointDirective, selector: "[ocxIfBreakpoint]", inputs: { breakpoint: ["ocxIfBreakpoint", "breakpoint"] }, host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0 });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IfBreakpointDirective, decorators: [{
|
|
28
|
+
type: Directive,
|
|
29
|
+
args: [{ selector: '[ocxIfBreakpoint]' }]
|
|
30
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef, decorators: [{
|
|
31
|
+
type: Optional
|
|
32
|
+
}] }]; }, propDecorators: { breakpoint: [{
|
|
33
|
+
type: Input,
|
|
34
|
+
args: ['ocxIfBreakpoint']
|
|
35
|
+
}], onResize: [{
|
|
36
|
+
type: HostListener,
|
|
37
|
+
args: ['window:resize']
|
|
38
|
+
}] } });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYtYnJlYWtwb2ludC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9kaXJlY3RpdmVzL2lmLWJyZWFrcG9pbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFBOztBQUcvRyxNQUFNLE9BQU8scUJBQXFCO0lBR2hDLFlBQW9CLGFBQStCLEVBQXNCLFdBQWtDO1FBQXZGLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUFzQixnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7SUFBRyxDQUFDO0lBRS9HLFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDakIsQ0FBQztJQUdELFFBQVE7UUFDTixNQUFNLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1FBQy9HLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsZUFBZSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFBO1FBQ2pGLE1BQU0sU0FBUyxHQUFHLENBQUMsUUFBUSxDQUFBO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLFNBQVMsQ0FBQyxFQUFFO1lBQzlGLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO2dCQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTthQUN4RDtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFBO1NBQzNCO0lBQ0gsQ0FBQzs7bUhBckJVLHFCQUFxQjt1R0FBckIscUJBQXFCOzRGQUFyQixxQkFBcUI7a0JBRGpDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUU7OzBCQUlZLFFBQVE7NENBRnBDLFVBQVU7c0JBQW5DLEtBQUs7dUJBQUMsaUJBQWlCO2dCQVN4QixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbb2N4SWZCcmVha3BvaW50XScgfSlcbmV4cG9ydCBjbGFzcyBJZkJyZWFrcG9pbnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoJ29jeElmQnJlYWtwb2ludCcpIGJyZWFrcG9pbnQ6ICdtb2JpbGUnIHwgJ2Rlc2t0b3AnIHwgdW5kZWZpbmVkXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCBAT3B0aW9uYWwoKSBwcml2YXRlIHRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8dW5rbm93bj4pIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5vblJlc2l6ZSgpXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgb25SZXNpemUoKSB7XG4gICAgY29uc3QgbW9iaWxlQnJlYWtwb2ludFZhciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLW1vYmlsZS1icmVhay1wb2ludCcpXG4gICAgY29uc3QgaXNNb2JpbGUgPSB3aW5kb3cubWF0Y2hNZWRpYShgKG1heC13aWR0aDogJHttb2JpbGVCcmVha3BvaW50VmFyfSlgKS5tYXRjaGVzXG4gICAgY29uc3QgaXNEZXNrdG9wID0gIWlzTW9iaWxlXG4gICAgaWYgKCh0aGlzLmJyZWFrcG9pbnQgPT09ICdtb2JpbGUnICYmIGlzTW9iaWxlKSB8fCAodGhpcy5icmVha3BvaW50ID09PSAnZGVza3RvcCcgJiYgaXNEZXNrdG9wKSkge1xuICAgICAgaWYgKHRoaXMudGVtcGxhdGVSZWYgJiYgIXRoaXMudmlld0NvbnRhaW5lci5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Directive, ElementRef, Input, Optional, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
2
|
+
import { UserService } from '@onecx/angular-integration-interface';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@onecx/angular-integration-interface";
|
|
5
|
+
export class IfPermissionDirective {
|
|
6
|
+
set notPermission(value) {
|
|
7
|
+
this.permission = value;
|
|
8
|
+
this.negate = true;
|
|
9
|
+
}
|
|
10
|
+
constructor(renderer, el, viewContainer, userService, templateRef) {
|
|
11
|
+
this.renderer = renderer;
|
|
12
|
+
this.el = el;
|
|
13
|
+
this.viewContainer = viewContainer;
|
|
14
|
+
this.userService = userService;
|
|
15
|
+
this.templateRef = templateRef;
|
|
16
|
+
this.onMissingPermission = 'hide';
|
|
17
|
+
this.negate = false;
|
|
18
|
+
}
|
|
19
|
+
ngOnInit() {
|
|
20
|
+
if (this.permission) {
|
|
21
|
+
if (this.negate === this.userService.hasPermission(this.permission)) {
|
|
22
|
+
if (this.onMissingPermission === 'disable') {
|
|
23
|
+
this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'disabled');
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
this.viewContainer.clear();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
if (this.templateRef) {
|
|
31
|
+
this.viewContainer.createEmbeddedView(this.templateRef);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
IfPermissionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IfPermissionDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i1.UserService }, { token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
38
|
+
IfPermissionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: IfPermissionDirective, selector: "[ocxIfPermission], [ocxIfNotPermission]", inputs: { permission: ["ocxIfPermission", "permission"], notPermission: ["ocxIfNotPermission", "notPermission"], onMissingPermission: "onMissingPermission" }, ngImport: i0 });
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IfPermissionDirective, decorators: [{
|
|
40
|
+
type: Directive,
|
|
41
|
+
args: [{ selector: '[ocxIfPermission], [ocxIfNotPermission]' }]
|
|
42
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i1.UserService }, { type: i0.TemplateRef, decorators: [{
|
|
43
|
+
type: Optional
|
|
44
|
+
}] }]; }, propDecorators: { permission: [{
|
|
45
|
+
type: Input,
|
|
46
|
+
args: ['ocxIfPermission']
|
|
47
|
+
}], notPermission: [{
|
|
48
|
+
type: Input,
|
|
49
|
+
args: ['ocxIfNotPermission']
|
|
50
|
+
}], onMissingPermission: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}] } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYtcGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9kaXJlY3RpdmVzL2lmLXBlcm1pc3Npb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4SCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7OztBQUdsRSxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLElBQWlDLGFBQWEsQ0FBQyxLQUF5QjtRQUN0RSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQTtJQUNwQixDQUFDO0lBS0QsWUFDVSxRQUFtQixFQUNuQixFQUFjLEVBQ2QsYUFBK0IsRUFDL0IsV0FBd0IsRUFDWixXQUE4QjtRQUoxQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDWixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFSM0Msd0JBQW1CLEdBQXVCLE1BQU0sQ0FBQTtRQUN6RCxXQUFNLEdBQUcsS0FBSyxDQUFBO0lBUVgsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDbkUsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEtBQUssU0FBUyxFQUFFO29CQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUE7aUJBQzFFO3FCQUFNO29CQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUE7aUJBQzNCO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtpQkFDeEQ7YUFDRjtTQUNGO0lBQ0gsQ0FBQzs7bUhBaENVLHFCQUFxQjt1R0FBckIscUJBQXFCOzRGQUFyQixxQkFBcUI7a0JBRGpDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUseUNBQXlDLEVBQUU7OzBCQWdCN0QsUUFBUTs0Q0FkZSxVQUFVO3NCQUFuQyxLQUFLO3VCQUFDLGlCQUFpQjtnQkFDUyxhQUFhO3NCQUE3QyxLQUFLO3VCQUFDLG9CQUFvQjtnQkFLbEIsbUJBQW1CO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgUmVuZGVyZXIyLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJ0BvbmVjeC9hbmd1bGFyLWludGVncmF0aW9uLWludGVyZmFjZSdcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW29jeElmUGVybWlzc2lvbl0sIFtvY3hJZk5vdFBlcm1pc3Npb25dJyB9KVxuZXhwb3J0IGNsYXNzIElmUGVybWlzc2lvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgnb2N4SWZQZXJtaXNzaW9uJykgcGVybWlzc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgnb2N4SWZOb3RQZXJtaXNzaW9uJykgc2V0IG5vdFBlcm1pc3Npb24odmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGVybWlzc2lvbiA9IHZhbHVlXG4gICAgdGhpcy5uZWdhdGUgPSB0cnVlXG4gIH1cblxuICBASW5wdXQoKSBvbk1pc3NpbmdQZXJtaXNzaW9uOiAnaGlkZScgfCAnZGlzYWJsZScgPSAnaGlkZSdcbiAgbmVnYXRlID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB0ZW1wbGF0ZVJlZj86IFRlbXBsYXRlUmVmPGFueT5cbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnBlcm1pc3Npb24pIHtcbiAgICAgIGlmICh0aGlzLm5lZ2F0ZSA9PT0gdGhpcy51c2VyU2VydmljZS5oYXNQZXJtaXNzaW9uKHRoaXMucGVybWlzc2lvbikpIHtcbiAgICAgICAgaWYgKHRoaXMub25NaXNzaW5nUGVybWlzc2lvbiA9PT0gJ2Rpc2FibGUnKSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|