@metadev/lux 0.18.0 → 0.19.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.
Files changed (100) hide show
  1. package/esm2020/lib/autocomplete/autocomplete.component.mjs +479 -0
  2. package/esm2020/lib/autocomplete-list/autocomplete-list.component.mjs +254 -0
  3. package/esm2020/lib/breadcrumb/breadcrumb.component.mjs +75 -0
  4. package/esm2020/lib/checkbox/checkbox.component.mjs +154 -0
  5. package/{esm2015/lib/datasource.js → esm2020/lib/datasource.mjs} +0 -0
  6. package/esm2020/lib/datetime/datetime.component.mjs +306 -0
  7. package/esm2020/lib/filter/filter.component.mjs +152 -0
  8. package/esm2020/lib/geolocation/geolocation.component.mjs +407 -0
  9. package/{esm2015/lib/geolocation/geolocation.service.js → esm2020/lib/geolocation/geolocation.service.mjs} +7 -11
  10. package/esm2020/lib/geolocation/openlayer-loader.service.mjs +62 -0
  11. package/{esm2015/lib/helperFns.js → esm2020/lib/helperFns.mjs} +0 -0
  12. package/esm2020/lib/input/input.component.mjs +452 -0
  13. package/{esm2015/lib/input/regexp.service.js → esm2020/lib/input/regexp.service.mjs} +7 -6
  14. package/{esm2015/lib/lang.js → esm2020/lib/lang.mjs} +0 -0
  15. package/esm2020/lib/lux.module.mjs +130 -0
  16. package/{esm2015/lib/map/geopoint.js → esm2020/lib/map/geopoint.mjs} +0 -0
  17. package/esm2020/lib/map/map.component.mjs +265 -0
  18. package/esm2020/lib/modal/modal-backdrop.mjs +26 -0
  19. package/esm2020/lib/modal/modal-config.mjs +14 -0
  20. package/{esm2015/lib/modal/modal-dismiss-reasons.js → esm2020/lib/modal/modal-dismiss-reasons.mjs} +0 -0
  21. package/{esm2015/lib/modal/modal-ref.js → esm2020/lib/modal/modal-ref.mjs} +0 -0
  22. package/esm2020/lib/modal/modal-stack.mjs +179 -0
  23. package/esm2020/lib/modal/modal-window.mjs +119 -0
  24. package/esm2020/lib/modal/modal.service.mjs +26 -0
  25. package/{esm2015/lib/modal/util.js → esm2020/lib/modal/util.mjs} +0 -0
  26. package/esm2020/lib/pagination/pagination.component.mjs +137 -0
  27. package/{esm2015/lib/pagination/pagination.js → esm2020/lib/pagination/pagination.mjs} +0 -0
  28. package/esm2020/lib/radiogroup/radiogroup.component.mjs +130 -0
  29. package/esm2020/lib/select/select.component.mjs +149 -0
  30. package/{esm2015/lib/tooltip/placement.js → esm2020/lib/tooltip/placement.mjs} +0 -0
  31. package/{esm2015/lib/tooltip/tooltip-context.js → esm2020/lib/tooltip/tooltip-context.mjs} +0 -0
  32. package/esm2020/lib/tooltip/tooltip.component.mjs +23 -0
  33. package/esm2020/lib/tooltip/tooltip.directive.mjs +60 -0
  34. package/{esm2015/lib/tooltip/tooltip.service.js → esm2020/lib/tooltip/tooltip.service.mjs} +7 -9
  35. package/{esm2015/lib/tooltip/tooltop-content.js → esm2020/lib/tooltip/tooltop-content.mjs} +0 -0
  36. package/esm2020/lib/voice-recognition/voice-recognition.directive.mjs +73 -0
  37. package/{esm2015/lib/window/window.service.js → esm2020/lib/window/window.service.mjs} +0 -0
  38. package/esm2020/metadev-lux.mjs +5 -0
  39. package/esm2020/public-api.mjs +21 -0
  40. package/fesm2015/metadev-lux.mjs +4345 -0
  41. package/fesm2015/metadev-lux.mjs.map +1 -0
  42. package/fesm2020/metadev-lux.mjs +4343 -0
  43. package/fesm2020/metadev-lux.mjs.map +1 -0
  44. package/lib/autocomplete/autocomplete.component.d.ts +3 -0
  45. package/lib/autocomplete-list/autocomplete-list.component.d.ts +3 -0
  46. package/lib/breadcrumb/breadcrumb.component.d.ts +3 -0
  47. package/lib/checkbox/checkbox.component.d.ts +3 -0
  48. package/lib/datetime/datetime.component.d.ts +4 -0
  49. package/lib/filter/filter.component.d.ts +3 -0
  50. package/lib/geolocation/geolocation.component.d.ts +4 -0
  51. package/lib/geolocation/geolocation.service.d.ts +3 -0
  52. package/lib/geolocation/openlayer-loader.service.d.ts +3 -0
  53. package/lib/input/input.component.d.ts +3 -0
  54. package/lib/input/regexp.service.d.ts +3 -0
  55. package/lib/lux.module.d.ts +26 -0
  56. package/lib/map/map.component.d.ts +3 -0
  57. package/lib/modal/modal-backdrop.d.ts +3 -0
  58. package/lib/modal/modal-config.d.ts +3 -0
  59. package/lib/modal/modal-stack.d.ts +3 -0
  60. package/lib/modal/modal-window.d.ts +3 -0
  61. package/lib/modal/modal.service.d.ts +3 -0
  62. package/lib/pagination/pagination.component.d.ts +3 -0
  63. package/lib/radiogroup/radiogroup.component.d.ts +3 -0
  64. package/lib/select/select.component.d.ts +3 -0
  65. package/lib/tooltip/tooltip.component.d.ts +3 -0
  66. package/lib/tooltip/tooltip.directive.d.ts +3 -0
  67. package/lib/tooltip/tooltip.service.d.ts +3 -0
  68. package/lib/voice-recognition/voice-recognition.directive.d.ts +3 -0
  69. package/metadev-lux.d.ts +1 -16
  70. package/package.json +20 -8
  71. package/public-api.d.ts +12 -7
  72. package/bundles/metadev-lux.umd.js +0 -4715
  73. package/bundles/metadev-lux.umd.js.map +0 -1
  74. package/esm2015/lib/autocomplete/autocomplete.component.js +0 -455
  75. package/esm2015/lib/autocomplete-list/autocomplete-list.component.js +0 -230
  76. package/esm2015/lib/breadcrumb/breadcrumb.component.js +0 -77
  77. package/esm2015/lib/checkbox/checkbox.component.js +0 -142
  78. package/esm2015/lib/datetime/datetime.component.js +0 -275
  79. package/esm2015/lib/filter/filter.component.js +0 -140
  80. package/esm2015/lib/geolocation/geolocation.component.js +0 -371
  81. package/esm2015/lib/geolocation/openlayer-loader.service.js +0 -63
  82. package/esm2015/lib/input/input.component.js +0 -419
  83. package/esm2015/lib/lux.module.js +0 -83
  84. package/esm2015/lib/map/map.component.js +0 -261
  85. package/esm2015/lib/modal/modal-backdrop.js +0 -19
  86. package/esm2015/lib/modal/modal-config.js +0 -12
  87. package/esm2015/lib/modal/modal-stack.js +0 -182
  88. package/esm2015/lib/modal/modal-window.js +0 -92
  89. package/esm2015/lib/modal/modal.service.js +0 -28
  90. package/esm2015/lib/pagination/pagination.component.js +0 -134
  91. package/esm2015/lib/radiogroup/radiogroup.component.js +0 -114
  92. package/esm2015/lib/select/select.component.js +0 -131
  93. package/esm2015/lib/tooltip/tooltip.component.js +0 -19
  94. package/esm2015/lib/tooltip/tooltip.directive.js +0 -52
  95. package/esm2015/lib/voice-recognition/voice-recognition.directive.js +0 -76
  96. package/esm2015/metadev-lux.js +0 -21
  97. package/esm2015/public-api.js +0 -16
  98. package/fesm2015/metadev-lux.js +0 -4089
  99. package/fesm2015/metadev-lux.js.map +0 -1
  100. package/metadev-lux.metadata.json +0 -1
@@ -0,0 +1,306 @@
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
+ constructor() {
10
+ this.touched = false;
11
+ this.dirty = false;
12
+ this.lastErrors = null;
13
+ this.dateValue = undefined;
14
+ this.timeValue = undefined;
15
+ this.userErrors = {
16
+ en: {
17
+ required: 'Required field.',
18
+ min: 'Minimum value is $min.',
19
+ max: 'Maximum value is $max.'
20
+ },
21
+ es: {
22
+ required: 'El campo es obligatorio.',
23
+ min: 'El valor mínimo es $min.',
24
+ max: 'El valor máximo es $max.'
25
+ }
26
+ };
27
+ this.min = '1900-01-01T00:00:00Z';
28
+ this.max = '2100-01-01T00:00:00Z';
29
+ this.includeSeconds = true;
30
+ this.localTime = true;
31
+ this.lang = languageDetector();
32
+ this.inlineErrors = false;
33
+ this.readonly = null;
34
+ this.valueChange = new EventEmitter();
35
+ this.keyPress = new EventEmitter();
36
+ this.onChange = (_value) => { };
37
+ this.onTouched = () => { };
38
+ }
39
+ get className() {
40
+ return this.checkClassName();
41
+ }
42
+ set disabled(v) {
43
+ v = typeof v === 'string' && v !== 'false' ? true : v;
44
+ this._disabled = v;
45
+ }
46
+ get disabled() {
47
+ return this._disabled;
48
+ }
49
+ set required(v) {
50
+ this._required = v;
51
+ }
52
+ get required() {
53
+ return this._required;
54
+ }
55
+ set value(v) {
56
+ if (v === this._value) {
57
+ return; // prevent events when there is no changes
58
+ }
59
+ const initialAndEmpty = isInitialAndEmpty(this._value, v);
60
+ const datetime = new Date(v);
61
+ if (!v) {
62
+ this._value = null;
63
+ this.setDateInControl(null);
64
+ this.setTimeInControl(null);
65
+ }
66
+ else if (!isValidDate(datetime)) {
67
+ this._value = v;
68
+ // we don't set value in control if the value is not valid
69
+ // if we do, the content of the control changes and can erase what the user is typing
70
+ }
71
+ else {
72
+ this._value = datetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ
73
+ this.setValueInControl(datetime);
74
+ }
75
+ this.onChange(v);
76
+ if (!initialAndEmpty) {
77
+ this.valueChange.emit(v);
78
+ }
79
+ }
80
+ get value() {
81
+ return this._value;
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
+ const newValue = '' + newDate + ' ' + newTime;
203
+ if (!newValue) {
204
+ this.value = null;
205
+ }
206
+ else {
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: "13.1.1", ngImport: i0, type: DatetimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
244
+ DatetimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", 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:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057);margin:0rem;margin:var(--lux-input-margin, 0rem);padding:0rem .5rem;padding:var(--lux-input-padding, 0rem .5rem)}.alert{padding:.2rem 2rem;background:#fe2e2e;background:var(--lux-alert-background, #fe2e2e);color:#fff;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:default;color:var(--lux-symbol-color, default);text-align:center;white-space:nowrap;background:default;background:var(--lux-symbol-background, default);font-size:1rem;font-size:var(--lux-symbol-font-size, 1rem)}.bordered,.symbol{border:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057)}.rounded,.rounded-right,.rounded-middle,.rounded-left{border-radius:.25rem;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:#000;color:var(--lux-font-color, black)}:host{display:flex;align-items:stretch}.readonly{border:none}.readonly:focus{border:none;outline:none}.disabled{background-color:#f1f1f1;background-color:var(--lux-disabled-color, #f1f1f1);border-color:#6d6d6d;border-color:var(--lux-disabled-border-color, #6d6d6d)}.icon-clear{grid-row:1;grid-column:2;width:1.5rem;width:var(--lux-autocomplete-icon-width, 1.5rem);background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-autocomplete-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:.5rem .5rem;background-size:var(--lux-autocomplete-icon-bg-size, .5rem .5rem);z-index:1}\n"], directives: [{ 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]" }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", 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:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057);margin:0rem;margin:var(--lux-input-margin, 0rem);padding:0rem .5rem;padding:var(--lux-input-padding, 0rem .5rem)}.alert{padding:.2rem 2rem;background:#fe2e2e;background:var(--lux-alert-background, #fe2e2e);color:#fff;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:default;color:var(--lux-symbol-color, default);text-align:center;white-space:nowrap;background:default;background:var(--lux-symbol-background, default);font-size:1rem;font-size:var(--lux-symbol-font-size, 1rem)}.bordered,.symbol{border:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057)}.rounded,.rounded-right,.rounded-middle,.rounded-left{border-radius:.25rem;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:#000;color:var(--lux-font-color, black)}:host{display:flex;align-items:stretch}.readonly{border:none}.readonly:focus{border:none;outline:none}.disabled{background-color:#f1f1f1;background-color:var(--lux-disabled-color, #f1f1f1);border-color:#6d6d6d;border-color:var(--lux-disabled-border-color, #6d6d6d)}.icon-clear{grid-row:1;grid-column:2;width:1.5rem;width:var(--lux-autocomplete-icon-width, 1.5rem);background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-autocomplete-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:.5rem .5rem;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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvZGF0ZXRpbWUvZGF0ZXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvZGF0ZXRpbWUvZGF0ZXRpbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsaUJBQWlCLEVBS2pCLGFBQWEsRUFDZCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLGlCQUFpQixFQUNqQixXQUFXLEVBQ1osTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDOzs7O0FBa0IzQyxNQUFNLE9BQU8saUJBQWlCO0lBc0c1QjtRQTlGQSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxlQUFVLEdBQTRCLElBQUksQ0FBQztRQU1wQyxjQUFTLEdBQVksU0FBUyxDQUFDO1FBQy9CLGNBQVMsR0FBWSxTQUFTLENBQUM7UUFFL0IsZUFBVSxHQUFHO1lBQ2xCLEVBQUUsRUFBRTtnQkFDRixRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixHQUFHLEVBQUUsd0JBQXdCO2dCQUM3QixHQUFHLEVBQUUsd0JBQXdCO2FBQzlCO1lBQ0QsRUFBRSxFQUFFO2dCQUNGLFFBQVEsRUFBRSwwQkFBMEI7Z0JBQ3BDLEdBQUcsRUFBRSwwQkFBMEI7Z0JBQy9CLEdBQUcsRUFBRSwwQkFBMEI7YUFDaEM7U0FDRixDQUFDO1FBR0ssUUFBRyxHQUFZ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QUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQzt5QkFDakQ7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDO3lCQUNqRDtxQkFDRjswRUFPeUMsU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNFLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkEyQmpDLEdBQUc7c0JBRFQsS0FBSztnQkFHQyxHQUFHO3NCQURULEtBQUs7Z0JBR0MsY0FBYztzQkFEcEIsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBT0csSUFBSTtzQkFBWixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDc0IsU0FBUztzQkFBcEMsS0FBSzt1QkFBQyxZQUFZO2dCQUNILFFBQVE7c0JBQXZCLEtBQUs7Z0JBR0YsUUFBUTtzQkFEWCxLQUFLO2dCQVVGLFFBQVE7c0JBRFgsS0FBSztnQkFTRixLQUFLO3NCQURSLEtBQUs7Z0JBNEJJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZCxcbiAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgQWJzdHJhY3RDb250cm9sLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIE5HX1ZBTElEQVRPUlNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgYWRkVGltZXpvbmVPZmZzZXQsXG4gIGhhc1ZhbHVlLFxuICBpc0luaXRpYWxBbmRFbXB0eSxcbiAgaXNWYWxpZERhdGVcbn0gZnJvbSAnLi4vaGVscGVyRm5zJztcbmltcG9ydCB7IGxhbmd1YWdlRGV0ZWN0b3IgfSBmcm9tICcuLi9sYW5nJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x1eC1kYXRldGltZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRldGltZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGV0aW1lLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRldGltZUNvbXBvbmVudClcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGV0aW1lQ29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRldGltZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvclxue1xuICBzdGF0aWMgaWRDb3VudGVyID0gMDtcblxuICBAVmlld0NoaWxkKCdkYXRlSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkYXRlSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3RpbWVJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIHRpbWVJbnB1dDogRWxlbWVudFJlZjtcblxuICB0b3VjaGVkID0gZmFsc2U7XG4gIGRpcnR5ID0gZmFsc2U7XG4gIGxhc3RFcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9kaXNhYmxlZDogc3RyaW5nIHwgYm9vbGVhbjtcbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmc7XG5cbiAgcHVibGljIGRhdGVWYWx1ZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcbiAgcHVibGljIHRpbWVWYWx1ZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgdXNlckVycm9ycyA9IHtcbiAgICBlbjoge1xuICAgICAgcmVxdWlyZWQ6ICdSZXF1aXJlZCBmaWVsZC4nLFxuICAgICAgbWluOiAnTWluaW11bSB2YWx1ZSBpcyAkbWluLicsXG4gICAgICBtYXg6ICdNYXhpbXVtIHZhbHVlIGlzICRtYXguJ1xuICAgIH0sXG4gICAgZXM6IHtcbiAgICAgIHJlcXVpcmVkOiAnRWwgY2FtcG8gZXMgb2JsaWdhdG9yaW8uJyxcbiAgICAgIG1pbjogJ0VsIHZhbG9yIG3DrW5pbW8gZXMgJG1pbi4nLFxuICAgICAgbWF4OiAnRWwgdmFsb3IgbcOheGltbyBlcyAkbWF4LidcbiAgICB9XG4gIH07XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1pbj86IHN0cmluZyA9ICcxOTAwLTAxLTAxVDAwOjAwOjAwWic7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXg/OiBzdHJpbmcgPSAnMjEwMC0wMS0wMVQwMDowMDowMFonO1xuICBASW5wdXQoKVxuICBwdWJsaWMgaW5jbHVkZVNlY29uZHM6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgbG9jYWxUaW1lOiBib29sZWFuID0gdHJ1ZTtcblxuICBnZXQgY2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tDbGFzc05hbWUoKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGxhbmcgPSBsYW5ndWFnZURldGVjdG9yKCk7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbmxpbmVFcnJvcnMgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGlucHV0SWQ6IHN0cmluZztcbiAgQElucHV0KCdhcmlhLWxhYmVsJykgcHVibGljIGFyaWFMYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHk6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQodjogc3RyaW5nIHwgYm9vbGVhbikge1xuICAgIHYgPSB0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgdiAhPT0gJ2ZhbHNlJyA/IHRydWUgOiB2O1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdjtcbiAgfVxuICBnZXQgZGlzYWJsZWQoKTogc3RyaW5nIHwgYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHJlcXVpcmVkKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IHY7XG4gIH1cbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2OiBzdHJpbmcpIHtcbiAgICBpZiAodiA9PT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHJldHVybjsgLy8gcHJldmVudCBldmVudHMgd2hlbiB0aGVyZSBpcyBubyBjaGFuZ2VzXG4gICAgfVxuICAgIGNvbnN0IGluaXRpYWxBbmRFbXB0eSA9IGlzSW5pdGlhbEFuZEVtcHR5KHRoaXMuX3ZhbHVlLCB2KTtcbiAgICBjb25zdCBkYXRldGltZSA9IG5ldyBEYXRlKHYpO1xuICAgIGlmICghdikge1xuICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5zZXREYXRlSW5Db250cm9sKG51bGwpO1xuICAgICAgdGhpcy5zZXRUaW1lSW5Db250cm9sKG51bGwpO1xuICAgIH0gZWxzZSBpZiAoIWlzVmFsaWREYXRlKGRhdGV0aW1lKSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgICAgLy8gd2UgZG9uJ3Qgc2V0IHZhbHVlIGluIGNvbnRyb2wgaWYgdGhlIHZhbHVlIGlzIG5vdCB2YWxpZFxuICAgICAgLy8gaWYgd2UgZG8sIHRoZSBjb250ZW50IG9mIHRoZSBjb250cm9sIGNoYW5nZXMgYW5kIGNhbiBlcmFzZSB3aGF0IHRoZSB1c2VyIGlzIHR5cGluZ1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IGRhdGV0aW1lLnRvSVNPU3RyaW5nKCk7IC8vIFlZWVktTU0tRERUaGg6bW06c3MuU1NTWlxuICAgICAgdGhpcy5zZXRWYWx1ZUluQ29udHJvbChkYXRldGltZSk7XG4gICAgfVxuICAgIHRoaXMub25DaGFuZ2Uodik7XG4gICAgaWYgKCFpbml0aWFsQW5kRW1wdHkpIHtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2KTtcbiAgICB9XG4gIH1cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBrZXlQcmVzcyA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcblxuICBvbkNoYW5nZSA9IChfdmFsdWUpOiB2b2lkID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gIH1cblxuICBtYXJrQXNUb3VjaGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50b3VjaGVkKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG4gIC8vIEVuZCBvZiBDb250cm9sVmFsdWVBY2Nlc3NvciBJbnRlcmZhY2UgaW1wbGVtZW50YXRpb25cblxuICBwcml2YXRlIHNldERhdGVJbkNvbnRyb2woZGF0ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gdGhpcy5kYXRlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IGRhdGU7XG4gICAgdGhpcy5kYXRlVmFsdWUgPSBkYXRlO1xuICB9XG4gIHByaXZhdGUgc2V0VGltZUluQ29udHJvbCh0aW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyB0aGlzLnRpbWVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGltZTtcbiAgICB0aGlzLnRpbWVWYWx1ZSA9IHRpbWU7XG4gIH1cbiAgcHJpdmF0ZSBzZXRWYWx1ZUluQ29udHJvbChkYXRldGltZTogRGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IG9mZnNldERhdGV0aW1lID0gdGhpcy5sb2NhbFRpbWVcbiAgICAgID8gYWRkVGltZXpvbmVPZmZzZXQoZGF0ZXRpbWUpXG4gICAgICA6IGRhdGV0aW1lO1xuICAgIGNvbnN0IG9mZnNldERhdGV0aW1lU3RyaW5nID0gb2Zmc2V0RGF0ZXRpbWUudG9JU09TdHJpbmcoKTsgLy8gWVlZWS1NTS1ERFRoaDptbTpzcy5TU1NaXG4gICAgdGhpcy5zZXREYXRlSW5Db250cm9sKG9mZnNldERhdGV0aW1lU3RyaW5nLnNsaWNlKDAsIDEwKSk7IC8vIFlZWVktTU0tRERcbiAgICBpZiAodGhpcy5pbmNsdWRlU2Vjb25kcykge1xuICAgICAgdGhpcy5zZXRUaW1lSW5Db250cm9sKG9mZnNldERhdGV0aW1lU3RyaW5nLnNsaWNlKDExLCAxOSkpOyAvLyBoaDptbTpzc1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFRpbWVJbkNvbnRyb2wob2Zmc2V0RGF0ZXRpbWVTdHJpbmcuc2xpY2UoMTEsIDE2KSk7IC8vIGhoOm1tXG4gICAgfVxuICB9XG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0ZUluQ29udHJvbChudWxsKTtcbiAgICB0aGlzLnNldFRpbWVJbkNvbnRyb2wobnVsbCk7XG4gICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gIH1cbiAgaXNDbGVhcmFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGhhc1ZhbHVlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgLy8gVmFsaWRhdG9yIGludGVyZmFjZVxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKCk6IHZvaWQge31cblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGxldCByZXN1bHQ6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICAgIGlmIChcbiAgICAgIHRoaXMucmVxdWlyZWQgJiZcbiAgICAgICFoYXNWYWx1ZSh2YWx1ZSkgJiZcbiAgICAgICFoYXNWYWx1ZSh0aGlzLmRhdGVWYWx1ZSkgJiZcbiAgICAgICFoYXNWYWx1ZSh0aGlzLnRpbWVWYWx1ZSlcbiAgICApIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5yZXF1aXJlZCA9IHsgdmFsdWUsIHJlYXNvbjogJ1JlcXVpcmVkIGZpZWxkLicgfTtcbiAgICB9XG4gICAgaWYgKCFoYXNWYWx1ZSh0aGlzLmRhdGVWYWx1ZSkgJiYgaGFzVmFsdWUodGhpcy50aW1lVmFsdWUpKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICByZXN1bHQuZXhpc3RzRGF0ZSA9IHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHJlYXNvbjogJ0RhdGUgbm90IHNwZWNpZmllZC4nXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoaGFzVmFsdWUodGhpcy5kYXRlVmFsdWUpICYmICFoYXNWYWx1ZSh0aGlzLnRpbWVWYWx1ZSkpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5leGlzdHNUaW1lID0ge1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgcmVhc29uOiAnVGltZSBub3Qgc3BlY2lmaWVkLidcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGhhc1ZhbHVlKHRoaXMubWluKSAmJlxuICAgICAgaGFzVmFsdWUodmFsdWUpICYmXG4gICAgICBoYXNWYWx1ZSh0aGlzLmRhdGVWYWx1ZSkgJiZcbiAgICAgIGhhc1ZhbHVlKHRoaXMudGltZVZhbHVlKSAmJlxuICAgICAgU3RyaW5nKHZhbHVlKS5sb2NhbGVDb21wYXJlKHRoaXMubWluKSA9PT0gLTFcbiAgICApIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5taW4gPSB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBtaW46IHRoaXMubWluLFxuICAgICAgICByZWFzb246IGBWYWx1ZSBpcyBsb3dlciB0aGFuIG1pbmltdW0gdmFsdWU6ICR7dGhpcy5taW59LmBcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGhhc1ZhbHVlKHRoaXMubWF4KSAmJlxuICAgICAgaGFzVmFsdWUodmFsdWUpICYmXG4gICAgICBoYXNWYWx1ZSh0aGlzLmRhdGVWYWx1ZSkgJiZcbiAgICAgIGhhc1ZhbHVlKHRoaXMudGltZVZhbHVlKSAmJlxuICAgICAgU3RyaW5nKHZhbHVlKS5sb2NhbGVDb21wYXJlKHRoaXMubWF4KSAhPT0gLTFcbiAgICApIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5tYXggPSB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBtYXg6IHRoaXMubWF4LFxuICAgICAgICByZWFzb246IGBWYWx1ZSBpcyBncmVhdGVyIHRoYW4gdGhhbiBtYXhpbXVtIHZhbHVlOiAke3RoaXMubWF4fS5gXG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLmxhc3RFcnJvcnMgPSByZXN1bHQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvLyBFbmQgb2YgVmFsaWRhdG9yIGludGVyZmFjZVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRJZCA9IHRoaXMuaW5wdXRJZFxuICAgICAgPyB0aGlzLmlucHV0SWRcbiAgICAgIDogYGRhdGV0aW1lJCR7RGF0ZXRpbWVDb21wb25lbnQuaWRDb3VudGVyKyt9YDtcbiAgICB0aGlzLnNldFBhdHRlcm5zKCk7XG4gIH1cblxuICBvbkxvc3RGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICBvbktleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5rZXlQcmVzcy5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uRXZlbnREYXRldGltZShuZXdEYXRlOiBzdHJpbmcsIG5ld1RpbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV3VmFsdWUgPSAnJyArIG5ld0RhdGUgKyAnICcgKyBuZXdUaW1lO1xuICAgIGlmICghbmV3VmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkYXRldGltZSA9IG5ldyBEYXRlKG5ld1ZhbHVlKTtcbiAgICAgIGlmIChpc1ZhbGlkRGF0ZShkYXRldGltZSkpIHtcbiAgICAgICAgbGV0IGRhdGV0aW1lU3RyaW5nO1xuICAgICAgICBpZiAodGhpcy5sb2NhbFRpbWUpIHtcbiAgICAgICAgICBkYXRldGltZVN0cmluZyA9IGRhdGV0aW1lLnRvSVNPU3RyaW5nKCk7IC8vIFlZWVktTU0tRERUaGg6bW06c3MuU1NTWlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGV0aW1lU3RyaW5nID0gYWRkVGltZXpvbmVPZmZzZXQoZGF0ZXRpbWUpLnRvSVNPU3RyaW5nKCk7IC8vIFlZWVktTU0tRERUaGg6bW06c3MuU1NTWlxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmluY2x1ZGVTZWNvbmRzKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGV0aW1lU3RyaW5nLnNsaWNlKDAsIDE5KSArICdaJzsgLy8gWVlZWS1NTS1ERFRoaDptbTpzc1pcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZhbHVlID0gZGF0ZXRpbWVTdHJpbmcuc2xpY2UoMCwgMTYpICsgJ1onOyAvLyBZWVlZLU1NLUREVGhoOm1tWlxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hlY2tDbGFzc05hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZFxuICAgICAgPyB0aGlzLnJlYWRvbmx5XG4gICAgICAgID8gJ2Rpc2FibGVkIHJlYWRvbmx5J1xuICAgICAgICA6ICdkaXNhYmxlZCdcbiAgICAgIDogdGhpcy5yZWFkb25seVxuICAgICAgPyAncmVhZG9ubHknXG4gICAgICA6ICcnO1xuICB9XG5cbiAgc2V0UGF0dGVybnMoKTogdm9pZCB7XG4gICAgdGhpcy5taW4gPSB0aGlzLm1pbiB8fCAnMTkwMC0wMS0wMSc7XG4gICAgdGhpcy5tYXggPSB0aGlzLm1heCB8fCAnMjEwMC0wMS0wMSc7XG4gIH1cbn1cbiIsIjxpbnB1dFxuICAjZGF0ZUlucHV0XG4gIGNsYXNzPVwicm91bmRlZC1sZWZ0IHByZWZpeFwiXG4gIFtuZ0NsYXNzXT1cImNsYXNzTmFtZVwiXG4gIHR5cGU9XCJkYXRlXCJcbiAgW2lkXT1cImlucHV0SWQgKyAnJGRhdGUnXCJcbiAgWyhuZ01vZGVsKV09XCJkYXRlVmFsdWVcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID09PSB0cnVlID8gJ3RydWUnIDogdW5kZWZpbmVkXCJcbiAgW2F0dHIucmVhZG9ubHldPVwicmVhZG9ubHkgPT09IHRydWUgPyAndHJ1ZScgOiB1bmRlZmluZWRcIlxuICBbcGxhY2Vob2xkZXJdPVwiXCJcbiAgKGtleXVwKT1cIm9uRXZlbnREYXRldGltZShkYXRlSW5wdXQudmFsdWUsIHRpbWVJbnB1dC52YWx1ZSlcIlxuICAoY2hhbmdlKT1cIm9uRXZlbnREYXRldGltZShkYXRlSW5wdXQudmFsdWUsIHRpbWVJbnB1dC52YWx1ZSlcIlxuICAoa2V5cHJlc3MpPVwib25LZXlQcmVzcygkZXZlbnQpXCJcbiAgKGJsdXIpPVwib25Mb3N0Rm9jdXMoKVwiXG4vPlxuPGlucHV0XG4gICN0aW1lSW5wdXRcbiAgW2NsYXNzXT1cIihkaXNhYmxlZCB8fCByZWFkb25seSB8fCAhaXNDbGVhcmFibGUoKSkgJiYgbG9jYWxUaW1lID8gJ3JvdW5kZWQtcmlnaHQnIDogJydcIlxuICBbbmdDbGFzc109XCJjbGFzc05hbWVcIlxuICB0eXBlPVwidGltZVwiXG4gIFtpZF09XCJpbnB1dElkICsgJyR0aW1lJ1wiXG4gIFsobmdNb2RlbCldPVwidGltZVZhbHVlXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA9PT0gdHJ1ZSA/ICd0cnVlJyA6IHVuZGVmaW5lZFwiXG4gIFthdHRyLnJlYWRvbmx5XT1cInJlYWRvbmx5ID09PSB0cnVlID8gJ3RydWUnIDogdW5kZWZpbmVkXCJcbiAgW3BsYWNlaG9sZGVyXT1cIlwiXG4gIFtzdGVwXT1cImluY2x1ZGVTZWNvbmRzID8gMSA6IDYwXCJcbiAgKGtleXVwKT1cIm9uRXZlbnREYXRldGltZShkYXRlSW5wdXQudmFsdWUsIHRpbWVJbnB1dC52YWx1ZSlcIlxuICAoY2hhbmdlKT1cIm9uRXZlbnREYXRldGltZShkYXRlSW5wdXQudmFsdWUsIHRpbWVJbnB1dC52YWx1ZSlcIlxuICAoa2V5cHJlc3MpPVwib25LZXlQcmVzcygkZXZlbnQpXCJcbiAgKGJsdXIpPVwib25Mb3N0Rm9jdXMoKVwiXG4vPlxuPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIiFsb2NhbFRpbWVcIlxuPlxuICA8ZGl2XG4gICAgW2NsYXNzXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5IHx8ICFpc0NsZWFyYWJsZSgpID8gJ3JvdW5kZWQtcmlnaHQgcG9zdGZpeCBzeW1ib2wnIDogJ3Bvc3RmaXggc3ltYm9sJ1wiXG4gICAgW25nQ2xhc3NdPVwiY2xhc3NOYW1lXCJcbiAgPlxuICAgIDxzcGFuPnt7IGxvY2FsVGltZSA/ICcnIDogJ1VUQycgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48YnV0dG9uXG4gICNjbGVhckJ1dHRvblxuICAqbmdJZj1cIiFkaXNhYmxlZCAmJiAhcmVhZG9ubHkgJiYgaXNDbGVhcmFibGUoKVwiXG4gIHR5cGU9XCJidXR0b25cIlxuICBjbGFzcz1cInJvdW5kZWQtcmlnaHQgcG9zdGZpeCBib3JkZXJlZCBpY29uLWNsZWFyXCJcbiAgW2lkXT1cImlucHV0SWQgKyAnJGNsZWFyJ1wiXG4gIChjbGljayk9XCJjbGVhcigpXCJcbiAgYXJpYS1sYWJlbD1cImNsZWFyXCJcbj48L2J1dHRvbj5cblxuPGRpdiAqbmdJZj1cImlubGluZUVycm9ycyAmJiBsYXN0RXJyb3JzICYmIChkaXJ0eSB8fCB0b3VjaGVkKVwiIGNsYXNzPVwiYWxlcnRcIj5cbiAgPGRpdiAqbmdJZj1cImxhc3RFcnJvcnMucmVxdWlyZWRcIj5cbiAgICB7eyB1c2VyRXJyb3JzW2xhbmddLnJlcXVpcmVkIH19XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwibGFzdEVycm9ycy5taW5cIj5cbiAgICB7eyB1c2VyRXJyb3JzW2xhbmddLm1pbi5yZXBsYWNlKCckbWluJywgbGFzdEVycm9ycy5taW4ubWluKSB9fVxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImxhc3RFcnJvcnMubWF4XCI+XG4gICAge3sgdXNlckVycm9yc1tsYW5nXS5tYXgucmVwbGFjZSgnJG1heCcsIGxhc3RFcnJvcnMubWF4Lm1heCkgfX1cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,152 @@
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
+ constructor() {
10
+ this.touched = false;
11
+ this._searchValue = '';
12
+ this.disabled = false;
13
+ /** Placeholder default text. */
14
+ this.placeholder = '';
15
+ /** Search on type: (default true) Auto-search when user types in. */
16
+ this.searchOnType = true;
17
+ this.debounceValue = 300; // 300 ms
18
+ /** Search value changed by user. */
19
+ this.searchValueChange = new EventEmitter();
20
+ this.subject = new Subject();
21
+ // ControlValueAccessor Interface
22
+ this.onChange = (value) => { };
23
+ this.onTouched = () => { };
24
+ this.recreateObservable();
25
+ }
26
+ /** Search value introduced by the user. */
27
+ get searchValue() {
28
+ return this._searchValue;
29
+ }
30
+ set searchValue(v) {
31
+ v = (v || '').toString();
32
+ if (v === this._searchValue) {
33
+ return;
34
+ }
35
+ this.onChange(v);
36
+ this._searchValue = v;
37
+ }
38
+ /** Debounce time in milliseconds. (defaults to 300 ms) */
39
+ set debounce(val) {
40
+ this.debounceValue = val;
41
+ this.recreateObservable();
42
+ }
43
+ get debounce() {
44
+ return this.debounceValue;
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: "13.1.1", ngImport: i0, type: FilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
118
+ FilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", 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:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057);margin:0rem;margin:var(--lux-input-margin, 0rem);padding:0rem .5rem;padding:var(--lux-input-padding, 0rem .5rem)}.alert{padding:.2rem 2rem;background:#fe2e2e;background:var(--lux-alert-background, #fe2e2e);color:#fff;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:default;color:var(--lux-symbol-color, default);text-align:center;white-space:nowrap;background:default;background:var(--lux-symbol-background, default);font-size:1rem;font-size:var(--lux-symbol-font-size, 1rem)}.bordered,.symbol{border:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057)}.rounded,.rounded-right,.rounded-middle,.rounded-left{border-radius:.25rem;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:#000;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:url(/assets/img/filter-search.png) no-repeat center;background:var(--lux-filter-icon-search, url(/assets/img/filter-search.png) no-repeat center);background-size:1rem;background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center;width:1rem;width:var(--lux-filter-icon-width, 1rem)}.filter .icon-clear{background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-filter-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:1rem;background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", 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:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057);margin:0rem;margin:var(--lux-input-margin, 0rem);padding:0rem .5rem;padding:var(--lux-input-padding, 0rem .5rem)}.alert{padding:.2rem 2rem;background:#fe2e2e;background:var(--lux-alert-background, #fe2e2e);color:#fff;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:default;color:var(--lux-symbol-color, default);text-align:center;white-space:nowrap;background:default;background:var(--lux-symbol-background, default);font-size:1rem;font-size:var(--lux-symbol-font-size, 1rem)}.bordered,.symbol{border:1px solid #495057;border:var(--lux-input-border, 1px solid) var(--lux-input-border-color, #495057)}.rounded,.rounded-right,.rounded-middle,.rounded-left{border-radius:.25rem;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:#000;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:url(/assets/img/filter-search.png) no-repeat center;background:var(--lux-filter-icon-search, url(/assets/img/filter-search.png) no-repeat center);background-size:1rem;background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center;width:1rem;width:var(--lux-filter-icon-width, 1rem)}.filter .icon-clear{background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-filter-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:1rem;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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2x1eC9zcmMvbGliL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUdaLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFOUMsNkNBQTZDO0FBYTdDLE1BQU0sT0FBTyxlQUFlO0lBa0QxQjtRQTdDUSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBRWpCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHMUIsZ0NBQWdDO1FBQ3ZCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBYzFCLHFFQUFxRTtRQUM1RCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUlyQixrQkFBYSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVM7UUFXdEMsb0NBQW9DO1FBQzFCLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFJakQsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFPeEMsaUNBQWlDO1FBQ2pDLGFBQVEsR0FBRyxDQUFDLEtBQUssRUFBUSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQy9CLGNBQVMsR0FBRyxHQUFTLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFMekIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7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QUFXO3NCQURkLEtBQUs7Z0JBYUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFZSxTQUFTO3NCQUE3QixLQUFLO3VCQUFDLFlBQVk7Z0JBS2YsUUFBUTtzQkFEWCxLQUFLO2dCQVVJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKiogRmlsdGVyIGNvbXBvbmVudCB0byBxdWVyeSBmb3Igb2JqZWN0cy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x1eC1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGaWx0ZXJDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveVxue1xuICBzdGF0aWMgaWRDb3VudGVyID0gMDtcblxuICBwcml2YXRlIHRvdWNoZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2VhcmNoVmFsdWUgPSAnJztcblxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICAvKiogaWQgZm9yIHRoZSBpbnB1dC4gSWYgbGVmdCBibGFuaywgaXQgaXMgYXV0b2dlbmVyYXRlZCAqL1xuICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmc7XG4gIC8qKiBQbGFjZWhvbGRlciBkZWZhdWx0IHRleHQuICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIC8qKiBTZWFyY2ggdmFsdWUgaW50cm9kdWNlZCBieSB0aGUgdXNlci4gKi9cbiAgQElucHV0KClcbiAgZ2V0IHNlYXJjaFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFZhbHVlO1xuICB9XG4gIHNldCBzZWFyY2hWYWx1ZSh2OiBzdHJpbmcpIHtcbiAgICB2ID0gKHYgfHwgJycpLnRvU3RyaW5nKCk7XG4gICAgaWYgKHYgPT09IHRoaXMuX3NlYXJjaFZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub25DaGFuZ2Uodik7XG4gICAgdGhpcy5fc2VhcmNoVmFsdWUgPSB2O1xuICB9XG4gIC8qKiBTZWFyY2ggb24gdHlwZTogKGRlZmF1bHQgdHJ1ZSkgQXV0by1zZWFyY2ggd2hlbiB1c2VyIHR5cGVzIGluLiAqL1xuICBASW5wdXQoKSBzZWFyY2hPblR5cGUgPSB0cnVlO1xuICAvKiogQ3VzdG9tIGFyaWEgbGFiZWwgaW4gY2FzZSBvZiBub3QgdXNpbmcgYSBsYWJlbCAqL1xuICBASW5wdXQoJ2FyaWEtbGFiZWwnKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICBwcml2YXRlIGRlYm91bmNlVmFsdWUgPSAzMDA7IC8vIDMwMCBtc1xuICAvKiogRGVib3VuY2UgdGltZSBpbiBtaWxsaXNlY29uZHMuIChkZWZhdWx0cyB0byAzMDAgbXMpICovXG4gIEBJbnB1dCgpXG4gIHNldCBkZWJvdW5jZSh2YWw6IG51bWJlcikge1xuICAgIHRoaXMuZGVib3VuY2VWYWx1ZSA9IHZhbDtcbiAgICB0aGlzLnJlY3JlYXRlT2JzZXJ2YWJsZSgpO1xuICB9XG4gIGdldCBkZWJvdW5jZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRlYm91bmNlVmFsdWU7XG4gIH1cblxuICAvKiogU2VhcmNoIHZhbHVlIGNoYW5nZWQgYnkgdXNlci4gKi9cbiAgQE91dHB1dCgpIHNlYXJjaFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgc2VhcmNoVmFsdWUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcHJpdmF0ZSBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIHN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucmVjcmVhdGVPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBJbnRlcmZhY2VcbiAgb25DaGFuZ2UgPSAodmFsdWUpOiB2b2lkID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICh2YWx1ZSB8fCAnJykudG9TdHJpbmcoKTtcbiAgfVxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gb25DaGFuZ2U7XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgfVxuICBtYXJrQXNUb3VjaGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50b3VjaGVkKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuICAvLyBFbmQgQ29udHJvbFZhbHVlQWNjZXNzb3IgSW50ZXJmYWNlXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dElkID0gdGhpcy5pbnB1dElkXG4gICAgICA/IHRoaXMuaW5wdXRJZFxuICAgICAgOiBgZmlsdGVyJCR7RmlsdGVyQ29tcG9uZW50LmlkQ291bnRlcisrfWA7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5mcmVlU3Vic2NyaXB0aW9ucygpO1xuICB9XG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcbiAgICB0aGlzLnNlYXJjaCgpO1xuICB9XG4gIHNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlQ2hhbmdlLmVtaXQodGhpcy5zZWFyY2hWYWx1ZSk7XG4gIH1cbiAga2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIG5ld1ZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gbmV3VmFsdWU7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgdGhpcy5zZWFyY2hOb3codGhpcy5zZWFyY2hWYWx1ZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlYXJjaE9uVHlwZSkge1xuICAgICAgdGhpcy5hZGRFdmVudCgpO1xuICAgIH1cbiAgfVxuICBvbklucHV0VmFsdWVDaGFuZ2UobmV3VmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSBuZXdWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjcmVhdGVPYnNlcnZhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVmFsdWUkID0gdGhpcy5zdWJqZWN0XG4gICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSk7XG5cbiAgICB0aGlzLmZyZWVTdWJzY3JpcHRpb25zKCk7XG4gICAgdGhpcy5zdWIgPSB0aGlzLnNlYXJjaFZhbHVlJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaFZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgZnJlZVN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3ViKSB7XG4gICAgICB0aGlzLnN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zdWIgPSBudWxsO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIHNlYXJjaE5vdyh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIGFkZEV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViamVjdC5uZXh0KHRoaXMuc2VhcmNoVmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVyXCI+XG4gIDxpbnB1dFxuICAgICNpMFxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbaWRdPVwiaW5wdXRJZFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbdmFsdWVdPVwic2VhcmNoVmFsdWVcIlxuICAgICh2YWx1ZUNoYW5nZSk9XCJvbklucHV0VmFsdWVDaGFuZ2UoaTAudmFsdWUpXCJcbiAgICAoa2V5dXApPVwia2V5dXAoJGV2ZW50LCBpMC52YWx1ZSlcIlxuICAvPlxuXG4gIDxidXR0b25cbiAgICBbY2xhc3MuaGlkZV09XCIhc2VhcmNoVmFsdWVcIlxuICAgIGFyaWEtbGFiZWw9XCJDbGVhclwiXG4gICAgY2xhc3M9XCJjbGVhci1pbmRpY2F0b3IgaWNvbiBpY29uLWNsZWFyXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAoY2xpY2spPVwiY2xlYXIoKVwiXG4gID48L2J1dHRvbj5cbiAgPGkgKm5nSWY9XCIxIHx8IHNlYXJjaE9uVHlwZVwiIGNsYXNzPVwic2VhcmNoLWluZGljYXRvciBpY29uIGljb24tc2VhcmNoXCI+PC9pPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4tc2VhcmNoXCJcbiAgICAqbmdJZj1cIiFzZWFyY2hPblR5cGVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cInNlYXJjaCgpXCJcbiAgPlxuICAgIFNlYXJjaFxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19