@porscheinformatik/material-addons 0.0.34 → 0.0.99
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 +29 -29
- package/esm2022/lib/button/button.mjs +7 -0
- package/esm2022/lib/button/button.module.mjs +26 -0
- package/esm2022/lib/button/danger-button/danger-button.component.mjs +28 -0
- package/esm2022/lib/button/flat-button/link-button.component.mjs +28 -0
- package/esm2022/lib/button/icon-button/icon-button.component.mjs +28 -0
- package/esm2022/lib/button/mad-basic-button.mjs +39 -0
- package/esm2022/lib/button/outline-button/outline-button.component.mjs +28 -0
- package/esm2022/lib/button/primary-button/primary-button.component.mjs +28 -0
- package/esm2022/lib/card/card.component.mjs +129 -0
- package/esm2022/lib/card/card.mjs +2 -0
- package/esm2022/lib/card/card.module.mjs +23 -0
- package/esm2022/lib/content-panel/content-header/content-header.component.mjs +11 -0
- package/esm2022/lib/content-panel/content-panel-container/content-panel-container.component.mjs +11 -0
- package/esm2022/lib/content-panel/content-panel-container-content/content-panel-container-content.component.mjs +11 -0
- package/esm2022/lib/content-panel/content-panel-container-footer/content-panel-container-footer.component.mjs +11 -0
- package/esm2022/lib/content-panel/content-panel.module.mjs +42 -0
- package/esm2022/lib/content-panel/main-container/main-container.component.mjs +11 -0
- package/esm2022/lib/data-table/data-table-action-type.mjs +6 -0
- package/esm2022/lib/data-table/data-table-action.mjs +2 -0
- package/esm2022/lib/data-table/data-table-column-definition.mjs +2 -0
- package/esm2022/lib/data-table/data-table-column.mjs +2 -0
- package/esm2022/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.mjs +103 -0
- package/esm2022/lib/data-table/data-table-row.mjs +2 -0
- package/esm2022/lib/data-table/data-table.component.mjs +529 -0
- package/esm2022/lib/data-table/data-table.mjs +3 -0
- package/esm2022/lib/data-table/data-table.module.mjs +81 -0
- package/esm2022/lib/file-upload/drag-and-drop-directive.directive.mjs +61 -0
- package/esm2022/lib/file-upload/file-upload.component.mjs +78 -0
- package/esm2022/lib/flowbar/flowbar.component.mjs +190 -0
- package/esm2022/lib/flowbar/flowbar.module.mjs +19 -0
- package/esm2022/lib/material-action-button/material-action-button.component.mjs +34 -0
- package/esm2022/lib/material-action-button/material-action-button.module.mjs +22 -0
- package/esm2022/lib/material-addons.module.mjs +45 -0
- package/esm2022/lib/numeric-field/number-format.service.mjs +139 -0
- package/esm2022/lib/numeric-field/numeric-field.directive.mjs +295 -0
- package/esm2022/lib/numeric-field/numeric-field.mjs +2 -0
- package/esm2022/lib/numeric-field/numeric-field.module.mjs +24 -0
- package/esm2022/lib/quick-list/base-quick-list.component.mjs +124 -0
- package/esm2022/lib/quick-list/quick-list-compact/quick-list-compact.component.mjs +22 -0
- package/esm2022/lib/quick-list/quick-list.component.mjs +23 -0
- package/esm2022/lib/quick-list/quick-list.mjs +6 -0
- package/esm2022/lib/quick-list/quick-list.module.mjs +46 -0
- package/esm2022/lib/quick-list/reactive-form-quick-list/reactive-form-quick-list.component.mjs +22 -0
- package/esm2022/lib/quick-list/reactive-form-quick-list-compact/reactive-form-quick-list-compact.component.mjs +22 -0
- package/esm2022/lib/readonly/readonly-form-field/readonly-form-field.component.mjs +181 -0
- package/esm2022/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.mjs +206 -0
- package/esm2022/lib/readonly/readonly-form-field.module.mjs +25 -0
- package/esm2022/lib/stepper/mad-stepper-animation.mjs +13 -0
- package/esm2022/lib/stepper/step-header/step-header.component.mjs +77 -0
- package/esm2022/lib/stepper/stepper.component.mjs +159 -0
- package/esm2022/lib/stepper/stepper.module.mjs +23 -0
- package/esm2022/lib/table/column-header.mjs +2 -0
- package/esm2022/lib/table/table-action.mjs +2 -0
- package/esm2022/lib/table/table.component.mjs +130 -0
- package/esm2022/lib/table/table.mjs +2 -0
- package/esm2022/lib/table/table.module.mjs +56 -0
- package/esm2022/lib/throttle-click/throttle-click.directive.mjs +38 -0
- package/esm2022/lib/throttle-click/throttle-click.module.mjs +18 -0
- package/esm2022/lib/toolbar/toolbar-action.interface.mjs +2 -0
- package/esm2022/lib/toolbar/toolbar.component.mjs +78 -0
- package/esm2022/lib/toolbar/toolbar.module.mjs +56 -0
- package/esm2022/lib/toolbar/toolbar.service.mjs +124 -0
- package/esm2022/porscheinformatik-material-addons.mjs +5 -0
- package/esm2022/public_api.mjs +42 -0
- package/fesm2022/porscheinformatik-material-addons.mjs +3229 -0
- package/fesm2022/porscheinformatik-material-addons.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/button/button.d.ts +7 -0
- package/lib/button/button.d.ts.map +1 -0
- package/lib/button/button.module.d.ts +17 -0
- package/lib/button/button.module.d.ts.map +1 -0
- package/lib/button/danger-button/danger-button.component.d.ts +13 -0
- package/lib/button/danger-button/danger-button.component.d.ts.map +1 -0
- package/lib/button/flat-button/link-button.component.d.ts +13 -0
- package/lib/button/flat-button/link-button.component.d.ts.map +1 -0
- package/lib/button/icon-button/icon-button.component.d.ts +13 -0
- package/lib/button/icon-button/icon-button.component.d.ts.map +1 -0
- package/lib/button/mad-basic-button.d.ts +14 -0
- package/lib/button/mad-basic-button.d.ts.map +1 -0
- package/lib/button/outline-button/outline-button.component.d.ts +13 -0
- package/lib/button/outline-button/outline-button.component.d.ts.map +1 -0
- package/lib/button/primary-button/primary-button.component.d.ts +13 -0
- package/lib/button/primary-button/primary-button.component.d.ts.map +1 -0
- package/lib/card/card.component.d.ts +28 -0
- package/lib/card/card.component.d.ts.map +1 -0
- package/lib/card/card.d.ts +2 -0
- package/lib/card/card.d.ts.map +1 -0
- package/lib/card/card.module.d.ts +14 -0
- package/lib/card/card.module.d.ts.map +1 -0
- package/lib/content-panel/content-header/content-header.component.d.ts +6 -0
- package/lib/content-panel/content-header/content-header.component.d.ts.map +1 -0
- package/lib/content-panel/content-panel-container/content-panel-container.component.d.ts +6 -0
- package/lib/content-panel/content-panel-container/content-panel-container.component.d.ts.map +1 -0
- package/lib/content-panel/content-panel-container-content/content-panel-container-content.component.d.ts +6 -0
- package/lib/content-panel/content-panel-container-content/content-panel-container-content.component.d.ts.map +1 -0
- package/lib/content-panel/content-panel-container-footer/content-panel-container-footer.component.d.ts +6 -0
- package/lib/content-panel/content-panel-container-footer/content-panel-container-footer.component.d.ts.map +1 -0
- package/lib/content-panel/content-panel.module.d.ts +13 -0
- package/lib/content-panel/content-panel.module.d.ts.map +1 -0
- package/lib/content-panel/main-container/main-container.component.d.ts +6 -0
- package/lib/content-panel/main-container/main-container.component.d.ts.map +1 -0
- package/lib/data-table/data-table-action-type.d.ts +6 -0
- package/lib/data-table/data-table-action-type.d.ts.map +1 -0
- package/lib/data-table/data-table-action.d.ts +8 -0
- package/lib/data-table/data-table-action.d.ts.map +1 -0
- package/lib/data-table/data-table-column-definition.d.ts +28 -0
- package/lib/data-table/data-table-column-definition.d.ts.map +1 -0
- package/lib/data-table/data-table-column.d.ts +11 -0
- package/lib/data-table/data-table-column.d.ts.map +1 -0
- package/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.d.ts +27 -0
- package/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.d.ts.map +1 -0
- package/lib/data-table/data-table-row.d.ts +7 -0
- package/lib/data-table/data-table-row.d.ts.map +1 -0
- package/lib/data-table/data-table.component.d.ts +123 -0
- package/lib/data-table/data-table.component.d.ts.map +1 -0
- package/lib/data-table/data-table.d.ts +6 -0
- package/lib/data-table/data-table.d.ts.map +1 -0
- package/lib/data-table/data-table.module.d.ts +25 -0
- package/lib/data-table/data-table.module.d.ts.map +1 -0
- package/lib/file-upload/drag-and-drop-directive.directive.d.ts +13 -0
- package/lib/file-upload/drag-and-drop-directive.directive.d.ts.map +1 -0
- package/lib/file-upload/file-upload.component.d.ts +22 -0
- package/lib/file-upload/file-upload.component.d.ts.map +1 -0
- package/lib/flowbar/flowbar.component.d.ts +47 -0
- package/lib/flowbar/flowbar.component.d.ts.map +1 -0
- package/lib/flowbar/flowbar.module.d.ts +10 -0
- package/lib/flowbar/flowbar.module.d.ts.map +1 -0
- package/lib/material-action-button/material-action-button.component.d.ts +12 -8
- package/lib/material-action-button/material-action-button.component.d.ts.map +1 -0
- package/lib/material-action-button/material-action-button.module.d.ts +13 -2
- package/lib/material-action-button/material-action-button.module.d.ts.map +1 -0
- package/lib/material-addons.module.d.ts +15 -2
- package/lib/material-addons.module.d.ts.map +1 -0
- package/lib/numeric-field/number-format.service.d.ts +31 -0
- package/lib/numeric-field/number-format.service.d.ts.map +1 -0
- package/lib/numeric-field/numeric-field.d.ts +2 -0
- package/lib/numeric-field/numeric-field.d.ts.map +1 -0
- package/lib/numeric-field/numeric-field.directive.d.ts +45 -0
- package/lib/numeric-field/numeric-field.directive.d.ts.map +1 -0
- package/lib/numeric-field/numeric-field.module.d.ts +10 -0
- package/lib/numeric-field/numeric-field.module.d.ts.map +1 -0
- package/lib/quick-list/base-quick-list.component.d.ts +41 -0
- package/lib/quick-list/base-quick-list.component.d.ts.map +1 -0
- package/lib/quick-list/quick-list-compact/quick-list-compact.component.d.ts +12 -0
- package/lib/quick-list/quick-list-compact/quick-list-compact.component.d.ts.map +1 -0
- package/lib/quick-list/quick-list.component.d.ts +12 -0
- package/lib/quick-list/quick-list.component.d.ts.map +1 -0
- package/lib/quick-list/quick-list.d.ts +6 -0
- package/lib/quick-list/quick-list.d.ts.map +1 -0
- package/lib/quick-list/quick-list.module.d.ts +17 -0
- package/lib/quick-list/quick-list.module.d.ts.map +1 -0
- package/lib/quick-list/reactive-form-quick-list/reactive-form-quick-list.component.d.ts +12 -0
- package/lib/quick-list/reactive-form-quick-list/reactive-form-quick-list.component.d.ts.map +1 -0
- package/lib/quick-list/reactive-form-quick-list-compact/reactive-form-quick-list-compact.component.d.ts +12 -0
- package/lib/quick-list/reactive-form-quick-list-compact/reactive-form-quick-list-compact.component.d.ts.map +1 -0
- package/lib/readonly/readonly-form-field/readonly-form-field.component.d.ts +56 -14
- package/lib/readonly/readonly-form-field/readonly-form-field.component.d.ts.map +1 -0
- package/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.d.ts +89 -31
- package/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.d.ts.map +1 -0
- package/lib/readonly/readonly-form-field.module.d.ts +16 -2
- package/lib/readonly/readonly-form-field.module.d.ts.map +1 -0
- package/lib/stepper/mad-stepper-animation.d.ts +8 -0
- package/lib/stepper/mad-stepper-animation.d.ts.map +1 -0
- package/lib/stepper/step-header/step-header.component.d.ts +27 -0
- package/lib/stepper/step-header/step-header.component.d.ts.map +1 -0
- package/lib/stepper/stepper.component.d.ts +53 -0
- package/lib/stepper/stepper.component.d.ts.map +1 -0
- package/lib/stepper/stepper.module.d.ts +14 -0
- package/lib/stepper/stepper.module.d.ts.map +1 -0
- package/lib/table/column-header.d.ts +8 -0
- package/lib/table/column-header.d.ts.map +1 -0
- package/lib/table/table-action.d.ts +6 -0
- package/lib/table/table-action.d.ts.map +1 -0
- package/lib/table/table.component.d.ts +43 -0
- package/lib/table/table.component.d.ts.map +1 -0
- package/lib/table/table.d.ts +4 -0
- package/lib/table/table.d.ts.map +1 -0
- package/lib/table/table.module.d.ts +18 -0
- package/lib/table/table.module.d.ts.map +1 -0
- package/lib/throttle-click/throttle-click.directive.d.ts +14 -0
- package/lib/throttle-click/throttle-click.directive.d.ts.map +1 -0
- package/lib/throttle-click/throttle-click.module.d.ts +9 -0
- package/lib/throttle-click/throttle-click.module.d.ts.map +1 -0
- package/lib/toolbar/toolbar-action.interface.d.ts +28 -18
- package/lib/toolbar/toolbar-action.interface.d.ts.map +1 -0
- package/lib/toolbar/toolbar.component.d.ts +28 -19
- package/lib/toolbar/toolbar.component.d.ts.map +1 -0
- package/lib/toolbar/toolbar.module.d.ts +18 -2
- package/lib/toolbar/toolbar.module.d.ts.map +1 -0
- package/lib/toolbar/toolbar.service.d.ts +44 -33
- package/lib/toolbar/toolbar.service.d.ts.map +1 -0
- package/package.json +29 -24
- package/porscheinformatik-material-addons.d.ts.map +1 -0
- package/public_api.d.ts +39 -0
- package/public_api.d.ts.map +1 -0
- package/themes/common/styles.scss +359 -303
- package/themes/pbv.scss +64 -56
- package/themes/poa.scss +64 -40
- package/bundles/porscheinformatik-material-addons.umd.js +0 -755
- package/esm2015/lib/material-action-button/material-action-button.component.js +0 -43
- package/esm2015/lib/material-action-button/material-action-button.module.js +0 -19
- package/esm2015/lib/material-addons.module.js +0 -16
- package/esm2015/lib/readonly/readonly-form-field/readonly-form-field.component.js +0 -61
- package/esm2015/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.js +0 -124
- package/esm2015/lib/readonly/readonly-form-field.module.js +0 -20
- package/esm2015/lib/toolbar/toolbar-action.interface.js +0 -47
- package/esm2015/lib/toolbar/toolbar.component.js +0 -112
- package/esm2015/lib/toolbar/toolbar.module.js +0 -29
- package/esm2015/lib/toolbar/toolbar.service.js +0 -197
- package/esm2015/porscheinformatik-material-addons.js +0 -9
- package/esm2015/public-api.js +0 -18
- package/esm5/lib/material-action-button/material-action-button.component.js +0 -45
- package/esm5/lib/material-action-button/material-action-button.module.js +0 -23
- package/esm5/lib/material-addons.module.js +0 -20
- package/esm5/lib/readonly/readonly-form-field/readonly-form-field.component.js +0 -67
- package/esm5/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.js +0 -145
- package/esm5/lib/readonly/readonly-form-field.module.js +0 -24
- package/esm5/lib/toolbar/toolbar-action.interface.js +0 -47
- package/esm5/lib/toolbar/toolbar.component.js +0 -131
- package/esm5/lib/toolbar/toolbar.module.js +0 -33
- package/esm5/lib/toolbar/toolbar.service.js +0 -245
- package/esm5/porscheinformatik-material-addons.js +0 -9
- package/esm5/public-api.js +0 -18
- package/porscheinformatik-material-addons.d.ts +0 -4
- package/porscheinformatik-material-addons.metadata.json +0 -1
- package/public-api.d.ts +0 -10
package/esm2022/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.mjs
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { Component, 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 "@angular/material/tooltip";
|
|
5
|
+
import * as i3 from "../readonly-form-field/readonly-form-field.component";
|
|
6
|
+
/**
|
|
7
|
+
* Wraps a mat-form-field to replace it by a readOnly representation if necessary
|
|
8
|
+
*
|
|
9
|
+
* @author Stefan Laesser
|
|
10
|
+
*/
|
|
11
|
+
export class ReadOnlyFormFieldWrapperComponent {
|
|
12
|
+
constructor(changeDetector, elementRef) {
|
|
13
|
+
this.changeDetector = changeDetector;
|
|
14
|
+
this.elementRef = elementRef;
|
|
15
|
+
/**
|
|
16
|
+
* If set to "false", the contained mat-form-field is rendered in all it's glory.
|
|
17
|
+
* If set to "true", a readonly representation of the value is shown using the mat-form-fields label.
|
|
18
|
+
*/
|
|
19
|
+
this.readonly = true;
|
|
20
|
+
this.textAlign = 'left';
|
|
21
|
+
this.formatNumber = false;
|
|
22
|
+
this.decimalPlaces = 2;
|
|
23
|
+
this.roundValue = false;
|
|
24
|
+
this.autofillDecimals = false;
|
|
25
|
+
this.unit = null;
|
|
26
|
+
this.unitPosition = 'left';
|
|
27
|
+
this.errorMessage = null;
|
|
28
|
+
/**
|
|
29
|
+
* If set to "false", a readonly input will be rendered.
|
|
30
|
+
* If set to "true", a readonly textarea will be rendered instead.
|
|
31
|
+
*/
|
|
32
|
+
this.multiline = false;
|
|
33
|
+
/**
|
|
34
|
+
* If shrinkIfEmpty is set to "false", nothing changes
|
|
35
|
+
* If set to "true" and multiline is also "true", the textarea will
|
|
36
|
+
* shrink to one row, if value is empty/null/undefined.
|
|
37
|
+
* Otherwise, the defined rows-value will be used
|
|
38
|
+
*/
|
|
39
|
+
this.shrinkIfEmpty = false;
|
|
40
|
+
this.hideIconInReadOnlyMode = false;
|
|
41
|
+
/**
|
|
42
|
+
* if cdkTextareaAutosize is active for textareas
|
|
43
|
+
*/
|
|
44
|
+
this.multilineAutoSize = false;
|
|
45
|
+
this.suffixClickedEmitter = new EventEmitter();
|
|
46
|
+
this.prefixClickedEmitter = new EventEmitter();
|
|
47
|
+
this.toolTipForInputEnabled = false;
|
|
48
|
+
}
|
|
49
|
+
ngOnInit() {
|
|
50
|
+
this.doRendering();
|
|
51
|
+
}
|
|
52
|
+
ngAfterViewInit() {
|
|
53
|
+
this.setReadonlyFieldStyle();
|
|
54
|
+
this.doRendering();
|
|
55
|
+
}
|
|
56
|
+
ngAfterViewChecked() {
|
|
57
|
+
this.setReadonlyFieldStyle();
|
|
58
|
+
this.setTooltipForOverflownField();
|
|
59
|
+
}
|
|
60
|
+
ngOnChanges(_) {
|
|
61
|
+
this.doRendering();
|
|
62
|
+
}
|
|
63
|
+
getLabel() {
|
|
64
|
+
if (!this.label) {
|
|
65
|
+
this.extractLabel();
|
|
66
|
+
}
|
|
67
|
+
return this.label;
|
|
68
|
+
}
|
|
69
|
+
suffixClicked() {
|
|
70
|
+
this.suffixClickedEmitter.emit(null);
|
|
71
|
+
}
|
|
72
|
+
prefixClicked() {
|
|
73
|
+
this.prefixClickedEmitter.emit(null);
|
|
74
|
+
}
|
|
75
|
+
doRendering() {
|
|
76
|
+
if (!this.originalContent) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (!this.readonly) {
|
|
80
|
+
this.correctWidth();
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
this.changeDetector.detectChanges();
|
|
84
|
+
}
|
|
85
|
+
extractLabel() {
|
|
86
|
+
if (!this.originalContent || !this.originalContent.nativeElement) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
const labelElement = this.originalContent.nativeElement.querySelector('mat-label');
|
|
90
|
+
this.label = labelElement ? labelElement.innerHTML : 'mat-label is missing!';
|
|
91
|
+
}
|
|
92
|
+
correctWidth() {
|
|
93
|
+
const formField = this.originalContent.nativeElement.querySelector('mat-form-field');
|
|
94
|
+
if (formField) {
|
|
95
|
+
formField.setAttribute('style', 'width:100%');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
setReadonlyFieldStyle() {
|
|
99
|
+
const input = this.readOnlyContentWrapper?.nativeElement?.querySelector('input');
|
|
100
|
+
if (input) {
|
|
101
|
+
const textOverFlowStyleValue = this.getTextOverFlowStyleValue();
|
|
102
|
+
if (textOverFlowStyleValue) {
|
|
103
|
+
input.setAttribute('style', 'text-overflow: ' + textOverFlowStyleValue);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Ellipsis is enabled by default as text-overflow behaviour
|
|
108
|
+
getTextOverFlowStyleValue() {
|
|
109
|
+
// it works only if the style is added to the component directly. Should find a way for get it from the calculated
|
|
110
|
+
// style. Than it would be possible to define the text-overflow in css for the whole application
|
|
111
|
+
const textOverflow = this.elementRef?.nativeElement?.style.textOverflow;
|
|
112
|
+
if (!textOverflow) {
|
|
113
|
+
return 'ellipsis';
|
|
114
|
+
}
|
|
115
|
+
return textOverflow;
|
|
116
|
+
}
|
|
117
|
+
setTooltipForOverflownField() {
|
|
118
|
+
if (this.isEllipsisForTextOverflowEnabled()) {
|
|
119
|
+
const input = this.readOnlyContentWrapper?.nativeElement?.querySelector('input');
|
|
120
|
+
if (input) {
|
|
121
|
+
this.toolTipForInputEnabled = this.isTextOverflown(input);
|
|
122
|
+
if (this.toolTipForInputEnabled) {
|
|
123
|
+
this.toolTipText = this.calculateToolTipText();
|
|
124
|
+
}
|
|
125
|
+
this.changeDetector.detectChanges();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
isEllipsisForTextOverflowEnabled() {
|
|
130
|
+
return this.getTextOverFlowStyleValue() === 'ellipsis';
|
|
131
|
+
}
|
|
132
|
+
isTextOverflown(input) {
|
|
133
|
+
if (input) {
|
|
134
|
+
return input.offsetWidth < input.scrollWidth;
|
|
135
|
+
}
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
calculateToolTipText() {
|
|
139
|
+
if (!this.unit) {
|
|
140
|
+
return this.value;
|
|
141
|
+
}
|
|
142
|
+
return this.unitPosition === 'left' ? this.unit + ' ' + this.value : this.value + ' ' + this.unit;
|
|
143
|
+
}
|
|
144
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: ReadOnlyFormFieldWrapperComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
145
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: ReadOnlyFormFieldWrapperComponent, selector: "mad-readonly-form-field-wrapper", inputs: { readonly: "readonly", value: "value", textAlign: "textAlign", formatNumber: "formatNumber", decimalPlaces: "decimalPlaces", roundValue: ["roundDisplayValue", "roundValue"], autofillDecimals: "autofillDecimals", unit: "unit", unitPosition: "unitPosition", errorMessage: "errorMessage", id: "id", multiline: "multiline", rows: "rows", shrinkIfEmpty: "shrinkIfEmpty", hideIconInReadOnlyMode: "hideIconInReadOnlyMode", suffix: "suffix", prefix: "prefix", multilineAutoSize: "multilineAutoSize" }, outputs: { suffixClickedEmitter: "suffixClickedEmitter", prefixClickedEmitter: "prefixClickedEmitter" }, viewQueries: [{ propertyName: "originalContent", first: true, predicate: ["contentWrapper"], descendants: true }, { propertyName: "readOnlyContentWrapper", first: true, predicate: ["readOnlyContentWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #contentWrapper [hidden]=\"readonly\">\n <ng-content></ng-content>\n</div>\n\n<div #readOnlyContentWrapper>\n <ng-container *ngIf=\"!!readonly\">\n <mad-readonly-form-field\n [label]=\"getLabel()\"\n [value]=\"value\"\n [textAlign]=\"textAlign\"\n [formatNumber]=\"formatNumber\"\n [decimalPlaces]=\"decimalPlaces\"\n [roundDisplayValue]=\"roundValue\"\n [autofillDecimals]=\"autofillDecimals\"\n [unit]=\"unit\"\n [unitPosition]=\"unitPosition\"\n [errorMessage]=\"errorMessage\"\n [multiline]=\"multiline\"\n [rows]=\"rows\"\n [shrinkIfEmpty]=\"shrinkIfEmpty\"\n [id]=\"id\"\n [suffix]=\"suffix\"\n [prefix]=\"prefix\"\n [multilineAutoSize]=\"multilineAutoSize\"\n (suffixClickedEmitter)=\"suffixClicked()\"\n (prefixClickedEmitter)=\"prefixClicked()\"\n matTooltip=\"{{ toolTipText }}\"\n matTooltipPosition=\"right\"\n matTooltipClass=\"custom-tooltip\"\n matTooltipDisabled=\"{{ !toolTipForInputEnabled }}\"\n >\n </mad-readonly-form-field>\n </ng-container>\n</div>\n", styles: ["mat-form-field{width:inherit}div{width:inherit}::ng-deep .custom-tooltip{font-size:14px!important;word-break:break-all!important;white-space:normal!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i3.ReadOnlyFormFieldComponent, selector: "mad-readonly-form-field", inputs: ["value", "label", "textAlign", "formatNumber", "decimalPlaces", "roundDisplayValue", "autofillDecimals", "unit", "unitPosition", "errorMessage", "multiline", "rows", "id", "shrinkIfEmpty", "suffix", "prefix", "multilineAutoSize"], outputs: ["suffixClickedEmitter", "prefixClickedEmitter"] }] }); }
|
|
146
|
+
}
|
|
147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: ReadOnlyFormFieldWrapperComponent, decorators: [{
|
|
148
|
+
type: Component,
|
|
149
|
+
args: [{ selector: 'mad-readonly-form-field-wrapper', template: "<div #contentWrapper [hidden]=\"readonly\">\n <ng-content></ng-content>\n</div>\n\n<div #readOnlyContentWrapper>\n <ng-container *ngIf=\"!!readonly\">\n <mad-readonly-form-field\n [label]=\"getLabel()\"\n [value]=\"value\"\n [textAlign]=\"textAlign\"\n [formatNumber]=\"formatNumber\"\n [decimalPlaces]=\"decimalPlaces\"\n [roundDisplayValue]=\"roundValue\"\n [autofillDecimals]=\"autofillDecimals\"\n [unit]=\"unit\"\n [unitPosition]=\"unitPosition\"\n [errorMessage]=\"errorMessage\"\n [multiline]=\"multiline\"\n [rows]=\"rows\"\n [shrinkIfEmpty]=\"shrinkIfEmpty\"\n [id]=\"id\"\n [suffix]=\"suffix\"\n [prefix]=\"prefix\"\n [multilineAutoSize]=\"multilineAutoSize\"\n (suffixClickedEmitter)=\"suffixClicked()\"\n (prefixClickedEmitter)=\"prefixClicked()\"\n matTooltip=\"{{ toolTipText }}\"\n matTooltipPosition=\"right\"\n matTooltipClass=\"custom-tooltip\"\n matTooltipDisabled=\"{{ !toolTipForInputEnabled }}\"\n >\n </mad-readonly-form-field>\n </ng-container>\n</div>\n", styles: ["mat-form-field{width:inherit}div{width:inherit}::ng-deep .custom-tooltip{font-size:14px!important;word-break:break-all!important;white-space:normal!important}\n"] }]
|
|
150
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { originalContent: [{
|
|
151
|
+
type: ViewChild,
|
|
152
|
+
args: ['contentWrapper', { static: false }]
|
|
153
|
+
}], readOnlyContentWrapper: [{
|
|
154
|
+
type: ViewChild,
|
|
155
|
+
args: ['readOnlyContentWrapper', { static: false }]
|
|
156
|
+
}], readonly: [{
|
|
157
|
+
type: Input
|
|
158
|
+
}], value: [{
|
|
159
|
+
type: Input,
|
|
160
|
+
args: ['value']
|
|
161
|
+
}], textAlign: [{
|
|
162
|
+
type: Input,
|
|
163
|
+
args: ['textAlign']
|
|
164
|
+
}], formatNumber: [{
|
|
165
|
+
type: Input,
|
|
166
|
+
args: ['formatNumber']
|
|
167
|
+
}], decimalPlaces: [{
|
|
168
|
+
type: Input,
|
|
169
|
+
args: ['decimalPlaces']
|
|
170
|
+
}], roundValue: [{
|
|
171
|
+
type: Input,
|
|
172
|
+
args: ['roundDisplayValue']
|
|
173
|
+
}], autofillDecimals: [{
|
|
174
|
+
type: Input,
|
|
175
|
+
args: ['autofillDecimals']
|
|
176
|
+
}], unit: [{
|
|
177
|
+
type: Input,
|
|
178
|
+
args: ['unit']
|
|
179
|
+
}], unitPosition: [{
|
|
180
|
+
type: Input,
|
|
181
|
+
args: ['unitPosition']
|
|
182
|
+
}], errorMessage: [{
|
|
183
|
+
type: Input,
|
|
184
|
+
args: ['errorMessage']
|
|
185
|
+
}], id: [{
|
|
186
|
+
type: Input
|
|
187
|
+
}], multiline: [{
|
|
188
|
+
type: Input
|
|
189
|
+
}], rows: [{
|
|
190
|
+
type: Input
|
|
191
|
+
}], shrinkIfEmpty: [{
|
|
192
|
+
type: Input
|
|
193
|
+
}], hideIconInReadOnlyMode: [{
|
|
194
|
+
type: Input
|
|
195
|
+
}], suffix: [{
|
|
196
|
+
type: Input
|
|
197
|
+
}], prefix: [{
|
|
198
|
+
type: Input
|
|
199
|
+
}], multilineAutoSize: [{
|
|
200
|
+
type: Input
|
|
201
|
+
}], suffixClickedEmitter: [{
|
|
202
|
+
type: Output
|
|
203
|
+
}], prefixClickedEmitter: [{
|
|
204
|
+
type: Output
|
|
205
|
+
}] } });
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG9ubHktZm9ybS1maWVsZC13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvbGliL3JlYWRvbmx5L3JlYWRvbmx5LWZvcm0tZmllbGQtd3JhcHBlci9yZWFkb25seS1mb3JtLWZpZWxkLXdyYXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy9saWIvcmVhZG9ubHkvcmVhZG9ubHktZm9ybS1maWVsZC13cmFwcGVyL3JlYWRvbmx5LWZvcm0tZmllbGQtd3JhcHBlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFFdkI7Ozs7R0FJRztBQU1ILE1BQU0sT0FBTyxpQ0FBaUM7SUFxRTVDLFlBQ1UsY0FBaUMsRUFDakMsVUFBc0I7UUFEdEIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFqRWhDOzs7V0FHRztRQUNNLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFRTCxjQUFTLEdBQXFCLE1BQU0sQ0FBQztRQUNsQyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNwQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNkLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDcEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBQ25CLGlCQUFZLEdBQXFCLE1BQU0sQ0FBQztRQUN4QyxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFFMUQ7OztXQUdHO1FBQ00sY0FBUyxHQUFHLEtBQUssQ0FBQztRQU8zQjs7Ozs7V0FLRztRQUNNLGtCQUFh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Qzs4R0E1TFUsaUNBQWlDO2tHQUFqQyxpQ0FBaUMsazZCQ3pCOUMsbWxDQWtDQTs7MkZEVGEsaUNBQWlDO2tCQUw3QyxTQUFTOytCQUNFLGlDQUFpQzsrR0FNM0MsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHOUMsc0JBQXNCO3NCQURyQixTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFPN0MsUUFBUTtzQkFBaEIsS0FBSztnQkFNVSxLQUFLO3NCQUFwQixLQUFLO3VCQUFDLE9BQU87Z0JBRU0sU0FBUztzQkFBNUIsS0FBSzt1QkFBQyxXQUFXO2dCQUNLLFlBQVk7c0JBQWxDLEtBQUs7dUJBQUMsY0FBYztnQkFDRyxhQUFhO3NCQUFwQyxLQUFLO3VCQUFDLGVBQWU7Z0JBQ00sVUFBVTtzQkFBckMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ0MsZ0JBQWdCO3NCQUExQyxLQUFLO3VCQUFDLGtCQUFrQjtnQkFDVixJQUFJO3NCQUFsQixLQUFLO3VCQUFDLE1BQU07Z0JBQ1UsWUFBWTtzQkFBbEMsS0FBSzt1QkFBQyxjQUFjO2dCQUNFLFlBQVk7c0JBQWxDLEtBQUs7dUJBQUMsY0FBYztnQkFDWixFQUFFO3NCQUFWLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBUUcsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBSUcsTUFBTTtzQkFBZCxLQUFLO2dCQUlHLE1BQU07c0JBQWQsS0FBSztnQkFJRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0ksb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogV3JhcHMgYSBtYXQtZm9ybS1maWVsZCB0byByZXBsYWNlIGl0IGJ5IGEgcmVhZE9ubHkgcmVwcmVzZW50YXRpb24gaWYgbmVjZXNzYXJ5XG4gKlxuICogQGF1dGhvciBTdGVmYW4gTGFlc3NlclxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWQtcmVhZG9ubHktZm9ybS1maWVsZC13cmFwcGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlYWRvbmx5LWZvcm0tZmllbGQtd3JhcHBlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlYWRvbmx5LWZvcm0tZmllbGQtd3JhcHBlci5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJlYWRPbmx5Rm9ybUZpZWxkV3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdDaGVja2VkIHtcbiAgQFZpZXdDaGlsZCgnY29udGVudFdyYXBwZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgb3JpZ2luYWxDb250ZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdyZWFkT25seUNvbnRlbnRXcmFwcGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHJlYWRPbmx5Q29udGVudFdyYXBwZXI6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIElmIHNldCB0byBcImZhbHNlXCIsIHRoZSBjb250YWluZWQgbWF0LWZvcm0tZmllbGQgaXMgcmVuZGVyZWQgaW4gYWxsIGl0J3MgZ2xvcnkuXG4gICAqIElmIHNldCB0byBcInRydWVcIiwgYSByZWFkb25seSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUgaXMgc2hvd24gdXNpbmcgdGhlIG1hdC1mb3JtLWZpZWxkcyBsYWJlbC5cbiAgICovXG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gdHJ1ZTtcblxuICAvKipcbiAgICogVGhpcyBpbnB1dCAqTVVTVCBNQVRDSCogdGhlIG1hdC1mb3JtLWZpZWxkIHZhbHVlIHRvIGVuc3VyZSBjb3JyZWN0IGRhdGFcbiAgICogYmluZGluZyBhbmQgZm9ybWF0dGluZyBvZiByZWFkT25seSByZXByZXNlbnRhdGlvbiFcbiAgICovXG4gIEBJbnB1dCgndmFsdWUnKSB2YWx1ZTogYW55O1xuXG4gIEBJbnB1dCgndGV4dEFsaWduJykgdGV4dEFsaWduOiAncmlnaHQnIHwgJ2xlZnQnID0gJ2xlZnQnO1xuICBASW5wdXQoJ2Zvcm1hdE51bWJlcicpIGZvcm1hdE51bWJlciA9IGZhbHNlO1xuICBASW5wdXQoJ2RlY2ltYWxQbGFjZXMnKSBkZWNpbWFsUGxhY2VzID0gMjtcbiAgQElucHV0KCdyb3VuZERpc3BsYXlWYWx1ZScpIHJvdW5kVmFsdWUgPSBmYWxzZTtcbiAgQElucHV0KCdhdXRvZmlsbERlY2ltYWxzJykgYXV0b2ZpbGxEZWNpbWFscyA9IGZhbHNlO1xuICBASW5wdXQoJ3VuaXQnKSB1bml0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCd1bml0UG9zaXRpb24nKSB1bml0UG9zaXRpb246ICdyaWdodCcgfCAnbGVmdCcgPSAnbGVmdCc7XG4gIEBJbnB1dCgnZXJyb3JNZXNzYWdlJykgZXJyb3JNZXNzYWdlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIElmIHNldCB0byBcImZhbHNlXCIsIGEgcmVhZG9ubHkgaW5wdXQgd2lsbCBiZSByZW5kZXJlZC5cbiAgICogSWYgc2V0IHRvIFwidHJ1ZVwiLCBhIHJlYWRvbmx5IHRleHRhcmVhIHdpbGwgYmUgcmVuZGVyZWQgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpIG11bHRpbGluZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSByb3dzIGZvciB0aGUgcmVhZG9ubHkgdGV4dGFyZWEuXG4gICAqL1xuICBASW5wdXQoKSByb3dzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElmIHNocmlua0lmRW1wdHkgaXMgc2V0IHRvIFwiZmFsc2VcIiwgbm90aGluZyBjaGFuZ2VzXG4gICAqIElmIHNldCB0byBcInRydWVcIiBhbmQgbXVsdGlsaW5lIGlzIGFsc28gXCJ0cnVlXCIsIHRoZSB0ZXh0YXJlYSB3aWxsXG4gICAqIHNocmluayB0byBvbmUgcm93LCBpZiB2YWx1ZSBpcyBlbXB0eS9udWxsL3VuZGVmaW5lZC5cbiAgICogT3RoZXJ3aXNlLCB0aGUgZGVmaW5lZCByb3dzLXZhbHVlIHdpbGwgYmUgdXNlZFxuICAgKi9cbiAgQElucHV0KCkgc2hyaW5rSWZFbXB0eSA9IGZhbHNlO1xuICBASW5wdXQoKSBoaWRlSWNvbkluUmVhZE9ubHlNb2RlID0gZmFsc2U7XG4gIC8qKlxuICAgKiBzdWZmaXggaW9jb25cbiAgICovXG4gIEBJbnB1dCgpIHN1ZmZpeDogc3RyaW5nO1xuICAvKipcbiAgICogcHJlZml4IGlvY29uXG4gICAqL1xuICBASW5wdXQoKSBwcmVmaXg6IHN0cmluZztcbiAgLyoqXG4gICAqIGlmIGNka1RleHRhcmVhQXV0b3NpemUgaXMgYWN0aXZlIGZvciB0ZXh0YXJlYXNcbiAgICovXG4gIEBJbnB1dCgpIG11bHRpbGluZUF1dG9TaXplID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBzdWZmaXhDbGlja2VkRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHByZWZpeENsaWNrZWRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IHRha2VuIGZyb20gdGhlIGNvbnRhaW5lZCA8bWF0LWxhYmVsPlxuICAgKi9cbiAgbGFiZWw6IHN0cmluZztcblxuICB0b29sVGlwRm9ySW5wdXRFbmFibGVkID0gZmFsc2U7XG4gIHRvb2xUaXBUZXh0OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kb1JlbmRlcmluZygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0UmVhZG9ubHlGaWVsZFN0eWxlKCk7XG4gICAgdGhpcy5kb1JlbmRlcmluZygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0UmVhZG9ubHlGaWVsZFN0eWxlKCk7XG4gICAgdGhpcy5zZXRUb29sdGlwRm9yT3ZlcmZsb3duRmllbGQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKF86IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmRvUmVuZGVyaW5nKCk7XG4gIH1cblxuICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5sYWJlbCkge1xuICAgICAgdGhpcy5leHRyYWN0TGFiZWwoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubGFiZWw7XG4gIH1cblxuICBzdWZmaXhDbGlja2VkKCkge1xuICAgIHRoaXMuc3VmZml4Q2xpY2tlZEVtaXR0ZXIuZW1pdChudWxsKTtcbiAgfVxuXG4gIHByZWZpeENsaWNrZWQoKSB7XG4gICAgdGhpcy5wcmVmaXhDbGlja2VkRW1pdHRlci5lbWl0KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBkb1JlbmRlcmluZygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3JpZ2luYWxDb250ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5yZWFkb25seSkge1xuICAgICAgdGhpcy5jb3JyZWN0V2lkdGgoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdExhYmVsKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5vcmlnaW5hbENvbnRlbnQgfHwgIXRoaXMub3JpZ2luYWxDb250ZW50Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBsYWJlbEVsZW1lbnQgPSB0aGlzLm9yaWdpbmFsQ29udGVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ21hdC1sYWJlbCcpO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbEVsZW1lbnQgPyBsYWJlbEVsZW1lbnQuaW5uZXJIVE1MIDogJ21hdC1sYWJlbCBpcyBtaXNzaW5nISc7XG4gIH1cblxuICBwcml2YXRlIGNvcnJlY3RXaWR0aCgpOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLm9yaWdpbmFsQ29udGVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ21hdC1mb3JtLWZpZWxkJyk7XG4gICAgaWYgKGZvcm1GaWVsZCkge1xuICAgICAgZm9ybUZpZWxkLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnd2lkdGg6MTAwJScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0UmVhZG9ubHlGaWVsZFN0eWxlKCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5yZWFkT25seUNvbnRlbnRXcmFwcGVyPy5uYXRpdmVFbGVtZW50Py5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuXG4gICAgaWYgKGlucHV0KSB7XG4gICAgICBjb25zdCB0ZXh0T3ZlckZsb3dTdHlsZVZhbHVlID0gdGhpcy5nZXRUZXh0T3ZlckZsb3dTdHlsZVZhbHVlKCk7XG4gICAgICBpZiAodGV4dE92ZXJGbG93U3R5bGVWYWx1ZSkge1xuICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3RleHQtb3ZlcmZsb3c6ICcgKyB0ZXh0T3ZlckZsb3dTdHlsZVZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBFbGxpcHNpcyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgYXMgdGV4dC1vdmVyZmxvdyBiZWhhdmlvdXJcbiAgcHJpdmF0ZSBnZXRUZXh0T3ZlckZsb3dTdHlsZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgLy8gaXQgd29ya3Mgb25seSBpZiB0aGUgc3R5bGUgaXMgYWRkZWQgdG8gdGhlIGNvbXBvbmVudCBkaXJlY3RseS4gU2hvdWxkIGZpbmQgYSB3YXkgZm9yIGdldCBpdCBmcm9tIHRoZSBjYWxjdWxhdGVkXG4gICAgLy8gc3R5bGUuIFRoYW4gaXQgd291bGQgYmUgcG9zc2libGUgdG8gZGVmaW5lIHRoZSB0ZXh0LW92ZXJmbG93IGluIGNzcyBmb3IgdGhlIHdob2xlIGFwcGxpY2F0aW9uXG4gICAgY29uc3QgdGV4dE92ZXJmbG93ID0gdGhpcy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5zdHlsZS50ZXh0T3ZlcmZsb3c7XG4gICAgaWYgKCF0ZXh0T3ZlcmZsb3cpIHtcbiAgICAgIHJldHVybiAnZWxsaXBzaXMnO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXh0T3ZlcmZsb3c7XG4gIH1cblxuICBwcml2YXRlIHNldFRvb2x0aXBGb3JPdmVyZmxvd25GaWVsZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0VsbGlwc2lzRm9yVGV4dE92ZXJmbG93RW5hYmxlZCgpKSB7XG4gICAgICBjb25zdCBpbnB1dCA9IHRoaXMucmVhZE9ubHlDb250ZW50V3JhcHBlcj8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcblxuICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgIHRoaXMudG9vbFRpcEZvcklucHV0RW5hYmxlZCA9IHRoaXMuaXNUZXh0T3ZlcmZsb3duKGlucHV0KTtcbiAgICAgICAgaWYgKHRoaXMudG9vbFRpcEZvcklucHV0RW5hYmxlZCkge1xuICAgICAgICAgIHRoaXMudG9vbFRpcFRleHQgPSB0aGlzLmNhbGN1bGF0ZVRvb2xUaXBUZXh0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0VsbGlwc2lzRm9yVGV4dE92ZXJmbG93RW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUZXh0T3ZlckZsb3dTdHlsZVZhbHVlKCkgPT09ICdlbGxpcHNpcyc7XG4gIH1cblxuICBwcml2YXRlIGlzVGV4dE92ZXJmbG93bihpbnB1dDogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKGlucHV0KSB7XG4gICAgICByZXR1cm4gaW5wdXQub2Zmc2V0V2lkdGggPCBpbnB1dC5zY3JvbGxXaWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVUb29sVGlwVGV4dCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy51bml0KSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy51bml0UG9zaXRpb24gPT09ICdsZWZ0JyA/IHRoaXMudW5pdCArICcgJyArIHRoaXMudmFsdWUgOiB0aGlzLnZhbHVlICsgJyAnICsgdGhpcy51bml0O1xuICB9XG59XG4iLCI8ZGl2ICNjb250ZW50V3JhcHBlciBbaGlkZGVuXT1cInJlYWRvbmx5XCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuXG48ZGl2ICNyZWFkT25seUNvbnRlbnRXcmFwcGVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFyZWFkb25seVwiPlxuICAgIDxtYWQtcmVhZG9ubHktZm9ybS1maWVsZFxuICAgICAgW2xhYmVsXT1cImdldExhYmVsKClcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIFt0ZXh0QWxpZ25dPVwidGV4dEFsaWduXCJcbiAgICAgIFtmb3JtYXROdW1iZXJdPVwiZm9ybWF0TnVtYmVyXCJcbiAgICAgIFtkZWNpbWFsUGxhY2VzXT1cImRlY2ltYWxQbGFjZXNcIlxuICAgICAgW3JvdW5kRGlzcGxheVZhbHVlXT1cInJvdW5kVmFsdWVcIlxuICAgICAgW2F1dG9maWxsRGVjaW1hbHNdPVwiYXV0b2ZpbGxEZWNpbWFsc1wiXG4gICAgICBbdW5pdF09XCJ1bml0XCJcbiAgICAgIFt1bml0UG9zaXRpb25dPVwidW5pdFBvc2l0aW9uXCJcbiAgICAgIFtlcnJvck1lc3NhZ2VdPVwiZXJyb3JNZXNzYWdlXCJcbiAgICAgIFttdWx0aWxpbmVdPVwibXVsdGlsaW5lXCJcbiAgICAgIFtyb3dzXT1cInJvd3NcIlxuICAgICAgW3Nocmlua0lmRW1wdHldPVwic2hyaW5rSWZFbXB0eVwiXG4gICAgICBbaWRdPVwiaWRcIlxuICAgICAgW3N1ZmZpeF09XCJzdWZmaXhcIlxuICAgICAgW3ByZWZpeF09XCJwcmVmaXhcIlxuICAgICAgW211bHRpbGluZUF1dG9TaXplXT1cIm11bHRpbGluZUF1dG9TaXplXCJcbiAgICAgIChzdWZmaXhDbGlja2VkRW1pdHRlcik9XCJzdWZmaXhDbGlja2VkKClcIlxuICAgICAgKHByZWZpeENsaWNrZWRFbWl0dGVyKT1cInByZWZpeENsaWNrZWQoKVwiXG4gICAgICBtYXRUb29sdGlwPVwie3sgdG9vbFRpcFRleHQgfX1cIlxuICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIlxuICAgICAgbWF0VG9vbHRpcERpc2FibGVkPVwie3sgIXRvb2xUaXBGb3JJbnB1dEVuYWJsZWQgfX1cIlxuICAgID5cbiAgICA8L21hZC1yZWFkb25seS1mb3JtLWZpZWxkPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { RouterModule } from '@angular/router';
|
|
4
|
+
import { ReadOnlyFormFieldWrapperComponent } from './readonly-form-field-wrapper/readonly-form-field-wrapper.component';
|
|
5
|
+
import { ReadOnlyFormFieldComponent } from './readonly-form-field/readonly-form-field.component';
|
|
6
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
7
|
+
import { MatInputModule } from '@angular/material/input';
|
|
8
|
+
import { FormsModule } from '@angular/forms';
|
|
9
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
10
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export class ReadOnlyFormFieldModule {
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: ReadOnlyFormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: ReadOnlyFormFieldModule, declarations: [ReadOnlyFormFieldComponent, ReadOnlyFormFieldWrapperComponent], imports: [CommonModule, RouterModule, MatFormFieldModule, MatInputModule, FormsModule, MatTooltipModule, MatIconModule], exports: [ReadOnlyFormFieldComponent, ReadOnlyFormFieldWrapperComponent] }); }
|
|
15
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: ReadOnlyFormFieldModule, imports: [CommonModule, RouterModule, MatFormFieldModule, MatInputModule, FormsModule, MatTooltipModule, MatIconModule] }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: ReadOnlyFormFieldModule, decorators: [{
|
|
18
|
+
type: NgModule,
|
|
19
|
+
args: [{
|
|
20
|
+
declarations: [ReadOnlyFormFieldComponent, ReadOnlyFormFieldWrapperComponent],
|
|
21
|
+
imports: [CommonModule, RouterModule, MatFormFieldModule, MatInputModule, FormsModule, MatTooltipModule, MatIconModule],
|
|
22
|
+
exports: [ReadOnlyFormFieldComponent, ReadOnlyFormFieldWrapperComponent],
|
|
23
|
+
}]
|
|
24
|
+
}] });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG9ubHktZm9ybS1maWVsZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9yZWFkb25seS9yZWFkb25seS1mb3JtLWZpZWxkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDeEgsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBT3ZELE1BQU0sT0FBTyx1QkFBdUI7OEdBQXZCLHVCQUF1QjsrR0FBdkIsdUJBQXVCLGlCQUpuQiwwQkFBMEIsRUFBRSxpQ0FBaUMsYUFDbEUsWUFBWSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsYUFDNUcsMEJBQTBCLEVBQUUsaUNBQWlDOytHQUU1RCx1QkFBdUIsWUFIeEIsWUFBWSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGFBQWE7OzJGQUczRyx1QkFBdUI7a0JBTG5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsMEJBQTBCLEVBQUUsaUNBQWlDLENBQUM7b0JBQzdFLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLENBQUM7b0JBQ3ZILE9BQU8sRUFBRSxDQUFDLDBCQUEwQixFQUFFLGlDQUFpQyxDQUFDO2lCQUN6RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJlYWRPbmx5Rm9ybUZpZWxkV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vcmVhZG9ubHktZm9ybS1maWVsZC13cmFwcGVyL3JlYWRvbmx5LWZvcm0tZmllbGQtd3JhcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVhZE9ubHlGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuL3JlYWRvbmx5LWZvcm0tZmllbGQvcmVhZG9ubHktZm9ybS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtSZWFkT25seUZvcm1GaWVsZENvbXBvbmVudCwgUmVhZE9ubHlGb3JtRmllbGRXcmFwcGVyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSwgTWF0SWNvbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtSZWFkT25seUZvcm1GaWVsZENvbXBvbmVudCwgUmVhZE9ubHlGb3JtRmllbGRXcmFwcGVyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgUmVhZE9ubHlGb3JtRmllbGRNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
2
|
+
/**
|
|
3
|
+
* Animations used by the MAD stepper.
|
|
4
|
+
*/
|
|
5
|
+
export const madStepperAnimations = {
|
|
6
|
+
verticalStepTransition: trigger('stepTransition', [
|
|
7
|
+
state('previous', style({ height: '0px', visibility: 'hidden' })),
|
|
8
|
+
state('next', style({ height: '0px', visibility: 'hidden' })),
|
|
9
|
+
state('current', style({ height: '*', visibility: 'visible' })),
|
|
10
|
+
transition('* <=> current', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
11
|
+
]),
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFkLXN0ZXBwZXItYW5pbWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy9saWIvc3RlcHBlci9tYWQtc3RlcHBlci1hbmltYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQTRCLE1BQU0scUJBQXFCLENBQUM7QUFFM0c7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FFN0I7SUFDRixzQkFBc0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7UUFDaEQsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM3RCxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDL0QsVUFBVSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztLQUM3RSxDQUFDO0NBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciwgQW5pbWF0aW9uVHJpZ2dlck1ldGFkYXRhIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbi8qKlxuICogQW5pbWF0aW9ucyB1c2VkIGJ5IHRoZSBNQUQgc3RlcHBlci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1hZFN0ZXBwZXJBbmltYXRpb25zOiB7XG4gIHJlYWRvbmx5IHZlcnRpY2FsU3RlcFRyYW5zaXRpb246IEFuaW1hdGlvblRyaWdnZXJNZXRhZGF0YTtcbn0gPSB7XG4gIHZlcnRpY2FsU3RlcFRyYW5zaXRpb246IHRyaWdnZXIoJ3N0ZXBUcmFuc2l0aW9uJywgW1xuICAgIHN0YXRlKCdwcmV2aW91cycsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4JywgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxuICAgIHN0YXRlKCduZXh0Jywgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCB2aXNpYmlsaXR5OiAnaGlkZGVuJyB9KSksXG4gICAgc3RhdGUoJ2N1cnJlbnQnLCBzdHlsZSh7IGhlaWdodDogJyonLCB2aXNpYmlsaXR5OiAndmlzaWJsZScgfSkpLFxuICAgIHRyYW5zaXRpb24oJyogPD0+IGN1cnJlbnQnLCBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXG4gIF0pLFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { CdkStepHeader, STEP_STATE } from '@angular/cdk/stepper';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/cdk/a11y";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "@angular/material/icon";
|
|
7
|
+
export class StepHeaderComponent extends CdkStepHeader {
|
|
8
|
+
constructor(_focusMonitor, _elementRef) {
|
|
9
|
+
super(_elementRef);
|
|
10
|
+
this._focusMonitor = _focusMonitor;
|
|
11
|
+
}
|
|
12
|
+
ngAfterViewInit() {
|
|
13
|
+
this._focusMonitor.monitor(this._elementRef, true);
|
|
14
|
+
}
|
|
15
|
+
ngOnDestroy() {
|
|
16
|
+
this._focusMonitor.stopMonitoring(this._elementRef);
|
|
17
|
+
}
|
|
18
|
+
/** Focuses the step header. */
|
|
19
|
+
focus(origin, options) {
|
|
20
|
+
if (origin) {
|
|
21
|
+
this._focusMonitor.focusVia(this._elementRef, origin, options);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
this._elementRef.nativeElement.focus(options);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
getCssForState() {
|
|
28
|
+
if (this.state === STEP_STATE.NUMBER && !this.completed && !this.hasError) {
|
|
29
|
+
return 'step-state-neutral'; //initiale state is 'number'
|
|
30
|
+
}
|
|
31
|
+
else if (this.completed) {
|
|
32
|
+
return 'step-state-complete';
|
|
33
|
+
}
|
|
34
|
+
else if (this.hasError) {
|
|
35
|
+
return 'step-state-error';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
getIcon() {
|
|
39
|
+
if (this.completed) {
|
|
40
|
+
return 'check_circle_outline';
|
|
41
|
+
}
|
|
42
|
+
else if (this.hasError) {
|
|
43
|
+
return 'error_outline';
|
|
44
|
+
}
|
|
45
|
+
return '';
|
|
46
|
+
}
|
|
47
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: StepHeaderComponent, deps: [{ token: i1.FocusMonitor }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: StepHeaderComponent, selector: "mad-step-header", inputs: { color: "color", index: "index", label: "label", state: "state", errorMessage: "errorMessage", selected: "selected", active: "active", optional: "optional", hasError: "hasError", completed: "completed", closed: "closed" }, host: { attributes: { "role": "tab" }, classAttribute: "mad-step-header" }, usesInheritance: true, ngImport: i0, template: "<div\n class=\"header\"\n [style.background]=\"this.selected && !this.closed ? '#d8e2e9' : '#ffffff'\"\n [ngClass]=\"this.hasError ? 'error-border' : 'check-border'\"\n>\n <div [ngClass]=\"this.getCssForState()\"></div>\n <div class=\"header-label\">\n <mat-icon class=\"material-icons-outlined\">\n {{ this.selected && !this.closed ? 'keyboard_arrow_down' : 'keyboard_arrow_right' }}\n </mat-icon>\n </div>\n <div *ngIf=\"this.completed || this.hasError\" class=\"header-label\">\n <mat-icon [ngClass]=\"this.completed ? 'green-check' : 'red-error'\">\n {{ getIcon() }}\n </mat-icon>\n </div>\n <span *ngIf=\"!this.hasError && !this.completed\" class=\"header-label\">{{ this.index + 1 + '.' }}</span>\n <div class=\"header-label\">{{ this.label }}</div>\n</div>\n", styles: [".header{overflow:hidden;outline:var(--warn-color);cursor:pointer;box-sizing:content-box;-webkit-tap-highlight-color:transparent;border:1px solid lightgrey;width:100%;height:62px;display:flex;flex-direction:row;gap:1em}.header-label{align-items:center;display:flex}.step-state-complete{width:5px;background:green}.step-state-error{width:5px;background:var(--warn-color)}.step-state-neutral{width:5px;background:lightgrey}.green-check{color:green}.red-error{color:var(--warn-color)}.check-border{border-color:#d3d3d3}.error-border{border-color:var(--warn-color)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
49
|
+
}
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: StepHeaderComponent, decorators: [{
|
|
51
|
+
type: Component,
|
|
52
|
+
args: [{ selector: 'mad-step-header', inputs: ['color'], host: {
|
|
53
|
+
class: 'mad-step-header',
|
|
54
|
+
role: 'tab',
|
|
55
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"header\"\n [style.background]=\"this.selected && !this.closed ? '#d8e2e9' : '#ffffff'\"\n [ngClass]=\"this.hasError ? 'error-border' : 'check-border'\"\n>\n <div [ngClass]=\"this.getCssForState()\"></div>\n <div class=\"header-label\">\n <mat-icon class=\"material-icons-outlined\">\n {{ this.selected && !this.closed ? 'keyboard_arrow_down' : 'keyboard_arrow_right' }}\n </mat-icon>\n </div>\n <div *ngIf=\"this.completed || this.hasError\" class=\"header-label\">\n <mat-icon [ngClass]=\"this.completed ? 'green-check' : 'red-error'\">\n {{ getIcon() }}\n </mat-icon>\n </div>\n <span *ngIf=\"!this.hasError && !this.completed\" class=\"header-label\">{{ this.index + 1 + '.' }}</span>\n <div class=\"header-label\">{{ this.label }}</div>\n</div>\n", styles: [".header{overflow:hidden;outline:var(--warn-color);cursor:pointer;box-sizing:content-box;-webkit-tap-highlight-color:transparent;border:1px solid lightgrey;width:100%;height:62px;display:flex;flex-direction:row;gap:1em}.header-label{align-items:center;display:flex}.step-state-complete{width:5px;background:green}.step-state-error{width:5px;background:var(--warn-color)}.step-state-neutral{width:5px;background:lightgrey}.green-check{color:green}.red-error{color:var(--warn-color)}.check-border{border-color:#d3d3d3}.error-border{border-color:var(--warn-color)}\n"] }]
|
|
56
|
+
}], ctorParameters: () => [{ type: i1.FocusMonitor }, { type: i0.ElementRef }], propDecorators: { index: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], label: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], state: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], errorMessage: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], selected: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], active: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], optional: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], hasError: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], completed: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], closed: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}] } });
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy9saWIvc3RlcHBlci9zdGVwLWhlYWRlci9zdGVwLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9zdGVwcGVyL3N0ZXAtaGVhZGVyL3N0ZXAtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFDNUUsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFhLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQWVuSSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBYTtJQXVCcEQsWUFDVSxhQUEyQixFQUNuQyxXQUFvQztRQUVwQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIWCxrQkFBYSxHQUFiLGFBQWEsQ0FBYztJQUlyQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELCtCQUErQjtJQUMvQixLQUFLLENBQUMsTUFBb0IsRUFBRSxPQUFzQjtRQUNoRCxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2hFO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDL0M7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDekUsT0FBTyxvQkFBb0IsQ0FBQyxDQUFDLDRCQUE0QjtTQUMxRDthQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN6QixPQUFPLHFCQUFxQixDQUFDO1NBQzlCO2FBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3hCLE9BQU8sa0JBQWtCLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixPQUFPLHNCQUFzQixDQUFDO1NBQy9CO2FBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3hCLE9BQU8sZUFBZSxDQUFDO1NBQ3hCO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOzhHQWhFVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixrWUNoQmhDLCt4QkFtQkE7OzJGREhhLG1CQUFtQjtrQkFaL0IsU0FBUzsrQkFDRSxpQkFBaUIsVUFHbkIsQ0FBQyxPQUFPLENBQUMsUUFDWDt3QkFDSixLQUFLLEVBQUUsaUJBQWlCO3dCQUN4QixJQUFJLEVBQUUsS0FBSztxQkFDWixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzBHQUkvQyxLQUFLO3NCQURKLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka1N0ZXBIZWFkZXIsIFNURVBfU1RBVEUsIFN0ZXBTdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zdGVwcGVyJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWQtc3RlcC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RlcC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdGVwLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICBpbnB1dHM6IFsnY29sb3InXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnbWFkLXN0ZXAtaGVhZGVyJyxcbiAgICByb2xlOiAndGFiJyxcbiAgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFN0ZXBIZWFkZXJDb21wb25lbnQgZXh0ZW5kcyBDZGtTdGVwSGVhZGVyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgaW5kZXg6IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBsYWJlbDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHN0YXRlOiBTdGVwU3RhdGU7XG5cbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgc2VsZWN0ZWQ6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgYWN0aXZlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIG9wdGlvbmFsOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGhhc0Vycm9yOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGNvbXBsZXRlZDogYm9vbGVhbjtcblxuICBASW5wdXQoKSBjbG9zZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICApIHtcbiAgICBzdXBlcihfZWxlbWVudFJlZik7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwgdHJ1ZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZik7XG4gIH1cblxuICAvKiogRm9jdXNlcyB0aGUgc3RlcCBoZWFkZXIuICovXG4gIGZvY3VzKG9yaWdpbj86IEZvY3VzT3JpZ2luLCBvcHRpb25zPzogRm9jdXNPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKG9yaWdpbikge1xuICAgICAgdGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuX2VsZW1lbnRSZWYsIG9yaWdpbiwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cyhvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBnZXRDc3NGb3JTdGF0ZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnN0YXRlID09PSBTVEVQX1NUQVRFLk5VTUJFUiAmJiAhdGhpcy5jb21wbGV0ZWQgJiYgIXRoaXMuaGFzRXJyb3IpIHtcbiAgICAgIHJldHVybiAnc3RlcC1zdGF0ZS1uZXV0cmFsJzsgLy9pbml0aWFsZSBzdGF0ZSBpcyAnbnVtYmVyJ1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb21wbGV0ZWQpIHtcbiAgICAgIHJldHVybiAnc3RlcC1zdGF0ZS1jb21wbGV0ZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc0Vycm9yKSB7XG4gICAgICByZXR1cm4gJ3N0ZXAtc3RhdGUtZXJyb3InO1xuICAgIH1cbiAgfVxuXG4gIGdldEljb24oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5jb21wbGV0ZWQpIHtcbiAgICAgIHJldHVybiAnY2hlY2tfY2lyY2xlX291dGxpbmUnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5oYXNFcnJvcikge1xuICAgICAgcmV0dXJuICdlcnJvcl9vdXRsaW5lJztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiaGVhZGVyXCJcbiAgW3N0eWxlLmJhY2tncm91bmRdPVwidGhpcy5zZWxlY3RlZCAmJiAhdGhpcy5jbG9zZWQgPyAnI2Q4ZTJlOScgOiAnI2ZmZmZmZidcIlxuICBbbmdDbGFzc109XCJ0aGlzLmhhc0Vycm9yID8gJ2Vycm9yLWJvcmRlcicgOiAnY2hlY2stYm9yZGVyJ1wiXG4+XG4gIDxkaXYgW25nQ2xhc3NdPVwidGhpcy5nZXRDc3NGb3JTdGF0ZSgpXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItbGFiZWxcIj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPlxuICAgICAge3sgdGhpcy5zZWxlY3RlZCAmJiAhdGhpcy5jbG9zZWQgPyAna2V5Ym9hcmRfYXJyb3dfZG93bicgOiAna2V5Ym9hcmRfYXJyb3dfcmlnaHQnIH19XG4gICAgPC9tYXQtaWNvbj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJ0aGlzLmNvbXBsZXRlZCB8fCB0aGlzLmhhc0Vycm9yXCIgY2xhc3M9XCJoZWFkZXItbGFiZWxcIj5cbiAgICA8bWF0LWljb24gW25nQ2xhc3NdPVwidGhpcy5jb21wbGV0ZWQgPyAnZ3JlZW4tY2hlY2snIDogJ3JlZC1lcnJvcidcIj5cbiAgICAgIHt7IGdldEljb24oKSB9fVxuICAgIDwvbWF0LWljb24+XG4gIDwvZGl2PlxuICA8c3BhbiAqbmdJZj1cIiF0aGlzLmhhc0Vycm9yICYmICF0aGlzLmNvbXBsZXRlZFwiIGNsYXNzPVwiaGVhZGVyLWxhYmVsXCI+e3sgdGhpcy5pbmRleCArIDEgKyAnLicgfX08L3NwYW4+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItbGFiZWxcIj57eyB0aGlzLmxhYmVsIH19PC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { CdkStep, CdkStepper, STEP_STATE } from '@angular/cdk/stepper';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, forwardRef, Inject, Input, Optional, Output, QueryList, ViewChildren, ViewEncapsulation, } from '@angular/core';
|
|
3
|
+
import { Subject, Subscription } from 'rxjs';
|
|
4
|
+
import { distinctUntilChanged, map, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';
|
|
5
|
+
import { StepHeaderComponent } from './step-header/step-header.component';
|
|
6
|
+
import { madStepperAnimations } from './mad-stepper-animation';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common";
|
|
9
|
+
import * as i2 from "../button/primary-button/primary-button.component";
|
|
10
|
+
import * as i3 from "@angular/cdk/bidi";
|
|
11
|
+
import * as i4 from "./step-header/step-header.component";
|
|
12
|
+
export class StepComponent extends CdkStep {
|
|
13
|
+
constructor(stepper, _viewContainerRef) {
|
|
14
|
+
super(stepper);
|
|
15
|
+
this.stepper = stepper;
|
|
16
|
+
this._viewContainerRef = _viewContainerRef;
|
|
17
|
+
/** Action event for the next button. If not set the StepComponent will handle the step navigation */
|
|
18
|
+
this.onNext = new EventEmitter();
|
|
19
|
+
/** Action event for the done button. If not set the StepComponent will handle the step navigation */
|
|
20
|
+
this.onDone = new EventEmitter();
|
|
21
|
+
/*** Action event when the header is clicked. If not set the StepComponent will handle the step navigation*/
|
|
22
|
+
this.onHeaderClick = new EventEmitter();
|
|
23
|
+
this.stepClosed = false;
|
|
24
|
+
this._isSelected = Subscription.EMPTY;
|
|
25
|
+
}
|
|
26
|
+
ngAfterContentInit() {
|
|
27
|
+
this._isSelected = this._stepper.steps.changes
|
|
28
|
+
.pipe(switchMap(() => this._stepper.selectionChange.pipe(map((event) => event.selectedStep === this), tap(() => (this.stepClosed = false)), startWith(this._stepper.selected === this))))
|
|
29
|
+
.subscribe();
|
|
30
|
+
}
|
|
31
|
+
ngOnDestroy() {
|
|
32
|
+
this._isSelected.unsubscribe();
|
|
33
|
+
}
|
|
34
|
+
next(markFormAsTouched = true) {
|
|
35
|
+
this.stepValidation(markFormAsTouched);
|
|
36
|
+
if (this.onNext.observers.length <= 0) {
|
|
37
|
+
this.stepper.next();
|
|
38
|
+
}
|
|
39
|
+
this.onNext.emit();
|
|
40
|
+
}
|
|
41
|
+
selectAndMarkAsTouched(index) {
|
|
42
|
+
//Mark current selected step as touched before selecting to display errors in the from
|
|
43
|
+
this._stepper.selected?.stepControl?.markAllAsTouched();
|
|
44
|
+
this.stepClosed = false;
|
|
45
|
+
if (this.onHeaderClick.observers.length <= 0) {
|
|
46
|
+
this.select();
|
|
47
|
+
}
|
|
48
|
+
this.onHeaderClick.emit(index);
|
|
49
|
+
}
|
|
50
|
+
completeLast() {
|
|
51
|
+
this.stepValidation(true);
|
|
52
|
+
this.stepClosed = true;
|
|
53
|
+
if (this.onDone.observers.length <= 0) {
|
|
54
|
+
this.stepper.next();
|
|
55
|
+
}
|
|
56
|
+
this.onDone.emit();
|
|
57
|
+
}
|
|
58
|
+
resetValidations() {
|
|
59
|
+
this.hasError = false;
|
|
60
|
+
this.completed = true;
|
|
61
|
+
this.state = STEP_STATE.DONE;
|
|
62
|
+
}
|
|
63
|
+
stepValidation(markFormAsTouched) {
|
|
64
|
+
if (markFormAsTouched) {
|
|
65
|
+
this.stepControl?.markAllAsTouched();
|
|
66
|
+
}
|
|
67
|
+
if (this.stepControl?.valid) {
|
|
68
|
+
this.hasError = false;
|
|
69
|
+
this.completed = true;
|
|
70
|
+
this.state = STEP_STATE.DONE;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
this.completed = false;
|
|
74
|
+
this.hasError = true;
|
|
75
|
+
this.state = STEP_STATE.ERROR;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: StepComponent, deps: [{ token: forwardRef(() => StepperComponent) }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
79
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: StepComponent, selector: "mad-step", outputs: { onNext: "onNext", onDone: "onDone", onHeaderClick: "onHeaderClick" }, providers: [{ provide: CdkStep, useExisting: StepComponent }], usesInheritance: true, ngImport: i0, template: "<ng-template let-last=\"last\" let-nextBtnLbl=\"nextBtnLbl\" let-doneBtnLbl=\"doneBtnLbl\">\n <div class=\"step-container\">\n <div class=\"step-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"step-buttons\">\n <div *ngIf=\"!last\">\n <mad-primary-button (click)=\"next()\">{{ nextBtnLbl }}</mad-primary-button>\n </div>\n <div *ngIf=\"last\">\n <mad-primary-button (click)=\"completeLast()\">{{ doneBtnLbl }}</mad-primary-button>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".stepper-vertical{display:block}.mat-vertical-stepper-header{display:flex;align-items:center;border:none!important;height:10px}.mat-vertical-stepper-header .mat-step-icon{margin-right:12px}.vertical-content-container{border:none}[dir=rtl] .vertical-content-container{margin-left:0;margin-right:36px}.vertical-stepper-content{overflow:hidden;outline:0}.vertical-content{padding:0 24px}.step-container{border-left:1px solid lightgrey;border-right:1px solid lightgrey;border-bottom:1px solid lightgrey;display:flex;flex-direction:column}.step-content,.step-buttons{padding:2em}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PrimaryButtonComponent, selector: "mad-primary-button", inputs: ["type", "disabled", "title"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
80
|
+
}
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: StepComponent, decorators: [{
|
|
82
|
+
type: Component,
|
|
83
|
+
args: [{ selector: 'mad-step', providers: [{ provide: CdkStep, useExisting: StepComponent }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template let-last=\"last\" let-nextBtnLbl=\"nextBtnLbl\" let-doneBtnLbl=\"doneBtnLbl\">\n <div class=\"step-container\">\n <div class=\"step-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"step-buttons\">\n <div *ngIf=\"!last\">\n <mad-primary-button (click)=\"next()\">{{ nextBtnLbl }}</mad-primary-button>\n </div>\n <div *ngIf=\"last\">\n <mad-primary-button (click)=\"completeLast()\">{{ doneBtnLbl }}</mad-primary-button>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".stepper-vertical{display:block}.mat-vertical-stepper-header{display:flex;align-items:center;border:none!important;height:10px}.mat-vertical-stepper-header .mat-step-icon{margin-right:12px}.vertical-content-container{border:none}[dir=rtl] .vertical-content-container{margin-left:0;margin-right:36px}.vertical-stepper-content{overflow:hidden;outline:0}.vertical-content{padding:0 24px}.step-container{border-left:1px solid lightgrey;border-right:1px solid lightgrey;border-bottom:1px solid lightgrey;display:flex;flex-direction:column}.step-content,.step-buttons{padding:2em}\n"] }]
|
|
84
|
+
}], ctorParameters: () => [{ type: StepperComponent, decorators: [{
|
|
85
|
+
type: Inject,
|
|
86
|
+
args: [forwardRef(() => StepperComponent)]
|
|
87
|
+
}] }, { type: i0.ViewContainerRef }], propDecorators: { onNext: [{
|
|
88
|
+
type: Output
|
|
89
|
+
}], onDone: [{
|
|
90
|
+
type: Output
|
|
91
|
+
}], onHeaderClick: [{
|
|
92
|
+
type: Output
|
|
93
|
+
}] } });
|
|
94
|
+
export class StepperComponent extends CdkStepper {
|
|
95
|
+
constructor(dir, changeDetectorRef, elementRef) {
|
|
96
|
+
super(dir, changeDetectorRef, elementRef);
|
|
97
|
+
/** Event emitted when the current step is done transitioning in. */
|
|
98
|
+
this.animationDone = new EventEmitter();
|
|
99
|
+
/** Steps that belong to the current stepper, excluding ones from nested steppers. */
|
|
100
|
+
this.steps = new QueryList();
|
|
101
|
+
this._animationDone = new Subject();
|
|
102
|
+
this.orientation = 'vertical';
|
|
103
|
+
}
|
|
104
|
+
ngOnInit() {
|
|
105
|
+
// Only linear stepper implementation is supported
|
|
106
|
+
super.linear = true;
|
|
107
|
+
}
|
|
108
|
+
ngAfterContentInit() {
|
|
109
|
+
super.ngAfterContentInit();
|
|
110
|
+
this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {
|
|
111
|
+
this._stateChanged();
|
|
112
|
+
});
|
|
113
|
+
this._animationDone
|
|
114
|
+
.pipe(distinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState), takeUntil(this._destroyed))
|
|
115
|
+
.subscribe((event) => {
|
|
116
|
+
if (event.toState === 'current') {
|
|
117
|
+
this.animationDone.emit();
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Method patched to enable the closing of the last step.
|
|
123
|
+
*/
|
|
124
|
+
_getAnimationDirection(index) {
|
|
125
|
+
const closeLastStep = this.selectedIndex === this.steps.length - 1 && this._steps.last?.completed && this._steps.last?.stepClosed;
|
|
126
|
+
if (closeLastStep) {
|
|
127
|
+
return 'next';
|
|
128
|
+
}
|
|
129
|
+
return super._getAnimationDirection(index);
|
|
130
|
+
}
|
|
131
|
+
_stepIsNavigable(index, step) {
|
|
132
|
+
return step.completed || this.selectedIndex === index || !this.linear;
|
|
133
|
+
}
|
|
134
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: StepperComponent, deps: [{ token: i3.Directionality, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
135
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: StepperComponent, selector: "mad-stepper", inputs: { nextButtonLabel: "nextButtonLabel", doneButtonLabel: "doneButtonLabel" }, outputs: { animationDone: "animationDone" }, host: { attributes: { "role": "tablist" }, properties: { "class.stepper-vertical": "true", "attr.aria-orientation": "\"vertical\"" } }, providers: [{ provide: CdkStepper, useExisting: StepperComponent }], queries: [{ propertyName: "_steps", predicate: StepComponent, descendants: true }], viewQueries: [{ propertyName: "_stepHeader", predicate: StepHeaderComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- Vertical stepper -->\n<ng-container>\n <div *ngFor=\"let step of steps; let i = index; let isLast = last; let isFirst = first\">\n <ng-container [ngTemplateOutlet]=\"stepTemplate\" [ngTemplateOutletContext]=\"{ step: step, i: i }\"></ng-container>\n <div class=\"vertical-content-container\" [class.mat-stepper-vertical-line]=\"!isLast\">\n <div\n class=\"vertical-stepper-content\"\n role=\"tabpanel\"\n [@stepTransition]=\"_getAnimationDirection(i)\"\n (@stepTransition.done)=\"_animationDone.next($event)\"\n [id]=\"_getStepContentId(i)\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [attr.aria-expanded]=\"selectedIndex === i\"\n >\n <div class=\"vertical-content\">\n <ng-container\n [ngTemplateOutlet]=\"step.content\"\n [ngTemplateOutletContext]=\"{\n step: step,\n i: i,\n last: isLast,\n first: isFirst,\n nextBtnLbl: this.nextButtonLabel,\n doneBtnLbl: this.doneButtonLabel\n }\"\n ></ng-container>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template let-step=\"step\" let-i=\"i\" #stepTemplate>\n <mad-step-header\n class=\"mat-vertical-stepper-header\"\n (click)=\"step.selectAndMarkAsTouched(i)\"\n (keydown)=\"_onKeydown($event)\"\n [tabIndex]=\"_getFocusIndex() === i ? 0 : -1\"\n [id]=\"_getStepLabelId(i)\"\n [attr.aria-posinset]=\"i + 1\"\n [attr.aria-setsize]=\"steps.length\"\n [attr.aria-controls]=\"_getStepContentId(i)\"\n [attr.aria-selected]=\"selectedIndex == i\"\n [attr.aria-label]=\"step.ariaLabel || null\"\n [attr.aria-labelledby]=\"!step.ariaLabel && step.ariaLabelledby ? step.ariaLabelledby : null\"\n [attr.aria-disabled]=\"_stepIsNavigable(i, step) ? null : true\"\n [index]=\"i\"\n [completed]=\"step.completed\"\n [hasError]=\"step.hasError\"\n [state]=\"_getIndicatorType(i, step.state)\"\n [label]=\"step.stepLabel || step.label\"\n [selected]=\"selectedIndex === i\"\n [active]=\"_stepIsNavigable(i, step)\"\n [optional]=\"step.optional\"\n [closed]=\"step.stepClosed\"\n [errorMessage]=\"step.errorMessage\"\n ></mad-step-header>\n</ng-template>\n", styles: [".stepper-vertical{display:block}.mat-vertical-stepper-header{display:flex;align-items:center;border:none!important;height:10px}.mat-vertical-stepper-header .mat-step-icon{margin-right:12px}.vertical-content-container{border:none}[dir=rtl] .vertical-content-container{margin-left:0;margin-right:36px}.vertical-stepper-content{overflow:hidden;outline:0}.vertical-content{padding:0 24px}.step-container{border-left:1px solid lightgrey;border-right:1px solid lightgrey;border-bottom:1px solid lightgrey;display:flex;flex-direction:column}.step-content,.step-buttons{padding:2em}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.StepHeaderComponent, selector: "mad-step-header", inputs: ["color", "index", "label", "state", "errorMessage", "selected", "active", "optional", "hasError", "completed", "closed"] }], animations: [madStepperAnimations.verticalStepTransition], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
136
|
+
}
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: StepperComponent, decorators: [{
|
|
138
|
+
type: Component,
|
|
139
|
+
args: [{ selector: 'mad-stepper', host: {
|
|
140
|
+
'[class.stepper-vertical]': 'true',
|
|
141
|
+
'[attr.aria-orientation]': '"vertical"',
|
|
142
|
+
role: 'tablist',
|
|
143
|
+
}, animations: [madStepperAnimations.verticalStepTransition], providers: [{ provide: CdkStepper, useExisting: StepperComponent }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Vertical stepper -->\n<ng-container>\n <div *ngFor=\"let step of steps; let i = index; let isLast = last; let isFirst = first\">\n <ng-container [ngTemplateOutlet]=\"stepTemplate\" [ngTemplateOutletContext]=\"{ step: step, i: i }\"></ng-container>\n <div class=\"vertical-content-container\" [class.mat-stepper-vertical-line]=\"!isLast\">\n <div\n class=\"vertical-stepper-content\"\n role=\"tabpanel\"\n [@stepTransition]=\"_getAnimationDirection(i)\"\n (@stepTransition.done)=\"_animationDone.next($event)\"\n [id]=\"_getStepContentId(i)\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [attr.aria-expanded]=\"selectedIndex === i\"\n >\n <div class=\"vertical-content\">\n <ng-container\n [ngTemplateOutlet]=\"step.content\"\n [ngTemplateOutletContext]=\"{\n step: step,\n i: i,\n last: isLast,\n first: isFirst,\n nextBtnLbl: this.nextButtonLabel,\n doneBtnLbl: this.doneButtonLabel\n }\"\n ></ng-container>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template let-step=\"step\" let-i=\"i\" #stepTemplate>\n <mad-step-header\n class=\"mat-vertical-stepper-header\"\n (click)=\"step.selectAndMarkAsTouched(i)\"\n (keydown)=\"_onKeydown($event)\"\n [tabIndex]=\"_getFocusIndex() === i ? 0 : -1\"\n [id]=\"_getStepLabelId(i)\"\n [attr.aria-posinset]=\"i + 1\"\n [attr.aria-setsize]=\"steps.length\"\n [attr.aria-controls]=\"_getStepContentId(i)\"\n [attr.aria-selected]=\"selectedIndex == i\"\n [attr.aria-label]=\"step.ariaLabel || null\"\n [attr.aria-labelledby]=\"!step.ariaLabel && step.ariaLabelledby ? step.ariaLabelledby : null\"\n [attr.aria-disabled]=\"_stepIsNavigable(i, step) ? null : true\"\n [index]=\"i\"\n [completed]=\"step.completed\"\n [hasError]=\"step.hasError\"\n [state]=\"_getIndicatorType(i, step.state)\"\n [label]=\"step.stepLabel || step.label\"\n [selected]=\"selectedIndex === i\"\n [active]=\"_stepIsNavigable(i, step)\"\n [optional]=\"step.optional\"\n [closed]=\"step.stepClosed\"\n [errorMessage]=\"step.errorMessage\"\n ></mad-step-header>\n</ng-template>\n", styles: [".stepper-vertical{display:block}.mat-vertical-stepper-header{display:flex;align-items:center;border:none!important;height:10px}.mat-vertical-stepper-header .mat-step-icon{margin-right:12px}.vertical-content-container{border:none}[dir=rtl] .vertical-content-container{margin-left:0;margin-right:36px}.vertical-stepper-content{overflow:hidden;outline:0}.vertical-content{padding:0 24px}.step-container{border-left:1px solid lightgrey;border-right:1px solid lightgrey;border-bottom:1px solid lightgrey;display:flex;flex-direction:column}.step-content,.step-buttons{padding:2em}\n"] }]
|
|
144
|
+
}], ctorParameters: () => [{ type: i3.Directionality, decorators: [{
|
|
145
|
+
type: Optional
|
|
146
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { animationDone: [{
|
|
147
|
+
type: Output
|
|
148
|
+
}], nextButtonLabel: [{
|
|
149
|
+
type: Input
|
|
150
|
+
}], doneButtonLabel: [{
|
|
151
|
+
type: Input
|
|
152
|
+
}], _stepHeader: [{
|
|
153
|
+
type: ViewChildren,
|
|
154
|
+
args: [StepHeaderComponent]
|
|
155
|
+
}], _steps: [{
|
|
156
|
+
type: ContentChildren,
|
|
157
|
+
args: [StepComponent, { descendants: true }]
|
|
158
|
+
}] } });
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9zdGVwcGVyL3N0ZXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy9saWIvc3RlcHBlci9zdGVwLmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwtYWRkb25zL3NyYy9saWIvc3RlcHBlci9zdGVwcGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBNEIsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRyxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksRUFFWixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7O0FBVS9ELE1BQU0sT0FBTyxhQUFjLFNBQVEsT0FBTztJQWlCeEMsWUFDc0QsT0FBeUIsRUFDckUsaUJBQW1DO1FBRTNDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUhxQyxZQUFPLEdB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aSc7XG5pbXBvcnQgeyBDZGtTdGVwLCBDZGtTdGVwcGVyLCBTVEVQX1NUQVRFLCBTdGVwQ29udGVudFBvc2l0aW9uU3RhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc3RlcHBlcic7XG5pbXBvcnQgeyBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3RlcEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vc3RlcC1oZWFkZXIvc3RlcC1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IG1hZFN0ZXBwZXJBbmltYXRpb25zIH0gZnJvbSAnLi9tYWQtc3RlcHBlci1hbmltYXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWQtc3RlcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3RlcHBlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IENka1N0ZXAsIHVzZUV4aXN0aW5nOiBTdGVwQ29tcG9uZW50IH1dLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU3RlcENvbXBvbmVudCBleHRlbmRzIENka1N0ZXAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAvKiogQWN0aW9uIGV2ZW50IGZvciB0aGUgbmV4dCBidXR0b24uIElmIG5vdCBzZXQgdGhlIFN0ZXBDb21wb25lbnQgd2lsbCBoYW5kbGUgdGhlIHN0ZXAgbmF2aWdhdGlvbiAqL1xuICBAT3V0cHV0KClcbiAgb25OZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqIEFjdGlvbiBldmVudCBmb3IgdGhlIGRvbmUgYnV0dG9uLiBJZiBub3Qgc2V0IHRoZSBTdGVwQ29tcG9uZW50IHdpbGwgaGFuZGxlIHRoZSBzdGVwIG5hdmlnYXRpb24gICovXG4gIEBPdXRwdXQoKVxuICBvbkRvbmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKioqIEFjdGlvbiBldmVudCB3aGVuIHRoZSBoZWFkZXIgaXMgY2xpY2tlZC4gSWYgbm90IHNldCB0aGUgU3RlcENvbXBvbmVudCB3aWxsIGhhbmRsZSB0aGUgc3RlcCBuYXZpZ2F0aW9uKi9cbiAgQE91dHB1dCgpXG4gIG9uSGVhZGVyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBzdGVwQ2xvc2VkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfaXNTZWxlY3RlZCA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gU3RlcHBlckNvbXBvbmVudCkpIHByaXZhdGUgc3RlcHBlcjogU3RlcHBlckNvbXBvbmVudCxcbiAgICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICApIHtcbiAgICBzdXBlcihzdGVwcGVyKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl9pc1NlbGVjdGVkID0gdGhpcy5fc3RlcHBlci5zdGVwcy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgdGhpcy5fc3RlcHBlci5zZWxlY3Rpb25DaGFuZ2UucGlwZShcbiAgICAgICAgICAgIG1hcCgoZXZlbnQpID0+IGV2ZW50LnNlbGVjdGVkU3RlcCA9PT0gdGhpcyksXG4gICAgICAgICAgICB0YXAoKCkgPT4gKHRoaXMuc3RlcENsb3NlZCA9IGZhbHNlKSksXG4gICAgICAgICAgICBzdGFydFdpdGgodGhpcy5fc3RlcHBlci5zZWxlY3RlZCA9PT0gdGhpcyksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2lzU2VsZWN0ZWQudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5leHQobWFya0Zvcm1Bc1RvdWNoZWQgPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwVmFsaWRhdGlvbihtYXJrRm9ybUFzVG91Y2hlZCk7XG5cbiAgICBpZiAodGhpcy5vbk5leHQub2JzZXJ2ZXJzLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLnN0ZXBwZXIubmV4dCgpO1xuICAgIH1cbiAgICB0aGlzLm9uTmV4dC5lbWl0KCk7XG4gIH1cblxuICBzZWxlY3RBbmRNYXJrQXNUb3VjaGVkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAvL01hcmsgY3VycmVudCBzZWxlY3RlZCBzdGVwIGFzIHRvdWNoZWQgYmVmb3JlIHNlbGVjdGluZyB0byBkaXNwbGF5IGVycm9ycyBpbiB0aGUgZnJvbVxuICAgIHRoaXMuX3N0ZXBwZXIuc2VsZWN0ZWQ/LnN0ZXBDb250cm9sPy5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5zdGVwQ2xvc2VkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMub25IZWFkZXJDbGljay5vYnNlcnZlcnMubGVuZ3RoIDw9IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0KCk7XG4gICAgfVxuICAgIHRoaXMub25IZWFkZXJDbGljay5lbWl0KGluZGV4KTtcbiAgfVxuXG4gIGNvbXBsZXRlTGFzdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBWYWxpZGF0aW9uKHRydWUpO1xuICAgIHRoaXMuc3RlcENsb3NlZCA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5vbkRvbmUub2JzZXJ2ZXJzLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLnN0ZXBwZXIubmV4dCgpO1xuICAgIH1cblxuICAgIHRoaXMub25Eb25lLmVtaXQoKTtcbiAgfVxuXG4gIHJlc2V0VmFsaWRhdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuY29tcGxldGVkID0gdHJ1ZTtcbiAgICB0aGlzLnN0YXRlID0gU1RFUF9TVEFURS5ET05FO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGVwVmFsaWRhdGlvbihtYXJrRm9ybUFzVG91Y2hlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChtYXJrRm9ybUFzVG91Y2hlZCkge1xuICAgICAgdGhpcy5zdGVwQ29udHJvbD8ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGVwQ29udHJvbD8udmFsaWQpIHtcbiAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3RhdGUgPSBTVEVQX1NUQVRFLkRPTkU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29tcGxldGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3RhdGUgPSBTVEVQX1NUQVRFLkVSUk9SO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWQtc3RlcHBlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGVwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3RlcHBlci5jb21wb25lbnQuc2NzcyddLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5zdGVwcGVyLXZlcnRpY2FsXSc6ICd0cnVlJyxcbiAgICAnW2F0dHIuYXJpYS1vcmllbnRhdGlvbl0nOiAnXCJ2ZXJ0aWNhbFwiJyxcbiAgICByb2xlOiAndGFibGlzdCcsXG4gIH0sXG4gIGFuaW1hdGlvbnM6IFttYWRTdGVwcGVyQW5pbWF0aW9ucy52ZXJ0aWNhbFN0ZXBUcmFuc2l0aW9uXSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IENka1N0ZXBwZXIsIHVzZUV4aXN0aW5nOiBTdGVwcGVyQ29tcG9uZW50IH1dLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU3RlcHBlckNvbXBvbmVudCBleHRlbmRzIENka1N0ZXBwZXIgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQge1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBjdXJyZW50IHN0ZXAgaXMgZG9uZSB0cmFuc2l0aW9uaW5nIGluLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgYW5pbWF0aW9uRG9uZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBJbnB1dCgpXG4gIG5leHRCdXR0b25MYWJlbDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGRvbmVCdXR0b25MYWJlbDogc3RyaW5nO1xuICAvKiogU3RlcCBoZWFkZXJzIG9mIGFsbCBzdGVwcyBpbnNpZGUgdGhlIHN0ZXBwZXIgKi9cbiAgQFZpZXdDaGlsZHJlbihTdGVwSGVhZGVyQ29tcG9uZW50KSBfc3RlcEhlYWRlcjogUXVlcnlMaXN0PFN0ZXBIZWFkZXJDb21wb25lbnQ+O1xuXG4gIC8qKiBTdGVwcyBpbnNpZGUgdGhlIFN0ZXBwZXIgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihTdGVwQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIF9zdGVwczogUXVlcnlMaXN0PFN0ZXBDb21wb25lbnQ+O1xuXG4gIC8qKiBTdGVwcyB0aGF0IGJlbG9uZyB0byB0aGUgY3VycmVudCBzdGVwcGVyLCBleGNsdWRpbmcgb25lcyBmcm9tIG5lc3RlZCBzdGVwcGVycy4gKi9cbiAgc3RlcHM6IFF1ZXJ5TGlzdDxTdGVwQ29tcG9uZW50PiA9IG5ldyBRdWVyeUxpc3Q8U3RlcENvbXBvbmVudD4oKTtcblxuICByZWFkb25seSBfYW5pbWF0aW9uRG9uZSA9IG5ldyBTdWJqZWN0PEFuaW1hdGlvbkV2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIGRpcjogRGlyZWN0aW9uYWxpdHksIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICBzdXBlcihkaXIsIGNoYW5nZURldGVjdG9yUmVmLCBlbGVtZW50UmVmKTtcbiAgICB0aGlzLm9yaWVudGF0aW9uID0gJ3ZlcnRpY2FsJztcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIE9ubHkgbGluZWFyIHN0ZXBwZXIgaW1wbGVtZW50YXRpb24gaXMgc3VwcG9ydGVkXG4gICAgc3VwZXIubGluZWFyID0gdHJ1ZTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyQ29udGVudEluaXQoKTtcblxuICAgIHRoaXMuc3RlcHMuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fc3RhdGVDaGFuZ2VkKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9hbmltYXRpb25Eb25lXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHgsIHkpID0+IHguZnJvbVN0YXRlID09PSB5LmZyb21TdGF0ZSAmJiB4LnRvU3RhdGUgPT09IHkudG9TdGF0ZSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKChldmVudC50b1N0YXRlIGFzIFN0ZXBDb250ZW50UG9zaXRpb25TdGF0ZSkgPT09ICdjdXJyZW50Jykge1xuICAgICAgICAgIHRoaXMuYW5pbWF0aW9uRG9uZS5lbWl0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBwYXRjaGVkIHRvIGVuYWJsZSB0aGUgY2xvc2luZyBvZiB0aGUgbGFzdCBzdGVwLlxuICAgKi9cbiAgX2dldEFuaW1hdGlvbkRpcmVjdGlvbihpbmRleDogbnVtYmVyKTogU3RlcENvbnRlbnRQb3NpdGlvblN0YXRlIHtcbiAgICBjb25zdCBjbG9zZUxhc3RTdGVwID0gdGhpcy5zZWxlY3RlZEluZGV4ID09PSB0aGlzLnN0ZXBzLmxlbmd0aCAtIDEgJiYgdGhpcy5fc3RlcHMubGFzdD8uY29tcGxldGVkICYmIHRoaXMuX3N0ZXBzLmxhc3Q/LnN0ZXBDbG9zZWQ7XG4gICAgaWYgKGNsb3NlTGFzdFN0ZXApIHtcbiAgICAgIHJldHVybiAnbmV4dCc7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5fZ2V0QW5pbWF0aW9uRGlyZWN0aW9uKGluZGV4KTtcbiAgfVxuXG4gIF9zdGVwSXNOYXZpZ2FibGUoaW5kZXg6IG51bWJlciwgc3RlcDogU3RlcENvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGVwLmNvbXBsZXRlZCB8fCB0aGlzLnNlbGVjdGVkSW5kZXggPT09IGluZGV4IHx8ICF0aGlzLmxpbmVhcjtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIGxldC1sYXN0PVwibGFzdFwiIGxldC1uZXh0QnRuTGJsPVwibmV4dEJ0bkxibFwiIGxldC1kb25lQnRuTGJsPVwiZG9uZUJ0bkxibFwiPlxuICA8ZGl2IGNsYXNzPVwic3RlcC1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RlcC1jb250ZW50XCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInN0ZXAtYnV0dG9uc1wiPlxuICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCI+XG4gICAgICAgIDxtYWQtcHJpbWFyeS1idXR0b24gKGNsaWNrKT1cIm5leHQoKVwiPnt7IG5leHRCdG5MYmwgfX08L21hZC1wcmltYXJ5LWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImxhc3RcIj5cbiAgICAgICAgPG1hZC1wcmltYXJ5LWJ1dHRvbiAoY2xpY2spPVwiY29tcGxldGVMYXN0KClcIj57eyBkb25lQnRuTGJsIH19PC9tYWQtcHJpbWFyeS1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIiwiPCEtLSBWZXJ0aWNhbCBzdGVwcGVyIC0tPlxuPG5nLWNvbnRhaW5lcj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwczsgbGV0IGkgPSBpbmRleDsgbGV0IGlzTGFzdCA9IGxhc3Q7IGxldCBpc0ZpcnN0ID0gZmlyc3RcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXBUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHN0ZXA6IHN0ZXAsIGk6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1jb250ZW50LWNvbnRhaW5lclwiIFtjbGFzcy5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lXT1cIiFpc0xhc3RcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1zdGVwcGVyLWNvbnRlbnRcIlxuICAgICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgICBbQHN0ZXBUcmFuc2l0aW9uXT1cIl9nZXRBbmltYXRpb25EaXJlY3Rpb24oaSlcIlxuICAgICAgICAoQHN0ZXBUcmFuc2l0aW9uLmRvbmUpPVwiX2FuaW1hdGlvbkRvbmUubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgW2lkXT1cIl9nZXRTdGVwQ29udGVudElkKGkpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIl9nZXRTdGVwTGFiZWxJZChpKVwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwic2VsZWN0ZWRJbmRleCA9PT0gaVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1jb250ZW50XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5jb250ZW50XCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgIHN0ZXA6IHN0ZXAsXG4gICAgICAgICAgICAgIGk6IGksXG4gICAgICAgICAgICAgIGxhc3Q6IGlzTGFzdCxcbiAgICAgICAgICAgICAgZmlyc3Q6IGlzRmlyc3QsXG4gICAgICAgICAgICAgIG5leHRCdG5MYmw6IHRoaXMubmV4dEJ1dHRvbkxhYmVsLFxuICAgICAgICAgICAgICBkb25lQnRuTGJsOiB0aGlzLmRvbmVCdXR0b25MYWJlbFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgbGV0LXN0ZXA9XCJzdGVwXCIgbGV0LWk9XCJpXCIgI3N0ZXBUZW1wbGF0ZT5cbiAgPG1hZC1zdGVwLWhlYWRlclxuICAgIGNsYXNzPVwibWF0LXZlcnRpY2FsLXN0ZXBwZXItaGVhZGVyXCJcbiAgICAoY2xpY2spPVwic3RlcC5zZWxlY3RBbmRNYXJrQXNUb3VjaGVkKGkpXCJcbiAgICAoa2V5ZG93bik9XCJfb25LZXlkb3duKCRldmVudClcIlxuICAgIFt0YWJJbmRleF09XCJfZ2V0Rm9jdXNJbmRleCgpID09PSBpID8gMCA6IC0xXCJcbiAgICBbaWRdPVwiX2dldFN0ZXBMYWJlbElkKGkpXCJcbiAgICBbYXR0ci5hcmlhLXBvc2luc2V0XT1cImkgKyAxXCJcbiAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwic3RlcHMubGVuZ3RoXCJcbiAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIl9nZXRTdGVwQ29udGVudElkKGkpXCJcbiAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInNlbGVjdGVkSW5kZXggPT0gaVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzdGVwLmFyaWFMYWJlbCB8fCBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiIXN0ZXAuYXJpYUxhYmVsICYmIHN0ZXAuYXJpYUxhYmVsbGVkYnkgPyBzdGVwLmFyaWFMYWJlbGxlZGJ5IDogbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJfc3RlcElzTmF2aWdhYmxlKGksIHN0ZXApID8gbnVsbCA6IHRydWVcIlxuICAgIFtpbmRleF09XCJpXCJcbiAgICBbY29tcGxldGVkXT1cInN0ZXAuY29tcGxldGVkXCJcbiAgICBbaGFzRXJyb3JdPVwic3RlcC5oYXNFcnJvclwiXG4gICAgW3N0YXRlXT1cIl9nZXRJbmRpY2F0b3JUeXBlKGksIHN0ZXAuc3RhdGUpXCJcbiAgICBbbGFiZWxdPVwic3RlcC5zdGVwTGFiZWwgfHwgc3RlcC5sYWJlbFwiXG4gICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkSW5kZXggPT09IGlcIlxuICAgIFthY3RpdmVdPVwiX3N0ZXBJc05hdmlnYWJsZShpLCBzdGVwKVwiXG4gICAgW29wdGlvbmFsXT1cInN0ZXAub3B0aW9uYWxcIlxuICAgIFtjbG9zZWRdPVwic3RlcC5zdGVwQ2xvc2VkXCJcbiAgICBbZXJyb3JNZXNzYWdlXT1cInN0ZXAuZXJyb3JNZXNzYWdlXCJcbiAgPjwvbWFkLXN0ZXAtaGVhZGVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|