@elxjs/ui 0.0.170
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/fonts/electroluxsans_1_thin-demo.html +795 -0
- package/assets/fonts/electroluxsans_1_thin-webfont.eot +0 -0
- package/assets/fonts/electroluxsans_1_thin-webfont.svg +22258 -0
- package/assets/fonts/electroluxsans_1_thin-webfont.ttf +0 -0
- package/assets/fonts/electroluxsans_1_thin-webfont.woff +0 -0
- package/assets/fonts/electroluxsans_1_thin-webfont.woff2 +0 -0
- package/assets/fonts/electroluxsans_2_light-demo.html +795 -0
- package/assets/fonts/electroluxsans_2_light-webfont.eot +0 -0
- package/assets/fonts/electroluxsans_2_light-webfont.svg +22261 -0
- package/assets/fonts/electroluxsans_2_light-webfont.ttf +0 -0
- package/assets/fonts/electroluxsans_2_light-webfont.woff +0 -0
- package/assets/fonts/electroluxsans_2_light-webfont.woff2 +0 -0
- package/assets/fonts/electroluxsans_3_regular-demo.html +795 -0
- package/assets/fonts/electroluxsans_3_regular-webfont.eot +0 -0
- package/assets/fonts/electroluxsans_3_regular-webfont.svg +21871 -0
- package/assets/fonts/electroluxsans_3_regular-webfont.ttf +0 -0
- package/assets/fonts/electroluxsans_3_regular-webfont.woff +0 -0
- package/assets/fonts/electroluxsans_3_regular-webfont.woff2 +0 -0
- package/assets/fonts/electroluxsans_4_semibold-demo.html +795 -0
- package/assets/fonts/electroluxsans_4_semibold-webfont.eot +0 -0
- package/assets/fonts/electroluxsans_4_semibold-webfont.svg +24128 -0
- package/assets/fonts/electroluxsans_4_semibold-webfont.ttf +0 -0
- package/assets/fonts/electroluxsans_4_semibold-webfont.woff +0 -0
- package/assets/fonts/electroluxsans_4_semibold-webfont.woff2 +0 -0
- package/assets/fonts/electroluxsans_5_bold-demo.html +795 -0
- package/assets/fonts/electroluxsans_5_bold-webfont.eot +0 -0
- package/assets/fonts/electroluxsans_5_bold-webfont.svg +24066 -0
- package/assets/fonts/electroluxsans_5_bold-webfont.ttf +0 -0
- package/assets/fonts/electroluxsans_5_bold-webfont.woff +0 -0
- package/assets/fonts/electroluxsans_5_bold-webfont.woff2 +0 -0
- package/assets/fonts/electroluxsans_oblique_1_thin-demo.html +795 -0
- package/assets/fonts/electroluxsans_oblique_1_thin-webfont.eot +0 -0
- package/assets/fonts/electroluxsans_oblique_1_thin-webfont.svg +22374 -0
- package/assets/fonts/electroluxsans_oblique_1_thin-webfont.ttf +0 -0
- package/assets/fonts/electroluxsans_oblique_1_thin-webfont.woff +0 -0
- package/assets/fonts/electroluxsans_oblique_1_thin-webfont.woff2 +0 -0
- package/assets/fonts/electroluxsans_oblique_2_light-demo.html +795 -0
- package/assets/fonts/electroluxsans_oblique_2_light-webfont.eot +0 -0
- package/assets/fonts/electroluxsans_oblique_2_light-webfont.svg +22439 -0
- package/assets/fonts/electroluxsans_oblique_2_light-webfont.ttf +0 -0
- package/assets/fonts/electroluxsans_oblique_2_light-webfont.woff +0 -0
- package/assets/fonts/electroluxsans_oblique_2_light-webfont.woff2 +0 -0
- package/assets/fonts/electroluxsans_oblique_3_regular-demo.html +795 -0
- package/assets/fonts/electroluxsans_oblique_3_regular-webfont.eot +0 -0
- package/assets/fonts/electroluxsans_oblique_3_regular-webfont.svg +22295 -0
- package/assets/fonts/electroluxsans_oblique_3_regular-webfont.ttf +0 -0
- package/assets/fonts/electroluxsans_oblique_3_regular-webfont.woff2 +0 -0
- package/assets/fonts/electroluxsans_oblique_4_semibold-demo.html +795 -0
- package/assets/fonts/electroluxsans_oblique_4_semibold-webfont.svg +24396 -0
- package/assets/fonts/electroluxsans_oblique_4_semibold-webfont.ttf +0 -0
- package/assets/fonts/electroluxsans_oblique_4_semibold-webfont.woff +0 -0
- package/assets/fonts/electroluxsans_oblique_4_semibold-webfont.woff2 +0 -0
- package/assets/fonts/electroluxsans_oblique_5_bold-demo.html +795 -0
- package/assets/fonts/electroluxsans_oblique_5_bold-webfont.eot +0 -0
- package/assets/fonts/electroluxsans_oblique_5_bold-webfont.svg +24409 -0
- package/assets/fonts/electroluxsans_oblique_5_bold-webfont.ttf +0 -0
- package/assets/fonts/electroluxsans_oblique_5_bold-webfont.woff +0 -0
- package/assets/fonts/electroluxsans_oblique_5_bold-webfont.woff2 +0 -0
- package/assets/icons/Avatar.svg +5 -0
- package/assets/icons/Bell.svg +5 -0
- package/assets/icons/Block.svg +5 -0
- package/assets/icons/Blocked.svg +3 -0
- package/assets/icons/Book.svg +5 -0
- package/assets/icons/Calendar.svg +5 -0
- package/assets/icons/Camera.svg +3 -0
- package/assets/icons/Cart.svg +8 -0
- package/assets/icons/Chat.svg +6 -0
- package/assets/icons/Check.svg +4 -0
- package/assets/icons/Check_Tick.svg +5 -0
- package/assets/icons/Chevron_Down.svg +3 -0
- package/assets/icons/Chevron_Left.svg +3 -0
- package/assets/icons/Chevron_Left_Double.svg +8 -0
- package/assets/icons/Chevron_Right.svg +3 -0
- package/assets/icons/Chevron_Right_Double.svg +8 -0
- package/assets/icons/Chevron_Up.svg +3 -0
- package/assets/icons/Close.svg +11 -0
- package/assets/icons/Compare_Products.svg +5 -0
- package/assets/icons/Config.svg +5 -0
- package/assets/icons/Config_2.svg +5 -0
- package/assets/icons/Discount.svg +5 -0
- package/assets/icons/Edit.svg +5 -0
- package/assets/icons/Edit_2.svg +7 -0
- package/assets/icons/Eye_Hide.svg +5 -0
- package/assets/icons/Eye_View.svg +4 -0
- package/assets/icons/FAQ.svg +5 -0
- package/assets/icons/Facebook.svg +10 -0
- package/assets/icons/Fridge_And_Freezer.svg +10 -0
- package/assets/icons/Gift.svg +3 -0
- package/assets/icons/Hide.svg +9 -0
- package/assets/icons/Info.svg +6 -0
- package/assets/icons/Instagram.svg +10 -0
- package/assets/icons/Like.svg +3 -0
- package/assets/icons/Like_filled.svg +3 -0
- package/assets/icons/Link.svg +7 -0
- package/assets/icons/Load.svg +18 -0
- package/assets/icons/Loading.webp +0 -0
- package/assets/icons/Location.svg +8 -0
- package/assets/icons/Lock.svg +3 -0
- package/assets/icons/Logo.svg +20 -0
- package/assets/icons/Logo_new.svg +13 -0
- package/assets/icons/Mail.svg +6 -0
- package/assets/icons/Maintenance.svg +9 -0
- package/assets/icons/Nav.svg +5 -0
- package/assets/icons/Phone.svg +5 -0
- package/assets/icons/Pin.svg +3 -0
- package/assets/icons/Plus.svg +8 -0
- package/assets/icons/PriceTag.svg +6 -0
- package/assets/icons/Screwdriver.svg +10 -0
- package/assets/icons/Search.svg +6 -0
- package/assets/icons/Share.svg +3 -0
- package/assets/icons/Shield.svg +6 -0
- package/assets/icons/Star.svg +12 -0
- package/assets/icons/Star_Filled.svg +3 -0
- package/assets/icons/Stars.svg +9 -0
- package/assets/icons/Stars_2.svg +3 -0
- package/assets/icons/Top_Rating.svg +3 -0
- package/assets/icons/Trash.svg +5 -0
- package/assets/icons/Warning.svg +9 -0
- package/assets/icons/Whatsapp.svg +5 -0
- package/assets/icons/Youtube.svg +10 -0
- package/assets/images/placeholder.webp +0 -0
- package/assets/images/placeholder_2.webp +0 -0
- package/assets/images/placeholder_3.webp +0 -0
- package/assets/styles/colors.scss +36 -0
- package/assets/styles/fonts.scss +102 -0
- package/assets/styles/inputs.scss +139 -0
- package/assets/styles/typography.scss +117 -0
- package/esm2022/elxjs-ui.mjs +5 -0
- package/esm2022/index.mjs +2 -0
- package/esm2022/lib/components/accordion/accordion.component.mjs +28 -0
- package/esm2022/lib/components/accordion/index.mjs +2 -0
- package/esm2022/lib/components/arrow-link/arrow-link.component.mjs +29 -0
- package/esm2022/lib/components/arrow-link/index.mjs +2 -0
- package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +48 -0
- package/esm2022/lib/components/breadcrumb/index.mjs +2 -0
- package/esm2022/lib/components/button/button.component.mjs +89 -0
- package/esm2022/lib/components/button/index.mjs +2 -0
- package/esm2022/lib/components/card-1/card1.component.mjs +20 -0
- package/esm2022/lib/components/card-1/index.mjs +2 -0
- package/esm2022/lib/components/card-2/card2.component.mjs +16 -0
- package/esm2022/lib/components/card-2/index.mjs +2 -0
- package/esm2022/lib/components/card-3/card3.component.mjs +18 -0
- package/esm2022/lib/components/card-3/index.mjs +2 -0
- package/esm2022/lib/components/card-4/card4.component.mjs +16 -0
- package/esm2022/lib/components/card-4/index.mjs +2 -0
- package/esm2022/lib/components/carousel/carousel.component.mjs +155 -0
- package/esm2022/lib/components/carousel/index.mjs +2 -0
- package/esm2022/lib/components/chip/chip.component.mjs +27 -0
- package/esm2022/lib/components/chip/index.mjs +2 -0
- package/esm2022/lib/components/datatable/datatable.component.mjs +148 -0
- package/esm2022/lib/components/datatable/datatable.component.types.mjs +2 -0
- package/esm2022/lib/components/datatable/index.mjs +3 -0
- package/esm2022/lib/components/datepicker/datepicker.component.mjs +382 -0
- package/esm2022/lib/components/datepicker/index.mjs +2 -0
- package/esm2022/lib/components/dropdown/dropdown.component.mjs +145 -0
- package/esm2022/lib/components/dropdown/index.mjs +2 -0
- package/esm2022/lib/components/dropdown-multiple/dropdown-multiple.component.mjs +76 -0
- package/esm2022/lib/components/dropdown-multiple/index.mjs +2 -0
- package/esm2022/lib/components/icon/icon.component.mjs +58 -0
- package/esm2022/lib/components/icon/index.mjs +2 -0
- package/esm2022/lib/components/index.mjs +63 -0
- package/esm2022/lib/components/input-search/index.mjs +2 -0
- package/esm2022/lib/components/input-search/input-search.component.mjs +73 -0
- package/esm2022/lib/components/input-search-modal/index.mjs +2 -0
- package/esm2022/lib/components/input-search-modal/input-search-modal.component.mjs +29 -0
- package/esm2022/lib/components/loading/index.mjs +2 -0
- package/esm2022/lib/components/loading/loading.component.mjs +21 -0
- package/esm2022/lib/components/loading-2/index.mjs +2 -0
- package/esm2022/lib/components/loading-2/loading-2.component.mjs +16 -0
- package/esm2022/lib/components/modal/index.mjs +2 -0
- package/esm2022/lib/components/modal/modal.component.mjs +31 -0
- package/esm2022/lib/components/paginator/index.mjs +2 -0
- package/esm2022/lib/components/paginator/paginator.component.mjs +128 -0
- package/esm2022/lib/components/stepbar/index.mjs +2 -0
- package/esm2022/lib/components/stepbar/stepbar.component.mjs +41 -0
- package/esm2022/lib/components/switch/index.mjs +2 -0
- package/esm2022/lib/components/switch/switch.component.mjs +47 -0
- package/esm2022/lib/components/toast/index.mjs +2 -0
- package/esm2022/lib/components/toast/toast.component.mjs +28 -0
- package/esm2022/lib/index.mjs +4 -0
- package/esm2022/lib/modules/electrolux-design-system.module.mjs +35 -0
- package/esm2022/lib/modules/index.mjs +2 -0
- package/esm2022/lib/services/index.mjs +2 -0
- package/esm2022/lib/services/toaster.service.mjs +53 -0
- package/fesm2022/elxjs-ui.mjs +1647 -0
- package/fesm2022/elxjs-ui.mjs.map +1 -0
- package/index.d.ts +1 -0
- package/lib/components/accordion/accordion.component.d.ts +10 -0
- package/lib/components/accordion/index.d.ts +1 -0
- package/lib/components/arrow-link/arrow-link.component.d.ts +9 -0
- package/lib/components/arrow-link/index.d.ts +1 -0
- package/lib/components/breadcrumb/breadcrumb.component.d.ts +17 -0
- package/lib/components/breadcrumb/index.d.ts +1 -0
- package/lib/components/button/button.component.d.ts +27 -0
- package/lib/components/button/index.d.ts +1 -0
- package/lib/components/card-1/card1.component.d.ts +8 -0
- package/lib/components/card-1/index.d.ts +1 -0
- package/lib/components/card-2/card2.component.d.ts +7 -0
- package/lib/components/card-2/index.d.ts +1 -0
- package/lib/components/card-3/card3.component.d.ts +8 -0
- package/lib/components/card-3/index.d.ts +1 -0
- package/lib/components/card-4/card4.component.d.ts +7 -0
- package/lib/components/card-4/index.d.ts +1 -0
- package/lib/components/carousel/carousel.component.d.ts +41 -0
- package/lib/components/carousel/index.d.ts +1 -0
- package/lib/components/chip/chip.component.d.ts +10 -0
- package/lib/components/chip/index.d.ts +1 -0
- package/lib/components/datatable/datatable.component.d.ts +43 -0
- package/lib/components/datatable/datatable.component.types.d.ts +55 -0
- package/lib/components/datatable/index.d.ts +2 -0
- package/lib/components/datepicker/datepicker.component.d.ts +81 -0
- package/lib/components/datepicker/index.d.ts +1 -0
- package/lib/components/dropdown/dropdown.component.d.ts +42 -0
- package/lib/components/dropdown/index.d.ts +1 -0
- package/lib/components/dropdown-multiple/dropdown-multiple.component.d.ts +27 -0
- package/lib/components/dropdown-multiple/index.d.ts +1 -0
- package/lib/components/icon/icon.component.d.ts +29 -0
- package/lib/components/icon/index.d.ts +1 -0
- package/lib/components/index.d.ts +26 -0
- package/lib/components/input-search/index.d.ts +1 -0
- package/lib/components/input-search/input-search.component.d.ts +26 -0
- package/lib/components/input-search-modal/index.d.ts +1 -0
- package/lib/components/input-search-modal/input-search-modal.component.d.ts +13 -0
- package/lib/components/loading/index.d.ts +1 -0
- package/lib/components/loading/loading.component.d.ts +7 -0
- package/lib/components/loading-2/index.d.ts +1 -0
- package/lib/components/loading-2/loading-2.component.d.ts +6 -0
- package/lib/components/modal/index.d.ts +1 -0
- package/lib/components/modal/modal.component.d.ts +10 -0
- package/lib/components/paginator/index.d.ts +1 -0
- package/lib/components/paginator/paginator.component.d.ts +33 -0
- package/lib/components/stepbar/index.d.ts +1 -0
- package/lib/components/stepbar/stepbar.component.d.ts +14 -0
- package/lib/components/switch/index.d.ts +1 -0
- package/lib/components/switch/switch.component.d.ts +10 -0
- package/lib/components/toast/index.d.ts +1 -0
- package/lib/components/toast/toast.component.d.ts +11 -0
- package/lib/index.d.ts +3 -0
- package/lib/modules/electrolux-design-system.module.d.ts +25 -0
- package/lib/modules/index.d.ts +1 -0
- package/lib/services/index.d.ts +1 -0
- package/lib/services/toaster.service.d.ts +14 -0
- package/package.json +29 -0
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { FormsModule, NG_VALUE_ACCESSOR, NgControl, ReactiveFormsModule } from '@angular/forms';
|
|
3
|
+
import { Component, EventEmitter, Input, Output, HostListener, ViewChild, forwardRef } from '@angular/core';
|
|
4
|
+
import { EluxIcon } from '../icon';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
export class EluxDatepicker {
|
|
8
|
+
constructor(injector) {
|
|
9
|
+
this.injector = injector;
|
|
10
|
+
this.value = '';
|
|
11
|
+
this.locale = 'pt-BR';
|
|
12
|
+
this.idInput = '';
|
|
13
|
+
this.placeholder = '00/00/0000';
|
|
14
|
+
this.dateSelected = new EventEmitter();
|
|
15
|
+
this.invalidDate = new EventEmitter();
|
|
16
|
+
this.disabled = false;
|
|
17
|
+
this.showCalendar = false;
|
|
18
|
+
this.pickerView = 'week';
|
|
19
|
+
this.currentDate = new Date();
|
|
20
|
+
this.selectedDate = null;
|
|
21
|
+
this.formatedDate = '';
|
|
22
|
+
this.days = [];
|
|
23
|
+
this.months = [];
|
|
24
|
+
this.years = [];
|
|
25
|
+
this.onChange = () => undefined;
|
|
26
|
+
this.onTouched = () => undefined;
|
|
27
|
+
}
|
|
28
|
+
injectParentFormControl() {
|
|
29
|
+
const ngControl = this.injector.get(NgControl, null);
|
|
30
|
+
if (ngControl) {
|
|
31
|
+
this.parentFormControl = ngControl.control;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
writeValue(value) {
|
|
35
|
+
this.formatedDate = value;
|
|
36
|
+
this.onBlur();
|
|
37
|
+
}
|
|
38
|
+
registerOnChange(fn) {
|
|
39
|
+
this.onChange = fn;
|
|
40
|
+
}
|
|
41
|
+
registerOnTouched(fn) {
|
|
42
|
+
this.onTouched = fn;
|
|
43
|
+
}
|
|
44
|
+
get isTouched() {
|
|
45
|
+
return this.parentFormControl?.touched || this.parentFormControl?.dirty;
|
|
46
|
+
}
|
|
47
|
+
get isInvalid() {
|
|
48
|
+
return this.parentFormControl?.invalid;
|
|
49
|
+
}
|
|
50
|
+
headerDate() {
|
|
51
|
+
return `${this.currentDate.toLocaleString(this.locale, {
|
|
52
|
+
month: 'long',
|
|
53
|
+
})} ${this.currentDate.getFullYear()}`;
|
|
54
|
+
}
|
|
55
|
+
headerDateWeek() {
|
|
56
|
+
const daysOfWeek = [];
|
|
57
|
+
const baseDate = new Date();
|
|
58
|
+
for (let i = 0; i < 7; i++) {
|
|
59
|
+
const day = new Date(baseDate.setDate(baseDate.getDate() - baseDate.getDay() + i));
|
|
60
|
+
daysOfWeek.push(day.toLocaleDateString(this.locale, { weekday: 'narrow' }));
|
|
61
|
+
}
|
|
62
|
+
return daysOfWeek;
|
|
63
|
+
}
|
|
64
|
+
ngOnInit() {
|
|
65
|
+
this.injectParentFormControl();
|
|
66
|
+
if (this.value) {
|
|
67
|
+
this.formatedDate = this.value;
|
|
68
|
+
this.onBlur();
|
|
69
|
+
}
|
|
70
|
+
this.generateCalendar(this.currentDate);
|
|
71
|
+
}
|
|
72
|
+
setDisabledState(isDisabled) {
|
|
73
|
+
this.disabled = isDisabled;
|
|
74
|
+
}
|
|
75
|
+
ngOnChanges(changes) {
|
|
76
|
+
if (changes['value'] && !changes['value'].isFirstChange()) {
|
|
77
|
+
this.formatedDate = this.value;
|
|
78
|
+
this.onBlur();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
onChangeValue(event) {
|
|
82
|
+
const input = event.target;
|
|
83
|
+
let value = input.value.replace(/\D/g, '');
|
|
84
|
+
const separator = this.detectLocaleDateSeparator(this.locale);
|
|
85
|
+
if (value.length <= 2) {
|
|
86
|
+
this.formatedDate = value;
|
|
87
|
+
}
|
|
88
|
+
else if (value.length <= 4) {
|
|
89
|
+
this.formatedDate = `${value.slice(0, 2)}${separator}${value.slice(2)}`;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
this.formatedDate = `${value.slice(0, 2)}${separator}${value.slice(2, 4)}${separator}${value.slice(4, 8)}`;
|
|
93
|
+
}
|
|
94
|
+
input.value = this.formatedDate;
|
|
95
|
+
input.setSelectionRange(input.value.length, input.value.length);
|
|
96
|
+
}
|
|
97
|
+
detectLocaleDateSeparator(locale) {
|
|
98
|
+
const sampleDate = new Date(2000, 0, 15);
|
|
99
|
+
const formatted = sampleDate.toLocaleDateString(locale);
|
|
100
|
+
const match = formatted.match(/[^0-9]/);
|
|
101
|
+
return match ? match[0] : '/';
|
|
102
|
+
}
|
|
103
|
+
toggleCalendar() {
|
|
104
|
+
this.showCalendar = !this.showCalendar;
|
|
105
|
+
if (this.showCalendar) {
|
|
106
|
+
this.pickerView = 'week';
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
changeView() {
|
|
110
|
+
switch (this.pickerView) {
|
|
111
|
+
case 'week':
|
|
112
|
+
this.pickerView = 'month';
|
|
113
|
+
this.generateMonths();
|
|
114
|
+
break;
|
|
115
|
+
case 'month':
|
|
116
|
+
this.pickerView = 'year';
|
|
117
|
+
this.generateYears();
|
|
118
|
+
break;
|
|
119
|
+
case 'year':
|
|
120
|
+
break;
|
|
121
|
+
default:
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
closeCalendar() {
|
|
126
|
+
this.showCalendar = false;
|
|
127
|
+
}
|
|
128
|
+
previous() {
|
|
129
|
+
switch (this.pickerView) {
|
|
130
|
+
case 'week':
|
|
131
|
+
this.prevMonth();
|
|
132
|
+
break;
|
|
133
|
+
case 'month':
|
|
134
|
+
this.prevYear(1);
|
|
135
|
+
break;
|
|
136
|
+
case 'year':
|
|
137
|
+
this.prevYear(30);
|
|
138
|
+
break;
|
|
139
|
+
default:
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
next() {
|
|
144
|
+
switch (this.pickerView) {
|
|
145
|
+
case 'week':
|
|
146
|
+
this.nextMonth();
|
|
147
|
+
break;
|
|
148
|
+
case 'month':
|
|
149
|
+
this.nextYear(1);
|
|
150
|
+
break;
|
|
151
|
+
case 'year':
|
|
152
|
+
this.nextYear(30);
|
|
153
|
+
break;
|
|
154
|
+
default:
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
prevMonth() {
|
|
159
|
+
this.currentDate = new Date(this.currentDate.setMonth(this.currentDate.getMonth() - 1));
|
|
160
|
+
this.generateCalendar(this.currentDate);
|
|
161
|
+
}
|
|
162
|
+
nextMonth() {
|
|
163
|
+
this.currentDate = new Date(this.currentDate.setMonth(this.currentDate.getMonth() + 1));
|
|
164
|
+
this.generateCalendar(this.currentDate);
|
|
165
|
+
}
|
|
166
|
+
prevYear(yearQtde) {
|
|
167
|
+
this.onChangeYear(this.currentDate.getFullYear() - yearQtde);
|
|
168
|
+
this.generateYears();
|
|
169
|
+
}
|
|
170
|
+
nextYear(yearQtde) {
|
|
171
|
+
this.onChangeYear(this.currentDate.getFullYear() + yearQtde);
|
|
172
|
+
this.generateYears();
|
|
173
|
+
}
|
|
174
|
+
selectDate(day) {
|
|
175
|
+
const selected = new Date(this.currentDate.getFullYear(), this.currentDate.getMonth(), day.day);
|
|
176
|
+
this.selectedDate = selected;
|
|
177
|
+
this.formatedDate = this.selectedDate.toLocaleDateString(this.locale, {
|
|
178
|
+
day: '2-digit',
|
|
179
|
+
month: '2-digit',
|
|
180
|
+
year: 'numeric',
|
|
181
|
+
});
|
|
182
|
+
this.generateCalendar(this.currentDate);
|
|
183
|
+
this.closeCalendar();
|
|
184
|
+
this.onBlur();
|
|
185
|
+
}
|
|
186
|
+
selectMonth(monthValue) {
|
|
187
|
+
const maxDate = this.maxDate ? new Date(this.maxDate) : null;
|
|
188
|
+
const selectedMonth = new Date(this.currentDate.getFullYear(), monthValue, 1);
|
|
189
|
+
if (maxDate && selectedMonth > new Date(maxDate.getFullYear(), maxDate.getMonth(), 1)) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
this.currentDate = new Date(this.currentDate.getFullYear(), monthValue, 10);
|
|
193
|
+
this.pickerView = 'week';
|
|
194
|
+
this.generateCalendar(this.currentDate);
|
|
195
|
+
}
|
|
196
|
+
onChangeYear(year) {
|
|
197
|
+
this.currentDate = new Date(this.currentDate.setFullYear(year));
|
|
198
|
+
this.generateMonths();
|
|
199
|
+
}
|
|
200
|
+
selectYear(year) {
|
|
201
|
+
this.onChangeYear(year);
|
|
202
|
+
this.pickerView = 'month';
|
|
203
|
+
}
|
|
204
|
+
generateCalendar(date) {
|
|
205
|
+
this.days = [];
|
|
206
|
+
const year = date.getFullYear();
|
|
207
|
+
const month = date.getMonth();
|
|
208
|
+
const minDate = this.minDate ? new Date(this.minDate) : null;
|
|
209
|
+
const maxDate = this.maxDate ? new Date(this.maxDate) : null;
|
|
210
|
+
const today = new Date();
|
|
211
|
+
const isTodayMonth = today.getMonth() === month && today.getFullYear() === year;
|
|
212
|
+
const selectedYear = this.selectedDate?.getFullYear();
|
|
213
|
+
const selectedMonth = this.selectedDate?.getMonth();
|
|
214
|
+
const selectedDay = this.selectedDate?.getDate();
|
|
215
|
+
const firstWeekDayOfMonth = new Date(year, month, 1).getDay();
|
|
216
|
+
const lastWeekDayOfMonth = new Date(year, month + 1, 0).getDate();
|
|
217
|
+
// Preenche os dias do mês anterior, se necessário
|
|
218
|
+
for (let i = firstWeekDayOfMonth; i > 0; i--) {
|
|
219
|
+
this.days.push({ day: 0, disabled: true });
|
|
220
|
+
}
|
|
221
|
+
// Preenche os dias do mês atual
|
|
222
|
+
for (let i = 1; i <= lastWeekDayOfMonth; i++) {
|
|
223
|
+
const dateValue = new Date(year, month, i);
|
|
224
|
+
const isToday = isTodayMonth && today.getDate() === i;
|
|
225
|
+
const isSelected = selectedYear === year && selectedMonth === month && selectedDay === i;
|
|
226
|
+
const disabled = ((minDate && dateValue < minDate) || (maxDate && dateValue > maxDate)) ?? false;
|
|
227
|
+
this.days.push({ day: i, today: isToday, selected: isSelected, disabled: disabled });
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
generateMonths() {
|
|
231
|
+
this.months = [];
|
|
232
|
+
const currentYear = this.currentDate.getFullYear();
|
|
233
|
+
const maxDate = this.maxDate ? new Date(this.maxDate) : null;
|
|
234
|
+
const minDate = this.minDate ? new Date(this.minDate) : null;
|
|
235
|
+
for (let i = 0; i < 12; i++) {
|
|
236
|
+
// Usar o dia 1 para evitar problemas com meses que não têm 31 dias
|
|
237
|
+
const dateValue = new Date(currentYear, i, 1);
|
|
238
|
+
const isDisabled = ((minDate && dateValue < minDate) || (maxDate && dateValue > maxDate)) ?? false;
|
|
239
|
+
this.months.push({ value: i, text: dateValue.toLocaleString(this.locale, { month: 'long' }), disabled: isDisabled });
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
generateYears() {
|
|
243
|
+
this.years = [];
|
|
244
|
+
const currentYear = this.currentDate.getFullYear();
|
|
245
|
+
const maxDate = this.maxDate ? new Date(this.maxDate) : null;
|
|
246
|
+
const minDate = this.minDate ? new Date(this.minDate) : null;
|
|
247
|
+
for (let i = currentYear - 19; i <= currentYear + 10; i++) {
|
|
248
|
+
const isDisabled = ((minDate && i < minDate.getFullYear()) || (maxDate && i > maxDate.getFullYear())) ?? false;
|
|
249
|
+
this.years.push({ value: i, disabled: isDisabled });
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
validDate(date) {
|
|
253
|
+
return date instanceof Date && !isNaN(date.getTime());
|
|
254
|
+
}
|
|
255
|
+
onBlur() {
|
|
256
|
+
const order = this.detectDateOrder(this.locale);
|
|
257
|
+
const separator = this.detectDateSeparator(this.formatedDate);
|
|
258
|
+
const parts = this.formatedDate.split(separator).map(Number);
|
|
259
|
+
let isValid = false;
|
|
260
|
+
let date = undefined;
|
|
261
|
+
if (parts.length === 3 && !parts.some(isNaN)) {
|
|
262
|
+
const dateMap = {};
|
|
263
|
+
[dateMap[order[0]], dateMap[order[1]], dateMap[order[2]]] = parts;
|
|
264
|
+
const { day, month, year } = dateMap;
|
|
265
|
+
date = new Date(year, month - 1, day);
|
|
266
|
+
isValid = this.validDate(date) && date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day;
|
|
267
|
+
}
|
|
268
|
+
this.onTouched();
|
|
269
|
+
this.onChange(this.formatedDate);
|
|
270
|
+
if (isValid && date) {
|
|
271
|
+
this.dateSelected.emit(this.formatedDate);
|
|
272
|
+
this.selectedDate = date;
|
|
273
|
+
this.generateCalendar(this.currentDate);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
this.invalidDate.emit(this.formatedDate);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
detectDateOrder(locale) {
|
|
280
|
+
const sample = new Date(2025, 10, 23); // 23/11/2025
|
|
281
|
+
const formatted = new Intl.DateTimeFormat(locale).format(sample);
|
|
282
|
+
const parts = formatted.match(/\d+/g);
|
|
283
|
+
if (!parts || parts.length !== 3)
|
|
284
|
+
return ['year', 'month', 'day']; // fallback
|
|
285
|
+
const order = [];
|
|
286
|
+
for (const part of parts) {
|
|
287
|
+
if (part === '23')
|
|
288
|
+
order.push('day');
|
|
289
|
+
else if (part === '11')
|
|
290
|
+
order.push('month');
|
|
291
|
+
else if (part === '2025')
|
|
292
|
+
order.push('year');
|
|
293
|
+
}
|
|
294
|
+
return order;
|
|
295
|
+
}
|
|
296
|
+
detectDateSeparator(dateStr) {
|
|
297
|
+
if (dateStr.includes('/'))
|
|
298
|
+
return '/';
|
|
299
|
+
if (dateStr.includes('-'))
|
|
300
|
+
return '-';
|
|
301
|
+
return ''; // fallback
|
|
302
|
+
}
|
|
303
|
+
clickOutside(event) {
|
|
304
|
+
const target = event.target;
|
|
305
|
+
if (!target.closest('.date-picker') && !target.closest('.month-body') && !target.closest('.year-body')) {
|
|
306
|
+
this.showCalendar = false;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
isPreviousDisabled() {
|
|
310
|
+
if (!this.minDate) {
|
|
311
|
+
return false;
|
|
312
|
+
}
|
|
313
|
+
const minDate = new Date(this.minDate);
|
|
314
|
+
switch (this.pickerView) {
|
|
315
|
+
case 'week':
|
|
316
|
+
return this.currentDate.getFullYear() === minDate.getFullYear() && this.currentDate.getMonth() === minDate.getMonth();
|
|
317
|
+
case 'month':
|
|
318
|
+
return this.currentDate.getFullYear() === minDate.getFullYear();
|
|
319
|
+
case 'year':
|
|
320
|
+
return this.currentDate.getFullYear() - 30 < minDate.getFullYear();
|
|
321
|
+
default:
|
|
322
|
+
return false;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
isNextDisabled() {
|
|
326
|
+
if (!this.maxDate) {
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
const maxDate = new Date(this.maxDate);
|
|
330
|
+
switch (this.pickerView) {
|
|
331
|
+
case 'week':
|
|
332
|
+
return this.currentDate.getFullYear() === maxDate.getFullYear() && this.currentDate.getMonth() === maxDate.getMonth();
|
|
333
|
+
case 'month':
|
|
334
|
+
return this.currentDate.getFullYear() === maxDate.getFullYear();
|
|
335
|
+
case 'year':
|
|
336
|
+
return this.currentDate.getFullYear() + 30 > maxDate.getFullYear();
|
|
337
|
+
default:
|
|
338
|
+
return false;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EluxDatepicker, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
342
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: EluxDatepicker, isStandalone: true, selector: "lib-elux-datepicker", inputs: { value: "value", locale: "locale", idInput: "idInput", placeholder: "placeholder", minDate: "minDate", maxDate: "maxDate" }, outputs: { dateSelected: "dateSelected", invalidDate: "invalidDate" }, host: { listeners: { "document:click": "clickOutside($event)" } }, providers: [
|
|
343
|
+
{
|
|
344
|
+
provide: NG_VALUE_ACCESSOR,
|
|
345
|
+
useExisting: forwardRef(() => EluxDatepicker),
|
|
346
|
+
multi: true,
|
|
347
|
+
},
|
|
348
|
+
], viewQueries: [{ propertyName: "datepicker", first: true, predicate: ["datepicker"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"date-picker\" #datepicker>\r\n <div class=\"div-calendar-icon\" (click)=\"!disabled ? toggleCalendar() : ''\">\r\n <lib-elux-icon class=\"calendar-icon\" [icon]=\"'Calendar.svg'\" [color]=\"'#011E41'\" [size]=\"'24'\" [sizeType]=\"'px'\"></lib-elux-icon>\r\n </div>\r\n <input\r\n [ngClass]=\"{\r\n 'date-input': true,\r\n 'ng-invalid': isInvalid,\r\n 'ng-touched': isTouched,\r\n }\"\r\n [value]=\"formatedDate\"\r\n (input)=\"onChangeValue($event)\"\r\n [id]=\"idInput\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n maxlength=\"10\"\r\n type=\"text\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <div class=\"calendar\" *ngIf=\"showCalendar\">\r\n <div class=\"calendar-header\">\r\n <div class=\"previous\" (click)=\"previous()\">\r\n <lib-elux-icon [hidden]=\"isPreviousDisabled()\" [icon]=\"'Chevron_Left.svg'\" [size]=\"'22'\" [sizeType]=\"'px'\"> </lib-elux-icon>\r\n </div>\r\n <span (click)=\"changeView()\">{{ pickerView === 'week' ? headerDate() : currentDate.getFullYear() }}</span>\r\n <div class=\"next\" (click)=\"next()\">\r\n <lib-elux-icon [hidden]=\"isNextDisabled()\" [icon]=\"'Chevron_Right.svg'\" [size]=\"'22'\" [sizeType]=\"'px'\"> </lib-elux-icon>\r\n </div>\r\n </div>\r\n <div class=\"calendar-body\" *ngIf=\"pickerView === 'week'\">\r\n <div class=\"day-labels\">\r\n <span *ngFor=\"let day of headerDateWeek()\">{{ day }}</span>\r\n </div>\r\n <ng-container *ngFor=\"let day of days\">\r\n <div class=\"day\" [ngClass]=\"{ disabled: day.disabled, today: day.today, selected: day.selected }\" (click)=\"day.disabled ? null : selectDate(day)\">\r\n <span>{{ day.day }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"year-body\" *ngIf=\"pickerView === 'year'\">\r\n <ng-container *ngFor=\"let year of years\">\r\n <div class=\"year\" *ngIf=\"!year.disabled\" (click)=\"!year.disabled && selectYear(year.value)\">\r\n {{ year.value }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"month-body\" *ngIf=\"pickerView === 'month'\">\r\n <ng-container *ngFor=\"let month of months\">\r\n <div class=\"month\" *ngIf=\"!month.disabled\" (click)=\"!month.disabled && selectMonth(month.value)\">\r\n {{ month.text }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".display{font-family:Electrolux Sans;font-size:48px;font-weight:700;line-height:56px}.heading-1{font-family:Electrolux Sans;font-size:34px;font-weight:700;line-height:40px}.heading-2{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body,:host .month-body .month,:host .year-body .year,:host .calendar-body .day,:host .calendar-body .day-labels,:host .calendar-header span{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}@media screen and (max-width: 768px){.display{font-family:Electrolux Sans;font-size:40px;font-weight:700;line-height:46px}.heading-1{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-2{font-family:Electrolux Sans;font-size:24px;font-weight:600;line-height:28px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body,:host .month-body .month,:host .year-body .year,:host .calendar-body .day,:host .calendar-body .day-labels,:host .calendar-header span{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}}:host .date-picker{position:relative}:host .div-calendar-icon{border-left:solid 1px #7A8A9B;height:100%;position:absolute;right:0;display:flex;justify-content:center;align-items:center;width:50px;cursor:pointer}:host .calendar{position:absolute;top:50px;left:0;background:#f4f5f7;border-radius:2px;box-shadow:4px 4px 8px #0000001a;padding:32px 24px;z-index:1000}:host .calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;border-bottom:solid 1px #DEE7EA;padding-bottom:8px}:host .calendar-header button{background:none;border:none;cursor:pointer;font-size:18px}:host .calendar-header span{font-weight:600;color:#515253;cursor:pointer}:host .calendar-body{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}:host .calendar-body .day-labels{display:contents;text-align:center;margin-bottom:5px;font-weight:600;color:#515253}:host .calendar-body .day{font-size:12px;color:#515253;width:40px;height:40px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease-in-out;border-radius:50%}:host .calendar-body .day:not(.disabled):hover{background:#dee7ea}:host .calendar-body .day.disabled{cursor:default;height:0px}:host .calendar-body .day.disabled span{display:none}:host .calendar-body .day:not(.disabled).today{border:1px solid #011E41}:host .calendar-body .day:not(.disabled).selected{font-size:12px;font-weight:600;background:#011e41;color:#fff}:host .previous,:host .next{cursor:pointer;width:25px}:host .year-body{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}:host .year-body .year{color:#515253;text-align:center;cursor:pointer;display:flex;align-items:center;justify-content:center;width:45px;height:45px;transition:all .15s ease-in-out}:host .year-body .year:hover{background:#dee7ea;border-radius:50%}:host .month-body{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}:host .month-body .month{color:#515253;text-align:center;cursor:pointer;display:flex;align-items:center;justify-content:center;width:auto;height:40px;transition:all .15s ease-in-out}:host .month-body .month:hover{color:#c9c9ca}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: EluxIcon, selector: "lib-elux-icon", inputs: ["color", "useSubscription", "icon", "description", "size", "height", "width", "sizeType"] }] }); }
|
|
349
|
+
}
|
|
350
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EluxDatepicker, decorators: [{
|
|
351
|
+
type: Component,
|
|
352
|
+
args: [{ selector: 'lib-elux-datepicker', standalone: true, imports: [CommonModule, ReactiveFormsModule, FormsModule, EluxIcon], providers: [
|
|
353
|
+
{
|
|
354
|
+
provide: NG_VALUE_ACCESSOR,
|
|
355
|
+
useExisting: forwardRef(() => EluxDatepicker),
|
|
356
|
+
multi: true,
|
|
357
|
+
},
|
|
358
|
+
], template: "<div class=\"date-picker\" #datepicker>\r\n <div class=\"div-calendar-icon\" (click)=\"!disabled ? toggleCalendar() : ''\">\r\n <lib-elux-icon class=\"calendar-icon\" [icon]=\"'Calendar.svg'\" [color]=\"'#011E41'\" [size]=\"'24'\" [sizeType]=\"'px'\"></lib-elux-icon>\r\n </div>\r\n <input\r\n [ngClass]=\"{\r\n 'date-input': true,\r\n 'ng-invalid': isInvalid,\r\n 'ng-touched': isTouched,\r\n }\"\r\n [value]=\"formatedDate\"\r\n (input)=\"onChangeValue($event)\"\r\n [id]=\"idInput\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n maxlength=\"10\"\r\n type=\"text\"\r\n (blur)=\"onBlur()\"\r\n />\r\n <div class=\"calendar\" *ngIf=\"showCalendar\">\r\n <div class=\"calendar-header\">\r\n <div class=\"previous\" (click)=\"previous()\">\r\n <lib-elux-icon [hidden]=\"isPreviousDisabled()\" [icon]=\"'Chevron_Left.svg'\" [size]=\"'22'\" [sizeType]=\"'px'\"> </lib-elux-icon>\r\n </div>\r\n <span (click)=\"changeView()\">{{ pickerView === 'week' ? headerDate() : currentDate.getFullYear() }}</span>\r\n <div class=\"next\" (click)=\"next()\">\r\n <lib-elux-icon [hidden]=\"isNextDisabled()\" [icon]=\"'Chevron_Right.svg'\" [size]=\"'22'\" [sizeType]=\"'px'\"> </lib-elux-icon>\r\n </div>\r\n </div>\r\n <div class=\"calendar-body\" *ngIf=\"pickerView === 'week'\">\r\n <div class=\"day-labels\">\r\n <span *ngFor=\"let day of headerDateWeek()\">{{ day }}</span>\r\n </div>\r\n <ng-container *ngFor=\"let day of days\">\r\n <div class=\"day\" [ngClass]=\"{ disabled: day.disabled, today: day.today, selected: day.selected }\" (click)=\"day.disabled ? null : selectDate(day)\">\r\n <span>{{ day.day }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"year-body\" *ngIf=\"pickerView === 'year'\">\r\n <ng-container *ngFor=\"let year of years\">\r\n <div class=\"year\" *ngIf=\"!year.disabled\" (click)=\"!year.disabled && selectYear(year.value)\">\r\n {{ year.value }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"month-body\" *ngIf=\"pickerView === 'month'\">\r\n <ng-container *ngFor=\"let month of months\">\r\n <div class=\"month\" *ngIf=\"!month.disabled\" (click)=\"!month.disabled && selectMonth(month.value)\">\r\n {{ month.text }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".display{font-family:Electrolux Sans;font-size:48px;font-weight:700;line-height:56px}.heading-1{font-family:Electrolux Sans;font-size:34px;font-weight:700;line-height:40px}.heading-2{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body,:host .month-body .month,:host .year-body .year,:host .calendar-body .day,:host .calendar-body .day-labels,:host .calendar-header span{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}@media screen and (max-width: 768px){.display{font-family:Electrolux Sans;font-size:40px;font-weight:700;line-height:46px}.heading-1{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-2{font-family:Electrolux Sans;font-size:24px;font-weight:600;line-height:28px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body,:host .month-body .month,:host .year-body .year,:host .calendar-body .day,:host .calendar-body .day-labels,:host .calendar-header span{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}}:host .date-picker{position:relative}:host .div-calendar-icon{border-left:solid 1px #7A8A9B;height:100%;position:absolute;right:0;display:flex;justify-content:center;align-items:center;width:50px;cursor:pointer}:host .calendar{position:absolute;top:50px;left:0;background:#f4f5f7;border-radius:2px;box-shadow:4px 4px 8px #0000001a;padding:32px 24px;z-index:1000}:host .calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;border-bottom:solid 1px #DEE7EA;padding-bottom:8px}:host .calendar-header button{background:none;border:none;cursor:pointer;font-size:18px}:host .calendar-header span{font-weight:600;color:#515253;cursor:pointer}:host .calendar-body{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}:host .calendar-body .day-labels{display:contents;text-align:center;margin-bottom:5px;font-weight:600;color:#515253}:host .calendar-body .day{font-size:12px;color:#515253;width:40px;height:40px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease-in-out;border-radius:50%}:host .calendar-body .day:not(.disabled):hover{background:#dee7ea}:host .calendar-body .day.disabled{cursor:default;height:0px}:host .calendar-body .day.disabled span{display:none}:host .calendar-body .day:not(.disabled).today{border:1px solid #011E41}:host .calendar-body .day:not(.disabled).selected{font-size:12px;font-weight:600;background:#011e41;color:#fff}:host .previous,:host .next{cursor:pointer;width:25px}:host .year-body{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}:host .year-body .year{color:#515253;text-align:center;cursor:pointer;display:flex;align-items:center;justify-content:center;width:45px;height:45px;transition:all .15s ease-in-out}:host .year-body .year:hover{background:#dee7ea;border-radius:50%}:host .month-body{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}:host .month-body .month{color:#515253;text-align:center;cursor:pointer;display:flex;align-items:center;justify-content:center;width:auto;height:40px;transition:all .15s ease-in-out}:host .month-body .month:hover{color:#c9c9ca}\n"] }]
|
|
359
|
+
}], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { value: [{
|
|
360
|
+
type: Input
|
|
361
|
+
}], locale: [{
|
|
362
|
+
type: Input
|
|
363
|
+
}], idInput: [{
|
|
364
|
+
type: Input
|
|
365
|
+
}], placeholder: [{
|
|
366
|
+
type: Input
|
|
367
|
+
}], minDate: [{
|
|
368
|
+
type: Input
|
|
369
|
+
}], maxDate: [{
|
|
370
|
+
type: Input
|
|
371
|
+
}], dateSelected: [{
|
|
372
|
+
type: Output
|
|
373
|
+
}], invalidDate: [{
|
|
374
|
+
type: Output
|
|
375
|
+
}], datepicker: [{
|
|
376
|
+
type: ViewChild,
|
|
377
|
+
args: ['datepicker']
|
|
378
|
+
}], clickOutside: [{
|
|
379
|
+
type: HostListener,
|
|
380
|
+
args: ['document:click', ['$event']]
|
|
381
|
+
}] } });
|
|
382
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi91aS9saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdWkvbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuSSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsWUFBWSxFQUFFLFNBQVMsRUFBd0IsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BLLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7OztBQStCbkMsTUFBTSxPQUFPLGNBQWM7SUF5QnpCLFlBQTZCLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUF4QnRDLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsV0FBTSxHQUFXLE9BQU8sQ0FBQztRQUN6QixZQUFPLEdBQVcsRUFBRSxDQUFDO1FBQ3JCLGdCQUFXLEdBQVcsWUFBWSxDQUFDO1FBR2xDLGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDaEUsZ0JBQVcsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUd6RSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGVBQVUsR0FBOEIsTUFBTSxDQUFDO1FBQy9DLGdCQUFXLEdBQUcsSUFBSSxJQUFJLEVB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bk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ0NvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgSG9zdExpc3RlbmVyLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVsdXhJY29uIH0gZnJvbSAnLi4vaWNvbic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERheSB7XHJcbiAgZGF5OiBudW1iZXI7XHJcbiAgc2VsZWN0ZWQ/OiBib29sZWFuO1xyXG4gIHRvZGF5PzogYm9vbGVhbjtcclxuICBkaXNhYmxlZDogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIE1vbnRoIHtcclxuICB2YWx1ZTogbnVtYmVyO1xyXG4gIHRleHQ6IHN0cmluZztcclxuICBkaXNhYmxlZDogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFllYXIge1xyXG4gIHZhbHVlOiBudW1iZXI7XHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbn1cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZWx1eC1kYXRlcGlja2VyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlLCBFbHV4SWNvbl0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFbHV4RGF0ZXBpY2tlciksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZGF0ZXBpY2tlci5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbHV4RGF0ZXBpY2tlciBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nID0gJ3B0LUJSJztcclxuICBASW5wdXQoKSBpZElucHV0OiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJzAwLzAwLzAwMDAnO1xyXG4gIEBJbnB1dCgpIG1pbkRhdGU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF4RGF0ZT86IHN0cmluZztcclxuICBAT3V0cHV0KCkgZGF0ZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBpbnZhbGlkRGF0ZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAVmlld0NoaWxkKCdkYXRlcGlja2VyJykgZGF0ZXBpY2tlciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgc2hvd0NhbGVuZGFyID0gZmFsc2U7XHJcbiAgcGlja2VyVmlldzogJ3dlZWsnIHwgJ21vbnRoJyB8ICd5ZWFyJyA9ICd3ZWVrJztcclxuICBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgc2VsZWN0ZWREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgZm9ybWF0ZWREYXRlOiBzdHJpbmcgPSAnJztcclxuICBkYXlzOiBEYXlbXSA9IFtdO1xyXG4gIG1vbnRoczogTW9udGhbXSA9IFtdO1xyXG4gIHllYXJzOiBZZWFyW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4gdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgcGFyZW50Rm9ybUNvbnRyb2whOiBGb3JtQ29udHJvbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XHJcblxyXG4gIGluamVjdFBhcmVudEZvcm1Db250cm9sKCkge1xyXG4gICAgY29uc3QgbmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcclxuICAgIGlmIChuZ0NvbnRyb2wpIHtcclxuICAgICAgdGhpcy5wYXJlbnRGb3JtQ29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIEZvcm1Db250cm9sO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1hdGVkRGF0ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5vbkJsdXIoKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBnZXQgaXNUb3VjaGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGFyZW50Rm9ybUNvbnRyb2w/LnRvdWNoZWQgfHwgdGhpcy5wYXJlbnRGb3JtQ29udHJvbD8uZGlydHk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGFyZW50Rm9ybUNvbnRyb2w/LmludmFsaWQ7XHJcbiAgfVxyXG5cclxuICBoZWFkZXJEYXRlKCkge1xyXG4gICAgcmV0dXJuIGAke3RoaXMuY3VycmVudERhdGUudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUsIHtcclxuICAgICAgbW9udGg6ICdsb25nJyxcclxuICAgIH0pfSAke3RoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKX1gO1xyXG4gIH1cclxuXHJcbiAgaGVhZGVyRGF0ZVdlZWsoKSB7XHJcbiAgICBjb25zdCBkYXlzT2ZXZWVrID0gW107XHJcbiAgICBjb25zdCBiYXNlRGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIHtcclxuICAgICAgY29uc3QgZGF5ID0gbmV3IERhdGUoYmFzZURhdGUuc2V0RGF0ZShiYXNlRGF0ZS5nZXREYXRlKCkgLSBiYXNlRGF0ZS5nZXREYXkoKSArIGkpKTtcclxuICAgICAgZGF5c09mV2Vlay5wdXNoKGRheS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGUsIHsgd2Vla2RheTogJ25hcnJvdycgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXlzT2ZXZWVrO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluamVjdFBhcmVudEZvcm1Db250cm9sKCk7XHJcblxyXG4gICAgaWYgKHRoaXMudmFsdWUpIHtcclxuICAgICAgdGhpcy5mb3JtYXRlZERhdGUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICB0aGlzLm9uQmx1cigpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcih0aGlzLmN1cnJlbnREYXRlKTtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3ZhbHVlJ10gJiYgIWNoYW5nZXNbJ3ZhbHVlJ10uaXNGaXJzdENoYW5nZSgpKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ZWREYXRlID0gdGhpcy52YWx1ZTtcclxuICAgICAgdGhpcy5vbkJsdXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlVmFsdWUoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgbGV0IHZhbHVlID0gaW5wdXQudmFsdWUucmVwbGFjZSgvXFxEL2csICcnKTtcclxuICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuZGV0ZWN0TG9jYWxlRGF0ZVNlcGFyYXRvcih0aGlzLmxvY2FsZSk7XHJcblxyXG4gICAgaWYgKHZhbHVlLmxlbmd0aCA8PSAyKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ZWREYXRlID0gdmFsdWU7XHJcbiAgICB9IGVsc2UgaWYgKHZhbHVlLmxlbmd0aCA8PSA0KSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ZWREYXRlID0gYCR7dmFsdWUuc2xpY2UoMCwgMil9JHtzZXBhcmF0b3J9JHt2YWx1ZS5zbGljZSgyKX1gO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtYXRlZERhdGUgPSBgJHt2YWx1ZS5zbGljZSgwLCAyKX0ke3NlcGFyYXRvcn0ke3ZhbHVlLnNsaWNlKDIsIDQpfSR7c2VwYXJhdG9yfSR7dmFsdWUuc2xpY2UoNCwgOCl9YDtcclxuICAgIH1cclxuXHJcbiAgICBpbnB1dC52YWx1ZSA9IHRoaXMuZm9ybWF0ZWREYXRlO1xyXG4gICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoaW5wdXQudmFsdWUubGVuZ3RoLCBpbnB1dC52YWx1ZS5sZW5ndGgpO1xyXG4gIH1cclxuXHJcbiAgZGV0ZWN0TG9jYWxlRGF0ZVNlcGFyYXRvcihsb2NhbGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzYW1wbGVEYXRlID0gbmV3IERhdGUoMjAwMCwgMCwgMTUpO1xyXG4gICAgY29uc3QgZm9ybWF0dGVkID0gc2FtcGxlRGF0ZS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlKTtcclxuICAgIGNvbnN0IG1hdGNoID0gZm9ybWF0dGVkLm1hdGNoKC9bXjAtOV0vKTtcclxuICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzBdIDogJy8nO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ2FsZW5kYXIoKSB7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9ICF0aGlzLnNob3dDYWxlbmRhcjtcclxuICAgIGlmICh0aGlzLnNob3dDYWxlbmRhcikge1xyXG4gICAgICB0aGlzLnBpY2tlclZpZXcgPSAnd2Vlayc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VWaWV3KCkge1xyXG4gICAgc3dpdGNoICh0aGlzLnBpY2tlclZpZXcpIHtcclxuICAgICAgY2FzZSAnd2Vlayc6XHJcbiAgICAgICAgdGhpcy5waWNrZXJWaWV3ID0gJ21vbnRoJztcclxuICAgICAgICB0aGlzLmdlbmVyYXRlTW9udGhzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICB0aGlzLnBpY2tlclZpZXcgPSAneWVhcic7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVllYXJzKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3llYXInOlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VDYWxlbmRhcigpIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcmV2aW91cygpIHtcclxuICAgIHN3aXRjaCAodGhpcy5waWNrZXJWaWV3KSB7XHJcbiAgICAgIGNhc2UgJ3dlZWsnOlxyXG4gICAgICAgIHRoaXMucHJldk1vbnRoKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICB0aGlzLnByZXZZZWFyKDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd5ZWFyJzpcclxuICAgICAgICB0aGlzLnByZXZZZWFyKDMwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5leHQoKSB7XHJcbiAgICBzd2l0Y2ggKHRoaXMucGlja2VyVmlldykge1xyXG4gICAgICBjYXNlICd3ZWVrJzpcclxuICAgICAgICB0aGlzLm5leHRNb250aCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgdGhpcy5uZXh0WWVhcigxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAneWVhcic6XHJcbiAgICAgICAgdGhpcy5uZXh0WWVhcigzMCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmV2TW9udGgoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUodGhpcy5jdXJyZW50RGF0ZS5zZXRNb250aCh0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCkgLSAxKSk7XHJcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIodGhpcy5jdXJyZW50RGF0ZSk7XHJcbiAgfVxyXG5cclxuICBuZXh0TW9udGgoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUodGhpcy5jdXJyZW50RGF0ZS5zZXRNb250aCh0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCkgKyAxKSk7XHJcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIodGhpcy5jdXJyZW50RGF0ZSk7XHJcbiAgfVxyXG5cclxuICBwcmV2WWVhcih5ZWFyUXRkZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlWWVhcih0aGlzLmN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCkgLSB5ZWFyUXRkZSk7XHJcbiAgICB0aGlzLmdlbmVyYXRlWWVhcnMoKTtcclxuICB9XHJcblxyXG4gIG5leHRZZWFyKHllYXJRdGRlOiBudW1iZXIpIHtcclxuICAgIHRoaXMub25DaGFuZ2VZZWFyKHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSArIHllYXJRdGRlKTtcclxuICAgIHRoaXMuZ2VuZXJhdGVZZWFycygpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0RGF0ZShkYXk6IERheSkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCksIHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKSwgZGF5LmRheSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBzZWxlY3RlZDtcclxuICAgIHRoaXMuZm9ybWF0ZWREYXRlID0gdGhpcy5zZWxlY3RlZERhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlLCB7XHJcbiAgICAgIGRheTogJzItZGlnaXQnLFxyXG4gICAgICBtb250aDogJzItZGlnaXQnLFxyXG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIodGhpcy5jdXJyZW50RGF0ZSk7XHJcbiAgICB0aGlzLmNsb3NlQ2FsZW5kYXIoKTtcclxuICAgIHRoaXMub25CbHVyKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RNb250aChtb250aFZhbHVlOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLm1heERhdGUgPyBuZXcgRGF0ZSh0aGlzLm1heERhdGUpIDogbnVsbDtcclxuICAgIGNvbnN0IHNlbGVjdGVkTW9udGggPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCksIG1vbnRoVmFsdWUsIDEpO1xyXG5cclxuICAgIGlmIChtYXhEYXRlICYmIHNlbGVjdGVkTW9udGggPiBuZXcgRGF0ZShtYXhEYXRlLmdldEZ1bGxZZWFyKCksIG1heERhdGUuZ2V0TW9udGgoKSwgMSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCksIG1vbnRoVmFsdWUsIDEwKTtcclxuICAgIHRoaXMucGlja2VyVmlldyA9ICd3ZWVrJztcclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcih0aGlzLmN1cnJlbnREYXRlKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlWWVhcih5ZWFyOiBudW1iZXIpIHtcclxuICAgIHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnREYXRlLnNldEZ1bGxZZWFyKHllYXIpKTtcclxuICAgIHRoaXMuZ2VuZXJhdGVNb250aHMoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFllYXIoeWVhcjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlWWVhcih5ZWFyKTtcclxuICAgIHRoaXMucGlja2VyVmlldyA9ICdtb250aCc7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUNhbGVuZGFyKGRhdGU6IERhdGUpIHtcclxuICAgIHRoaXMuZGF5cyA9IFtdO1xyXG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xyXG4gICAgY29uc3QgbWluRGF0ZSA9IHRoaXMubWluRGF0ZSA/IG5ldyBEYXRlKHRoaXMubWluRGF0ZSkgOiBudWxsO1xyXG4gICAgY29uc3QgbWF4RGF0ZSA9IHRoaXMubWF4RGF0ZSA/IG5ldyBEYXRlKHRoaXMubWF4RGF0ZSkgOiBudWxsO1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgaXNUb2RheU1vbnRoID0gdG9kYXkuZ2V0TW9udGgoKSA9PT0gbW9udGggJiYgdG9kYXkuZ2V0RnVsbFllYXIoKSA9PT0geWVhcjtcclxuICAgIGNvbnN0IHNlbGVjdGVkWWVhciA9IHRoaXMuc2VsZWN0ZWREYXRlPy5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRNb250aCA9IHRoaXMuc2VsZWN0ZWREYXRlPy5nZXRNb250aCgpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWREYXkgPSB0aGlzLnNlbGVjdGVkRGF0ZT8uZ2V0RGF0ZSgpO1xyXG5cclxuICAgIGNvbnN0IGZpcnN0V2Vla0RheU9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KCk7XHJcbiAgICBjb25zdCBsYXN0V2Vla0RheU9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApLmdldERhdGUoKTtcclxuXHJcbiAgICAvLyBQcmVlbmNoZSBvcyBkaWFzIGRvIG3DqnMgYW50ZXJpb3IsIHNlIG5lY2Vzc8OhcmlvXHJcbiAgICBmb3IgKGxldCBpID0gZmlyc3RXZWVrRGF5T2ZNb250aDsgaSA+IDA7IGktLSkge1xyXG4gICAgICB0aGlzLmRheXMucHVzaCh7IGRheTogMCwgZGlzYWJsZWQ6IHRydWUgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUHJlZW5jaGUgb3MgZGlhcyBkbyBtw6pzIGF0dWFsXHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBsYXN0V2Vla0RheU9mTW9udGg7IGkrKykge1xyXG4gICAgICBjb25zdCBkYXRlVmFsdWUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgaSk7XHJcbiAgICAgIGNvbnN0IGlzVG9kYXkgPSBpc1RvZGF5TW9udGggJiYgdG9kYXkuZ2V0RGF0ZSgpID09PSBpO1xyXG4gICAgICBjb25zdCBpc1NlbGVjdGVkID0gc2VsZWN0ZWRZZWFyID09PSB5ZWFyICYmIHNlbGVjdGVkTW9udGggPT09IG1vbnRoICYmIHNlbGVjdGVkRGF5ID09PSBpO1xyXG4gICAgICBjb25zdCBkaXNhYmxlZCA9ICgobWluRGF0ZSAmJiBkYXRlVmFsdWUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlVmFsdWUgPiBtYXhEYXRlKSkgPz8gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGF5cy5wdXNoKHsgZGF5OiBpLCB0b2RheTogaXNUb2RheSwgc2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsIGRpc2FibGVkOiBkaXNhYmxlZCB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdlbmVyYXRlTW9udGhzKCkge1xyXG4gICAgdGhpcy5tb250aHMgPSBbXTtcclxuICAgIGNvbnN0IGN1cnJlbnRZZWFyID0gdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgbWF4RGF0ZSA9IHRoaXMubWF4RGF0ZSA/IG5ldyBEYXRlKHRoaXMubWF4RGF0ZSkgOiBudWxsO1xyXG4gICAgY29uc3QgbWluRGF0ZSA9IHRoaXMubWluRGF0ZSA/IG5ldyBEYXRlKHRoaXMubWluRGF0ZSkgOiBudWxsO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTI7IGkrKykge1xyXG4gICAgICAvLyBVc2FyIG8gZGlhIDEgcGFyYSBldml0YXIgcHJvYmxlbWFzIGNvbSBtZXNlcyBxdWUgbsOjbyB0w6ptIDMxIGRpYXNcclxuICAgICAgY29uc3QgZGF0ZVZhbHVlID0gbmV3IERhdGUoY3VycmVudFllYXIsIGksIDEpO1xyXG4gICAgICBjb25zdCBpc0Rpc2FibGVkID0gKChtaW5EYXRlICYmIGRhdGVWYWx1ZSA8IG1pbkRhdGUpIHx8IChtYXhEYXRlICYmIGRhdGVWYWx1ZSA+IG1heERhdGUpKSA/PyBmYWxzZTtcclxuICAgICAgdGhpcy5tb250aHMucHVzaCh7IHZhbHVlOiBpLCB0ZXh0OiBkYXRlVmFsdWUudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUsIHsgbW9udGg6ICdsb25nJyB9KSwgZGlzYWJsZWQ6IGlzRGlzYWJsZWQgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVllYXJzKCkge1xyXG4gICAgdGhpcy55ZWFycyA9IFtdO1xyXG4gICAgY29uc3QgY3VycmVudFllYXIgPSB0aGlzLmN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBtYXhEYXRlID0gdGhpcy5tYXhEYXRlID8gbmV3IERhdGUodGhpcy5tYXhEYXRlKSA6IG51bGw7XHJcbiAgICBjb25zdCBtaW5EYXRlID0gdGhpcy5taW5EYXRlID8gbmV3IERhdGUodGhpcy5taW5EYXRlKSA6IG51bGw7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IGN1cnJlbnRZZWFyIC0gMTk7IGkgPD0gY3VycmVudFllYXIgKyAxMDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSAoKG1pbkRhdGUgJiYgaSA8IG1pbkRhdGUuZ2V0RnVsbFllYXIoKSkgfHwgKG1heERhdGUgJiYgaSA+IG1heERhdGUuZ2V0RnVsbFllYXIoKSkpID8/IGZhbHNlO1xyXG4gICAgICB0aGlzLnllYXJzLnB1c2goeyB2YWx1ZTogaSwgZGlzYWJsZWQ6IGlzRGlzYWJsZWQgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZERhdGUoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGRhdGUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTihkYXRlLmdldFRpbWUoKSk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoKTogdm9pZCB7XHJcbiAgICBjb25zdCBvcmRlciA9IHRoaXMuZGV0ZWN0RGF0ZU9yZGVyKHRoaXMubG9jYWxlKTtcclxuICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuZGV0ZWN0RGF0ZVNlcGFyYXRvcih0aGlzLmZvcm1hdGVkRGF0ZSk7XHJcblxyXG4gICAgY29uc3QgcGFydHMgPSB0aGlzLmZvcm1hdGVkRGF0ZS5zcGxpdChzZXBhcmF0b3IpLm1hcChOdW1iZXIpO1xyXG5cclxuICAgIGxldCBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICBsZXQgZGF0ZTogRGF0ZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICBpZiAocGFydHMubGVuZ3RoID09PSAzICYmICFwYXJ0cy5zb21lKGlzTmFOKSkge1xyXG4gICAgICBjb25zdCBkYXRlTWFwOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XHJcbiAgICAgIFtkYXRlTWFwW29yZGVyWzBdXSwgZGF0ZU1hcFtvcmRlclsxXV0sIGRhdGVNYXBbb3JkZXJbMl1dXSA9IHBhcnRzO1xyXG5cclxuICAgICAgY29uc3QgeyBkYXksIG1vbnRoLCB5ZWFyIH0gPSBkYXRlTWFwIGFzIHsgZGF5OiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IHllYXI6IG51bWJlciB9O1xyXG5cclxuICAgICAgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcclxuXHJcbiAgICAgIGlzVmFsaWQgPSB0aGlzLnZhbGlkRGF0ZShkYXRlKSAmJiBkYXRlLmdldEZ1bGxZZWFyKCkgPT09IHllYXIgJiYgZGF0ZS5nZXRNb250aCgpID09PSBtb250aCAtIDEgJiYgZGF0ZS5nZXREYXRlKCkgPT09IGRheTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLmZvcm1hdGVkRGF0ZSk7XHJcblxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZGF0ZSkge1xyXG4gICAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KHRoaXMuZm9ybWF0ZWREYXRlKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xyXG4gICAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIodGhpcy5jdXJyZW50RGF0ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmludmFsaWREYXRlLmVtaXQodGhpcy5mb3JtYXRlZERhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZXRlY3REYXRlT3JkZXIobG9jYWxlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBzYW1wbGUgPSBuZXcgRGF0ZSgyMDI1LCAxMCwgMjMpOyAvLyAyMy8xMS8yMDI1XHJcbiAgICBjb25zdCBmb3JtYXR0ZWQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUpLmZvcm1hdChzYW1wbGUpO1xyXG5cclxuICAgIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVkLm1hdGNoKC9cXGQrL2cpO1xyXG4gICAgaWYgKCFwYXJ0cyB8fCBwYXJ0cy5sZW5ndGggIT09IDMpIHJldHVybiBbJ3llYXInLCAnbW9udGgnLCAnZGF5J107IC8vIGZhbGxiYWNrXHJcblxyXG4gICAgY29uc3Qgb3JkZXI6IHN0cmluZ1tdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcclxuICAgICAgaWYgKHBhcnQgPT09ICcyMycpIG9yZGVyLnB1c2goJ2RheScpO1xyXG4gICAgICBlbHNlIGlmIChwYXJ0ID09PSAnMTEnKSBvcmRlci5wdXNoKCdtb250aCcpO1xyXG4gICAgICBlbHNlIGlmIChwYXJ0ID09PSAnMjAyNScpIG9yZGVyLnB1c2goJ3llYXInKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb3JkZXI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRldGVjdERhdGVTZXBhcmF0b3IoZGF0ZVN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChkYXRlU3RyLmluY2x1ZGVzKCcvJykpIHJldHVybiAnLyc7XHJcbiAgICBpZiAoZGF0ZVN0ci5pbmNsdWRlcygnLScpKSByZXR1cm4gJy0nO1xyXG4gICAgcmV0dXJuICcnOyAvLyBmYWxsYmFja1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGNsaWNrT3V0c2lkZShldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5kYXRlLXBpY2tlcicpICYmICF0YXJnZXQuY2xvc2VzdCgnLm1vbnRoLWJvZHknKSAmJiAhdGFyZ2V0LmNsb3Nlc3QoJy55ZWFyLWJvZHknKSkge1xyXG4gICAgICB0aGlzLnNob3dDYWxlbmRhciA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNQcmV2aW91c0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLm1pbkRhdGUpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1pbkRhdGUgPSBuZXcgRGF0ZSh0aGlzLm1pbkRhdGUpO1xyXG4gICAgc3dpdGNoICh0aGlzLnBpY2tlclZpZXcpIHtcclxuICAgICAgY2FzZSAnd2Vlayc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSA9PT0gbWluRGF0ZS5nZXRGdWxsWWVhcigpICYmIHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKSA9PT0gbWluRGF0ZS5nZXRNb250aCgpO1xyXG4gICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSA9PT0gbWluRGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICBjYXNlICd5ZWFyJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpIC0gMzAgPCBtaW5EYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNOZXh0RGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMubWF4RGF0ZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWF4RGF0ZSA9IG5ldyBEYXRlKHRoaXMubWF4RGF0ZSk7XHJcbiAgICBzd2l0Y2ggKHRoaXMucGlja2VyVmlldykge1xyXG4gICAgICBjYXNlICd3ZWVrJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpID09PSBtYXhEYXRlLmdldEZ1bGxZZWFyKCkgJiYgdGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpID09PSBtYXhEYXRlLmdldE1vbnRoKCk7XHJcbiAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpID09PSBtYXhEYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIGNhc2UgJ3llYXInOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCkgKyAzMCA+IG1heERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlclwiICNkYXRlcGlja2VyPlxyXG4gIDxkaXYgY2xhc3M9XCJkaXYtY2FsZW5kYXItaWNvblwiIChjbGljayk9XCIhZGlzYWJsZWQgPyB0b2dnbGVDYWxlbmRhcigpIDogJydcIj5cclxuICAgIDxsaWItZWx1eC1pY29uIGNsYXNzPVwiY2FsZW5kYXItaWNvblwiIFtpY29uXT1cIidDYWxlbmRhci5zdmcnXCIgW2NvbG9yXT1cIicjMDExRTQxJ1wiIFtzaXplXT1cIicyNCdcIiBbc2l6ZVR5cGVdPVwiJ3B4J1wiPjwvbGliLWVsdXgtaWNvbj5cclxuICA8L2Rpdj5cclxuICA8aW5wdXRcclxuICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgJ2RhdGUtaW5wdXQnOiB0cnVlLFxyXG4gICAgICAnbmctaW52YWxpZCc6IGlzSW52YWxpZCxcclxuICAgICAgJ25nLXRvdWNoZWQnOiBpc1RvdWNoZWQsXHJcbiAgICB9XCJcclxuICAgIFt2YWx1ZV09XCJmb3JtYXRlZERhdGVcIlxyXG4gICAgKGlucHV0KT1cIm9uQ2hhbmdlVmFsdWUoJGV2ZW50KVwiXHJcbiAgICBbaWRdPVwiaWRJbnB1dFwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgIG1heGxlbmd0aD1cIjEwXCJcclxuICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAvPlxyXG4gIDxkaXYgY2xhc3M9XCJjYWxlbmRhclwiICpuZ0lmPVwic2hvd0NhbGVuZGFyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aW91c1wiIChjbGljayk9XCJwcmV2aW91cygpXCI+XHJcbiAgICAgICAgPGxpYi1lbHV4LWljb24gW2hpZGRlbl09XCJpc1ByZXZpb3VzRGlzYWJsZWQoKVwiIFtpY29uXT1cIidDaGV2cm9uX0xlZnQuc3ZnJ1wiIFtzaXplXT1cIicyMidcIiBbc2l6ZVR5cGVdPVwiJ3B4J1wiPiA8L2xpYi1lbHV4LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8c3BhbiAoY2xpY2spPVwiY2hhbmdlVmlldygpXCI+e3sgcGlja2VyVmlldyA9PT0gJ3dlZWsnID8gaGVhZGVyRGF0ZSgpIDogY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSB9fTwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5leHRcIiAoY2xpY2spPVwibmV4dCgpXCI+XHJcbiAgICAgICAgPGxpYi1lbHV4LWljb24gW2hpZGRlbl09XCJpc05leHREaXNhYmxlZCgpXCIgW2ljb25dPVwiJ0NoZXZyb25fUmlnaHQuc3ZnJ1wiIFtzaXplXT1cIicyMidcIiBbc2l6ZVR5cGVdPVwiJ3B4J1wiPiA8L2xpYi1lbHV4LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYm9keVwiICpuZ0lmPVwicGlja2VyVmlldyA9PT0gJ3dlZWsnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXktbGFiZWxzXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGRheSBvZiBoZWFkZXJEYXRlV2VlaygpXCI+e3sgZGF5IH19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5XCIgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGF5LmRpc2FibGVkLCB0b2RheTogZGF5LnRvZGF5LCBzZWxlY3RlZDogZGF5LnNlbGVjdGVkIH1cIiAoY2xpY2spPVwiZGF5LmRpc2FibGVkID8gbnVsbCA6IHNlbGVjdERhdGUoZGF5KVwiPlxyXG4gICAgICAgICAgPHNwYW4+e3sgZGF5LmRheSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ5ZWFyLWJvZHlcIiAqbmdJZj1cInBpY2tlclZpZXcgPT09ICd5ZWFyJ1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB5ZWFyIG9mIHllYXJzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInllYXJcIiAqbmdJZj1cIiF5ZWFyLmRpc2FibGVkXCIgKGNsaWNrKT1cIiF5ZWFyLmRpc2FibGVkICYmIHNlbGVjdFllYXIoeWVhci52YWx1ZSlcIj5cclxuICAgICAgICAgIHt7IHllYXIudmFsdWUgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb250aC1ib2R5XCIgKm5nSWY9XCJwaWNrZXJWaWV3ID09PSAnbW9udGgnXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRoc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb250aFwiICpuZ0lmPVwiIW1vbnRoLmRpc2FibGVkXCIgKGNsaWNrKT1cIiFtb250aC5kaXNhYmxlZCAmJiBzZWxlY3RNb250aChtb250aC52YWx1ZSlcIj5cclxuICAgICAgICAgIHt7IG1vbnRoLnRleHQgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './datepicker.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi91aS9saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9kYXRlcGlja2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RhdGVwaWNrZXIuY29tcG9uZW50JztcclxuIl19
|