@cauca-911/material 18.0.1-beta6 → 18.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/esm2022/lib/cauca-date-time-picker/cauca-date-time-picker.component.mjs +184 -0
  2. package/esm2022/lib/{inputs/cauca-date-time-picker → cauca-date-time-picker}/components/desktop-time-picker/desktop-time-picker.component.mjs +2 -2
  3. package/esm2022/lib/cauca-date-time-picker/components/dialog-date-time-picker/dialog-date-time-picker.component.mjs +365 -0
  4. package/esm2022/lib/cauca-date-time-picker/components/mobile-time-picker/mobile-time-picker.component.mjs +74 -0
  5. package/esm2022/lib/cauca-date-time-picker/models/dialog-date-time-picker-data.mjs +2 -0
  6. package/esm2022/lib/cauca-input-file/cauca-input-file.component.mjs +148 -0
  7. package/esm2022/lib/cauca-input-multiple-langue/cauca-input-multiple-langue.component.mjs +87 -0
  8. package/esm2022/lib/cauca-material.component.mjs +5 -6
  9. package/esm2022/lib/cauca-material.module.mjs +52 -14
  10. package/esm2022/lib/cauca-menu-sidebar/cauca-menu-sidebar.component.mjs +10 -14
  11. package/esm2022/lib/cauca-menu-vertical/cauca-menu-vertical.component.mjs +8 -16
  12. package/esm2022/lib/cauca-simple-dialog/cauca-simple-dialog.component.mjs +10 -14
  13. package/esm2022/lib/cauca-slideshow/cauca-slideshow.component.mjs +6 -6
  14. package/esm2022/public-api.mjs +4 -21
  15. package/fesm2022/cauca-911-material.mjs +822 -2125
  16. package/fesm2022/cauca-911-material.mjs.map +1 -1
  17. package/lib/cauca-date-time-picker/cauca-date-time-picker.component.d.ts +40 -0
  18. package/lib/{inputs/cauca-date-time-picker → cauca-date-time-picker}/components/dialog-date-time-picker/dialog-date-time-picker.component.d.ts +2 -1
  19. package/lib/{inputs/cauca-date-time-picker → cauca-date-time-picker}/models/dialog-date-time-picker-data.d.ts +3 -2
  20. package/lib/{inputs/cauca-input-file → cauca-input-file}/cauca-input-file.component.d.ts +1 -1
  21. package/lib/{inputs/cauca-input-multiple-langue → cauca-input-multiple-langue}/cauca-input-multiple-langue.component.d.ts +1 -1
  22. package/lib/cauca-material.component.d.ts +1 -1
  23. package/lib/cauca-material.module.d.ts +14 -4
  24. package/lib/cauca-menu-sidebar/cauca-menu-sidebar.component.d.ts +1 -1
  25. package/lib/cauca-menu-vertical/cauca-menu-vertical.component.d.ts +1 -1
  26. package/lib/cauca-simple-dialog/cauca-simple-dialog.component.d.ts +1 -1
  27. package/lib/cauca-slideshow/cauca-slideshow.component.d.ts +1 -1
  28. package/package.json +2 -3
  29. package/public-api.d.ts +3 -20
  30. package/esm2022/lib/buttons/base-button.mjs +0 -33
  31. package/esm2022/lib/buttons/basic-button/basic-button.component.mjs +0 -64
  32. package/esm2022/lib/buttons/flat-button/flat-button.component.mjs +0 -64
  33. package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +0 -28
  34. package/esm2022/lib/buttons/menu-item/menu-item.component.mjs +0 -68
  35. package/esm2022/lib/buttons/raised-button/raised-button.component.mjs +0 -78
  36. package/esm2022/lib/buttons/stroked-button/stroked-button.component.mjs +0 -71
  37. package/esm2022/lib/dialogs/alert-dialog/alert-dialog.component.mjs +0 -57
  38. package/esm2022/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +0 -69
  39. package/esm2022/lib/dialogs/services/dialog.service.mjs +0 -52
  40. package/esm2022/lib/inputs/cauca-date-time-picker/cauca-date-time-picker.component.mjs +0 -137
  41. package/esm2022/lib/inputs/cauca-date-time-picker/components/dialog-date-time-picker/dialog-date-time-picker.component.mjs +0 -358
  42. package/esm2022/lib/inputs/cauca-date-time-picker/components/mobile-time-picker/mobile-time-picker.component.mjs +0 -74
  43. package/esm2022/lib/inputs/cauca-date-time-picker/models/dialog-date-time-picker-data.mjs +0 -2
  44. package/esm2022/lib/inputs/cauca-input-file/cauca-input-file.component.mjs +0 -147
  45. package/esm2022/lib/inputs/cauca-input-multiple-langue/cauca-input-multiple-langue.component.mjs +0 -99
  46. package/esm2022/lib/inputs/password/models/password-validation.mjs +0 -13
  47. package/esm2022/lib/inputs/password/password-criteria/password-criteria.component.mjs +0 -49
  48. package/esm2022/lib/inputs/password/password-criteria-viewer/password-criteria-viewer.component.mjs +0 -29
  49. package/esm2022/lib/inputs/password/password-input/password-input.component.mjs +0 -112
  50. package/esm2022/lib/inputs/password/password-selection/password-selection.component.mjs +0 -112
  51. package/esm2022/lib/inputs/password/validators/password-validator.mjs +0 -19
  52. package/esm2022/lib/inputs/select-with-search/select-with-search.component.mjs +0 -157
  53. package/esm2022/lib/layout/expandable-panel/expandable-panel.component.mjs +0 -75
  54. package/esm2022/lib/layout/menu-expandable-panel/menu-expandable-panel.component.mjs +0 -148
  55. package/esm2022/lib/layout/menu-expandable-panel-item/menu-expandable-panel-item.component.mjs +0 -50
  56. package/esm2022/lib/layout/page-title/page-title.component.mjs +0 -86
  57. package/esm2022/lib/notifications/snack-bar/snack-bar.component.mjs +0 -75
  58. package/lib/buttons/base-button.d.ts +0 -21
  59. package/lib/buttons/basic-button/basic-button.component.d.ts +0 -6
  60. package/lib/buttons/flat-button/flat-button.component.d.ts +0 -6
  61. package/lib/buttons/icon-button/icon-button.component.d.ts +0 -6
  62. package/lib/buttons/menu-item/menu-item.component.d.ts +0 -9
  63. package/lib/buttons/raised-button/raised-button.component.d.ts +0 -17
  64. package/lib/buttons/stroked-button/stroked-button.component.d.ts +0 -6
  65. package/lib/dialogs/alert-dialog/alert-dialog.component.d.ts +0 -18
  66. package/lib/dialogs/confirm-dialog/confirm-dialog.component.d.ts +0 -17
  67. package/lib/dialogs/services/dialog.service.d.ts +0 -26
  68. package/lib/inputs/cauca-date-time-picker/cauca-date-time-picker.component.d.ts +0 -29
  69. package/lib/inputs/password/models/password-validation.d.ts +0 -9
  70. package/lib/inputs/password/password-criteria/password-criteria.component.d.ts +0 -9
  71. package/lib/inputs/password/password-criteria-viewer/password-criteria-viewer.component.d.ts +0 -9
  72. package/lib/inputs/password/password-input/password-input.component.d.ts +0 -25
  73. package/lib/inputs/password/password-selection/password-selection.component.d.ts +0 -20
  74. package/lib/inputs/password/validators/password-validator.d.ts +0 -9
  75. package/lib/inputs/select-with-search/select-with-search.component.d.ts +0 -32
  76. package/lib/layout/expandable-panel/expandable-panel.component.d.ts +0 -10
  77. package/lib/layout/menu-expandable-panel/menu-expandable-panel.component.d.ts +0 -29
  78. package/lib/layout/menu-expandable-panel-item/menu-expandable-panel-item.component.d.ts +0 -13
  79. package/lib/layout/page-title/page-title.component.d.ts +0 -11
  80. package/lib/notifications/snack-bar/snack-bar.component.d.ts +0 -17
  81. /package/lib/{inputs/cauca-date-time-picker → cauca-date-time-picker}/components/desktop-time-picker/desktop-time-picker.component.d.ts +0 -0
  82. /package/lib/{inputs/cauca-date-time-picker → cauca-date-time-picker}/components/mobile-time-picker/mobile-time-picker.component.d.ts +0 -0
@@ -1,358 +0,0 @@
1
- import { Component, HostListener, Inject } from '@angular/core';
2
- import { MatNativeDateModule } from '@angular/material/core';
3
- import { MatDatepickerModule } from '@angular/material/datepicker';
4
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
5
- import { MatListModule } from '@angular/material/list';
6
- import { MatButtonModule } from '@angular/material/button';
7
- import { MatIconModule } from '@angular/material/icon';
8
- import { MobileTimePickerComponent } from '../mobile-time-picker/mobile-time-picker.component';
9
- import { DesktopTimePickerComponent } from '../desktop-time-picker/desktop-time-picker.component';
10
- import { NgClass } from '@angular/common';
11
- import { TranslateModule } from '@ngx-translate/core';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/material/dialog";
14
- import * as i2 from "@angular/material/button";
15
- import * as i3 from "@angular/material/datepicker";
16
- import * as i4 from "@angular/material/icon";
17
- import * as i5 from "@ngx-translate/core";
18
- const _c0 = (a0, a1) => ({ all: a0, someOptions: a1 });
19
- function DialogDateTimePickerComponent_div_4_Template(rf, ctx) { if (rf & 1) {
20
- const _r1 = i0.ɵɵgetCurrentView();
21
- i0.ɵɵelementStart(0, "div", 14)(1, "cauca-desktop-time-picker", 15);
22
- i0.ɵɵlistener("valueChange", function DialogDateTimePickerComponent_div_4_Template_cauca_desktop_time_picker_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.hourChanged($event)); });
23
- i0.ɵɵelementEnd()();
24
- } if (rf & 2) {
25
- const ctx_r1 = i0.ɵɵnextContext();
26
- i0.ɵɵadvance();
27
- i0.ɵɵproperty("disabled", i0.ɵɵpureFunction2(3, _c0, ctx_r1.disabled.hours, ctx_r1.disabled.someHours))("options", ctx_r1.hours)("value", ctx_r1.selectedHour);
28
- } }
29
- function DialogDateTimePickerComponent_div_5_Template(rf, ctx) { if (rf & 1) {
30
- const _r3 = i0.ɵɵgetCurrentView();
31
- i0.ɵɵelementStart(0, "div", 14)(1, "cauca-mobile-time-picker", 16);
32
- i0.ɵɵlistener("valueChange", function DialogDateTimePickerComponent_div_5_Template_cauca_mobile_time_picker_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.hourChanged($event)); });
33
- i0.ɵɵelementEnd()();
34
- } if (rf & 2) {
35
- const ctx_r1 = i0.ɵɵnextContext();
36
- i0.ɵɵadvance();
37
- i0.ɵɵproperty("options", ctx_r1.hours)("value", ctx_r1.selectedHour);
38
- } }
39
- function DialogDateTimePickerComponent_div_6_Template(rf, ctx) { if (rf & 1) {
40
- i0.ɵɵelementStart(0, "div", 17);
41
- i0.ɵɵtext(1, ":");
42
- i0.ɵɵelementEnd();
43
- } }
44
- function DialogDateTimePickerComponent_div_7_Template(rf, ctx) { if (rf & 1) {
45
- const _r4 = i0.ɵɵgetCurrentView();
46
- i0.ɵɵelementStart(0, "div", 18)(1, "cauca-desktop-time-picker", 15);
47
- i0.ɵɵlistener("valueChange", function DialogDateTimePickerComponent_div_7_Template_cauca_desktop_time_picker_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.minuteChanged($event)); });
48
- i0.ɵɵelementEnd()();
49
- } if (rf & 2) {
50
- const ctx_r1 = i0.ɵɵnextContext();
51
- i0.ɵɵadvance();
52
- i0.ɵɵproperty("disabled", i0.ɵɵpureFunction2(3, _c0, ctx_r1.disabled.minutes, ctx_r1.disabled.someMinutes))("options", ctx_r1.minutes)("value", ctx_r1.selectedMinute);
53
- } }
54
- function DialogDateTimePickerComponent_div_8_Template(rf, ctx) { if (rf & 1) {
55
- const _r5 = i0.ɵɵgetCurrentView();
56
- i0.ɵɵelementStart(0, "div", 18)(1, "cauca-mobile-time-picker", 16);
57
- i0.ɵɵlistener("valueChange", function DialogDateTimePickerComponent_div_8_Template_cauca_mobile_time_picker_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.minuteChanged($event)); });
58
- i0.ɵɵelementEnd()();
59
- } if (rf & 2) {
60
- const ctx_r1 = i0.ɵɵnextContext();
61
- i0.ɵɵadvance();
62
- i0.ɵɵproperty("options", ctx_r1.minutes)("value", ctx_r1.selectedMinute);
63
- } }
64
- function DialogDateTimePickerComponent_div_9_Template(rf, ctx) { if (rf & 1) {
65
- i0.ɵɵelementStart(0, "div", 19);
66
- i0.ɵɵtext(1, ":");
67
- i0.ɵɵelementEnd();
68
- } }
69
- function DialogDateTimePickerComponent_div_10_Template(rf, ctx) { if (rf & 1) {
70
- const _r6 = i0.ɵɵgetCurrentView();
71
- i0.ɵɵelementStart(0, "div", 20)(1, "cauca-desktop-time-picker", 15);
72
- i0.ɵɵlistener("valueChange", function DialogDateTimePickerComponent_div_10_Template_cauca_desktop_time_picker_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.secondChanged($event)); });
73
- i0.ɵɵelementEnd()();
74
- } if (rf & 2) {
75
- const ctx_r1 = i0.ɵɵnextContext();
76
- i0.ɵɵadvance();
77
- i0.ɵɵproperty("disabled", i0.ɵɵpureFunction2(3, _c0, ctx_r1.disabled.seconds, ctx_r1.disabled.someSeconds))("options", ctx_r1.seconds)("value", ctx_r1.selectedSecond);
78
- } }
79
- function DialogDateTimePickerComponent_div_11_Template(rf, ctx) { if (rf & 1) {
80
- const _r7 = i0.ɵɵgetCurrentView();
81
- i0.ɵɵelementStart(0, "div", 20)(1, "cauca-mobile-time-picker", 16);
82
- i0.ɵɵlistener("valueChange", function DialogDateTimePickerComponent_div_11_Template_cauca_mobile_time_picker_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.secondChanged($event)); });
83
- i0.ɵɵelementEnd()();
84
- } if (rf & 2) {
85
- const ctx_r1 = i0.ɵɵnextContext();
86
- i0.ɵɵadvance();
87
- i0.ɵɵproperty("options", ctx_r1.seconds)("value", ctx_r1.selectedSecond);
88
- } }
89
- function DialogDateTimePickerComponent_button_13_mat_icon_1_Template(rf, ctx) { if (rf & 1) {
90
- i0.ɵɵelementStart(0, "mat-icon");
91
- i0.ɵɵtext(1, "clear");
92
- i0.ɵɵelementEnd();
93
- } }
94
- function DialogDateTimePickerComponent_button_13_Template(rf, ctx) { if (rf & 1) {
95
- const _r8 = i0.ɵɵgetCurrentView();
96
- i0.ɵɵelementStart(0, "button", 11);
97
- i0.ɵɵlistener("click", function DialogDateTimePickerComponent_button_13_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.clear()); });
98
- i0.ɵɵtemplate(1, DialogDateTimePickerComponent_button_13_mat_icon_1_Template, 2, 0, "mat-icon", 12);
99
- i0.ɵɵtext(2);
100
- i0.ɵɵpipe(3, "translate");
101
- i0.ɵɵelementEnd();
102
- } if (rf & 2) {
103
- const ctx_r1 = i0.ɵɵnextContext();
104
- i0.ɵɵadvance();
105
- i0.ɵɵproperty("ngIf", ctx_r1.showButtonIcons);
106
- i0.ɵɵadvance();
107
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 2, "material.clear"), " ");
108
- } }
109
- function DialogDateTimePickerComponent_mat_icon_15_Template(rf, ctx) { if (rf & 1) {
110
- i0.ɵɵelementStart(0, "mat-icon");
111
- i0.ɵɵtext(1, "cancel");
112
- i0.ɵɵelementEnd();
113
- } }
114
- function DialogDateTimePickerComponent_mat_icon_19_Template(rf, ctx) { if (rf & 1) {
115
- i0.ɵɵelementStart(0, "mat-icon");
116
- i0.ɵɵtext(1, "check");
117
- i0.ɵɵelementEnd();
118
- } }
119
- export class DialogDateTimePickerComponent {
120
- constructor(dialogRef, options) {
121
- this.dialogRef = dialogRef;
122
- this.options = options;
123
- this.selectedHour = 0;
124
- this.selectedMinute = 0;
125
- this.selectedSecond = 0;
126
- this.initialDate = null;
127
- this.selectedDate = null;
128
- this.minimumDate = new Date();
129
- this.maximumDate = new Date();
130
- this.showSeconds = false;
131
- this.showClearButton = true;
132
- this.showButtonIcons = true;
133
- this.hours = [...Array(24).keys()];
134
- this.minutes = [...Array(60).keys()];
135
- this.seconds = [...Array(60).keys()];
136
- this.showMobileUi = false;
137
- this.disabled = {
138
- hours: true,
139
- someHours: [],
140
- minutes: true,
141
- someMinutes: [],
142
- seconds: true,
143
- someSeconds: [],
144
- };
145
- this.step = {
146
- hours: 1,
147
- minutes: 1,
148
- seconds: 1,
149
- };
150
- this.step = options.step || this.step;
151
- this.showSeconds = options.showSeconds;
152
- this.showButtonIcons = options.showButtonIcons ?? this.showButtonIcons;
153
- this.showClearButton = options.showClearButton ?? this.showClearButton;
154
- this.setListHoursMinutes();
155
- this.initialEachComponentValue(options);
156
- }
157
- ngOnInit() {
158
- this.onWindowWithChange(window.innerWidth);
159
- }
160
- onResize(event) {
161
- this.onWindowWithChange(event.target.innerWidth);
162
- }
163
- dateChanged(date) {
164
- if (date) {
165
- this.selectedDate = date;
166
- this.selectedDate.setHours(this.selectedHour);
167
- this.selectedDate.setMinutes(this.selectedMinute);
168
- this.selectedDate.setSeconds(this.selectedSecond);
169
- this.disabled.hours = false;
170
- this.disabled.someHours = this.hours.filter(hour => this.hourOfSelectedDateIsDisabled(hour));
171
- }
172
- else {
173
- this.selectedDate = null;
174
- this.disabled.hours = true;
175
- }
176
- }
177
- hourChanged(hour) {
178
- if (this.disabled.hours || this.disabled.someHours.includes(hour))
179
- return;
180
- this.selectedHour = hour;
181
- this.selectedDate.setHours(hour);
182
- this.disabled.minutes = false;
183
- this.disabled.someMinutes = this.minutes.filter(minute => this.minuteOfSelectedDateIsDisabled(minute));
184
- }
185
- minuteChanged(minute) {
186
- if (this.disabled.minutes || this.disabled.someMinutes.includes(minute))
187
- return;
188
- this.selectedMinute = minute;
189
- this.selectedDate.setMinutes(minute);
190
- this.disabled.seconds = false;
191
- this.disabled.someSeconds = this.seconds.filter(second => this.secondOfSelectedDateIsDisabled(second));
192
- }
193
- secondChanged(second) {
194
- if (this.disabled.seconds || this.disabled.someSeconds.includes(second))
195
- return;
196
- this.selectedSecond = second;
197
- this.selectedDate.setSeconds(second);
198
- }
199
- clear() {
200
- this.dialogRef.close({
201
- value: null
202
- });
203
- }
204
- cancel() {
205
- this.dialogRef.close({
206
- value: this.initialDate
207
- });
208
- }
209
- confirm() {
210
- this.dialogRef.close({
211
- value: this.selectedDate
212
- });
213
- }
214
- onWindowWithChange(width) {
215
- this.showMobileUi = width && width <= 555;
216
- }
217
- hourOfSelectedDateIsDisabled(hour) {
218
- if (this.selectedDateIsTheMinimumDate()) {
219
- return hour < this.minimumDate.getHours();
220
- }
221
- else if (this.selectedDateIsTheMaximumDate()) {
222
- return hour > this.maximumDate.getHours();
223
- }
224
- return false;
225
- }
226
- minuteOfSelectedDateIsDisabled(minute) {
227
- if (this.selectedDateIsTheMinimumDate() &&
228
- this.selectedDate.getHours() === this.minimumDate.getHours()) {
229
- return minute < this.minimumDate.getMinutes();
230
- }
231
- else if (this.selectedDateIsTheMaximumDate() &&
232
- this.selectedDate.getHours() === this.maximumDate.getHours()) {
233
- return minute > this.maximumDate.getMinutes();
234
- }
235
- return false;
236
- }
237
- secondOfSelectedDateIsDisabled(second) {
238
- if (this.selectedDateIsTheMinimumDate() &&
239
- this.selectedDate.getHours() === this.minimumDate.getHours() &&
240
- this.selectedDate.getMinutes() === this.minimumDate.getMinutes()) {
241
- return second < this.minimumDate.getSeconds();
242
- }
243
- else if (this.selectedDateIsTheMaximumDate() &&
244
- this.selectedDate.getMinutes() === this.maximumDate.getMinutes()) {
245
- return second > this.maximumDate.getSeconds();
246
- }
247
- return false;
248
- }
249
- initialEachComponentValue(options) {
250
- this.initialDate = options.selectedDate ? new Date(options.selectedDate) : null;
251
- this.minimumDate = options.minimumDate ? new Date(options.minimumDate) : null;
252
- this.maximumDate = options.maximumDate ? new Date(options.maximumDate) : null;
253
- this.selectedDate = options.selectedDate ? new Date(options.selectedDate) : new Date();
254
- this.dateChanged(options.selectedDate ? new Date(options.selectedDate) : null);
255
- this.hourChanged(options.selectedDate ? new Date(options.selectedDate).getHours() : 0);
256
- this.minuteChanged(options.selectedDate ? new Date(options.selectedDate).getMinutes() : 0);
257
- this.secondChanged(options.selectedDate ? new Date(options.selectedDate).getSeconds() : 0);
258
- }
259
- selectedDateIsTheMinimumDate() {
260
- return (this.minimumDate &&
261
- this.selectedDate.getFullYear() === this.minimumDate.getFullYear() &&
262
- this.selectedDate.getMonth() === this.minimumDate.getMonth() &&
263
- this.selectedDate.getDate() === this.minimumDate.getDate());
264
- }
265
- selectedDateIsTheMaximumDate() {
266
- return (this.maximumDate &&
267
- this.selectedDate.getFullYear() === this.maximumDate.getFullYear() &&
268
- this.selectedDate.getMonth() === this.maximumDate.getMonth() &&
269
- this.selectedDate.getDate() === this.maximumDate.getDate());
270
- }
271
- setListHoursMinutes() {
272
- this.hours = this.hours.filter(hour => hour % this.step.hours === 0);
273
- this.minutes = this.minutes.filter(minute => minute % this.step.minutes === 0);
274
- this.seconds = this.seconds.filter(seconde => seconde % this.step.seconds === 0);
275
- }
276
- static { this.ɵfac = function DialogDateTimePickerComponent_Factory(t) { return new (t || DialogDateTimePickerComponent)(i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); }; }
277
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DialogDateTimePickerComponent, selectors: [["cauca-dialog-date-time-picker"]], hostBindings: function DialogDateTimePickerComponent_HostBindings(rf, ctx) { if (rf & 1) {
278
- i0.ɵɵlistener("resize", function DialogDateTimePickerComponent_resize_HostBindingHandler($event) { return ctx.onResize($event); }, false, i0.ɵɵresolveWindow);
279
- } }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 22, vars: 21, consts: [["mat-dialog-content", ""], [1, "date-time-picker", 3, "ngClass"], [1, "calendar"], [3, "selectedChange", "minDate", "maxDate", "selected"], ["class", "hours", 4, "ngIf"], ["class", "hour-and-minute-separator", 4, "ngIf"], ["class", "minutes", 4, "ngIf"], ["class", "minute-and-second-separator", 4, "ngIf"], ["class", "seconds", 4, "ngIf"], ["mat-dialog-actions", "", "align", "end"], ["mat-stroked-button", "", 3, "click", 4, "ngIf"], ["mat-stroked-button", "", 3, "click"], [4, "ngIf"], ["color", "primary", "mat-raised-button", "", "cdkFocusInitial", "", 3, "click"], [1, "hours"], [3, "valueChange", "disabled", "options", "value"], [3, "valueChange", "options", "value"], [1, "hour-and-minute-separator"], [1, "minutes"], [1, "minute-and-second-separator"], [1, "seconds"]], template: function DialogDateTimePickerComponent_Template(rf, ctx) { if (rf & 1) {
280
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "mat-calendar", 3);
281
- i0.ɵɵlistener("selectedChange", function DialogDateTimePickerComponent_Template_mat_calendar_selectedChange_3_listener($event) { return ctx.dateChanged($event); });
282
- i0.ɵɵelementEnd()();
283
- i0.ɵɵtemplate(4, DialogDateTimePickerComponent_div_4_Template, 2, 6, "div", 4)(5, DialogDateTimePickerComponent_div_5_Template, 2, 2, "div", 4)(6, DialogDateTimePickerComponent_div_6_Template, 2, 0, "div", 5)(7, DialogDateTimePickerComponent_div_7_Template, 2, 6, "div", 6)(8, DialogDateTimePickerComponent_div_8_Template, 2, 2, "div", 6)(9, DialogDateTimePickerComponent_div_9_Template, 2, 0, "div", 7)(10, DialogDateTimePickerComponent_div_10_Template, 2, 6, "div", 8)(11, DialogDateTimePickerComponent_div_11_Template, 2, 2, "div", 8);
284
- i0.ɵɵelementEnd()();
285
- i0.ɵɵelementStart(12, "div", 9);
286
- i0.ɵɵtemplate(13, DialogDateTimePickerComponent_button_13_Template, 4, 4, "button", 10);
287
- i0.ɵɵelementStart(14, "button", 11);
288
- i0.ɵɵlistener("click", function DialogDateTimePickerComponent_Template_button_click_14_listener() { return ctx.cancel(); });
289
- i0.ɵɵtemplate(15, DialogDateTimePickerComponent_mat_icon_15_Template, 2, 0, "mat-icon", 12);
290
- i0.ɵɵtext(16);
291
- i0.ɵɵpipe(17, "translate");
292
- i0.ɵɵelementEnd();
293
- i0.ɵɵelementStart(18, "button", 13);
294
- i0.ɵɵlistener("click", function DialogDateTimePickerComponent_Template_button_click_18_listener() { return ctx.confirm(); });
295
- i0.ɵɵtemplate(19, DialogDateTimePickerComponent_mat_icon_19_Template, 2, 0, "mat-icon", 12);
296
- i0.ɵɵtext(20);
297
- i0.ɵɵpipe(21, "translate");
298
- i0.ɵɵelementEnd()();
299
- } if (rf & 2) {
300
- i0.ɵɵadvance();
301
- i0.ɵɵproperty("ngClass", ctx.showSeconds ? "show-seconds" : "hide-seconds");
302
- i0.ɵɵadvance(2);
303
- i0.ɵɵproperty("minDate", ctx.minimumDate)("maxDate", ctx.maximumDate)("selected", ctx.selectedDate);
304
- i0.ɵɵadvance();
305
- i0.ɵɵproperty("ngIf", !ctx.showMobileUi);
306
- i0.ɵɵadvance();
307
- i0.ɵɵproperty("ngIf", ctx.showMobileUi);
308
- i0.ɵɵadvance();
309
- i0.ɵɵproperty("ngIf", ctx.showMobileUi);
310
- i0.ɵɵadvance();
311
- i0.ɵɵproperty("ngIf", !ctx.showMobileUi);
312
- i0.ɵɵadvance();
313
- i0.ɵɵproperty("ngIf", ctx.showMobileUi);
314
- i0.ɵɵadvance();
315
- i0.ɵɵproperty("ngIf", ctx.showSeconds && ctx.showMobileUi);
316
- i0.ɵɵadvance();
317
- i0.ɵɵproperty("ngIf", ctx.showSeconds && !ctx.showMobileUi);
318
- i0.ɵɵadvance();
319
- i0.ɵɵproperty("ngIf", ctx.showSeconds && ctx.showMobileUi);
320
- i0.ɵɵadvance(2);
321
- i0.ɵɵproperty("ngIf", ctx.showClearButton);
322
- i0.ɵɵadvance(2);
323
- i0.ɵɵproperty("ngIf", ctx.showButtonIcons);
324
- i0.ɵɵadvance();
325
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(17, 17, "material.cancel"), " ");
326
- i0.ɵɵadvance(3);
327
- i0.ɵɵproperty("ngIf", ctx.showButtonIcons);
328
- i0.ɵɵadvance();
329
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(21, 19, "material.ok"), " ");
330
- } }, dependencies: [MatButtonModule, i2.MatButton, MatDatepickerModule, i3.MatCalendar, MatIconModule, i4.MatIcon, MatListModule,
331
- MatNativeDateModule,
332
- MobileTimePickerComponent,
333
- DesktopTimePickerComponent,
334
- NgClass,
335
- TranslateModule, i5.TranslatePipe], styles: ["div[mat-dialog-actions][_ngcontent-%COMP%]{padding:8px;border-top:1px solid #ccc}div[mat-dialog-actions][_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin:2px}.date-time-picker[_ngcontent-%COMP%]{display:grid;grid-template-areas:\"calendar hours minutes seconds\";height:350px;overflow:hidden;justify-content:center}.date-time-picker[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{overflow:auto;flex:1;max-width:50px;scrollbar-width:none;border-left:1px solid #ccc}.date-time-picker[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{flex:4;max-width:290px;border-left:none}.date-time-picker[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child mat-calendar[_ngcontent-%COMP%]{width:290px;height:350px}.date-time-picker[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar{display:none}.date-time-picker[_ngcontent-%COMP%] .mdc-list-item__primary-text{font-family:var(--mat-datepicker-calendar-text-font);font-size:var(--mat-datepicker-calendar-text-size)}.date-time-picker[_ngcontent-%COMP%] .mdc-list-item--activated{background-color:var(--mat-datepicker-calendar-date-selected-state-background-color)}.date-time-picker[_ngcontent-%COMP%] .mdc-list-item--activated .mdc-list-item__primary-text{color:var(--mat-datepicker-calendar-date-selected-state-text-color)}.calendar[_ngcontent-%COMP%]{grid-area:calendar}.hours[_ngcontent-%COMP%]{grid-area:hours}.minutes[_ngcontent-%COMP%]{grid-area:minutes}.seconds[_ngcontent-%COMP%]{grid-area:seconds}.hour-and-minute-separator[_ngcontent-%COMP%]{grid-area:hour-and-minute-separator;display:flex;align-items:center;justify-content:center;font-weight:700}.minute-and-second-separator[_ngcontent-%COMP%]{grid-area:minute-and-second-separator;display:flex;align-items:center;justify-content:center;font-weight:700}@media only screen and (max-width: 555px){.show-seconds[_ngcontent-%COMP%]{grid-template-areas:\"calendar calendar calendar calendar calendar calendar calendar\" \". hours hour-and-minute-separator minutes minute-and-second-separator seconds .\";grid-template-columns:auto 40px 2px 40px 2px 40px auto}.hide-seconds[_ngcontent-%COMP%]{grid-template-areas:\"calendar calendar calendar calendar calendar\" \". hours hour-and-minute-separator minutes .\";grid-template-columns:auto 40px 2px 40px auto}.date-time-picker[_ngcontent-%COMP%]{grid-template-rows:auto auto;height:450px}.date-time-picker[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{border-left:none}.date-time-picker[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:not(:first-child){height:70px}.date-time-picker[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{overflow:initial;flex:4;max-width:290px;border-left:none}}"] }); }
336
- }
337
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DialogDateTimePickerComponent, [{
338
- type: Component,
339
- args: [{ selector: 'cauca-dialog-date-time-picker', standalone: true, imports: [
340
- MatButtonModule,
341
- MatDatepickerModule,
342
- MatIconModule,
343
- MatListModule,
344
- MatNativeDateModule,
345
- MobileTimePickerComponent,
346
- DesktopTimePickerComponent,
347
- NgClass,
348
- TranslateModule
349
- ], template: "<div mat-dialog-content>\n <div [ngClass]=\"showSeconds ? 'show-seconds' : 'hide-seconds'\" class=\"date-time-picker\">\n <div class=\"calendar\">\n <mat-calendar\n [minDate]=\"minimumDate\"\n [maxDate]=\"maximumDate\"\n [selected]=\"selectedDate\"\n (selectedChange)=\"dateChanged($event)\"\n ></mat-calendar>\n </div>\n\n <div class=\"hours\" *ngIf=\"!showMobileUi\">\n <cauca-desktop-time-picker [disabled]=\"{all: disabled.hours, someOptions: disabled.someHours}\" (valueChange)=\"hourChanged($event)\" [options]=\"hours\" [value]=\"selectedHour\"/>\n </div>\n <div class=\"hours\" *ngIf=\"showMobileUi\">\n <cauca-mobile-time-picker (valueChange)=\"hourChanged($event)\" [options]=\"hours\" [value]=\"selectedHour\" />\n </div>\n\n <div class=\"hour-and-minute-separator\" *ngIf=\"showMobileUi\">:</div>\n\n <div class=\"minutes\" *ngIf=\"!showMobileUi\">\n <cauca-desktop-time-picker [disabled]=\"{all: disabled.minutes, someOptions: disabled.someMinutes}\" (valueChange)=\"minuteChanged($event)\" [options]=\"minutes\" [value]=\"selectedMinute\"/>\n </div>\n <div class=\"minutes\" *ngIf=\"showMobileUi\">\n <cauca-mobile-time-picker (valueChange)=\"minuteChanged($event)\" [options]=\"minutes\" [value]=\"selectedMinute\" />\n </div>\n\n <div class=\"minute-and-second-separator\" *ngIf=\"showSeconds && showMobileUi\">:</div>\n <div class=\"seconds\" *ngIf=\"showSeconds && !showMobileUi\">\n <cauca-desktop-time-picker [disabled]=\"{all: disabled.seconds, someOptions: disabled.someSeconds}\" (valueChange)=\"secondChanged($event)\" [options]=\"seconds\" [value]=\"selectedSecond\"/>\n </div>\n <div class=\"seconds\" *ngIf=\"showSeconds && showMobileUi\">\n <cauca-mobile-time-picker (valueChange)=\"secondChanged($event)\" [options]=\"seconds\" [value]=\"selectedSecond\" />\n </div>\n </div>\n</div>\n\n<div mat-dialog-actions align=\"end\">\n <button mat-stroked-button (click)=\"clear()\" *ngIf=\"showClearButton\">\n <mat-icon *ngIf=\"showButtonIcons\">clear</mat-icon>\n {{'material.clear' | translate}}\n </button>\n <button mat-stroked-button (click)=\"cancel()\">\n <mat-icon *ngIf=\"showButtonIcons\">cancel</mat-icon>\n {{'material.cancel' | translate}}\n </button>\n <button color=\"primary\" mat-raised-button cdkFocusInitial (click)=\"confirm()\">\n <mat-icon *ngIf=\"showButtonIcons\">check</mat-icon>\n {{'material.ok' | translate}}\n </button>\n</div>", styles: ["div[mat-dialog-actions]{padding:8px;border-top:1px solid #ccc}div[mat-dialog-actions] button{margin:2px}.date-time-picker{display:grid;grid-template-areas:\"calendar hours minutes seconds\";height:350px;overflow:hidden;justify-content:center}.date-time-picker>div{overflow:auto;flex:1;max-width:50px;scrollbar-width:none;border-left:1px solid #ccc}.date-time-picker>div:first-child{flex:4;max-width:290px;border-left:none}.date-time-picker>div:first-child mat-calendar{width:290px;height:350px}.date-time-picker>div::-webkit-scrollbar{display:none}.date-time-picker ::ng-deep .mdc-list-item__primary-text{font-family:var(--mat-datepicker-calendar-text-font);font-size:var(--mat-datepicker-calendar-text-size)}.date-time-picker ::ng-deep .mdc-list-item--activated{background-color:var(--mat-datepicker-calendar-date-selected-state-background-color)}.date-time-picker ::ng-deep .mdc-list-item--activated .mdc-list-item__primary-text{color:var(--mat-datepicker-calendar-date-selected-state-text-color)}.calendar{grid-area:calendar}.hours{grid-area:hours}.minutes{grid-area:minutes}.seconds{grid-area:seconds}.hour-and-minute-separator{grid-area:hour-and-minute-separator;display:flex;align-items:center;justify-content:center;font-weight:700}.minute-and-second-separator{grid-area:minute-and-second-separator;display:flex;align-items:center;justify-content:center;font-weight:700}@media only screen and (max-width: 555px){.show-seconds{grid-template-areas:\"calendar calendar calendar calendar calendar calendar calendar\" \". hours hour-and-minute-separator minutes minute-and-second-separator seconds .\";grid-template-columns:auto 40px 2px 40px 2px 40px auto}.hide-seconds{grid-template-areas:\"calendar calendar calendar calendar calendar\" \". hours hour-and-minute-separator minutes .\";grid-template-columns:auto 40px 2px 40px auto}.date-time-picker{grid-template-rows:auto auto;height:450px}.date-time-picker>div{border-left:none}.date-time-picker>div:not(:first-child){height:70px}.date-time-picker>div:first-child{overflow:initial;flex:4;max-width:290px;border-left:none}}\n"] }]
350
- }], () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
351
- type: Inject,
352
- args: [MAT_DIALOG_DATA]
353
- }] }], { onResize: [{
354
- type: HostListener,
355
- args: ['window:resize', ['$event']]
356
- }] }); })();
357
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DialogDateTimePickerComponent, { className: "DialogDateTimePickerComponent", filePath: "lib\\inputs\\cauca-date-time-picker\\components\\dialog-date-time-picker\\dialog-date-time-picker.component.ts", lineNumber: 31 }); })();
358
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWRhdGUtdGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2F1Y2EtbWF0ZXJpYWwvc3JjL2xpYi9pbnB1dHMvY2F1Y2EtZGF0ZS10aW1lLXBpY2tlci9jb21wb25lbnRzL2RpYWxvZy1kYXRlLXRpbWUtcGlja2VyL2RpYWxvZy1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhdWNhLW1hdGVyaWFsL3NyYy9saWIvaW5wdXRzL2NhdWNhLWRhdGUtdGltZS1waWNrZXIvY29tcG9uZW50cy9kaWFsb2ctZGF0ZS10aW1lLXBpY2tlci9kaWFsb2ctZGF0ZS10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMvRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxF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QUtiLGNBQW1CO1lBQW5CLHdDQUFtQjtZQUduQixjQUFrQjtZQUFsQix1Q0FBa0I7WUFJRSxjQUFrQjtZQUFsQix1Q0FBa0I7WUFFcEMsY0FBbUI7WUFBbkIsd0NBQW1CO1lBR25CLGNBQWtCO1lBQWxCLHVDQUFrQjtZQUlFLGNBQWlDO1lBQWpDLDBEQUFpQztZQUNyRCxjQUFrQztZQUFsQywyREFBa0M7WUFHbEMsY0FBaUM7WUFBakMsMERBQWlDO1lBT2IsZUFBcUI7WUFBckIsMENBQXFCO1lBS3BELGVBQXFCO1lBQXJCLDBDQUFxQjtZQUNoQyxjQUNKO1lBREksMEVBQ0o7WUFFZSxlQUFxQjtZQUFyQiwwQ0FBcUI7WUFDaEMsY0FDSjtZQURJLHNFQUNKOzRCRGhDQSxlQUFlLGdCQUNmLG1CQUFtQixrQkFDbkIsYUFBYSxjQUNiLGFBQWE7WUFDYixtQkFBbUI7WUFDbkIseUJBQXlCO1lBQ3pCLDBCQUEwQjtZQUMxQixPQUFPO1lBQ1AsZUFBZTs7aUZBS04sNkJBQTZCO2NBakJ6QyxTQUFTOzJCQUNFLCtCQUErQixjQUM3QixJQUFJLFdBQ1A7b0JBQ1AsZUFBZTtvQkFDZixtQkFBbUI7b0JBQ25CLGFBQWE7b0JBQ2IsYUFBYTtvQkFDYixtQkFBbUI7b0JBQ25CLHlCQUF5QjtvQkFDekIsMEJBQTBCO29CQUMxQixPQUFPO29CQUNQLGVBQWU7aUJBQ2hCOztzQkFzQ0UsTUFBTTt1QkFBQyxlQUFlO3FCQWVsQixRQUFRO2tCQURkLFlBQVk7bUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDOztrRkFoRDlCLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgRGlhbG9nRGF0ZVRpbWVQaWNrZXJPcHRpb25zLCBEaWFsb2dEYXRlVGltZVBpY2tlckRhdGFEaXNhYmxlZCwgRGlhbG9nRGF0ZVRpbWVQaWNrZXJEYXRhU3RlcCB9IGZyb20gJy4uLy4uL21vZGVscy9kaWFsb2ctZGF0ZS10aW1lLXBpY2tlci1kYXRhJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNb2JpbGVUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9iaWxlLXRpbWUtcGlja2VyL21vYmlsZS10aW1lLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVza3RvcFRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9kZXNrdG9wLXRpbWUtcGlja2VyL2Rlc2t0b3AtdGltZS1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NhdWNhLWRpYWxvZy1kYXRlLXRpbWUtcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0TGlzdE1vZHVsZSxcbiAgICBNYXROYXRpdmVEYXRlTW9kdWxlLFxuICAgIE1vYmlsZVRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgRGVza3RvcFRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgTmdDbGFzcyxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RpYWxvZy1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dEYXRlVGltZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBzZWxlY3RlZEhvdXIgPSAwO1xuICBwdWJsaWMgc2VsZWN0ZWRNaW51dGUgPSAwO1xuICBwdWJsaWMgc2VsZWN0ZWRTZWNvbmQgPSAwO1xuICBwdWJsaWMgaW5pdGlhbERhdGU6IERhdGUgPSBudWxsO1xuICBwdWJsaWMgc2VsZWN0ZWREYXRlOiBEYXRlID0gbnVsbDtcbiAgcHVibGljIG1pbmltdW1EYXRlID0gbmV3IERhdGUoKTtcbiAgcHVibGljIG1heGltdW1EYXRlID0gbmV3IERhdGUoKTtcbiAgcHVibGljIHNob3dTZWNvbmRzOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93Q2xlYXJCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgc2hvd0J1dHRvbkljb25zOiBib29sZWFuID0gdHJ1ZTtcblxuICBwdWJsaWMgaG91cnMgPSBbLi4uQXJyYXkoMjQpLmtleXMoKV07XG4gIHB1YmxpYyBtaW51dGVzID0gWy4uLkFycmF5KDYwKS5rZXlzKCldO1xuICBwdWJsaWMgc2Vjb25kcyA9IFsuLi5BcnJheSg2MCkua2V5cygpXTtcbiAgcHVibGljIHNob3dNb2JpbGVVaTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBkaXNhYmxlZDogRGlhbG9nRGF0ZVRpbWVQaWNrZXJEYXRhRGlzYWJsZWQgPSB7XG4gICAgaG91cnM6IHRydWUsXG4gICAgc29tZUhvdXJzOiBbXSxcbiAgICBtaW51dGVzOiB0cnVlLFxuICAgIHNvbWVNaW51dGVzOiBbXSxcbiAgICBzZWNvbmRzOiB0cnVlLFxuICAgIHNvbWVTZWNvbmRzOiBbXSxcbiAgfTtcblxuICBwcml2YXRlIHN0ZXA6IERpYWxvZ0RhdGVUaW1lUGlja2VyRGF0YVN0ZXAgPSB7XG4gICAgaG91cnM6IDEsXG4gICAgbWludXRlczogMSxcbiAgICBzZWNvbmRzOiAxLFxuICB9O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGlhbG9nRGF0ZVRpbWVQaWNrZXJDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgb3B0aW9uczogRGlhbG9nRGF0ZVRpbWVQaWNrZXJPcHRpb25zXG4gICkge1xuICAgIHRoaXMuc3RlcCA9IG9wdGlvbnMuc3RlcCB8fCB0aGlzLnN0ZXA7XG4gICAgdGhpcy5zaG93U2Vjb25kcyA9IG9wdGlvbnMuc2hvd1NlY29uZHM7XG4gICAgdGhpcy5zaG93QnV0dG9uSWNvbnMgPSBvcHRpb25zLnNob3dCdXR0b25JY29ucyA/PyB0aGlzLnNob3dCdXR0b25JY29ucztcbiAgICB0aGlzLnNob3dDbGVhckJ1dHRvbiA9IG9wdGlvbnMuc2hvd0NsZWFyQnV0dG9uID8/IHRoaXMuc2hvd0NsZWFyQnV0dG9uO1xuICAgIHRoaXMuc2V0TGlzdEhvdXJzTWludXRlcygpO1xuICAgIHRoaXMuaW5pdGlhbEVhY2hDb21wb25lbnRWYWx1ZShvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9uV2luZG93V2l0aENoYW5nZSh3aW5kb3cuaW5uZXJXaWR0aCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uUmVzaXplKGV2ZW50KSB7XG4gICAgdGhpcy5vbldpbmRvd1dpdGhDaGFuZ2UoZXZlbnQudGFyZ2V0LmlubmVyV2lkdGgpO1xuICB9XG5cbiAgcHVibGljIGRhdGVDaGFuZ2VkKGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAoZGF0ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuc2V0SG91cnModGhpcy5zZWxlY3RlZEhvdXIpO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuc2V0TWludXRlcyh0aGlzLnNlbGVjdGVkTWludXRlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLnNldFNlY29uZHModGhpcy5zZWxlY3RlZFNlY29uZCk7XG4gICAgICB0aGlzLmRpc2FibGVkLmhvdXJzID0gZmFsc2U7XG4gICAgICB0aGlzLmRpc2FibGVkLnNvbWVIb3VycyA9IHRoaXMuaG91cnMuZmlsdGVyKGhvdXIgPT4gdGhpcy5ob3VyT2ZTZWxlY3RlZERhdGVJc0Rpc2FibGVkKGhvdXIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBudWxsO1xuICAgICAgdGhpcy5kaXNhYmxlZC5ob3VycyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvdXJDaGFuZ2VkKGhvdXI6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkLmhvdXJzIHx8IHRoaXMuZGlzYWJsZWQuc29tZUhvdXJzLmluY2x1ZGVzKGhvdXIpKSByZXR1cm47XG5cbiAgICB0aGlzLnNlbGVjdGVkSG91ciA9IGhvdXI7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUuc2V0SG91cnMoaG91cik7XG4gICAgdGhpcy5kaXNhYmxlZC5taW51dGVzID0gZmFsc2U7XG4gICAgdGhpcy5kaXNhYmxlZC5zb21lTWludXRlcyA9IHRoaXMubWludXRlcy5maWx0ZXIobWludXRlID0+IHRoaXMubWludXRlT2ZTZWxlY3RlZERhdGVJc0Rpc2FibGVkKG1pbnV0ZSkpO1xuICB9XG5cbiAgcHVibGljIG1pbnV0ZUNoYW5nZWQobWludXRlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZC5taW51dGVzIHx8IHRoaXMuZGlzYWJsZWQuc29tZU1pbnV0ZXMuaW5jbHVkZXMobWludXRlKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5zZWxlY3RlZE1pbnV0ZSA9IG1pbnV0ZTtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZS5zZXRNaW51dGVzKG1pbnV0ZSk7XG4gICAgdGhpcy5kaXNhYmxlZC5zZWNvbmRzID0gZmFsc2U7XG4gICAgdGhpcy5kaXNhYmxlZC5zb21lU2Vjb25kcyA9IHRoaXMuc2Vjb25kcy5maWx0ZXIoc2Vjb25kID0+IHRoaXMuc2Vjb25kT2ZTZWxlY3RlZERhdGVJc0Rpc2FibGVkKHNlY29uZCkpO1xuICB9XG5cbiAgcHVibGljIHNlY29uZENoYW5nZWQoc2Vjb25kOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZC5zZWNvbmRzIHx8IHRoaXMuZGlzYWJsZWQuc29tZVNlY29uZHMuaW5jbHVkZXMoc2Vjb25kKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5zZWxlY3RlZFNlY29uZCA9IHNlY29uZDtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZS5zZXRTZWNvbmRzKHNlY29uZCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgdmFsdWU6IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgdmFsdWU6IHRoaXMuaW5pdGlhbERhdGVcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maXJtKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkRGF0ZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbldpbmRvd1dpdGhDaGFuZ2Uod2lkdGg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2hvd01vYmlsZVVpID0gd2lkdGggJiYgd2lkdGggPD0gNTU1O1xuICB9XG5cbiAgcHJpdmF0ZSBob3VyT2ZTZWxlY3RlZERhdGVJc0Rpc2FibGVkKGhvdXI6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZUlzVGhlTWluaW11bURhdGUoKSkge1xuICAgICAgcmV0dXJuIGhvdXIgPCB0aGlzLm1pbmltdW1EYXRlLmdldEhvdXJzKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRGF0ZUlzVGhlTWF4aW11bURhdGUoKSkge1xuICAgICAgcmV0dXJuIGhvdXIgPiB0aGlzLm1heGltdW1EYXRlLmdldEhvdXJzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBtaW51dGVPZlNlbGVjdGVkRGF0ZUlzRGlzYWJsZWQobWludXRlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZUlzVGhlTWluaW11bURhdGUoKSAmJlxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZ2V0SG91cnMoKSA9PT0gdGhpcy5taW5pbXVtRGF0ZS5nZXRIb3VycygpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbWludXRlIDwgdGhpcy5taW5pbXVtRGF0ZS5nZXRNaW51dGVzKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSXNUaGVNYXhpbXVtRGF0ZSgpICYmXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRIb3VycygpID09PSB0aGlzLm1heGltdW1EYXRlLmdldEhvdXJzKClcbiAgICApIHtcbiAgICAgIHJldHVybiBtaW51dGUgPiB0aGlzLm1heGltdW1EYXRlLmdldE1pbnV0ZXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHNlY29uZE9mU2VsZWN0ZWREYXRlSXNEaXNhYmxlZChzZWNvbmQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSXNUaGVNaW5pbXVtRGF0ZSgpICYmXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRIb3VycygpID09PSB0aGlzLm1pbmltdW1EYXRlLmdldEhvdXJzKCkgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmdldE1pbnV0ZXMoKSA9PT0gdGhpcy5taW5pbXVtRGF0ZS5nZXRNaW51dGVzKClcbiAgICApIHtcbiAgICAgIHJldHVybiBzZWNvbmQgPCB0aGlzLm1pbmltdW1EYXRlLmdldFNlY29uZHMoKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVJc1RoZU1heGltdW1EYXRlKCkgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmdldE1pbnV0ZXMoKSA9PT0gdGhpcy5tYXhpbXVtRGF0ZS5nZXRNaW51dGVzKClcbiAgICApIHtcbiAgICAgIHJldHVybiBzZWNvbmQgPiB0aGlzLm1heGltdW1EYXRlLmdldFNlY29uZHMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxFYWNoQ29tcG9uZW50VmFsdWUob3B0aW9uczogRGlhbG9nRGF0ZVRpbWVQaWNrZXJPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsRGF0ZSA9IG9wdGlvbnMuc2VsZWN0ZWREYXRlID8gbmV3IERhdGUob3B0aW9ucy5zZWxlY3RlZERhdGUpIDogbnVsbDtcbiAgICB0aGlzLm1pbmltdW1EYXRlID0gb3B0aW9ucy5taW5pbXVtRGF0ZSA/IG5ldyBEYXRlKG9wdGlvbnMubWluaW11bURhdGUpIDogbnVsbDtcbiAgICB0aGlzLm1heGltdW1EYXRlID0gb3B0aW9ucy5tYXhpbXVtRGF0ZSA/IG5ldyBEYXRlKG9wdGlvbnMubWF4aW11bURhdGUpIDogbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG9wdGlvbnMuc2VsZWN0ZWREYXRlID8gbmV3IERhdGUob3B0aW9ucy5zZWxlY3RlZERhdGUpIDogbmV3IERhdGUoKTtcbiAgICB0aGlzLmRhdGVDaGFuZ2VkKG9wdGlvbnMuc2VsZWN0ZWREYXRlID8gbmV3IERhdGUob3B0aW9ucy5zZWxlY3RlZERhdGUpIDogbnVsbCk7XG4gICAgdGhpcy5ob3VyQ2hhbmdlZChvcHRpb25zLnNlbGVjdGVkRGF0ZSA/IG5ldyBEYXRlKG9wdGlvbnMuc2VsZWN0ZWREYXRlKS5nZXRIb3VycygpIDogMCk7XG4gICAgdGhpcy5taW51dGVDaGFuZ2VkKG9wdGlvbnMuc2VsZWN0ZWREYXRlID8gbmV3IERhdGUob3B0aW9ucy5zZWxlY3RlZERhdGUpLmdldE1pbnV0ZXMoKSA6IDApO1xuICAgIHRoaXMuc2Vjb25kQ2hhbmdlZChvcHRpb25zLnNlbGVjdGVkRGF0ZSA/IG5ldyBEYXRlKG9wdGlvbnMuc2VsZWN0ZWREYXRlKS5nZXRTZWNvbmRzKCkgOiAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0ZWREYXRlSXNUaGVNaW5pbXVtRGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5taW5pbXVtRGF0ZSAmJlxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSA9PT0gdGhpcy5taW5pbXVtRGF0ZS5nZXRGdWxsWWVhcigpICYmXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpID09PSB0aGlzLm1pbmltdW1EYXRlLmdldE1vbnRoKCkgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmdldERhdGUoKSA9PT0gdGhpcy5taW5pbXVtRGF0ZS5nZXREYXRlKClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZERhdGVJc1RoZU1heGltdW1EYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm1heGltdW1EYXRlICYmXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpID09PSB0aGlzLm1heGltdW1EYXRlLmdldEZ1bGxZZWFyKCkgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCkgPT09IHRoaXMubWF4aW11bURhdGUuZ2V0TW9udGgoKSAmJlxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZ2V0RGF0ZSgpID09PSB0aGlzLm1heGltdW1EYXRlLmdldERhdGUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldExpc3RIb3Vyc01pbnV0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5ob3VycyA9IHRoaXMuaG91cnMuZmlsdGVyKGhvdXIgPT4gaG91ciAlIHRoaXMuc3RlcC5ob3VycyA9PT0gMCk7XG4gICAgdGhpcy5taW51dGVzID0gdGhpcy5taW51dGVzLmZpbHRlcihtaW51dGUgPT4gbWludXRlICUgdGhpcy5zdGVwLm1pbnV0ZXMgPT09IDApO1xuICAgIHRoaXMuc2Vjb25kcyA9IHRoaXMuc2Vjb25kcy5maWx0ZXIoc2Vjb25kZSA9PiBzZWNvbmRlICUgdGhpcy5zdGVwLnNlY29uZHMgPT09IDApO1xuICB9XG59XG4iLCI8ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInNob3dTZWNvbmRzID8gJ3Nob3ctc2Vjb25kcycgOiAnaGlkZS1zZWNvbmRzJ1wiIGNsYXNzPVwiZGF0ZS10aW1lLXBpY2tlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXJcIj5cbiAgICAgICAgICAgIDxtYXQtY2FsZW5kYXJcbiAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJtaW5pbXVtRGF0ZVwiXG4gICAgICAgICAgICAgICAgW21heERhdGVdPVwibWF4aW11bURhdGVcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZERhdGVcIlxuICAgICAgICAgICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJkYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L21hdC1jYWxlbmRhcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhvdXJzXCIgKm5nSWY9XCIhc2hvd01vYmlsZVVpXCI+XG4gICAgICAgICAgICA8Y2F1Y2EtZGVza3RvcC10aW1lLXBpY2tlciBbZGlzYWJsZWRdPVwie2FsbDogZGlzYWJsZWQuaG91cnMsIHNvbWVPcHRpb25zOiBkaXNhYmxlZC5zb21lSG91cnN9XCIgKHZhbHVlQ2hhbmdlKT1cImhvdXJDaGFuZ2VkKCRldmVudClcIiBbb3B0aW9uc109XCJob3Vyc1wiIFt2YWx1ZV09XCJzZWxlY3RlZEhvdXJcIi8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaG91cnNcIiAqbmdJZj1cInNob3dNb2JpbGVVaVwiPlxuICAgICAgICAgICAgPGNhdWNhLW1vYmlsZS10aW1lLXBpY2tlciAodmFsdWVDaGFuZ2UpPVwiaG91ckNoYW5nZWQoJGV2ZW50KVwiIFtvcHRpb25zXT1cImhvdXJzXCIgW3ZhbHVlXT1cInNlbGVjdGVkSG91clwiIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJob3VyLWFuZC1taW51dGUtc2VwYXJhdG9yXCIgKm5nSWY9XCJzaG93TW9iaWxlVWlcIj46PC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pbnV0ZXNcIiAqbmdJZj1cIiFzaG93TW9iaWxlVWlcIj5cbiAgICAgICAgICAgIDxjYXVjYS1kZXNrdG9wLXRpbWUtcGlja2VyIFtkaXNhYmxlZF09XCJ7YWxsOiBkaXNhYmxlZC5taW51dGVzLCBzb21lT3B0aW9uczogZGlzYWJsZWQuc29tZU1pbnV0ZXN9XCIgKHZhbHVlQ2hhbmdlKT1cIm1pbnV0ZUNoYW5nZWQoJGV2ZW50KVwiIFtvcHRpb25zXT1cIm1pbnV0ZXNcIiBbdmFsdWVdPVwic2VsZWN0ZWRNaW51dGVcIi8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWludXRlc1wiICpuZ0lmPVwic2hvd01vYmlsZVVpXCI+XG4gICAgICAgICAgICA8Y2F1Y2EtbW9iaWxlLXRpbWUtcGlja2VyICh2YWx1ZUNoYW5nZSk9XCJtaW51dGVDaGFuZ2VkKCRldmVudClcIiBbb3B0aW9uc109XCJtaW51dGVzXCIgW3ZhbHVlXT1cInNlbGVjdGVkTWludXRlXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pbnV0ZS1hbmQtc2Vjb25kLXNlcGFyYXRvclwiICpuZ0lmPVwic2hvd1NlY29uZHMgJiYgc2hvd01vYmlsZVVpXCI+OjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Vjb25kc1wiICpuZ0lmPVwic2hvd1NlY29uZHMgJiYgIXNob3dNb2JpbGVVaVwiPlxuICAgICAgICAgICAgPGNhdWNhLWRlc2t0b3AtdGltZS1waWNrZXIgW2Rpc2FibGVkXT1cInthbGw6IGRpc2FibGVkLnNlY29uZHMsIHNvbWVPcHRpb25zOiBkaXNhYmxlZC5zb21lU2Vjb25kc31cIiAodmFsdWVDaGFuZ2UpPVwic2Vjb25kQ2hhbmdlZCgkZXZlbnQpXCIgW29wdGlvbnNdPVwic2Vjb25kc1wiIFt2YWx1ZV09XCJzZWxlY3RlZFNlY29uZFwiLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWNvbmRzXCIgKm5nSWY9XCJzaG93U2Vjb25kcyAmJiBzaG93TW9iaWxlVWlcIj5cbiAgICAgICAgICAgIDxjYXVjYS1tb2JpbGUtdGltZS1waWNrZXIgKHZhbHVlQ2hhbmdlKT1cInNlY29uZENoYW5nZWQoJGV2ZW50KVwiIFtvcHRpb25zXT1cInNlY29uZHNcIiBbdmFsdWVdPVwic2VsZWN0ZWRTZWNvbmRcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucyBhbGlnbj1cImVuZFwiPlxuICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJjbGVhcigpXCIgKm5nSWY9XCJzaG93Q2xlYXJCdXR0b25cIj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2hvd0J1dHRvbkljb25zXCI+Y2xlYXI8L21hdC1pY29uPlxuICAgICAgICB7eydtYXRlcmlhbC5jbGVhcicgfCB0cmFuc2xhdGV9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJjYW5jZWwoKVwiPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzaG93QnV0dG9uSWNvbnNcIj5jYW5jZWw8L21hdC1pY29uPlxuICAgICAgICB7eydtYXRlcmlhbC5jYW5jZWwnIHwgdHJhbnNsYXRlfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNka0ZvY3VzSW5pdGlhbCAoY2xpY2spPVwiY29uZmlybSgpXCI+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInNob3dCdXR0b25JY29uc1wiPmNoZWNrPC9tYXQtaWNvbj5cbiAgICAgICAge3snbWF0ZXJpYWwub2snIHwgdHJhbnNsYXRlfX1cbiAgICA8L2J1dHRvbj5cbjwvZGl2PiJdfQ==
@@ -1,74 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { MatButtonModule } from '@angular/material/button';
3
- import { MatFormFieldModule } from '@angular/material/form-field';
4
- import { MatIconModule } from '@angular/material/icon';
5
- import { MatInputModule } from '@angular/material/input';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/material/button";
8
- import * as i2 from "@angular/material/icon";
9
- export class MobileTimePickerComponent {
10
- constructor() {
11
- this.valueChange = new EventEmitter();
12
- }
13
- valueUp() {
14
- const currentIndex = this.options.indexOf(this.value);
15
- let newValue = 0;
16
- if (currentIndex === this.options.length - 1) {
17
- newValue = this.options[0];
18
- }
19
- else {
20
- newValue = this.options[currentIndex + 1];
21
- }
22
- this.valueChange.emit(newValue);
23
- }
24
- valueDown() {
25
- const currentIndex = this.options.indexOf(this.value);
26
- let newValue = 0;
27
- if (currentIndex === 0) {
28
- newValue = this.options[this.options.length - 1];
29
- }
30
- else {
31
- newValue = this.options[currentIndex - 1];
32
- }
33
- this.valueChange.emit(newValue);
34
- }
35
- static { this.ɵfac = function MobileTimePickerComponent_Factory(t) { return new (t || MobileTimePickerComponent)(); }; }
36
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MobileTimePickerComponent, selectors: [["cauca-mobile-time-picker"]], inputs: { value: "value", options: "options" }, outputs: { valueChange: "valueChange" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 8, vars: 1, consts: [["mat-icon-button", "", 3, "click"]], template: function MobileTimePickerComponent_Template(rf, ctx) { if (rf & 1) {
37
- i0.ɵɵelementStart(0, "button", 0);
38
- i0.ɵɵlistener("click", function MobileTimePickerComponent_Template_button_click_0_listener() { return ctx.valueUp(); });
39
- i0.ɵɵelementStart(1, "mat-icon");
40
- i0.ɵɵtext(2, "keyboard_arrow_up");
41
- i0.ɵɵelementEnd()();
42
- i0.ɵɵelementStart(3, "div");
43
- i0.ɵɵtext(4);
44
- i0.ɵɵelementEnd();
45
- i0.ɵɵelementStart(5, "button", 0);
46
- i0.ɵɵlistener("click", function MobileTimePickerComponent_Template_button_click_5_listener() { return ctx.valueDown(); });
47
- i0.ɵɵelementStart(6, "mat-icon");
48
- i0.ɵɵtext(7, "keyboard_arrow_down");
49
- i0.ɵɵelementEnd()();
50
- } if (rf & 2) {
51
- i0.ɵɵadvance(4);
52
- i0.ɵɵtextInterpolate1("\n", (ctx.value < 10 ? "0" : "") + ctx.value, "\n");
53
- } }, dependencies: [MatButtonModule, i1.MatIconButton, MatIconModule, i2.MatIcon, MatFormFieldModule,
54
- MatInputModule], styles: ["[_nghost-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:70px;font-family:var(--mat-form-field-container-text-font)}.mat-mdc-icon-button[_ngcontent-%COMP%]{height:24px;width:24px;line-height:24px;padding:0}"] }); }
55
- }
56
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MobileTimePickerComponent, [{
57
- type: Component,
58
- args: [{ selector: 'cauca-mobile-time-picker', standalone: true, imports: [
59
- MatButtonModule,
60
- MatIconModule,
61
- MatFormFieldModule,
62
- MatInputModule
63
- ], template: "<button mat-icon-button (click)=\"valueUp()\">\n <mat-icon>keyboard_arrow_up</mat-icon>\n</button>\n<div>\n{{(value < 10 ? '0' : '' ) + value}}\n</div>\n<button mat-icon-button (click)=\"valueDown()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n</button>\n", styles: [":host{display:flex;flex-direction:column;align-items:center;justify-content:center;height:70px;font-family:var(--mat-form-field-container-text-font)}.mat-mdc-icon-button{height:24px;width:24px;line-height:24px;padding:0}\n"] }]
64
- }], null, { value: [{
65
- type: Input,
66
- args: [{ required: true }]
67
- }], options: [{
68
- type: Input,
69
- args: [{ required: true }]
70
- }], valueChange: [{
71
- type: Output
72
- }] }); })();
73
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MobileTimePickerComponent, { className: "MobileTimePickerComponent", filePath: "lib\\inputs\\cauca-date-time-picker\\components\\mobile-time-picker\\mobile-time-picker.component.ts", lineNumber: 19 }); })();
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhdWNhLW1hdGVyaWFsL3NyYy9saWIvaW5wdXRzL2NhdWNhLWRhdGUtdGltZS1waWNrZXIvY29tcG9uZW50cy9tb2JpbGUtdGltZS1waWNrZXIvbW9iaWxlLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhdWNhLW1hdGVyaWFsL3NyYy9saWIvaW5wdXRzL2NhdWNhLWRhdGUtdGltZS1waWNrZXIvY29tcG9uZW50cy9tb2JpbGUtdGltZS1waWNrZXIvbW9iaWxlLXRpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFjekQsTUFBTSxPQUFPLHlCQUF5QjtJQVp0QztRQWdCbUIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBeUIzRDtJQXZCUSxPQUFPO1FBQ1osTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLFlBQVksS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNOLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLFNBQVM7UUFDZCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUM7YUFBTSxDQUFDO1lBQ04sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDOzBGQTVCVSx5QkFBeUI7b0VBQXpCLHlCQUF5QjtZQ2xCdEMsaUNBQTRDO1lBQXBCLHNHQUFTLGFBQVMsSUFBQztZQUN2QyxnQ0FBVTtZQUFBLGlDQUFpQjtZQUMvQixBQUQrQixpQkFBVyxFQUNqQztZQUNULDJCQUFLO1lBQ0wsWUFDQTtZQUFBLGlCQUFNO1lBQ04saUNBQThDO1lBQXRCLHNHQUFTLGVBQVcsSUFBQztZQUN6QyxnQ0FBVTtZQUFBLG1DQUFtQjtZQUNqQyxBQURpQyxpQkFBVyxFQUNuQzs7WUFKVCxlQUNBO1lBREEsMEVBQ0E7NEJES0ksZUFBZSxvQkFDZixhQUFhLGNBQ2Isa0JBQWtCO1lBQ2xCLGNBQWM7O2lGQUtMLHlCQUF5QjtjQVpyQyxTQUFTOzJCQUNFLDBCQUEwQixjQUN4QixJQUFJLFdBQ1A7b0JBQ1AsZUFBZTtvQkFDZixhQUFhO29CQUNiLGtCQUFrQjtvQkFDbEIsY0FBYztpQkFDZjtnQkFLK0IsS0FBSztrQkFBcEMsS0FBSzttQkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7WUFDVyxPQUFPO2tCQUF4QyxLQUFLO21CQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUVSLFdBQVc7a0JBQTNCLE1BQU07O2tGQUpJLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2F1Y2EtbW9iaWxlLXRpbWUtcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9iaWxlLXRpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL21vYmlsZS10aW1lLXBpY2tlci5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgTW9iaWxlVGltZVBpY2tlckNvbXBvbmVudCB7XG4gIEBJbnB1dCh7cmVxdWlyZWQ6IHRydWV9KSBwdWJsaWMgdmFsdWU6IG51bWJlcjtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcHVibGljIG9wdGlvbnM6IG51bWJlcltdO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBwdWJsaWMgdmFsdWVVcCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLm9wdGlvbnMuaW5kZXhPZih0aGlzLnZhbHVlKTtcbiAgICBsZXQgbmV3VmFsdWUgPSAwO1xuICAgIGlmIChjdXJyZW50SW5kZXggPT09IHRoaXMub3B0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICBuZXdWYWx1ZSA9IHRoaXMub3B0aW9uc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VmFsdWUgPSB0aGlzLm9wdGlvbnNbY3VycmVudEluZGV4ICsgMV07XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5ld1ZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWx1ZURvd24oKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5vcHRpb25zLmluZGV4T2YodGhpcy52YWx1ZSk7XG4gICAgbGV0IG5ld1ZhbHVlID0gMDtcbiAgICBpZiAoY3VycmVudEluZGV4ID09PSAwKSB7XG4gICAgICBuZXdWYWx1ZSA9IHRoaXMub3B0aW9uc1t0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gdGhpcy5vcHRpb25zW2N1cnJlbnRJbmRleCAtIDFdO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXdWYWx1ZSk7XG4gIH1cbn1cbiIsIjxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ2YWx1ZVVwKClcIj5cbiAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfdXA8L21hdC1pY29uPlxuPC9idXR0b24+XG48ZGl2Plxue3sodmFsdWUgPCAxMCA/ICcwJyA6ICcnICkgKyB2YWx1ZX19XG48L2Rpdj5cbjxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ2YWx1ZURvd24oKVwiPlxuICAgIDxtYXQtaWNvbj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWRhdGUtdGltZS1waWNrZXItZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhdWNhLW1hdGVyaWFsL3NyYy9saWIvaW5wdXRzL2NhdWNhLWRhdGUtdGltZS1waWNrZXIvbW9kZWxzL2RpYWxvZy1kYXRlLXRpbWUtcGlja2VyLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nRGF0ZVRpbWVQaWNrZXJEYXRhU3RlcCB7XG4gICAgaG91cnM6IG51bWJlcixcbiAgICBtaW51dGVzOiBudW1iZXIsXG4gICAgc2Vjb25kczogbnVtYmVyLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0RhdGVUaW1lUGlja2VyRGF0YURpc2FibGVkIHtcbiAgICBob3VyczogYm9vbGVhbixcbiAgICBzb21lSG91cnM6IG51bWJlcltdLFxuICAgIG1pbnV0ZXM6IGJvb2xlYW4sXG4gICAgc29tZU1pbnV0ZXM6IG51bWJlcltdLFxuICAgIHNlY29uZHM6IGJvb2xlYW4sXG4gICAgc29tZVNlY29uZHM6IG51bWJlcltdLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0RhdGVUaW1lUGlja2VyT3B0aW9ucyB7XG4gICAgc2VsZWN0ZWREYXRlOiBEYXRlLFxuICAgIG1pbmltdW1EYXRlOiBEYXRlLFxuICAgIG1heGltdW1EYXRlOiBEYXRlLFxuICAgIHNob3dTZWNvbmRzOiBib29sZWFuLFxuICAgIHNob3dDbGVhckJ1dHRvbjogYm9vbGVhbixcbiAgICBzaG93QnV0dG9uSWNvbnM6IGJvb2xlYW4sXG4gICAgc3RlcDogRGlhbG9nRGF0ZVRpbWVQaWNrZXJEYXRhU3RlcCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dEYXRlVGltZVBpY2tlclZhbHVlIHtcbiAgICB2YWx1ZTogRGF0ZSxcbn0iXX0=