@esfaenza/forms-and-validations 15.2.57 → 16.0.1
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/{esm2020 → esm2022}/lib/forms/base-form-control.mjs +6 -4
- package/{esm2020 → esm2022}/lib/forms/form-adaptive/form-adaptive.component.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-adaptive/form-adaptive.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-autocomplete/form-autocomplete.component.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-autocomplete/form-autocomplete.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-checkbox/form-checkbox.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-date/form-date.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-datetime/form-datetime.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-empty/form-empty.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-error/form-error.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-file/form-file.component.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-file/form-file.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-info/form-info.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-input/form-input.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/forms/form-multiselect/form-multiselect.component.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-multiselect/form-multiselect.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-select/form-select.component.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-select/form-select.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-template/form-template.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-textarea/form-textarea.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/form-time/form-time.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms-and-validations.module.mjs +64 -64
- package/{esm2020 → esm2022}/lib/models/dayjs-adapter/dayjs-date-adapter.mjs +4 -4
- package/{esm2020 → esm2022}/lib/validations/base-validation.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/validations/base-validation.mjs +4 -4
- package/{esm2020 → esm2022}/lib/validations/customValidators/CustomRequiredDirective.mjs +4 -4
- package/esm2022/lib/validations/validation-autocomplete/validation-autocomplete.component.mjs +147 -0
- package/esm2022/lib/validations/validation-autocomplete-multi/validation-autocomplete-multi.component.mjs +240 -0
- package/esm2022/lib/validations/validation-currency/validation-currency.component.mjs +75 -0
- package/esm2022/lib/validations/validation-date/validation-date.component.mjs +183 -0
- package/esm2022/lib/validations/validation-datetime/validation-datetime.component.mjs +212 -0
- package/esm2022/lib/validations/validation-input/validation-input.component.mjs +218 -0
- package/esm2022/lib/validations/validation-select/validation-select.component.mjs +183 -0
- package/esm2022/lib/validations/validation-text-area/validation-text-area.component.mjs +78 -0
- package/{fesm2020 → fesm2022}/esfaenza-forms-and-validations.mjs +227 -223
- package/fesm2022/esfaenza-forms-and-validations.mjs.map +1 -0
- package/lib/forms/base-form-control.d.ts +3 -1
- package/lib/forms/form-adaptive/form-adaptive.component.d.ts +1 -1
- package/lib/forms/form-autocomplete/form-autocomplete.component.d.ts +1 -1
- package/lib/forms/form-checkbox/form-checkbox.component.d.ts +1 -1
- package/lib/forms/form-date/form-date.component.d.ts +1 -1
- package/lib/forms/form-datetime/form-datetime.component.d.ts +1 -1
- package/lib/forms/form-empty/form-empty.component.d.ts +1 -1
- package/lib/forms/form-error/form-error.component.d.ts +1 -1
- package/lib/forms/form-file/form-file.component.d.ts +1 -1
- package/lib/forms/form-info/form-info.component.d.ts +1 -1
- package/lib/forms/form-input/form-input.component.d.ts +1 -1
- package/lib/forms/form-multiselect/form-multiselect.component.d.ts +1 -1
- package/lib/forms/form-select/form-select.component.d.ts +1 -1
- package/lib/forms/form-template/form-template.component.d.ts +1 -1
- package/lib/forms/form-textarea/form-textarea.component.d.ts +1 -1
- package/lib/forms/form-time/form-time.component.d.ts +1 -1
- package/lib/validations/base-validation.d.ts +1 -1
- package/lib/validations/customValidators/CustomRequiredDirective.d.ts +1 -1
- package/lib/validations/validation-autocomplete/validation-autocomplete.component.d.ts +1 -1
- package/lib/validations/validation-autocomplete-multi/validation-autocomplete-multi.component.d.ts +1 -1
- package/lib/validations/validation-currency/validation-currency.component.d.ts +1 -1
- package/lib/validations/validation-date/validation-date.component.d.ts +1 -1
- package/lib/validations/validation-datetime/validation-datetime.component.d.ts +1 -1
- package/lib/validations/validation-input/validation-input.component.d.ts +2 -2
- package/lib/validations/validation-select/validation-select.component.d.ts +1 -1
- package/lib/validations/validation-text-area/validation-text-area.component.d.ts +1 -1
- package/package.json +20 -26
- package/esm2020/lib/validations/validation-autocomplete/validation-autocomplete.component.mjs +0 -147
- package/esm2020/lib/validations/validation-autocomplete-multi/validation-autocomplete-multi.component.mjs +0 -240
- package/esm2020/lib/validations/validation-currency/validation-currency.component.mjs +0 -75
- package/esm2020/lib/validations/validation-date/validation-date.component.mjs +0 -183
- package/esm2020/lib/validations/validation-datetime/validation-datetime.component.mjs +0 -212
- package/esm2020/lib/validations/validation-input/validation-input.component.mjs +0 -216
- package/esm2020/lib/validations/validation-select/validation-select.component.mjs +0 -183
- package/esm2020/lib/validations/validation-text-area/validation-text-area.component.mjs +0 -78
- package/fesm2015/esfaenza-forms-and-validations.mjs +0 -4310
- package/fesm2015/esfaenza-forms-and-validations.mjs.map +0 -1
- package/fesm2020/esfaenza-forms-and-validations.mjs.map +0 -1
- /package/{esm2020 → esm2022}/esfaenza-forms-and-validations.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/AppFile.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/ChangeEvent.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/FormsAndValidationsModuleConfig.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { NG_ASYNC_VALIDATORS, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl } from "@angular/forms";
|
|
3
|
+
import { ChangeDetectionStrategy, Component, forwardRef, Inject, Input, Optional, ViewEncapsulation } from "@angular/core";
|
|
4
|
+
// Configurazioni
|
|
5
|
+
import { LocalizationService } from "@esfaenza/localizations";
|
|
6
|
+
// Direttive, Componenti, Librerie
|
|
7
|
+
import { BaseValidation } from "../base-validation";
|
|
8
|
+
import { BaseValidationLoc } from "../base-validation.loc";
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@esfaenza/localizations";
|
|
11
|
+
import * as i2 from "@esfaenza/extensions";
|
|
12
|
+
import * as i3 from "@angular/common";
|
|
13
|
+
import * as i4 from "@angular/forms";
|
|
14
|
+
import * as i5 from "@angular/material/legacy-form-field";
|
|
15
|
+
import * as i6 from "@angular/material/legacy-input";
|
|
16
|
+
import * as i7 from "@angular/material/datepicker";
|
|
17
|
+
import * as i8 from "ngx-bootstrap/tooltip";
|
|
18
|
+
/**
|
|
19
|
+
* Componente di validaizone per gli input di tipo data
|
|
20
|
+
*/
|
|
21
|
+
export class ValidationDateComponent extends BaseValidation {
|
|
22
|
+
/**
|
|
23
|
+
* @ignore
|
|
24
|
+
*/
|
|
25
|
+
constructor(cdr, _validators, _asyncValidators, injector, lc, dateExts) {
|
|
26
|
+
super(cdr);
|
|
27
|
+
this._validators = _validators;
|
|
28
|
+
this._asyncValidators = _asyncValidators;
|
|
29
|
+
this.injector = injector;
|
|
30
|
+
this.lc = lc;
|
|
31
|
+
this.dateExts = dateExts;
|
|
32
|
+
/**
|
|
33
|
+
* Utilizza il Date di Javascript come modello in uscita. Il modello in entrata verrà comunque ricondotto a un DayJs
|
|
34
|
+
*/
|
|
35
|
+
this.useJsDates = false;
|
|
36
|
+
/**
|
|
37
|
+
* @ignore
|
|
38
|
+
*/
|
|
39
|
+
this.onTouched = () => { };
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @ignore
|
|
43
|
+
*/
|
|
44
|
+
ngOnInit() {
|
|
45
|
+
super.ngOnInit();
|
|
46
|
+
this.registerFocusRequest();
|
|
47
|
+
this.checkRequiredness(this._validators);
|
|
48
|
+
this._format = this.lc.token("getSmallDateDisplayFormat");
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* @ignore
|
|
52
|
+
*/
|
|
53
|
+
ngOnDestroy() {
|
|
54
|
+
super.ngOnDestroy();
|
|
55
|
+
this.deregisterFocusRequest();
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* @ignore
|
|
59
|
+
*/
|
|
60
|
+
ngAfterViewInit() {
|
|
61
|
+
this.postBinding();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Metodo che si occupa di collegare i validatori e la funzione di reset dal **ControlValueAccessor** rappresentato
|
|
65
|
+
* da questo componente al **ControlValueAccessor** rappresentato dall'effettivo elemento di Input presente lato HTML
|
|
66
|
+
*/
|
|
67
|
+
postBinding() {
|
|
68
|
+
this.CheckValidity();
|
|
69
|
+
const ngControl = this.injector.get(NgControl, null);
|
|
70
|
+
if (ngControl) {
|
|
71
|
+
this.parentControl = ngControl.control;
|
|
72
|
+
if (this.noValidate) {
|
|
73
|
+
this.parentControl.clearValidators();
|
|
74
|
+
this.parentControl.clearAsyncValidators();
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
this.baseInput.control.setAsyncValidators(this._asyncValidators);
|
|
78
|
+
this.baseInput.control.setValidators(this._validators);
|
|
79
|
+
}
|
|
80
|
+
// //faccio in modo che se chiamo il reset del controllo (o della form) dall'esterno si resetti anche il controllo nativo
|
|
81
|
+
//faccio in modo che se chiamo il reset del controllo (o della form) dall'esterno si resetti anche il controllo nativo
|
|
82
|
+
const origFunc = this.parentControl.reset;
|
|
83
|
+
this.parentControl.reset = () => {
|
|
84
|
+
origFunc.apply(this.parentControl);
|
|
85
|
+
this.baseInput.control.reset();
|
|
86
|
+
this.tooltip.hide();
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @ignore
|
|
92
|
+
*/
|
|
93
|
+
writeValue(value) {
|
|
94
|
+
if (!value) {
|
|
95
|
+
this.value = null;
|
|
96
|
+
if (this.baseInput)
|
|
97
|
+
this.baseInput.reset();
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
var date = null;
|
|
101
|
+
if (this.useJsDates) {
|
|
102
|
+
date = this.dateExts.getDateConvertion(value);
|
|
103
|
+
if (date) {
|
|
104
|
+
this.propagateChange(date.toDate());
|
|
105
|
+
this.inputChange.emit(date.toDate());
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else
|
|
109
|
+
date = dayjs(value, this.lc.token("getSmallDateFormat"));
|
|
110
|
+
this.value = date;
|
|
111
|
+
}
|
|
112
|
+
this.cdr.markForCheck();
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Metodo che si occupa di, eventualmente, aggiustare il valore da propagare ed emetterlo
|
|
116
|
+
*
|
|
117
|
+
* L'emit della modifica al valore viene gestito su un evento custom (**inputChange**) come workaround al malfunzionamento dell'**ngModelChange** nativo
|
|
118
|
+
*
|
|
119
|
+
* @param {any} toEmit valore da propagare all'esterno
|
|
120
|
+
*/
|
|
121
|
+
outputValue(toEmit) {
|
|
122
|
+
let value = toEmit.value;
|
|
123
|
+
let propagateValue;
|
|
124
|
+
if (!value)
|
|
125
|
+
propagateValue = null;
|
|
126
|
+
else if (!this.useJsDates)
|
|
127
|
+
propagateValue = value.format(this.lc.token("getSmallDateFormat"));
|
|
128
|
+
else {
|
|
129
|
+
if (value && value.isValid())
|
|
130
|
+
propagateValue = value.hour(0).minute(0).second(0).toDate();
|
|
131
|
+
else
|
|
132
|
+
propagateValue = null;
|
|
133
|
+
}
|
|
134
|
+
this.propagateChange(propagateValue);
|
|
135
|
+
this.inputChange.emit(propagateValue);
|
|
136
|
+
this.onTouched();
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* @ignore
|
|
140
|
+
*/
|
|
141
|
+
registerOnChange(fn) {
|
|
142
|
+
this.propagateChange = fn;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* @ignore
|
|
146
|
+
*/
|
|
147
|
+
registerOnTouched(fn) {
|
|
148
|
+
this.onTouched = fn;
|
|
149
|
+
}
|
|
150
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationDateComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: NG_VALIDATORS, optional: true }, { token: NG_ASYNC_VALIDATORS, optional: true }, { token: i0.Injector }, { token: i1.LocalizationService }, { token: i2.DateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
151
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ValidationDateComponent, selector: "val-date", inputs: { useJsDates: "useJsDates" }, providers: [
|
|
152
|
+
{ provide: LocalizationService, useClass: BaseValidationLoc },
|
|
153
|
+
{
|
|
154
|
+
provide: NG_VALUE_ACCESSOR,
|
|
155
|
+
useExisting: forwardRef(() => ValidationDateComponent),
|
|
156
|
+
multi: true
|
|
157
|
+
}
|
|
158
|
+
], usesInheritance: true, ngImport: i0, template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n <input matInput\r\n [matDatepicker]=\"datepicker\"\r\n #baseInput=\"ngModel\"\r\n #htmlInput\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n name=\"val-date\"\r\n class=\"form-control {{class}}\"\r\n autocomplete=\"{{autocomplete}}\"\r\n id=\"{{id}}\"\r\n (click)=\"onFocus($event)\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate\"\r\n [tooltip]=\"tolTemplate\"\r\n [placeholder]=\"placeholder ? (FloatingLabel ? undefined : placeholder) : _format\"\r\n [disabled]=\"Readonly || disabled\"\r\n [isDisabled]=\"Readonly || disabled\"\r\n (dateChange)=\"outputValue($event); onFinalize();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip();\"\r\n />\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datepicker></mat-datepicker>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailedBind}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatLegacySuffix, selector: "[matSuffix]" }, { kind: "directive", type: i6.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "component", type: i7.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i7.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i7.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i8.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
159
|
+
}
|
|
160
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationDateComponent, decorators: [{
|
|
161
|
+
type: Component,
|
|
162
|
+
args: [{ selector: "val-date", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
163
|
+
{ provide: LocalizationService, useClass: BaseValidationLoc },
|
|
164
|
+
{
|
|
165
|
+
provide: NG_VALUE_ACCESSOR,
|
|
166
|
+
useExisting: forwardRef(() => ValidationDateComponent),
|
|
167
|
+
multi: true
|
|
168
|
+
}
|
|
169
|
+
], template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n <input matInput\r\n [matDatepicker]=\"datepicker\"\r\n #baseInput=\"ngModel\"\r\n #htmlInput\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n name=\"val-date\"\r\n class=\"form-control {{class}}\"\r\n autocomplete=\"{{autocomplete}}\"\r\n id=\"{{id}}\"\r\n (click)=\"onFocus($event)\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate\"\r\n [tooltip]=\"tolTemplate\"\r\n [placeholder]=\"placeholder ? (FloatingLabel ? undefined : placeholder) : _format\"\r\n [disabled]=\"Readonly || disabled\"\r\n [isDisabled]=\"Readonly || disabled\"\r\n (dateChange)=\"outputValue($event); onFinalize();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip();\"\r\n />\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datepicker></mat-datepicker>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailedBind}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n"] }]
|
|
170
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: Array, decorators: [{
|
|
171
|
+
type: Optional
|
|
172
|
+
}, {
|
|
173
|
+
type: Inject,
|
|
174
|
+
args: [NG_VALIDATORS]
|
|
175
|
+
}] }, { type: Array, decorators: [{
|
|
176
|
+
type: Optional
|
|
177
|
+
}, {
|
|
178
|
+
type: Inject,
|
|
179
|
+
args: [NG_ASYNC_VALIDATORS]
|
|
180
|
+
}] }, { type: i0.Injector }, { type: i1.LocalizationService }, { type: i2.DateService }]; }, propDecorators: { useJsDates: [{
|
|
181
|
+
type: Input
|
|
182
|
+
}] } });
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1kYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1zLWFuZC12YWxpZGF0aW9ucy9zcmMvbGliL3ZhbGlkYXRpb25zL3ZhbGlkYXRpb24tZGF0ZS92YWxpZGF0aW9uLWRhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1kYXRlL3ZhbGlkYXRpb24tZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUE0QyxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFxQixNQUFNLGdCQUFnQixDQUFDO0FBQy9KLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVksS0FBSyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV2SixpQkFBaUI7QUFDakIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsa0NBQWtDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTs7Ozs7Ozs7OztBQVMxRDs7R0FFRztBQWdCSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsY0FBYztJQXNCdkQ7O09BRUc7SUFDSCxZQUFZLEdBQXVCLEVBQTZDLFdBQXVCLEVBQW1ELGdCQUE0QixFQUFVLFFBQWtCLEVBQVksRUFBdUIsRUFBVSxRQUFxQjtRQUNoUixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFEaUUsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFBbUQscUJBQWdC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SSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0EzSlEsdUJBQXVCLG1EQXlCeUIsYUFBYSw2QkFBdUQsbUJBQW1CO21HQXpCdkksdUJBQXVCLHlFQVRyQjtZQUNQLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTtZQUM3RDtnQkFDSSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2dCQUN0RCxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osaURDbENMLDQ5Q0FnQ2M7OzRGRElELHVCQUF1QjtrQkFmbkMsU0FBUzsrQkFDSSxVQUFVLGlCQUVMLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFFcEM7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO3dCQUM3RDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQzs0QkFDdEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7OzBCQTJCcUMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFBb0MsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxtQkFBbUI7K0hBTGhJLFVBQVU7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBVbnR5cGVkRm9ybUNvbnRyb2wsIE5HX0FTWU5DX1ZBTElEQVRPUlMsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ0NvbnRyb2wsIFJlcXVpcmVkVmFsaWRhdG9yIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbmplY3QsIEluamVjdG9yLCBJbnB1dCwgT3B0aW9uYWwsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5cclxuLy8gRGlyZXR0aXZlLCBDb21wb25lbnRpLCBMaWJyZXJpZVxyXG5pbXBvcnQgeyBCYXNlVmFsaWRhdGlvbiB9IGZyb20gXCIuLi9iYXNlLXZhbGlkYXRpb25cIjtcclxuaW1wb3J0IHsgQmFzZVZhbGlkYXRpb25Mb2MgfSBmcm9tIFwiLi4vYmFzZS12YWxpZGF0aW9uLmxvY1wiXHJcbmltcG9ydCB7IERhdGVTZXJ2aWNlIH0gZnJvbSAnQGVzZmFlbnphL2V4dGVuc2lvbnMnO1xyXG5cclxuLyoqXHJcbiAqIERpY2hpYXJhemlvbmUgZGVsbGEgdmFyaWFiaWxlIGdsb2JhbGUgZGF5anMuIEwnb25lcmUgZGkgXCJjcmVhcmxhXCIgw6ggYWZmaWRhdG8gYWxsJ2FwcGxpY2F6aW9uZSBjaGUgdXRpbGl6emEgcXVlc3RhIGxpYnJlcmlhLCBcclxuICogY2hlIGRvdnLDoCBpbXBvcnRhcmUgbG8gc2NyaXB0IGdsb2JhbGUgZGkgZGF5anMgbmVsbGEgQ0xJXHJcbiAqL1xyXG5kZWNsYXJlIHZhciBkYXlqczogYW55O1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgZGkgdmFsaWRhaXpvbmUgcGVyIGdsaSBpbnB1dCBkaSB0aXBvIGRhdGFcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwidmFsLWRhdGVcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcInZhbGlkYXRpb24tZGF0ZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuLi92YWxpZGF0aW9uLXN0eWxlLnNjc3NcIl0sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IExvY2FsaXphdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBCYXNlVmFsaWRhdGlvbkxvYyB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFZhbGlkYXRpb25EYXRlQ29tcG9uZW50KSxcclxuICAgICAgICAgICAgbXVsdGk6IHRydWVcclxuICAgICAgICB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uRGF0ZUNvbXBvbmVudCBleHRlbmRzIEJhc2VWYWxpZGF0aW9uIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFVzYXRvIHNvbG8gcGVyIHN0YW1wYXJlIGlsIHBsYWNlaG9sZGVyIHF1YWxvcmEgbCdJbnB1dCAqKnBsYWNlaG9sZGVyKiogbm9uIGZvc3NlIHZhbG9yaXp6YXRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBfZm9ybWF0OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIE1vZGVsbG8gY29sbGVnYXRvIGFsbCdpbnB1dFxyXG4gICAgKi9cclxuICAgIHB1YmxpYyB2YWx1ZTogRGF0ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnRyb2xsbyBlc3Bvc3RvIG90dGVudXRvIHRyYW1pdGUgaW5qZWN0b3JcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwYXJlbnRDb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVdGlsaXp6YSBpbCBEYXRlIGRpIEphdmFzY3JpcHQgY29tZSBtb2RlbGxvIGluIHVzY2l0YS4gSWwgbW9kZWxsbyBpbiBlbnRyYXRhIHZlcnLDoCBjb211bnF1ZSByaWNvbmRvdHRvIGEgdW4gRGF5SnNcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHVzZUpzRGF0ZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmUgXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGNkciA6IENoYW5nZURldGVjdG9yUmVmLCBAT3B0aW9uYWwoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIHByaXZhdGUgX3ZhbGlkYXRvcnM6IEFycmF5PGFueT4sIEBPcHRpb25hbCgpIEBJbmplY3QoTkdfQVNZTkNfVkFMSURBVE9SUykgcHJpdmF0ZSBfYXN5bmNWYWxpZGF0b3JzOiBBcnJheTxhbnk+LCBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgcHJvdGVjdGVkIGxjOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCBwcml2YXRlIGRhdGVFeHRzOiBEYXRlU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKGNkcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlIFxyXG4gICAgICovXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJGb2N1c1JlcXVlc3QoKTtcclxuXHJcbiAgICAgICAgdGhpcy5jaGVja1JlcXVpcmVkbmVzcyh0aGlzLl92YWxpZGF0b3JzKTtcclxuXHJcbiAgICAgICAgdGhpcy5fZm9ybWF0ID0gdGhpcy5sYy50b2tlbihcImdldFNtYWxsRGF0ZURpc3BsYXlGb3JtYXRcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5kZXJlZ2lzdGVyRm9jdXNSZXF1ZXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlIFxyXG4gICAgICovXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5wb3N0QmluZGluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBzaSBvY2N1cGEgZGkgY29sbGVnYXJlIGkgdmFsaWRhdG9yaSBlIGxhIGZ1bnppb25lIGRpIHJlc2V0IGRhbCAqKkNvbnRyb2xWYWx1ZUFjY2Vzc29yKiogcmFwcHJlc2VudGF0byBcclxuICAgICAqIGRhIHF1ZXN0byBjb21wb25lbnRlIGFsICoqQ29udHJvbFZhbHVlQWNjZXNzb3IqKiByYXBwcmVzZW50YXRvIGRhbGwnZWZmZXR0aXZvIGVsZW1lbnRvIGRpIElucHV0IHByZXNlbnRlIGxhdG8gSFRNTFxyXG4gICAgICovXHJcbiAgICBwb3N0QmluZGluZygpIHtcclxuICAgICAgICB0aGlzLkNoZWNrVmFsaWRpdHkoKTtcclxuICAgICAgICBjb25zdCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCk7XHJcbiAgICAgICAgaWYgKG5nQ29udHJvbCkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudENvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5ub1ZhbGlkYXRlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudENvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudENvbnRyb2wuY2xlYXJBc3luY1ZhbGlkYXRvcnMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmFzZUlucHV0LmNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuX2FzeW5jVmFsaWRhdG9ycyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2VJbnB1dC5jb250cm9sLnNldFZhbGlkYXRvcnModGhpcy5fdmFsaWRhdG9ycyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIC8vZmFjY2lvIGluIG1vZG8gY2hlIHNlIGNoaWFtbyBpbCByZXNldCBkZWwgY29udHJvbGxvIChvIGRlbGxhIGZvcm0pIGRhbGwnZXN0ZXJubyBzaSByZXNldHRpIGFuY2hlIGlsIGNvbnRyb2xsbyBuYXRpdm9cclxuICAgICAgICAgICAgLy9mYWNjaW8gaW4gbW9kbyBjaGUgc2UgY2hpYW1vIGlsIHJlc2V0IGRlbCBjb250cm9sbG8gKG8gZGVsbGEgZm9ybSkgZGFsbCdlc3Rlcm5vIHNpIHJlc2V0dGkgYW5jaGUgaWwgY29udHJvbGxvIG5hdGl2b1xyXG4gICAgICAgICAgICBjb25zdCBvcmlnRnVuYyA9IHRoaXMucGFyZW50Q29udHJvbC5yZXNldDtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sLnJlc2V0ID0gKCkgPT4geyAvL2ZhY2NpbyBpbiBtb2RvIGNoZSBzZSBjaGlhbW8gaWwgcmVzZXQgZGVsIGNvbnRyb2xsbyAobyBkZWxsYSBmb3JtKSBkYWxsJ2VzdGVybm8gc2kgcmVzZXR0aSBhbmNoZSBpbCBjb250cm9sbG8gbmF0aXZvXHJcbiAgICAgICAgICAgICAgICBvcmlnRnVuYy5hcHBseSh0aGlzLnBhcmVudENvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlSW5wdXQuY29udHJvbC5yZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b29sdGlwLmhpZGUoKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHsgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmUgXHJcbiAgICAgKi9cclxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmJhc2VJbnB1dClcclxuICAgICAgICAgICAgICAgIHRoaXMuYmFzZUlucHV0LnJlc2V0KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFyIGRhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAodGhpcy51c2VKc0RhdGVzKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRlID0gdGhpcy5kYXRlRXh0cy5nZXREYXRlQ29udmVydGlvbih2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKGRhdGUudG9EYXRlKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdChkYXRlLnRvRGF0ZSgpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBkYXRlID0gZGF5anModmFsdWUsIHRoaXMubGMudG9rZW4oXCJnZXRTbWFsbERhdGVGb3JtYXRcIikpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgc2kgb2NjdXBhIGRpLCBldmVudHVhbG1lbnRlLCBhZ2dpdXN0YXJlIGlsIHZhbG9yZSBkYSBwcm9wYWdhcmUgZWQgZW1ldHRlcmxvXHJcbiAgICAgKiBcclxuICAgICAqIEwnZW1pdCBkZWxsYSBtb2RpZmljYSBhbCB2YWxvcmUgdmllbmUgZ2VzdGl0byBzdSB1biBldmVudG8gY3VzdG9tICgqKmlucHV0Q2hhbmdlKiopIGNvbWUgd29ya2Fyb3VuZCBhbCBtYWxmdW56aW9uYW1lbnRvIGRlbGwnKipuZ01vZGVsQ2hhbmdlKiogbmF0aXZvXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55fSB0b0VtaXQgdmFsb3JlIGRhIHByb3BhZ2FyZSBhbGwnZXN0ZXJub1xyXG4gICAgICovXHJcbiAgICBvdXRwdXRWYWx1ZSh0b0VtaXQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IHRvRW1pdC52YWx1ZTtcclxuICAgICAgICBsZXQgcHJvcGFnYXRlVmFsdWU6IGFueTtcclxuXHJcbiAgICAgICAgaWYgKCF2YWx1ZSlcclxuICAgICAgICAgICAgcHJvcGFnYXRlVmFsdWUgPSBudWxsO1xyXG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLnVzZUpzRGF0ZXMpXHJcbiAgICAgICAgICAgIHByb3BhZ2F0ZVZhbHVlID0gdmFsdWUuZm9ybWF0KHRoaXMubGMudG9rZW4oXCJnZXRTbWFsbERhdGVGb3JtYXRcIikpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNWYWxpZCgpKVxyXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlVmFsdWUgPSB2YWx1ZS5ob3VyKDApLm1pbnV0ZSgwKS5zZWNvbmQoMCkudG9EYXRlKCk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZVZhbHVlID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UocHJvcGFnYXRlVmFsdWUpO1xyXG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdChwcm9wYWdhdGVWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmUgXHJcbiAgICAgKi9cclxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlIFxyXG4gICAgICovXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICAgIH1cclxufSIsIjxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwie3tGaWVsZEFwcGVhcmVuY2V9fVwiIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGggbWF0LW5vLWJvcmRlci10b3AgbWF0LWhlaWdodC1maXhlZFwiIFtzdHlsZS53aWR0aC5weF09XCJ3aWR0aFB4XCI+XHJcbiAgICA8bWF0LWxhYmVsICpuZ0lmPVwicGxhY2Vob2xkZXIgJiYgRmxvYXRpbmdMYWJlbFwiPnt7cGxhY2Vob2xkZXJ9fTwvbWF0LWxhYmVsPlxyXG4gICAgPGlucHV0IG1hdElucHV0XHJcbiAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgI2Jhc2VJbnB1dD1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICNodG1sSW5wdXRcclxuICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgdHJpZ2dlcnM9XCJcIlxyXG4gICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICAgbmFtZT1cInZhbC1kYXRlXCJcclxuICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB7e2NsYXNzfX1cIlxyXG4gICAgICAgICAgIGF1dG9jb21wbGV0ZT1cInt7YXV0b2NvbXBsZXRlfX1cIlxyXG4gICAgICAgICAgIGlkPVwie3tpZH19XCJcclxuICAgICAgICAgICAoY2xpY2spPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgICAgICBbY2xhc3MuY2hlY2tpbmctZmllbGRdPVwiIW5vVmFsaWRhdGVcIlxyXG4gICAgICAgICAgIFt0b29sdGlwXT1cInRvbFRlbXBsYXRlXCJcclxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgPyAoRmxvYXRpbmdMYWJlbCA/IHVuZGVmaW5lZCA6IHBsYWNlaG9sZGVyKSA6IF9mb3JtYXRcIlxyXG4gICAgICAgICAgIFtkaXNhYmxlZF09XCJSZWFkb25seSB8fCBkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiUmVhZG9ubHkgfHwgZGlzYWJsZWRcIlxyXG4gICAgICAgICAgIChkYXRlQ2hhbmdlKT1cIm91dHB1dFZhbHVlKCRldmVudCk7IG9uRmluYWxpemUoKTtcIlxyXG4gICAgICAgICAgIChrZXl1cCk9XCIoJGV2ZW50LmtleUNvZGUgPT0gMTMgfHwgJGV2ZW50LmtleUNvZGUgPT0gMjcpICYmIG9uRmluYWxpemUoKTtcIlxyXG4gICAgICAgICAgIChibHVyKT1cImNsb3NlVG9vbHRpcCgpO1wiXHJcbiAgICAgICAgICAgLz5cclxuICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZGF0ZXBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgPG1hdC1kYXRlcGlja2VyICNkYXRlcGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG48bmctdGVtcGxhdGUgI3RvbFRlbXBsYXRlPlxyXG4gICAgPGRpdiAoY2xpY2spPVwiY2xvc2VUb29sdGlwKClcIj5cclxuICAgICAgICA8c3Bhbj57e3ZhbGlkYXRpb25GYWlsZWRCaW5kfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { NG_ASYNC_VALIDATORS, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl } from "@angular/forms";
|
|
3
|
+
import { ChangeDetectionStrategy, Component, forwardRef, Inject, Input, Optional, ViewEncapsulation } from "@angular/core";
|
|
4
|
+
// Configurazioni
|
|
5
|
+
import { LocalizationService } from "@esfaenza/localizations";
|
|
6
|
+
// Direttive, Componenti, Librerie
|
|
7
|
+
import { BaseValidation } from "../base-validation";
|
|
8
|
+
import { BaseValidationLoc } from "../base-validation.loc";
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@esfaenza/localizations";
|
|
11
|
+
import * as i2 from "@esfaenza/extensions";
|
|
12
|
+
import * as i3 from "@angular/common";
|
|
13
|
+
import * as i4 from "@angular/forms";
|
|
14
|
+
import * as i5 from "@angular/material/legacy-form-field";
|
|
15
|
+
import * as i6 from "@angular/material/legacy-input";
|
|
16
|
+
import * as i7 from "@angular/material/datepicker";
|
|
17
|
+
import * as i8 from "ngx-bootstrap/tooltip";
|
|
18
|
+
import * as i9 from "@angular-material-components/datetime-picker";
|
|
19
|
+
/**
|
|
20
|
+
* Componente di validaizone per gli input di tipo data-ora
|
|
21
|
+
*/
|
|
22
|
+
export class ValidationDateTimeComponent extends BaseValidation {
|
|
23
|
+
/**
|
|
24
|
+
* @ignore
|
|
25
|
+
*/
|
|
26
|
+
constructor(cdr, _validators, _asyncValidators, injector, lc, dateExts) {
|
|
27
|
+
super(cdr);
|
|
28
|
+
this._validators = _validators;
|
|
29
|
+
this._asyncValidators = _asyncValidators;
|
|
30
|
+
this.injector = injector;
|
|
31
|
+
this.lc = lc;
|
|
32
|
+
this.dateExts = dateExts;
|
|
33
|
+
/**
|
|
34
|
+
* Proprietà dell'elemento di selezione dell'orario. Mostra o nasconde gli spinner
|
|
35
|
+
*
|
|
36
|
+
* Attualemnte non bindata ed utilizzata solo a livello di default ma non si sa mai
|
|
37
|
+
*/
|
|
38
|
+
this.showSpinners = true;
|
|
39
|
+
/**
|
|
40
|
+
* Proprietà dell'elemento di selezione dell'orario. Mostra o nasconde i secondi
|
|
41
|
+
*
|
|
42
|
+
* Attualemnte non bindata ed utilizzata solo a livello di default ma non si sa mai
|
|
43
|
+
*/
|
|
44
|
+
this.showSeconds = true;
|
|
45
|
+
/**
|
|
46
|
+
* Proprietà dell'elemento di selezione dell'orario. Imposta l'incremento/decremento minimo per le ore
|
|
47
|
+
*
|
|
48
|
+
* Attualemnte non bindata ed utilizzata solo a livello di default ma non si sa mai
|
|
49
|
+
*/
|
|
50
|
+
this.stepHour = 1;
|
|
51
|
+
/**
|
|
52
|
+
* Proprietà dell'elemento di selezione dell'orario. Imposta l'incremento/decremento minimo per i minuti
|
|
53
|
+
*
|
|
54
|
+
* Attualemnte non bindata ed utilizzata solo a livello di default ma non si sa mai
|
|
55
|
+
*/
|
|
56
|
+
this.stepMinute = 1;
|
|
57
|
+
/**
|
|
58
|
+
* Proprietà dell'elemento di selezione dell'orario. Imposta l'incremento/decremento minimo per i secondi
|
|
59
|
+
*
|
|
60
|
+
* Attualemnte non bindata ed utilizzata solo a livello di default ma non si sa mai
|
|
61
|
+
*/
|
|
62
|
+
this.stepSecond = 1;
|
|
63
|
+
/**
|
|
64
|
+
* Utilizza il Date di Javascript come modello in uscita. Il modello in entrata verrà comunque ricondotto a un DayJs
|
|
65
|
+
*/
|
|
66
|
+
this.useJsDates = false;
|
|
67
|
+
/**
|
|
68
|
+
* @ignore
|
|
69
|
+
*/
|
|
70
|
+
this.onTouched = () => { };
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* @ignore
|
|
74
|
+
*/
|
|
75
|
+
ngOnInit() {
|
|
76
|
+
super.ngOnInit();
|
|
77
|
+
this.registerFocusRequest();
|
|
78
|
+
this.checkRequiredness(this._validators);
|
|
79
|
+
this._format = this.lc.token("getSmallDateDisplayFormat");
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* @ignore
|
|
83
|
+
*/
|
|
84
|
+
ngOnDestroy() {
|
|
85
|
+
super.ngOnDestroy();
|
|
86
|
+
this.deregisterFocusRequest();
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* @ignore
|
|
90
|
+
*/
|
|
91
|
+
ngAfterViewInit() {
|
|
92
|
+
this.postBinding();
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Metodo che si occupa di collegare i validatori e la funzione di reset dal **ControlValueAccessor** rappresentato
|
|
96
|
+
* da questo componente al **ControlValueAccessor** rappresentato dall'effettivo elemento di Input presente lato HTML
|
|
97
|
+
*/
|
|
98
|
+
postBinding() {
|
|
99
|
+
this.CheckValidity();
|
|
100
|
+
const ngControl = this.injector.get(NgControl, null);
|
|
101
|
+
if (ngControl) {
|
|
102
|
+
this.parentControl = ngControl.control;
|
|
103
|
+
// Se la variabile novalidate è true, elimino tutti i validatori eventualmente inseriti
|
|
104
|
+
if (this.noValidate) {
|
|
105
|
+
this.parentControl.clearValidators();
|
|
106
|
+
this.parentControl.clearAsyncValidators();
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
this.baseInput.control.setAsyncValidators(this._asyncValidators);
|
|
110
|
+
this.baseInput.control.setValidators(this._validators);
|
|
111
|
+
}
|
|
112
|
+
// Faccio in modo che se chiamo il reset del controllo (o della form) dall'esterno si resetti anche il controllo nativo
|
|
113
|
+
const origFunc = this.parentControl.reset;
|
|
114
|
+
this.parentControl.reset = () => {
|
|
115
|
+
origFunc.apply(this.parentControl);
|
|
116
|
+
this.baseInput.control.reset();
|
|
117
|
+
this.tooltip.hide();
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* @ignore
|
|
123
|
+
*/
|
|
124
|
+
writeValue(value) {
|
|
125
|
+
if (!value) {
|
|
126
|
+
this.value = null;
|
|
127
|
+
if (this.baseInput)
|
|
128
|
+
this.baseInput.reset();
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
var date = null;
|
|
132
|
+
if (this.useJsDates) {
|
|
133
|
+
date = this.dateExts.getDateConvertion(value);
|
|
134
|
+
this.propagateChange(date);
|
|
135
|
+
this.inputChange.emit(date);
|
|
136
|
+
}
|
|
137
|
+
else
|
|
138
|
+
date = dayjs(value, this.lc.token("getSmallDateFormat") + " HH:mm:ss");
|
|
139
|
+
this.value = date;
|
|
140
|
+
}
|
|
141
|
+
this.cdr.markForCheck();
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Metodo che si occupa di, eventualmente, aggiustare il valore da propagare ed emetterlo
|
|
145
|
+
*
|
|
146
|
+
* L'emit della modifica al valore viene gestito su un evento custom (**inputChange**) come workaround al malfunzionamento dell'**ngModelChange** nativo
|
|
147
|
+
*
|
|
148
|
+
* @param {any} toEmit valore da propagare all'esterno
|
|
149
|
+
*/
|
|
150
|
+
outputValue(toEmit) {
|
|
151
|
+
let value = toEmit.value;
|
|
152
|
+
let propagateValue;
|
|
153
|
+
if (!value)
|
|
154
|
+
propagateValue = null;
|
|
155
|
+
else if (!this.useJsDates)
|
|
156
|
+
propagateValue = value.format(this.lc.token("getSmallDateFormat") + " HH:mm:ss");
|
|
157
|
+
else {
|
|
158
|
+
if (value && value.isValid())
|
|
159
|
+
propagateValue = value.toDate();
|
|
160
|
+
else
|
|
161
|
+
propagateValue = null;
|
|
162
|
+
}
|
|
163
|
+
this.propagateChange(propagateValue);
|
|
164
|
+
this.inputChange.emit(propagateValue);
|
|
165
|
+
this.onTouched();
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* @ignore
|
|
169
|
+
*/
|
|
170
|
+
registerOnChange(fn) {
|
|
171
|
+
this.propagateChange = fn;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* @ignore
|
|
175
|
+
*/
|
|
176
|
+
registerOnTouched(fn) {
|
|
177
|
+
this.onTouched = fn;
|
|
178
|
+
}
|
|
179
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationDateTimeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: NG_VALIDATORS, optional: true }, { token: NG_ASYNC_VALIDATORS, optional: true }, { token: i0.Injector }, { token: i1.LocalizationService }, { token: i2.DateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
180
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ValidationDateTimeComponent, selector: "val-datetime", inputs: { useJsDates: "useJsDates" }, providers: [
|
|
181
|
+
{ provide: LocalizationService, useClass: BaseValidationLoc },
|
|
182
|
+
{
|
|
183
|
+
provide: NG_VALUE_ACCESSOR,
|
|
184
|
+
useExisting: forwardRef(() => ValidationDateTimeComponent),
|
|
185
|
+
multi: true
|
|
186
|
+
}
|
|
187
|
+
], usesInheritance: true, ngImport: i0, template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n\r\n <input matInput \r\n [ngxMatDatetimePicker]=\"datepicker\" \r\n #baseInput=\"ngModel\"\r\n #htmlInput\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n name=\"val-date\"\r\n id=\"{{id}}\"\r\n (click)=\"onFocus($event)\"\r\n class=\"form-control {{class}}\"\r\n autocomplete=\"{{autocomplete}}\"\r\n [placeholder]=\"FloatingLabel ? undefined : placeholder\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate\"\r\n [tooltip]=\"tolTemplate\"\r\n [placeholder]=\"placeholder ? '' : _format\"\r\n [disabled]=\"Readonly || disabled\"\r\n [isDisabled]=\"Readonly || disabled\"\r\n (dateChange)=\"outputValue($event); onFinalize();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip();\"\r\n />\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n\r\n <ngx-mat-datetime-picker #datepicker \r\n [showSpinners]=\"showSpinners\" \r\n [showSeconds]=\"showSeconds\" \r\n [stepHour]=\"stepHour\" \r\n [stepMinute]=\"stepMinute\" \r\n [stepSecond]=\"stepSecond\" \r\n [touchUi]=\"false\" \r\n [color]=\"'primary'\">\r\n </ngx-mat-datetime-picker>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailedBind}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatLegacySuffix, selector: "[matSuffix]" }, { kind: "directive", type: i6.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "component", type: i7.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i8.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: i9.NgxMatDatetimePicker, selector: "ngx-mat-datetime-picker", inputs: ["calendarHeaderComponent", "startAt", "startView", "defaultColor", "color", "touchUi", "hideTime", "disabled", "panelClass", "dateClass", "opened", "showSpinners", "showSeconds", "stepHour", "stepMinute", "stepSecond", "enableMeridian", "disableMinute", "defaultTime"], outputs: ["yearSelected", "monthSelected", "opened", "closed"], exportAs: ["ngxMatDatetimePicker"] }, { kind: "directive", type: i9.NgxMatDatetimeInput, selector: "input[ngxMatDatetimePicker]", inputs: ["ngxMatDatetimePicker", "ngxMatDatetimePickerFilter", "value", "min", "max", "disabled"], outputs: ["dateChange", "dateInput"], exportAs: ["ngxMatDatetimePickerInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
188
|
+
}
|
|
189
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationDateTimeComponent, decorators: [{
|
|
190
|
+
type: Component,
|
|
191
|
+
args: [{ selector: "val-datetime", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
192
|
+
{ provide: LocalizationService, useClass: BaseValidationLoc },
|
|
193
|
+
{
|
|
194
|
+
provide: NG_VALUE_ACCESSOR,
|
|
195
|
+
useExisting: forwardRef(() => ValidationDateTimeComponent),
|
|
196
|
+
multi: true
|
|
197
|
+
}
|
|
198
|
+
], template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n\r\n <input matInput \r\n [ngxMatDatetimePicker]=\"datepicker\" \r\n #baseInput=\"ngModel\"\r\n #htmlInput\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n name=\"val-date\"\r\n id=\"{{id}}\"\r\n (click)=\"onFocus($event)\"\r\n class=\"form-control {{class}}\"\r\n autocomplete=\"{{autocomplete}}\"\r\n [placeholder]=\"FloatingLabel ? undefined : placeholder\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate\"\r\n [tooltip]=\"tolTemplate\"\r\n [placeholder]=\"placeholder ? '' : _format\"\r\n [disabled]=\"Readonly || disabled\"\r\n [isDisabled]=\"Readonly || disabled\"\r\n (dateChange)=\"outputValue($event); onFinalize();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip();\"\r\n />\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n\r\n <ngx-mat-datetime-picker #datepicker \r\n [showSpinners]=\"showSpinners\" \r\n [showSeconds]=\"showSeconds\" \r\n [stepHour]=\"stepHour\" \r\n [stepMinute]=\"stepMinute\" \r\n [stepSecond]=\"stepSecond\" \r\n [touchUi]=\"false\" \r\n [color]=\"'primary'\">\r\n </ngx-mat-datetime-picker>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailedBind}}</span>\r\n </div>\r\n</ng-template>", styles: [".tooltip-inner{background-color:#842a30;color:#fff;font-size:12px;width:max-content}.tooltip{margin:auto auto auto 20%!important}.tooltip-inner{background-color:#842a30!important;color:#fff}.tooltip.top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#842a30}.close-button{position:absolute;right:0;top:-.2em;float:right;font-size:16px;font-weight:700;color:inherit;text-shadow:0 1px 0 #fff;opacity:.5}.close-button:hover,.close-button:focus{text-decoration:none;cursor:pointer;opacity:.75}\n"] }]
|
|
199
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: Array, decorators: [{
|
|
200
|
+
type: Optional
|
|
201
|
+
}, {
|
|
202
|
+
type: Inject,
|
|
203
|
+
args: [NG_VALIDATORS]
|
|
204
|
+
}] }, { type: Array, decorators: [{
|
|
205
|
+
type: Optional
|
|
206
|
+
}, {
|
|
207
|
+
type: Inject,
|
|
208
|
+
args: [NG_ASYNC_VALIDATORS]
|
|
209
|
+
}] }, { type: i0.Injector }, { type: i1.LocalizationService }, { type: i2.DateService }]; }, propDecorators: { useJsDates: [{
|
|
210
|
+
type: Input
|
|
211
|
+
}] } });
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1kYXRldGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi92YWxpZGF0aW9ucy92YWxpZGF0aW9uLWRhdGV0aW1lL3ZhbGlkYXRpb24tZGF0ZXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1kYXRldGltZS92YWxpZGF0aW9uLWRhdGV0aW1lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQTRDLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQXFCLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0osT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBWSxLQUFLLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhKLGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxrQ0FBa0M7QUFDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFBOzs7Ozs7Ozs7OztBQVMxRDs7R0FFRztBQWdCSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsY0FBYztJQXlEM0Q7O09BRUc7SUFDSCxZQUFZLEdBQXNCLEVBQTZDLFdBQXVCLEVBQW1ELGdCQUE0QixFQUFVLFFBQWtCLEVBQVksRUFBdUIsRUFBVSxRQUFxQjtRQUMvUSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFEZ0UsZ0JBQVcsR0FBWCxX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LGdCQUFnQixDQUFDLEVBQU87UUFDcEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsRUFBTztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQTNMUSwyQkFBMkIsbURBNERvQixhQUFhLDZCQUF1RCxtQkFBbUI7bUdBNUR0SSwyQkFBMkIsNkVBVHpCO1lBQ1AsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQzdEO2dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQUM7Z0JBQzFELEtBQUssRUFBRSxJQUFJO2FBQ2Q7U0FDSixpRENsQ0wsODBEQTRDYzs7NEZEUkQsMkJBQTJCO2tCQWZ2QyxTQUFTOytCQUNJLGNBQWMsaUJBRVQsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUVwQzt3QkFDUCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUU7d0JBQzdEOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDOzRCQUMxRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjs7MEJBOERvQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUFvQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG1CQUFtQjsrSEFML0gsVUFBVTtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFVudHlwZWRGb3JtQ29udHJvbCwgTkdfQVNZTkNfVkFMSURBVE9SUywgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbCwgUmVxdWlyZWRWYWxpZGF0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGZvcndhcmRSZWYsIEluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPcHRpb25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5cclxuLy8gRGlyZXR0aXZlLCBDb21wb25lbnRpLCBMaWJyZXJpZVxyXG5pbXBvcnQgeyBCYXNlVmFsaWRhdGlvbiB9IGZyb20gXCIuLi9iYXNlLXZhbGlkYXRpb25cIjtcclxuaW1wb3J0IHsgQmFzZVZhbGlkYXRpb25Mb2MgfSBmcm9tIFwiLi4vYmFzZS12YWxpZGF0aW9uLmxvY1wiXHJcbmltcG9ydCB7IERhdGVTZXJ2aWNlIH0gZnJvbSAnQGVzZmFlbnphL2V4dGVuc2lvbnMnO1xyXG5cclxuLyoqXHJcbiAqIERpY2hpYXJhemlvbmUgZGVsbGEgdmFyaWFiaWxlIGdsb2JhbGUgZGF5anMuIEwnb25lcmUgZGkgXCJjcmVhcmxhXCIgw6ggYWZmaWRhdG8gYWxsJ2FwcGxpY2F6aW9uZSBjaGUgdXRpbGl6emEgcXVlc3RhIGxpYnJlcmlhLCBcclxuICogY2hlIGRvdnLDoCBpbXBvcnRhcmUgbG8gc2NyaXB0IGdsb2JhbGUgZGkgZGF5anMgbmVsbGEgQ0xJXHJcbiAqL1xyXG5kZWNsYXJlIHZhciBkYXlqczogYW55O1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgZGkgdmFsaWRhaXpvbmUgcGVyIGdsaSBpbnB1dCBkaSB0aXBvIGRhdGEtb3JhXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcInZhbC1kYXRldGltZVwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwidmFsaWRhdGlvbi1kYXRldGltZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuLi92YWxpZGF0aW9uLXN0eWxlLnNjc3NcIl0sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IExvY2FsaXphdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBCYXNlVmFsaWRhdGlvbkxvYyB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFZhbGlkYXRpb25EYXRlVGltZUNvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkRhdGVUaW1lQ29tcG9uZW50IGV4dGVuZHMgQmFzZVZhbGlkYXRpb24gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVc2F0byBzb2xvIHBlciBzdGFtcGFyZSBpbCBwbGFjZWhvbGRlciBxdWFsb3JhIGwnSW5wdXQgKipwbGFjZWhvbGRlcioqIG5vbiBmb3NzZSB2YWxvcml6emF0b1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgX2Zvcm1hdDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9kZWxsbyBjb2xsZWdhdG8gYWxsJ2lucHV0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB2YWx1ZTogRGF0ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnRyb2xsbyBlc3Bvc3RvIG90dGVudXRvIHRyYW1pdGUgaW5qZWN0b3JcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwYXJlbnRDb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9wcmlldMOgIGRlbGwnZWxlbWVudG8gZGkgc2VsZXppb25lIGRlbGwnb3JhcmlvLiBNb3N0cmEgbyBuYXNjb25kZSBnbGkgc3Bpbm5lclxyXG4gICAgICogXHJcbiAgICAgKiBBdHR1YWxlbW50ZSBub24gYmluZGF0YSBlZCB1dGlsaXp6YXRhIHNvbG8gYSBsaXZlbGxvIGRpIGRlZmF1bHQgbWEgbm9uIHNpIHNhIG1haVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2hvd1NwaW5uZXJzID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3ByaWV0w6AgZGVsbCdlbGVtZW50byBkaSBzZWxlemlvbmUgZGVsbCdvcmFyaW8uIE1vc3RyYSBvIG5hc2NvbmRlIGkgc2Vjb25kaVxyXG4gICAgICogXHJcbiAgICAgKiBBdHR1YWxlbW50ZSBub24gYmluZGF0YSBlZCB1dGlsaXp6YXRhIHNvbG8gYSBsaXZlbGxvIGRpIGRlZmF1bHQgbWEgbm9uIHNpIHNhIG1haVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2hvd1NlY29uZHMgPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvcHJpZXTDoCBkZWxsJ2VsZW1lbnRvIGRpIHNlbGV6aW9uZSBkZWxsJ29yYXJpby4gSW1wb3N0YSBsJ2luY3JlbWVudG8vZGVjcmVtZW50byBtaW5pbW8gcGVyIGxlIG9yZVxyXG4gICAgICogXHJcbiAgICAgKiBBdHR1YWxlbW50ZSBub24gYmluZGF0YSBlZCB1dGlsaXp6YXRhIHNvbG8gYSBsaXZlbGxvIGRpIGRlZmF1bHQgbWEgbm9uIHNpIHNhIG1haVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RlcEhvdXIgPSAxO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvcHJpZXTDoCBkZWxsJ2VsZW1lbnRvIGRpIHNlbGV6aW9uZSBkZWxsJ29yYXJpby4gSW1wb3N0YSBsJ2luY3JlbWVudG8vZGVjcmVtZW50byBtaW5pbW8gcGVyIGkgbWludXRpXHJcbiAgICAgKiBcclxuICAgICAqIEF0dHVhbGVtbnRlIG5vbiBiaW5kYXRhIGVkIHV0aWxpenphdGEgc29sbyBhIGxpdmVsbG8gZGkgZGVmYXVsdCBtYSBub24gc2kgc2EgbWFpXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGVwTWludXRlID0gMTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFByb3ByaWV0w6AgZGVsbCdlbGVtZW50byBkaSBzZWxlemlvbmUgZGVsbCdvcmFyaW8uIEltcG9zdGEgbCdpbmNyZW1lbnRvL2RlY3JlbWVudG8gbWluaW1vIHBlciBpIHNlY29uZGlcclxuICAgICAqIFxyXG4gICAgICogQXR0dWFsZW1udGUgbm9uIGJpbmRhdGEgZWQgdXRpbGl6emF0YSBzb2xvIGEgbGl2ZWxsbyBkaSBkZWZhdWx0IG1hIG5vbiBzaSBzYSBtYWlcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0ZXBTZWNvbmQgPSAxO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXRpbGl6emEgaWwgRGF0ZSBkaSBKYXZhc2NyaXB0IGNvbWUgbW9kZWxsbyBpbiB1c2NpdGEuIElsIG1vZGVsbG8gaW4gZW50cmF0YSB2ZXJyw6AgY29tdW5xdWUgcmljb25kb3R0byBhIHVuIERheUpzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyB1c2VKc0RhdGVzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIEBPcHRpb25hbCgpIEBJbmplY3QoTkdfVkFMSURBVE9SUykgcHJpdmF0ZSBfdmFsaWRhdG9yczogQXJyYXk8YW55PiwgQE9wdGlvbmFsKCkgQEluamVjdChOR19BU1lOQ19WQUxJREFUT1JTKSBwcml2YXRlIF9hc3luY1ZhbGlkYXRvcnM6IEFycmF5PGFueT4sIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBwcm90ZWN0ZWQgbGM6IExvY2FsaXphdGlvblNlcnZpY2UsIHByaXZhdGUgZGF0ZUV4dHM6IERhdGVTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoY2RyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLnJlZ2lzdGVyRm9jdXNSZXF1ZXN0KCk7XHJcblxyXG4gICAgICAgIHRoaXMuY2hlY2tSZXF1aXJlZG5lc3ModGhpcy5fdmFsaWRhdG9ycyk7XHJcblxyXG4gICAgICAgIHRoaXMuX2Zvcm1hdCA9IHRoaXMubGMudG9rZW4oXCJnZXRTbWFsbERhdGVEaXNwbGF5Rm9ybWF0XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBuZ09uRGVzdHJveSgpe1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5kZXJlZ2lzdGVyRm9jdXNSZXF1ZXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLnBvc3RCaW5kaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gY2hlIHNpIG9jY3VwYSBkaSBjb2xsZWdhcmUgaSB2YWxpZGF0b3JpIGUgbGEgZnVuemlvbmUgZGkgcmVzZXQgZGFsICoqQ29udHJvbFZhbHVlQWNjZXNzb3IqKiByYXBwcmVzZW50YXRvIFxyXG4gICAgICogZGEgcXVlc3RvIGNvbXBvbmVudGUgYWwgKipDb250cm9sVmFsdWVBY2Nlc3NvcioqIHJhcHByZXNlbnRhdG8gZGFsbCdlZmZldHRpdm8gZWxlbWVudG8gZGkgSW5wdXQgcHJlc2VudGUgbGF0byBIVE1MXHJcbiAgICAgKi9cclxuICAgIHBvc3RCaW5kaW5nKCkge1xyXG4gICAgICAgIHRoaXMuQ2hlY2tWYWxpZGl0eSgpO1xyXG4gICAgICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcclxuICAgICAgICBpZiAobmdDb250cm9sKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50Q29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuXHJcbiAgICAgICAgICAgIC8vIFNlIGxhIHZhcmlhYmlsZSBub3ZhbGlkYXRlIMOoIHRydWUsIGVsaW1pbm8gdHV0dGkgaSB2YWxpZGF0b3JpIGV2ZW50dWFsbWVudGUgaW5zZXJpdGlcclxuICAgICAgICAgICAgaWYgKHRoaXMubm9WYWxpZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sLmNsZWFyQXN5bmNWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2VJbnB1dC5jb250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLl9hc3luY1ZhbGlkYXRvcnMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlSW5wdXQuY29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuX3ZhbGlkYXRvcnMpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBGYWNjaW8gaW4gbW9kbyBjaGUgc2UgY2hpYW1vIGlsIHJlc2V0IGRlbCBjb250cm9sbG8gKG8gZGVsbGEgZm9ybSkgZGFsbCdlc3Rlcm5vIHNpIHJlc2V0dGkgYW5jaGUgaWwgY29udHJvbGxvIG5hdGl2b1xyXG4gICAgICAgICAgICBjb25zdCBvcmlnRnVuYyA9IHRoaXMucGFyZW50Q29udHJvbC5yZXNldDtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnRDb250cm9sLnJlc2V0ID0gKCkgPT4geyBcclxuICAgICAgICAgICAgICAgIG9yaWdGdW5jLmFwcGx5KHRoaXMucGFyZW50Q29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2VJbnB1dC5jb250cm9sLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAuaGlkZSgpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmUgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb25Ub3VjaGVkID0gKCkgPT4geyB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZSBcclxuICAgICAqL1xyXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYmFzZUlucHV0KVxyXG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlSW5wdXQucmVzZXQoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgZGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZUpzRGF0ZXMpIHtcclxuICAgICAgICAgICAgICAgIGRhdGUgPSB0aGlzLmRhdGVFeHRzLmdldERhdGVDb252ZXJ0aW9uKHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQoZGF0ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgZGF0ZSA9IGRheWpzKHZhbHVlLCB0aGlzLmxjLnRva2VuKFwiZ2V0U21hbGxEYXRlRm9ybWF0XCIpICsgXCIgSEg6bW06c3NcIik7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gZGF0ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gY2hlIHNpIG9jY3VwYSBkaSwgZXZlbnR1YWxtZW50ZSwgYWdnaXVzdGFyZSBpbCB2YWxvcmUgZGEgcHJvcGFnYXJlIGVkIGVtZXR0ZXJsb1xyXG4gICAgICogXHJcbiAgICAgKiBMJ2VtaXQgZGVsbGEgbW9kaWZpY2EgYWwgdmFsb3JlIHZpZW5lIGdlc3RpdG8gc3UgdW4gZXZlbnRvIGN1c3RvbSAoKippbnB1dENoYW5nZSoqKSBjb21lIHdvcmthcm91bmQgYWwgbWFsZnVuemlvbmFtZW50byBkZWxsJyoqbmdNb2RlbENoYW5nZSoqIG5hdGl2b1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gdG9FbWl0IHZhbG9yZSBkYSBwcm9wYWdhcmUgYWxsJ2VzdGVybm9cclxuICAgICAqL1xyXG4gICAgb3V0cHV0VmFsdWUodG9FbWl0OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBsZXQgdmFsdWUgPSB0b0VtaXQudmFsdWU7XHJcbiAgICAgICAgbGV0IHByb3BhZ2F0ZVZhbHVlOiBhbnk7XHJcblxyXG4gICAgICAgIGlmICghdmFsdWUpXHJcbiAgICAgICAgICAgIHByb3BhZ2F0ZVZhbHVlID0gbnVsbDtcclxuICAgICAgICBlbHNlIGlmICghdGhpcy51c2VKc0RhdGVzKVxyXG4gICAgICAgICAgICBwcm9wYWdhdGVWYWx1ZSA9IHZhbHVlLmZvcm1hdCh0aGlzLmxjLnRva2VuKFwiZ2V0U21hbGxEYXRlRm9ybWF0XCIpICsgXCIgSEg6bW06c3NcIik7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pc1ZhbGlkKCkpXHJcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVWYWx1ZSA9IHZhbHVlLnRvRGF0ZSgpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVWYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHByb3BhZ2F0ZVZhbHVlKTtcclxuICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQocHJvcGFnYXRlVmFsdWUpO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlIFxyXG4gICAgICovXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZSBcclxuICAgICAqL1xyXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgICB9XHJcbn0iLCI8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cInt7RmllbGRBcHBlYXJlbmNlfX1cIiBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoIG1hdC1uby1ib3JkZXItdG9wIG1hdC1oZWlnaHQtZml4ZWRcIiBbc3R5bGUud2lkdGgucHhdPVwid2lkdGhQeFwiPlxyXG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cInBsYWNlaG9sZGVyICYmIEZsb2F0aW5nTGFiZWxcIj57e3BsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cclxuXHJcbiAgICA8aW5wdXQgbWF0SW5wdXQgXHJcbiAgICAgICAgICAgW25neE1hdERhdGV0aW1lUGlja2VyXT1cImRhdGVwaWNrZXJcIiBcclxuICAgICAgICAgICAjYmFzZUlucHV0PVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgI2h0bWxJbnB1dFxyXG4gICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICB0cmlnZ2Vycz1cIlwiXHJcbiAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcclxuICAgICAgICAgICBuYW1lPVwidmFsLWRhdGVcIlxyXG4gICAgICAgICAgIGlkPVwie3tpZH19XCJcclxuICAgICAgICAgICAoY2xpY2spPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB7e2NsYXNzfX1cIlxyXG4gICAgICAgICAgIGF1dG9jb21wbGV0ZT1cInt7YXV0b2NvbXBsZXRlfX1cIlxyXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJGbG9hdGluZ0xhYmVsID8gdW5kZWZpbmVkIDogcGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgICAgICAgIFtjbGFzcy5jaGVja2luZy1maWVsZF09XCIhbm9WYWxpZGF0ZVwiXHJcbiAgICAgICAgICAgW3Rvb2x0aXBdPVwidG9sVGVtcGxhdGVcIlxyXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciA/ICcnIDogX2Zvcm1hdFwiXHJcbiAgICAgICAgICAgW2Rpc2FibGVkXT1cIlJlYWRvbmx5IHx8IGRpc2FibGVkXCJcclxuICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJSZWFkb25seSB8fCBkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwib3V0cHV0VmFsdWUoJGV2ZW50KTsgb25GaW5hbGl6ZSgpO1wiXHJcbiAgICAgICAgICAgKGtleXVwKT1cIigkZXZlbnQua2V5Q29kZSA9PSAxMyB8fCAkZXZlbnQua2V5Q29kZSA9PSAyNykgJiYgb25GaW5hbGl6ZSgpO1wiXHJcbiAgICAgICAgICAgKGJsdXIpPVwiY2xvc2VUb29sdGlwKCk7XCJcclxuICAgICAgICAgICAvPlxyXG5cclxuICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cImRhdGVwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuXHJcbiAgPG5neC1tYXQtZGF0ZXRpbWUtcGlja2VyICNkYXRlcGlja2VyIFxyXG4gICAgICAgICAgICBbc2hvd1NwaW5uZXJzXT1cInNob3dTcGlubmVyc1wiIFxyXG4gICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwic2hvd1NlY29uZHNcIiBcclxuICAgICAgICAgICAgW3N0ZXBIb3VyXT1cInN0ZXBIb3VyXCIgXHJcbiAgICAgICAgICAgIFtzdGVwTWludXRlXT1cInN0ZXBNaW51dGVcIiBcclxuICAgICAgICAgICAgW3N0ZXBTZWNvbmRdPVwic3RlcFNlY29uZFwiIFxyXG4gICAgICAgICAgICBbdG91Y2hVaV09XCJmYWxzZVwiIFxyXG4gICAgICAgICAgICBbY29sb3JdPVwiJ3ByaW1hcnknXCI+XHJcbiAgPC9uZ3gtbWF0LWRhdGV0aW1lLXBpY2tlcj5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdG9sVGVtcGxhdGU+XHJcbiAgICA8ZGl2IChjbGljayk9XCJjbG9zZVRvb2x0aXAoKVwiPlxyXG4gICAgICAgIDxzcGFuPnt7dmFsaWRhdGlvbkZhaWxlZEJpbmR9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|