@porscheinformatik/clr-addons 18.1.1 → 18.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/datagrid/date-filter/date-filter.component.mjs +9 -7
- package/esm2022/daterangepicker/directives/daterangepicker-container/daterangepicker-container.component.mjs +2 -2
- package/esm2022/history/history.mjs +3 -3
- package/fesm2022/clr-addons.mjs +12 -10
- package/fesm2022/clr-addons.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/clr-addons-phs.css +1 -1
- package/styles/clr-addons-phs.min.css +1 -1
- package/styles/clr-addons-phs.min.css.map +1 -1
|
@@ -47,12 +47,14 @@ export class ClrDateFilterComponent {
|
|
|
47
47
|
if (values && (values[0] !== this._from || values[1] !== this._to)) {
|
|
48
48
|
if (typeof values[0] === 'object') {
|
|
49
49
|
this._from = values[0];
|
|
50
|
+
this._fromTime = this._from?.toLocaleTimeString();
|
|
50
51
|
}
|
|
51
52
|
else {
|
|
52
53
|
this._from = null;
|
|
53
54
|
}
|
|
54
55
|
if (typeof values[1] === 'object') {
|
|
55
56
|
this._to = values[1];
|
|
57
|
+
this._toTime = this._to?.toLocaleTimeString();
|
|
56
58
|
}
|
|
57
59
|
else {
|
|
58
60
|
this._to = null;
|
|
@@ -77,7 +79,7 @@ export class ClrDateFilterComponent {
|
|
|
77
79
|
}
|
|
78
80
|
if (this.fromTime) {
|
|
79
81
|
const [hours, minutes, seconds] = this.fromTime.split(':').map(n => parseInt(n));
|
|
80
|
-
from.setHours(hours, minutes, seconds
|
|
82
|
+
from.setHours(hours, minutes, seconds || 0, 0);
|
|
81
83
|
}
|
|
82
84
|
this._from = from;
|
|
83
85
|
this._changes.next([this._from, this._to]);
|
|
@@ -88,7 +90,7 @@ export class ClrDateFilterComponent {
|
|
|
88
90
|
this._fromTime = fromtime;
|
|
89
91
|
if (this._fromTime && this._from) {
|
|
90
92
|
const [hours, minutes, seconds] = this._fromTime.split(':').map(n => parseInt(n));
|
|
91
|
-
this._from.setHours(hours, minutes, seconds
|
|
93
|
+
this._from.setHours(hours, minutes, seconds || 0, 0);
|
|
92
94
|
this._changes.next([this._from, this._to]);
|
|
93
95
|
this.filterValueChange.emit([this._from, this._to]);
|
|
94
96
|
}
|
|
@@ -103,7 +105,7 @@ export class ClrDateFilterComponent {
|
|
|
103
105
|
}
|
|
104
106
|
if (this.toTime) {
|
|
105
107
|
const [hours, minutes, seconds] = this.toTime.split(':').map(n => parseInt(n));
|
|
106
|
-
to.setHours(hours, minutes, seconds
|
|
108
|
+
to.setHours(hours, minutes, seconds || 0, 0);
|
|
107
109
|
}
|
|
108
110
|
this._to = to;
|
|
109
111
|
this._changes.next([this._from, this._to]);
|
|
@@ -114,7 +116,7 @@ export class ClrDateFilterComponent {
|
|
|
114
116
|
this._toTime = totime;
|
|
115
117
|
if (this._toTime && this._to) {
|
|
116
118
|
const [hours, minutes, seconds] = this._toTime.split(':').map(n => parseInt(n));
|
|
117
|
-
this._to.setHours(hours, minutes, seconds
|
|
119
|
+
this._to.setHours(hours, minutes, seconds || 0, 0);
|
|
118
120
|
this._changes.next([this._from, this._to]);
|
|
119
121
|
this.filterValueChange.emit([this._from, this._to]);
|
|
120
122
|
}
|
|
@@ -164,11 +166,11 @@ export class ClrDateFilterComponent {
|
|
|
164
166
|
return other === this;
|
|
165
167
|
}
|
|
166
168
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ClrDateFilterComponent, deps: [{ token: i1.ClrCommonStringsService }, { token: i1.ClrPopoverEventsService }, { token: i1.ClrDatagridFilter }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
167
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ClrDateFilterComponent, selector: "clr-date-filter", inputs: { timeActive: "timeActive", property: ["clrProperty", "property"], maxPlaceholder: ["clrFilterMaxPlaceholder", "maxPlaceholder"], minPlaceholder: ["clrFilterMinPlaceholder", "minPlaceholder"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, ngImport: i0, template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilter()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<ng-container *ngIf=\"!timeActive\">\n <clr-date-container>\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <clr-date-container>\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n</ng-container>\n<ng-container *ngIf=\"timeActive\">\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" [(ngModel)]=\"fromTime\" />\n </clr-date-time-container>\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" [(ngModel)]=\"toTime\" />\n </clr-date-time-container>\n</ng-container>\n", styles: [".btn-trash{position:absolute;top:15px;right:40px;padding:0}.time-filter-active{width:12rem}.time-filter-active-input{width:5rem!important}\n"], dependencies: [{ kind: "directive", type: i1.CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: i1.ClrDateContainer, selector: "clr-date-container", inputs: ["clrPosition"] }, { kind: "directive", type: i1.ClrDateInput, selector: "[clrDate]", inputs: ["placeholder", "clrDate", "min", "max", "disabled"], outputs: ["clrDateChange"] }, { kind: "directive", type: i1.ClrDateInputValidator, selector: "[clrDate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.ClrDateTimeContainer, selector: "clr-date-time-container" }, { kind: "directive", type: i5.ClrTimeInput, selector: "[clrTime]" }] }); }
|
|
169
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ClrDateFilterComponent, selector: "clr-date-filter", inputs: { timeActive: "timeActive", property: ["clrProperty", "property"], maxPlaceholder: ["clrFilterMaxPlaceholder", "maxPlaceholder"], minPlaceholder: ["clrFilterMinPlaceholder", "minPlaceholder"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, ngImport: i0, template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilter()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<ng-container *ngIf=\"!timeActive\">\n <clr-date-container>\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <clr-date-container>\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n</ng-container>\n<ng-container *ngIf=\"timeActive\">\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" [(ngModel)]=\"fromTime\" />\n </clr-date-time-container>\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" [(ngModel)]=\"toTime\" />\n </clr-date-time-container>\n</ng-container>\n", styles: [".btn-trash{position:absolute;top:15px;right:40px;padding:0}.time-filter-active{width:12rem}.time-filter-active-input{width:5rem!important}.time-filter-input{width:4rem!important}\n"], dependencies: [{ kind: "directive", type: i1.CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: i1.ClrDateContainer, selector: "clr-date-container", inputs: ["clrPosition"] }, { kind: "directive", type: i1.ClrDateInput, selector: "[clrDate]", inputs: ["placeholder", "clrDate", "min", "max", "disabled"], outputs: ["clrDateChange"] }, { kind: "directive", type: i1.ClrDateInputValidator, selector: "[clrDate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.ClrDateTimeContainer, selector: "clr-date-time-container" }, { kind: "directive", type: i5.ClrTimeInput, selector: "[clrTime]" }] }); }
|
|
168
170
|
}
|
|
169
171
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ClrDateFilterComponent, decorators: [{
|
|
170
172
|
type: Component,
|
|
171
|
-
args: [{ selector: 'clr-date-filter', template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilter()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<ng-container *ngIf=\"!timeActive\">\n <clr-date-container>\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <clr-date-container>\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n</ng-container>\n<ng-container *ngIf=\"timeActive\">\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" [(ngModel)]=\"fromTime\" />\n </clr-date-time-container>\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" [(ngModel)]=\"toTime\" />\n </clr-date-time-container>\n</ng-container>\n", styles: [".btn-trash{position:absolute;top:15px;right:40px;padding:0}.time-filter-active{width:12rem}.time-filter-active-input{width:5rem!important}\n"] }]
|
|
173
|
+
args: [{ selector: 'clr-date-filter', template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilter()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<ng-container *ngIf=\"!timeActive\">\n <clr-date-container>\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <clr-date-container>\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n</ng-container>\n<ng-container *ngIf=\"timeActive\">\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" [(ngModel)]=\"fromTime\" />\n </clr-date-time-container>\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" [(ngModel)]=\"toTime\" />\n </clr-date-time-container>\n</ng-container>\n", styles: [".btn-trash{position:absolute;top:15px;right:40px;padding:0}.time-filter-active{width:12rem}.time-filter-active-input{width:5rem!important}.time-filter-input{width:4rem!important}\n"] }]
|
|
172
174
|
}], ctorParameters: () => [{ type: i1.ClrCommonStringsService }, { type: i1.ClrPopoverEventsService }, { type: i1.ClrDatagridFilter }], propDecorators: { timeActive: [{
|
|
173
175
|
type: Input
|
|
174
176
|
}], property: [{
|
|
@@ -187,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
187
189
|
type: Output,
|
|
188
190
|
args: ['clrFilterValueChange']
|
|
189
191
|
}] } });
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZGF0ZS1maWx0ZXIvZGF0ZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZGF0ZS1maWx0ZXIvZGF0ZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFFakIsdUJBQXVCLEdBQ3hCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFFekQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQU9qQyxNQUFNLE9BQU8sc0JBQXNCO0lBT2pDLElBQTBCLFFBQVEsQ0FBQyxLQUFhO1FBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQ1UsYUFBc0MsRUFDdEMsdUJBQWdELEVBQ3hELGVBQWtDO1FBRjFCLGtCQUFhLEdBQWIsYUFBYSxDQUF5QjtRQUN0Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBWjFELGVBQVUsR0FBRyxLQUFLLENBQUM7UUF3RGEsc0JB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LENBQUM7UUFDM0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUF5QztRQUNyRCxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUM7SUFDeEIsQ0FBQzs4R0E5TFUsc0JBQXNCO2tHQUF0QixzQkFBc0IsOFZDbEJuQyxndkRBdURBOzsyRkRyQ2Esc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLGlCQUFpQjtrS0FTM0IsVUFBVTtzQkFEVCxLQUFLO2dCQUdvQixRQUFRO3NCQUFqQyxLQUFLO3VCQUFDLGFBQWE7Z0JBdUJjLGNBQWM7c0JBQS9DLEtBQUs7dUJBQUMseUJBQXlCO2dCQU1FLGNBQWM7c0JBQS9DLEtBQUs7dUJBQUMseUJBQXlCO2dCQU9yQixLQUFLO3NCQURmLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQW1CUyxpQkFBaUI7c0JBQWhELE1BQU07dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENsckNvbW1vblN0cmluZ3NTZXJ2aWNlLFxuICBDbHJEYXRhZ3JpZEZpbHRlcixcbiAgQ2xyRGF0YWdyaWRGaWx0ZXJJbnRlcmZhY2UsXG4gIENsclBvcG92ZXJFdmVudHNTZXJ2aWNlLFxufSBmcm9tICdAY2xyL2FuZ3VsYXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTmVzdGVkUHJvcGVydHkgfSBmcm9tICcuL25lc3RlZC1wcm9wZXJ0eSc7XG5pbXBvcnQgeyBDbGFyaXR5SWNvbnMsIHRyYXNoSWNvbiB9IGZyb20gJ0BjZHMvY29yZS9pY29uJztcblxuQ2xhcml0eUljb25zLmFkZEljb25zKHRyYXNoSWNvbik7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci1kYXRlLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENsckRhdGVGaWx0ZXJDb21wb25lbnQ8VCBleHRlbmRzIHsgW2tleTogc3RyaW5nXTogYW55IH0+XG4gIGltcGxlbWVudHMgQ2xyRGF0YWdyaWRGaWx0ZXJJbnRlcmZhY2U8VD4sIEFmdGVyVmlld0luaXRcbntcbiAgcHJpdmF0ZSBuZXN0ZWRQcm9wOiBOZXN0ZWRQcm9wZXJ0eTxhbnk+O1xuICBASW5wdXQoKVxuICB0aW1lQWN0aXZlID0gZmFsc2U7XG5cbiAgQElucHV0KCdjbHJQcm9wZXJ0eScpIHNldCBwcm9wZXJ0eSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5uZXN0ZWRQcm9wID0gbmV3IE5lc3RlZFByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBwcm9wZXJ0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5uZXN0ZWRQcm9wLnByb3A7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbW1vblN0cmluZ3M6IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2xyUG9wb3ZlckV2ZW50c1NlcnZpY2U6IENsclBvcG92ZXJFdmVudHNTZXJ2aWNlLFxuICAgIGZpbHRlckNvbnRhaW5lcjogQ2xyRGF0YWdyaWRGaWx0ZXJcbiAgKSB7XG4gICAgZmlsdGVyQ29udGFpbmVyLnNldEZpbHRlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jbHJQb3BvdmVyRXZlbnRzU2VydmljZS5vdXRzaWRlQ2xpY2tDbG9zZSA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYSB3YXkgdG8gcGFzcyBleHRlcm5hbCBwbGFjZWhvbGRlciBhbmQgYXJpYS1sYWJlbCB0byB0aGUgZmlsdGVyIGlucHV0XG4gICAqL1xuICBASW5wdXQoJ2NsckZpbHRlck1heFBsYWNlaG9sZGVyJykgbWF4UGxhY2Vob2xkZXI6IHN0cmluZztcblxuICBnZXQgbWF4UGxhY2Vob2xkZXJWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXhQbGFjZWhvbGRlciB8fCB0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5tYXhWYWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgnY2xyRmlsdGVyTWluUGxhY2Vob2xkZXInKSBtaW5QbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIGdldCBtaW5QbGFjZWhvbGRlclZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLm1pblBsYWNlaG9sZGVyIHx8IHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLm1pblZhbHVlO1xuICB9XG5cbiAgQElucHV0KCdjbHJGaWx0ZXJWYWx1ZScpXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWVzOiBbRGF0ZSwgRGF0ZV0pIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICBpZiAodmFsdWVzICYmICh2YWx1ZXNbMF0gIT09IHRoaXMuX2Zyb20gfHwgdmFsdWVzWzFdICE9PSB0aGlzLl90bykpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgdGhpcy5fZnJvbSA9IHZhbHVlc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9mcm9tID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlc1sxXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICB0aGlzLl90byA9IHZhbHVlc1sxXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl90byA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlcy5uZXh0KHZhbHVlcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgnY2xyRmlsdGVyVmFsdWVDaGFuZ2UnKSBmaWx0ZXJWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogSW50ZXJuYWwgdmFsdWVzIGFuZCBhY2Nlc3NvclxuICAgKi9cbiAgcHJpdmF0ZSBfZnJvbTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF90bzogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF90b1RpbWU6IHN0cmluZyB8IG51bGw7XG4gIHByaXZhdGUgX2Zyb21UaW1lOiBzdHJpbmcgfCBudWxsO1xuXG4gIHB1YmxpYyBnZXQgZnJvbSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZnJvbTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZnJvbVRpbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zyb21UaW1lO1xuICB9XG5cbiAgcHVibGljIGdldCB0b1RpbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RvVGltZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZnJvbShmcm9tOiBEYXRlKSB7XG4gICAgaWYgKHR5cGVvZiBmcm9tID09PSAnb2JqZWN0JyAmJiBmcm9tICE9PSB0aGlzLl9mcm9tKSB7XG4gICAgICBpZiAoZnJvbSAmJiB0eXBlb2YgZnJvbS5zZXRIb3VycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBmcm9tLnNldEhvdXJzKDAsIDAsIDAsIDApOyAvLyBzZXQgZnJvbS1kYXRlIHRvIHN0YXJ0IG9mIGRheVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZnJvbVRpbWUpIHtcbiAgICAgICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IHRoaXMuZnJvbVRpbWUuc3BsaXQoJzonKS5tYXAobiA9PiBwYXJzZUludChuKSk7XG4gICAgICAgIGZyb20uc2V0SG91cnMoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgPyBzZWNvbmRzIDogMCwgMCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9mcm9tID0gZnJvbTtcbiAgICAgIHRoaXMuX2NoYW5nZXMubmV4dChbdGhpcy5fZnJvbSwgdGhpcy5fdG9dKTtcbiAgICAgIHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChbdGhpcy5fZnJvbSwgdGhpcy5fdG9dKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0IGZyb21UaW1lKGZyb210aW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9mcm9tVGltZSA9IGZyb210aW1lO1xuICAgIGlmICh0aGlzLl9mcm9tVGltZSAmJiB0aGlzLl9mcm9tKSB7XG4gICAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdID0gdGhpcy5fZnJvbVRpbWUuc3BsaXQoJzonKS5tYXAobiA9PiBwYXJzZUludChuKSk7XG4gICAgICB0aGlzLl9mcm9tLnNldEhvdXJzKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzID8gc2Vjb25kcyA6IDAsIDApO1xuICAgICAgdGhpcy5fY2hhbmdlcy5uZXh0KFt0aGlzLl9mcm9tLCB0aGlzLl90b10pO1xuICAgICAgdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KFt0aGlzLl9mcm9tLCB0aGlzLl90b10pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG8oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RvO1xuICB9XG5cbiAgcHVibGljIHNldCB0byh0bzogRGF0ZSkge1xuICAgIGlmICh0eXBlb2YgdG8gPT09ICdvYmplY3QnICYmIHRvICE9PSB0aGlzLl90bykge1xuICAgICAgaWYgKHRvICYmIHR5cGVvZiB0by5zZXRIb3VycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0by5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpOyAvLyBzZXQgdG8tZGF0ZSB0byBlbmQgb2YgZGF5XG4gICAgICB9XG4gICAgICBpZiAodGhpcy50b1RpbWUpIHtcbiAgICAgICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IHRoaXMudG9UaW1lLnNwbGl0KCc6JykubWFwKG4gPT4gcGFyc2VJbnQobikpO1xuICAgICAgICB0by5zZXRIb3Vycyhob3VycywgbWludXRlcywgc2Vjb25kcyA/IHNlY29uZHMgOiAwLCAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3RvID0gdG87XG4gICAgICB0aGlzLl9jaGFuZ2VzLm5leHQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gICAgICB0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCB0b1RpbWUodG90aW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90b1RpbWUgPSB0b3RpbWU7XG4gICAgaWYgKHRoaXMuX3RvVGltZSAmJiB0aGlzLl90bykge1xuICAgICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IHRoaXMuX3RvVGltZS5zcGxpdCgnOicpLm1hcChuID0+IHBhcnNlSW50KG4pKTtcbiAgICAgIHRoaXMuX3RvLnNldEhvdXJzKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzID8gc2Vjb25kcyA6IDAsIDApO1xuICAgICAgdGhpcy5fY2hhbmdlcy5uZXh0KFt0aGlzLl9mcm9tLCB0aGlzLl90b10pO1xuICAgICAgdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KFt0aGlzLl9mcm9tLCB0aGlzLl90b10pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGZpbHRlciBpcyBjdXJyZW50bHkgYWN0aXZlLCAoYXQgbGVhc3Qgb25lIGlucHV0IGlzIHNldClcbiAgICovXG4gIHB1YmxpYyBpc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZnJvbSAhPT0gbnVsbCB8fCB0aGlzLl90byAhPT0gbnVsbDtcbiAgfVxuXG4gIGFjY2VwdHMoaXRlbTogVCk6IGJvb2xlYW4ge1xuICAgIGxldCBwcm9wVmFsdWUgPSB0aGlzLm5lc3RlZFByb3AgPyB0aGlzLm5lc3RlZFByb3AuZ2V0UHJvcFZhbHVlKGl0ZW0pIDogaXRlbTtcbiAgICBpZiAocHJvcFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBwcm9wVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBwcm9wVmFsdWUgPSBuZXcgRGF0ZShwcm9wVmFsdWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZnJvbSAhPT0gbnVsbCAmJiAoIShwcm9wVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB8fCBwcm9wVmFsdWUuZ2V0VGltZSgpIDwgdGhpcy5fZnJvbS5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLl90byAhPT0gbnVsbCAmJiAoIShwcm9wVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB8fCBwcm9wVmFsdWUuZ2V0VGltZSgpID4gdGhpcy5fdG8uZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgT2JzZXJ2YWJsZSByZXF1aXJlZCBhcyBwYXJ0IG9mIHRoZSBGaWx0ZXIgaW50ZXJmYWNlXG4gICAqL1xuICBwcml2YXRlIF9jaGFuZ2VzID0gbmV3IFN1YmplY3Q8W0RhdGUsIERhdGVdPigpO1xuXG4gIC8vIFdlIGRvIG5vdCB3YW50IHRvIGV4cG9zZSB0aGUgU3ViamVjdCBpdHNlbGYsIGJ1dCB0aGUgT2JzZXJ2YWJsZSB3aGljaCBpcyByZWFkLW9ubHlcbiAgcHVibGljIGdldCBjaGFuZ2VzKCk6IE9ic2VydmFibGU8W0RhdGUsIERhdGVdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5nZXMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3BlcnR5OiB0aGlzLm5lc3RlZFByb3AsXG4gICAgICBmcm9tOiB0aGlzLl9mcm9tLFxuICAgICAgdG86IHRoaXMuX3RvLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgY2xlYXJGaWx0ZXIoKSB7XG4gICAgdGhpcy5fZnJvbSA9IG51bGw7XG4gICAgdGhpcy5fdG8gPSBudWxsO1xuICAgIHRoaXMuZnJvbVRpbWUgPSBudWxsO1xuICAgIHRoaXMudG9UaW1lID0gbnVsbDtcbiAgICB0aGlzLl9jaGFuZ2VzLm5leHQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gICAgdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KFt0aGlzLl9mcm9tLCB0aGlzLl90b10pO1xuICB9XG5cbiAgcHVibGljIGVxdWFscyhvdGhlcjogQ2xyRGF0YWdyaWRGaWx0ZXJJbnRlcmZhY2U8VCwgYW55Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvdGhlciA9PT0gdGhpcztcbiAgfVxufVxuIiwiPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpbmsgYnRuLXRyYXNoXCIgKGNsaWNrKT1cImNsZWFyRmlsdGVyKClcIj5cbiAgPGNkcy1pY29uIHNoYXBlPVwidHJhc2hcIj48L2Nkcy1pY29uPlxuPC9idXR0b24+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIXRpbWVBY3RpdmVcIj5cbiAgPGNsci1kYXRlLWNvbnRhaW5lcj5cbiAgICA8aW5wdXRcbiAgICAgICNpbnB1dF9mcm9tXG4gICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICBuYW1lPVwiZnJvbVwiXG4gICAgICBjbGFzcz1cImRhdGFncmlkLWRhdGUtZmlsdGVyLWlucHV0XCJcbiAgICAgIFsoY2xyRGF0ZSldPVwiZnJvbVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwibWluUGxhY2Vob2xkZXJWYWx1ZVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1pblBsYWNlaG9sZGVyVmFsdWVcIlxuICAgIC8+XG4gIDwvY2xyLWRhdGUtY29udGFpbmVyPlxuICA8Y2xyLWRhdGUtY29udGFpbmVyPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgbmFtZT1cInRvXCJcbiAgICAgIGNsYXNzPVwiZGF0YWdyaWQtZGF0ZS1maWx0ZXItaW5wdXRcIlxuICAgICAgWyhjbHJEYXRlKV09XCJ0b1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwibWF4UGxhY2Vob2xkZXJWYWx1ZVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1heFBsYWNlaG9sZGVyVmFsdWVcIlxuICAgIC8+XG4gIDwvY2xyLWRhdGUtY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwidGltZUFjdGl2ZVwiPlxuICA8Y2xyLWRhdGUtdGltZS1jb250YWluZXI+XG4gICAgPGNsci1kYXRlLWNvbnRhaW5lciBjbGFzcz1cInRpbWUtZmlsdGVyLWFjdGl2ZVwiPlxuICAgICAgPGlucHV0XG4gICAgICAgICNpbnB1dF9mcm9tXG4gICAgICAgIHR5cGU9XCJkYXRlXCJcbiAgICAgICAgbmFtZT1cImZyb21cIlxuICAgICAgICBjbGFzcz1cImRhdGFncmlkLWRhdGUtZmlsdGVyLWlucHV0IHRpbWUtZmlsdGVyLWFjdGl2ZS1pbnB1dFwiXG4gICAgICAgIFsoY2xyRGF0ZSldPVwiZnJvbVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJtaW5QbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtaW5QbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9jbHItZGF0ZS1jb250YWluZXI+XG4gICAgPGlucHV0IGNsclRpbWUgdHlwZT1cInRpbWVcIiBbKG5nTW9kZWwpXT1cImZyb21UaW1lXCIgLz5cbiAgPC9jbHItZGF0ZS10aW1lLWNvbnRhaW5lcj5cbiAgPGNsci1kYXRlLXRpbWUtY29udGFpbmVyPlxuICAgIDxjbHItZGF0ZS1jb250YWluZXIgY2xhc3M9XCJ0aW1lLWZpbHRlci1hY3RpdmVcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICAgIG5hbWU9XCJ0b1wiXG4gICAgICAgIGNsYXNzPVwiZGF0YWdyaWQtZGF0ZS1maWx0ZXItaW5wdXQgdGltZS1maWx0ZXItYWN0aXZlLWlucHV0XCJcbiAgICAgICAgWyhjbHJEYXRlKV09XCJ0b1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJtYXhQbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtYXhQbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9jbHItZGF0ZS1jb250YWluZXI+XG4gICAgPGlucHV0IGNsclRpbWUgdHlwZT1cInRpbWVcIiBbKG5nTW9kZWwpXT1cInRvVGltZVwiIC8+XG4gIDwvY2xyLWRhdGUtdGltZS1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZGF0ZS1maWx0ZXIvZGF0ZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0YWdyaWQvZGF0ZS1maWx0ZXIvZGF0ZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFFakIsdUJBQXVCLEdBQ3hCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFFekQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQU9qQyxNQUFNLE9BQU8sc0JBQXNCO0lBT2pDLElBQTBCLFFBQVEsQ0FBQyxLQUFhO1FBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQ1UsYUFBc0MsRUFDdEMsdUJBQWdELEVBQ3hELGVBQWtDO1FBRjFCLGtCQUFhLEdBQWIsYUFBYSxDQUF5QjtRQUN0Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBWjFELGVBQVUsR0FBRyxLQUFLLENBQUM7UUEwRGEsc0JB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QUFDLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQXlDO1FBQ3JELE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQztJQUN4QixDQUFDOzhHQWhNVSxzQkFBc0I7a0dBQXRCLHNCQUFzQiw4VkNsQm5DLHd5REF1REE7OzJGRHJDYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsaUJBQWlCO2tLQVMzQixVQUFVO3NCQURULEtBQUs7Z0JBR29CLFFBQVE7c0JBQWpDLEtBQUs7dUJBQUMsYUFBYTtnQkF1QmMsY0FBYztzQkFBL0MsS0FBSzt1QkFBQyx5QkFBeUI7Z0JBTUUsY0FBYztzQkFBL0MsS0FBSzt1QkFBQyx5QkFBeUI7Z0JBT3JCLEtBQUs7c0JBRGYsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBcUJTLGlCQUFpQjtzQkFBaEQsTUFBTTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UsXG4gIENsckRhdGFncmlkRmlsdGVyLFxuICBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZSxcbiAgQ2xyUG9wb3ZlckV2ZW50c1NlcnZpY2UsXG59IGZyb20gJ0BjbHIvYW5ndWxhcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZXN0ZWRQcm9wZXJ0eSB9IGZyb20gJy4vbmVzdGVkLXByb3BlcnR5JztcbmltcG9ydCB7IENsYXJpdHlJY29ucywgdHJhc2hJY29uIH0gZnJvbSAnQGNkcy9jb3JlL2ljb24nO1xuXG5DbGFyaXR5SWNvbnMuYWRkSWNvbnModHJhc2hJY29uKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWRhdGUtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyRGF0ZUZpbHRlckNvbXBvbmVudDxUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfT5cbiAgaW1wbGVtZW50cyBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZTxUPiwgQWZ0ZXJWaWV3SW5pdFxue1xuICBwcml2YXRlIG5lc3RlZFByb3A6IE5lc3RlZFByb3BlcnR5PGFueT47XG4gIEBJbnB1dCgpXG4gIHRpbWVBY3RpdmUgPSBmYWxzZTtcblxuICBASW5wdXQoJ2NsclByb3BlcnR5Jykgc2V0IHByb3BlcnR5KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5lc3RlZFByb3AgPSBuZXcgTmVzdGVkUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHByb3BlcnR5KCkge1xuICAgIHJldHVybiB0aGlzLm5lc3RlZFByb3AucHJvcDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29tbW9uU3RyaW5nczogQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjbHJQb3BvdmVyRXZlbnRzU2VydmljZTogQ2xyUG9wb3ZlckV2ZW50c1NlcnZpY2UsXG4gICAgZmlsdGVyQ29udGFpbmVyOiBDbHJEYXRhZ3JpZEZpbHRlclxuICApIHtcbiAgICBmaWx0ZXJDb250YWluZXIuc2V0RmlsdGVyKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsclBvcG92ZXJFdmVudHNTZXJ2aWNlLm91dHNpZGVDbGlja0Nsb3NlID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZSBhIHdheSB0byBwYXNzIGV4dGVybmFsIHBsYWNlaG9sZGVyIGFuZCBhcmlhLWxhYmVsIHRvIHRoZSBmaWx0ZXIgaW5wdXRcbiAgICovXG4gIEBJbnB1dCgnY2xyRmlsdGVyTWF4UGxhY2Vob2xkZXInKSBtYXhQbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIGdldCBtYXhQbGFjZWhvbGRlclZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLm1heFBsYWNlaG9sZGVyIHx8IHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLm1heFZhbHVlO1xuICB9XG5cbiAgQElucHV0KCdjbHJGaWx0ZXJNaW5QbGFjZWhvbGRlcicpIG1pblBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgZ2V0IG1pblBsYWNlaG9sZGVyVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWluUGxhY2Vob2xkZXIgfHwgdGhpcy5jb21tb25TdHJpbmdzLmtleXMubWluVmFsdWU7XG4gIH1cblxuICBASW5wdXQoJ2NsckZpbHRlclZhbHVlJylcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZXM6IFtEYXRlLCBEYXRlXSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAgIGlmICh2YWx1ZXMgJiYgKHZhbHVlc1swXSAhPT0gdGhpcy5fZnJvbSB8fCB2YWx1ZXNbMV0gIT09IHRoaXMuX3RvKSkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICB0aGlzLl9mcm9tID0gdmFsdWVzWzBdO1xuICAgICAgICAgIHRoaXMuX2Zyb21UaW1lID0gdGhpcy5fZnJvbT8udG9Mb2NhbGVUaW1lU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fZnJvbSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZXNbMV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgdGhpcy5fdG8gPSB2YWx1ZXNbMV07XG4gICAgICAgICAgdGhpcy5fdG9UaW1lID0gdGhpcy5fdG8/LnRvTG9jYWxlVGltZVN0cmluZygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3RvID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jaGFuZ2VzLm5leHQodmFsdWVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KCdjbHJGaWx0ZXJWYWx1ZUNoYW5nZScpIGZpbHRlclZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCB2YWx1ZXMgYW5kIGFjY2Vzc29yXG4gICAqL1xuICBwcml2YXRlIF9mcm9tOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3RvOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3RvVGltZTogc3RyaW5nIHwgbnVsbDtcbiAgcHJpdmF0ZSBfZnJvbVRpbWU6IHN0cmluZyB8IG51bGw7XG5cbiAgcHVibGljIGdldCBmcm9tKCkge1xuICAgIHJldHVybiB0aGlzLl9mcm9tO1xuICB9XG5cbiAgcHVibGljIGdldCBmcm9tVGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZnJvbVRpbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvVGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdG9UaW1lO1xuICB9XG5cbiAgcHVibGljIHNldCBmcm9tKGZyb206IERhdGUpIHtcbiAgICBpZiAodHlwZW9mIGZyb20gPT09ICdvYmplY3QnICYmIGZyb20gIT09IHRoaXMuX2Zyb20pIHtcbiAgICAgIGlmIChmcm9tICYmIHR5cGVvZiBmcm9tLnNldEhvdXJzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGZyb20uc2V0SG91cnMoMCwgMCwgMCwgMCk7IC8vIHNldCBmcm9tLWRhdGUgdG8gc3RhcnQgb2YgZGF5XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5mcm9tVGltZSkge1xuICAgICAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdID0gdGhpcy5mcm9tVGltZS5zcGxpdCgnOicpLm1hcChuID0+IHBhcnNlSW50KG4pKTtcbiAgICAgICAgZnJvbS5zZXRIb3Vycyhob3VycywgbWludXRlcywgc2Vjb25kcyB8fCAwLCAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2Zyb20gPSBmcm9tO1xuICAgICAgdGhpcy5fY2hhbmdlcy5uZXh0KFt0aGlzLl9mcm9tLCB0aGlzLl90b10pO1xuICAgICAgdGhpcy5maWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KFt0aGlzLl9mcm9tLCB0aGlzLl90b10pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXQgZnJvbVRpbWUoZnJvbXRpbWU6IHN0cmluZykge1xuICAgIHRoaXMuX2Zyb21UaW1lID0gZnJvbXRpbWU7XG4gICAgaWYgKHRoaXMuX2Zyb21UaW1lICYmIHRoaXMuX2Zyb20pIHtcbiAgICAgIGNvbnN0IFtob3VycywgbWludXRlcywgc2Vjb25kc10gPSB0aGlzLl9mcm9tVGltZS5zcGxpdCgnOicpLm1hcChuID0+IHBhcnNlSW50KG4pKTtcbiAgICAgIHRoaXMuX2Zyb20uc2V0SG91cnMoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgfHwgMCwgMCk7XG4gICAgICB0aGlzLl9jaGFuZ2VzLm5leHQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gICAgICB0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB0bygpIHtcbiAgICByZXR1cm4gdGhpcy5fdG87XG4gIH1cblxuICBwdWJsaWMgc2V0IHRvKHRvOiBEYXRlKSB7XG4gICAgaWYgKHR5cGVvZiB0byA9PT0gJ29iamVjdCcgJiYgdG8gIT09IHRoaXMuX3RvKSB7XG4gICAgICBpZiAodG8gJiYgdHlwZW9mIHRvLnNldEhvdXJzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRvLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7IC8vIHNldCB0by1kYXRlIHRvIGVuZCBvZiBkYXlcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnRvVGltZSkge1xuICAgICAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdID0gdGhpcy50b1RpbWUuc3BsaXQoJzonKS5tYXAobiA9PiBwYXJzZUludChuKSk7XG4gICAgICAgIHRvLnNldEhvdXJzKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzIHx8IDAsIDApO1xuICAgICAgfVxuICAgICAgdGhpcy5fdG8gPSB0bztcbiAgICAgIHRoaXMuX2NoYW5nZXMubmV4dChbdGhpcy5fZnJvbSwgdGhpcy5fdG9dKTtcbiAgICAgIHRoaXMuZmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChbdGhpcy5fZnJvbSwgdGhpcy5fdG9dKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0IHRvVGltZSh0b3RpbWU6IHN0cmluZykge1xuICAgIHRoaXMuX3RvVGltZSA9IHRvdGltZTtcbiAgICBpZiAodGhpcy5fdG9UaW1lICYmIHRoaXMuX3RvKSB7XG4gICAgICBjb25zdCBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHNdID0gdGhpcy5fdG9UaW1lLnNwbGl0KCc6JykubWFwKG4gPT4gcGFyc2VJbnQobikpO1xuICAgICAgdGhpcy5fdG8uc2V0SG91cnMoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgfHwgMCwgMCk7XG4gICAgICB0aGlzLl9jaGFuZ2VzLm5leHQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gICAgICB0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgZmlsdGVyIGlzIGN1cnJlbnRseSBhY3RpdmUsIChhdCBsZWFzdCBvbmUgaW5wdXQgaXMgc2V0KVxuICAgKi9cbiAgcHVibGljIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mcm9tICE9PSBudWxsIHx8IHRoaXMuX3RvICE9PSBudWxsO1xuICB9XG5cbiAgYWNjZXB0cyhpdGVtOiBUKTogYm9vbGVhbiB7XG4gICAgbGV0IHByb3BWYWx1ZSA9IHRoaXMubmVzdGVkUHJvcCA/IHRoaXMubmVzdGVkUHJvcC5nZXRQcm9wVmFsdWUoaXRlbSkgOiBpdGVtO1xuICAgIGlmIChwcm9wVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHByb3BWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHByb3BWYWx1ZSA9IG5ldyBEYXRlKHByb3BWYWx1ZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9mcm9tICE9PSBudWxsICYmICghKHByb3BWYWx1ZSBpbnN0YW5jZW9mIERhdGUpIHx8IHByb3BWYWx1ZS5nZXRUaW1lKCkgPCB0aGlzLl9mcm9tLmdldFRpbWUoKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3RvICE9PSBudWxsICYmICghKHByb3BWYWx1ZSBpbnN0YW5jZW9mIERhdGUpIHx8IHByb3BWYWx1ZS5nZXRUaW1lKCkgPiB0aGlzLl90by5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBPYnNlcnZhYmxlIHJlcXVpcmVkIGFzIHBhcnQgb2YgdGhlIEZpbHRlciBpbnRlcmZhY2VcbiAgICovXG4gIHByaXZhdGUgX2NoYW5nZXMgPSBuZXcgU3ViamVjdDxbRGF0ZSwgRGF0ZV0+KCk7XG5cbiAgLy8gV2UgZG8gbm90IHdhbnQgdG8gZXhwb3NlIHRoZSBTdWJqZWN0IGl0c2VsZiwgYnV0IHRoZSBPYnNlcnZhYmxlIHdoaWNoIGlzIHJlYWQtb25seVxuICBwdWJsaWMgZ2V0IGNoYW5nZXMoKTogT2JzZXJ2YWJsZTxbRGF0ZSwgRGF0ZV0+IHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGUoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvcGVydHk6IHRoaXMubmVzdGVkUHJvcCxcbiAgICAgIGZyb206IHRoaXMuX2Zyb20sXG4gICAgICB0bzogdGhpcy5fdG8sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckZpbHRlcigpIHtcbiAgICB0aGlzLl9mcm9tID0gbnVsbDtcbiAgICB0aGlzLl90byA9IG51bGw7XG4gICAgdGhpcy5mcm9tVGltZSA9IG51bGw7XG4gICAgdGhpcy50b1RpbWUgPSBudWxsO1xuICAgIHRoaXMuX2NoYW5nZXMubmV4dChbdGhpcy5fZnJvbSwgdGhpcy5fdG9dKTtcbiAgICB0aGlzLmZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoW3RoaXMuX2Zyb20sIHRoaXMuX3RvXSk7XG4gIH1cblxuICBwdWJsaWMgZXF1YWxzKG90aGVyOiBDbHJEYXRhZ3JpZEZpbHRlckludGVyZmFjZTxULCBhbnk+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG90aGVyID09PSB0aGlzO1xuICB9XG59XG4iLCI8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGluayBidG4tdHJhc2hcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoKVwiPlxuICA8Y2RzLWljb24gc2hhcGU9XCJ0cmFzaFwiPjwvY2RzLWljb24+XG48L2J1dHRvbj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhdGltZUFjdGl2ZVwiPlxuICA8Y2xyLWRhdGUtY29udGFpbmVyPlxuICAgIDxpbnB1dFxuICAgICAgI2lucHV0X2Zyb21cbiAgICAgIHR5cGU9XCJkYXRlXCJcbiAgICAgIG5hbWU9XCJmcm9tXCJcbiAgICAgIGNsYXNzPVwiZGF0YWdyaWQtZGF0ZS1maWx0ZXItaW5wdXRcIlxuICAgICAgWyhjbHJEYXRlKV09XCJmcm9tXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJtaW5QbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibWluUGxhY2Vob2xkZXJWYWx1ZVwiXG4gICAgLz5cbiAgPC9jbHItZGF0ZS1jb250YWluZXI+XG4gIDxjbHItZGF0ZS1jb250YWluZXI+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICBuYW1lPVwidG9cIlxuICAgICAgY2xhc3M9XCJkYXRhZ3JpZC1kYXRlLWZpbHRlci1pbnB1dFwiXG4gICAgICBbKGNsckRhdGUpXT1cInRvXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJtYXhQbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibWF4UGxhY2Vob2xkZXJWYWx1ZVwiXG4gICAgLz5cbiAgPC9jbHItZGF0ZS1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ0aW1lQWN0aXZlXCI+XG4gIDxjbHItZGF0ZS10aW1lLWNvbnRhaW5lcj5cbiAgICA8Y2xyLWRhdGUtY29udGFpbmVyIGNsYXNzPVwidGltZS1maWx0ZXItYWN0aXZlXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgI2lucHV0X2Zyb21cbiAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICBuYW1lPVwiZnJvbVwiXG4gICAgICAgIGNsYXNzPVwiZGF0YWdyaWQtZGF0ZS1maWx0ZXItaW5wdXQgdGltZS1maWx0ZXItYWN0aXZlLWlucHV0XCJcbiAgICAgICAgWyhjbHJEYXRlKV09XCJmcm9tXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIm1pblBsYWNlaG9sZGVyVmFsdWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1pblBsYWNlaG9sZGVyVmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2Nsci1kYXRlLWNvbnRhaW5lcj5cbiAgICA8aW5wdXQgY2xyVGltZSB0eXBlPVwidGltZVwiIGNsYXNzPVwidGltZS1maWx0ZXItaW5wdXRcIiBbKG5nTW9kZWwpXT1cImZyb21UaW1lXCIgLz5cbiAgPC9jbHItZGF0ZS10aW1lLWNvbnRhaW5lcj5cbiAgPGNsci1kYXRlLXRpbWUtY29udGFpbmVyPlxuICAgIDxjbHItZGF0ZS1jb250YWluZXIgY2xhc3M9XCJ0aW1lLWZpbHRlci1hY3RpdmVcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICAgIG5hbWU9XCJ0b1wiXG4gICAgICAgIGNsYXNzPVwiZGF0YWdyaWQtZGF0ZS1maWx0ZXItaW5wdXQgdGltZS1maWx0ZXItYWN0aXZlLWlucHV0XCJcbiAgICAgICAgWyhjbHJEYXRlKV09XCJ0b1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJtYXhQbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtYXhQbGFjZWhvbGRlclZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9jbHItZGF0ZS1jb250YWluZXI+XG4gICAgPGlucHV0IGNsclRpbWUgdHlwZT1cInRpbWVcIiBjbGFzcz1cInRpbWUtZmlsdGVyLWlucHV0XCIgWyhuZ01vZGVsKV09XCJ0b1RpbWVcIiAvPlxuICA8L2Nsci1kYXRlLXRpbWUtY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -279,7 +279,7 @@ export class ClrDaterangepickerContainerComponent extends ClrAbstractContainer {
|
|
|
279
279
|
DaterangeService,
|
|
280
280
|
OpenedDatepickersTrackerService,
|
|
281
281
|
ControlIdService,
|
|
282
|
-
], queries: [{ propertyName: "daterangepickerDirective", first: true, predicate: ClrDaterangepickerDirective, descendants: true }], viewQueries: [{ propertyName: "datepickerComponents", predicate: ClrDatepickerComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"label\"></ng-content>\n<label *ngIf=\"!this.labelComponent && this.addLayoutGrid\"></label>\n<div\n [class.clr-col-12]=\"this.addLayoutGrid\"\n [class.clr-col-md-10]=\"this.addLayoutGrid\"\n [class.clr-error]=\"this.isInvalid\"\n class=\"clr-control-container\"\n>\n <div class=\"clr-input-wrapper\" clrPopoverAnchor>\n <div [class.clr-focus]=\"this.focus\" class=\"clr-input-group\">\n <ng-content select=\"[clrDaterangepicker]\"></ng-content>\n <button\n [attr.aria-label]=\"this.friendlyDaterange\"\n [disabled]=\"this.disabled\"\n [title]=\"this.friendlyDaterange\"\n class=\"clr-input-group-icon-action\"\n clrPopoverOpenCloseButton\n type=\"button\"\n >\n <cds-icon shape=\"calendar\" status=\"info\"></cds-icon>\n </button>\n </div>\n <cds-icon\n *ngIf=\"this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"!this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n ></cds-icon>\n </div>\n <ng-content *ngIf=\"this.showHelper\" select=\"clr-control-helper\"></ng-content>\n <ng-content *ngIf=\"this.showInvalid\" select=\"clr-control-error\"></ng-content>\n <ng-content *ngIf=\"this.showValid\" select=\"clr-control-success\"></ng-content>\n\n <div\n *clrPopoverContent=\"this.open; at: this.popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n class=\"clr-daterangepicker-container-popup datepicker\"\n >\n <button\n class=\"btn btn-sm btn-link close clr-smart-close-button btn-trash\"\n type=\"button\"\n (click)=\"daterangeService.updateSelectedDaterange(null)\"\n >\n <cds-icon shape=\"trash\"></cds-icon>\n </button>\n <button\n [attr.aria-label]=\"this.commonStrings.close\"\n class=\"btn btn-sm btn-link close\"\n clrPopoverCloseButton\n type=\"button\"\n >\n <cds-icon [attr.title]=\"this.commonStrings.close\" aria-hidden=\"true\" shape=\"window-close\"></cds-icon>\n <span class=\"clr-sr-only\">{{ this.commonStrings.close }}</span>\n </button>\n <div class=\"clr-daterangepicker-container-popup-content\">\n <form [clrLayout]=\"'vertical'\" clrForm>\n <div class=\"datetime-container\">\n <clr-datepicker\n (valueChange)=\"this.onDateFromChange($event)\"\n [label]=\"this.labelFrom\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateFrom\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeFromChange($event)\"\n [value]=\"this.timeFrom\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n <div class=\"datetime-container datetime-container-to\">\n <clr-datepicker\n (valueChange)=\"this.onDateToChange($event)\"\n [label]=\"this.labelTo\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateTo\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeToChange($event)\"\n [value]=\"this.timeTo\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n </form>\n <div *ngIf=\"this.presets?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presets\">\n <button (click)=\"this.applyPreset(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n <div *ngIf=\"this.presetsDateTime?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presetsDateTime\">\n <button (click)=\"this.applyPresetTime(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".clr-input-wrapper>.clr-input-group{max-width:fit-content;padding-right:1.5rem}.clr-input-wrapper>.clr-input-group ::ng-deep>.clr-input{width:100%;padding:0 .3rem}.clr-daterangepicker-container-popup.datepicker{padding:0;width:auto;height:auto;display:block}.clr-daterangepicker-container-popup.datepicker .clr-smart-close-button{min-width:1.2rem;padding:0;position:absolute;right:0;margin:5px}.clr-daterangepicker-container-popup.datepicker .btn-trash{padding-right:25px;margin:5px}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content{padding
|
|
282
|
+
], queries: [{ propertyName: "daterangepickerDirective", first: true, predicate: ClrDaterangepickerDirective, descendants: true }], viewQueries: [{ propertyName: "datepickerComponents", predicate: ClrDatepickerComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"label\"></ng-content>\n<label *ngIf=\"!this.labelComponent && this.addLayoutGrid\"></label>\n<div\n [class.clr-col-12]=\"this.addLayoutGrid\"\n [class.clr-col-md-10]=\"this.addLayoutGrid\"\n [class.clr-error]=\"this.isInvalid\"\n class=\"clr-control-container\"\n>\n <div class=\"clr-input-wrapper\" clrPopoverAnchor>\n <div [class.clr-focus]=\"this.focus\" class=\"clr-input-group\">\n <ng-content select=\"[clrDaterangepicker]\"></ng-content>\n <button\n [attr.aria-label]=\"this.friendlyDaterange\"\n [disabled]=\"this.disabled\"\n [title]=\"this.friendlyDaterange\"\n class=\"clr-input-group-icon-action\"\n clrPopoverOpenCloseButton\n type=\"button\"\n >\n <cds-icon shape=\"calendar\" status=\"info\"></cds-icon>\n </button>\n </div>\n <cds-icon\n *ngIf=\"this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"!this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n ></cds-icon>\n </div>\n <ng-content *ngIf=\"this.showHelper\" select=\"clr-control-helper\"></ng-content>\n <ng-content *ngIf=\"this.showInvalid\" select=\"clr-control-error\"></ng-content>\n <ng-content *ngIf=\"this.showValid\" select=\"clr-control-success\"></ng-content>\n\n <div\n *clrPopoverContent=\"this.open; at: this.popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n class=\"clr-daterangepicker-container-popup datepicker\"\n >\n <button\n class=\"btn btn-sm btn-link close clr-smart-close-button btn-trash\"\n type=\"button\"\n (click)=\"daterangeService.updateSelectedDaterange(null)\"\n >\n <cds-icon shape=\"trash\"></cds-icon>\n </button>\n <button\n [attr.aria-label]=\"this.commonStrings.close\"\n class=\"btn btn-sm btn-link close\"\n clrPopoverCloseButton\n type=\"button\"\n >\n <cds-icon [attr.title]=\"this.commonStrings.close\" aria-hidden=\"true\" shape=\"window-close\"></cds-icon>\n <span class=\"clr-sr-only\">{{ this.commonStrings.close }}</span>\n </button>\n <div class=\"clr-daterangepicker-container-popup-content\">\n <form [clrLayout]=\"'vertical'\" clrForm>\n <div class=\"datetime-container\">\n <clr-datepicker\n (valueChange)=\"this.onDateFromChange($event)\"\n [label]=\"this.labelFrom\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateFrom\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeFromChange($event)\"\n [value]=\"this.timeFrom\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n <div class=\"datetime-container datetime-container-to\">\n <clr-datepicker\n (valueChange)=\"this.onDateToChange($event)\"\n [label]=\"this.labelTo\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateTo\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeToChange($event)\"\n [value]=\"this.timeTo\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n </form>\n <div *ngIf=\"this.presets?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presets\">\n <button (click)=\"this.applyPreset(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n <div *ngIf=\"this.presetsDateTime?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presetsDateTime\">\n <button (click)=\"this.applyPresetTime(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".clr-input-wrapper>.clr-input-group{max-width:fit-content;padding-right:1.5rem}.clr-input-wrapper>.clr-input-group ::ng-deep>.clr-input{width:100%;padding:0 .3rem}.clr-daterangepicker-container-popup.datepicker{padding:0;width:auto;height:auto;display:block}.clr-daterangepicker-container-popup.datepicker .clr-smart-close-button{min-width:1.2rem;padding:0;position:absolute;right:0;margin:5px}.clr-daterangepicker-container-popup.datepicker .btn-trash{padding-right:25px;margin:5px}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content{padding:1rem;display:flex;flex-direction:row}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content .clr-form ::ng-deep clr-datepicker:first-of-type ::ng-deep clr-date-container{margin-top:0}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content .clr-daterangepicker-container-popup-content-presets{margin-left:.6rem;padding:.3rem}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content .clr-daterangepicker-container-popup-content-presets .btn{margin-right:0}.datetime-container{display:flex;flex-direction:row;align-items:flex-start}.datetime-container-to{padding-top:1rem}.timepicker{padding-left:1rem}.timepicker clr-input-container{margin-top:.8rem}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i1.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i1.ClrForm, selector: "[clrForm]", inputs: ["clrLabelSize"] }, { kind: "directive", type: i1.ClrLayout, selector: "[clrForm][clrLayout]", inputs: ["clrLayout"] }, { kind: "directive", type: i1.ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: i1.ÇlrClrPopoverCloseButton, selector: "[clrPopoverCloseButton]", outputs: ["clrPopoverOnCloseChange"] }, { kind: "directive", type: i1.ÇlrClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i1.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "component", type: i8.ClrDatepickerComponent, selector: "clr-datepicker", inputs: ["value", "label", "minDate", "maxDate", "timeSelection"], outputs: ["valueChange"] }, { kind: "component", type: i9.ClrTimepickerComponent, selector: "clr-timepicker", inputs: ["value", "activateSeconds"], outputs: ["valueChange"] }] }); }
|
|
283
283
|
}
|
|
284
284
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ClrDaterangepickerContainerComponent, decorators: [{
|
|
285
285
|
type: Component,
|
|
@@ -291,7 +291,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
291
291
|
DaterangeService,
|
|
292
292
|
OpenedDatepickersTrackerService,
|
|
293
293
|
ControlIdService,
|
|
294
|
-
], template: "<ng-content select=\"label\"></ng-content>\n<label *ngIf=\"!this.labelComponent && this.addLayoutGrid\"></label>\n<div\n [class.clr-col-12]=\"this.addLayoutGrid\"\n [class.clr-col-md-10]=\"this.addLayoutGrid\"\n [class.clr-error]=\"this.isInvalid\"\n class=\"clr-control-container\"\n>\n <div class=\"clr-input-wrapper\" clrPopoverAnchor>\n <div [class.clr-focus]=\"this.focus\" class=\"clr-input-group\">\n <ng-content select=\"[clrDaterangepicker]\"></ng-content>\n <button\n [attr.aria-label]=\"this.friendlyDaterange\"\n [disabled]=\"this.disabled\"\n [title]=\"this.friendlyDaterange\"\n class=\"clr-input-group-icon-action\"\n clrPopoverOpenCloseButton\n type=\"button\"\n >\n <cds-icon shape=\"calendar\" status=\"info\"></cds-icon>\n </button>\n </div>\n <cds-icon\n *ngIf=\"this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"!this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n ></cds-icon>\n </div>\n <ng-content *ngIf=\"this.showHelper\" select=\"clr-control-helper\"></ng-content>\n <ng-content *ngIf=\"this.showInvalid\" select=\"clr-control-error\"></ng-content>\n <ng-content *ngIf=\"this.showValid\" select=\"clr-control-success\"></ng-content>\n\n <div\n *clrPopoverContent=\"this.open; at: this.popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n class=\"clr-daterangepicker-container-popup datepicker\"\n >\n <button\n class=\"btn btn-sm btn-link close clr-smart-close-button btn-trash\"\n type=\"button\"\n (click)=\"daterangeService.updateSelectedDaterange(null)\"\n >\n <cds-icon shape=\"trash\"></cds-icon>\n </button>\n <button\n [attr.aria-label]=\"this.commonStrings.close\"\n class=\"btn btn-sm btn-link close\"\n clrPopoverCloseButton\n type=\"button\"\n >\n <cds-icon [attr.title]=\"this.commonStrings.close\" aria-hidden=\"true\" shape=\"window-close\"></cds-icon>\n <span class=\"clr-sr-only\">{{ this.commonStrings.close }}</span>\n </button>\n <div class=\"clr-daterangepicker-container-popup-content\">\n <form [clrLayout]=\"'vertical'\" clrForm>\n <div class=\"datetime-container\">\n <clr-datepicker\n (valueChange)=\"this.onDateFromChange($event)\"\n [label]=\"this.labelFrom\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateFrom\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeFromChange($event)\"\n [value]=\"this.timeFrom\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n <div class=\"datetime-container datetime-container-to\">\n <clr-datepicker\n (valueChange)=\"this.onDateToChange($event)\"\n [label]=\"this.labelTo\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateTo\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeToChange($event)\"\n [value]=\"this.timeTo\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n </form>\n <div *ngIf=\"this.presets?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presets\">\n <button (click)=\"this.applyPreset(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n <div *ngIf=\"this.presetsDateTime?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presetsDateTime\">\n <button (click)=\"this.applyPresetTime(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".clr-input-wrapper>.clr-input-group{max-width:fit-content;padding-right:1.5rem}.clr-input-wrapper>.clr-input-group ::ng-deep>.clr-input{width:100%;padding:0 .3rem}.clr-daterangepicker-container-popup.datepicker{padding:0;width:auto;height:auto;display:block}.clr-daterangepicker-container-popup.datepicker .clr-smart-close-button{min-width:1.2rem;padding:0;position:absolute;right:0;margin:5px}.clr-daterangepicker-container-popup.datepicker .btn-trash{padding-right:25px;margin:5px}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content{padding
|
|
294
|
+
], template: "<ng-content select=\"label\"></ng-content>\n<label *ngIf=\"!this.labelComponent && this.addLayoutGrid\"></label>\n<div\n [class.clr-col-12]=\"this.addLayoutGrid\"\n [class.clr-col-md-10]=\"this.addLayoutGrid\"\n [class.clr-error]=\"this.isInvalid\"\n class=\"clr-control-container\"\n>\n <div class=\"clr-input-wrapper\" clrPopoverAnchor>\n <div [class.clr-focus]=\"this.focus\" class=\"clr-input-group\">\n <ng-content select=\"[clrDaterangepicker]\"></ng-content>\n <button\n [attr.aria-label]=\"this.friendlyDaterange\"\n [disabled]=\"this.disabled\"\n [title]=\"this.friendlyDaterange\"\n class=\"clr-input-group-icon-action\"\n clrPopoverOpenCloseButton\n type=\"button\"\n >\n <cds-icon shape=\"calendar\" status=\"info\"></cds-icon>\n </button>\n </div>\n <cds-icon\n *ngIf=\"this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"!this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n ></cds-icon>\n </div>\n <ng-content *ngIf=\"this.showHelper\" select=\"clr-control-helper\"></ng-content>\n <ng-content *ngIf=\"this.showInvalid\" select=\"clr-control-error\"></ng-content>\n <ng-content *ngIf=\"this.showValid\" select=\"clr-control-success\"></ng-content>\n\n <div\n *clrPopoverContent=\"this.open; at: this.popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n class=\"clr-daterangepicker-container-popup datepicker\"\n >\n <button\n class=\"btn btn-sm btn-link close clr-smart-close-button btn-trash\"\n type=\"button\"\n (click)=\"daterangeService.updateSelectedDaterange(null)\"\n >\n <cds-icon shape=\"trash\"></cds-icon>\n </button>\n <button\n [attr.aria-label]=\"this.commonStrings.close\"\n class=\"btn btn-sm btn-link close\"\n clrPopoverCloseButton\n type=\"button\"\n >\n <cds-icon [attr.title]=\"this.commonStrings.close\" aria-hidden=\"true\" shape=\"window-close\"></cds-icon>\n <span class=\"clr-sr-only\">{{ this.commonStrings.close }}</span>\n </button>\n <div class=\"clr-daterangepicker-container-popup-content\">\n <form [clrLayout]=\"'vertical'\" clrForm>\n <div class=\"datetime-container\">\n <clr-datepicker\n (valueChange)=\"this.onDateFromChange($event)\"\n [label]=\"this.labelFrom\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateFrom\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeFromChange($event)\"\n [value]=\"this.timeFrom\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n <div class=\"datetime-container datetime-container-to\">\n <clr-datepicker\n (valueChange)=\"this.onDateToChange($event)\"\n [label]=\"this.labelTo\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateTo\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeToChange($event)\"\n [value]=\"this.timeTo\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n </form>\n <div *ngIf=\"this.presets?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presets\">\n <button (click)=\"this.applyPreset(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n <div *ngIf=\"this.presetsDateTime?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presetsDateTime\">\n <button (click)=\"this.applyPresetTime(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".clr-input-wrapper>.clr-input-group{max-width:fit-content;padding-right:1.5rem}.clr-input-wrapper>.clr-input-group ::ng-deep>.clr-input{width:100%;padding:0 .3rem}.clr-daterangepicker-container-popup.datepicker{padding:0;width:auto;height:auto;display:block}.clr-daterangepicker-container-popup.datepicker .clr-smart-close-button{min-width:1.2rem;padding:0;position:absolute;right:0;margin:5px}.clr-daterangepicker-container-popup.datepicker .btn-trash{padding-right:25px;margin:5px}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content{padding:1rem;display:flex;flex-direction:row}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content .clr-form ::ng-deep clr-datepicker:first-of-type ::ng-deep clr-date-container{margin-top:0}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content .clr-daterangepicker-container-popup-content-presets{margin-left:.6rem;padding:.3rem}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content .clr-daterangepicker-container-popup-content-presets .btn{margin-right:0}.datetime-container{display:flex;flex-direction:row;align-items:flex-start}.datetime-container-to{padding-top:1rem}.timepicker{padding-left:1rem}.timepicker clr-input-container{margin-top:.8rem}\n"] }]
|
|
295
295
|
}], ctorParameters: () => [{ type: i1.ClrPopoverEventsService }, { type: i1.ClrPopoverToggleService }, { type: i1.ClrCommonStringsService }, { type: i1.ClrLayout, decorators: [{
|
|
296
296
|
type: Optional
|
|
297
297
|
}] }, { type: i2.DaterangeControlStateService }, { type: i3.OpenedDatepickersTrackerService }, { type: i4.DaterangeService }, { type: i5.DaterangeParsingService }], propDecorators: { presets: [{
|
|
@@ -53,11 +53,11 @@ export class ClrHistory {
|
|
|
53
53
|
this.historyService.setHistoryPinned(this.username, !this.pinActivated);
|
|
54
54
|
}
|
|
55
55
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ClrHistory, deps: [{ token: i1.ClrHistoryService }, { token: HISTORY_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
56
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ClrHistory, selector: "clr-history", inputs: { username: ["clrUsername", "username"], context: ["clrContext", "context"], pinActive: ["clrPinActive", "pinActive"], dropdownHeader: ["clrDropdownHeader", "dropdownHeader"], dropdownPin: ["clrDropdownPin", "dropdownPin"], dropdownUnpin: ["clrDropdownUnpin", "dropdownUnpin"], domain: ["clrDomain", "domain"], position: ["clrPosition", "position"] }, ngImport: i0, template: "<clr-dropdown>\n <button type=\"button\" class=\"btn btn-icon btn-outline-primary\" clrDropdownTrigger>\n <cds-icon shape=\"history\" size=\"
|
|
56
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ClrHistory, selector: "clr-history", inputs: { username: ["clrUsername", "username"], context: ["clrContext", "context"], pinActive: ["clrPinActive", "pinActive"], dropdownHeader: ["clrDropdownHeader", "dropdownHeader"], dropdownPin: ["clrDropdownPin", "dropdownPin"], dropdownUnpin: ["clrDropdownUnpin", "dropdownUnpin"], domain: ["clrDomain", "domain"], position: ["clrPosition", "position"] }, ngImport: i0, template: "<clr-dropdown>\n <button type=\"button\" class=\"btn btn-icon btn-outline-primary\" clrDropdownTrigger>\n <cds-icon shape=\"history\" size=\"16\"></cds-icon>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n <clr-dropdown-menu [clrPosition]=\"position\" *clrIfOpen>\n <label class=\"dropdown-header\" aria-hidden=\"true\">{{dropdownHeader}}</label>\n <button type=\"button\" clrDropdownItem *ngFor=\"let history of historyElements\" (click)=\"select(history)\">\n {{history.title}}\n </button>\n <div *ngIf=\"pinActive\" class=\"dropdown-divider\" role=\"separator\" aria-hidden=\"true\"></div>\n <button clrDropdownItem (click)=\"togglePinHistory()\">\n <span *ngIf=\"pinActive && !pinActivated\">{{dropdownPin}}</span>\n <span *ngIf=\"pinActive && pinActivated\">{{dropdownUnpin}}</span>\n </button>\n </clr-dropdown-menu>\n</clr-dropdown>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i3.ClrIfOpen, selector: "[clrIfOpen]", inputs: ["clrIfOpen"], outputs: ["clrIfOpenChange"] }, { kind: "directive", type: i3.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "component", type: i3.ClrDropdown, selector: "clr-dropdown", inputs: ["clrCloseMenuOnItemClick"] }, { kind: "component", type: i3.ClrDropdownMenu, selector: "clr-dropdown-menu", inputs: ["clrPosition"] }, { kind: "directive", type: i3.ClrDropdownTrigger, selector: "[clrDropdownTrigger],[clrDropdownToggle]" }, { kind: "directive", type: i3.ClrDropdownItem, selector: "[clrDropdownItem]", inputs: ["clrDisabled", "id"] }, { kind: "directive", type: i4.ClrDropdownOverflowDirective, selector: "clr-dropdown-menu", inputs: ["clrDropdownMenuMaxHeight", "clrDropdownMenuItemMinHeight", "clrMarginBottom"] }] }); }
|
|
57
57
|
}
|
|
58
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ClrHistory, decorators: [{
|
|
59
59
|
type: Component,
|
|
60
|
-
args: [{ selector: 'clr-history', template: "<clr-dropdown>\n <button type=\"button\" class=\"btn btn-icon btn-outline-primary\" clrDropdownTrigger>\n <cds-icon shape=\"history\" size=\"
|
|
60
|
+
args: [{ selector: 'clr-history', template: "<clr-dropdown>\n <button type=\"button\" class=\"btn btn-icon btn-outline-primary\" clrDropdownTrigger>\n <cds-icon shape=\"history\" size=\"16\"></cds-icon>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n <clr-dropdown-menu [clrPosition]=\"position\" *clrIfOpen>\n <label class=\"dropdown-header\" aria-hidden=\"true\">{{dropdownHeader}}</label>\n <button type=\"button\" clrDropdownItem *ngFor=\"let history of historyElements\" (click)=\"select(history)\">\n {{history.title}}\n </button>\n <div *ngIf=\"pinActive\" class=\"dropdown-divider\" role=\"separator\" aria-hidden=\"true\"></div>\n <button clrDropdownItem (click)=\"togglePinHistory()\">\n <span *ngIf=\"pinActive && !pinActivated\">{{dropdownPin}}</span>\n <span *ngIf=\"pinActive && pinActivated\">{{dropdownUnpin}}</span>\n </button>\n </clr-dropdown-menu>\n</clr-dropdown>\n" }]
|
|
61
61
|
}], ctorParameters: () => [{ type: i1.ClrHistoryService }, { type: i5.HistoryProvider, decorators: [{
|
|
62
62
|
type: Inject,
|
|
63
63
|
args: [HISTORY_PROVIDER]
|
|
@@ -88,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
88
88
|
type: Input,
|
|
89
89
|
args: ['clrPosition']
|
|
90
90
|
}] } });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2hpc3RvcnkvaGlzdG9yeS50cyIsIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2hpc3RvcnkvaGlzdG9yeS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFFdkUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFNOUMsTUFBTSxPQUFPLFVBQVU7SUFpQnJCLFlBQ1UsY0FBaUMsRUFDSyxlQUFnQztRQUR0RSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDSyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFoQnpELGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDWixtQkFBYyxHQUFHLFNBQVMsQ0FBQztRQUM5QixnQkFBVyxHQUFHLGFBQWEsQ0FBQztRQUMxQixrQkFBYSxHQUFHLGVBQWUsQ0FBQztRQUVyQyxhQUFRLEdBQUcsY0FBYyxDQUFDO1FBRWhEOztXQUVHO1FBQ0gsb0JBQWUsR0FBc0IsRUFBRSxDQUFDO1FBQ3hDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ2IsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFLdEMsQ0FBQztJQUVKLFFBQVE7UUFDTixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWU7WUFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxlQUFlLENBQUM7UUFFcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN4RixJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDakcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQXdCO1FBQzdCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDckMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxRSxDQUFDOzhHQTdDVSxVQUFVLG1EQW1CWCxnQkFBZ0I7a0dBbkJmLFVBQVUsMlpDcEJ2QiwyNUJBaUJBOzsyRkRHYSxVQUFVO2tCQUp0QixTQUFTOytCQUNFLGFBQWE7OzBCQXNCcEIsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUFHLFFBQVE7eUNBbEJmLFFBQVE7c0JBQTdCLEtBQUs7dUJBQUMsYUFBYTtnQkFDQyxPQUFPO3NCQUEzQixLQUFLO3VCQUFDLFlBQVk7Z0JBQ0ksU0FBUztzQkFBL0IsS0FBSzt1QkFBQyxjQUFjO2dCQUNPLGNBQWM7c0JBQXpDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNELFdBQVc7c0JBQW5DLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNJLGFBQWE7c0JBQXZDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUNMLE1BQU07c0JBQXpCLEtBQUs7dUJBQUMsV0FBVztnQkFDSSxRQUFRO3NCQUE3QixLQUFLO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgUG9yc2NoZSBJbmZvcm1hdGlrLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xySGlzdG9yeU1vZGVsIH0gZnJvbSAnLi9oaXN0b3J5LW1vZGVsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDbHJIaXN0b3J5U2VydmljZSB9IGZyb20gJy4vaGlzdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGFuZ2xlSWNvbiwgQ2xhcml0eUljb25zLCBoaXN0b3J5SWNvbiB9IGZyb20gJ0BjZHMvY29yZS9pY29uJztcbmltcG9ydCB7IEhJU1RPUllfUFJPVklERVIsIEhpc3RvcnlQcm92aWRlciB9IGZyb20gJy4vaGlzdG9yeS5wcm92aWRlcic7XG5cbkNsYXJpdHlJY29ucy5hZGRJY29ucyhoaXN0b3J5SWNvbiwgYW5nbGVJY29uKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWhpc3RvcnknLFxuICB0ZW1wbGF0ZVVybDogJy4vaGlzdG9yeS5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xySGlzdG9yeSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCdjbHJVc2VybmFtZScpIHVzZXJuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgnY2xyQ29udGV4dCcpIGNvbnRleHQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIEBJbnB1dCgnY2xyUGluQWN0aXZlJykgcGluQWN0aXZlID0gdHJ1ZTtcbiAgQElucHV0KCdjbHJEcm9wZG93bkhlYWRlcicpIGRyb3Bkb3duSGVhZGVyID0gJ0hpc3RvcnknO1xuICBASW5wdXQoJ2NsckRyb3Bkb3duUGluJykgZHJvcGRvd25QaW4gPSAnUGluIEhpc3RvcnknO1xuICBASW5wdXQoJ2NsckRyb3Bkb3duVW5waW4nKSBkcm9wZG93blVucGluID0gJ1VucGluIEhpc3RvcnknO1xuICBASW5wdXQoJ2NsckRvbWFpbicpIGRvbWFpbjogc3RyaW5nO1xuICBASW5wdXQoJ2NsclBvc2l0aW9uJykgcG9zaXRpb24gPSAnYm90dG9tLXJpZ2h0JztcblxuICAvKipcbiAgICogVGhlIGFycmF5IG9mIGhpc3RvcnkgZWxlbWVudHMgdG8gYmUgZGlzcGxheWVkLlxuICAgKi9cbiAgaGlzdG9yeUVsZW1lbnRzOiBDbHJIaXN0b3J5TW9kZWxbXSA9IFtdO1xuICBwaW5BY3RpdmF0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGhpc3RvcnlTZXJ2aWNlOiBDbHJIaXN0b3J5U2VydmljZSxcbiAgICBASW5qZWN0KEhJU1RPUllfUFJPVklERVIpIEBPcHRpb25hbCgpIHByaXZhdGUgaGlzdG9yeVByb3ZpZGVyOiBIaXN0b3J5UHJvdmlkZXJcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGhpc3RvcnlFbGVtZW50cyA9IHRoaXMuaGlzdG9yeVNlcnZpY2UuZ2V0SGlzdG9yeURpc3BsYXkodGhpcy51c2VybmFtZSwgdGhpcy5jb250ZXh0KTtcbiAgICB0aGlzLmhpc3RvcnlFbGVtZW50cyA9IHRoaXMuaGlzdG9yeVByb3ZpZGVyXG4gICAgICA/IHRoaXMuaGlzdG9yeVByb3ZpZGVyLmdldE1vZGlmaWVkSGlzdG9yeUVudHJpZXMoaGlzdG9yeUVsZW1lbnRzKVxuICAgICAgOiBoaXN0b3J5RWxlbWVudHM7XG5cbiAgICB0aGlzLmhpc3RvcnlTZXJ2aWNlLmluaXRpYWxpemVDb29raWVTZXR0aW5ncyh0aGlzLnVzZXJuYW1lLCB0aGlzLmRvbWFpbik7XG4gICAgdGhpcy5oaXN0b3J5U2VydmljZS5jb29raWVTZXR0aW5ncyQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKHNldHRpbmdzID0+IHtcbiAgICAgIHRoaXMucGluQWN0aXZhdGVkID0gc2V0dGluZ3MuZmluZChzZXR0aW5nID0+
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2hpc3RvcnkvaGlzdG9yeS50cyIsIi4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2hpc3RvcnkvaGlzdG9yeS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFFdkUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFNOUMsTUFBTSxPQUFPLFVBQVU7SUFpQnJCLFlBQ1UsY0FBaUMsRUFDSyxlQUFnQztRQUR0RSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDSyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFoQnpELGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDWixtQkFBYyxHQUFHLFNBQVMsQ0FBQztRQUM5QixnQkFBVyxHQUFHLGFBQWEsQ0FBQztRQUMxQixrQkFBYSxHQUFHLGVBQWUsQ0FBQztRQUVyQyxhQUFRLEdBQUcsY0FBYyxDQUFDO1FBRWhEOztXQUVHO1FBQ0gsb0JBQWUsR0FBc0IsRUFBRSxDQUFDO1FBQ3hDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ2IsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFLdEMsQ0FBQztJQUVKLFFBQVE7UUFDTixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWU7WUFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxlQUFlLENBQUM7UUFFcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN4RixJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDakcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQXdCO1FBQzdCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDckMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxRSxDQUFDOzhHQTdDVSxVQUFVLG1EQW1CWCxnQkFBZ0I7a0dBbkJmLFVBQVUsMlpDcEJ2QiwyNUJBaUJBOzsyRkRHYSxVQUFVO2tCQUp0QixTQUFTOytCQUNFLGFBQWE7OzBCQXNCcEIsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUFHLFFBQVE7eUNBbEJmLFFBQVE7c0JBQTdCLEtBQUs7dUJBQUMsYUFBYTtnQkFDQyxPQUFPO3NCQUEzQixLQUFLO3VCQUFDLFlBQVk7Z0JBQ0ksU0FBUztzQkFBL0IsS0FBSzt1QkFBQyxjQUFjO2dCQUNPLGNBQWM7c0JBQXpDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNELFdBQVc7c0JBQW5DLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNJLGFBQWE7c0JBQXZDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUNMLE1BQU07c0JBQXpCLEtBQUs7dUJBQUMsV0FBVztnQkFDSSxRQUFRO3NCQUE3QixLQUFLO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgUG9yc2NoZSBJbmZvcm1hdGlrLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xySGlzdG9yeU1vZGVsIH0gZnJvbSAnLi9oaXN0b3J5LW1vZGVsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDbHJIaXN0b3J5U2VydmljZSB9IGZyb20gJy4vaGlzdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGFuZ2xlSWNvbiwgQ2xhcml0eUljb25zLCBoaXN0b3J5SWNvbiB9IGZyb20gJ0BjZHMvY29yZS9pY29uJztcbmltcG9ydCB7IEhJU1RPUllfUFJPVklERVIsIEhpc3RvcnlQcm92aWRlciB9IGZyb20gJy4vaGlzdG9yeS5wcm92aWRlcic7XG5cbkNsYXJpdHlJY29ucy5hZGRJY29ucyhoaXN0b3J5SWNvbiwgYW5nbGVJY29uKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWhpc3RvcnknLFxuICB0ZW1wbGF0ZVVybDogJy4vaGlzdG9yeS5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xySGlzdG9yeSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCdjbHJVc2VybmFtZScpIHVzZXJuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgnY2xyQ29udGV4dCcpIGNvbnRleHQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIEBJbnB1dCgnY2xyUGluQWN0aXZlJykgcGluQWN0aXZlID0gdHJ1ZTtcbiAgQElucHV0KCdjbHJEcm9wZG93bkhlYWRlcicpIGRyb3Bkb3duSGVhZGVyID0gJ0hpc3RvcnknO1xuICBASW5wdXQoJ2NsckRyb3Bkb3duUGluJykgZHJvcGRvd25QaW4gPSAnUGluIEhpc3RvcnknO1xuICBASW5wdXQoJ2NsckRyb3Bkb3duVW5waW4nKSBkcm9wZG93blVucGluID0gJ1VucGluIEhpc3RvcnknO1xuICBASW5wdXQoJ2NsckRvbWFpbicpIGRvbWFpbjogc3RyaW5nO1xuICBASW5wdXQoJ2NsclBvc2l0aW9uJykgcG9zaXRpb24gPSAnYm90dG9tLXJpZ2h0JztcblxuICAvKipcbiAgICogVGhlIGFycmF5IG9mIGhpc3RvcnkgZWxlbWVudHMgdG8gYmUgZGlzcGxheWVkLlxuICAgKi9cbiAgaGlzdG9yeUVsZW1lbnRzOiBDbHJIaXN0b3J5TW9kZWxbXSA9IFtdO1xuICBwaW5BY3RpdmF0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGhpc3RvcnlTZXJ2aWNlOiBDbHJIaXN0b3J5U2VydmljZSxcbiAgICBASW5qZWN0KEhJU1RPUllfUFJPVklERVIpIEBPcHRpb25hbCgpIHByaXZhdGUgaGlzdG9yeVByb3ZpZGVyOiBIaXN0b3J5UHJvdmlkZXJcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGhpc3RvcnlFbGVtZW50cyA9IHRoaXMuaGlzdG9yeVNlcnZpY2UuZ2V0SGlzdG9yeURpc3BsYXkodGhpcy51c2VybmFtZSwgdGhpcy5jb250ZXh0KTtcbiAgICB0aGlzLmhpc3RvcnlFbGVtZW50cyA9IHRoaXMuaGlzdG9yeVByb3ZpZGVyXG4gICAgICA/IHRoaXMuaGlzdG9yeVByb3ZpZGVyLmdldE1vZGlmaWVkSGlzdG9yeUVudHJpZXMoaGlzdG9yeUVsZW1lbnRzKVxuICAgICAgOiBoaXN0b3J5RWxlbWVudHM7XG5cbiAgICB0aGlzLmhpc3RvcnlTZXJ2aWNlLmluaXRpYWxpemVDb29raWVTZXR0aW5ncyh0aGlzLnVzZXJuYW1lLCB0aGlzLmRvbWFpbik7XG4gICAgdGhpcy5oaXN0b3J5U2VydmljZS5jb29raWVTZXR0aW5ncyQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKHNldHRpbmdzID0+IHtcbiAgICAgIHRoaXMucGluQWN0aXZhdGVkID0gc2V0dGluZ3MuZmluZChzZXR0aW5nID0+IHNldHRpbmcudXNlcm5hbWUgPT09IHRoaXMudXNlcm5hbWUpLmhpc3RvcnlQaW5uZWQ7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgc2VsZWN0KGhpc3Rvcnk6IENsckhpc3RvcnlNb2RlbCk6IHZvaWQge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaGlzdG9yeS51cmw7XG4gIH1cblxuICB0b2dnbGVQaW5IaXN0b3J5KCk6IHZvaWQge1xuICAgIHRoaXMuaGlzdG9yeVNlcnZpY2Uuc2V0SGlzdG9yeVBpbm5lZCh0aGlzLnVzZXJuYW1lLCAhdGhpcy5waW5BY3RpdmF0ZWQpO1xuICB9XG59XG4iLCI8Y2xyLWRyb3Bkb3duPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tb3V0bGluZS1wcmltYXJ5XCIgY2xyRHJvcGRvd25UcmlnZ2VyPlxuICAgIDxjZHMtaWNvbiBzaGFwZT1cImhpc3RvcnlcIiBzaXplPVwiMTZcIj48L2Nkcy1pY29uPlxuICAgIDxjZHMtaWNvbiBzaGFwZT1cImFuZ2xlXCIgZGlyZWN0aW9uPVwiZG93blwiIHNpemU9XCIxMlwiPjwvY2RzLWljb24+XG4gIDwvYnV0dG9uPlxuICA8Y2xyLWRyb3Bkb3duLW1lbnUgW2NsclBvc2l0aW9uXT1cInBvc2l0aW9uXCIgKmNscklmT3Blbj5cbiAgICA8bGFiZWwgY2xhc3M9XCJkcm9wZG93bi1oZWFkZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj57e2Ryb3Bkb3duSGVhZGVyfX08L2xhYmVsPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsckRyb3Bkb3duSXRlbSAqbmdGb3I9XCJsZXQgaGlzdG9yeSBvZiBoaXN0b3J5RWxlbWVudHNcIiAoY2xpY2spPVwic2VsZWN0KGhpc3RvcnkpXCI+XG4gICAgICB7e2hpc3RvcnkudGl0bGV9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgKm5nSWY9XCJwaW5BY3RpdmVcIiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIiByb2xlPVwic2VwYXJhdG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG4gICAgPGJ1dHRvbiBjbHJEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInRvZ2dsZVBpbkhpc3RvcnkoKVwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJwaW5BY3RpdmUgJiYgIXBpbkFjdGl2YXRlZFwiPnt7ZHJvcGRvd25QaW59fTwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwicGluQWN0aXZlICYmIHBpbkFjdGl2YXRlZFwiPnt7ZHJvcGRvd25VbnBpbn19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Nsci1kcm9wZG93bi1tZW51PlxuPC9jbHItZHJvcGRvd24+XG4iXX0=
|
package/fesm2022/clr-addons.mjs
CHANGED
|
@@ -4526,11 +4526,11 @@ class ClrHistory {
|
|
|
4526
4526
|
this.historyService.setHistoryPinned(this.username, !this.pinActivated);
|
|
4527
4527
|
}
|
|
4528
4528
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ClrHistory, deps: [{ token: ClrHistoryService }, { token: HISTORY_PROVIDER, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4529
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ClrHistory, selector: "clr-history", inputs: { username: ["clrUsername", "username"], context: ["clrContext", "context"], pinActive: ["clrPinActive", "pinActive"], dropdownHeader: ["clrDropdownHeader", "dropdownHeader"], dropdownPin: ["clrDropdownPin", "dropdownPin"], dropdownUnpin: ["clrDropdownUnpin", "dropdownUnpin"], domain: ["clrDomain", "domain"], position: ["clrPosition", "position"] }, ngImport: i0, template: "<clr-dropdown>\n <button type=\"button\" class=\"btn btn-icon btn-outline-primary\" clrDropdownTrigger>\n <cds-icon shape=\"history\" size=\"
|
|
4529
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ClrHistory, selector: "clr-history", inputs: { username: ["clrUsername", "username"], context: ["clrContext", "context"], pinActive: ["clrPinActive", "pinActive"], dropdownHeader: ["clrDropdownHeader", "dropdownHeader"], dropdownPin: ["clrDropdownPin", "dropdownPin"], dropdownUnpin: ["clrDropdownUnpin", "dropdownUnpin"], domain: ["clrDomain", "domain"], position: ["clrPosition", "position"] }, ngImport: i0, template: "<clr-dropdown>\n <button type=\"button\" class=\"btn btn-icon btn-outline-primary\" clrDropdownTrigger>\n <cds-icon shape=\"history\" size=\"16\"></cds-icon>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n <clr-dropdown-menu [clrPosition]=\"position\" *clrIfOpen>\n <label class=\"dropdown-header\" aria-hidden=\"true\">{{dropdownHeader}}</label>\n <button type=\"button\" clrDropdownItem *ngFor=\"let history of historyElements\" (click)=\"select(history)\">\n {{history.title}}\n </button>\n <div *ngIf=\"pinActive\" class=\"dropdown-divider\" role=\"separator\" aria-hidden=\"true\"></div>\n <button clrDropdownItem (click)=\"togglePinHistory()\">\n <span *ngIf=\"pinActive && !pinActivated\">{{dropdownPin}}</span>\n <span *ngIf=\"pinActive && pinActivated\">{{dropdownUnpin}}</span>\n </button>\n </clr-dropdown-menu>\n</clr-dropdown>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i2.ClrIfOpen, selector: "[clrIfOpen]", inputs: ["clrIfOpen"], outputs: ["clrIfOpenChange"] }, { kind: "directive", type: i2.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "component", type: i2.ClrDropdown, selector: "clr-dropdown", inputs: ["clrCloseMenuOnItemClick"] }, { kind: "component", type: i2.ClrDropdownMenu, selector: "clr-dropdown-menu", inputs: ["clrPosition"] }, { kind: "directive", type: i2.ClrDropdownTrigger, selector: "[clrDropdownTrigger],[clrDropdownToggle]" }, { kind: "directive", type: i2.ClrDropdownItem, selector: "[clrDropdownItem]", inputs: ["clrDisabled", "id"] }, { kind: "directive", type: ClrDropdownOverflowDirective, selector: "clr-dropdown-menu", inputs: ["clrDropdownMenuMaxHeight", "clrDropdownMenuItemMinHeight", "clrMarginBottom"] }] }); }
|
|
4530
4530
|
}
|
|
4531
4531
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ClrHistory, decorators: [{
|
|
4532
4532
|
type: Component,
|
|
4533
|
-
args: [{ selector: 'clr-history', template: "<clr-dropdown>\n <button type=\"button\" class=\"btn btn-icon btn-outline-primary\" clrDropdownTrigger>\n <cds-icon shape=\"history\" size=\"
|
|
4533
|
+
args: [{ selector: 'clr-history', template: "<clr-dropdown>\n <button type=\"button\" class=\"btn btn-icon btn-outline-primary\" clrDropdownTrigger>\n <cds-icon shape=\"history\" size=\"16\"></cds-icon>\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n <clr-dropdown-menu [clrPosition]=\"position\" *clrIfOpen>\n <label class=\"dropdown-header\" aria-hidden=\"true\">{{dropdownHeader}}</label>\n <button type=\"button\" clrDropdownItem *ngFor=\"let history of historyElements\" (click)=\"select(history)\">\n {{history.title}}\n </button>\n <div *ngIf=\"pinActive\" class=\"dropdown-divider\" role=\"separator\" aria-hidden=\"true\"></div>\n <button clrDropdownItem (click)=\"togglePinHistory()\">\n <span *ngIf=\"pinActive && !pinActivated\">{{dropdownPin}}</span>\n <span *ngIf=\"pinActive && pinActivated\">{{dropdownUnpin}}</span>\n </button>\n </clr-dropdown-menu>\n</clr-dropdown>\n" }]
|
|
4534
4534
|
}], ctorParameters: () => [{ type: ClrHistoryService }, { type: HistoryProvider, decorators: [{
|
|
4535
4535
|
type: Inject,
|
|
4536
4536
|
args: [HISTORY_PROVIDER]
|
|
@@ -6461,12 +6461,14 @@ class ClrDateFilterComponent {
|
|
|
6461
6461
|
if (values && (values[0] !== this._from || values[1] !== this._to)) {
|
|
6462
6462
|
if (typeof values[0] === 'object') {
|
|
6463
6463
|
this._from = values[0];
|
|
6464
|
+
this._fromTime = this._from?.toLocaleTimeString();
|
|
6464
6465
|
}
|
|
6465
6466
|
else {
|
|
6466
6467
|
this._from = null;
|
|
6467
6468
|
}
|
|
6468
6469
|
if (typeof values[1] === 'object') {
|
|
6469
6470
|
this._to = values[1];
|
|
6471
|
+
this._toTime = this._to?.toLocaleTimeString();
|
|
6470
6472
|
}
|
|
6471
6473
|
else {
|
|
6472
6474
|
this._to = null;
|
|
@@ -6491,7 +6493,7 @@ class ClrDateFilterComponent {
|
|
|
6491
6493
|
}
|
|
6492
6494
|
if (this.fromTime) {
|
|
6493
6495
|
const [hours, minutes, seconds] = this.fromTime.split(':').map(n => parseInt(n));
|
|
6494
|
-
from.setHours(hours, minutes, seconds
|
|
6496
|
+
from.setHours(hours, minutes, seconds || 0, 0);
|
|
6495
6497
|
}
|
|
6496
6498
|
this._from = from;
|
|
6497
6499
|
this._changes.next([this._from, this._to]);
|
|
@@ -6502,7 +6504,7 @@ class ClrDateFilterComponent {
|
|
|
6502
6504
|
this._fromTime = fromtime;
|
|
6503
6505
|
if (this._fromTime && this._from) {
|
|
6504
6506
|
const [hours, minutes, seconds] = this._fromTime.split(':').map(n => parseInt(n));
|
|
6505
|
-
this._from.setHours(hours, minutes, seconds
|
|
6507
|
+
this._from.setHours(hours, minutes, seconds || 0, 0);
|
|
6506
6508
|
this._changes.next([this._from, this._to]);
|
|
6507
6509
|
this.filterValueChange.emit([this._from, this._to]);
|
|
6508
6510
|
}
|
|
@@ -6517,7 +6519,7 @@ class ClrDateFilterComponent {
|
|
|
6517
6519
|
}
|
|
6518
6520
|
if (this.toTime) {
|
|
6519
6521
|
const [hours, minutes, seconds] = this.toTime.split(':').map(n => parseInt(n));
|
|
6520
|
-
to.setHours(hours, minutes, seconds
|
|
6522
|
+
to.setHours(hours, minutes, seconds || 0, 0);
|
|
6521
6523
|
}
|
|
6522
6524
|
this._to = to;
|
|
6523
6525
|
this._changes.next([this._from, this._to]);
|
|
@@ -6528,7 +6530,7 @@ class ClrDateFilterComponent {
|
|
|
6528
6530
|
this._toTime = totime;
|
|
6529
6531
|
if (this._toTime && this._to) {
|
|
6530
6532
|
const [hours, minutes, seconds] = this._toTime.split(':').map(n => parseInt(n));
|
|
6531
|
-
this._to.setHours(hours, minutes, seconds
|
|
6533
|
+
this._to.setHours(hours, minutes, seconds || 0, 0);
|
|
6532
6534
|
this._changes.next([this._from, this._to]);
|
|
6533
6535
|
this.filterValueChange.emit([this._from, this._to]);
|
|
6534
6536
|
}
|
|
@@ -6578,11 +6580,11 @@ class ClrDateFilterComponent {
|
|
|
6578
6580
|
return other === this;
|
|
6579
6581
|
}
|
|
6580
6582
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ClrDateFilterComponent, deps: [{ token: i2.ClrCommonStringsService }, { token: i2.ClrPopoverEventsService }, { token: i2.ClrDatagridFilter }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6581
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ClrDateFilterComponent, selector: "clr-date-filter", inputs: { timeActive: "timeActive", property: ["clrProperty", "property"], maxPlaceholder: ["clrFilterMaxPlaceholder", "maxPlaceholder"], minPlaceholder: ["clrFilterMinPlaceholder", "minPlaceholder"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, ngImport: i0, template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilter()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<ng-container *ngIf=\"!timeActive\">\n <clr-date-container>\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <clr-date-container>\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n</ng-container>\n<ng-container *ngIf=\"timeActive\">\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" [(ngModel)]=\"fromTime\" />\n </clr-date-time-container>\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" [(ngModel)]=\"toTime\" />\n </clr-date-time-container>\n</ng-container>\n", styles: [".btn-trash{position:absolute;top:15px;right:40px;padding:0}.time-filter-active{width:12rem}.time-filter-active-input{width:5rem!important}\n"], dependencies: [{ kind: "directive", type: i2.CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: i2.ClrDateContainer, selector: "clr-date-container", inputs: ["clrPosition"] }, { kind: "directive", type: i2.ClrDateInput, selector: "[clrDate]", inputs: ["placeholder", "clrDate", "min", "max", "disabled"], outputs: ["clrDateChange"] }, { kind: "directive", type: i2.ClrDateInputValidator, selector: "[clrDate]" }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.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: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ClrDateTimeContainer, selector: "clr-date-time-container" }, { kind: "directive", type: ClrTimeInput, selector: "[clrTime]" }] }); }
|
|
6583
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ClrDateFilterComponent, selector: "clr-date-filter", inputs: { timeActive: "timeActive", property: ["clrProperty", "property"], maxPlaceholder: ["clrFilterMaxPlaceholder", "maxPlaceholder"], minPlaceholder: ["clrFilterMinPlaceholder", "minPlaceholder"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, ngImport: i0, template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilter()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<ng-container *ngIf=\"!timeActive\">\n <clr-date-container>\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <clr-date-container>\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n</ng-container>\n<ng-container *ngIf=\"timeActive\">\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" [(ngModel)]=\"fromTime\" />\n </clr-date-time-container>\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" [(ngModel)]=\"toTime\" />\n </clr-date-time-container>\n</ng-container>\n", styles: [".btn-trash{position:absolute;top:15px;right:40px;padding:0}.time-filter-active{width:12rem}.time-filter-active-input{width:5rem!important}.time-filter-input{width:4rem!important}\n"], dependencies: [{ kind: "directive", type: i2.CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: i2.ClrDateContainer, selector: "clr-date-container", inputs: ["clrPosition"] }, { kind: "directive", type: i2.ClrDateInput, selector: "[clrDate]", inputs: ["placeholder", "clrDate", "min", "max", "disabled"], outputs: ["clrDateChange"] }, { kind: "directive", type: i2.ClrDateInputValidator, selector: "[clrDate]" }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.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: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ClrDateTimeContainer, selector: "clr-date-time-container" }, { kind: "directive", type: ClrTimeInput, selector: "[clrTime]" }] }); }
|
|
6582
6584
|
}
|
|
6583
6585
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ClrDateFilterComponent, decorators: [{
|
|
6584
6586
|
type: Component,
|
|
6585
|
-
args: [{ selector: 'clr-date-filter', template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilter()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<ng-container *ngIf=\"!timeActive\">\n <clr-date-container>\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <clr-date-container>\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n</ng-container>\n<ng-container *ngIf=\"timeActive\">\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" [(ngModel)]=\"fromTime\" />\n </clr-date-time-container>\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" [(ngModel)]=\"toTime\" />\n </clr-date-time-container>\n</ng-container>\n", styles: [".btn-trash{position:absolute;top:15px;right:40px;padding:0}.time-filter-active{width:12rem}.time-filter-active-input{width:5rem!important}\n"] }]
|
|
6587
|
+
args: [{ selector: 'clr-date-filter', template: "<button class=\"btn btn-sm btn-icon btn-link btn-trash\" (click)=\"clearFilter()\">\n <cds-icon shape=\"trash\"></cds-icon>\n</button>\n<ng-container *ngIf=\"!timeActive\">\n <clr-date-container>\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <clr-date-container>\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n</ng-container>\n<ng-container *ngIf=\"timeActive\">\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n #input_from\n type=\"date\"\n name=\"from\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"from\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" [(ngModel)]=\"fromTime\" />\n </clr-date-time-container>\n <clr-date-time-container>\n <clr-date-container class=\"time-filter-active\">\n <input\n type=\"date\"\n name=\"to\"\n class=\"datagrid-date-filter-input time-filter-active-input\"\n [(clrDate)]=\"to\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-date-container>\n <input clrTime type=\"time\" class=\"time-filter-input\" [(ngModel)]=\"toTime\" />\n </clr-date-time-container>\n</ng-container>\n", styles: [".btn-trash{position:absolute;top:15px;right:40px;padding:0}.time-filter-active{width:12rem}.time-filter-active-input{width:5rem!important}.time-filter-input{width:4rem!important}\n"] }]
|
|
6586
6588
|
}], ctorParameters: () => [{ type: i2.ClrCommonStringsService }, { type: i2.ClrPopoverEventsService }, { type: i2.ClrDatagridFilter }], propDecorators: { timeActive: [{
|
|
6587
6589
|
type: Input
|
|
6588
6590
|
}], property: [{
|
|
@@ -8080,7 +8082,7 @@ class ClrDaterangepickerContainerComponent extends ClrAbstractContainer {
|
|
|
8080
8082
|
DaterangeService,
|
|
8081
8083
|
OpenedDatepickersTrackerService,
|
|
8082
8084
|
ControlIdService,
|
|
8083
|
-
], queries: [{ propertyName: "daterangepickerDirective", first: true, predicate: ClrDaterangepickerDirective, descendants: true }], viewQueries: [{ propertyName: "datepickerComponents", predicate: ClrDatepickerComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"label\"></ng-content>\n<label *ngIf=\"!this.labelComponent && this.addLayoutGrid\"></label>\n<div\n [class.clr-col-12]=\"this.addLayoutGrid\"\n [class.clr-col-md-10]=\"this.addLayoutGrid\"\n [class.clr-error]=\"this.isInvalid\"\n class=\"clr-control-container\"\n>\n <div class=\"clr-input-wrapper\" clrPopoverAnchor>\n <div [class.clr-focus]=\"this.focus\" class=\"clr-input-group\">\n <ng-content select=\"[clrDaterangepicker]\"></ng-content>\n <button\n [attr.aria-label]=\"this.friendlyDaterange\"\n [disabled]=\"this.disabled\"\n [title]=\"this.friendlyDaterange\"\n class=\"clr-input-group-icon-action\"\n clrPopoverOpenCloseButton\n type=\"button\"\n >\n <cds-icon shape=\"calendar\" status=\"info\"></cds-icon>\n </button>\n </div>\n <cds-icon\n *ngIf=\"this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"!this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n ></cds-icon>\n </div>\n <ng-content *ngIf=\"this.showHelper\" select=\"clr-control-helper\"></ng-content>\n <ng-content *ngIf=\"this.showInvalid\" select=\"clr-control-error\"></ng-content>\n <ng-content *ngIf=\"this.showValid\" select=\"clr-control-success\"></ng-content>\n\n <div\n *clrPopoverContent=\"this.open; at: this.popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n class=\"clr-daterangepicker-container-popup datepicker\"\n >\n <button\n class=\"btn btn-sm btn-link close clr-smart-close-button btn-trash\"\n type=\"button\"\n (click)=\"daterangeService.updateSelectedDaterange(null)\"\n >\n <cds-icon shape=\"trash\"></cds-icon>\n </button>\n <button\n [attr.aria-label]=\"this.commonStrings.close\"\n class=\"btn btn-sm btn-link close\"\n clrPopoverCloseButton\n type=\"button\"\n >\n <cds-icon [attr.title]=\"this.commonStrings.close\" aria-hidden=\"true\" shape=\"window-close\"></cds-icon>\n <span class=\"clr-sr-only\">{{ this.commonStrings.close }}</span>\n </button>\n <div class=\"clr-daterangepicker-container-popup-content\">\n <form [clrLayout]=\"'vertical'\" clrForm>\n <div class=\"datetime-container\">\n <clr-datepicker\n (valueChange)=\"this.onDateFromChange($event)\"\n [label]=\"this.labelFrom\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateFrom\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeFromChange($event)\"\n [value]=\"this.timeFrom\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n <div class=\"datetime-container datetime-container-to\">\n <clr-datepicker\n (valueChange)=\"this.onDateToChange($event)\"\n [label]=\"this.labelTo\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateTo\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeToChange($event)\"\n [value]=\"this.timeTo\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n </form>\n <div *ngIf=\"this.presets?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presets\">\n <button (click)=\"this.applyPreset(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n <div *ngIf=\"this.presetsDateTime?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presetsDateTime\">\n <button (click)=\"this.applyPresetTime(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".clr-input-wrapper>.clr-input-group{max-width:fit-content;padding-right:1.5rem}.clr-input-wrapper>.clr-input-group ::ng-deep>.clr-input{width:100%;padding:0 .3rem}.clr-daterangepicker-container-popup.datepicker{padding:0;width:auto;height:auto;display:block}.clr-daterangepicker-container-popup.datepicker .clr-smart-close-button{min-width:1.2rem;padding:0;position:absolute;right:0;margin:5px}.clr-daterangepicker-container-popup.datepicker .btn-trash{padding-right:25px;margin:5px}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content{padding
|
|
8085
|
+
], queries: [{ propertyName: "daterangepickerDirective", first: true, predicate: ClrDaterangepickerDirective, descendants: true }], viewQueries: [{ propertyName: "datepickerComponents", predicate: ClrDatepickerComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"label\"></ng-content>\n<label *ngIf=\"!this.labelComponent && this.addLayoutGrid\"></label>\n<div\n [class.clr-col-12]=\"this.addLayoutGrid\"\n [class.clr-col-md-10]=\"this.addLayoutGrid\"\n [class.clr-error]=\"this.isInvalid\"\n class=\"clr-control-container\"\n>\n <div class=\"clr-input-wrapper\" clrPopoverAnchor>\n <div [class.clr-focus]=\"this.focus\" class=\"clr-input-group\">\n <ng-content select=\"[clrDaterangepicker]\"></ng-content>\n <button\n [attr.aria-label]=\"this.friendlyDaterange\"\n [disabled]=\"this.disabled\"\n [title]=\"this.friendlyDaterange\"\n class=\"clr-input-group-icon-action\"\n clrPopoverOpenCloseButton\n type=\"button\"\n >\n <cds-icon shape=\"calendar\" status=\"info\"></cds-icon>\n </button>\n </div>\n <cds-icon\n *ngIf=\"this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"!this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n ></cds-icon>\n </div>\n <ng-content *ngIf=\"this.showHelper\" select=\"clr-control-helper\"></ng-content>\n <ng-content *ngIf=\"this.showInvalid\" select=\"clr-control-error\"></ng-content>\n <ng-content *ngIf=\"this.showValid\" select=\"clr-control-success\"></ng-content>\n\n <div\n *clrPopoverContent=\"this.open; at: this.popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n class=\"clr-daterangepicker-container-popup datepicker\"\n >\n <button\n class=\"btn btn-sm btn-link close clr-smart-close-button btn-trash\"\n type=\"button\"\n (click)=\"daterangeService.updateSelectedDaterange(null)\"\n >\n <cds-icon shape=\"trash\"></cds-icon>\n </button>\n <button\n [attr.aria-label]=\"this.commonStrings.close\"\n class=\"btn btn-sm btn-link close\"\n clrPopoverCloseButton\n type=\"button\"\n >\n <cds-icon [attr.title]=\"this.commonStrings.close\" aria-hidden=\"true\" shape=\"window-close\"></cds-icon>\n <span class=\"clr-sr-only\">{{ this.commonStrings.close }}</span>\n </button>\n <div class=\"clr-daterangepicker-container-popup-content\">\n <form [clrLayout]=\"'vertical'\" clrForm>\n <div class=\"datetime-container\">\n <clr-datepicker\n (valueChange)=\"this.onDateFromChange($event)\"\n [label]=\"this.labelFrom\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateFrom\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeFromChange($event)\"\n [value]=\"this.timeFrom\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n <div class=\"datetime-container datetime-container-to\">\n <clr-datepicker\n (valueChange)=\"this.onDateToChange($event)\"\n [label]=\"this.labelTo\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateTo\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeToChange($event)\"\n [value]=\"this.timeTo\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n </form>\n <div *ngIf=\"this.presets?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presets\">\n <button (click)=\"this.applyPreset(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n <div *ngIf=\"this.presetsDateTime?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presetsDateTime\">\n <button (click)=\"this.applyPresetTime(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".clr-input-wrapper>.clr-input-group{max-width:fit-content;padding-right:1.5rem}.clr-input-wrapper>.clr-input-group ::ng-deep>.clr-input{width:100%;padding:0 .3rem}.clr-daterangepicker-container-popup.datepicker{padding:0;width:auto;height:auto;display:block}.clr-daterangepicker-container-popup.datepicker .clr-smart-close-button{min-width:1.2rem;padding:0;position:absolute;right:0;margin:5px}.clr-daterangepicker-container-popup.datepicker .btn-trash{padding-right:25px;margin:5px}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content{padding:1rem;display:flex;flex-direction:row}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content .clr-form ::ng-deep clr-datepicker:first-of-type ::ng-deep clr-date-container{margin-top:0}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content .clr-daterangepicker-container-popup-content-presets{margin-left:.6rem;padding:.3rem}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content .clr-daterangepicker-container-popup-content-presets .btn{margin-right:0}.datetime-container{display:flex;flex-direction:row;align-items:flex-start}.datetime-container-to{padding-top:1rem}.timepicker{padding-left:1rem}.timepicker clr-input-container{margin-top:.8rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i2.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i2.ClrForm, selector: "[clrForm]", inputs: ["clrLabelSize"] }, { kind: "directive", type: i2.ClrLayout, selector: "[clrForm][clrLayout]", inputs: ["clrLayout"] }, { kind: "directive", type: i2.ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: i2.ÇlrClrPopoverCloseButton, selector: "[clrPopoverCloseButton]", outputs: ["clrPopoverOnCloseChange"] }, { kind: "directive", type: i2.ÇlrClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i2.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "component", type: ClrDatepickerComponent, selector: "clr-datepicker", inputs: ["value", "label", "minDate", "maxDate", "timeSelection"], outputs: ["valueChange"] }, { kind: "component", type: ClrTimepickerComponent, selector: "clr-timepicker", inputs: ["value", "activateSeconds"], outputs: ["valueChange"] }] }); }
|
|
8084
8086
|
}
|
|
8085
8087
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ClrDaterangepickerContainerComponent, decorators: [{
|
|
8086
8088
|
type: Component,
|
|
@@ -8092,7 +8094,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
8092
8094
|
DaterangeService,
|
|
8093
8095
|
OpenedDatepickersTrackerService,
|
|
8094
8096
|
ControlIdService,
|
|
8095
|
-
], template: "<ng-content select=\"label\"></ng-content>\n<label *ngIf=\"!this.labelComponent && this.addLayoutGrid\"></label>\n<div\n [class.clr-col-12]=\"this.addLayoutGrid\"\n [class.clr-col-md-10]=\"this.addLayoutGrid\"\n [class.clr-error]=\"this.isInvalid\"\n class=\"clr-control-container\"\n>\n <div class=\"clr-input-wrapper\" clrPopoverAnchor>\n <div [class.clr-focus]=\"this.focus\" class=\"clr-input-group\">\n <ng-content select=\"[clrDaterangepicker]\"></ng-content>\n <button\n [attr.aria-label]=\"this.friendlyDaterange\"\n [disabled]=\"this.disabled\"\n [title]=\"this.friendlyDaterange\"\n class=\"clr-input-group-icon-action\"\n clrPopoverOpenCloseButton\n type=\"button\"\n >\n <cds-icon shape=\"calendar\" status=\"info\"></cds-icon>\n </button>\n </div>\n <cds-icon\n *ngIf=\"this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"!this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n ></cds-icon>\n </div>\n <ng-content *ngIf=\"this.showHelper\" select=\"clr-control-helper\"></ng-content>\n <ng-content *ngIf=\"this.showInvalid\" select=\"clr-control-error\"></ng-content>\n <ng-content *ngIf=\"this.showValid\" select=\"clr-control-success\"></ng-content>\n\n <div\n *clrPopoverContent=\"this.open; at: this.popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n class=\"clr-daterangepicker-container-popup datepicker\"\n >\n <button\n class=\"btn btn-sm btn-link close clr-smart-close-button btn-trash\"\n type=\"button\"\n (click)=\"daterangeService.updateSelectedDaterange(null)\"\n >\n <cds-icon shape=\"trash\"></cds-icon>\n </button>\n <button\n [attr.aria-label]=\"this.commonStrings.close\"\n class=\"btn btn-sm btn-link close\"\n clrPopoverCloseButton\n type=\"button\"\n >\n <cds-icon [attr.title]=\"this.commonStrings.close\" aria-hidden=\"true\" shape=\"window-close\"></cds-icon>\n <span class=\"clr-sr-only\">{{ this.commonStrings.close }}</span>\n </button>\n <div class=\"clr-daterangepicker-container-popup-content\">\n <form [clrLayout]=\"'vertical'\" clrForm>\n <div class=\"datetime-container\">\n <clr-datepicker\n (valueChange)=\"this.onDateFromChange($event)\"\n [label]=\"this.labelFrom\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateFrom\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeFromChange($event)\"\n [value]=\"this.timeFrom\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n <div class=\"datetime-container datetime-container-to\">\n <clr-datepicker\n (valueChange)=\"this.onDateToChange($event)\"\n [label]=\"this.labelTo\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateTo\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeToChange($event)\"\n [value]=\"this.timeTo\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n </form>\n <div *ngIf=\"this.presets?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presets\">\n <button (click)=\"this.applyPreset(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n <div *ngIf=\"this.presetsDateTime?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presetsDateTime\">\n <button (click)=\"this.applyPresetTime(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".clr-input-wrapper>.clr-input-group{max-width:fit-content;padding-right:1.5rem}.clr-input-wrapper>.clr-input-group ::ng-deep>.clr-input{width:100%;padding:0 .3rem}.clr-daterangepicker-container-popup.datepicker{padding:0;width:auto;height:auto;display:block}.clr-daterangepicker-container-popup.datepicker .clr-smart-close-button{min-width:1.2rem;padding:0;position:absolute;right:0;margin:5px}.clr-daterangepicker-container-popup.datepicker .btn-trash{padding-right:25px;margin:5px}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content{padding
|
|
8097
|
+
], template: "<ng-content select=\"label\"></ng-content>\n<label *ngIf=\"!this.labelComponent && this.addLayoutGrid\"></label>\n<div\n [class.clr-col-12]=\"this.addLayoutGrid\"\n [class.clr-col-md-10]=\"this.addLayoutGrid\"\n [class.clr-error]=\"this.isInvalid\"\n class=\"clr-control-container\"\n>\n <div class=\"clr-input-wrapper\" clrPopoverAnchor>\n <div [class.clr-focus]=\"this.focus\" class=\"clr-input-group\">\n <ng-content select=\"[clrDaterangepicker]\"></ng-content>\n <button\n [attr.aria-label]=\"this.friendlyDaterange\"\n [disabled]=\"this.disabled\"\n [title]=\"this.friendlyDaterange\"\n class=\"clr-input-group-icon-action\"\n clrPopoverOpenCloseButton\n type=\"button\"\n >\n <cds-icon shape=\"calendar\" status=\"info\"></cds-icon>\n </button>\n </div>\n <cds-icon\n *ngIf=\"this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"!this.isInvalid\"\n aria-hidden=\"true\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n ></cds-icon>\n </div>\n <ng-content *ngIf=\"this.showHelper\" select=\"clr-control-helper\"></ng-content>\n <ng-content *ngIf=\"this.showInvalid\" select=\"clr-control-error\"></ng-content>\n <ng-content *ngIf=\"this.showValid\" select=\"clr-control-success\"></ng-content>\n\n <div\n *clrPopoverContent=\"this.open; at: this.popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n class=\"clr-daterangepicker-container-popup datepicker\"\n >\n <button\n class=\"btn btn-sm btn-link close clr-smart-close-button btn-trash\"\n type=\"button\"\n (click)=\"daterangeService.updateSelectedDaterange(null)\"\n >\n <cds-icon shape=\"trash\"></cds-icon>\n </button>\n <button\n [attr.aria-label]=\"this.commonStrings.close\"\n class=\"btn btn-sm btn-link close\"\n clrPopoverCloseButton\n type=\"button\"\n >\n <cds-icon [attr.title]=\"this.commonStrings.close\" aria-hidden=\"true\" shape=\"window-close\"></cds-icon>\n <span class=\"clr-sr-only\">{{ this.commonStrings.close }}</span>\n </button>\n <div class=\"clr-daterangepicker-container-popup-content\">\n <form [clrLayout]=\"'vertical'\" clrForm>\n <div class=\"datetime-container\">\n <clr-datepicker\n (valueChange)=\"this.onDateFromChange($event)\"\n [label]=\"this.labelFrom\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateFrom\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeFromChange($event)\"\n [value]=\"this.timeFrom\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n <div class=\"datetime-container datetime-container-to\">\n <clr-datepicker\n (valueChange)=\"this.onDateToChange($event)\"\n [label]=\"this.labelTo\"\n [maxDate]=\"this.maxDate\"\n [minDate]=\"this.minDate\"\n [value]=\"this.dateTo\"\n class=\"clr-datepicker\"\n >\n </clr-datepicker>\n <clr-timepicker\n *ngIf=\"timeSelection\"\n class=\"timepicker\"\n (valueChange)=\"this.onTimeToChange($event)\"\n [value]=\"this.timeTo\"\n [activateSeconds]=\"activateSeconds\"\n >\n </clr-timepicker>\n </div>\n </form>\n <div *ngIf=\"this.presets?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presets\">\n <button (click)=\"this.applyPreset(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n <div *ngIf=\"this.presetsDateTime?.length > 0\" class=\"clr-daterangepicker-container-popup-content-presets\">\n <ng-container *ngFor=\"let preset of this.presetsDateTime\">\n <button (click)=\"this.applyPresetTime(preset)\" class=\"btn btn-outline btn-sm btn-block\" type=\"button\">\n {{ preset.text }}\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", styles: [".clr-input-wrapper>.clr-input-group{max-width:fit-content;padding-right:1.5rem}.clr-input-wrapper>.clr-input-group ::ng-deep>.clr-input{width:100%;padding:0 .3rem}.clr-daterangepicker-container-popup.datepicker{padding:0;width:auto;height:auto;display:block}.clr-daterangepicker-container-popup.datepicker .clr-smart-close-button{min-width:1.2rem;padding:0;position:absolute;right:0;margin:5px}.clr-daterangepicker-container-popup.datepicker .btn-trash{padding-right:25px;margin:5px}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content{padding:1rem;display:flex;flex-direction:row}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content .clr-form ::ng-deep clr-datepicker:first-of-type ::ng-deep clr-date-container{margin-top:0}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content .clr-daterangepicker-container-popup-content-presets{margin-left:.6rem;padding:.3rem}.clr-daterangepicker-container-popup.datepicker .clr-daterangepicker-container-popup-content .clr-daterangepicker-container-popup-content-presets .btn{margin-right:0}.datetime-container{display:flex;flex-direction:row;align-items:flex-start}.datetime-container-to{padding-top:1rem}.timepicker{padding-left:1rem}.timepicker clr-input-container{margin-top:.8rem}\n"] }]
|
|
8096
8098
|
}], ctorParameters: () => [{ type: i2.ClrPopoverEventsService }, { type: i2.ClrPopoverToggleService }, { type: i2.ClrCommonStringsService }, { type: i2.ClrLayout, decorators: [{
|
|
8097
8099
|
type: Optional
|
|
8098
8100
|
}] }, { type: DaterangeControlStateService }, { type: OpenedDatepickersTrackerService }, { type: DaterangeService }, { type: DaterangeParsingService }], propDecorators: { presets: [{
|