@energycap/components 0.44.8 → 0.44.9-Angular19Upgrade.20260217-1620
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/fesm2022/energycap-components.mjs +379 -354
- package/fesm2022/energycap-components.mjs.map +1 -1
- package/lib/controls/button/copy-button-base.directive.d.ts +1 -1
- package/lib/controls/date-input/date-input.component.d.ts +1 -1
- package/lib/controls/form-control-base.d.ts +1 -1
- package/lib/core/date-time-helper.d.ts +2 -2
- package/lib/display/hierarchy/hierarchy-base.d.ts +1 -1
- package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +1 -1
- package/lib/display/resizable/resizable-base.d.ts +1 -1
- package/lib/shared/display/pipes/date-display.pipe.d.ts +1 -1
- package/lib/shared/page/page-base/page-base.component.d.ts +1 -1
- package/lib/shared/testing/public-mocks.spec.d.ts +1 -1
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +1 -1
- package/package.json +1 -3
- package/schematics/utilities/typescript.js +3 -4
- package/schematics/utilities/typescript.js.map +1 -1
- package/schematics/utilities/workspace.d.ts +0 -8
- package/schematics/utilities/workspace.js +48 -71
- package/schematics/utilities/workspace.js.map +1 -1
- package/esm2022/energycap-components.mjs +0 -5
- package/esm2022/lib/components.module.mjs +0 -425
- package/esm2022/lib/controls/banner/banner.component.mjs +0 -112
- package/esm2022/lib/controls/button/button.component.mjs +0 -114
- package/esm2022/lib/controls/button/copy-button-base.directive.mjs +0 -67
- package/esm2022/lib/controls/button/copy-button.directive.mjs +0 -28
- package/esm2022/lib/controls/button/copy-table-button.directive.mjs +0 -43
- package/esm2022/lib/controls/calendar/calendar-item.component.mjs +0 -91
- package/esm2022/lib/controls/calendar/calendar.component.mjs +0 -251
- package/esm2022/lib/controls/calendar/calendar.types.mjs +0 -2
- package/esm2022/lib/controls/checkbox/checkbox.component.mjs +0 -140
- package/esm2022/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +0 -38
- package/esm2022/lib/controls/combobox/combobox.component.mjs +0 -879
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +0 -57
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +0 -62
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +0 -100
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +0 -101
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +0 -76
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +0 -79
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +0 -210
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +0 -81
- package/esm2022/lib/controls/date-input/date-input.component.mjs +0 -466
- package/esm2022/lib/controls/date-input/date-input.types.mjs +0 -44
- package/esm2022/lib/controls/dropdown/dropdown.component.mjs +0 -243
- package/esm2022/lib/controls/file-upload/file-upload.component.mjs +0 -261
- package/esm2022/lib/controls/form-control/form-control.component.mjs +0 -110
- package/esm2022/lib/controls/form-control-base.mjs +0 -151
- package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
- package/esm2022/lib/controls/form-group/form-group.component.mjs +0 -261
- package/esm2022/lib/controls/help-popover/help-popover.component.mjs +0 -31
- package/esm2022/lib/controls/item-picker/item-picker.component.mjs +0 -329
- package/esm2022/lib/controls/link-button/link-button.component.mjs +0 -11
- package/esm2022/lib/controls/menu/menu.component.mjs +0 -485
- package/esm2022/lib/controls/navigation/link-item.mjs +0 -2
- package/esm2022/lib/controls/navigation/nav-group.mjs +0 -39
- package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
- package/esm2022/lib/controls/navigation/nav-item.mjs +0 -2
- package/esm2022/lib/controls/numericbox/numericbox.component.mjs +0 -372
- package/esm2022/lib/controls/popover/popover.component.mjs +0 -117
- package/esm2022/lib/controls/radio-button/radio-button-option.mjs +0 -3
- package/esm2022/lib/controls/radio-button/radio-button.component.mjs +0 -82
- package/esm2022/lib/controls/select/select.component.mjs +0 -88
- package/esm2022/lib/controls/tabs/tabs.component.mjs +0 -47
- package/esm2022/lib/controls/textbox/textbox.component.mjs +0 -155
- package/esm2022/lib/core/cache.service.mjs +0 -105
- package/esm2022/lib/core/custom-validators.mjs +0 -29
- package/esm2022/lib/core/date-time-helper.mjs +0 -228
- package/esm2022/lib/core/error.service.mjs +0 -61
- package/esm2022/lib/core/router-helper.service.mjs +0 -111
- package/esm2022/lib/core/scroll.service.mjs +0 -89
- package/esm2022/lib/core/telemetry-tracker.service.mjs +0 -16
- package/esm2022/lib/core/telemetry.service.mjs +0 -38
- package/esm2022/lib/core/validation-message.service.mjs +0 -185
- package/esm2022/lib/core/validation-patterns.mjs +0 -31
- package/esm2022/lib/core/window.service.mjs +0 -186
- package/esm2022/lib/display/app-bar/app-bar.component.mjs +0 -49
- package/esm2022/lib/display/avatar/avatar.component.mjs +0 -67
- package/esm2022/lib/display/avatar/avatar.service.mjs +0 -64
- package/esm2022/lib/display/confirm/confirm.component.mjs +0 -168
- package/esm2022/lib/display/dialog/dialog-content.mjs +0 -2
- package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
- package/esm2022/lib/display/dialog/dialog-types.mjs +0 -77
- package/esm2022/lib/display/dialog/dialog.component.mjs +0 -287
- package/esm2022/lib/display/dialog/dialog.service.mjs +0 -71
- package/esm2022/lib/display/help/help-types.mjs +0 -2
- package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +0 -111
- package/esm2022/lib/display/hierarchy/hierarchy-mocks.spec.mjs +0 -54
- package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -65
- package/esm2022/lib/display/item-display/item-display.component.mjs +0 -83
- package/esm2022/lib/display/json-display/json-display.component.mjs +0 -47
- package/esm2022/lib/display/resizable/resizable-base.mjs +0 -120
- package/esm2022/lib/display/resizable/resizable.component.mjs +0 -57
- package/esm2022/lib/display/spinner/spinner.component.mjs +0 -12
- package/esm2022/lib/display/splash/splash.component.mjs +0 -61
- package/esm2022/lib/display/splash/splash.service.mjs +0 -35
- package/esm2022/lib/display/table/resizable-column.component.mjs +0 -20
- package/esm2022/lib/display/table/resizable-table.directive.mjs +0 -227
- package/esm2022/lib/display/table/searchable-table.component.mjs +0 -344
- package/esm2022/lib/display/table/table-detail-row.component.mjs +0 -28
- package/esm2022/lib/display/table/table-locked-column.component.mjs +0 -58
- package/esm2022/lib/display/table/table-master-header-row.component.mjs +0 -14
- package/esm2022/lib/display/table/table-master-row.component.mjs +0 -163
- package/esm2022/lib/display/table/table-pagination.component.mjs +0 -155
- package/esm2022/lib/display/table/table-selectable-row.component.mjs +0 -235
- package/esm2022/lib/display/table/table.component.mjs +0 -257
- package/esm2022/lib/display/tags/tag.mjs +0 -18
- package/esm2022/lib/display/tags/tags.component.mjs +0 -82
- package/esm2022/lib/display/toast/toast/toast.component.mjs +0 -77
- package/esm2022/lib/display/toast/toast-types.mjs +0 -8
- package/esm2022/lib/display/toast/toast.service.mjs +0 -35
- package/esm2022/lib/display/toast/toaster/toaster.component.mjs +0 -114
- package/esm2022/lib/display/tooltip/tooltip.component.mjs +0 -28
- package/esm2022/lib/display/tooltip/tooltip.service.mjs +0 -78
- package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
- package/esm2022/lib/display/tree/tree.component.mjs +0 -139
- package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +0 -58
- package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
- package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
- package/esm2022/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +0 -103
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +0 -166
- package/esm2022/lib/shared/display/pipes/date-display-2.pipe.mjs +0 -39
- package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +0 -51
- package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
- package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
- package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
- package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
- package/esm2022/lib/shared/display.mjs +0 -6
- package/esm2022/lib/shared/form-group.helper.mjs +0 -67
- package/esm2022/lib/shared/json-helper.mjs +0 -19
- package/esm2022/lib/shared/lodash-helper.mjs +0 -52
- package/esm2022/lib/shared/page/page-base/page-base.component.mjs +0 -387
- package/esm2022/lib/shared/page/page-statuses.mjs +0 -23
- package/esm2022/lib/shared/page/page-title/page-title.component.mjs +0 -23
- package/esm2022/lib/shared/page/page-view/page-view.component.mjs +0 -147
- package/esm2022/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/page-base-component-test-helper.spec.mjs +0 -38
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
- package/esm2022/lib/shared/testing/public-mocks.spec.mjs +0 -148
- package/esm2022/lib/shared/testing/spy-factory.spec.mjs +0 -40
- package/esm2022/lib/shared/testing/translation-mocks.spec.mjs +0 -57
- package/esm2022/lib/shared/user-preference.service.mjs +0 -17
- package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
- package/esm2022/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +0 -68
- package/esm2022/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +0 -18
- package/esm2022/public-api.mjs +0 -115
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { Directive, Input } from '@angular/core';
|
|
2
|
-
import { Subject } from "rxjs";
|
|
3
|
-
import { takeUntil } from 'rxjs/operators';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../core/validation-message.service";
|
|
6
|
-
import * as i2 from "../shared/form-group.helper";
|
|
7
|
-
/**
|
|
8
|
-
* Base class for Reactive Form Controls, containing ECI-specific shared properties
|
|
9
|
-
*/
|
|
10
|
-
export class FormControlBase {
|
|
11
|
-
/**
|
|
12
|
-
* Creates an instance of FormControlBase.
|
|
13
|
-
*/
|
|
14
|
-
constructor(validationMessageService, formGroupHelper) {
|
|
15
|
-
this.validationMessageService = validationMessageService;
|
|
16
|
-
this.formGroupHelper = formGroupHelper;
|
|
17
|
-
/**
|
|
18
|
-
* If true, will focus the control's input when the view is intialized
|
|
19
|
-
*/
|
|
20
|
-
this.autofocus = false;
|
|
21
|
-
/**
|
|
22
|
-
* The position of the form control label (top|bottom)
|
|
23
|
-
*/
|
|
24
|
-
this.labelPosition = "top";
|
|
25
|
-
/**
|
|
26
|
-
* The id of the component. We use this to identify a control on focus events and help.
|
|
27
|
-
*/
|
|
28
|
-
this.id = '';
|
|
29
|
-
/**
|
|
30
|
-
* The pending status of the control, can be used to tell the user the control is
|
|
31
|
-
* awaiting data via a spinner or animation
|
|
32
|
-
*/
|
|
33
|
-
this.pending = false;
|
|
34
|
-
/**
|
|
35
|
-
* Whether the input is a required field or not
|
|
36
|
-
* @todo: Sometime in the future Angular makes it sound like this will be handled via the Reactive form When that happens this property can be removed
|
|
37
|
-
*/
|
|
38
|
-
this.required = false;
|
|
39
|
-
/**
|
|
40
|
-
* The tabindex of the control
|
|
41
|
-
*/
|
|
42
|
-
this.tabindex = 0;
|
|
43
|
-
/**
|
|
44
|
-
* When a help popover is present, allows the popover to be positioned in different locations.
|
|
45
|
-
*/
|
|
46
|
-
this.helpPopoverPosition = 'top-left';
|
|
47
|
-
/**
|
|
48
|
-
* All current validation errors
|
|
49
|
-
*/
|
|
50
|
-
this.validationErrors = "";
|
|
51
|
-
/**
|
|
52
|
-
* The id of the form controls input, getnerated from the components id.
|
|
53
|
-
*/
|
|
54
|
-
this.inputId = '';
|
|
55
|
-
/**
|
|
56
|
-
* Notifies component subscriptions that component is destroyed.
|
|
57
|
-
* Use with `takeUntil()` when subscribing to complete subscriptions
|
|
58
|
-
* automatically.
|
|
59
|
-
*
|
|
60
|
-
* See:
|
|
61
|
-
* [RxJs]{@link http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-takeUntil}
|
|
62
|
-
* [and this]{@link https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87}
|
|
63
|
-
* [and this]{@link https://netbasal.com/when-to-unsubscribe-in-angular-d61c6b21bad3}
|
|
64
|
-
* [and this]{@link http://brianflove.com/2016/12/11/anguar-2-unsubscribe-observables/}
|
|
65
|
-
*/
|
|
66
|
-
this.componentDestroyed = new Subject();
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Angular onChange lifecyle hook
|
|
70
|
-
*/
|
|
71
|
-
ngOnChanges(changes) {
|
|
72
|
-
if (changes.readonly && changes.readonly.currentValue !== undefined) {
|
|
73
|
-
if (changes.readonly.currentValue === true) {
|
|
74
|
-
this.formModel.disable();
|
|
75
|
-
}
|
|
76
|
-
else if (changes.readonly.currentValue === false) {
|
|
77
|
-
this.formModel.enable();
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
if (changes.id && changes.id.currentValue !== undefined) {
|
|
81
|
-
this.inputId = this.formGroupHelper.getInputId(this.id);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Angular onInit lifecycle hook.
|
|
86
|
-
*/
|
|
87
|
-
ngOnInit() {
|
|
88
|
-
this.inputId = this.formGroupHelper.getInputId(this.id);
|
|
89
|
-
// subscribe to valueChanges Observable to take any erros and translate them
|
|
90
|
-
this.formModel.statusChanges.pipe(takeUntil(this.componentDestroyed)).subscribe(data => {
|
|
91
|
-
this.translateValidationMessages(data);
|
|
92
|
-
});
|
|
93
|
-
// (re)set validation messages
|
|
94
|
-
this.translateValidationMessages();
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Angular onDestroy lifecyle hook.
|
|
98
|
-
* Unsubscribe from any observables
|
|
99
|
-
*/
|
|
100
|
-
ngOnDestroy() {
|
|
101
|
-
this.componentDestroyed.next();
|
|
102
|
-
this.componentDestroyed.unsubscribe();
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Function that subscribes to the formModel's valueChanges Observable
|
|
106
|
-
* to take any erros and translate them
|
|
107
|
-
*/
|
|
108
|
-
async translateValidationMessages(data) {
|
|
109
|
-
if (!this.formModel) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
const form = this.formModel;
|
|
113
|
-
this.validationErrors = '';
|
|
114
|
-
if (!form.valid) {
|
|
115
|
-
let messages = await this.validationMessageService.getErrorMessages(form.errors);
|
|
116
|
-
if (messages) {
|
|
117
|
-
this.validationErrors = messages.join('; ');
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormControlBase, deps: [{ token: i1.ValidationMessageService }, { token: i2.FormGroupHelper }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
122
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FormControlBase, inputs: { autofocus: "autofocus", formModel: "formModel", label: "label", labelPosition: "labelPosition", id: "id", pending: "pending", required: "required", tabindex: "tabindex", readonly: "readonly", tooltip: "tooltip", helpPopover: "helpPopover", helpPopoverPosition: "helpPopoverPosition" }, usesOnChanges: true, ngImport: i0 }); }
|
|
123
|
-
}
|
|
124
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormControlBase, decorators: [{
|
|
125
|
-
type: Directive
|
|
126
|
-
}], ctorParameters: () => [{ type: i1.ValidationMessageService }, { type: i2.FormGroupHelper }], propDecorators: { autofocus: [{
|
|
127
|
-
type: Input
|
|
128
|
-
}], formModel: [{
|
|
129
|
-
type: Input
|
|
130
|
-
}], label: [{
|
|
131
|
-
type: Input
|
|
132
|
-
}], labelPosition: [{
|
|
133
|
-
type: Input
|
|
134
|
-
}], id: [{
|
|
135
|
-
type: Input
|
|
136
|
-
}], pending: [{
|
|
137
|
-
type: Input
|
|
138
|
-
}], required: [{
|
|
139
|
-
type: Input
|
|
140
|
-
}], tabindex: [{
|
|
141
|
-
type: Input
|
|
142
|
-
}], readonly: [{
|
|
143
|
-
type: Input
|
|
144
|
-
}], tooltip: [{
|
|
145
|
-
type: Input
|
|
146
|
-
}], helpPopover: [{
|
|
147
|
-
type: Input
|
|
148
|
-
}], helpPopoverPosition: [{
|
|
149
|
-
type: Input
|
|
150
|
-
}] } });
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvZm9ybS1jb250cm9sLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQStDLE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBVTNDOztHQUVHO0FBRUgsTUFBTSxPQUFnQixlQUFlO0lBc0duQzs7T0FFRztJQUNILFlBQ1ksd0JBQWtELEVBQ2xELGVBQWdDO1FBRGhDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBeEc1Qzs7V0FFRztRQUNhLGNBQVMsR0FBYSxLQUFLLENBQUM7UUFnQjVDOztXQUVHO1FBQ2Esa0JBQWEsR0FBMEIsS0FBSyxDQUFDO1FBRzdEOztXQUVHO1FBQ2EsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQUdoQzs7O1dBR0c7UUFDYSxZQUFPLEdBQWEsS0FBSyxDQUFDO1FBRzFDOzs7V0FHRztRQUNhLGFBQVEsR0FBYSxLQUFLLENBQUM7UUFHM0M7O1dBRUc7UUFDYSxhQUFRLEdBQVksQ0FBQyxDQUFDO1FBb0J0Qzs7V0FFRztRQUNhLHdCQUFtQixHQUE0QixVQUFVLENBQUM7UUFFMUU7O1dBRUc7UUFDSSxxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFHckM7O1dBRUc7UUFDSSxZQUFPLEdBQVcsRUFBRSxDQUFDO1FBRzdCOzs7Ozs7Ozs7O1dBVUc7UUFDUSx1QkFBa0IsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQVM5RCxDQUFDO0lBRUw7O09BRUc7SUFDSSxXQUFXLENBQUMsT0FBcUI7UUFDdEMsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BFLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0IsQ0FBQztpQkFBTSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBR0Q7O09BRUc7SUFDSSxRQUFRO1FBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFeEQsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDL0IsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUNuQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQixJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFFSCw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFHckMsQ0FBQztJQUdEOzs7T0FHRztJQUNJLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBR0Q7OztPQUdHO0lBQ08sS0FBSyxDQUFDLDJCQUEyQixDQUFDLElBQVU7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFFNUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUUzQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRixJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzsrR0E5S21CLGVBQWU7bUdBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEcEMsU0FBUzsySEFPUSxTQUFTO3NCQUF4QixLQUFLO2dCQU9VLFNBQVM7c0JBQXhCLEtBQUs7Z0JBTVUsS0FBSztzQkFBcEIsS0FBSztnQkFNVSxhQUFhO3NCQUE1QixLQUFLO2dCQU1VLEVBQUU7c0JBQWpCLEtBQUs7Z0JBT1UsT0FBTztzQkFBdEIsS0FBSztnQkFPVSxRQUFRO3NCQUF2QixLQUFLO2dCQU1VLFFBQVE7c0JBQXZCLEtBQUs7Z0JBTVUsUUFBUTtzQkFBdkIsS0FBSztnQkFNVSxPQUFPO3NCQUF0QixLQUFLO2dCQU1VLFdBQVc7c0JBQTFCLEtBQUs7Z0JBS1UsbUJBQW1CO3NCQUFsQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSB9IGZyb20gXCIuLi9jb3JlL3ZhbGlkYXRpb24tbWVzc2FnZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXBIZWxwZXIgfSBmcm9tICcuLi9zaGFyZWQvZm9ybS1ncm91cC5oZWxwZXInO1xuaW1wb3J0IHsgUG9wb3ZlckNvbnRlbnRQb3NpdGlvbiB9IGZyb20gJy4vcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudCc7XG5cblxuXG5leHBvcnQgdHlwZSBDb250cm9sTGFiZWxQb3NpdGlvbiA9IFwidG9wXCIgfCBcImJvdHRvbVwiIHwgXCJsZWZ0XCI7XG5cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBSZWFjdGl2ZSBGb3JtIENvbnRyb2xzLCBjb250YWluaW5nIEVDSS1zcGVjaWZpYyBzaGFyZWQgcHJvcGVydGllc1xuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGb3JtQ29udHJvbEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgXG4gIFxuICAvKipcbiAgICogSWYgdHJ1ZSwgd2lsbCBmb2N1cyB0aGUgY29udHJvbCdzIGlucHV0IHdoZW4gdGhlIHZpZXcgaXMgaW50aWFsaXplZFxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGF1dG9mb2N1cz86IGJvb2xlYW4gPSBmYWxzZTtcblxuXG4gIC8qKlxuICAgKiBVSS1vcmllbnRlZCBmb3JtIG1vZGVsIHRoYXQgcmV0YWlucyB0aGUgc3RhdGVzIGFuZCB2YWx1ZXMgb2YgdGhlIEhUTUwgY29udHJvbHMgb24gc2NyZWVuLlxuICAgKiBDYW4gYmUgYSB7QGxpbmsgRm9ybUNvbnRyb2x9IG9yIGEge0BsaW5rIEZvcm1Hcm91cH1cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtTW9kZWwhOiBBYnN0cmFjdENvbnRyb2w7XG5cblxuICAvKipcbiAgICogVGhlIGZvcm0gY29udHJvbCBsYWJlbFxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGxhYmVsPzogc3RyaW5nO1xuXG5cbiAgLyoqXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgZm9ybSBjb250cm9sIGxhYmVsICh0b3B8Ym90dG9tKVxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGxhYmVsUG9zaXRpb24/OiBDb250cm9sTGFiZWxQb3NpdGlvbiA9IFwidG9wXCI7XG5cblxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSBjb21wb25lbnQuIFdlIHVzZSB0aGlzIHRvIGlkZW50aWZ5IGEgY29udHJvbCBvbiBmb2N1cyBldmVudHMgYW5kIGhlbHAuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaWQ6IHN0cmluZyA9ICcnO1xuXG5cbiAgLyoqXG4gICAqIFRoZSBwZW5kaW5nIHN0YXR1cyBvZiB0aGUgY29udHJvbCwgY2FuIGJlIHVzZWQgdG8gdGVsbCB0aGUgdXNlciB0aGUgY29udHJvbCBpc1xuICAgKiBhd2FpdGluZyBkYXRhIHZpYSBhIHNwaW5uZXIgb3IgYW5pbWF0aW9uXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgcGVuZGluZz86IGJvb2xlYW4gPSBmYWxzZTtcblxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHJlcXVpcmVkIGZpZWxkIG9yIG5vdFxuICAgKiBAdG9kbzogU29tZXRpbWUgaW4gdGhlIGZ1dHVyZSBBbmd1bGFyIG1ha2VzIGl0IHNvdW5kIGxpa2UgdGhpcyB3aWxsIGJlIGhhbmRsZWQgdmlhIHRoZSBSZWFjdGl2ZSBmb3JtIFdoZW4gdGhhdCBoYXBwZW5zIHRoaXMgcHJvcGVydHkgY2FuIGJlIHJlbW92ZWRcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyByZXF1aXJlZD86IGJvb2xlYW4gPSBmYWxzZTtcblxuXG4gIC8qKlxuICAgKiBUaGUgdGFiaW5kZXggb2YgdGhlIGNvbnRyb2xcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyB0YWJpbmRleD86IG51bWJlciA9IDA7XG5cblxuICAvKipcbiAgICogRGlzYWJsZSB0aGUgY29udHJvbCBhbmQgZGlzcGxheSB0aGUgdmFsdWVcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyByZWFkb25seT86IGJvb2xlYW47XG5cblxuICAvKipcbiAgICogQ29uZGl0aW9uYWxseSBzaG93IGEgdG9vbHRpcCBvbiB0aGUgZm9ybSBjb250cm9sJ3MgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcD86IHN0cmluZztcblxuICBcbiAgLyoqXG4gICAqIENvbmRpdGlvbmFsbHkgc2hvdyBhIGhlbHAgcG9wb3ZlciBuZXh0IHRvIHRoZSBjb250cm9scyBsYWJlbC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBoZWxwUG9wb3Zlcj86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiBhIGhlbHAgcG9wb3ZlciBpcyBwcmVzZW50LCBhbGxvd3MgdGhlIHBvcG92ZXIgdG8gYmUgcG9zaXRpb25lZCBpbiBkaWZmZXJlbnQgbG9jYXRpb25zLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGhlbHBQb3BvdmVyUG9zaXRpb24/OiBQb3BvdmVyQ29udGVudFBvc2l0aW9uID0gJ3RvcC1sZWZ0JztcblxuICAvKipcbiAgICogQWxsIGN1cnJlbnQgdmFsaWRhdGlvbiBlcnJvcnNcbiAgICovXG4gIHB1YmxpYyB2YWxpZGF0aW9uRXJyb3JzOiBzdHJpbmcgPSBcIlwiO1xuXG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgZm9ybSBjb250cm9scyBpbnB1dCwgZ2V0bmVyYXRlZCBmcm9tIHRoZSBjb21wb25lbnRzIGlkLlxuICAgKi9cbiAgcHVibGljIGlucHV0SWQ6IHN0cmluZyA9ICcnO1xuXG5cbiAvKipcbiAgKiBOb3RpZmllcyBjb21wb25lbnQgc3Vic2NyaXB0aW9ucyB0aGF0IGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXG4gICogVXNlIHdpdGggYHRha2VVbnRpbCgpYCB3aGVuIHN1YnNjcmliaW5nIHRvIGNvbXBsZXRlIHN1YnNjcmlwdGlvbnNcbiAgKiBhdXRvbWF0aWNhbGx5LlxuICAqXG4gICogU2VlOlxuICAqIFtSeEpzXXtAbGluayBodHRwOi8vcmVhY3RpdmV4LmlvL3J4anMvY2xhc3MvZXM2L09ic2VydmFibGUuanN+T2JzZXJ2YWJsZS5odG1sI2luc3RhbmNlLW1ldGhvZC10YWtlVW50aWx9XG4gICogW2FuZCB0aGlzXXtAbGluayBodHRwczovL21lZGl1bS5jb20vQGJlbmxlc2gvcnhqcy1kb250LXVuc3Vic2NyaWJlLTY3NTNlZDRmZGE4N31cbiAgKiBbYW5kIHRoaXNde0BsaW5rIGh0dHBzOi8vbmV0YmFzYWwuY29tL3doZW4tdG8tdW5zdWJzY3JpYmUtaW4tYW5ndWxhci1kNjFjNmIyMWJhZDN9XG4gICogW2FuZCB0aGlzXXtAbGluayBodHRwOi8vYnJpYW5mbG92ZS5jb20vMjAxNi8xMi8xMS9hbmd1YXItMi11bnN1YnNjcmliZS1vYnNlcnZhYmxlcy99XG4gICovXG4gIHByb3RlY3RlZCBjb21wb25lbnREZXN0cm95ZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgRm9ybUNvbnRyb2xCYXNlLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRpb25NZXNzYWdlU2VydmljZTogVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBmb3JtR3JvdXBIZWxwZXI6IEZvcm1Hcm91cEhlbHBlclxuICApIHsgfVxuXG4gIC8qKlxuICAgKiBBbmd1bGFyIG9uQ2hhbmdlIGxpZmVjeWxlIGhvb2tcbiAgICovXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOlNpbXBsZUNoYW5nZXMpOnZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnJlYWRvbmx5ICYmIGNoYW5nZXMucmVhZG9ubHkuY3VycmVudFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChjaGFuZ2VzLnJlYWRvbmx5LmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLmZvcm1Nb2RlbC5kaXNhYmxlKCk7XG4gICAgICB9IGVsc2UgaWYgKGNoYW5nZXMucmVhZG9ubHkuY3VycmVudFZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLmZvcm1Nb2RlbC5lbmFibGUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5pZCAmJiBjaGFuZ2VzLmlkLmN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkKXtcbiAgICAgIHRoaXMuaW5wdXRJZCA9IHRoaXMuZm9ybUdyb3VwSGVscGVyLmdldElucHV0SWQodGhpcy5pZCk7XG4gICAgfVxuICB9XG5cbiAgXG4gIC8qKlxuICAgKiBBbmd1bGFyIG9uSW5pdCBsaWZlY3ljbGUgaG9vay5cbiAgICovXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0SWQgPSB0aGlzLmZvcm1Hcm91cEhlbHBlci5nZXRJbnB1dElkKHRoaXMuaWQpO1xuICAgIFxuICAgIC8vIHN1YnNjcmliZSB0byB2YWx1ZUNoYW5nZXMgT2JzZXJ2YWJsZSB0byB0YWtlIGFueSBlcnJvcyBhbmQgdHJhbnNsYXRlIHRoZW1cbiAgICB0aGlzLmZvcm1Nb2RlbC5zdGF0dXNDaGFuZ2VzLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQpXG4gICAgKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLnRyYW5zbGF0ZVZhbGlkYXRpb25NZXNzYWdlcyhkYXRhKVxuICAgIH0pO1xuXG4gICAgLy8gKHJlKXNldCB2YWxpZGF0aW9uIG1lc3NhZ2VzXG4gICAgdGhpcy50cmFuc2xhdGVWYWxpZGF0aW9uTWVzc2FnZXMoKTtcblxuICAgIFxuICB9XG4gICAgXG5cbiAgLyoqXG4gICAqIEFuZ3VsYXIgb25EZXN0cm95IGxpZmVjeWxlIGhvb2suIFxuICAgKiBVbnN1YnNjcmliZSBmcm9tIGFueSBvYnNlcnZhYmxlc1xuICAgKi9cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50RGVzdHJveWVkLm5leHQoKTtcbiAgICB0aGlzLmNvbXBvbmVudERlc3Ryb3llZC51bnN1YnNjcmliZSgpO1xuICB9XG5cblxuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCBzdWJzY3JpYmVzIHRvIHRoZSBmb3JtTW9kZWwncyB2YWx1ZUNoYW5nZXMgT2JzZXJ2YWJsZVxuICAgKiB0byB0YWtlIGFueSBlcnJvcyBhbmQgdHJhbnNsYXRlIHRoZW1cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyB0cmFuc2xhdGVWYWxpZGF0aW9uTWVzc2FnZXMoZGF0YT86IGFueSkge1xuICAgIGlmICghdGhpcy5mb3JtTW9kZWwpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgZm9ybSA9IHRoaXMuZm9ybU1vZGVsO1xuXG4gICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzID0gJyc7XG5cbiAgICBpZiAoIWZvcm0udmFsaWQpIHtcbiAgICAgIGxldCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLmdldEVycm9yTWVzc2FnZXMoZm9ybS5lcnJvcnMpO1xuICAgICAgaWYgKG1lc3NhZ2VzKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycyA9IG1lc3NhZ2VzLmpvaW4oJzsgJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn0iXX0=
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { takeUntil } from 'rxjs/operators';
|
|
4
|
-
import { forEachFormControl } from '../form-group/form-group.component';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../../core/validation-message.service";
|
|
7
|
-
import * as i2 from "@ngx-translate/core";
|
|
8
|
-
import * as i3 from "@angular/common";
|
|
9
|
-
export class FormControlLabelComponent {
|
|
10
|
-
constructor(validationMessageService, translateService) {
|
|
11
|
-
this.validationMessageService = validationMessageService;
|
|
12
|
-
this.translateService = translateService;
|
|
13
|
-
/**
|
|
14
|
-
* The form control label
|
|
15
|
-
*/
|
|
16
|
-
this.label = '';
|
|
17
|
-
/**
|
|
18
|
-
* The position of the form control label (top|bottom|left)
|
|
19
|
-
*/
|
|
20
|
-
this.labelPosition = "top";
|
|
21
|
-
/**An optional string to show if any of the underlying controls has an error. If falsy, one of the
|
|
22
|
-
* errors from the underlying controls will be used.
|
|
23
|
-
*/
|
|
24
|
-
this.overrideValidationError = "";
|
|
25
|
-
/**An optional flag to hide the validation messages.
|
|
26
|
-
*/
|
|
27
|
-
this.hideValidationMessage = false;
|
|
28
|
-
/**
|
|
29
|
-
* All current validation errors
|
|
30
|
-
*
|
|
31
|
-
* @type {string}
|
|
32
|
-
* @memberof FormControlBase
|
|
33
|
-
*/
|
|
34
|
-
this.validationErrors = "";
|
|
35
|
-
this.allControlsTouched = false;
|
|
36
|
-
this.componentDestroyed = new Subject();
|
|
37
|
-
}
|
|
38
|
-
async ngOnInit() {
|
|
39
|
-
// subscribe to statusChanges Observable to take any errors and translate them
|
|
40
|
-
if (this.control) {
|
|
41
|
-
this.control.statusChanges
|
|
42
|
-
.pipe(takeUntil(this.componentDestroyed))
|
|
43
|
-
.subscribe(() => {
|
|
44
|
-
this.translateValidationMessages(this.getErrors(this.control));
|
|
45
|
-
});
|
|
46
|
-
// (re)set validation messages
|
|
47
|
-
this.translateValidationMessages(this.getErrors(this.control));
|
|
48
|
-
}
|
|
49
|
-
if (this.id) {
|
|
50
|
-
this.attrId = this.id;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Angular onDestroy lifecyle hook.
|
|
55
|
-
* Unsubscribe from any observables
|
|
56
|
-
*
|
|
57
|
-
* @see https://angular.io/guide/lifecycle-hooks
|
|
58
|
-
* @memberof FormControlBase
|
|
59
|
-
*/
|
|
60
|
-
ngOnDestroy() {
|
|
61
|
-
this.componentDestroyed.next();
|
|
62
|
-
this.componentDestroyed.unsubscribe();
|
|
63
|
-
}
|
|
64
|
-
getErrors(control) {
|
|
65
|
-
control.markAsUntouched();
|
|
66
|
-
let errors = null;
|
|
67
|
-
let allTouched = true;
|
|
68
|
-
let controlFound = false;
|
|
69
|
-
forEachFormControl(control, (control) => {
|
|
70
|
-
errors = this.assignErrors(control, errors);
|
|
71
|
-
if (control.untouched) {
|
|
72
|
-
allTouched = false;
|
|
73
|
-
}
|
|
74
|
-
controlFound = true;
|
|
75
|
-
});
|
|
76
|
-
if (control.errors) {
|
|
77
|
-
errors = Object.assign(errors || {}, control.errors);
|
|
78
|
-
}
|
|
79
|
-
if (allTouched && controlFound) {
|
|
80
|
-
control.markAsTouched();
|
|
81
|
-
}
|
|
82
|
-
return errors;
|
|
83
|
-
}
|
|
84
|
-
assignErrors(control, errors) {
|
|
85
|
-
if (control.errors) {
|
|
86
|
-
errors = Object.assign(errors || {}, control.errors);
|
|
87
|
-
}
|
|
88
|
-
return errors;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Function that subscribes to the controls valueChanges Observable
|
|
92
|
-
* to take any erros and translate them
|
|
93
|
-
*
|
|
94
|
-
* @param {*} [data]
|
|
95
|
-
* @returns
|
|
96
|
-
* @memberof FormControlBase
|
|
97
|
-
*/
|
|
98
|
-
async translateValidationMessages(errors) {
|
|
99
|
-
if (errors) {
|
|
100
|
-
if (this.overrideValidationError) {
|
|
101
|
-
this.validationErrors = this.translateService.instant(this.overrideValidationError);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
let messages = await this.validationMessageService.getErrorMessages(errors);
|
|
105
|
-
if (messages) {
|
|
106
|
-
this.validationErrors = messages.join('; ');
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
this.validationErrors = '';
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormControlLabelComponent, deps: [{ token: i1.ValidationMessageService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
115
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormControlLabelComponent, selector: "ec-form-control-label", inputs: { id: "id", label: "label", control: "control", labelPosition: "labelPosition", overrideValidationError: "overrideValidationError", hideValidationMessage: "hideValidationMessage" }, host: { properties: { "attr.id": "this.attrId" } }, ngImport: i0, template: "<div class=\"control control-label-{{labelPosition}}\" [class.ec-untouched]=\"control?.untouched\">\n <label *ngIf=\"label\" ngPreserveWhitespaces>\n\n <span id=\"{{id}}_label\">{{label | translate}}</span>\n\n <span *ngIf=\"!hideValidationMessage && validationErrors && control?.touched && control?.invalid\">{{validationErrors | translate}}</span>\n </label>\n</div>", styles: [":host{color:var(--ec-form-control-color);font-size:var(--ec-form-control-font-size);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select,:host .control.is-readonly textarea{border-color:var(--ec-form-control-border-color-readonly);background-color:var(--ec-form-control-background-color-readonly);background-clip:border-box;background-image:none;color:var(--ec-form-control-color-readonly);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:focus,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:hover:not(:disabled):not(:focus),:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:hover:not(:disabled):not(:focus){border-color:var(--ec-form-control-border-color-hover)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-required,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-required{display:none}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-form-control-border-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:hover:not(:disabled):not(:focus){border-color:var(--ec-form-control-border-color-hover)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}label{color:var(--ec-form-control-label-color, var(--ec-color-secondary-dark));display:block;font-size:var(--ec-font-size-label);line-height:1;margin:calc(var(--ec-font-size-label) / 2) 0}.control.ec-untouched ::ng-deep input.ng-invalid.ng-touched{background-image:none;padding-left:.5rem}.control.ec-untouched ::ng-deep input.ng-invalid.ng-touched:not(.is-empty)~.units-left{left:0}.control.ec-untouched ::ng-deep input:required:not(:disabled).is-empty{background-image:none;background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem}.control.ec-untouched ::ng-deep input:required:not(:disabled).is-empty:focus{border-color:var(--ec-form-control-border-color-focus);box-shadow:var(--ec-form-control-box-shadow-focus);position:relative;z-index:1}.control-label-left{display:flex}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
|
|
116
|
-
}
|
|
117
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormControlLabelComponent, decorators: [{
|
|
118
|
-
type: Component,
|
|
119
|
-
args: [{ selector: 'ec-form-control-label', template: "<div class=\"control control-label-{{labelPosition}}\" [class.ec-untouched]=\"control?.untouched\">\n <label *ngIf=\"label\" ngPreserveWhitespaces>\n\n <span id=\"{{id}}_label\">{{label | translate}}</span>\n\n <span *ngIf=\"!hideValidationMessage && validationErrors && control?.touched && control?.invalid\">{{validationErrors | translate}}</span>\n </label>\n</div>", styles: [":host{color:var(--ec-form-control-color);font-size:var(--ec-form-control-font-size);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select,:host .control.is-readonly textarea{border-color:var(--ec-form-control-border-color-readonly);background-color:var(--ec-form-control-background-color-readonly);background-clip:border-box;background-image:none;color:var(--ec-form-control-color-readonly);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:focus,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:hover:not(:disabled):not(:focus),:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:hover:not(:disabled):not(:focus){border-color:var(--ec-form-control-border-color-hover)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-required,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-required{display:none}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-form-control-border-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:hover:not(:disabled):not(:focus){border-color:var(--ec-form-control-border-color-hover)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}label{color:var(--ec-form-control-label-color, var(--ec-color-secondary-dark));display:block;font-size:var(--ec-font-size-label);line-height:1;margin:calc(var(--ec-font-size-label) / 2) 0}.control.ec-untouched ::ng-deep input.ng-invalid.ng-touched{background-image:none;padding-left:.5rem}.control.ec-untouched ::ng-deep input.ng-invalid.ng-touched:not(.is-empty)~.units-left{left:0}.control.ec-untouched ::ng-deep input:required:not(:disabled).is-empty{background-image:none;background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem}.control.ec-untouched ::ng-deep input:required:not(:disabled).is-empty:focus{border-color:var(--ec-form-control-border-color-focus);box-shadow:var(--ec-form-control-box-shadow-focus);position:relative;z-index:1}.control-label-left{display:flex}\n"] }]
|
|
120
|
-
}], ctorParameters: () => [{ type: i1.ValidationMessageService }, { type: i2.TranslateService }], propDecorators: { id: [{
|
|
121
|
-
type: Input
|
|
122
|
-
}], attrId: [{
|
|
123
|
-
type: HostBinding,
|
|
124
|
-
args: ['attr.id']
|
|
125
|
-
}], label: [{
|
|
126
|
-
type: Input
|
|
127
|
-
}], control: [{
|
|
128
|
-
type: Input
|
|
129
|
-
}], labelPosition: [{
|
|
130
|
-
type: Input
|
|
131
|
-
}], overrideValidationError: [{
|
|
132
|
-
type: Input
|
|
133
|
-
}], hideValidationMessage: [{
|
|
134
|
-
type: Input
|
|
135
|
-
}] } });
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLWxhYmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9mb3JtLWNvbnRyb2wtbGFiZWwvZm9ybS1jb250cm9sLWxhYmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9mb3JtLWNvbnRyb2wtbGFiZWwvZm9ybS1jb250cm9sLWxhYmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFPeEUsTUFBTSxPQUFPLHlCQUF5QjtJQW9EcEMsWUFDWSx3QkFBa0QsRUFDcEQsZ0JBQWtDO1FBRGhDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDcEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTFDNUM7O1dBRUc7UUFDYSxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBV25DOzthQUVLO1FBQ1csa0JBQWEsR0FBMEIsS0FBSyxDQUFDO1FBRzdEOztXQUVHO1FBQ2EsNEJBQXVCLEdBQVksRUFBRSxDQUFDO1FBRXREO1dBQ0c7UUFDYSwwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFDdkQ7Ozs7O1dBS0c7UUFDSSxxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFFOUIsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBRW5DLHVCQUFrQixHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO0lB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O2dCQUM5QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQzsrR0E5SVUseUJBQXlCO21HQUF6Qix5QkFBeUIsK1NDZHRDLDBYQU9NOzs0RkRPTyx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCOzRIQVNqQixFQUFFO3NCQUFqQixLQUFLO2dCQUt5QixNQUFNO3NCQUFwQyxXQUFXO3VCQUFDLFNBQVM7Z0JBS04sS0FBSztzQkFBcEIsS0FBSztnQkFTVSxPQUFPO3NCQUF0QixLQUFLO2dCQUtVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBTVUsdUJBQXVCO3NCQUF0QyxLQUFLO2dCQUlVLHFCQUFxQjtzQkFBcEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdmFsaWRhdGlvbi1tZXNzYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udHJvbExhYmVsUG9zaXRpb24gfSBmcm9tICcuLi9mb3JtLWNvbnRyb2wtYmFzZSc7XG5pbXBvcnQgeyBmb3JFYWNoRm9ybUNvbnRyb2wgfSBmcm9tICcuLi9mb3JtLWdyb3VwL2Zvcm0tZ3JvdXAuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWMtZm9ybS1jb250cm9sLWxhYmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tY29udHJvbC1sYWJlbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tY29udHJvbC1sYWJlbC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sTGFiZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8qKlxuICAgKiBJZFxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCaW5kIGlkIHRvIGhvc3QgZWxlbWVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgcHVibGljIGF0dHJJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZvcm0gY29udHJvbCBsYWJlbFxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogVUktb3JpZW50ZWQgZm9ybSBtb2RlbCB0aGF0IHJldGFpbnMgdGhlIHN0YXRlcyBhbmQgdmFsdWVzIG9mIHRoZSBIVE1MIGNvbnRyb2xzIG9uIHNjcmVlbi5cbiAgICogQ2FuIGJlIGEge0BsaW5rIEZvcm1Db250cm9sfSwgYSB7QGxpbmsgRm9ybUdyb3VwfSBvciBhIHtAbGluayBGb3JtQXJyYXl9XG4gICAqXG4gICAqIEB0eXBlIHtBYnN0cmFjdENvbnRyb2x9XG4gICAqIEBtZW1iZXJvZiBGb3JtQ29udHJvbEJhc2VcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBjb250cm9sPzogQWJzdHJhY3RDb250cm9sO1xuXG4gIC8qKlxuICAgICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgZm9ybSBjb250cm9sIGxhYmVsICh0b3B8Ym90dG9tfGxlZnQpXG4gICAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbFBvc2l0aW9uPzogQ29udHJvbExhYmVsUG9zaXRpb24gPSBcInRvcFwiO1xuXG5cbiAgLyoqQW4gb3B0aW9uYWwgc3RyaW5nIHRvIHNob3cgaWYgYW55IG9mIHRoZSB1bmRlcmx5aW5nIGNvbnRyb2xzIGhhcyBhbiBlcnJvci4gSWYgZmFsc3ksIG9uZSBvZiB0aGVcbiAgICogZXJyb3JzIGZyb20gdGhlIHVuZGVybHlpbmcgY29udHJvbHMgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIG92ZXJyaWRlVmFsaWRhdGlvbkVycm9yPzogc3RyaW5nID0gXCJcIjtcblxuICAvKipBbiBvcHRpb25hbCBmbGFnIHRvIGhpZGUgdGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaGlkZVZhbGlkYXRpb25NZXNzYWdlPzpib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBBbGwgY3VycmVudCB2YWxpZGF0aW9uIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRm9ybUNvbnRyb2xCYXNlXG4gICAqL1xuICBwdWJsaWMgdmFsaWRhdGlvbkVycm9yczogc3RyaW5nID0gXCJcIjtcblxuICBwdWJsaWMgYWxsQ29udHJvbHNUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnREZXN0cm95ZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB2YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2U6IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7IH1cblxuICBwdWJsaWMgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgLy8gc3Vic2NyaWJlIHRvIHN0YXR1c0NoYW5nZXMgT2JzZXJ2YWJsZSB0byB0YWtlIGFueSBlcnJvcnMgYW5kIHRyYW5zbGF0ZSB0aGVtXG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgdGhpcy5jb250cm9sLnN0YXR1c0NoYW5nZXNcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVWYWxpZGF0aW9uTWVzc2FnZXModGhpcy5nZXRFcnJvcnModGhpcy5jb250cm9sISkpXG4gICAgICAgIH0pO1xuXG4gICAgICAvLyAocmUpc2V0IHZhbGlkYXRpb24gbWVzc2FnZXNcbiAgICAgIHRoaXMudHJhbnNsYXRlVmFsaWRhdGlvbk1lc3NhZ2VzKHRoaXMuZ2V0RXJyb3JzKHRoaXMuY29udHJvbCkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlkKSB7XG4gICAgICB0aGlzLmF0dHJJZCA9IHRoaXMuaWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFuZ3VsYXIgb25EZXN0cm95IGxpZmVjeWxlIGhvb2suXG4gICAqIFVuc3Vic2NyaWJlIGZyb20gYW55IG9ic2VydmFibGVzXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2xpZmVjeWNsZS1ob29rc1xuICAgKiBAbWVtYmVyb2YgRm9ybUNvbnRyb2xCYXNlXG4gICAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnREZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuY29tcG9uZW50RGVzdHJveWVkLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEVycm9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcblxuICAgIGxldCBlcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgYWxsVG91Y2hlZDogYm9vbGVhbiA9IHRydWU7XG4gICAgbGV0IGNvbnRyb2xGb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZm9yRWFjaEZvcm1Db250cm9sKGNvbnRyb2wsIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgIGVycm9ycyA9IHRoaXMuYXNzaWduRXJyb3JzKGNvbnRyb2wsIGVycm9ycyk7XG4gICAgICBpZiAoY29udHJvbC51bnRvdWNoZWQpIHtcbiAgICAgICAgYWxsVG91Y2hlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgY29udHJvbEZvdW5kID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIGlmIChjb250cm9sLmVycm9ycykge1xuICAgICAgZXJyb3JzID0gT2JqZWN0LmFzc2lnbihlcnJvcnMgfHwge30sIGNvbnRyb2wuZXJyb3JzKTtcbiAgICB9XG5cbiAgICBpZiAoYWxsVG91Y2hlZCAmJiBjb250cm9sRm91bmQpIHtcbiAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICBwcml2YXRlIGFzc2lnbkVycm9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKGNvbnRyb2wuZXJyb3JzKSB7XG4gICAgICBlcnJvcnMgPSBPYmplY3QuYXNzaWduKGVycm9ycyB8fCB7fSwgY29udHJvbC5lcnJvcnMpO1xuICAgIH1cblxuICAgIHJldHVybiBlcnJvcnNcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0aGF0IHN1YnNjcmliZXMgdG8gdGhlIGNvbnRyb2xzIHZhbHVlQ2hhbmdlcyBPYnNlcnZhYmxlXG4gICAqIHRvIHRha2UgYW55IGVycm9zIGFuZCB0cmFuc2xhdGUgdGhlbVxuICAgKlxuICAgKiBAcGFyYW0geyp9IFtkYXRhXVxuICAgKiBAcmV0dXJuc1xuICAgKiBAbWVtYmVyb2YgRm9ybUNvbnRyb2xCYXNlXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHRyYW5zbGF0ZVZhbGlkYXRpb25NZXNzYWdlcyhlcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsKSB7XG4gICAgaWYgKGVycm9ycykge1xuICAgICAgaWYodGhpcy5vdmVycmlkZVZhbGlkYXRpb25FcnJvcil7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMub3ZlcnJpZGVWYWxpZGF0aW9uRXJyb3IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IG1lc3NhZ2VzID0gYXdhaXQgdGhpcy52YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlcyhlcnJvcnMpO1xuICAgICAgICBpZiAobWVzc2FnZXMpIHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMgPSBtZXNzYWdlcy5qb2luKCc7ICcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycyA9ICcnO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRyb2wgY29udHJvbC1sYWJlbC17e2xhYmVsUG9zaXRpb259fVwiIFtjbGFzcy5lYy11bnRvdWNoZWRdPVwiY29udHJvbD8udW50b3VjaGVkXCI+XG4gIDxsYWJlbCAqbmdJZj1cImxhYmVsXCIgbmdQcmVzZXJ2ZVdoaXRlc3BhY2VzPlxuXG4gICAgPHNwYW4gaWQ9XCJ7e2lkfX1fbGFiZWxcIj57e2xhYmVsIHwgdHJhbnNsYXRlfX08L3NwYW4+XG5cbiAgICA8c3BhbiAqbmdJZj1cIiFoaWRlVmFsaWRhdGlvbk1lc3NhZ2UgJiYgdmFsaWRhdGlvbkVycm9ycyAmJiBjb250cm9sPy50b3VjaGVkICYmIGNvbnRyb2w/LmludmFsaWRcIj57e3ZhbGlkYXRpb25FcnJvcnMgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgPC9sYWJlbD5cbjwvZGl2PiJdfQ==
|