@metadev/lux 0.26.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/esm2022/lib/autocomplete/autocomplete.component.mjs +488 -0
- package/esm2022/lib/autocomplete-list/autocomplete-list.component.mjs +259 -0
- package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +78 -0
- package/esm2022/lib/checkbox/checkbox.component.mjs +156 -0
- package/{esm2020 → esm2022}/lib/datasource.mjs +1 -1
- package/esm2022/lib/datetime/datetime.component.mjs +312 -0
- package/esm2022/lib/filter/filter.component.mjs +158 -0
- package/esm2022/lib/geolocation/geolocation.component.mjs +423 -0
- package/esm2022/lib/geolocation/geolocation.service.mjs +123 -0
- package/{esm2020 → esm2022}/lib/geolocation/openlayer-loader.service.mjs +62 -62
- package/esm2022/lib/helperFns.mjs +118 -0
- package/esm2022/lib/input/input.component.mjs +469 -0
- package/{esm2020 → esm2022}/lib/input/regexp.service.mjs +195 -195
- package/{esm2020 → esm2022}/lib/lang.mjs +8 -8
- package/esm2022/lib/lux.module.mjs +119 -0
- package/{esm2020 → esm2022}/lib/map/geopoint.mjs +1 -1
- package/esm2022/lib/map/map.component.mjs +275 -0
- package/esm2022/lib/modal/modal-backdrop.mjs +25 -0
- package/esm2022/lib/modal/modal-config.mjs +12 -0
- package/{esm2020 → esm2022}/lib/modal/modal-dismiss-reasons.mjs +5 -5
- package/esm2022/lib/modal/modal-ref.mjs +101 -0
- package/esm2022/lib/modal/modal-stack.mjs +182 -0
- package/esm2022/lib/modal/modal-window.mjs +125 -0
- package/esm2022/lib/modal/modal.service.mjs +28 -0
- package/esm2022/lib/modal/util.mjs +82 -0
- package/esm2022/lib/pagination/pagination.component.mjs +144 -0
- package/{esm2020 → esm2022}/lib/pagination/pagination.mjs +1 -1
- package/esm2022/lib/radiogroup/radiogroup.component.mjs +129 -0
- package/esm2022/lib/select/select.component.mjs +148 -0
- package/{esm2020 → esm2022}/lib/tooltip/placement.mjs +7 -7
- package/{esm2020 → esm2022}/lib/tooltip/tooltip-context.mjs +1 -1
- package/esm2022/lib/tooltip/tooltip.component.mjs +24 -0
- package/esm2022/lib/tooltip/tooltip.directive.mjs +69 -0
- package/esm2022/lib/tooltip/tooltip.service.mjs +137 -0
- package/esm2022/lib/tooltip/tooltop-content.mjs +9 -0
- package/esm2022/lib/voice-recognition/voice-recognition.directive.mjs +79 -0
- package/{esm2020 → esm2022}/lib/window/window.service.mjs +45 -45
- package/{esm2020 → esm2022}/metadev-lux.mjs +4 -4
- package/{esm2020 → esm2022}/public-api.mjs +20 -20
- package/{fesm2020 → fesm2022}/metadev-lux.mjs +4377 -4260
- package/fesm2022/metadev-lux.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/autocomplete/autocomplete.component.d.ts +81 -81
- package/lib/autocomplete-list/autocomplete-list.component.d.ts +65 -65
- package/lib/breadcrumb/breadcrumb.component.d.ts +22 -22
- package/lib/checkbox/checkbox.component.d.ts +47 -47
- package/lib/datasource.d.ts +13 -13
- package/lib/datetime/datetime.component.d.ts +69 -69
- package/lib/filter/filter.component.d.ts +51 -51
- package/lib/geolocation/geolocation.component.d.ts +123 -123
- package/lib/geolocation/geolocation.service.d.ts +32 -32
- package/lib/geolocation/openlayer-loader.service.d.ts +7 -7
- package/lib/helperFns.d.ts +15 -15
- package/lib/input/input.component.d.ts +108 -108
- package/lib/input/regexp.service.d.ts +15 -15
- package/lib/lang.d.ts +2 -2
- package/lib/lux.module.d.ts +27 -27
- package/lib/map/geopoint.d.ts +7 -7
- package/lib/map/map.component.d.ts +39 -39
- package/lib/modal/modal-backdrop.d.ts +8 -8
- package/lib/modal/modal-config.d.ts +14 -14
- package/lib/modal/modal-dismiss-reasons.d.ts +4 -4
- package/lib/modal/modal-ref.d.ts +41 -41
- package/lib/modal/modal-stack.d.ts +31 -31
- package/lib/modal/modal-window.d.ts +28 -28
- package/lib/modal/modal.service.d.ts +19 -19
- package/lib/modal/util.d.ts +40 -40
- package/lib/pagination/pagination.component.d.ts +52 -52
- package/lib/pagination/pagination.d.ts +10 -10
- package/lib/radiogroup/radiogroup.component.d.ts +37 -37
- package/lib/select/select.component.d.ts +38 -38
- package/lib/tooltip/placement.d.ts +7 -7
- package/lib/tooltip/tooltip-context.d.ts +3 -3
- package/lib/tooltip/tooltip.component.d.ts +11 -11
- package/lib/tooltip/tooltip.directive.d.ts +27 -27
- package/lib/tooltip/tooltip.service.d.ts +20 -20
- package/lib/tooltip/tooltop-content.d.ts +6 -6
- package/lib/voice-recognition/voice-recognition.directive.d.ts +16 -16
- package/lib/window/window.service.d.ts +11 -11
- package/package.json +7 -14
- package/public-api.d.ts +18 -18
- package/esm2020/lib/autocomplete/autocomplete.component.mjs +0 -479
- package/esm2020/lib/autocomplete-list/autocomplete-list.component.mjs +0 -254
- package/esm2020/lib/breadcrumb/breadcrumb.component.mjs +0 -75
- package/esm2020/lib/checkbox/checkbox.component.mjs +0 -154
- package/esm2020/lib/datetime/datetime.component.mjs +0 -306
- package/esm2020/lib/filter/filter.component.mjs +0 -152
- package/esm2020/lib/geolocation/geolocation.component.mjs +0 -407
- package/esm2020/lib/geolocation/geolocation.service.mjs +0 -120
- package/esm2020/lib/helperFns.mjs +0 -117
- package/esm2020/lib/input/input.component.mjs +0 -452
- package/esm2020/lib/lux.module.mjs +0 -124
- package/esm2020/lib/map/map.component.mjs +0 -264
- package/esm2020/lib/modal/modal-backdrop.mjs +0 -26
- package/esm2020/lib/modal/modal-config.mjs +0 -14
- package/esm2020/lib/modal/modal-ref.mjs +0 -91
- package/esm2020/lib/modal/modal-stack.mjs +0 -179
- package/esm2020/lib/modal/modal-window.mjs +0 -119
- package/esm2020/lib/modal/modal.service.mjs +0 -26
- package/esm2020/lib/modal/util.mjs +0 -83
- package/esm2020/lib/pagination/pagination.component.mjs +0 -137
- package/esm2020/lib/radiogroup/radiogroup.component.mjs +0 -130
- package/esm2020/lib/select/select.component.mjs +0 -149
- package/esm2020/lib/tooltip/tooltip.component.mjs +0 -23
- package/esm2020/lib/tooltip/tooltip.directive.mjs +0 -60
- package/esm2020/lib/tooltip/tooltip.service.mjs +0 -134
- package/esm2020/lib/tooltip/tooltop-content.mjs +0 -7
- package/esm2020/lib/voice-recognition/voice-recognition.directive.mjs +0 -73
- package/fesm2015/metadev-lux.mjs +0 -4347
- package/fesm2015/metadev-lux.mjs.map +0 -1
- package/fesm2020/metadev-lux.mjs.map +0 -1
|
@@ -1,306 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ElementRef, ViewChild, forwardRef } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
|
|
3
|
-
import { addTimezoneOffset, hasValue, isInitialAndEmpty, isValidDate } from '../helperFns';
|
|
4
|
-
import { languageDetector } from '../lang';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/forms";
|
|
7
|
-
import * as i2 from "@angular/common";
|
|
8
|
-
export class DatetimeComponent {
|
|
9
|
-
get className() {
|
|
10
|
-
return this.checkClassName();
|
|
11
|
-
}
|
|
12
|
-
set disabled(v) {
|
|
13
|
-
v = typeof v === 'string' && v !== 'false' ? true : v;
|
|
14
|
-
this._disabled = v;
|
|
15
|
-
}
|
|
16
|
-
get disabled() {
|
|
17
|
-
return this._disabled;
|
|
18
|
-
}
|
|
19
|
-
set required(v) {
|
|
20
|
-
this._required = v;
|
|
21
|
-
}
|
|
22
|
-
get required() {
|
|
23
|
-
return this._required;
|
|
24
|
-
}
|
|
25
|
-
set value(v) {
|
|
26
|
-
if (v === this._value) {
|
|
27
|
-
return; // prevent events when there is no changes
|
|
28
|
-
}
|
|
29
|
-
const initialAndEmpty = isInitialAndEmpty(this._value, v);
|
|
30
|
-
const datetime = new Date(v);
|
|
31
|
-
if (!v) {
|
|
32
|
-
this._value = null;
|
|
33
|
-
this.setDateInControl(null);
|
|
34
|
-
this.setTimeInControl(null);
|
|
35
|
-
}
|
|
36
|
-
else if (!isValidDate(datetime)) {
|
|
37
|
-
this._value = v;
|
|
38
|
-
// we don't set value in control if the value is not valid
|
|
39
|
-
// if we do, the content of the control changes and can erase what the user is typing
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
this._value = datetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ
|
|
43
|
-
this.setValueInControl(datetime);
|
|
44
|
-
}
|
|
45
|
-
this.onChange(v);
|
|
46
|
-
if (!initialAndEmpty) {
|
|
47
|
-
this.valueChange.emit(v);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
get value() {
|
|
51
|
-
return this._value;
|
|
52
|
-
}
|
|
53
|
-
constructor() {
|
|
54
|
-
this.touched = false;
|
|
55
|
-
this.dirty = false;
|
|
56
|
-
this.lastErrors = null;
|
|
57
|
-
this.dateValue = undefined;
|
|
58
|
-
this.timeValue = undefined;
|
|
59
|
-
this.userErrors = {
|
|
60
|
-
en: {
|
|
61
|
-
required: 'Required field.',
|
|
62
|
-
min: 'Minimum value is $min.',
|
|
63
|
-
max: 'Maximum value is $max.'
|
|
64
|
-
},
|
|
65
|
-
es: {
|
|
66
|
-
required: 'El campo es obligatorio.',
|
|
67
|
-
min: 'El valor mínimo es $min.',
|
|
68
|
-
max: 'El valor máximo es $max.'
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
this.min = '1900-01-01T00:00:00Z';
|
|
72
|
-
this.max = '2100-01-01T00:00:00Z';
|
|
73
|
-
this.includeSeconds = true;
|
|
74
|
-
this.localTime = true;
|
|
75
|
-
this.lang = languageDetector();
|
|
76
|
-
this.inlineErrors = false;
|
|
77
|
-
this.readonly = null;
|
|
78
|
-
this.valueChange = new EventEmitter();
|
|
79
|
-
this.keyPress = new EventEmitter();
|
|
80
|
-
this.onChange = (_value) => { };
|
|
81
|
-
this.onTouched = () => { };
|
|
82
|
-
}
|
|
83
|
-
// ControlValueAccessor Interface implementation
|
|
84
|
-
writeValue(value) {
|
|
85
|
-
this.value = value;
|
|
86
|
-
}
|
|
87
|
-
registerOnChange(onChange) {
|
|
88
|
-
this.onChange = onChange;
|
|
89
|
-
}
|
|
90
|
-
registerOnTouched(onTouched) {
|
|
91
|
-
this.onTouched = onTouched;
|
|
92
|
-
}
|
|
93
|
-
markAsTouched() {
|
|
94
|
-
if (!this.touched) {
|
|
95
|
-
this.onTouched();
|
|
96
|
-
this.touched = true;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
setDisabledState(disabled) {
|
|
100
|
-
this.disabled = disabled;
|
|
101
|
-
}
|
|
102
|
-
// End of ControlValueAccessor Interface implementation
|
|
103
|
-
setDateInControl(date) {
|
|
104
|
-
// this.dateInput.nativeElement.value = date;
|
|
105
|
-
this.dateValue = date;
|
|
106
|
-
}
|
|
107
|
-
setTimeInControl(time) {
|
|
108
|
-
// this.timeInput.nativeElement.value = time;
|
|
109
|
-
this.timeValue = time;
|
|
110
|
-
}
|
|
111
|
-
setValueInControl(datetime) {
|
|
112
|
-
const offsetDatetime = this.localTime
|
|
113
|
-
? addTimezoneOffset(datetime)
|
|
114
|
-
: datetime;
|
|
115
|
-
const offsetDatetimeString = offsetDatetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ
|
|
116
|
-
this.setDateInControl(offsetDatetimeString.slice(0, 10)); // YYYY-MM-DD
|
|
117
|
-
if (this.includeSeconds) {
|
|
118
|
-
this.setTimeInControl(offsetDatetimeString.slice(11, 19)); // hh:mm:ss
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
this.setTimeInControl(offsetDatetimeString.slice(11, 16)); // hh:mm
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
clear() {
|
|
125
|
-
this.setDateInControl(null);
|
|
126
|
-
this.setTimeInControl(null);
|
|
127
|
-
this.value = null;
|
|
128
|
-
}
|
|
129
|
-
isClearable() {
|
|
130
|
-
return hasValue(this.value);
|
|
131
|
-
}
|
|
132
|
-
// Validator interface
|
|
133
|
-
registerOnValidatorChange() { }
|
|
134
|
-
validate(control) {
|
|
135
|
-
const value = control.value;
|
|
136
|
-
let result = null;
|
|
137
|
-
if (this.required &&
|
|
138
|
-
!hasValue(value) &&
|
|
139
|
-
!hasValue(this.dateValue) &&
|
|
140
|
-
!hasValue(this.timeValue)) {
|
|
141
|
-
result = result || {};
|
|
142
|
-
result.required = { value, reason: 'Required field.' };
|
|
143
|
-
}
|
|
144
|
-
if (!hasValue(this.dateValue) && hasValue(this.timeValue)) {
|
|
145
|
-
result = result || {};
|
|
146
|
-
result.existsDate = {
|
|
147
|
-
value,
|
|
148
|
-
reason: 'Date not specified.'
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
if (hasValue(this.dateValue) && !hasValue(this.timeValue)) {
|
|
152
|
-
result = result || {};
|
|
153
|
-
result.existsTime = {
|
|
154
|
-
value,
|
|
155
|
-
reason: 'Time not specified.'
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
if (hasValue(this.min) &&
|
|
159
|
-
hasValue(value) &&
|
|
160
|
-
hasValue(this.dateValue) &&
|
|
161
|
-
hasValue(this.timeValue) &&
|
|
162
|
-
String(value).localeCompare(this.min) === -1) {
|
|
163
|
-
result = result || {};
|
|
164
|
-
result.min = {
|
|
165
|
-
value,
|
|
166
|
-
min: this.min,
|
|
167
|
-
reason: `Value is lower than minimum value: ${this.min}.`
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
if (hasValue(this.max) &&
|
|
171
|
-
hasValue(value) &&
|
|
172
|
-
hasValue(this.dateValue) &&
|
|
173
|
-
hasValue(this.timeValue) &&
|
|
174
|
-
String(value).localeCompare(this.max) !== -1) {
|
|
175
|
-
result = result || {};
|
|
176
|
-
result.max = {
|
|
177
|
-
value,
|
|
178
|
-
max: this.max,
|
|
179
|
-
reason: `Value is greater than than maximum value: ${this.max}.`
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
this.lastErrors = result;
|
|
183
|
-
return result;
|
|
184
|
-
}
|
|
185
|
-
// End of Validator interface
|
|
186
|
-
ngOnInit() {
|
|
187
|
-
this.inputId = this.inputId
|
|
188
|
-
? this.inputId
|
|
189
|
-
: `datetime$${DatetimeComponent.idCounter++}`;
|
|
190
|
-
this.setPatterns();
|
|
191
|
-
}
|
|
192
|
-
onLostFocus() {
|
|
193
|
-
this.markAsTouched();
|
|
194
|
-
}
|
|
195
|
-
onKeyPress(event) {
|
|
196
|
-
this.keyPress.emit(event);
|
|
197
|
-
}
|
|
198
|
-
onEventDatetime(newDate, newTime) {
|
|
199
|
-
if (this.disabled || this.readonly) {
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
if (!newDate || !newTime) {
|
|
203
|
-
this.value = null;
|
|
204
|
-
}
|
|
205
|
-
else {
|
|
206
|
-
const newValue = `${newDate}T${newTime}`;
|
|
207
|
-
const datetime = new Date(newValue);
|
|
208
|
-
if (isValidDate(datetime)) {
|
|
209
|
-
let datetimeString;
|
|
210
|
-
if (this.localTime) {
|
|
211
|
-
datetimeString = datetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
datetimeString = addTimezoneOffset(datetime).toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ
|
|
215
|
-
}
|
|
216
|
-
if (this.includeSeconds) {
|
|
217
|
-
this.value = datetimeString.slice(0, 19) + 'Z'; // YYYY-MM-DDThh:mm:ssZ
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
this.value = datetimeString.slice(0, 16) + 'Z'; // YYYY-MM-DDThh:mmZ
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
this.value = newValue;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
checkClassName() {
|
|
229
|
-
return this.disabled
|
|
230
|
-
? this.readonly
|
|
231
|
-
? 'disabled readonly'
|
|
232
|
-
: 'disabled'
|
|
233
|
-
: this.readonly
|
|
234
|
-
? 'readonly'
|
|
235
|
-
: '';
|
|
236
|
-
}
|
|
237
|
-
setPatterns() {
|
|
238
|
-
this.min = this.min || '1900-01-01';
|
|
239
|
-
this.max = this.max || '2100-01-01';
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
DatetimeComponent.idCounter = 0;
|
|
243
|
-
DatetimeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatetimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
244
|
-
DatetimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: DatetimeComponent, selector: "lux-datetime", inputs: { min: "min", max: "max", includeSeconds: "includeSeconds", localTime: "localTime", lang: "lang", inlineErrors: "inlineErrors", inputId: "inputId", ariaLabel: ["aria-label", "ariaLabel"], readonly: "readonly", disabled: "disabled", required: "required", value: "value" }, outputs: { valueChange: "valueChange", keyPress: "keyPress" }, providers: [
|
|
245
|
-
{
|
|
246
|
-
provide: NG_VALUE_ACCESSOR,
|
|
247
|
-
multi: true,
|
|
248
|
-
useExisting: forwardRef(() => DatetimeComponent)
|
|
249
|
-
},
|
|
250
|
-
{
|
|
251
|
-
provide: NG_VALIDATORS,
|
|
252
|
-
multi: true,
|
|
253
|
-
useExisting: forwardRef(() => DatetimeComponent)
|
|
254
|
-
}
|
|
255
|
-
], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true, static: true }, { propertyName: "timeInput", first: true, predicate: ["timeInput"], descendants: true, static: true }], ngImport: i0, template: "<input\n #dateInput\n class=\"rounded-left prefix\"\n [ngClass]=\"className\"\n type=\"date\"\n [id]=\"inputId + '$date'\"\n [(ngModel)]=\"dateValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [placeholder]=\"\"\n (keyup)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (change)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<input\n #timeInput\n [class]=\"(disabled || readonly || !isClearable()) && localTime ? 'rounded-right' : ''\"\n [ngClass]=\"className\"\n type=\"time\"\n [id]=\"inputId + '$time'\"\n [(ngModel)]=\"timeValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [placeholder]=\"\"\n [step]=\"includeSeconds ? 1 : 60\"\n (keyup)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (change)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<ng-container\n *ngIf=\"!localTime\"\n>\n <div\n [class]=\"disabled || readonly || !isClearable() ? 'rounded-right postfix symbol' : 'postfix symbol'\"\n [ngClass]=\"className\"\n >\n <span>{{ localTime ? '' : 'UTC' }}</span>\n </div>\n</ng-container>\n<button\n #clearButton\n *ngIf=\"!disabled && !readonly && isClearable()\"\n type=\"button\"\n class=\"rounded-right postfix bordered icon-clear\"\n [id]=\"inputId + '$clear'\"\n (click)=\"clear()\"\n aria-label=\"clear\"\n></button>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[lang].required }}\n </div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n", styles: [":focus{z-index:1}input,select,textarea{border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057);margin:var(--lux-input-margin, 0rem);padding:var(--lux-input-padding, 0rem .5rem)}.alert{padding:.2rem 2rem;background:var(--lux-alert-background, #fe2e2e);color:var(--lux-alert-color, white);font-family:Consolas,monospace;width:45%;margin-right:1rem;display:inline-block}.symbol{display:inline-block;align-items:baseline;padding:0rem .5rem;margin-bottom:0;font-weight:400;color:var(--lux-symbol-color, default);text-align:center;white-space:nowrap;background:var(--lux-symbol-background, default);font-size:var(--lux-symbol-font-size, 1rem)}.bordered,.symbol{border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057)}.rounded,.rounded-right,.rounded-middle,.rounded-left{border-radius:var(--lux-border-radius, .25rem)}.rounded-left{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-middle{border-radius:0}.rounded-right{border-top-left-radius:0;border-bottom-left-radius:0}.prefix{border-right:none}.infix{border-left:none;border-right:none}.postfix{border-left:none;display:flex;align-items:center}.monospace{font-family:monospace}.default-font{color:var(--lux-font-color, black)}:host{display:flex;align-items:stretch}.readonly{border:none}.readonly:focus{border:none;outline:none}.disabled{background-color:var(--lux-disabled-color, #f1f1f1);border-color:var(--lux-disabled-border-color, #6d6d6d)}.icon-clear{grid-row:1;grid-column:2;width:var(--lux-autocomplete-icon-width, 1.5rem);background:var(--lux-autocomplete-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:var(--lux-autocomplete-icon-bg-size, .5rem .5rem);z-index:1}\n"], dependencies: [{ kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
256
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatetimeComponent, decorators: [{
|
|
257
|
-
type: Component,
|
|
258
|
-
args: [{ selector: 'lux-datetime', providers: [
|
|
259
|
-
{
|
|
260
|
-
provide: NG_VALUE_ACCESSOR,
|
|
261
|
-
multi: true,
|
|
262
|
-
useExisting: forwardRef(() => DatetimeComponent)
|
|
263
|
-
},
|
|
264
|
-
{
|
|
265
|
-
provide: NG_VALIDATORS,
|
|
266
|
-
multi: true,
|
|
267
|
-
useExisting: forwardRef(() => DatetimeComponent)
|
|
268
|
-
}
|
|
269
|
-
], template: "<input\n #dateInput\n class=\"rounded-left prefix\"\n [ngClass]=\"className\"\n type=\"date\"\n [id]=\"inputId + '$date'\"\n [(ngModel)]=\"dateValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [placeholder]=\"\"\n (keyup)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (change)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<input\n #timeInput\n [class]=\"(disabled || readonly || !isClearable()) && localTime ? 'rounded-right' : ''\"\n [ngClass]=\"className\"\n type=\"time\"\n [id]=\"inputId + '$time'\"\n [(ngModel)]=\"timeValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [placeholder]=\"\"\n [step]=\"includeSeconds ? 1 : 60\"\n (keyup)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (change)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<ng-container\n *ngIf=\"!localTime\"\n>\n <div\n [class]=\"disabled || readonly || !isClearable() ? 'rounded-right postfix symbol' : 'postfix symbol'\"\n [ngClass]=\"className\"\n >\n <span>{{ localTime ? '' : 'UTC' }}</span>\n </div>\n</ng-container>\n<button\n #clearButton\n *ngIf=\"!disabled && !readonly && isClearable()\"\n type=\"button\"\n class=\"rounded-right postfix bordered icon-clear\"\n [id]=\"inputId + '$clear'\"\n (click)=\"clear()\"\n aria-label=\"clear\"\n></button>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[lang].required }}\n </div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n", styles: [":focus{z-index:1}input,select,textarea{border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057);margin:var(--lux-input-margin, 0rem);padding:var(--lux-input-padding, 0rem .5rem)}.alert{padding:.2rem 2rem;background:var(--lux-alert-background, #fe2e2e);color:var(--lux-alert-color, white);font-family:Consolas,monospace;width:45%;margin-right:1rem;display:inline-block}.symbol{display:inline-block;align-items:baseline;padding:0rem .5rem;margin-bottom:0;font-weight:400;color:var(--lux-symbol-color, default);text-align:center;white-space:nowrap;background:var(--lux-symbol-background, default);font-size:var(--lux-symbol-font-size, 1rem)}.bordered,.symbol{border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057)}.rounded,.rounded-right,.rounded-middle,.rounded-left{border-radius:var(--lux-border-radius, .25rem)}.rounded-left{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-middle{border-radius:0}.rounded-right{border-top-left-radius:0;border-bottom-left-radius:0}.prefix{border-right:none}.infix{border-left:none;border-right:none}.postfix{border-left:none;display:flex;align-items:center}.monospace{font-family:monospace}.default-font{color:var(--lux-font-color, black)}:host{display:flex;align-items:stretch}.readonly{border:none}.readonly:focus{border:none;outline:none}.disabled{background-color:var(--lux-disabled-color, #f1f1f1);border-color:var(--lux-disabled-border-color, #6d6d6d)}.icon-clear{grid-row:1;grid-column:2;width:var(--lux-autocomplete-icon-width, 1.5rem);background:var(--lux-autocomplete-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:var(--lux-autocomplete-icon-bg-size, .5rem .5rem);z-index:1}\n"] }]
|
|
270
|
-
}], ctorParameters: function () { return []; }, propDecorators: { dateInput: [{
|
|
271
|
-
type: ViewChild,
|
|
272
|
-
args: ['dateInput', { static: true }]
|
|
273
|
-
}], timeInput: [{
|
|
274
|
-
type: ViewChild,
|
|
275
|
-
args: ['timeInput', { static: true }]
|
|
276
|
-
}], min: [{
|
|
277
|
-
type: Input
|
|
278
|
-
}], max: [{
|
|
279
|
-
type: Input
|
|
280
|
-
}], includeSeconds: [{
|
|
281
|
-
type: Input
|
|
282
|
-
}], localTime: [{
|
|
283
|
-
type: Input
|
|
284
|
-
}], lang: [{
|
|
285
|
-
type: Input
|
|
286
|
-
}], inlineErrors: [{
|
|
287
|
-
type: Input
|
|
288
|
-
}], inputId: [{
|
|
289
|
-
type: Input
|
|
290
|
-
}], ariaLabel: [{
|
|
291
|
-
type: Input,
|
|
292
|
-
args: ['aria-label']
|
|
293
|
-
}], readonly: [{
|
|
294
|
-
type: Input
|
|
295
|
-
}], disabled: [{
|
|
296
|
-
type: Input
|
|
297
|
-
}], required: [{
|
|
298
|
-
type: Input
|
|
299
|
-
}], value: [{
|
|
300
|
-
type: Input
|
|
301
|
-
}], valueChange: [{
|
|
302
|
-
type: Output
|
|
303
|
-
}], keyPress: [{
|
|
304
|
-
type: Output
|
|
305
|
-
}] } });
|
|
306
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvZGF0ZXRpbWUvZGF0ZXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvZGF0ZXRpbWUvZGF0ZXRpbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsaUJBQWlCLEVBS2pCLGFBQWEsRUFDZCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLGlCQUFpQixFQUNqQixXQUFXLEVBQ1osTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDOzs7O0FBa0IzQyxNQUFNLE9BQU8saUJBQWlCO0lBeUM1QixJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBUUQsSUFDSSxRQUFRLENBQUMsQ0FBbUI7UUFDOUIsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUNJLFFBQVEsQ0FBQyxDQUFVO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENB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QU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDO3lCQUNqRDt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7eUJBQ2pEO3FCQUNGOzBFQU95QyxTQUFTO3NCQUFsRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0UsU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQTJCakMsR0FBRztzQkFEVCxLQUFLO2dCQUdDLEdBQUc7c0JBRFQsS0FBSztnQkFHQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFPRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNzQixTQUFTO3NCQUFwQyxLQUFLO3VCQUFDLFlBQVk7Z0JBQ0gsUUFBUTtzQkFBdkIsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7Z0JBVUYsUUFBUTtzQkFEWCxLQUFLO2dCQVNGLEtBQUs7c0JBRFIsS0FBSztnQkE0QkksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgRWxlbWVudFJlZixcbiAgVmlld0NoaWxkLFxuICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBBYnN0cmFjdENvbnRyb2wsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbiAgTkdfVkFMSURBVE9SU1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBhZGRUaW1lem9uZU9mZnNldCxcbiAgaGFzVmFsdWUsXG4gIGlzSW5pdGlhbEFuZEVtcHR5LFxuICBpc1ZhbGlkRGF0ZVxufSBmcm9tICcuLi9oZWxwZXJGbnMnO1xuaW1wb3J0IHsgbGFuZ3VhZ2VEZXRlY3RvciB9IGZyb20gJy4uL2xhbmcnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHV4LWRhdGV0aW1lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGV0aW1lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZXRpbWUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGV0aW1lQ29tcG9uZW50KVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZXRpbWVDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGV0aW1lQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yXG57XG4gIHN0YXRpYyBpZENvdW50ZXIgPSAwO1xuXG4gIEBWaWV3Q2hpbGQoJ2RhdGVJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIGRhdGVJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgndGltZUlucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgdGltZUlucHV0OiBFbGVtZW50UmVmO1xuXG4gIHRvdWNoZWQgPSBmYWxzZTtcbiAgZGlydHkgPSBmYWxzZTtcbiAgbGFzdEVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBzdHJpbmcgfCBib29sZWFuO1xuICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZztcblxuICBwdWJsaWMgZGF0ZVZhbHVlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xuICBwdWJsaWMgdGltZVZhbHVlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyB1c2VyRXJyb3JzID0ge1xuICAgIGVuOiB7XG4gICAgICByZXF1aXJlZDogJ1JlcXVpcmVkIGZpZWxkLicsXG4gICAgICBtaW46ICdNaW5pbXVtIHZhbHVlIGlzICRtaW4uJyxcbiAgICAgIG1heDogJ01heGltdW0gdmFsdWUgaXMgJG1heC4nXG4gICAgfSxcbiAgICBlczoge1xuICAgICAgcmVxdWlyZWQ6ICdFbCBjYW1wbyBlcyBvYmxpZ2F0b3Jpby4nLFxuICAgICAgbWluOiAnRWwgdmFsb3IgbcOtbmltbyBlcyAkbWluLicsXG4gICAgICBtYXg6ICdFbCB2YWxvciBtw6F4aW1vIGVzICRtYXguJ1xuICAgIH1cbiAgfTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWluPzogc3RyaW5nID0gJzE5MDAtMDEtMDFUMDA6MDA6MDBaJztcbiAgQElucHV0KClcbiAgcHVibGljIG1heD86IHN0cmluZyA9ICcyMTAwLTAxLTAxVDAwOjAwOjAwWic7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbmNsdWRlU2Vjb25kczogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsb2NhbFRpbWU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGdldCBjbGFzc05hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jaGVja0NsYXNzTmFtZSgpO1xuICB9XG5cbiAgQElucHV0KCkgbGFuZyA9IGxhbmd1YWdlRGV0ZWN0b3IoKTtcbiAgQElucHV0KCkgcHVibGljIGlubGluZUVycm9ycyA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgaW5wdXRJZDogc3RyaW5nO1xuICBASW5wdXQoJ2FyaWEtbGFiZWwnKSBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyByZWFkb25seTogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBkaXNhYmxlZCh2OiBzdHJpbmcgfCBib29sZWFuKSB7XG4gICAgdiA9IHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2ICE9PSAnZmFsc2UnID8gdHJ1ZSA6IHY7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2O1xuICB9XG4gIGdldCBkaXNhYmxlZCgpOiBzdHJpbmcgfCBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgcmVxdWlyZWQodjogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gdjtcbiAgfVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IHN0cmluZykge1xuICAgIGlmICh2ID09PSB0aGlzLl92YWx1ZSkge1xuICAgICAgcmV0dXJuOyAvLyBwcmV2ZW50IGV2ZW50cyB3aGVuIHRoZXJlIGlzIG5vIGNoYW5nZXNcbiAgICB9XG4gICAgY29uc3QgaW5pdGlhbEFuZEVtcHR5ID0gaXNJbml0aWFsQW5kRW1wdHkodGhpcy5fdmFsdWUsIHYpO1xuICAgIGNvbnN0IGRhdGV0aW1lID0gbmV3IERhdGUodik7XG4gICAgaWYgKCF2KSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLnNldERhdGVJbkNvbnRyb2wobnVsbCk7XG4gICAgICB0aGlzLnNldFRpbWVJbkNvbnRyb2wobnVsbCk7XG4gICAgfSBlbHNlIGlmICghaXNWYWxpZERhdGUoZGF0ZXRpbWUpKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHY7XG4gICAgICAvLyB3ZSBkb24ndCBzZXQgdmFsdWUgaW4gY29udHJvbCBpZiB0aGUgdmFsdWUgaXMgbm90IHZhbGlkXG4gICAgICAvLyBpZiB3ZSBkbywgdGhlIGNvbnRlbnQgb2YgdGhlIGNvbnRyb2wgY2hhbmdlcyBhbmQgY2FuIGVyYXNlIHdoYXQgdGhlIHVzZXIgaXMgdHlwaW5nXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gZGF0ZXRpbWUudG9JU09TdHJpbmcoKTsgLy8gWVlZWS1NTS1ERFRoaDptbTpzcy5TU1NaXG4gICAgICB0aGlzLnNldFZhbHVlSW5Db250cm9sKGRhdGV0aW1lKTtcbiAgICB9XG4gICAgdGhpcy5vbkNoYW5nZSh2KTtcbiAgICBpZiAoIWluaXRpYWxBbmRFbXB0eSkge1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHYpO1xuICAgIH1cbiAgfVxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGtleVByZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PigpO1xuXG4gIG9uQ2hhbmdlID0gKF92YWx1ZSk6IHZvaWQgPT4ge307XG4gIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBJbnRlcmZhY2UgaW1wbGVtZW50YXRpb25cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgfVxuXG4gIG1hcmtBc1RvdWNoZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRvdWNoZWQpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cbiAgLy8gRW5kIG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yIEludGVyZmFjZSBpbXBsZW1lbnRhdGlvblxuXG4gIHByaXZhdGUgc2V0RGF0ZUluQ29udHJvbChkYXRlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyB0aGlzLmRhdGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gZGF0ZTtcbiAgICB0aGlzLmRhdGVWYWx1ZSA9IGRhdGU7XG4gIH1cbiAgcHJpdmF0ZSBzZXRUaW1lSW5Db250cm9sKHRpbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIHRoaXMudGltZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aW1lO1xuICAgIHRoaXMudGltZVZhbHVlID0gdGltZTtcbiAgfVxuICBwcml2YXRlIHNldFZhbHVlSW5Db250cm9sKGRhdGV0aW1lOiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3Qgb2Zmc2V0RGF0ZXRpbWUgPSB0aGlzLmxvY2FsVGltZVxuICAgICAgPyBhZGRUaW1lem9uZU9mZnNldChkYXRldGltZSlcbiAgICAgIDogZGF0ZXRpbWU7XG4gICAgY29uc3Qgb2Zmc2V0RGF0ZXRpbWVTdHJpbmcgPSBvZmZzZXREYXRldGltZS50b0lTT1N0cmluZygpOyAvLyBZWVlZLU1NLUREVGhoOm1tOnNzLlNTU1pcbiAgICB0aGlzLnNldERhdGVJbkNvbnRyb2wob2Zmc2V0RGF0ZXRpbWVTdHJpbmcuc2xpY2UoMCwgMTApKTsgLy8gWVlZWS1NTS1ERFxuICAgIGlmICh0aGlzLmluY2x1ZGVTZWNvbmRzKSB7XG4gICAgICB0aGlzLnNldFRpbWVJbkNvbnRyb2wob2Zmc2V0RGF0ZXRpbWVTdHJpbmcuc2xpY2UoMTEsIDE5KSk7IC8vIGhoOm1tOnNzXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0VGltZUluQ29udHJvbChvZmZzZXREYXRldGltZVN0cmluZy5zbGljZSgxMSwgMTYpKTsgLy8gaGg6bW1cbiAgICB9XG4gIH1cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlSW5Db250cm9sKG51bGwpO1xuICAgIHRoaXMuc2V0VGltZUluQ29udHJvbChudWxsKTtcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgfVxuICBpc0NsZWFyYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaGFzVmFsdWUodGhpcy52YWx1ZSk7XG4gIH1cblxuICAvLyBWYWxpZGF0b3IgaW50ZXJmYWNlXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoKTogdm9pZCB7fVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgbGV0IHJlc3VsdDogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXF1aXJlZCAmJlxuICAgICAgIWhhc1ZhbHVlKHZhbHVlKSAmJlxuICAgICAgIWhhc1ZhbHVlKHRoaXMuZGF0ZVZhbHVlKSAmJlxuICAgICAgIWhhc1ZhbHVlKHRoaXMudGltZVZhbHVlKVxuICAgICkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHt9O1xuICAgICAgcmVzdWx0LnJlcXVpcmVkID0geyB2YWx1ZSwgcmVhc29uOiAnUmVxdWlyZWQgZmllbGQuJyB9O1xuICAgIH1cbiAgICBpZiAoIWhhc1ZhbHVlKHRoaXMuZGF0ZVZhbHVlKSAmJiBoYXNWYWx1ZSh0aGlzLnRpbWVWYWx1ZSkpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5leGlzdHNEYXRlID0ge1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgcmVhc29uOiAnRGF0ZSBub3Qgc3BlY2lmaWVkLidcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChoYXNWYWx1ZSh0aGlzLmRhdGVWYWx1ZSkgJiYgIWhhc1ZhbHVlKHRoaXMudGltZVZhbHVlKSkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHt9O1xuICAgICAgcmVzdWx0LmV4aXN0c1RpbWUgPSB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICByZWFzb246ICdUaW1lIG5vdCBzcGVjaWZpZWQuJ1xuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgaGFzVmFsdWUodGhpcy5taW4pICYmXG4gICAgICBoYXNWYWx1ZSh2YWx1ZSkgJiZcbiAgICAgIGhhc1ZhbHVlKHRoaXMuZGF0ZVZhbHVlKSAmJlxuICAgICAgaGFzVmFsdWUodGhpcy50aW1lVmFsdWUpICYmXG4gICAgICBTdHJpbmcodmFsdWUpLmxvY2FsZUNvbXBhcmUodGhpcy5taW4pID09PSAtMVxuICAgICkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHt9O1xuICAgICAgcmVzdWx0Lm1pbiA9IHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIG1pbjogdGhpcy5taW4sXG4gICAgICAgIHJlYXNvbjogYFZhbHVlIGlzIGxvd2VyIHRoYW4gbWluaW11bSB2YWx1ZTogJHt0aGlzLm1pbn0uYFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgaGFzVmFsdWUodGhpcy5tYXgpICYmXG4gICAgICBoYXNWYWx1ZSh2YWx1ZSkgJiZcbiAgICAgIGhhc1ZhbHVlKHRoaXMuZGF0ZVZhbHVlKSAmJlxuICAgICAgaGFzVmFsdWUodGhpcy50aW1lVmFsdWUpICYmXG4gICAgICBTdHJpbmcodmFsdWUpLmxvY2FsZUNvbXBhcmUodGhpcy5tYXgpICE9PSAtMVxuICAgICkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHt9O1xuICAgICAgcmVzdWx0Lm1heCA9IHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIG1heDogdGhpcy5tYXgsXG4gICAgICAgIHJlYXNvbjogYFZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGFuIG1heGltdW0gdmFsdWU6ICR7dGhpcy5tYXh9LmBcbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMubGFzdEVycm9ycyA9IHJlc3VsdDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIC8vIEVuZCBvZiBWYWxpZGF0b3IgaW50ZXJmYWNlXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dElkID0gdGhpcy5pbnB1dElkXG4gICAgICA/IHRoaXMuaW5wdXRJZFxuICAgICAgOiBgZGF0ZXRpbWUkJHtEYXRldGltZUNvbXBvbmVudC5pZENvdW50ZXIrK31gO1xuICAgIHRoaXMuc2V0UGF0dGVybnMoKTtcbiAgfVxuXG4gIG9uTG9zdEZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICB9XG4gIG9uS2V5UHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmtleVByZXNzLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25FdmVudERhdGV0aW1lKG5ld0RhdGU6IHN0cmluZywgbmV3VGltZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIW5ld0RhdGUgfHwgIW5ld1RpbWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGAke25ld0RhdGV9VCR7bmV3VGltZX1gO1xuICAgICAgY29uc3QgZGF0ZXRpbWUgPSBuZXcgRGF0ZShuZXdWYWx1ZSk7XG4gICAgICBpZiAoaXNWYWxpZERhdGUoZGF0ZXRpbWUpKSB7XG4gICAgICAgIGxldCBkYXRldGltZVN0cmluZztcbiAgICAgICAgaWYgKHRoaXMubG9jYWxUaW1lKSB7XG4gICAgICAgICAgZGF0ZXRpbWVTdHJpbmcgPSBkYXRldGltZS50b0lTT1N0cmluZygpOyAvLyBZWVlZLU1NLUREVGhoOm1tOnNzLlNTU1pcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRldGltZVN0cmluZyA9IGFkZFRpbWV6b25lT2Zmc2V0KGRhdGV0aW1lKS50b0lTT1N0cmluZygpOyAvLyBZWVlZLU1NLUREVGhoOm1tOnNzLlNTU1pcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbmNsdWRlU2Vjb25kcykge1xuICAgICAgICAgIHRoaXMudmFsdWUgPSBkYXRldGltZVN0cmluZy5zbGljZSgwLCAxOSkgKyAnWic7IC8vIFlZWVktTU0tRERUaGg6bW06c3NaXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGV0aW1lU3RyaW5nLnNsaWNlKDAsIDE2KSArICdaJzsgLy8gWVlZWS1NTS1ERFRoaDptbVpcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNoZWNrQ2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWRcbiAgICAgID8gdGhpcy5yZWFkb25seVxuICAgICAgICA/ICdkaXNhYmxlZCByZWFkb25seSdcbiAgICAgICAgOiAnZGlzYWJsZWQnXG4gICAgICA6IHRoaXMucmVhZG9ubHlcbiAgICAgID8gJ3JlYWRvbmx5J1xuICAgICAgOiAnJztcbiAgfVxuXG4gIHNldFBhdHRlcm5zKCk6IHZvaWQge1xuICAgIHRoaXMubWluID0gdGhpcy5taW4gfHwgJzE5MDAtMDEtMDEnO1xuICAgIHRoaXMubWF4ID0gdGhpcy5tYXggfHwgJzIxMDAtMDEtMDEnO1xuICB9XG59XG4iLCI8aW5wdXRcbiAgI2RhdGVJbnB1dFxuICBjbGFzcz1cInJvdW5kZWQtbGVmdCBwcmVmaXhcIlxuICBbbmdDbGFzc109XCJjbGFzc05hbWVcIlxuICB0eXBlPVwiZGF0ZVwiXG4gIFtpZF09XCJpbnB1dElkICsgJyRkYXRlJ1wiXG4gIFsobmdNb2RlbCldPVwiZGF0ZVZhbHVlXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA9PT0gdHJ1ZSA/ICd0cnVlJyA6IHVuZGVmaW5lZFwiXG4gIFthdHRyLnJlYWRvbmx5XT1cInJlYWRvbmx5ID09PSB0cnVlID8gJ3RydWUnIDogdW5kZWZpbmVkXCJcbiAgW3BsYWNlaG9sZGVyXT1cIlwiXG4gIChrZXl1cCk9XCJvbkV2ZW50RGF0ZXRpbWUoZGF0ZUlucHV0LnZhbHVlLCB0aW1lSW5wdXQudmFsdWUpXCJcbiAgKGNoYW5nZSk9XCJvbkV2ZW50RGF0ZXRpbWUoZGF0ZUlucHV0LnZhbHVlLCB0aW1lSW5wdXQudmFsdWUpXCJcbiAgKGtleXByZXNzKT1cIm9uS2V5UHJlc3MoJGV2ZW50KVwiXG4gIChibHVyKT1cIm9uTG9zdEZvY3VzKClcIlxuLz5cbjxpbnB1dFxuICAjdGltZUlucHV0XG4gIFtjbGFzc109XCIoZGlzYWJsZWQgfHwgcmVhZG9ubHkgfHwgIWlzQ2xlYXJhYmxlKCkpICYmIGxvY2FsVGltZSA/ICdyb3VuZGVkLXJpZ2h0JyA6ICcnXCJcbiAgW25nQ2xhc3NdPVwiY2xhc3NOYW1lXCJcbiAgdHlwZT1cInRpbWVcIlxuICBbaWRdPVwiaW5wdXRJZCArICckdGltZSdcIlxuICBbKG5nTW9kZWwpXT1cInRpbWVWYWx1ZVwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPT09IHRydWUgPyAndHJ1ZScgOiB1bmRlZmluZWRcIlxuICBbYXR0ci5yZWFkb25seV09XCJyZWFkb25seSA9PT0gdHJ1ZSA/ICd0cnVlJyA6IHVuZGVmaW5lZFwiXG4gIFtwbGFjZWhvbGRlcl09XCJcIlxuICBbc3RlcF09XCJpbmNsdWRlU2Vjb25kcyA/IDEgOiA2MFwiXG4gIChrZXl1cCk9XCJvbkV2ZW50RGF0ZXRpbWUoZGF0ZUlucHV0LnZhbHVlLCB0aW1lSW5wdXQudmFsdWUpXCJcbiAgKGNoYW5nZSk9XCJvbkV2ZW50RGF0ZXRpbWUoZGF0ZUlucHV0LnZhbHVlLCB0aW1lSW5wdXQudmFsdWUpXCJcbiAgKGtleXByZXNzKT1cIm9uS2V5UHJlc3MoJGV2ZW50KVwiXG4gIChibHVyKT1cIm9uTG9zdEZvY3VzKClcIlxuLz5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCIhbG9jYWxUaW1lXCJcbj5cbiAgPGRpdlxuICAgIFtjbGFzc109XCJkaXNhYmxlZCB8fCByZWFkb25seSB8fCAhaXNDbGVhcmFibGUoKSA/ICdyb3VuZGVkLXJpZ2h0IHBvc3RmaXggc3ltYm9sJyA6ICdwb3N0Zml4IHN5bWJvbCdcIlxuICAgIFtuZ0NsYXNzXT1cImNsYXNzTmFtZVwiXG4gID5cbiAgICA8c3Bhbj57eyBsb2NhbFRpbWUgPyAnJyA6ICdVVEMnIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPGJ1dHRvblxuICAjY2xlYXJCdXR0b25cbiAgKm5nSWY9XCIhZGlzYWJsZWQgJiYgIXJlYWRvbmx5ICYmIGlzQ2xlYXJhYmxlKClcIlxuICB0eXBlPVwiYnV0dG9uXCJcbiAgY2xhc3M9XCJyb3VuZGVkLXJpZ2h0IHBvc3RmaXggYm9yZGVyZWQgaWNvbi1jbGVhclwiXG4gIFtpZF09XCJpbnB1dElkICsgJyRjbGVhcidcIlxuICAoY2xpY2spPVwiY2xlYXIoKVwiXG4gIGFyaWEtbGFiZWw9XCJjbGVhclwiXG4+PC9idXR0b24+XG5cbjxkaXYgKm5nSWY9XCJpbmxpbmVFcnJvcnMgJiYgbGFzdEVycm9ycyAmJiAoZGlydHkgfHwgdG91Y2hlZClcIiBjbGFzcz1cImFsZXJ0XCI+XG4gIDxkaXYgKm5nSWY9XCJsYXN0RXJyb3JzLnJlcXVpcmVkXCI+XG4gICAge3sgdXNlckVycm9yc1tsYW5nXS5yZXF1aXJlZCB9fVxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImxhc3RFcnJvcnMubWluXCI+XG4gICAge3sgdXNlckVycm9yc1tsYW5nXS5taW4ucmVwbGFjZSgnJG1pbicsIGxhc3RFcnJvcnMubWluLm1pbikgfX1cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJsYXN0RXJyb3JzLm1heFwiPlxuICAgIHt7IHVzZXJFcnJvcnNbbGFuZ10ubWF4LnJlcGxhY2UoJyRtYXgnLCBsYXN0RXJyb3JzLm1heC5tYXgpIH19XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
|
-
import { debounceTime } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
|
-
/** Filter component to query for objects. */
|
|
8
|
-
export class FilterComponent {
|
|
9
|
-
/** Search value introduced by the user. */
|
|
10
|
-
get searchValue() {
|
|
11
|
-
return this._searchValue;
|
|
12
|
-
}
|
|
13
|
-
set searchValue(v) {
|
|
14
|
-
v = (v || '').toString();
|
|
15
|
-
if (v === this._searchValue) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
this.onChange(v);
|
|
19
|
-
this._searchValue = v;
|
|
20
|
-
}
|
|
21
|
-
/** Debounce time in milliseconds. (defaults to 300 ms) */
|
|
22
|
-
set debounce(val) {
|
|
23
|
-
this.debounceValue = val;
|
|
24
|
-
this.recreateObservable();
|
|
25
|
-
}
|
|
26
|
-
get debounce() {
|
|
27
|
-
return this.debounceValue;
|
|
28
|
-
}
|
|
29
|
-
constructor() {
|
|
30
|
-
this.touched = false;
|
|
31
|
-
this._searchValue = '';
|
|
32
|
-
this.disabled = false;
|
|
33
|
-
/** Placeholder default text. */
|
|
34
|
-
this.placeholder = '';
|
|
35
|
-
/** Search on type: (default true) Auto-search when user types in. */
|
|
36
|
-
this.searchOnType = true;
|
|
37
|
-
this.debounceValue = 300; // 300 ms
|
|
38
|
-
/** Search value changed by user. */
|
|
39
|
-
this.searchValueChange = new EventEmitter();
|
|
40
|
-
this.subject = new Subject();
|
|
41
|
-
// ControlValueAccessor Interface
|
|
42
|
-
this.onChange = (value) => { };
|
|
43
|
-
this.onTouched = () => { };
|
|
44
|
-
this.recreateObservable();
|
|
45
|
-
}
|
|
46
|
-
writeValue(value) {
|
|
47
|
-
this.searchValue = (value || '').toString();
|
|
48
|
-
}
|
|
49
|
-
registerOnChange(onChange) {
|
|
50
|
-
this.onChange = onChange;
|
|
51
|
-
}
|
|
52
|
-
registerOnTouched(onTouched) {
|
|
53
|
-
this.onTouched = onTouched;
|
|
54
|
-
}
|
|
55
|
-
markAsTouched() {
|
|
56
|
-
if (!this.touched) {
|
|
57
|
-
this.onTouched();
|
|
58
|
-
this.touched = true;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
setDisabledState(disabled) {
|
|
62
|
-
this.disabled = disabled;
|
|
63
|
-
}
|
|
64
|
-
// End ControlValueAccessor Interface
|
|
65
|
-
ngOnInit() {
|
|
66
|
-
this.inputId = this.inputId
|
|
67
|
-
? this.inputId
|
|
68
|
-
: `filter$${FilterComponent.idCounter++}`;
|
|
69
|
-
}
|
|
70
|
-
ngOnDestroy() {
|
|
71
|
-
this.freeSubscriptions();
|
|
72
|
-
}
|
|
73
|
-
clear() {
|
|
74
|
-
this.searchValue = '';
|
|
75
|
-
this.search();
|
|
76
|
-
}
|
|
77
|
-
search() {
|
|
78
|
-
this.searchValueChange.emit(this.searchValue);
|
|
79
|
-
}
|
|
80
|
-
keyup(event, newValue) {
|
|
81
|
-
this.markAsTouched();
|
|
82
|
-
this.searchValue = newValue;
|
|
83
|
-
if (event.key === 'Enter') {
|
|
84
|
-
this.searchNow(this.searchValue);
|
|
85
|
-
}
|
|
86
|
-
if (this.searchOnType) {
|
|
87
|
-
this.addEvent();
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
onInputValueChange(newValue) {
|
|
91
|
-
this.markAsTouched();
|
|
92
|
-
this.searchValue = newValue;
|
|
93
|
-
}
|
|
94
|
-
recreateObservable() {
|
|
95
|
-
this.searchValue$ = this.subject
|
|
96
|
-
.asObservable()
|
|
97
|
-
.pipe(debounceTime(this.debounce));
|
|
98
|
-
this.freeSubscriptions();
|
|
99
|
-
this.sub = this.searchValue$.subscribe((value) => {
|
|
100
|
-
this.searchValueChange.emit(value);
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
freeSubscriptions() {
|
|
104
|
-
if (this.sub) {
|
|
105
|
-
this.sub.unsubscribe();
|
|
106
|
-
this.sub = null;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
searchNow(value) {
|
|
110
|
-
this.searchValueChange.emit(value);
|
|
111
|
-
}
|
|
112
|
-
addEvent() {
|
|
113
|
-
this.subject.next(this.searchValue);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
FilterComponent.idCounter = 0;
|
|
117
|
-
FilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: FilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
118
|
-
FilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: FilterComponent, selector: "lux-filter", inputs: { disabled: "disabled", inputId: "inputId", placeholder: "placeholder", searchValue: "searchValue", searchOnType: "searchOnType", ariaLabel: ["aria-label", "ariaLabel"], debounce: "debounce" }, outputs: { searchValueChange: "searchValueChange" }, providers: [
|
|
119
|
-
{
|
|
120
|
-
provide: NG_VALUE_ACCESSOR,
|
|
121
|
-
multi: true,
|
|
122
|
-
useExisting: forwardRef(() => FilterComponent)
|
|
123
|
-
}
|
|
124
|
-
], ngImport: i0, template: "<div class=\"filter\">\n <input\n #i0\n type=\"text\"\n [attr.aria-label]=\"ariaLabel\"\n [placeholder]=\"placeholder\"\n [id]=\"inputId\"\n [disabled]=\"disabled\"\n [value]=\"searchValue\"\n (valueChange)=\"onInputValueChange(i0.value)\"\n (keyup)=\"keyup($event, i0.value)\"\n />\n\n <button\n [class.hide]=\"!searchValue\"\n aria-label=\"Clear\"\n class=\"clear-indicator icon icon-clear\"\n type=\"button\"\n (click)=\"clear()\"\n ></button>\n <i *ngIf=\"1 || searchOnType\" class=\"search-indicator icon icon-search\"></i>\n <button\n class=\"btn-search\"\n *ngIf=\"!searchOnType\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"search()\"\n >\n Search\n </button>\n</div>\n", styles: [":focus{z-index:1}input,select,textarea{border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057);margin:var(--lux-input-margin, 0rem);padding:var(--lux-input-padding, 0rem .5rem)}.alert{padding:.2rem 2rem;background:var(--lux-alert-background, #fe2e2e);color:var(--lux-alert-color, white);font-family:Consolas,monospace;width:45%;margin-right:1rem;display:inline-block}.symbol{display:inline-block;align-items:baseline;padding:0rem .5rem;margin-bottom:0;font-weight:400;color:var(--lux-symbol-color, default);text-align:center;white-space:nowrap;background:var(--lux-symbol-background, default);font-size:var(--lux-symbol-font-size, 1rem)}.bordered,.symbol{border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057)}.rounded,.rounded-right,.rounded-middle,.rounded-left{border-radius:var(--lux-border-radius, .25rem)}.rounded-left{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-middle{border-radius:0}.rounded-right{border-top-left-radius:0;border-bottom-left-radius:0}.prefix{border-right:none}.infix{border-left:none;border-right:none}.postfix{border-left:none;display:flex;align-items:center}.monospace{font-family:monospace}.default-font{color:var(--lux-font-color, black)}.filter{display:grid;grid-template-columns:auto 1.5rem 1.5rem .5rem auto}.filter input{grid-row:1;grid-column-start:1;grid-column-end:4}.filter .hide{visibility:collapse}.filter .clear-indicator{grid-row:1;grid-column:2;border:none}.filter .search-indicator{grid-row:1;grid-column:3}.filter .btn-search{grid-row:1;grid-column:5}.filter .icon-search{background:var(--lux-filter-icon-search, url(/assets/img/filter-search.png) no-repeat center);background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center;width:var(--lux-filter-icon-width, 1rem)}.filter .icon-clear{background:var(--lux-filter-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
125
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: FilterComponent, decorators: [{
|
|
126
|
-
type: Component,
|
|
127
|
-
args: [{ selector: 'lux-filter', providers: [
|
|
128
|
-
{
|
|
129
|
-
provide: NG_VALUE_ACCESSOR,
|
|
130
|
-
multi: true,
|
|
131
|
-
useExisting: forwardRef(() => FilterComponent)
|
|
132
|
-
}
|
|
133
|
-
], template: "<div class=\"filter\">\n <input\n #i0\n type=\"text\"\n [attr.aria-label]=\"ariaLabel\"\n [placeholder]=\"placeholder\"\n [id]=\"inputId\"\n [disabled]=\"disabled\"\n [value]=\"searchValue\"\n (valueChange)=\"onInputValueChange(i0.value)\"\n (keyup)=\"keyup($event, i0.value)\"\n />\n\n <button\n [class.hide]=\"!searchValue\"\n aria-label=\"Clear\"\n class=\"clear-indicator icon icon-clear\"\n type=\"button\"\n (click)=\"clear()\"\n ></button>\n <i *ngIf=\"1 || searchOnType\" class=\"search-indicator icon icon-search\"></i>\n <button\n class=\"btn-search\"\n *ngIf=\"!searchOnType\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"search()\"\n >\n Search\n </button>\n</div>\n", styles: [":focus{z-index:1}input,select,textarea{border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057);margin:var(--lux-input-margin, 0rem);padding:var(--lux-input-padding, 0rem .5rem)}.alert{padding:.2rem 2rem;background:var(--lux-alert-background, #fe2e2e);color:var(--lux-alert-color, white);font-family:Consolas,monospace;width:45%;margin-right:1rem;display:inline-block}.symbol{display:inline-block;align-items:baseline;padding:0rem .5rem;margin-bottom:0;font-weight:400;color:var(--lux-symbol-color, default);text-align:center;white-space:nowrap;background:var(--lux-symbol-background, default);font-size:var(--lux-symbol-font-size, 1rem)}.bordered,.symbol{border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057)}.rounded,.rounded-right,.rounded-middle,.rounded-left{border-radius:var(--lux-border-radius, .25rem)}.rounded-left{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-middle{border-radius:0}.rounded-right{border-top-left-radius:0;border-bottom-left-radius:0}.prefix{border-right:none}.infix{border-left:none;border-right:none}.postfix{border-left:none;display:flex;align-items:center}.monospace{font-family:monospace}.default-font{color:var(--lux-font-color, black)}.filter{display:grid;grid-template-columns:auto 1.5rem 1.5rem .5rem auto}.filter input{grid-row:1;grid-column-start:1;grid-column-end:4}.filter .hide{visibility:collapse}.filter .clear-indicator{grid-row:1;grid-column:2;border:none}.filter .search-indicator{grid-row:1;grid-column:3}.filter .btn-search{grid-row:1;grid-column:5}.filter .icon-search{background:var(--lux-filter-icon-search, url(/assets/img/filter-search.png) no-repeat center);background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center;width:var(--lux-filter-icon-width, 1rem)}.filter .icon-clear{background:var(--lux-filter-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center}\n"] }]
|
|
134
|
-
}], ctorParameters: function () { return []; }, propDecorators: { disabled: [{
|
|
135
|
-
type: Input
|
|
136
|
-
}], inputId: [{
|
|
137
|
-
type: Input
|
|
138
|
-
}], placeholder: [{
|
|
139
|
-
type: Input
|
|
140
|
-
}], searchValue: [{
|
|
141
|
-
type: Input
|
|
142
|
-
}], searchOnType: [{
|
|
143
|
-
type: Input
|
|
144
|
-
}], ariaLabel: [{
|
|
145
|
-
type: Input,
|
|
146
|
-
args: ['aria-label']
|
|
147
|
-
}], debounce: [{
|
|
148
|
-
type: Input
|
|
149
|
-
}], searchValueChange: [{
|
|
150
|
-
type: Output
|
|
151
|
-
}] } });
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2x1eC9zcmMvbGliL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUdaLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFOUMsNkNBQTZDO0FBYTdDLE1BQU0sT0FBTyxlQUFlO0lBYTFCLDJDQUEyQztJQUMzQyxJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLENBQVM7UUFDdkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDM0IsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBT0QsMERBQTBEO0lBQzFELElBQ0ksUUFBUSxDQUFDLEdBQVc7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUM7UUFDekIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQUks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O3NCQURkLEtBQUs7Z0JBYUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFZSxTQUFTO3NCQUE3QixLQUFLO3VCQUFDLFlBQVk7Z0JBS2YsUUFBUTtzQkFEWCxLQUFLO2dCQVVJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKiogRmlsdGVyIGNvbXBvbmVudCB0byBxdWVyeSBmb3Igb2JqZWN0cy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x1eC1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGaWx0ZXJDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveVxue1xuICBzdGF0aWMgaWRDb3VudGVyID0gMDtcblxuICBwcml2YXRlIHRvdWNoZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2VhcmNoVmFsdWUgPSAnJztcblxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICAvKiogaWQgZm9yIHRoZSBpbnB1dC4gSWYgbGVmdCBibGFuaywgaXQgaXMgYXV0b2dlbmVyYXRlZCAqL1xuICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmc7XG4gIC8qKiBQbGFjZWhvbGRlciBkZWZhdWx0IHRleHQuICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIC8qKiBTZWFyY2ggdmFsdWUgaW50cm9kdWNlZCBieSB0aGUgdXNlci4gKi9cbiAgQElucHV0KClcbiAgZ2V0IHNlYXJjaFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFZhbHVlO1xuICB9XG4gIHNldCBzZWFyY2hWYWx1ZSh2OiBzdHJpbmcpIHtcbiAgICB2ID0gKHYgfHwgJycpLnRvU3RyaW5nKCk7XG4gICAgaWYgKHYgPT09IHRoaXMuX3NlYXJjaFZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub25DaGFuZ2Uodik7XG4gICAgdGhpcy5fc2VhcmNoVmFsdWUgPSB2O1xuICB9XG4gIC8qKiBTZWFyY2ggb24gdHlwZTogKGRlZmF1bHQgdHJ1ZSkgQXV0by1zZWFyY2ggd2hlbiB1c2VyIHR5cGVzIGluLiAqL1xuICBASW5wdXQoKSBzZWFyY2hPblR5cGUgPSB0cnVlO1xuICAvKiogQ3VzdG9tIGFyaWEgbGFiZWwgaW4gY2FzZSBvZiBub3QgdXNpbmcgYSBsYWJlbCAqL1xuICBASW5wdXQoJ2FyaWEtbGFiZWwnKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICBwcml2YXRlIGRlYm91bmNlVmFsdWUgPSAzMDA7IC8vIDMwMCBtc1xuICAvKiogRGVib3VuY2UgdGltZSBpbiBtaWxsaXNlY29uZHMuIChkZWZhdWx0cyB0byAzMDAgbXMpICovXG4gIEBJbnB1dCgpXG4gIHNldCBkZWJvdW5jZSh2YWw6IG51bWJlcikge1xuICAgIHRoaXMuZGVib3VuY2VWYWx1ZSA9IHZhbDtcbiAgICB0aGlzLnJlY3JlYXRlT2JzZXJ2YWJsZSgpO1xuICB9XG4gIGdldCBkZWJvdW5jZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRlYm91bmNlVmFsdWU7XG4gIH1cblxuICAvKiogU2VhcmNoIHZhbHVlIGNoYW5nZWQgYnkgdXNlci4gKi9cbiAgQE91dHB1dCgpIHNlYXJjaFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgc2VhcmNoVmFsdWUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcHJpdmF0ZSBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIHN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucmVjcmVhdGVPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBJbnRlcmZhY2VcbiAgb25DaGFuZ2UgPSAodmFsdWUpOiB2b2lkID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICh2YWx1ZSB8fCAnJykudG9TdHJpbmcoKTtcbiAgfVxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gb25DaGFuZ2U7XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgfVxuICBtYXJrQXNUb3VjaGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50b3VjaGVkKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuICAvLyBFbmQgQ29udHJvbFZhbHVlQWNjZXNzb3IgSW50ZXJmYWNlXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dElkID0gdGhpcy5pbnB1dElkXG4gICAgICA/IHRoaXMuaW5wdXRJZFxuICAgICAgOiBgZmlsdGVyJCR7RmlsdGVyQ29tcG9uZW50LmlkQ291bnRlcisrfWA7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5mcmVlU3Vic2NyaXB0aW9ucygpO1xuICB9XG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcbiAgICB0aGlzLnNlYXJjaCgpO1xuICB9XG4gIHNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5zZWFyY2hWYWx1ZSk7XG4gIH1cbiAga2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIG5ld1ZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gbmV3VmFsdWU7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5zZWFyY2hOb3codGhpcy5zZWFyY2hWYWx1ZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlYXJjaE9uVHlwZSkge1xuICAgICAgdGhpcy5hZGRFdmVudCgpO1xuICAgIH1cbiAgfVxuICBvbklucHV0VmFsdWVDaGFuZ2UobmV3VmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSBuZXdWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjcmVhdGVPYnNlcnZhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVmFsdWUkID0gdGhpcy5zdWJqZWN0XG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSk7XG5cbiAgICB0aGlzLmZyZWVTdWJzY3JpcHRpb25zKCk7XG4gICAgdGhpcy5zdWIgPSB0aGlzLnNlYXJjaFZhbHVlJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaFZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgZnJlZVN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3ViKSB7XG4gICAgICB0aGlzLnN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zdWIgPSBudWxsO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIHNlYXJjaE5vdyh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIGFkZEV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViamVjdC5uZXh0KHRoaXMuc2VhcmNoVmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVyXCI+XG4gIDxpbnB1dFxuICAgICNpMFxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbaWRdPVwiaW5wdXRJZFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbdmFsdWVdPVwic2VhcmNoVmFsdWVcIlxuICAgICh2YWx1ZUNoYW5nZSk9XCJvbklucHV0VmFsdWVDaGFuZ2UoaTAudmFsdWUpXCJcbiAgICAoa2V5dXApPVwia2V5dXAoJGV2ZW50LCBpMC52YWx1ZSlcIlxuICAvPlxuXG4gIDxidXR0b25cbiAgICBbY2xhc3MuaGlkZV09XCIhc2VhcmNoVmFsdWVcIlxuICAgIGFyaWEtbGFiZWw9XCJDbGVhclwiXG4gICAgY2xhc3M9XCJjbGVhci1pbmRpY2F0b3IgaWNvbiBpY29uLWNsZWFyXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAoY2xpY2spPVwiY2xlYXIoKVwiXG4gID48L2J1dHRvbj5cbiAgPGkgKm5nSWY9XCIxIHx8IHNlYXJjaE9uVHlwZVwiIGNsYXNzPVwic2VhcmNoLWluZGljYXRvciBpY29uIGljb24tc2VhcmNoXCI+PC9pPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4tc2VhcmNoXCJcbiAgICAqbmdJZj1cIiFzZWFyY2hPblR5cGVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cInNlYXJjaCgpXCJcbiAgPlxuICAgIFNlYXJjaFxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
|