verben-ng-ui 1.2.37 → 1.2.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/lib/components/date-picker/date-picker.component.mjs +139 -16
- package/fesm2022/verben-ng-ui-src-lib-components-date-picker.mjs +138 -15
- package/fesm2022/verben-ng-ui-src-lib-components-date-picker.mjs.map +1 -1
- package/package.json +100 -100
- package/src/lib/components/date-picker/date-picker.component.d.ts +21 -2
|
@@ -18,6 +18,7 @@ export class DatePickerComponent {
|
|
|
18
18
|
yearPlaceholder = 'Select a year';
|
|
19
19
|
monthPlaceholder = 'Select a month';
|
|
20
20
|
date = null;
|
|
21
|
+
showTime = false;
|
|
21
22
|
dateChange = new EventEmitter();
|
|
22
23
|
yearRange = [];
|
|
23
24
|
filteredYearRange = [];
|
|
@@ -42,6 +43,9 @@ export class DatePickerComponent {
|
|
|
42
43
|
this.tempSelectedDate = new Date(parsedDate);
|
|
43
44
|
this.selectedMonth = this.selectedDate.getMonth();
|
|
44
45
|
this.selectedYear = this.selectedDate.getFullYear();
|
|
46
|
+
if (this.showTime) {
|
|
47
|
+
this.initTimeFromDate(this.selectedDate);
|
|
48
|
+
}
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
registerOnChange(fn) {
|
|
@@ -62,6 +66,11 @@ export class DatePickerComponent {
|
|
|
62
66
|
this.selectedYear = this.selectedDate.getFullYear();
|
|
63
67
|
}
|
|
64
68
|
}
|
|
69
|
+
isSameDate(d1, d2) {
|
|
70
|
+
return (d1.getFullYear() === d2.getFullYear() &&
|
|
71
|
+
d1.getMonth() === d2.getMonth() &&
|
|
72
|
+
d1.getDate() === d2.getDate());
|
|
73
|
+
}
|
|
65
74
|
ngOnInit() {
|
|
66
75
|
const currentYear = new Date().getFullYear();
|
|
67
76
|
const endYear = currentYear + 10;
|
|
@@ -72,12 +81,109 @@ export class DatePickerComponent {
|
|
|
72
81
|
const parsedDate = typeof this.date === 'string' ? new Date(this.date) : this.date;
|
|
73
82
|
return parsedDate ? this.formatDate(parsedDate, this.format) : '';
|
|
74
83
|
}
|
|
84
|
+
tempTime = '';
|
|
85
|
+
amPm = 'AM';
|
|
86
|
+
selectedHour = "12";
|
|
87
|
+
selectedMinute = "00";
|
|
88
|
+
showHourOptions = false;
|
|
89
|
+
showMinuteOptions = false;
|
|
90
|
+
hours = Array.from({ length: 12 }, (_, i) => String(i + 1).padStart(2, "0"));
|
|
91
|
+
minutes = Array.from({ length: 60 }, (_, i) => String(i).padStart(2, "0"));
|
|
92
|
+
toggleHourDropdown() {
|
|
93
|
+
this.showHourOptions = !this.showHourOptions;
|
|
94
|
+
this.showMinuteOptions = false;
|
|
95
|
+
}
|
|
96
|
+
toggleMinuteDropdown() {
|
|
97
|
+
this.showMinuteOptions = !this.showMinuteOptions;
|
|
98
|
+
this.showHourOptions = false;
|
|
99
|
+
}
|
|
100
|
+
selectHour(h) {
|
|
101
|
+
this.selectedHour = h;
|
|
102
|
+
this.showHourOptions = false;
|
|
103
|
+
}
|
|
104
|
+
selectMinute(m) {
|
|
105
|
+
this.selectedMinute = m;
|
|
106
|
+
this.showMinuteOptions = false;
|
|
107
|
+
}
|
|
108
|
+
toggleAmPm() {
|
|
109
|
+
this.amPm = this.amPm === "AM" ? "PM" : "AM";
|
|
110
|
+
}
|
|
75
111
|
toggleCalendar() {
|
|
76
112
|
this.showCalendar = !this.showCalendar;
|
|
77
113
|
this.tempSelectedDate = new Date(this.date || new Date());
|
|
78
114
|
this.selectedMonth = this.tempSelectedDate.getMonth();
|
|
79
115
|
this.selectedMonthString = this.months[this.selectedMonth];
|
|
80
116
|
this.selectedYear = this.tempSelectedDate.getFullYear();
|
|
117
|
+
if (this.showTime && !this.tempTime) {
|
|
118
|
+
const today = new Date();
|
|
119
|
+
const isToday = this.isSameDate(this.tempSelectedDate, today);
|
|
120
|
+
const hours = isToday ? today.getHours() : 0;
|
|
121
|
+
const minutes = isToday ? today.getMinutes() : 0;
|
|
122
|
+
this.tempSelectedDate.setHours(hours, minutes, 0, 0);
|
|
123
|
+
this.selectedHour = (!this.is24Hour && hours > 12 ? hours - 12 : hours)
|
|
124
|
+
.toString()
|
|
125
|
+
.padStart(2, "0");
|
|
126
|
+
this.selectedMinute = minutes.toString().padStart(2, "0");
|
|
127
|
+
this.amPm = !this.is24Hour && hours >= 12 ? "PM" : "AM";
|
|
128
|
+
this.tempTime = `${this.selectedHour}:${this.selectedMinute}`;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
initTimeFromDate(date) {
|
|
132
|
+
const hours = date.getHours();
|
|
133
|
+
const minutes = date.getMinutes();
|
|
134
|
+
this.selectedHour = (!this.is24Hour && hours > 12 ? hours - 12 : hours)
|
|
135
|
+
.toString()
|
|
136
|
+
.padStart(2, "0");
|
|
137
|
+
this.selectedMinute = minutes.toString().padStart(2, "0");
|
|
138
|
+
this.amPm = !this.is24Hour && hours >= 12 ? "PM" : "AM";
|
|
139
|
+
this.tempTime = `${this.selectedHour}:${this.selectedMinute}`;
|
|
140
|
+
this.tempSelectedDate.setHours(hours, minutes, 0, 0);
|
|
141
|
+
}
|
|
142
|
+
fixToUTC(dateValue) {
|
|
143
|
+
if (!dateValue)
|
|
144
|
+
return null;
|
|
145
|
+
const date = dateValue instanceof Date ? dateValue : new Date(dateValue);
|
|
146
|
+
if (isNaN(date.getTime()))
|
|
147
|
+
return null;
|
|
148
|
+
return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));
|
|
149
|
+
}
|
|
150
|
+
confirm() {
|
|
151
|
+
if (this.isDisabled(this.tempSelectedDate))
|
|
152
|
+
return;
|
|
153
|
+
let hours;
|
|
154
|
+
let minutes;
|
|
155
|
+
if (this.showTime) {
|
|
156
|
+
hours = Number(this.selectedHour);
|
|
157
|
+
minutes = Number(this.selectedMinute);
|
|
158
|
+
if (!this.is24Hour) {
|
|
159
|
+
if (this.amPm === "PM" && hours < 12)
|
|
160
|
+
hours += 12;
|
|
161
|
+
if (this.amPm === "AM" && hours === 12)
|
|
162
|
+
hours = 0;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
hours = 0;
|
|
167
|
+
minutes = 0;
|
|
168
|
+
}
|
|
169
|
+
this.tempSelectedDate.setHours(hours, minutes, 0, 0);
|
|
170
|
+
this.selectedDate = new Date(this.tempSelectedDate);
|
|
171
|
+
this.date = this.selectedDate;
|
|
172
|
+
const pad = (n) => n.toString().padStart(2, '0');
|
|
173
|
+
const localDateString = `${this.selectedDate.getFullYear()}-${pad(this.selectedDate.getMonth() + 1)}-${pad(this.selectedDate.getDate())}T${pad(this.selectedDate.getHours())}:${pad(this.selectedDate.getMinutes())}:${pad(this.selectedDate.getSeconds())}`;
|
|
174
|
+
console.log(localDateString);
|
|
175
|
+
this.dateChange.emit(this.selectedDate);
|
|
176
|
+
this.onChange(localDateString);
|
|
177
|
+
this.onTouched();
|
|
178
|
+
this.showCalendar = false;
|
|
179
|
+
}
|
|
180
|
+
setToStartOfDay() {
|
|
181
|
+
this.selectedHour = this.is24Hour ? '00' : '12';
|
|
182
|
+
this.selectedMinute = '00';
|
|
183
|
+
this.amPm = 'AM';
|
|
184
|
+
this.tempSelectedDate.setHours(0, 0, 0, 0);
|
|
185
|
+
this.tempTime = `${this.selectedHour}:${this.selectedMinute}`;
|
|
186
|
+
this.selectedDate = new Date(this.tempSelectedDate);
|
|
81
187
|
}
|
|
82
188
|
previousMonth() {
|
|
83
189
|
this.selectedMonth--;
|
|
@@ -140,10 +246,36 @@ export class DatePickerComponent {
|
|
|
140
246
|
return value;
|
|
141
247
|
return new Date(value);
|
|
142
248
|
}
|
|
249
|
+
is24Hour = false;
|
|
143
250
|
selectTemporaryDate(day) {
|
|
144
251
|
if (this.isDisabled(day))
|
|
145
252
|
return;
|
|
146
|
-
this.tempSelectedDate
|
|
253
|
+
const isNewDate = !this.isSameDate(this.tempSelectedDate, day);
|
|
254
|
+
this.tempSelectedDate = new Date(day);
|
|
255
|
+
if (this.showTime) {
|
|
256
|
+
if (isNewDate) {
|
|
257
|
+
const today = new Date();
|
|
258
|
+
const isToday = day.getFullYear() === today.getFullYear() &&
|
|
259
|
+
day.getMonth() === today.getMonth() &&
|
|
260
|
+
day.getDate() === today.getDate();
|
|
261
|
+
const hours = isToday ? today.getHours() : 0;
|
|
262
|
+
const minutes = isToday ? today.getMinutes() : 0;
|
|
263
|
+
this.tempSelectedDate.setHours(hours, minutes, 0, 0);
|
|
264
|
+
this.selectedHour = (!this.is24Hour && hours > 12 ? hours - 12 : hours)
|
|
265
|
+
.toString()
|
|
266
|
+
.padStart(2, "0");
|
|
267
|
+
this.selectedMinute = minutes.toString().padStart(2, "0");
|
|
268
|
+
this.amPm = !this.is24Hour && hours >= 12 ? "PM" : "AM";
|
|
269
|
+
this.tempTime = `${this.selectedHour}:${this.selectedMinute}`;
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
const [h, m] = this.tempTime.split(':');
|
|
273
|
+
this.selectedHour = h;
|
|
274
|
+
this.selectedMinute = m;
|
|
275
|
+
if (!this.is24Hour)
|
|
276
|
+
this.amPm = Number(h) >= 12 ? 'PM' : 'AM';
|
|
277
|
+
}
|
|
278
|
+
}
|
|
147
279
|
}
|
|
148
280
|
isSelected(day) {
|
|
149
281
|
return (day.getDate() === this.tempSelectedDate.getDate() &&
|
|
@@ -162,28 +294,17 @@ export class DatePickerComponent {
|
|
|
162
294
|
return `${month}/${day}/${year}`;
|
|
163
295
|
}
|
|
164
296
|
}
|
|
165
|
-
confirm() {
|
|
166
|
-
if (this.isDisabled(this.tempSelectedDate))
|
|
167
|
-
return;
|
|
168
|
-
this.tempSelectedDate.setHours(12, 0, 0, 0);
|
|
169
|
-
this.selectedDate = new Date(this.tempSelectedDate);
|
|
170
|
-
this.date = this.selectedDate;
|
|
171
|
-
this.dateChange.emit(this.selectedDate);
|
|
172
|
-
this.onChange(this.selectedDate);
|
|
173
|
-
this.onTouched();
|
|
174
|
-
this.showCalendar = false;
|
|
175
|
-
}
|
|
176
297
|
cancel() {
|
|
177
298
|
this.showCalendar = false;
|
|
178
299
|
}
|
|
179
300
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
180
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: DatePickerComponent, selector: "app-date-picker", inputs: { placeholder: "placeholder", format: "format", minDate: "minDate", maxDate: "maxDate", disabled: "disabled", bgColor: "bgColor", border: "border", useDropdowns: "useDropdowns", yearPlaceholder: "yearPlaceholder", monthPlaceholder: "monthPlaceholder", date: "date" }, outputs: { dateChange: "dateChange" }, providers: [
|
|
301
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: DatePickerComponent, selector: "app-date-picker", inputs: { placeholder: "placeholder", format: "format", minDate: "minDate", maxDate: "maxDate", disabled: "disabled", bgColor: "bgColor", border: "border", useDropdowns: "useDropdowns", yearPlaceholder: "yearPlaceholder", monthPlaceholder: "monthPlaceholder", date: "date", showTime: "showTime" }, outputs: { dateChange: "dateChange" }, providers: [
|
|
181
302
|
{
|
|
182
303
|
provide: NG_VALUE_ACCESSOR,
|
|
183
304
|
useExisting: forwardRef(() => DatePickerComponent),
|
|
184
305
|
multi: true,
|
|
185
306
|
},
|
|
186
|
-
], usesOnChanges: true, ngImport: i0, template: "<div class=\"date-picker\">\n
|
|
307
|
+
], usesOnChanges: true, ngImport: i0, template: "<div class=\"date-picker\">\n<div class=\"calendar-container\">\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"displayDate\"\n [disabled]=\"disabled\"\n (click)=\"!disabled && toggleCalendar()\"\n class=\"w-full block\"\n [style.background-color]=\"bgColor\"\n [style.border]=\"border\"\n \n [ngClass]=\"{'cursor-not-allowed':disabled===true, 'cursor-pointer':disabled===false}\"\n readonly\n /> \n<verben-svg (click)=\"!disabled && toggleCalendar()\" class=\"icon\" [icon]=\"'calendar'\"></verben-svg>\n</div>\n\n <div *ngIf=\"showCalendar\" [appOutSideClick]=\"showCalendar\" (outSideClick)=\"showCalendar=false\" class=\"calendar\">\n <div class=\"calendar-header\">\n <ng-container *ngIf=\"!useDropdowns; else dropdowns\">\n <button (click)=\"previousMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-left'\"></verben-svg>\n </button>\n <span>{{ months[selectedMonth] }} {{ selectedYear }}</span>\n <button (click)=\"nextMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-right'\"></verben-svg>\n </button>\n </ng-container>\n\n <ng-template #dropdowns>\n <verben-drop-down\n [placeholder]=\"yearPlaceholder\"\n (onChange)=\"onDropdownYearChange($event)\"\n [options]=\"yearRange\"\n [(ngModel)]=\"selectedYear\"\n [width]=\"'90px'\"\n ></verben-drop-down>\n\n <verben-drop-down\n [placeholder]=\"monthPlaceholder\"\n (onChange)=\"onDropdownMonthChange($event)\"\n [options]=\"months\"\n class=\"drop-down\"\n [(ngModel)]=\"selectedMonthString\"\n [width]=\"'90px'\"\n ></verben-drop-down>\n </ng-template>\n \n<div class=\"time-picker flex items-center gap-2\" *ngIf=\"showTime\">\n <div class=\"relative\">\n <div class=\"flex items-center box rounded px-2 py-1 cursor-pointer\"\n (click)=\"toggleHourDropdown()\">\n {{ selectedHour }}\n </div>\n\n <div *ngIf=\"showHourOptions\" class=\"dropdown\">\n <div\n class=\"dropdown-item\"\n *ngFor=\"let h of hours\"\n [class.active]=\"h === selectedHour\"\n (click)=\"selectHour(h)\"\n >\n {{ h }}\n </div>\n </div>\n </div>\n\n <span>:</span>\n\n <div class=\"relative\">\n <div class=\"flex items-center box rounded px-2 py-1 cursor-pointer\"\n (click)=\"toggleMinuteDropdown()\">\n {{ selectedMinute }}\n </div>\n\n <div *ngIf=\"showMinuteOptions\" class=\"dropdown\">\n <div\n class=\"dropdown-item\"\n *ngFor=\"let m of minutes\"\n [class.active]=\"m === selectedMinute\"\n (click)=\"selectMinute(m)\"\n >\n {{m}}\n </div>\n </div>\n </div>\n <button\n type=\"button\"\n (click)=\"toggleAmPm()\"\n class=\"amPm\"\n >\n {{ amPm }}\n </button>\n <verben-svg (click)=\"setToStartOfDay()\" class=\" cursor-pointer\" [width]=\"14\" [height]=\"14\" [icon]=\"'clock'\"></verben-svg>\n \n</div>\n\n\n </div>\n\n <div class=\"calendar-body\">\n <div class=\"weekdays\">\n <span *ngFor=\"let day of weekDays\">{{ day }}</span>\n </div>\n <div class=\"dates\">\n <ng-container *ngFor=\"let day of getDaysInMonth()\">\n <button\n *ngIf=\"day; else empty\"\n [class.selected]=\"isSelected(day)\"\n [disabled]=\"isDisabled(day)\" \n [ngClass]=\"{'disabled-day': isDisabled(day)}\"\n (click)=\"selectTemporaryDate(day)\"\n >\n {{ day.getDate() }}\n </button>\n <ng-template #empty>\n <span class=\"empty-date\"></span>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <div class=\"calendar-footer\">\n\n <button (click)=\"cancel()\">Cancel</button>\n <button (click)=\"confirm()\">OK</button>\n </div>\n </div>\n</div>\n", styles: [".date-picker{position:relative;width:100%}.calendar-container{position:relative}.icon{position:absolute;top:5px;right:10px;cursor:pointer}input{width:100%;padding:10px;font-size:13px;border:1px solid #ccc;border-radius:4px}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed;color:#8080808f}.calendar{position:absolute;top:100%;left:0;width:350px;border:1px solid #ccc;background-color:#fff;z-index:10;border-radius:4px}.calendar-header{display:flex;justify-content:space-between;gap:5px;font-size:13px;padding:15px 15px 0}.weekdays,.dates{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:1px;padding:15px 15px 0;font-size:13px}button{border:none;background:none;cursor:pointer;padding:5px;width:40px;height:40px}button.selected{background-color:#ffe681;color:#000;border-radius:30px}.calendar-footer{display:flex;justify-content:end;gap:10px;padding:4px 15px;color:#000;font-weight:500;font-size:13px}.calendar-footer button{color:#000}.disabled-day{opacity:.4;cursor:not-allowed}.time-picker input{border:1px solid #ccc;border-radius:4px;padding:4px 6px;text-align:center;width:50px;outline:none;height:40px}.time-picker button{border:1px solid #ccc;border-radius:4px;background-color:#f3f3f3;font-size:10px;width:fit-content;height:30px;cursor:pointer}.box{border:1px solid #ccc}::ng-deep .drop-down .verben-drop-down,::ng-deep .drop-down *{font-size:13px!important}.dropdown{position:absolute;top:110%;left:0;width:60px;max-height:120px;overflow-y:auto;background:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 2px 8px #0000001a;z-index:20}.dropdown-item{padding:6px;text-align:center;cursor:pointer}.dropdown-item:hover,.dropdown-item.active{background:#3182ce;color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: i4.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "directive", type: i5.OutSideClickDirective, selector: "[appOutSideClick]", inputs: ["appOutSideClick"], outputs: ["outSideClick"] }] });
|
|
187
308
|
}
|
|
188
309
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
189
310
|
type: Component,
|
|
@@ -193,7 +314,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
|
|
|
193
314
|
useExisting: forwardRef(() => DatePickerComponent),
|
|
194
315
|
multi: true,
|
|
195
316
|
},
|
|
196
|
-
], template: "<div class=\"date-picker\">\n
|
|
317
|
+
], template: "<div class=\"date-picker\">\n<div class=\"calendar-container\">\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"displayDate\"\n [disabled]=\"disabled\"\n (click)=\"!disabled && toggleCalendar()\"\n class=\"w-full block\"\n [style.background-color]=\"bgColor\"\n [style.border]=\"border\"\n \n [ngClass]=\"{'cursor-not-allowed':disabled===true, 'cursor-pointer':disabled===false}\"\n readonly\n /> \n<verben-svg (click)=\"!disabled && toggleCalendar()\" class=\"icon\" [icon]=\"'calendar'\"></verben-svg>\n</div>\n\n <div *ngIf=\"showCalendar\" [appOutSideClick]=\"showCalendar\" (outSideClick)=\"showCalendar=false\" class=\"calendar\">\n <div class=\"calendar-header\">\n <ng-container *ngIf=\"!useDropdowns; else dropdowns\">\n <button (click)=\"previousMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-left'\"></verben-svg>\n </button>\n <span>{{ months[selectedMonth] }} {{ selectedYear }}</span>\n <button (click)=\"nextMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-right'\"></verben-svg>\n </button>\n </ng-container>\n\n <ng-template #dropdowns>\n <verben-drop-down\n [placeholder]=\"yearPlaceholder\"\n (onChange)=\"onDropdownYearChange($event)\"\n [options]=\"yearRange\"\n [(ngModel)]=\"selectedYear\"\n [width]=\"'90px'\"\n ></verben-drop-down>\n\n <verben-drop-down\n [placeholder]=\"monthPlaceholder\"\n (onChange)=\"onDropdownMonthChange($event)\"\n [options]=\"months\"\n class=\"drop-down\"\n [(ngModel)]=\"selectedMonthString\"\n [width]=\"'90px'\"\n ></verben-drop-down>\n </ng-template>\n \n<div class=\"time-picker flex items-center gap-2\" *ngIf=\"showTime\">\n <div class=\"relative\">\n <div class=\"flex items-center box rounded px-2 py-1 cursor-pointer\"\n (click)=\"toggleHourDropdown()\">\n {{ selectedHour }}\n </div>\n\n <div *ngIf=\"showHourOptions\" class=\"dropdown\">\n <div\n class=\"dropdown-item\"\n *ngFor=\"let h of hours\"\n [class.active]=\"h === selectedHour\"\n (click)=\"selectHour(h)\"\n >\n {{ h }}\n </div>\n </div>\n </div>\n\n <span>:</span>\n\n <div class=\"relative\">\n <div class=\"flex items-center box rounded px-2 py-1 cursor-pointer\"\n (click)=\"toggleMinuteDropdown()\">\n {{ selectedMinute }}\n </div>\n\n <div *ngIf=\"showMinuteOptions\" class=\"dropdown\">\n <div\n class=\"dropdown-item\"\n *ngFor=\"let m of minutes\"\n [class.active]=\"m === selectedMinute\"\n (click)=\"selectMinute(m)\"\n >\n {{m}}\n </div>\n </div>\n </div>\n <button\n type=\"button\"\n (click)=\"toggleAmPm()\"\n class=\"amPm\"\n >\n {{ amPm }}\n </button>\n <verben-svg (click)=\"setToStartOfDay()\" class=\" cursor-pointer\" [width]=\"14\" [height]=\"14\" [icon]=\"'clock'\"></verben-svg>\n \n</div>\n\n\n </div>\n\n <div class=\"calendar-body\">\n <div class=\"weekdays\">\n <span *ngFor=\"let day of weekDays\">{{ day }}</span>\n </div>\n <div class=\"dates\">\n <ng-container *ngFor=\"let day of getDaysInMonth()\">\n <button\n *ngIf=\"day; else empty\"\n [class.selected]=\"isSelected(day)\"\n [disabled]=\"isDisabled(day)\" \n [ngClass]=\"{'disabled-day': isDisabled(day)}\"\n (click)=\"selectTemporaryDate(day)\"\n >\n {{ day.getDate() }}\n </button>\n <ng-template #empty>\n <span class=\"empty-date\"></span>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <div class=\"calendar-footer\">\n\n <button (click)=\"cancel()\">Cancel</button>\n <button (click)=\"confirm()\">OK</button>\n </div>\n </div>\n</div>\n", styles: [".date-picker{position:relative;width:100%}.calendar-container{position:relative}.icon{position:absolute;top:5px;right:10px;cursor:pointer}input{width:100%;padding:10px;font-size:13px;border:1px solid #ccc;border-radius:4px}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed;color:#8080808f}.calendar{position:absolute;top:100%;left:0;width:350px;border:1px solid #ccc;background-color:#fff;z-index:10;border-radius:4px}.calendar-header{display:flex;justify-content:space-between;gap:5px;font-size:13px;padding:15px 15px 0}.weekdays,.dates{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:1px;padding:15px 15px 0;font-size:13px}button{border:none;background:none;cursor:pointer;padding:5px;width:40px;height:40px}button.selected{background-color:#ffe681;color:#000;border-radius:30px}.calendar-footer{display:flex;justify-content:end;gap:10px;padding:4px 15px;color:#000;font-weight:500;font-size:13px}.calendar-footer button{color:#000}.disabled-day{opacity:.4;cursor:not-allowed}.time-picker input{border:1px solid #ccc;border-radius:4px;padding:4px 6px;text-align:center;width:50px;outline:none;height:40px}.time-picker button{border:1px solid #ccc;border-radius:4px;background-color:#f3f3f3;font-size:10px;width:fit-content;height:30px;cursor:pointer}.box{border:1px solid #ccc}::ng-deep .drop-down .verben-drop-down,::ng-deep .drop-down *{font-size:13px!important}.dropdown{position:absolute;top:110%;left:0;width:60px;max-height:120px;overflow-y:auto;background:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 2px 8px #0000001a;z-index:20}.dropdown-item{padding:6px;text-align:center;cursor:pointer}.dropdown-item:hover,.dropdown-item.active{background:#3182ce;color:#fff}\n"] }]
|
|
197
318
|
}], propDecorators: { placeholder: [{
|
|
198
319
|
type: Input
|
|
199
320
|
}], format: [{
|
|
@@ -216,7 +337,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
|
|
|
216
337
|
type: Input
|
|
217
338
|
}], date: [{
|
|
218
339
|
type: Input
|
|
340
|
+
}], showTime: [{
|
|
341
|
+
type: Input
|
|
219
342
|
}], dateChange: [{
|
|
220
343
|
type: Output
|
|
221
344
|
}] } });
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5GLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQWN6RSxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLFdBQVcsR0FBRyxhQUFhLENBQUM7SUFDNUIsTUFBTSxHQUFHLFlBQVksQ0FBQztJQUN0QixPQUFPLENBQVE7SUFDZixPQUFPLENBQVE7SUFDZixRQUFRLEdBQWEsS0FBSyxDQUFDO0lBQzNCLE9BQU8sR0FBWSxNQUFNLENBQUM7SUFDMUIsTUFBTSxHQUFZLEVBQUUsQ0FBQztJQUNyQixZQUFZLEdBQVksSUFBSSxDQUFDO0lBQzdCLGVBQWUsR0FBVyxlQUFlLENBQUM7SUFDMUMsZ0JBQWdCLEdBQVcsZ0JBQWdCLENBQUM7SUFDNUMsSUFBSSxHQUF5QixJQUFJLENBQUM7SUFDakMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFaEQsU0FBUyxHQUFhLEVBQUUsQ0FBQztJQUN6QixpQkFBaUIsR0FBYSxFQUFFLENBQUM7SUFDakMsWUFBWSxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7SUFDaEMsZ0JBQWdCLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNwQyxZQUFZ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Ozs0RkR2RGEsbUJBQW1CO2tCQVovQixTQUFTOytCQUNFLGlCQUFpQixhQUdoQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBR1EsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEcm9wZG93bkNoYW5nZUV2ZW50IH0gZnJvbSAndmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kcm9wLWRvd24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZGF0ZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdTZWxlY3QgZGF0ZSc7XG4gIEBJbnB1dCgpIGZvcm1hdCA9ICdNTS9ERC9ZWVlZJztcbiAgQElucHV0KCkgbWluRGF0ZT86IERhdGU7XG4gIEBJbnB1dCgpIG1heERhdGU/OiBEYXRlO1xuICBASW5wdXQoKSBkaXNhYmxlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYmdDb2xvcj86IHN0cmluZyA9ICcjZmZmJztcbiAgQElucHV0KCkgYm9yZGVyPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHVzZURyb3Bkb3duczogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHllYXJQbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlbGVjdCBhIHllYXInO1xuICBASW5wdXQoKSBtb250aFBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWN0IGEgbW9udGgnO1xuICBASW5wdXQoKSBkYXRlOiBEYXRlIHwgbnVsbCB8IHN0cmluZyA9IG51bGw7XG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIHllYXJSYW5nZTogbnVtYmVyW10gPSBbXTtcbiAgZmlsdGVyZWRZZWFyUmFuZ2U6IG51bWJlcltdID0gW107XG4gIHNlbGVjdGVkRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHRlbXBTZWxlY3RlZERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBzaG93Q2FsZW5kYXIgPSBmYWxzZTtcblxuICB3ZWVrRGF5cyA9IFsnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnLCAnU3VuJ107XG4gIG1vbnRocyA9IFtcbiAgICAnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsXG4gICAgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJyxcbiAgXTtcblxuICBzZWxlY3RlZE1vbnRoOiBudW1iZXIgPSAxO1xuICBzZWxlY3RlZE1vbnRoU3RyaW5nOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWRZZWFyOiBudW1iZXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIHByaXZhdGUgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5kYXRlID0gdmFsdWU7XG4gICAgICBjb25zdCBwYXJzZWREYXRlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHZhbHVlKSA6IHZhbHVlO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZShwYXJzZWREYXRlKTtcbiAgICAgIHRoaXMudGVtcFNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHBhcnNlZERhdGUpO1xuICAgICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRZZWFyID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLmRhdGUpIHtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGUgPVxuICAgICAgICB0eXBlb2YgdGhpcy5kYXRlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHRoaXMuZGF0ZSkgOiB0aGlzLmRhdGU7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHBhcnNlZERhdGUpO1xuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWREYXRlID0gbmV3IERhdGUocGFyc2VkRGF0ZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkTW9udGggPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpO1xuICAgICAgdGhpcy5zZWxlY3RlZFllYXIgPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGN1cnJlbnRZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IGVuZFllYXIgPSBjdXJyZW50WWVhciArIDEwO1xuICAgIHRoaXMueWVhclJhbmdlID0gQXJyYXkuZnJvbShcbiAgICAgIHsgbGVuZ3RoOiBlbmRZZWFyIC0gMTk2MCArIDEgfSxcbiAgICAgIChfLCBpKSA9PiAxOTYwICsgaVxuICAgICk7XG4gICAgdGhpcy55ZWFyUmFuZ2Uuc29ydCgoYSwgYikgPT4gYiAtIGEpO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlEYXRlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9XG4gICAgICB0eXBlb2YgdGhpcy5kYXRlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHRoaXMuZGF0ZSkgOiB0aGlzLmRhdGU7XG4gICAgcmV0dXJuIHBhcnNlZERhdGUgPyB0aGlzLmZvcm1hdERhdGUocGFyc2VkRGF0ZSwgdGhpcy5mb3JtYXQpIDogJyc7XG4gIH1cblxuICB0b2dnbGVDYWxlbmRhcigpIHtcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9ICF0aGlzLnNob3dDYWxlbmRhcjtcbiAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmRhdGUgfHwgbmV3IERhdGUoKSk7XG4gICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gdGhpcy50ZW1wU2VsZWN0ZWREYXRlLmdldE1vbnRoKCk7XG4gICAgdGhpcy5zZWxlY3RlZE1vbnRoU3RyaW5nID0gdGhpcy5tb250aHNbdGhpcy5zZWxlY3RlZE1vbnRoXTtcbiAgICB0aGlzLnNlbGVjdGVkWWVhciA9IHRoaXMudGVtcFNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xuICB9XG5cbiAgcHJldmlvdXNNb250aCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9udGgtLTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZE1vbnRoIDwgMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gMTE7XG4gICAgICB0aGlzLnNlbGVjdGVkWWVhci0tO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVRlbXBTZWxlY3RlZERhdGUoKTtcbiAgfVxuXG4gIG5leHRNb250aCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9udGgrKztcbiAgICBpZiAodGhpcy5zZWxlY3RlZE1vbnRoID4gMTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRNb250aCA9IDA7XG4gICAgICB0aGlzLnNlbGVjdGVkWWVhcisrO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVRlbXBTZWxlY3RlZERhdGUoKTtcbiAgfVxuXG4gIG9uRHJvcGRvd25ZZWFyQ2hhbmdlKGV2ZW50OiBEcm9wZG93bkNoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFllYXIgPSBldmVudC52YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZVRlbXBTZWxlY3RlZERhdGUoKTtcbiAgfVxuXG4gIG9uRHJvcGRvd25Nb250aENoYW5nZShldmVudDogRHJvcGRvd25DaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRNb250aCA9IHRoaXMubW9udGhzLmluZGV4T2YoZXZlbnQudmFsdWUpO1xuICAgIHRoaXMudXBkYXRlVGVtcFNlbGVjdGVkRGF0ZSgpO1xuICB9XG5cbiAgdXBkYXRlVGVtcFNlbGVjdGVkRGF0ZSgpIHtcbiAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGUuc2V0TW9udGgodGhpcy5zZWxlY3RlZE1vbnRoKTtcbiAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGUuc2V0RnVsbFllYXIodGhpcy5zZWxlY3RlZFllYXIpO1xuICB9XG5cbiAgZ2V0RGF5c0luTW9udGgoKTogKERhdGUgfCBudWxsKVtdIHtcbiAgICBjb25zdCBkYXlzOiAoRGF0ZSB8IG51bGwpW10gPSBbXTtcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5zZWxlY3RlZFllYXI7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLnNlbGVjdGVkTW9udGg7XG5cbiAgICBjb25zdCBmaXJzdERheU9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KCk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gZmlyc3REYXlPZk1vbnRoID09PSAwID8gNiA6IGZpcnN0RGF5T2ZNb250aCAtIDE7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9mZnNldDsgaSsrKSB7XG4gICAgICBkYXlzLnB1c2gobnVsbCk7XG4gICAgfVxuXG4gICAgY29uc3QgdG90YWxEYXlzID0gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKS5nZXREYXRlKCk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdG90YWxEYXlzOyBpKyspIHtcbiAgICAgIGNvbnN0IGRheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBpKTtcbiAgICAgIGRheXMucHVzaChkYXkpO1xuICAgIH1cbiAgICByZXR1cm4gZGF5cztcbiAgfVxuXG5pc0Rpc2FibGVkKGRheTogRGF0ZSB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBkYXlEYXRlID0gdGhpcy50b0RhdGUoZGF5KTtcblxuICBpZiAodGhpcy5taW5EYXRlICYmIGRheURhdGUgPCB0aGlzLnN0cmlwVGltZSh0aGlzLnRvRGF0ZSh0aGlzLm1pbkRhdGUpKSkgcmV0dXJuIHRydWU7XG4gIGlmICh0aGlzLm1heERhdGUgJiYgZGF5RGF0ZSA+IHRoaXMuc3RyaXBUaW1lKHRoaXMudG9EYXRlKHRoaXMubWF4RGF0ZSkpKSByZXR1cm4gdHJ1ZTtcblxuICByZXR1cm4gZmFsc2U7XG59XG5cbnByaXZhdGUgc3RyaXBUaW1lKGRhdGU6IERhdGUgfCBzdHJpbmcpOiBEYXRlIHtcbiAgY29uc3QgZCA9IHRoaXMudG9EYXRlKGRhdGUpO1xuICByZXR1cm4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTtcbn1cblxucHJpdmF0ZSB0b0RhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcpOiBEYXRlIHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIHZhbHVlO1xuICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xufVxuXG5cbiAgc2VsZWN0VGVtcG9yYXJ5RGF0ZShkYXk6IERhdGUpIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKGRheSkpIHJldHVybjtcbiAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGUgPSBkYXk7XG4gIH1cblxuICBpc1NlbGVjdGVkKGRheTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBkYXkuZ2V0RGF0ZSgpID09PSB0aGlzLnRlbXBTZWxlY3RlZERhdGUuZ2V0RGF0ZSgpICYmXG4gICAgICBkYXkuZ2V0TW9udGgoKSA9PT0gdGhpcy50ZW1wU2VsZWN0ZWREYXRlLmdldE1vbnRoKCkgJiZcbiAgICAgIGRheS5nZXRGdWxsWWVhcigpID09PSB0aGlzLnRlbXBTZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKVxuICAgICk7XG4gIH1cblxuICBmb3JtYXREYXRlKGRhdGU6IERhdGUsIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3QgbW9udGggPSAoZGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG5cbiAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgY2FzZSAnREQvTU0vWVlZWSc6XG4gICAgICAgIHJldHVybiBgJHtkYXl9LyR7bW9udGh9LyR7eWVhcn1gO1xuICAgICAgY2FzZSAnTU0vREQvWVlZWSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gYCR7bW9udGh9LyR7ZGF5fS8ke3llYXJ9YDtcbiAgICB9XG4gIH1cblxuICBjb25maXJtKCkge1xuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQodGhpcy50ZW1wU2VsZWN0ZWREYXRlKSkgcmV0dXJuO1xuXG4gICAgdGhpcy50ZW1wU2VsZWN0ZWREYXRlLnNldEhvdXJzKDEyLCAwLCAwLCAwKTtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMudGVtcFNlbGVjdGVkRGF0ZSk7XG4gICAgdGhpcy5kYXRlID0gdGhpcy5zZWxlY3RlZERhdGU7XG5cbiAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgIHRoaXMuc2hvd0NhbGVuZGFyID0gZmFsc2U7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5zaG93Q2FsZW5kYXIgPSBmYWxzZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyXCI+XG4gIDxpbnB1dFxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFt2YWx1ZV09XCJkaXNwbGF5RGF0ZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAoY2xpY2spPVwiIWRpc2FibGVkICYmIHRvZ2dsZUNhbGVuZGFyKClcIlxuICAgIGNsYXNzPVwidy1mdWxsIGJsb2NrXCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJiZ0NvbG9yXCJcbiAgICBbc3R5bGUuYm9yZGVyXT1cImJvcmRlclwiXG4gICAgW25nQ2xhc3NdPVwieydjdXJzb3Itbm90LWFsbG93ZWQnOmRpc2FibGVkPT09dHJ1ZSwgJ2N1cnNvci1wb2ludGVyJzpkaXNhYmxlZD09PWZhbHNlfVwiXG4gICAgcmVhZG9ubHlcbiAgLz5cblxuICA8ZGl2ICpuZ0lmPVwic2hvd0NhbGVuZGFyXCIgW2FwcE91dFNpZGVDbGlja109XCJzaG93Q2FsZW5kYXJcIiAob3V0U2lkZUNsaWNrKT1cInNob3dDYWxlbmRhcj1mYWxzZVwiIGNsYXNzPVwiY2FsZW5kYXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXVzZURyb3Bkb3duczsgZWxzZSBkcm9wZG93bnNcIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicHJldmlvdXNNb250aCgpXCI+XG4gICAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjIwXCIgW2ljb25dPVwiJ2NoZXZyb24tbGVmdCdcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8c3Bhbj57eyBtb250aHNbc2VsZWN0ZWRNb250aF0gfX0ge3sgc2VsZWN0ZWRZZWFyIH19PC9zcGFuPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJuZXh0TW9udGgoKVwiPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIyMFwiIFtpY29uXT1cIidjaGV2cm9uLXJpZ2h0J1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bnM+XG4gICAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInllYXJQbGFjZWhvbGRlclwiXG4gICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRHJvcGRvd25ZZWFyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFtvcHRpb25zXT1cInllYXJSYW5nZVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFllYXJcIlxuICAgICAgICA+PC92ZXJiZW4tZHJvcC1kb3duPlxuXG4gICAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIm1vbnRoUGxhY2Vob2xkZXJcIlxuICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkRyb3Bkb3duTW9udGhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgW29wdGlvbnNdPVwibW9udGhzXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTW9udGhTdHJpbmdcIlxuICAgICAgICA+PC92ZXJiZW4tZHJvcC1kb3duPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwid2Vla2RheXNcIj5cbiAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrRGF5c1wiPnt7IGRheSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRhdGVzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRheSBvZiBnZXREYXlzSW5Nb250aCgpXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJkYXk7IGVsc2UgZW1wdHlcIlxuICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzU2VsZWN0ZWQoZGF5KVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZChkYXkpXCIgIFxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZC1kYXknOiBpc0Rpc2FibGVkKGRheSl9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RUZW1wb3JhcnlEYXRlKGRheSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGRheS5nZXREYXRlKCkgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2VtcHR5PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbXB0eS1kYXRlXCI+PC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZm9vdGVyXCI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJjYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY29uZmlybSgpXCI+T0s8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
345
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5GLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQWN6RSxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLFdBQVcsR0FBRyxhQUFhLENBQUM7SUFDNUIsTUFBTSxHQUFHLFlBQVksQ0FBQztJQUN0QixPQUFPLENBQVE7SUFDZixPQUFPLENBQVE7SUFDZixRQUFRLEdBQWEsS0FBSyxDQUFDO0lBQzNCLE9BQU8sR0FBWSxNQUFNLENBQUM7SUFDMUIsTUFBTSxHQUFZLEVBQUUsQ0FBQztJQUNyQixZQUFZLEdBQVksSUFBSSxDQUFDO0lBQzdCLGVBQWUsR0FBVyxlQUFlLENBQUM7SUFDMUMsZ0JBQWdCLEdBQVcsZ0JBQWdCLENBQUM7SUFDNUMsSUFBSSxHQUF5QixJQUFJLENBQUM7SUFDcEMsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUN2QixVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUVoRCxTQUFTLEdBQWEsRUFBRSxDQUFDO0lBQ3pCLGlCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUNqQyxZQUFZLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNoQyxnQkFBZ0IsR0FBUyxJQUFJ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QU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFHUSxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDQyxRQUFRO3NCQUFoQixLQUFLO2dCQUNNLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHJvcGRvd25DaGFuZ2VFdmVudCB9IGZyb20gJ3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZHJvcC1kb3duJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50LmNzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnU2VsZWN0IGRhdGUnO1xuICBASW5wdXQoKSBmb3JtYXQgPSAnTU0vREQvWVlZWSc7XG4gIEBJbnB1dCgpIG1pbkRhdGU/OiBEYXRlO1xuICBASW5wdXQoKSBtYXhEYXRlPzogRGF0ZTtcbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGJnQ29sb3I/OiBzdHJpbmcgPSAnI2ZmZic7XG4gIEBJbnB1dCgpIGJvcmRlcj86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB1c2VEcm9wZG93bnM6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSB5ZWFyUGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3QgYSB5ZWFyJztcbiAgQElucHV0KCkgbW9udGhQbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlbGVjdCBhIG1vbnRoJztcbiAgQElucHV0KCkgZGF0ZTogRGF0ZSB8IG51bGwgfCBzdHJpbmcgPSBudWxsO1xuQElucHV0KCkgc2hvd1RpbWU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIGRhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgeWVhclJhbmdlOiBudW1iZXJbXSA9IFtdO1xuICBmaWx0ZXJlZFllYXJSYW5nZTogbnVtYmVyW10gPSBbXTtcbiAgc2VsZWN0ZWREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgdGVtcFNlbGVjdGVkRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHNob3dDYWxlbmRhciA9IGZhbHNlO1xuICAgIFxuICB3ZWVrRGF5cyA9IFsnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnLCAnU3VuJ107XG4gIG1vbnRocyA9IFtcbiAgICAnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsXG4gICAgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJyxcbiAgXTtcblxuICBzZWxlY3RlZE1vbnRoOiBudW1iZXIgPSAxO1xuICBzZWxlY3RlZE1vbnRoU3RyaW5nOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWRZZWFyOiBudW1iZXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIHByaXZhdGUgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxud3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgdGhpcy5kYXRlID0gdmFsdWU7XG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB2YWx1ZTtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHBhcnNlZERhdGUpO1xuICAgIHRoaXMudGVtcFNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHBhcnNlZERhdGUpO1xuICAgIHRoaXMuc2VsZWN0ZWRNb250aCA9IHRoaXMuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCk7XG4gICAgdGhpcy5zZWxlY3RlZFllYXIgPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgaWYgKHRoaXMuc2hvd1RpbWUpIHtcbiAgICAgIHRoaXMuaW5pdFRpbWVGcm9tRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgfVxuICB9XG59XG5cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLmRhdGUpIHtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGUgPVxuICAgICAgICB0eXBlb2YgdGhpcy5kYXRlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHRoaXMuZGF0ZSkgOiB0aGlzLmRhdGU7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHBhcnNlZERhdGUpO1xuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWREYXRlID0gbmV3IERhdGUocGFyc2VkRGF0ZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkTW9udGggPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpO1xuICAgICAgdGhpcy5zZWxlY3RlZFllYXIgPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIH1cbiAgfVxuaXNTYW1lRGF0ZShkMTogRGF0ZSwgZDI6IERhdGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBkMS5nZXRGdWxsWWVhcigpID09PSBkMi5nZXRGdWxsWWVhcigpICYmXG4gICAgZDEuZ2V0TW9udGgoKSA9PT0gZDIuZ2V0TW9udGgoKSAmJlxuICAgIGQxLmdldERhdGUoKSA9PT0gZDIuZ2V0RGF0ZSgpXG4gICk7XG59XG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGN1cnJlbnRZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IGVuZFllYXIgPSBjdXJyZW50WWVhciArIDEwO1xuICAgIHRoaXMueWVhclJhbmdlID0gQXJyYXkuZnJvbShcbiAgICAgIHsgbGVuZ3RoOiBlbmRZZWFyIC0gMTk2MCArIDEgfSxcbiAgICAgIChfLCBpKSA9PiAxOTYwICsgaVxuICAgICk7XG4gICAgdGhpcy55ZWFyUmFuZ2Uuc29ydCgoYSwgYikgPT4gYiAtIGEpO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlEYXRlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9XG4gICAgICB0eXBlb2YgdGhpcy5kYXRlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHRoaXMuZGF0ZSkgOiB0aGlzLmRhdGU7XG4gICAgcmV0dXJuIHBhcnNlZERhdGUgPyB0aGlzLmZvcm1hdERhdGUocGFyc2VkRGF0ZSwgdGhpcy5mb3JtYXQpIDogJyc7XG4gIH1cblxudGVtcFRpbWU6IHN0cmluZyA9ICcnO1xuYW1QbTogJ0FNJyB8ICdQTScgPSAnQU0nO1xuXG5cblxuc2VsZWN0ZWRIb3VyID0gXCIxMlwiO1xuc2VsZWN0ZWRNaW51dGUgPSBcIjAwXCI7XG5cblxuc2hvd0hvdXJPcHRpb25zID0gZmFsc2U7XG5zaG93TWludXRlT3B0aW9ucyA9IGZhbHNlO1xuXG5ob3VycyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDEyIH0sIChfLCBpKSA9PlxuICBTdHJpbmcoaSArIDEpLnBhZFN0YXJ0KDIsIFwiMFwiKVxuKTtcblxubWludXRlcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDYwIH0sIChfLCBpKSA9PlxuICBTdHJpbmcoaSkucGFkU3RhcnQoMiwgXCIwXCIpXG4pO1xuXG50b2dnbGVIb3VyRHJvcGRvd24oKSB7XG4gIHRoaXMuc2hvd0hvdXJPcHRpb25zID0gIXRoaXMuc2hvd0hvdXJPcHRpb25zO1xuICB0aGlzLnNob3dNaW51dGVPcHRpb25zID0gZmFsc2U7XG59XG5cbnRvZ2dsZU1pbnV0ZURyb3Bkb3duKCkge1xuICB0aGlzLnNob3dNaW51dGVPcHRpb25zID0gIXRoaXMuc2hvd01pbnV0ZU9wdGlvbnM7XG4gIHRoaXMuc2hvd0hvdXJPcHRpb25zID0gZmFsc2U7XG59XG5cbnNlbGVjdEhvdXIoaDogc3RyaW5nKSB7XG4gIHRoaXMuc2VsZWN0ZWRIb3VyID0gaDtcbiAgdGhpcy5zaG93SG91ck9wdGlvbnMgPSBmYWxzZTtcbn1cblxuc2VsZWN0TWludXRlKG06IHN0cmluZykge1xuICB0aGlzLnNlbGVjdGVkTWludXRlID0gbTtcbiAgdGhpcy5zaG93TWludXRlT3B0aW9ucyA9IGZhbHNlO1xufVxuXG50b2dnbGVBbVBtKCkge1xuICB0aGlzLmFtUG0gPSB0aGlzLmFtUG0gPT09IFwiQU1cIiA/IFwiUE1cIiA6IFwiQU1cIjtcbn1cblxudG9nZ2xlQ2FsZW5kYXIoKSB7XG4gIHRoaXMuc2hvd0NhbGVuZGFyID0gIXRoaXMuc2hvd0NhbGVuZGFyO1xuXG4gIHRoaXMudGVtcFNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGF0ZSB8fCBuZXcgRGF0ZSgpKTtcbiAgdGhpcy5zZWxlY3RlZE1vbnRoID0gdGhpcy50ZW1wU2VsZWN0ZWREYXRlLmdldE1vbnRoKCk7XG4gIHRoaXMuc2VsZWN0ZWRNb250aFN0cmluZyA9IHRoaXMubW9udGhzW3RoaXMuc2VsZWN0ZWRNb250aF07XG4gIHRoaXMuc2VsZWN0ZWRZZWFyID0gdGhpcy50ZW1wU2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCk7XG5cbiAgaWYgKHRoaXMuc2hvd1RpbWUgJiYgIXRoaXMudGVtcFRpbWUpIHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgaXNUb2RheSA9IHRoaXMuaXNTYW1lRGF0ZSh0aGlzLnRlbXBTZWxlY3RlZERhdGUsIHRvZGF5KTtcblxuICAgIGNvbnN0IGhvdXJzID0gaXNUb2RheSA/IHRvZGF5LmdldEhvdXJzKCkgOiAwO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBpc1RvZGF5ID8gdG9kYXkuZ2V0TWludXRlcygpIDogMDtcblxuICAgIHRoaXMudGVtcFNlbGVjdGVkRGF0ZS5zZXRIb3Vycyhob3VycywgbWludXRlcywgMCwgMCk7XG5cbiAgICB0aGlzLnNlbGVjdGVkSG91ciA9ICghdGhpcy5pczI0SG91ciAmJiBob3VycyA+IDEyID8gaG91cnMgLSAxMiA6IGhvdXJzKVxuICAgICAgLnRvU3RyaW5nKClcbiAgICAgIC5wYWRTdGFydCgyLCBcIjBcIik7XG4gICAgdGhpcy5zZWxlY3RlZE1pbnV0ZSA9IG1pbnV0ZXMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIik7XG4gICAgdGhpcy5hbVBtID0gIXRoaXMuaXMyNEhvdXIgJiYgaG91cnMgPj0gMTIgPyBcIlBNXCIgOiBcIkFNXCI7XG5cbiAgICB0aGlzLnRlbXBUaW1lID0gYCR7dGhpcy5zZWxlY3RlZEhvdXJ9OiR7dGhpcy5zZWxlY3RlZE1pbnV0ZX1gO1xuICB9XG59XG5cblxuIGluaXRUaW1lRnJvbURhdGUoZGF0ZTogRGF0ZSkge1xuICBjb25zdCBob3VycyA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgY29uc3QgbWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpO1xuXG4gIHRoaXMuc2VsZWN0ZWRIb3VyID0gKCF0aGlzLmlzMjRIb3VyICYmIGhvdXJzID4gMTIgPyBob3VycyAtIDEyIDogaG91cnMpXG4gICAgLnRvU3RyaW5nKClcbiAgICAucGFkU3RhcnQoMiwgXCIwXCIpO1xuICB0aGlzLnNlbGVjdGVkTWludXRlID0gbWludXRlcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsIFwiMFwiKTtcbiAgdGhpcy5hbVBtID0gIXRoaXMuaXMyNEhvdXIgJiYgaG91cnMgPj0gMTIgPyBcIlBNXCIgOiBcIkFNXCI7XG5cbiAgdGhpcy50ZW1wVGltZSA9IGAke3RoaXMuc2VsZWN0ZWRIb3VyfToke3RoaXMuc2VsZWN0ZWRNaW51dGV9YDtcbiAgdGhpcy50ZW1wU2VsZWN0ZWREYXRlLnNldEhvdXJzKGhvdXJzLCBtaW51dGVzLCAwLCAwKTtcbn1cbmZpeFRvVVRDKGRhdGVWYWx1ZTogYW55KSB7XG4gIGlmICghZGF0ZVZhbHVlKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBkYXRlID0gZGF0ZVZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IGRhdGVWYWx1ZSA6IG5ldyBEYXRlKGRhdGVWYWx1ZSk7XG4gIGlmIChpc05hTihkYXRlLmdldFRpbWUoKSkpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyhcbiAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgZGF0ZS5nZXRNb250aCgpLFxuICAgIGRhdGUuZ2V0RGF0ZSgpLFxuICAgIGRhdGUuZ2V0SG91cnMoKSxcbiAgICBkYXRlLmdldE1pbnV0ZXMoKSxcbiAgICBkYXRlLmdldFNlY29uZHMoKSxcbiAgICBkYXRlLmdldE1pbGxpc2Vjb25kcygpXG4gICkpO1xufVxuXG5jb25maXJtKCkge1xuICBpZiAodGhpcy5pc0Rpc2FibGVkKHRoaXMudGVtcFNlbGVjdGVkRGF0ZSkpIHJldHVybjtcblxuICBsZXQgaG91cnM6IG51bWJlcjtcbiAgbGV0IG1pbnV0ZXM6IG51bWJlcjtcblxuIFxuICBpZiAodGhpcy5zaG93VGltZSkge1xuICAgIGhvdXJzID0gTnVtYmVyKHRoaXMuc2VsZWN0ZWRIb3VyKTtcbiAgICBtaW51dGVzID0gTnVtYmVyKHRoaXMuc2VsZWN0ZWRNaW51dGUpO1xuXG4gICAgaWYgKCF0aGlzLmlzMjRIb3VyKSB7XG4gICAgICBpZiAodGhpcy5hbVBtID09PSBcIlBNXCIgJiYgaG91cnMgPCAxMikgaG91cnMgKz0gMTI7XG4gICAgICBpZiAodGhpcy5hbVBtID09PSBcIkFNXCIgJiYgaG91cnMgPT09IDEyKSBob3VycyA9IDA7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhvdXJzID0gMDtcbiAgICBtaW51dGVzID0gMDtcbiAgfVxuXG5cbiAgdGhpcy50ZW1wU2VsZWN0ZWREYXRlLnNldEhvdXJzKGhvdXJzLCBtaW51dGVzLCAwLCAwKTtcblxuICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMudGVtcFNlbGVjdGVkRGF0ZSk7XG4gIHRoaXMuZGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlO1xuXG5cbiAgY29uc3QgcGFkID0gKG46IG51bWJlcikgPT4gbi50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gIGNvbnN0IGxvY2FsRGF0ZVN0cmluZyA9IGAke3RoaXMuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCl9LSR7cGFkKHRoaXMuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCkgKyAxKX0tJHtwYWQodGhpcy5zZWxlY3RlZERhdGUuZ2V0RGF0ZSgpKX1UJHtwYWQodGhpcy5zZWxlY3RlZERhdGUuZ2V0SG91cnMoKSl9OiR7cGFkKHRoaXMuc2VsZWN0ZWREYXRlLmdldE1pbnV0ZXMoKSl9OiR7cGFkKHRoaXMuc2VsZWN0ZWREYXRlLmdldFNlY29uZHMoKSl9YDtcblxuIGNvbnNvbGUubG9nKGxvY2FsRGF0ZVN0cmluZyk7XG4gXG4gIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgdGhpcy5vbkNoYW5nZShsb2NhbERhdGVTdHJpbmcpOyBcbiAgdGhpcy5vblRvdWNoZWQoKTtcblxuICB0aGlzLnNob3dDYWxlbmRhciA9IGZhbHNlO1xufVxuXG5cblxuc2V0VG9TdGFydE9mRGF5KCkge1xuXG4gIHRoaXMuc2VsZWN0ZWRIb3VyID0gdGhpcy5pczI0SG91ciA/ICcwMCcgOiAnMTInO1xuICB0aGlzLnNlbGVjdGVkTWludXRlID0gJzAwJztcbiAgdGhpcy5hbVBtID0gJ0FNJztcblxuXG4gIHRoaXMudGVtcFNlbGVjdGVkRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgdGhpcy50ZW1wVGltZSA9IGAke3RoaXMuc2VsZWN0ZWRIb3VyfToke3RoaXMuc2VsZWN0ZWRNaW51dGV9YDtcblxuICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMudGVtcFNlbGVjdGVkRGF0ZSk7XG59XG5cblxuXG4gIHByZXZpb3VzTW9udGgoKSB7XG4gICAgdGhpcy5zZWxlY3RlZE1vbnRoLS07XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNb250aCA8IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRNb250aCA9IDExO1xuICAgICAgdGhpcy5zZWxlY3RlZFllYXItLTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVUZW1wU2VsZWN0ZWREYXRlKCk7XG4gIH1cblxuICBuZXh0TW9udGgoKSB7XG4gICAgdGhpcy5zZWxlY3RlZE1vbnRoKys7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRNb250aCA+IDExKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTW9udGggPSAwO1xuICAgICAgdGhpcy5zZWxlY3RlZFllYXIrKztcbiAgICB9XG4gICAgdGhpcy51cGRhdGVUZW1wU2VsZWN0ZWREYXRlKCk7XG4gIH1cblxuICBvbkRyb3Bkb3duWWVhckNoYW5nZShldmVudDogRHJvcGRvd25DaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRZZWFyID0gZXZlbnQudmFsdWU7XG4gICAgdGhpcy51cGRhdGVUZW1wU2VsZWN0ZWREYXRlKCk7XG4gIH1cblxuICBvbkRyb3Bkb3duTW9udGhDaGFuZ2UoZXZlbnQ6IERyb3Bkb3duQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9udGggPSB0aGlzLm1vbnRocy5pbmRleE9mKGV2ZW50LnZhbHVlKTtcbiAgICB0aGlzLnVwZGF0ZVRlbXBTZWxlY3RlZERhdGUoKTtcbiAgfVxuXG4gIHVwZGF0ZVRlbXBTZWxlY3RlZERhdGUoKSB7XG4gICAgdGhpcy50ZW1wU2VsZWN0ZWREYXRlLnNldE1vbnRoKHRoaXMuc2VsZWN0ZWRNb250aCk7XG4gICAgdGhpcy50ZW1wU2VsZWN0ZWREYXRlLnNldEZ1bGxZZWFyKHRoaXMuc2VsZWN0ZWRZZWFyKTtcbiAgfVxuXG4gIGdldERheXNJbk1vbnRoKCk6IChEYXRlIHwgbnVsbClbXSB7XG4gICAgY29uc3QgZGF5czogKERhdGUgfCBudWxsKVtdID0gW107XG4gICAgY29uc3QgeWVhciA9IHRoaXMuc2VsZWN0ZWRZZWFyO1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5zZWxlY3RlZE1vbnRoO1xuXG4gICAgY29uc3QgZmlyc3REYXlPZk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpLmdldERheSgpO1xuICAgIGNvbnN0IG9mZnNldCA9IGZpcnN0RGF5T2ZNb250aCA9PT0gMCA/IDYgOiBmaXJzdERheU9mTW9udGggLSAxO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvZmZzZXQ7IGkrKykge1xuICAgICAgZGF5cy5wdXNoKG51bGwpO1xuICAgIH1cblxuICAgIGNvbnN0IHRvdGFsRGF5cyA9IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRvdGFsRGF5czsgaSsrKSB7XG4gICAgICBjb25zdCBkYXkgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgaSk7XG4gICAgICBkYXlzLnB1c2goZGF5KTtcbiAgICB9XG4gICAgcmV0dXJuIGRheXM7XG4gIH1cblxuaXNEaXNhYmxlZChkYXk6IERhdGUgfCBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgZGF5RGF0ZSA9IHRoaXMudG9EYXRlKGRheSk7XG5cbiAgaWYgKHRoaXMubWluRGF0ZSAmJiBkYXlEYXRlIDwgdGhpcy5zdHJpcFRpbWUodGhpcy50b0RhdGUodGhpcy5taW5EYXRlKSkpIHJldHVybiB0cnVlO1xuICBpZiAodGhpcy5tYXhEYXRlICYmIGRheURhdGUgPiB0aGlzLnN0cmlwVGltZSh0aGlzLnRvRGF0ZSh0aGlzLm1heERhdGUpKSkgcmV0dXJuIHRydWU7XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5wcml2YXRlIHN0cmlwVGltZShkYXRlOiBEYXRlIHwgc3RyaW5nKTogRGF0ZSB7XG4gIGNvbnN0IGQgPSB0aGlzLnRvRGF0ZShkYXRlKTtcbiAgcmV0dXJuIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG59XG5cbnByaXZhdGUgdG9EYXRlKHZhbHVlOiBEYXRlIHwgc3RyaW5nKTogRGF0ZSB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHJldHVybiB2YWx1ZTtcbiAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbn1cbiBpczI0SG91cjogYm9vbGVhbiA9IGZhbHNlO1xuc2VsZWN0VGVtcG9yYXJ5RGF0ZShkYXk6IERhdGUpIHtcbiAgaWYgKHRoaXMuaXNEaXNhYmxlZChkYXkpKSByZXR1cm47XG5cbiAgY29uc3QgaXNOZXdEYXRlID0gIXRoaXMuaXNTYW1lRGF0ZSh0aGlzLnRlbXBTZWxlY3RlZERhdGUsIGRheSk7XG4gIHRoaXMudGVtcFNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKGRheSk7XG5cbiAgaWYgKHRoaXMuc2hvd1RpbWUpIHtcbiAgICBpZiAoaXNOZXdEYXRlKSB7XG5cbiAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICAgIGNvbnN0IGlzVG9kYXkgPVxuICAgICAgICBkYXkuZ2V0RnVsbFllYXIoKSA9PT0gdG9kYXkuZ2V0RnVsbFllYXIoKSAmJlxuICAgICAgICBkYXkuZ2V0TW9udGgoKSA9PT0gdG9kYXkuZ2V0TW9udGgoKSAmJlxuICAgICAgICBkYXkuZ2V0RGF0ZSgpID09PSB0b2RheS5nZXREYXRlKCk7XG5cbiAgICAgIGNvbnN0IGhvdXJzID0gaXNUb2RheSA/IHRvZGF5LmdldEhvdXJzKCkgOiAwO1xuICAgICAgY29uc3QgbWludXRlcyA9IGlzVG9kYXkgPyB0b2RheS5nZXRNaW51dGVzKCkgOiAwO1xuXG4gICAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGUuc2V0SG91cnMoaG91cnMsIG1pbnV0ZXMsIDAsIDApO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkSG91ciA9ICghdGhpcy5pczI0SG91ciAmJiBob3VycyA+IDEyID8gaG91cnMgLSAxMiA6IGhvdXJzKVxuICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAucGFkU3RhcnQoMiwgXCIwXCIpO1xuICAgICAgdGhpcy5zZWxlY3RlZE1pbnV0ZSA9IG1pbnV0ZXMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIik7XG4gICAgICB0aGlzLmFtUG0gPSAhdGhpcy5pczI0SG91ciAmJiBob3VycyA+PSAxMiA/IFwiUE1cIiA6IFwiQU1cIjtcblxuICAgICAgdGhpcy50ZW1wVGltZSA9IGAke3RoaXMuc2VsZWN0ZWRIb3VyfToke3RoaXMuc2VsZWN0ZWRNaW51dGV9YDtcbiAgICB9IGVsc2Uge1xuIFxuICAgICAgY29uc3QgW2gsIG1dID0gdGhpcy50ZW1wVGltZS5zcGxpdCgnOicpO1xuICAgICAgdGhpcy5zZWxlY3RlZEhvdXIgPSBoO1xuICAgICAgdGhpcy5zZWxlY3RlZE1pbnV0ZSA9IG07XG4gICAgICBpZiAoIXRoaXMuaXMyNEhvdXIpIHRoaXMuYW1QbSA9IE51bWJlcihoKSA+PSAxMiA/ICdQTScgOiAnQU0nO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cbiAgaXNTZWxlY3RlZChkYXk6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgZGF5LmdldERhdGUoKSA9PT0gdGhpcy50ZW1wU2VsZWN0ZWREYXRlLmdldERhdGUoKSAmJlxuICAgICAgZGF5LmdldE1vbnRoKCkgPT09IHRoaXMudGVtcFNlbGVjdGVkRGF0ZS5nZXRNb250aCgpICYmXG4gICAgICBkYXkuZ2V0RnVsbFllYXIoKSA9PT0gdGhpcy50ZW1wU2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKClcbiAgICApO1xuICB9XG5cbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIGNvbnN0IG1vbnRoID0gKGRhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgIGNhc2UgJ0REL01NL1lZWVknOlxuICAgICAgICByZXR1cm4gYCR7ZGF5fS8ke21vbnRofS8ke3llYXJ9YDtcbiAgICAgIGNhc2UgJ01NL0REL1lZWVknOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGAke21vbnRofS8ke2RheX0vJHt5ZWFyfWA7XG4gICAgfVxuICB9XG5cblxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9IGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXJcIj5cbjxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250YWluZXJcIj5cbiAgICA8aW5wdXRcbiAgICB0eXBlPVwidGV4dFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbdmFsdWVdPVwiZGlzcGxheURhdGVcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cIiFkaXNhYmxlZCAmJiB0b2dnbGVDYWxlbmRhcigpXCJcbiAgICBjbGFzcz1cInctZnVsbCBibG9ja1wiXG4gICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYmdDb2xvclwiXG4gICAgW3N0eWxlLmJvcmRlcl09XCJib3JkZXJcIlxuICAgIFxuICAgIFtuZ0NsYXNzXT1cInsnY3Vyc29yLW5vdC1hbGxvd2VkJzpkaXNhYmxlZD09PXRydWUsICdjdXJzb3ItcG9pbnRlcic6ZGlzYWJsZWQ9PT1mYWxzZX1cIlxuICAgIHJlYWRvbmx5XG4gIC8+IFxuPHZlcmJlbi1zdmcgICAgIChjbGljayk9XCIhZGlzYWJsZWQgJiYgdG9nZ2xlQ2FsZW5kYXIoKVwiIGNsYXNzPVwiaWNvblwiIFtpY29uXT1cIidjYWxlbmRhcidcIj48L3ZlcmJlbi1zdmc+XG48L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwic2hvd0NhbGVuZGFyXCIgW2FwcE91dFNpZGVDbGlja109XCJzaG93Q2FsZW5kYXJcIiAob3V0U2lkZUNsaWNrKT1cInNob3dDYWxlbmRhcj1mYWxzZVwiIGNsYXNzPVwiY2FsZW5kYXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXVzZURyb3Bkb3duczsgZWxzZSBkcm9wZG93bnNcIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicHJldmlvdXNNb250aCgpXCI+XG4gICAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjIwXCIgW2ljb25dPVwiJ2NoZXZyb24tbGVmdCdcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8c3Bhbj57eyBtb250aHNbc2VsZWN0ZWRNb250aF0gfX0ge3sgc2VsZWN0ZWRZZWFyIH19PC9zcGFuPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJuZXh0TW9udGgoKVwiPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIyMFwiIFtpY29uXT1cIidjaGV2cm9uLXJpZ2h0J1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bnM+XG4gICAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInllYXJQbGFjZWhvbGRlclwiXG4gICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRHJvcGRvd25ZZWFyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFtvcHRpb25zXT1cInllYXJSYW5nZVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFllYXJcIlxuICAgICAgICAgIFt3aWR0aF09XCInOTBweCdcIlxuICAgICAgICA+PC92ZXJiZW4tZHJvcC1kb3duPlxuXG4gICAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIm1vbnRoUGxhY2Vob2xkZXJcIlxuICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkRyb3Bkb3duTW9udGhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgW29wdGlvbnNdPVwibW9udGhzXCJcbiAgICAgICAgICBjbGFzcz1cImRyb3AtZG93blwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE1vbnRoU3RyaW5nXCJcbiAgICAgICAgICAgIFt3aWR0aF09XCInOTBweCdcIlxuICAgICAgICA+PC92ZXJiZW4tZHJvcC1kb3duPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgXG48ZGl2IGNsYXNzPVwidGltZS1waWNrZXIgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIiAqbmdJZj1cInNob3dUaW1lXCI+XG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBib3ggcm91bmRlZCBweC0yIHB5LTEgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUhvdXJEcm9wZG93bigpXCI+XG4gICAgICB7eyBzZWxlY3RlZEhvdXIgfX1cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJzaG93SG91ck9wdGlvbnNcIiBjbGFzcz1cImRyb3Bkb3duXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBoIG9mIGhvdXJzXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJoID09PSBzZWxlY3RlZEhvdXJcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0SG91cihoKVwiXG4gICAgICA+XG4gICAgICAgIHt7IGggfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8c3Bhbj46PC9zcGFuPlxuXG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBib3ggcm91bmRlZCBweC0yIHB5LTEgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1pbnV0ZURyb3Bkb3duKClcIj5cbiAgICAgIHt7IHNlbGVjdGVkTWludXRlIH19XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd01pbnV0ZU9wdGlvbnNcIiBjbGFzcz1cImRyb3Bkb3duXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBtIG9mIG1pbnV0ZXNcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIm0gPT09IHNlbGVjdGVkTWludXRlXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1pbnV0ZShtKVwiXG4gICAgICA+XG4gICAgICB7e219fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICAgPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJ0b2dnbGVBbVBtKClcIlxuICAgIGNsYXNzPVwiYW1QbVwiXG4gID5cbiAgICB7eyBhbVBtIH19XG4gIDwvYnV0dG9uPlxuIDx2ZXJiZW4tc3ZnICAgKGNsaWNrKT1cInNldFRvU3RhcnRPZkRheSgpXCIgY2xhc3M9XCIgY3Vyc29yLXBvaW50ZXJcIiBbd2lkdGhdPVwiMTRcIiBbaGVpZ2h0XT1cIjE0XCIgW2ljb25dPVwiJ2Nsb2NrJ1wiPjwvdmVyYmVuLXN2Zz5cbiBcbjwvZGl2PlxuXG5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwid2Vla2RheXNcIj5cbiAgICAgICAgPHNwYW4gICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla0RheXNcIj57eyBkYXkgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXkgb2YgZ2V0RGF5c0luTW9udGgoKVwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiZGF5OyBlbHNlIGVtcHR5XCJcbiAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc1NlbGVjdGVkKGRheSlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQoZGF5KVwiICBcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQtZGF5JzogaXNEaXNhYmxlZChkYXkpfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VGVtcG9yYXJ5RGF0ZShkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBkYXkuZ2V0RGF0ZSgpIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW1wdHktZGF0ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWZvb3RlclwiPlxuXG4gICAgICA8YnV0dG9uIChjbGljayk9XCJjYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY29uZmlybSgpXCI+T0s8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -24,6 +24,7 @@ class DatePickerComponent {
|
|
|
24
24
|
yearPlaceholder = 'Select a year';
|
|
25
25
|
monthPlaceholder = 'Select a month';
|
|
26
26
|
date = null;
|
|
27
|
+
showTime = false;
|
|
27
28
|
dateChange = new EventEmitter();
|
|
28
29
|
yearRange = [];
|
|
29
30
|
filteredYearRange = [];
|
|
@@ -48,6 +49,9 @@ class DatePickerComponent {
|
|
|
48
49
|
this.tempSelectedDate = new Date(parsedDate);
|
|
49
50
|
this.selectedMonth = this.selectedDate.getMonth();
|
|
50
51
|
this.selectedYear = this.selectedDate.getFullYear();
|
|
52
|
+
if (this.showTime) {
|
|
53
|
+
this.initTimeFromDate(this.selectedDate);
|
|
54
|
+
}
|
|
51
55
|
}
|
|
52
56
|
}
|
|
53
57
|
registerOnChange(fn) {
|
|
@@ -68,6 +72,11 @@ class DatePickerComponent {
|
|
|
68
72
|
this.selectedYear = this.selectedDate.getFullYear();
|
|
69
73
|
}
|
|
70
74
|
}
|
|
75
|
+
isSameDate(d1, d2) {
|
|
76
|
+
return (d1.getFullYear() === d2.getFullYear() &&
|
|
77
|
+
d1.getMonth() === d2.getMonth() &&
|
|
78
|
+
d1.getDate() === d2.getDate());
|
|
79
|
+
}
|
|
71
80
|
ngOnInit() {
|
|
72
81
|
const currentYear = new Date().getFullYear();
|
|
73
82
|
const endYear = currentYear + 10;
|
|
@@ -78,12 +87,109 @@ class DatePickerComponent {
|
|
|
78
87
|
const parsedDate = typeof this.date === 'string' ? new Date(this.date) : this.date;
|
|
79
88
|
return parsedDate ? this.formatDate(parsedDate, this.format) : '';
|
|
80
89
|
}
|
|
90
|
+
tempTime = '';
|
|
91
|
+
amPm = 'AM';
|
|
92
|
+
selectedHour = "12";
|
|
93
|
+
selectedMinute = "00";
|
|
94
|
+
showHourOptions = false;
|
|
95
|
+
showMinuteOptions = false;
|
|
96
|
+
hours = Array.from({ length: 12 }, (_, i) => String(i + 1).padStart(2, "0"));
|
|
97
|
+
minutes = Array.from({ length: 60 }, (_, i) => String(i).padStart(2, "0"));
|
|
98
|
+
toggleHourDropdown() {
|
|
99
|
+
this.showHourOptions = !this.showHourOptions;
|
|
100
|
+
this.showMinuteOptions = false;
|
|
101
|
+
}
|
|
102
|
+
toggleMinuteDropdown() {
|
|
103
|
+
this.showMinuteOptions = !this.showMinuteOptions;
|
|
104
|
+
this.showHourOptions = false;
|
|
105
|
+
}
|
|
106
|
+
selectHour(h) {
|
|
107
|
+
this.selectedHour = h;
|
|
108
|
+
this.showHourOptions = false;
|
|
109
|
+
}
|
|
110
|
+
selectMinute(m) {
|
|
111
|
+
this.selectedMinute = m;
|
|
112
|
+
this.showMinuteOptions = false;
|
|
113
|
+
}
|
|
114
|
+
toggleAmPm() {
|
|
115
|
+
this.amPm = this.amPm === "AM" ? "PM" : "AM";
|
|
116
|
+
}
|
|
81
117
|
toggleCalendar() {
|
|
82
118
|
this.showCalendar = !this.showCalendar;
|
|
83
119
|
this.tempSelectedDate = new Date(this.date || new Date());
|
|
84
120
|
this.selectedMonth = this.tempSelectedDate.getMonth();
|
|
85
121
|
this.selectedMonthString = this.months[this.selectedMonth];
|
|
86
122
|
this.selectedYear = this.tempSelectedDate.getFullYear();
|
|
123
|
+
if (this.showTime && !this.tempTime) {
|
|
124
|
+
const today = new Date();
|
|
125
|
+
const isToday = this.isSameDate(this.tempSelectedDate, today);
|
|
126
|
+
const hours = isToday ? today.getHours() : 0;
|
|
127
|
+
const minutes = isToday ? today.getMinutes() : 0;
|
|
128
|
+
this.tempSelectedDate.setHours(hours, minutes, 0, 0);
|
|
129
|
+
this.selectedHour = (!this.is24Hour && hours > 12 ? hours - 12 : hours)
|
|
130
|
+
.toString()
|
|
131
|
+
.padStart(2, "0");
|
|
132
|
+
this.selectedMinute = minutes.toString().padStart(2, "0");
|
|
133
|
+
this.amPm = !this.is24Hour && hours >= 12 ? "PM" : "AM";
|
|
134
|
+
this.tempTime = `${this.selectedHour}:${this.selectedMinute}`;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
initTimeFromDate(date) {
|
|
138
|
+
const hours = date.getHours();
|
|
139
|
+
const minutes = date.getMinutes();
|
|
140
|
+
this.selectedHour = (!this.is24Hour && hours > 12 ? hours - 12 : hours)
|
|
141
|
+
.toString()
|
|
142
|
+
.padStart(2, "0");
|
|
143
|
+
this.selectedMinute = minutes.toString().padStart(2, "0");
|
|
144
|
+
this.amPm = !this.is24Hour && hours >= 12 ? "PM" : "AM";
|
|
145
|
+
this.tempTime = `${this.selectedHour}:${this.selectedMinute}`;
|
|
146
|
+
this.tempSelectedDate.setHours(hours, minutes, 0, 0);
|
|
147
|
+
}
|
|
148
|
+
fixToUTC(dateValue) {
|
|
149
|
+
if (!dateValue)
|
|
150
|
+
return null;
|
|
151
|
+
const date = dateValue instanceof Date ? dateValue : new Date(dateValue);
|
|
152
|
+
if (isNaN(date.getTime()))
|
|
153
|
+
return null;
|
|
154
|
+
return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));
|
|
155
|
+
}
|
|
156
|
+
confirm() {
|
|
157
|
+
if (this.isDisabled(this.tempSelectedDate))
|
|
158
|
+
return;
|
|
159
|
+
let hours;
|
|
160
|
+
let minutes;
|
|
161
|
+
if (this.showTime) {
|
|
162
|
+
hours = Number(this.selectedHour);
|
|
163
|
+
minutes = Number(this.selectedMinute);
|
|
164
|
+
if (!this.is24Hour) {
|
|
165
|
+
if (this.amPm === "PM" && hours < 12)
|
|
166
|
+
hours += 12;
|
|
167
|
+
if (this.amPm === "AM" && hours === 12)
|
|
168
|
+
hours = 0;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
hours = 0;
|
|
173
|
+
minutes = 0;
|
|
174
|
+
}
|
|
175
|
+
this.tempSelectedDate.setHours(hours, minutes, 0, 0);
|
|
176
|
+
this.selectedDate = new Date(this.tempSelectedDate);
|
|
177
|
+
this.date = this.selectedDate;
|
|
178
|
+
const pad = (n) => n.toString().padStart(2, '0');
|
|
179
|
+
const localDateString = `${this.selectedDate.getFullYear()}-${pad(this.selectedDate.getMonth() + 1)}-${pad(this.selectedDate.getDate())}T${pad(this.selectedDate.getHours())}:${pad(this.selectedDate.getMinutes())}:${pad(this.selectedDate.getSeconds())}`;
|
|
180
|
+
console.log(localDateString);
|
|
181
|
+
this.dateChange.emit(this.selectedDate);
|
|
182
|
+
this.onChange(localDateString);
|
|
183
|
+
this.onTouched();
|
|
184
|
+
this.showCalendar = false;
|
|
185
|
+
}
|
|
186
|
+
setToStartOfDay() {
|
|
187
|
+
this.selectedHour = this.is24Hour ? '00' : '12';
|
|
188
|
+
this.selectedMinute = '00';
|
|
189
|
+
this.amPm = 'AM';
|
|
190
|
+
this.tempSelectedDate.setHours(0, 0, 0, 0);
|
|
191
|
+
this.tempTime = `${this.selectedHour}:${this.selectedMinute}`;
|
|
192
|
+
this.selectedDate = new Date(this.tempSelectedDate);
|
|
87
193
|
}
|
|
88
194
|
previousMonth() {
|
|
89
195
|
this.selectedMonth--;
|
|
@@ -146,10 +252,36 @@ class DatePickerComponent {
|
|
|
146
252
|
return value;
|
|
147
253
|
return new Date(value);
|
|
148
254
|
}
|
|
255
|
+
is24Hour = false;
|
|
149
256
|
selectTemporaryDate(day) {
|
|
150
257
|
if (this.isDisabled(day))
|
|
151
258
|
return;
|
|
152
|
-
this.tempSelectedDate
|
|
259
|
+
const isNewDate = !this.isSameDate(this.tempSelectedDate, day);
|
|
260
|
+
this.tempSelectedDate = new Date(day);
|
|
261
|
+
if (this.showTime) {
|
|
262
|
+
if (isNewDate) {
|
|
263
|
+
const today = new Date();
|
|
264
|
+
const isToday = day.getFullYear() === today.getFullYear() &&
|
|
265
|
+
day.getMonth() === today.getMonth() &&
|
|
266
|
+
day.getDate() === today.getDate();
|
|
267
|
+
const hours = isToday ? today.getHours() : 0;
|
|
268
|
+
const minutes = isToday ? today.getMinutes() : 0;
|
|
269
|
+
this.tempSelectedDate.setHours(hours, minutes, 0, 0);
|
|
270
|
+
this.selectedHour = (!this.is24Hour && hours > 12 ? hours - 12 : hours)
|
|
271
|
+
.toString()
|
|
272
|
+
.padStart(2, "0");
|
|
273
|
+
this.selectedMinute = minutes.toString().padStart(2, "0");
|
|
274
|
+
this.amPm = !this.is24Hour && hours >= 12 ? "PM" : "AM";
|
|
275
|
+
this.tempTime = `${this.selectedHour}:${this.selectedMinute}`;
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
const [h, m] = this.tempTime.split(':');
|
|
279
|
+
this.selectedHour = h;
|
|
280
|
+
this.selectedMinute = m;
|
|
281
|
+
if (!this.is24Hour)
|
|
282
|
+
this.amPm = Number(h) >= 12 ? 'PM' : 'AM';
|
|
283
|
+
}
|
|
284
|
+
}
|
|
153
285
|
}
|
|
154
286
|
isSelected(day) {
|
|
155
287
|
return (day.getDate() === this.tempSelectedDate.getDate() &&
|
|
@@ -168,28 +300,17 @@ class DatePickerComponent {
|
|
|
168
300
|
return `${month}/${day}/${year}`;
|
|
169
301
|
}
|
|
170
302
|
}
|
|
171
|
-
confirm() {
|
|
172
|
-
if (this.isDisabled(this.tempSelectedDate))
|
|
173
|
-
return;
|
|
174
|
-
this.tempSelectedDate.setHours(12, 0, 0, 0);
|
|
175
|
-
this.selectedDate = new Date(this.tempSelectedDate);
|
|
176
|
-
this.date = this.selectedDate;
|
|
177
|
-
this.dateChange.emit(this.selectedDate);
|
|
178
|
-
this.onChange(this.selectedDate);
|
|
179
|
-
this.onTouched();
|
|
180
|
-
this.showCalendar = false;
|
|
181
|
-
}
|
|
182
303
|
cancel() {
|
|
183
304
|
this.showCalendar = false;
|
|
184
305
|
}
|
|
185
306
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
186
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: DatePickerComponent, selector: "app-date-picker", inputs: { placeholder: "placeholder", format: "format", minDate: "minDate", maxDate: "maxDate", disabled: "disabled", bgColor: "bgColor", border: "border", useDropdowns: "useDropdowns", yearPlaceholder: "yearPlaceholder", monthPlaceholder: "monthPlaceholder", date: "date" }, outputs: { dateChange: "dateChange" }, providers: [
|
|
307
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: DatePickerComponent, selector: "app-date-picker", inputs: { placeholder: "placeholder", format: "format", minDate: "minDate", maxDate: "maxDate", disabled: "disabled", bgColor: "bgColor", border: "border", useDropdowns: "useDropdowns", yearPlaceholder: "yearPlaceholder", monthPlaceholder: "monthPlaceholder", date: "date", showTime: "showTime" }, outputs: { dateChange: "dateChange" }, providers: [
|
|
187
308
|
{
|
|
188
309
|
provide: NG_VALUE_ACCESSOR,
|
|
189
310
|
useExisting: forwardRef(() => DatePickerComponent),
|
|
190
311
|
multi: true,
|
|
191
312
|
},
|
|
192
|
-
], usesOnChanges: true, ngImport: i0, template: "<div class=\"date-picker\">\n
|
|
313
|
+
], usesOnChanges: true, ngImport: i0, template: "<div class=\"date-picker\">\n<div class=\"calendar-container\">\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"displayDate\"\n [disabled]=\"disabled\"\n (click)=\"!disabled && toggleCalendar()\"\n class=\"w-full block\"\n [style.background-color]=\"bgColor\"\n [style.border]=\"border\"\n \n [ngClass]=\"{'cursor-not-allowed':disabled===true, 'cursor-pointer':disabled===false}\"\n readonly\n /> \n<verben-svg (click)=\"!disabled && toggleCalendar()\" class=\"icon\" [icon]=\"'calendar'\"></verben-svg>\n</div>\n\n <div *ngIf=\"showCalendar\" [appOutSideClick]=\"showCalendar\" (outSideClick)=\"showCalendar=false\" class=\"calendar\">\n <div class=\"calendar-header\">\n <ng-container *ngIf=\"!useDropdowns; else dropdowns\">\n <button (click)=\"previousMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-left'\"></verben-svg>\n </button>\n <span>{{ months[selectedMonth] }} {{ selectedYear }}</span>\n <button (click)=\"nextMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-right'\"></verben-svg>\n </button>\n </ng-container>\n\n <ng-template #dropdowns>\n <verben-drop-down\n [placeholder]=\"yearPlaceholder\"\n (onChange)=\"onDropdownYearChange($event)\"\n [options]=\"yearRange\"\n [(ngModel)]=\"selectedYear\"\n [width]=\"'90px'\"\n ></verben-drop-down>\n\n <verben-drop-down\n [placeholder]=\"monthPlaceholder\"\n (onChange)=\"onDropdownMonthChange($event)\"\n [options]=\"months\"\n class=\"drop-down\"\n [(ngModel)]=\"selectedMonthString\"\n [width]=\"'90px'\"\n ></verben-drop-down>\n </ng-template>\n \n<div class=\"time-picker flex items-center gap-2\" *ngIf=\"showTime\">\n <div class=\"relative\">\n <div class=\"flex items-center box rounded px-2 py-1 cursor-pointer\"\n (click)=\"toggleHourDropdown()\">\n {{ selectedHour }}\n </div>\n\n <div *ngIf=\"showHourOptions\" class=\"dropdown\">\n <div\n class=\"dropdown-item\"\n *ngFor=\"let h of hours\"\n [class.active]=\"h === selectedHour\"\n (click)=\"selectHour(h)\"\n >\n {{ h }}\n </div>\n </div>\n </div>\n\n <span>:</span>\n\n <div class=\"relative\">\n <div class=\"flex items-center box rounded px-2 py-1 cursor-pointer\"\n (click)=\"toggleMinuteDropdown()\">\n {{ selectedMinute }}\n </div>\n\n <div *ngIf=\"showMinuteOptions\" class=\"dropdown\">\n <div\n class=\"dropdown-item\"\n *ngFor=\"let m of minutes\"\n [class.active]=\"m === selectedMinute\"\n (click)=\"selectMinute(m)\"\n >\n {{m}}\n </div>\n </div>\n </div>\n <button\n type=\"button\"\n (click)=\"toggleAmPm()\"\n class=\"amPm\"\n >\n {{ amPm }}\n </button>\n <verben-svg (click)=\"setToStartOfDay()\" class=\" cursor-pointer\" [width]=\"14\" [height]=\"14\" [icon]=\"'clock'\"></verben-svg>\n \n</div>\n\n\n </div>\n\n <div class=\"calendar-body\">\n <div class=\"weekdays\">\n <span *ngFor=\"let day of weekDays\">{{ day }}</span>\n </div>\n <div class=\"dates\">\n <ng-container *ngFor=\"let day of getDaysInMonth()\">\n <button\n *ngIf=\"day; else empty\"\n [class.selected]=\"isSelected(day)\"\n [disabled]=\"isDisabled(day)\" \n [ngClass]=\"{'disabled-day': isDisabled(day)}\"\n (click)=\"selectTemporaryDate(day)\"\n >\n {{ day.getDate() }}\n </button>\n <ng-template #empty>\n <span class=\"empty-date\"></span>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <div class=\"calendar-footer\">\n\n <button (click)=\"cancel()\">Cancel</button>\n <button (click)=\"confirm()\">OK</button>\n </div>\n </div>\n</div>\n", styles: [".date-picker{position:relative;width:100%}.calendar-container{position:relative}.icon{position:absolute;top:5px;right:10px;cursor:pointer}input{width:100%;padding:10px;font-size:13px;border:1px solid #ccc;border-radius:4px}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed;color:#8080808f}.calendar{position:absolute;top:100%;left:0;width:350px;border:1px solid #ccc;background-color:#fff;z-index:10;border-radius:4px}.calendar-header{display:flex;justify-content:space-between;gap:5px;font-size:13px;padding:15px 15px 0}.weekdays,.dates{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:1px;padding:15px 15px 0;font-size:13px}button{border:none;background:none;cursor:pointer;padding:5px;width:40px;height:40px}button.selected{background-color:#ffe681;color:#000;border-radius:30px}.calendar-footer{display:flex;justify-content:end;gap:10px;padding:4px 15px;color:#000;font-weight:500;font-size:13px}.calendar-footer button{color:#000}.disabled-day{opacity:.4;cursor:not-allowed}.time-picker input{border:1px solid #ccc;border-radius:4px;padding:4px 6px;text-align:center;width:50px;outline:none;height:40px}.time-picker button{border:1px solid #ccc;border-radius:4px;background-color:#f3f3f3;font-size:10px;width:fit-content;height:30px;cursor:pointer}.box{border:1px solid #ccc}::ng-deep .drop-down .verben-drop-down,::ng-deep .drop-down *{font-size:13px!important}.dropdown{position:absolute;top:110%;left:0;width:60px;max-height:120px;overflow-y:auto;background:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 2px 8px #0000001a;z-index:20}.dropdown-item{padding:6px;text-align:center;cursor:pointer}.dropdown-item:hover,.dropdown-item.active{background:#3182ce;color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: i4.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "directive", type: i5.OutSideClickDirective, selector: "[appOutSideClick]", inputs: ["appOutSideClick"], outputs: ["outSideClick"] }] });
|
|
193
314
|
}
|
|
194
315
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
195
316
|
type: Component,
|
|
@@ -199,7 +320,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
|
|
|
199
320
|
useExisting: forwardRef(() => DatePickerComponent),
|
|
200
321
|
multi: true,
|
|
201
322
|
},
|
|
202
|
-
], template: "<div class=\"date-picker\">\n
|
|
323
|
+
], template: "<div class=\"date-picker\">\n<div class=\"calendar-container\">\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"displayDate\"\n [disabled]=\"disabled\"\n (click)=\"!disabled && toggleCalendar()\"\n class=\"w-full block\"\n [style.background-color]=\"bgColor\"\n [style.border]=\"border\"\n \n [ngClass]=\"{'cursor-not-allowed':disabled===true, 'cursor-pointer':disabled===false}\"\n readonly\n /> \n<verben-svg (click)=\"!disabled && toggleCalendar()\" class=\"icon\" [icon]=\"'calendar'\"></verben-svg>\n</div>\n\n <div *ngIf=\"showCalendar\" [appOutSideClick]=\"showCalendar\" (outSideClick)=\"showCalendar=false\" class=\"calendar\">\n <div class=\"calendar-header\">\n <ng-container *ngIf=\"!useDropdowns; else dropdowns\">\n <button (click)=\"previousMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-left'\"></verben-svg>\n </button>\n <span>{{ months[selectedMonth] }} {{ selectedYear }}</span>\n <button (click)=\"nextMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-right'\"></verben-svg>\n </button>\n </ng-container>\n\n <ng-template #dropdowns>\n <verben-drop-down\n [placeholder]=\"yearPlaceholder\"\n (onChange)=\"onDropdownYearChange($event)\"\n [options]=\"yearRange\"\n [(ngModel)]=\"selectedYear\"\n [width]=\"'90px'\"\n ></verben-drop-down>\n\n <verben-drop-down\n [placeholder]=\"monthPlaceholder\"\n (onChange)=\"onDropdownMonthChange($event)\"\n [options]=\"months\"\n class=\"drop-down\"\n [(ngModel)]=\"selectedMonthString\"\n [width]=\"'90px'\"\n ></verben-drop-down>\n </ng-template>\n \n<div class=\"time-picker flex items-center gap-2\" *ngIf=\"showTime\">\n <div class=\"relative\">\n <div class=\"flex items-center box rounded px-2 py-1 cursor-pointer\"\n (click)=\"toggleHourDropdown()\">\n {{ selectedHour }}\n </div>\n\n <div *ngIf=\"showHourOptions\" class=\"dropdown\">\n <div\n class=\"dropdown-item\"\n *ngFor=\"let h of hours\"\n [class.active]=\"h === selectedHour\"\n (click)=\"selectHour(h)\"\n >\n {{ h }}\n </div>\n </div>\n </div>\n\n <span>:</span>\n\n <div class=\"relative\">\n <div class=\"flex items-center box rounded px-2 py-1 cursor-pointer\"\n (click)=\"toggleMinuteDropdown()\">\n {{ selectedMinute }}\n </div>\n\n <div *ngIf=\"showMinuteOptions\" class=\"dropdown\">\n <div\n class=\"dropdown-item\"\n *ngFor=\"let m of minutes\"\n [class.active]=\"m === selectedMinute\"\n (click)=\"selectMinute(m)\"\n >\n {{m}}\n </div>\n </div>\n </div>\n <button\n type=\"button\"\n (click)=\"toggleAmPm()\"\n class=\"amPm\"\n >\n {{ amPm }}\n </button>\n <verben-svg (click)=\"setToStartOfDay()\" class=\" cursor-pointer\" [width]=\"14\" [height]=\"14\" [icon]=\"'clock'\"></verben-svg>\n \n</div>\n\n\n </div>\n\n <div class=\"calendar-body\">\n <div class=\"weekdays\">\n <span *ngFor=\"let day of weekDays\">{{ day }}</span>\n </div>\n <div class=\"dates\">\n <ng-container *ngFor=\"let day of getDaysInMonth()\">\n <button\n *ngIf=\"day; else empty\"\n [class.selected]=\"isSelected(day)\"\n [disabled]=\"isDisabled(day)\" \n [ngClass]=\"{'disabled-day': isDisabled(day)}\"\n (click)=\"selectTemporaryDate(day)\"\n >\n {{ day.getDate() }}\n </button>\n <ng-template #empty>\n <span class=\"empty-date\"></span>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <div class=\"calendar-footer\">\n\n <button (click)=\"cancel()\">Cancel</button>\n <button (click)=\"confirm()\">OK</button>\n </div>\n </div>\n</div>\n", styles: [".date-picker{position:relative;width:100%}.calendar-container{position:relative}.icon{position:absolute;top:5px;right:10px;cursor:pointer}input{width:100%;padding:10px;font-size:13px;border:1px solid #ccc;border-radius:4px}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed;color:#8080808f}.calendar{position:absolute;top:100%;left:0;width:350px;border:1px solid #ccc;background-color:#fff;z-index:10;border-radius:4px}.calendar-header{display:flex;justify-content:space-between;gap:5px;font-size:13px;padding:15px 15px 0}.weekdays,.dates{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:1px;padding:15px 15px 0;font-size:13px}button{border:none;background:none;cursor:pointer;padding:5px;width:40px;height:40px}button.selected{background-color:#ffe681;color:#000;border-radius:30px}.calendar-footer{display:flex;justify-content:end;gap:10px;padding:4px 15px;color:#000;font-weight:500;font-size:13px}.calendar-footer button{color:#000}.disabled-day{opacity:.4;cursor:not-allowed}.time-picker input{border:1px solid #ccc;border-radius:4px;padding:4px 6px;text-align:center;width:50px;outline:none;height:40px}.time-picker button{border:1px solid #ccc;border-radius:4px;background-color:#f3f3f3;font-size:10px;width:fit-content;height:30px;cursor:pointer}.box{border:1px solid #ccc}::ng-deep .drop-down .verben-drop-down,::ng-deep .drop-down *{font-size:13px!important}.dropdown{position:absolute;top:110%;left:0;width:60px;max-height:120px;overflow-y:auto;background:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 2px 8px #0000001a;z-index:20}.dropdown-item{padding:6px;text-align:center;cursor:pointer}.dropdown-item:hover,.dropdown-item.active{background:#3182ce;color:#fff}\n"] }]
|
|
203
324
|
}], propDecorators: { placeholder: [{
|
|
204
325
|
type: Input
|
|
205
326
|
}], format: [{
|
|
@@ -222,6 +343,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
|
|
|
222
343
|
type: Input
|
|
223
344
|
}], date: [{
|
|
224
345
|
type: Input
|
|
346
|
+
}], showTime: [{
|
|
347
|
+
type: Input
|
|
225
348
|
}], dateChange: [{
|
|
226
349
|
type: Output
|
|
227
350
|
}] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verben-ng-ui-src-lib-components-date-picker.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/date-picker/date-picker.component.ts","../../../projects/verben-ng-ui/src/lib/components/date-picker/date-picker.component.html","../../../projects/verben-ng-ui/src/lib/components/date-picker/date-picker.module.ts","../../../projects/verben-ng-ui/src/lib/components/date-picker/verben-ng-ui-src-lib-components-date-picker.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { DropdownChangeEvent } from 'verben-ng-ui/src/lib/components/drop-down';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'app-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true,\n },\n ],\n})\nexport class DatePickerComponent implements ControlValueAccessor {\n @Input() placeholder = 'Select date';\n @Input() format = 'MM/DD/YYYY';\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n @Input() disabled?: boolean = false;\n @Input() bgColor?: string = '#fff';\n @Input() border?: string = '';\n @Input() useDropdowns: boolean = true;\n @Input() yearPlaceholder: string = 'Select a year';\n @Input() monthPlaceholder: string = 'Select a month';\n @Input() date: Date | null | string = null;\n @Output() dateChange = new EventEmitter<Date>();\n\n yearRange: number[] = [];\n filteredYearRange: number[] = [];\n selectedDate: Date = new Date();\n tempSelectedDate: Date = new Date();\n showCalendar = false;\n\n weekDays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n months = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n ];\n\n selectedMonth: number = 1;\n selectedMonthString: string = '';\n selectedYear: number = new Date().getFullYear();\n\n private onChange: any = () => {};\n private onTouched: any = () => {};\n\n writeValue(value: Date | string | null): void {\n if (value) {\n this.date = value;\n const parsedDate = typeof value === 'string' ? new Date(value) : value;\n this.selectedDate = new Date(parsedDate);\n this.tempSelectedDate = new Date(parsedDate);\n this.selectedMonth = this.selectedDate.getMonth();\n this.selectedYear = this.selectedDate.getFullYear();\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n ngOnChanges() {\n if (this.date) {\n const parsedDate =\n typeof this.date === 'string' ? new Date(this.date) : this.date;\n this.selectedDate = new Date(parsedDate);\n this.tempSelectedDate = new Date(parsedDate);\n this.selectedMonth = this.selectedDate.getMonth();\n this.selectedYear = this.selectedDate.getFullYear();\n }\n }\n\n ngOnInit() {\n const currentYear = new Date().getFullYear();\n const endYear = currentYear + 10;\n this.yearRange = Array.from(\n { length: endYear - 1960 + 1 },\n (_, i) => 1960 + i\n );\n this.yearRange.sort((a, b) => b - a);\n }\n\n get displayDate(): string {\n const parsedDate =\n typeof this.date === 'string' ? new Date(this.date) : this.date;\n return parsedDate ? this.formatDate(parsedDate, this.format) : '';\n }\n\n toggleCalendar() {\n this.showCalendar = !this.showCalendar;\n this.tempSelectedDate = new Date(this.date || new Date());\n this.selectedMonth = this.tempSelectedDate.getMonth();\n this.selectedMonthString = this.months[this.selectedMonth];\n this.selectedYear = this.tempSelectedDate.getFullYear();\n }\n\n previousMonth() {\n this.selectedMonth--;\n if (this.selectedMonth < 0) {\n this.selectedMonth = 11;\n this.selectedYear--;\n }\n this.updateTempSelectedDate();\n }\n\n nextMonth() {\n this.selectedMonth++;\n if (this.selectedMonth > 11) {\n this.selectedMonth = 0;\n this.selectedYear++;\n }\n this.updateTempSelectedDate();\n }\n\n onDropdownYearChange(event: DropdownChangeEvent): void {\n this.selectedYear = event.value;\n this.updateTempSelectedDate();\n }\n\n onDropdownMonthChange(event: DropdownChangeEvent): void {\n this.selectedMonth = this.months.indexOf(event.value);\n this.updateTempSelectedDate();\n }\n\n updateTempSelectedDate() {\n this.tempSelectedDate.setMonth(this.selectedMonth);\n this.tempSelectedDate.setFullYear(this.selectedYear);\n }\n\n getDaysInMonth(): (Date | null)[] {\n const days: (Date | null)[] = [];\n const year = this.selectedYear;\n const month = this.selectedMonth;\n\n const firstDayOfMonth = new Date(year, month, 1).getDay();\n const offset = firstDayOfMonth === 0 ? 6 : firstDayOfMonth - 1;\n\n for (let i = 0; i < offset; i++) {\n days.push(null);\n }\n\n const totalDays = new Date(year, month + 1, 0).getDate();\n for (let i = 1; i <= totalDays; i++) {\n const day = new Date(year, month, i);\n days.push(day);\n }\n return days;\n }\n\nisDisabled(day: Date | string): boolean {\n const dayDate = this.toDate(day);\n\n if (this.minDate && dayDate < this.stripTime(this.toDate(this.minDate))) return true;\n if (this.maxDate && dayDate > this.stripTime(this.toDate(this.maxDate))) return true;\n\n return false;\n}\n\nprivate stripTime(date: Date | string): Date {\n const d = this.toDate(date);\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n}\n\nprivate toDate(value: Date | string): Date {\n if (value instanceof Date) return value;\n return new Date(value);\n}\n\n\n selectTemporaryDate(day: Date) {\n if (this.isDisabled(day)) return;\n this.tempSelectedDate = day;\n }\n\n isSelected(day: Date): boolean {\n return (\n day.getDate() === this.tempSelectedDate.getDate() &&\n day.getMonth() === this.tempSelectedDate.getMonth() &&\n day.getFullYear() === this.tempSelectedDate.getFullYear()\n );\n }\n\n formatDate(date: Date, format: string): string {\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear();\n\n switch (format) {\n case 'DD/MM/YYYY':\n return `${day}/${month}/${year}`;\n case 'MM/DD/YYYY':\n default:\n return `${month}/${day}/${year}`;\n }\n }\n\n confirm() {\n if (this.isDisabled(this.tempSelectedDate)) return;\n\n this.tempSelectedDate.setHours(12, 0, 0, 0);\n this.selectedDate = new Date(this.tempSelectedDate);\n this.date = this.selectedDate;\n\n this.dateChange.emit(this.selectedDate);\n this.onChange(this.selectedDate);\n this.onTouched();\n\n this.showCalendar = false;\n }\n\n cancel() {\n this.showCalendar = false;\n }\n}\n","<div class=\"date-picker\">\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"displayDate\"\n [disabled]=\"disabled\"\n (click)=\"!disabled && toggleCalendar()\"\n class=\"w-full block\"\n [style.background-color]=\"bgColor\"\n [style.border]=\"border\"\n [ngClass]=\"{'cursor-not-allowed':disabled===true, 'cursor-pointer':disabled===false}\"\n readonly\n />\n\n <div *ngIf=\"showCalendar\" [appOutSideClick]=\"showCalendar\" (outSideClick)=\"showCalendar=false\" class=\"calendar\">\n <div class=\"calendar-header\">\n <ng-container *ngIf=\"!useDropdowns; else dropdowns\">\n <button (click)=\"previousMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-left'\"></verben-svg>\n </button>\n <span>{{ months[selectedMonth] }} {{ selectedYear }}</span>\n <button (click)=\"nextMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-right'\"></verben-svg>\n </button>\n </ng-container>\n\n <ng-template #dropdowns>\n <verben-drop-down\n [placeholder]=\"yearPlaceholder\"\n (onChange)=\"onDropdownYearChange($event)\"\n [options]=\"yearRange\"\n [(ngModel)]=\"selectedYear\"\n ></verben-drop-down>\n\n <verben-drop-down\n [placeholder]=\"monthPlaceholder\"\n (onChange)=\"onDropdownMonthChange($event)\"\n [options]=\"months\"\n [(ngModel)]=\"selectedMonthString\"\n ></verben-drop-down>\n </ng-template>\n </div>\n\n <div class=\"calendar-body\">\n <div class=\"weekdays\">\n <span *ngFor=\"let day of weekDays\">{{ day }}</span>\n </div>\n <div class=\"dates\">\n <ng-container *ngFor=\"let day of getDaysInMonth()\">\n <button\n *ngIf=\"day; else empty\"\n [class.selected]=\"isSelected(day)\"\n [disabled]=\"isDisabled(day)\" \n [ngClass]=\"{'disabled-day': isDisabled(day)}\"\n (click)=\"selectTemporaryDate(day)\"\n >\n {{ day.getDate() }}\n </button>\n <ng-template #empty>\n <span class=\"empty-date\"></span>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <div class=\"calendar-footer\">\n <button (click)=\"cancel()\">Cancel</button>\n <button (click)=\"confirm()\">OK</button>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { DatePickerComponent } from './date-picker.component';\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\nimport { DropDownModule } from 'verben-ng-ui/src/lib/components/drop-down';\nimport { VerbenPopUpModule } from 'verben-ng-ui/src/lib/components/pop-up';\nimport { OutSideClickDirective } from 'verben-ng-ui/src/lib/components/data-view';\n@NgModule({\n declarations: [DatePickerComponent],\n imports: [\n FormsModule,\n CommonModule,\n SvgModule,\n DropDownModule,\n VerbenPopUpModule,\n OutSideClickDirective,\n ],\n exports: [DatePickerComponent],\n})\nexport class DatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verben-ng-ui-src-lib-components-date-picker.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/date-picker/date-picker.component.ts","../../../projects/verben-ng-ui/src/lib/components/date-picker/date-picker.component.html","../../../projects/verben-ng-ui/src/lib/components/date-picker/date-picker.module.ts","../../../projects/verben-ng-ui/src/lib/components/date-picker/verben-ng-ui-src-lib-components-date-picker.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { DropdownChangeEvent } from 'verben-ng-ui/src/lib/components/drop-down';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'app-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true,\n },\n ],\n})\nexport class DatePickerComponent implements ControlValueAccessor {\n @Input() placeholder = 'Select date';\n @Input() format = 'MM/DD/YYYY';\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n @Input() disabled?: boolean = false;\n @Input() bgColor?: string = '#fff';\n @Input() border?: string = '';\n @Input() useDropdowns: boolean = true;\n @Input() yearPlaceholder: string = 'Select a year';\n @Input() monthPlaceholder: string = 'Select a month';\n @Input() date: Date | null | string = null;\n@Input() showTime: boolean = false;\n @Output() dateChange = new EventEmitter<Date>();\n\n yearRange: number[] = [];\n filteredYearRange: number[] = [];\n selectedDate: Date = new Date();\n tempSelectedDate: Date = new Date();\n showCalendar = false;\n \n weekDays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n months = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n ];\n\n selectedMonth: number = 1;\n selectedMonthString: string = '';\n selectedYear: number = new Date().getFullYear();\n\n private onChange: any = () => {};\n private onTouched: any = () => {};\n\nwriteValue(value: Date | string | null): void {\n if (value) {\n this.date = value;\n const parsedDate = typeof value === 'string' ? new Date(value) : value;\n this.selectedDate = new Date(parsedDate);\n this.tempSelectedDate = new Date(parsedDate);\n this.selectedMonth = this.selectedDate.getMonth();\n this.selectedYear = this.selectedDate.getFullYear();\n\n if (this.showTime) {\n this.initTimeFromDate(this.selectedDate);\n }\n }\n}\n\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n ngOnChanges() {\n if (this.date) {\n const parsedDate =\n typeof this.date === 'string' ? new Date(this.date) : this.date;\n this.selectedDate = new Date(parsedDate);\n this.tempSelectedDate = new Date(parsedDate);\n this.selectedMonth = this.selectedDate.getMonth();\n this.selectedYear = this.selectedDate.getFullYear();\n }\n }\nisSameDate(d1: Date, d2: Date): boolean {\n return (\n d1.getFullYear() === d2.getFullYear() &&\n d1.getMonth() === d2.getMonth() &&\n d1.getDate() === d2.getDate()\n );\n}\n ngOnInit() {\n const currentYear = new Date().getFullYear();\n const endYear = currentYear + 10;\n this.yearRange = Array.from(\n { length: endYear - 1960 + 1 },\n (_, i) => 1960 + i\n );\n this.yearRange.sort((a, b) => b - a);\n }\n\n get displayDate(): string {\n const parsedDate =\n typeof this.date === 'string' ? new Date(this.date) : this.date;\n return parsedDate ? this.formatDate(parsedDate, this.format) : '';\n }\n\ntempTime: string = '';\namPm: 'AM' | 'PM' = 'AM';\n\n\n\nselectedHour = \"12\";\nselectedMinute = \"00\";\n\n\nshowHourOptions = false;\nshowMinuteOptions = false;\n\nhours = Array.from({ length: 12 }, (_, i) =>\n String(i + 1).padStart(2, \"0\")\n);\n\nminutes = Array.from({ length: 60 }, (_, i) =>\n String(i).padStart(2, \"0\")\n);\n\ntoggleHourDropdown() {\n this.showHourOptions = !this.showHourOptions;\n this.showMinuteOptions = false;\n}\n\ntoggleMinuteDropdown() {\n this.showMinuteOptions = !this.showMinuteOptions;\n this.showHourOptions = false;\n}\n\nselectHour(h: string) {\n this.selectedHour = h;\n this.showHourOptions = false;\n}\n\nselectMinute(m: string) {\n this.selectedMinute = m;\n this.showMinuteOptions = false;\n}\n\ntoggleAmPm() {\n this.amPm = this.amPm === \"AM\" ? \"PM\" : \"AM\";\n}\n\ntoggleCalendar() {\n this.showCalendar = !this.showCalendar;\n\n this.tempSelectedDate = new Date(this.date || new Date());\n this.selectedMonth = this.tempSelectedDate.getMonth();\n this.selectedMonthString = this.months[this.selectedMonth];\n this.selectedYear = this.tempSelectedDate.getFullYear();\n\n if (this.showTime && !this.tempTime) {\n const today = new Date();\n const isToday = this.isSameDate(this.tempSelectedDate, today);\n\n const hours = isToday ? today.getHours() : 0;\n const minutes = isToday ? today.getMinutes() : 0;\n\n this.tempSelectedDate.setHours(hours, minutes, 0, 0);\n\n this.selectedHour = (!this.is24Hour && hours > 12 ? hours - 12 : hours)\n .toString()\n .padStart(2, \"0\");\n this.selectedMinute = minutes.toString().padStart(2, \"0\");\n this.amPm = !this.is24Hour && hours >= 12 ? \"PM\" : \"AM\";\n\n this.tempTime = `${this.selectedHour}:${this.selectedMinute}`;\n }\n}\n\n\n initTimeFromDate(date: Date) {\n const hours = date.getHours();\n const minutes = date.getMinutes();\n\n this.selectedHour = (!this.is24Hour && hours > 12 ? hours - 12 : hours)\n .toString()\n .padStart(2, \"0\");\n this.selectedMinute = minutes.toString().padStart(2, \"0\");\n this.amPm = !this.is24Hour && hours >= 12 ? \"PM\" : \"AM\";\n\n this.tempTime = `${this.selectedHour}:${this.selectedMinute}`;\n this.tempSelectedDate.setHours(hours, minutes, 0, 0);\n}\nfixToUTC(dateValue: any) {\n if (!dateValue) return null;\n\n const date = dateValue instanceof Date ? dateValue : new Date(dateValue);\n if (isNaN(date.getTime())) return null;\n\n return new Date(Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n ));\n}\n\nconfirm() {\n if (this.isDisabled(this.tempSelectedDate)) return;\n\n let hours: number;\n let minutes: number;\n\n \n if (this.showTime) {\n hours = Number(this.selectedHour);\n minutes = Number(this.selectedMinute);\n\n if (!this.is24Hour) {\n if (this.amPm === \"PM\" && hours < 12) hours += 12;\n if (this.amPm === \"AM\" && hours === 12) hours = 0;\n }\n } else {\n hours = 0;\n minutes = 0;\n }\n\n\n this.tempSelectedDate.setHours(hours, minutes, 0, 0);\n\n this.selectedDate = new Date(this.tempSelectedDate);\n this.date = this.selectedDate;\n\n\n const pad = (n: number) => n.toString().padStart(2, '0');\n const localDateString = `${this.selectedDate.getFullYear()}-${pad(this.selectedDate.getMonth() + 1)}-${pad(this.selectedDate.getDate())}T${pad(this.selectedDate.getHours())}:${pad(this.selectedDate.getMinutes())}:${pad(this.selectedDate.getSeconds())}`;\n\n console.log(localDateString);\n \n this.dateChange.emit(this.selectedDate);\n this.onChange(localDateString); \n this.onTouched();\n\n this.showCalendar = false;\n}\n\n\n\nsetToStartOfDay() {\n\n this.selectedHour = this.is24Hour ? '00' : '12';\n this.selectedMinute = '00';\n this.amPm = 'AM';\n\n\n this.tempSelectedDate.setHours(0, 0, 0, 0);\n this.tempTime = `${this.selectedHour}:${this.selectedMinute}`;\n\n this.selectedDate = new Date(this.tempSelectedDate);\n}\n\n\n\n previousMonth() {\n this.selectedMonth--;\n if (this.selectedMonth < 0) {\n this.selectedMonth = 11;\n this.selectedYear--;\n }\n this.updateTempSelectedDate();\n }\n\n nextMonth() {\n this.selectedMonth++;\n if (this.selectedMonth > 11) {\n this.selectedMonth = 0;\n this.selectedYear++;\n }\n this.updateTempSelectedDate();\n }\n\n onDropdownYearChange(event: DropdownChangeEvent): void {\n this.selectedYear = event.value;\n this.updateTempSelectedDate();\n }\n\n onDropdownMonthChange(event: DropdownChangeEvent): void {\n this.selectedMonth = this.months.indexOf(event.value);\n this.updateTempSelectedDate();\n }\n\n updateTempSelectedDate() {\n this.tempSelectedDate.setMonth(this.selectedMonth);\n this.tempSelectedDate.setFullYear(this.selectedYear);\n }\n\n getDaysInMonth(): (Date | null)[] {\n const days: (Date | null)[] = [];\n const year = this.selectedYear;\n const month = this.selectedMonth;\n\n const firstDayOfMonth = new Date(year, month, 1).getDay();\n const offset = firstDayOfMonth === 0 ? 6 : firstDayOfMonth - 1;\n\n for (let i = 0; i < offset; i++) {\n days.push(null);\n }\n\n const totalDays = new Date(year, month + 1, 0).getDate();\n for (let i = 1; i <= totalDays; i++) {\n const day = new Date(year, month, i);\n days.push(day);\n }\n return days;\n }\n\nisDisabled(day: Date | string): boolean {\n const dayDate = this.toDate(day);\n\n if (this.minDate && dayDate < this.stripTime(this.toDate(this.minDate))) return true;\n if (this.maxDate && dayDate > this.stripTime(this.toDate(this.maxDate))) return true;\n\n return false;\n}\n\nprivate stripTime(date: Date | string): Date {\n const d = this.toDate(date);\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n}\n\nprivate toDate(value: Date | string): Date {\n if (value instanceof Date) return value;\n return new Date(value);\n}\n is24Hour: boolean = false;\nselectTemporaryDate(day: Date) {\n if (this.isDisabled(day)) return;\n\n const isNewDate = !this.isSameDate(this.tempSelectedDate, day);\n this.tempSelectedDate = new Date(day);\n\n if (this.showTime) {\n if (isNewDate) {\n\n const today = new Date();\n const isToday =\n day.getFullYear() === today.getFullYear() &&\n day.getMonth() === today.getMonth() &&\n day.getDate() === today.getDate();\n\n const hours = isToday ? today.getHours() : 0;\n const minutes = isToday ? today.getMinutes() : 0;\n\n this.tempSelectedDate.setHours(hours, minutes, 0, 0);\n\n this.selectedHour = (!this.is24Hour && hours > 12 ? hours - 12 : hours)\n .toString()\n .padStart(2, \"0\");\n this.selectedMinute = minutes.toString().padStart(2, \"0\");\n this.amPm = !this.is24Hour && hours >= 12 ? \"PM\" : \"AM\";\n\n this.tempTime = `${this.selectedHour}:${this.selectedMinute}`;\n } else {\n \n const [h, m] = this.tempTime.split(':');\n this.selectedHour = h;\n this.selectedMinute = m;\n if (!this.is24Hour) this.amPm = Number(h) >= 12 ? 'PM' : 'AM';\n }\n }\n}\n\n\n\n\n\n isSelected(day: Date): boolean {\n return (\n day.getDate() === this.tempSelectedDate.getDate() &&\n day.getMonth() === this.tempSelectedDate.getMonth() &&\n day.getFullYear() === this.tempSelectedDate.getFullYear()\n );\n }\n\n formatDate(date: Date, format: string): string {\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear();\n\n switch (format) {\n case 'DD/MM/YYYY':\n return `${day}/${month}/${year}`;\n case 'MM/DD/YYYY':\n default:\n return `${month}/${day}/${year}`;\n }\n }\n\n\n\n cancel() {\n this.showCalendar = false;\n }\n}\n","<div class=\"date-picker\">\n<div class=\"calendar-container\">\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"displayDate\"\n [disabled]=\"disabled\"\n (click)=\"!disabled && toggleCalendar()\"\n class=\"w-full block\"\n [style.background-color]=\"bgColor\"\n [style.border]=\"border\"\n \n [ngClass]=\"{'cursor-not-allowed':disabled===true, 'cursor-pointer':disabled===false}\"\n readonly\n /> \n<verben-svg (click)=\"!disabled && toggleCalendar()\" class=\"icon\" [icon]=\"'calendar'\"></verben-svg>\n</div>\n\n <div *ngIf=\"showCalendar\" [appOutSideClick]=\"showCalendar\" (outSideClick)=\"showCalendar=false\" class=\"calendar\">\n <div class=\"calendar-header\">\n <ng-container *ngIf=\"!useDropdowns; else dropdowns\">\n <button (click)=\"previousMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-left'\"></verben-svg>\n </button>\n <span>{{ months[selectedMonth] }} {{ selectedYear }}</span>\n <button (click)=\"nextMonth()\">\n <verben-svg [width]=\"20\" [icon]=\"'chevron-right'\"></verben-svg>\n </button>\n </ng-container>\n\n <ng-template #dropdowns>\n <verben-drop-down\n [placeholder]=\"yearPlaceholder\"\n (onChange)=\"onDropdownYearChange($event)\"\n [options]=\"yearRange\"\n [(ngModel)]=\"selectedYear\"\n [width]=\"'90px'\"\n ></verben-drop-down>\n\n <verben-drop-down\n [placeholder]=\"monthPlaceholder\"\n (onChange)=\"onDropdownMonthChange($event)\"\n [options]=\"months\"\n class=\"drop-down\"\n [(ngModel)]=\"selectedMonthString\"\n [width]=\"'90px'\"\n ></verben-drop-down>\n </ng-template>\n \n<div class=\"time-picker flex items-center gap-2\" *ngIf=\"showTime\">\n <div class=\"relative\">\n <div class=\"flex items-center box rounded px-2 py-1 cursor-pointer\"\n (click)=\"toggleHourDropdown()\">\n {{ selectedHour }}\n </div>\n\n <div *ngIf=\"showHourOptions\" class=\"dropdown\">\n <div\n class=\"dropdown-item\"\n *ngFor=\"let h of hours\"\n [class.active]=\"h === selectedHour\"\n (click)=\"selectHour(h)\"\n >\n {{ h }}\n </div>\n </div>\n </div>\n\n <span>:</span>\n\n <div class=\"relative\">\n <div class=\"flex items-center box rounded px-2 py-1 cursor-pointer\"\n (click)=\"toggleMinuteDropdown()\">\n {{ selectedMinute }}\n </div>\n\n <div *ngIf=\"showMinuteOptions\" class=\"dropdown\">\n <div\n class=\"dropdown-item\"\n *ngFor=\"let m of minutes\"\n [class.active]=\"m === selectedMinute\"\n (click)=\"selectMinute(m)\"\n >\n {{m}}\n </div>\n </div>\n </div>\n <button\n type=\"button\"\n (click)=\"toggleAmPm()\"\n class=\"amPm\"\n >\n {{ amPm }}\n </button>\n <verben-svg (click)=\"setToStartOfDay()\" class=\" cursor-pointer\" [width]=\"14\" [height]=\"14\" [icon]=\"'clock'\"></verben-svg>\n \n</div>\n\n\n </div>\n\n <div class=\"calendar-body\">\n <div class=\"weekdays\">\n <span *ngFor=\"let day of weekDays\">{{ day }}</span>\n </div>\n <div class=\"dates\">\n <ng-container *ngFor=\"let day of getDaysInMonth()\">\n <button\n *ngIf=\"day; else empty\"\n [class.selected]=\"isSelected(day)\"\n [disabled]=\"isDisabled(day)\" \n [ngClass]=\"{'disabled-day': isDisabled(day)}\"\n (click)=\"selectTemporaryDate(day)\"\n >\n {{ day.getDate() }}\n </button>\n <ng-template #empty>\n <span class=\"empty-date\"></span>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <div class=\"calendar-footer\">\n\n <button (click)=\"cancel()\">Cancel</button>\n <button (click)=\"confirm()\">OK</button>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { DatePickerComponent } from './date-picker.component';\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\nimport { DropDownModule } from 'verben-ng-ui/src/lib/components/drop-down';\nimport { VerbenPopUpModule } from 'verben-ng-ui/src/lib/components/pop-up';\nimport { OutSideClickDirective } from 'verben-ng-ui/src/lib/components/data-view';\n@NgModule({\n declarations: [DatePickerComponent],\n imports: [\n FormsModule,\n CommonModule,\n SvgModule,\n DropDownModule,\n VerbenPopUpModule,\n OutSideClickDirective,\n ],\n exports: [DatePickerComponent],\n})\nexport class DatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "verben-ng-ui",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.39",
|
|
4
4
|
"author": "Verbena Logic",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -39,12 +39,6 @@
|
|
|
39
39
|
"esm": "./esm2022/verben-ng-ui.mjs",
|
|
40
40
|
"default": "./fesm2022/verben-ng-ui.mjs"
|
|
41
41
|
},
|
|
42
|
-
"./src/lib/control-options": {
|
|
43
|
-
"types": "./src/lib/control-options/index.d.ts",
|
|
44
|
-
"esm2022": "./esm2022/src/lib/control-options/verben-ng-ui-src-lib-control-options.mjs",
|
|
45
|
-
"esm": "./esm2022/src/lib/control-options/verben-ng-ui-src-lib-control-options.mjs",
|
|
46
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-control-options.mjs"
|
|
47
|
-
},
|
|
48
42
|
"./src/lib/convert-to-integer": {
|
|
49
43
|
"types": "./src/lib/convert-to-integer/index.d.ts",
|
|
50
44
|
"esm2022": "./esm2022/src/lib/convert-to-integer/verben-ng-ui-src-lib-convert-to-integer.mjs",
|
|
@@ -63,12 +57,6 @@
|
|
|
63
57
|
"esm": "./esm2022/src/lib/email-validator/verben-ng-ui-src-lib-email-validator.mjs",
|
|
64
58
|
"default": "./fesm2022/verben-ng-ui-src-lib-email-validator.mjs"
|
|
65
59
|
},
|
|
66
|
-
"./src/lib/models": {
|
|
67
|
-
"types": "./src/lib/models/index.d.ts",
|
|
68
|
-
"esm2022": "./esm2022/src/lib/models/verben-ng-ui-src-lib-models.mjs",
|
|
69
|
-
"esm": "./esm2022/src/lib/models/verben-ng-ui-src-lib-models.mjs",
|
|
70
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-models.mjs"
|
|
71
|
-
},
|
|
72
60
|
"./src/lib/number-range": {
|
|
73
61
|
"types": "./src/lib/number-range/index.d.ts",
|
|
74
62
|
"esm2022": "./esm2022/src/lib/number-range/verben-ng-ui-src-lib-number-range.mjs",
|
|
@@ -93,17 +81,11 @@
|
|
|
93
81
|
"esm": "./esm2022/src/lib/services/verben-ng-ui-src-lib-services.mjs",
|
|
94
82
|
"default": "./fesm2022/verben-ng-ui-src-lib-services.mjs"
|
|
95
83
|
},
|
|
96
|
-
"./src/lib/
|
|
97
|
-
"types": "./src/lib/
|
|
98
|
-
"esm2022": "./esm2022/src/lib/
|
|
99
|
-
"esm": "./esm2022/src/lib/
|
|
100
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-
|
|
101
|
-
},
|
|
102
|
-
"./src/lib/validate": {
|
|
103
|
-
"types": "./src/lib/validate/index.d.ts",
|
|
104
|
-
"esm2022": "./esm2022/src/lib/validate/verben-ng-ui-src-lib-validate.mjs",
|
|
105
|
-
"esm": "./esm2022/src/lib/validate/verben-ng-ui-src-lib-validate.mjs",
|
|
106
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-validate.mjs"
|
|
84
|
+
"./src/lib/models": {
|
|
85
|
+
"types": "./src/lib/models/index.d.ts",
|
|
86
|
+
"esm2022": "./esm2022/src/lib/models/verben-ng-ui-src-lib-models.mjs",
|
|
87
|
+
"esm": "./esm2022/src/lib/models/verben-ng-ui-src-lib-models.mjs",
|
|
88
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-models.mjs"
|
|
107
89
|
},
|
|
108
90
|
"./src/lib/validate-input": {
|
|
109
91
|
"types": "./src/lib/validate-input/index.d.ts",
|
|
@@ -117,17 +99,29 @@
|
|
|
117
99
|
"esm": "./esm2022/src/lib/verbena-badge/verben-ng-ui-src-lib-verbena-badge.mjs",
|
|
118
100
|
"default": "./fesm2022/verben-ng-ui-src-lib-verbena-badge.mjs"
|
|
119
101
|
},
|
|
102
|
+
"./src/lib/theme-switcher": {
|
|
103
|
+
"types": "./src/lib/theme-switcher/index.d.ts",
|
|
104
|
+
"esm2022": "./esm2022/src/lib/theme-switcher/verben-ng-ui-src-lib-theme-switcher.mjs",
|
|
105
|
+
"esm": "./esm2022/src/lib/theme-switcher/verben-ng-ui-src-lib-theme-switcher.mjs",
|
|
106
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-theme-switcher.mjs"
|
|
107
|
+
},
|
|
108
|
+
"./src/lib/validate": {
|
|
109
|
+
"types": "./src/lib/validate/index.d.ts",
|
|
110
|
+
"esm2022": "./esm2022/src/lib/validate/verben-ng-ui-src-lib-validate.mjs",
|
|
111
|
+
"esm": "./esm2022/src/lib/validate/verben-ng-ui-src-lib-validate.mjs",
|
|
112
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-validate.mjs"
|
|
113
|
+
},
|
|
120
114
|
"./src/lib/verbena-button": {
|
|
121
115
|
"types": "./src/lib/verbena-button/index.d.ts",
|
|
122
116
|
"esm2022": "./esm2022/src/lib/verbena-button/verben-ng-ui-src-lib-verbena-button.mjs",
|
|
123
117
|
"esm": "./esm2022/src/lib/verbena-button/verben-ng-ui-src-lib-verbena-button.mjs",
|
|
124
118
|
"default": "./fesm2022/verben-ng-ui-src-lib-verbena-button.mjs"
|
|
125
119
|
},
|
|
126
|
-
"./src/lib/
|
|
127
|
-
"types": "./src/lib/
|
|
128
|
-
"esm2022": "./esm2022/src/lib/
|
|
129
|
-
"esm": "./esm2022/src/lib/
|
|
130
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-
|
|
120
|
+
"./src/lib/control-options": {
|
|
121
|
+
"types": "./src/lib/control-options/index.d.ts",
|
|
122
|
+
"esm2022": "./esm2022/src/lib/control-options/verben-ng-ui-src-lib-control-options.mjs",
|
|
123
|
+
"esm": "./esm2022/src/lib/control-options/verben-ng-ui-src-lib-control-options.mjs",
|
|
124
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-control-options.mjs"
|
|
131
125
|
},
|
|
132
126
|
"./src/lib/verbena-switch": {
|
|
133
127
|
"types": "./src/lib/verbena-switch/index.d.ts",
|
|
@@ -153,17 +147,23 @@
|
|
|
153
147
|
"esm": "./esm2022/src/lib/components/card-data-view/verben-ng-ui-src-lib-components-card-data-view.mjs",
|
|
154
148
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-card-data-view.mjs"
|
|
155
149
|
},
|
|
150
|
+
"./src/lib/components/chip": {
|
|
151
|
+
"types": "./src/lib/components/chip/index.d.ts",
|
|
152
|
+
"esm2022": "./esm2022/src/lib/components/chip/verben-ng-ui-src-lib-components-chip.mjs",
|
|
153
|
+
"esm": "./esm2022/src/lib/components/chip/verben-ng-ui-src-lib-components-chip.mjs",
|
|
154
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-chip.mjs"
|
|
155
|
+
},
|
|
156
156
|
"./src/lib/components/data-columns": {
|
|
157
157
|
"types": "./src/lib/components/data-columns/index.d.ts",
|
|
158
158
|
"esm2022": "./esm2022/src/lib/components/data-columns/verben-ng-ui-src-lib-components-data-columns.mjs",
|
|
159
159
|
"esm": "./esm2022/src/lib/components/data-columns/verben-ng-ui-src-lib-components-data-columns.mjs",
|
|
160
160
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-columns.mjs"
|
|
161
161
|
},
|
|
162
|
-
"./src/lib/
|
|
163
|
-
"types": "./src/lib/
|
|
164
|
-
"esm2022": "./esm2022/src/lib/
|
|
165
|
-
"esm": "./esm2022/src/lib/
|
|
166
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-
|
|
162
|
+
"./src/lib/verbena-input": {
|
|
163
|
+
"types": "./src/lib/verbena-input/index.d.ts",
|
|
164
|
+
"esm2022": "./esm2022/src/lib/verbena-input/verben-ng-ui-src-lib-verbena-input.mjs",
|
|
165
|
+
"esm": "./esm2022/src/lib/verbena-input/verben-ng-ui-src-lib-verbena-input.mjs",
|
|
166
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-verbena-input.mjs"
|
|
167
167
|
},
|
|
168
168
|
"./src/lib/components/data-extend": {
|
|
169
169
|
"types": "./src/lib/components/data-extend/index.d.ts",
|
|
@@ -171,29 +171,23 @@
|
|
|
171
171
|
"esm": "./esm2022/src/lib/components/data-extend/verben-ng-ui-src-lib-components-data-extend.mjs",
|
|
172
172
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-extend.mjs"
|
|
173
173
|
},
|
|
174
|
-
"./src/lib/components/chip": {
|
|
175
|
-
"types": "./src/lib/components/chip/index.d.ts",
|
|
176
|
-
"esm2022": "./esm2022/src/lib/components/chip/verben-ng-ui-src-lib-components-chip.mjs",
|
|
177
|
-
"esm": "./esm2022/src/lib/components/chip/verben-ng-ui-src-lib-components-chip.mjs",
|
|
178
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-chip.mjs"
|
|
179
|
-
},
|
|
180
174
|
"./src/lib/components/data-import": {
|
|
181
175
|
"types": "./src/lib/components/data-import/index.d.ts",
|
|
182
176
|
"esm2022": "./esm2022/src/lib/components/data-import/verben-ng-ui-src-lib-components-data-import.mjs",
|
|
183
177
|
"esm": "./esm2022/src/lib/components/data-import/verben-ng-ui-src-lib-components-data-import.mjs",
|
|
184
178
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-import.mjs"
|
|
185
179
|
},
|
|
186
|
-
"./src/lib/components/data-
|
|
187
|
-
"types": "./src/lib/components/data-
|
|
188
|
-
"esm2022": "./esm2022/src/lib/components/data-
|
|
189
|
-
"esm": "./esm2022/src/lib/components/data-
|
|
190
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-
|
|
180
|
+
"./src/lib/components/data-export": {
|
|
181
|
+
"types": "./src/lib/components/data-export/index.d.ts",
|
|
182
|
+
"esm2022": "./esm2022/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.mjs",
|
|
183
|
+
"esm": "./esm2022/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.mjs",
|
|
184
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-export.mjs"
|
|
191
185
|
},
|
|
192
|
-
"./src/lib/components/data-
|
|
193
|
-
"types": "./src/lib/components/data-
|
|
194
|
-
"esm2022": "./esm2022/src/lib/components/data-
|
|
195
|
-
"esm": "./esm2022/src/lib/components/data-
|
|
196
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-
|
|
186
|
+
"./src/lib/components/data-view": {
|
|
187
|
+
"types": "./src/lib/components/data-view/index.d.ts",
|
|
188
|
+
"esm2022": "./esm2022/src/lib/components/data-view/verben-ng-ui-src-lib-components-data-view.mjs",
|
|
189
|
+
"esm": "./esm2022/src/lib/components/data-view/verben-ng-ui-src-lib-components-data-view.mjs",
|
|
190
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-view.mjs"
|
|
197
191
|
},
|
|
198
192
|
"./src/lib/components/data-table": {
|
|
199
193
|
"types": "./src/lib/components/data-table/index.d.ts",
|
|
@@ -201,17 +195,35 @@
|
|
|
201
195
|
"esm": "./esm2022/src/lib/components/data-table/verben-ng-ui-src-lib-components-data-table.mjs",
|
|
202
196
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-table.mjs"
|
|
203
197
|
},
|
|
198
|
+
"./src/lib/components/date-picker": {
|
|
199
|
+
"types": "./src/lib/components/date-picker/index.d.ts",
|
|
200
|
+
"esm2022": "./esm2022/src/lib/components/date-picker/verben-ng-ui-src-lib-components-date-picker.mjs",
|
|
201
|
+
"esm": "./esm2022/src/lib/components/date-picker/verben-ng-ui-src-lib-components-date-picker.mjs",
|
|
202
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-date-picker.mjs"
|
|
203
|
+
},
|
|
204
|
+
"./src/lib/components/data-sort": {
|
|
205
|
+
"types": "./src/lib/components/data-sort/index.d.ts",
|
|
206
|
+
"esm2022": "./esm2022/src/lib/components/data-sort/verben-ng-ui-src-lib-components-data-sort.mjs",
|
|
207
|
+
"esm": "./esm2022/src/lib/components/data-sort/verben-ng-ui-src-lib-components-data-sort.mjs",
|
|
208
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-sort.mjs"
|
|
209
|
+
},
|
|
210
|
+
"./src/lib/components/data-filter": {
|
|
211
|
+
"types": "./src/lib/components/data-filter/index.d.ts",
|
|
212
|
+
"esm2022": "./esm2022/src/lib/components/data-filter/verben-ng-ui-src-lib-components-data-filter.mjs",
|
|
213
|
+
"esm": "./esm2022/src/lib/components/data-filter/verben-ng-ui-src-lib-components-data-filter.mjs",
|
|
214
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-filter.mjs"
|
|
215
|
+
},
|
|
204
216
|
"./src/lib/components/data-xport": {
|
|
205
217
|
"types": "./src/lib/components/data-xport/index.d.ts",
|
|
206
218
|
"esm2022": "./esm2022/src/lib/components/data-xport/verben-ng-ui-src-lib-components-data-xport.mjs",
|
|
207
219
|
"esm": "./esm2022/src/lib/components/data-xport/verben-ng-ui-src-lib-components-data-xport.mjs",
|
|
208
220
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-xport.mjs"
|
|
209
221
|
},
|
|
210
|
-
"./src/lib/components/
|
|
211
|
-
"types": "./src/lib/components/
|
|
212
|
-
"esm2022": "./esm2022/src/lib/components/
|
|
213
|
-
"esm": "./esm2022/src/lib/components/
|
|
214
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-
|
|
222
|
+
"./src/lib/components/notification": {
|
|
223
|
+
"types": "./src/lib/components/notification/index.d.ts",
|
|
224
|
+
"esm2022": "./esm2022/src/lib/components/notification/verben-ng-ui-src-lib-components-notification.mjs",
|
|
225
|
+
"esm": "./esm2022/src/lib/components/notification/verben-ng-ui-src-lib-components-notification.mjs",
|
|
226
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-notification.mjs"
|
|
215
227
|
},
|
|
216
228
|
"./src/lib/components/drop-down": {
|
|
217
229
|
"types": "./src/lib/components/drop-down/index.d.ts",
|
|
@@ -219,12 +231,6 @@
|
|
|
219
231
|
"esm": "./esm2022/src/lib/components/drop-down/verben-ng-ui-src-lib-components-drop-down.mjs",
|
|
220
232
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-drop-down.mjs"
|
|
221
233
|
},
|
|
222
|
-
"./src/lib/components/data-view": {
|
|
223
|
-
"types": "./src/lib/components/data-view/index.d.ts",
|
|
224
|
-
"esm2022": "./esm2022/src/lib/components/data-view/verben-ng-ui-src-lib-components-data-view.mjs",
|
|
225
|
-
"esm": "./esm2022/src/lib/components/data-view/verben-ng-ui-src-lib-components-data-view.mjs",
|
|
226
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-view.mjs"
|
|
227
|
-
},
|
|
228
234
|
"./src/lib/components/icons": {
|
|
229
235
|
"types": "./src/lib/components/icons/index.d.ts",
|
|
230
236
|
"esm2022": "./esm2022/src/lib/components/icons/verben-ng-ui-src-lib-components-icons.mjs",
|
|
@@ -237,11 +243,11 @@
|
|
|
237
243
|
"esm": "./esm2022/src/lib/components/image/verben-ng-ui-src-lib-components-image.mjs",
|
|
238
244
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-image.mjs"
|
|
239
245
|
},
|
|
240
|
-
"./src/lib/components/
|
|
241
|
-
"types": "./src/lib/components/
|
|
242
|
-
"esm2022": "./esm2022/src/lib/components/
|
|
243
|
-
"esm": "./esm2022/src/lib/components/
|
|
244
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-
|
|
246
|
+
"./src/lib/components/sort-table": {
|
|
247
|
+
"types": "./src/lib/components/sort-table/index.d.ts",
|
|
248
|
+
"esm2022": "./esm2022/src/lib/components/sort-table/verben-ng-ui-src-lib-components-sort-table.mjs",
|
|
249
|
+
"esm": "./esm2022/src/lib/components/sort-table/verben-ng-ui-src-lib-components-sort-table.mjs",
|
|
250
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-sort-table.mjs"
|
|
245
251
|
},
|
|
246
252
|
"./src/lib/components/number-input": {
|
|
247
253
|
"types": "./src/lib/components/number-input/index.d.ts",
|
|
@@ -249,24 +255,6 @@
|
|
|
249
255
|
"esm": "./esm2022/src/lib/components/number-input/verben-ng-ui-src-lib-components-number-input.mjs",
|
|
250
256
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-number-input.mjs"
|
|
251
257
|
},
|
|
252
|
-
"./src/lib/components/pop-up": {
|
|
253
|
-
"types": "./src/lib/components/pop-up/index.d.ts",
|
|
254
|
-
"esm2022": "./esm2022/src/lib/components/pop-up/verben-ng-ui-src-lib-components-pop-up.mjs",
|
|
255
|
-
"esm": "./esm2022/src/lib/components/pop-up/verben-ng-ui-src-lib-components-pop-up.mjs",
|
|
256
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-pop-up.mjs"
|
|
257
|
-
},
|
|
258
|
-
"./src/lib/components/shared": {
|
|
259
|
-
"types": "./src/lib/components/shared/index.d.ts",
|
|
260
|
-
"esm2022": "./esm2022/src/lib/components/shared/verben-ng-ui-src-lib-components-shared.mjs",
|
|
261
|
-
"esm": "./esm2022/src/lib/components/shared/verben-ng-ui-src-lib-components-shared.mjs",
|
|
262
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-shared.mjs"
|
|
263
|
-
},
|
|
264
|
-
"./src/lib/components/sort-table": {
|
|
265
|
-
"types": "./src/lib/components/sort-table/index.d.ts",
|
|
266
|
-
"esm2022": "./esm2022/src/lib/components/sort-table/verben-ng-ui-src-lib-components-sort-table.mjs",
|
|
267
|
-
"esm": "./esm2022/src/lib/components/sort-table/verben-ng-ui-src-lib-components-sort-table.mjs",
|
|
268
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-sort-table.mjs"
|
|
269
|
-
},
|
|
270
258
|
"./src/lib/components/svg": {
|
|
271
259
|
"types": "./src/lib/components/svg/index.d.ts",
|
|
272
260
|
"esm2022": "./esm2022/src/lib/components/svg/verben-ng-ui-src-lib-components-svg.mjs",
|
|
@@ -285,29 +273,29 @@
|
|
|
285
273
|
"esm": "./esm2022/src/lib/components/tooltip/verben-ng-ui-src-lib-components-tooltip.mjs",
|
|
286
274
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-tooltip.mjs"
|
|
287
275
|
},
|
|
288
|
-
"./src/lib/components/verben-dialogue": {
|
|
289
|
-
"types": "./src/lib/components/verben-dialogue/index.d.ts",
|
|
290
|
-
"esm2022": "./esm2022/src/lib/components/verben-dialogue/verben-ng-ui-src-lib-components-verben-dialogue.mjs",
|
|
291
|
-
"esm": "./esm2022/src/lib/components/verben-dialogue/verben-ng-ui-src-lib-components-verben-dialogue.mjs",
|
|
292
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-verben-dialogue.mjs"
|
|
293
|
-
},
|
|
294
276
|
"./src/lib/components/verben-mail": {
|
|
295
277
|
"types": "./src/lib/components/verben-mail/index.d.ts",
|
|
296
278
|
"esm2022": "./esm2022/src/lib/components/verben-mail/verben-ng-ui-src-lib-components-verben-mail.mjs",
|
|
297
279
|
"esm": "./esm2022/src/lib/components/verben-mail/verben-ng-ui-src-lib-components-verben-mail.mjs",
|
|
298
280
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-verben-mail.mjs"
|
|
299
281
|
},
|
|
282
|
+
"./src/lib/components/shared": {
|
|
283
|
+
"types": "./src/lib/components/shared/index.d.ts",
|
|
284
|
+
"esm2022": "./esm2022/src/lib/components/shared/verben-ng-ui-src-lib-components-shared.mjs",
|
|
285
|
+
"esm": "./esm2022/src/lib/components/shared/verben-ng-ui-src-lib-components-shared.mjs",
|
|
286
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-shared.mjs"
|
|
287
|
+
},
|
|
300
288
|
"./src/lib/components/verben-time-picker": {
|
|
301
289
|
"types": "./src/lib/components/verben-time-picker/index.d.ts",
|
|
302
290
|
"esm2022": "./esm2022/src/lib/components/verben-time-picker/verben-ng-ui-src-lib-components-verben-time-picker.mjs",
|
|
303
291
|
"esm": "./esm2022/src/lib/components/verben-time-picker/verben-ng-ui-src-lib-components-verben-time-picker.mjs",
|
|
304
292
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-verben-time-picker.mjs"
|
|
305
293
|
},
|
|
306
|
-
"./src/lib/components/verbena-
|
|
307
|
-
"types": "./src/lib/components/verbena-
|
|
308
|
-
"esm2022": "./esm2022/src/lib/components/verbena-
|
|
309
|
-
"esm": "./esm2022/src/lib/components/verbena-
|
|
310
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-verbena-
|
|
294
|
+
"./src/lib/components/verbena-tab": {
|
|
295
|
+
"types": "./src/lib/components/verbena-tab/index.d.ts",
|
|
296
|
+
"esm2022": "./esm2022/src/lib/components/verbena-tab/verben-ng-ui-src-lib-components-verbena-tab.mjs",
|
|
297
|
+
"esm": "./esm2022/src/lib/components/verbena-tab/verben-ng-ui-src-lib-components-verbena-tab.mjs",
|
|
298
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-verbena-tab.mjs"
|
|
311
299
|
},
|
|
312
300
|
"./src/lib/components/visible-column": {
|
|
313
301
|
"types": "./src/lib/components/visible-column/index.d.ts",
|
|
@@ -315,11 +303,23 @@
|
|
|
315
303
|
"esm": "./esm2022/src/lib/components/visible-column/verben-ng-ui-src-lib-components-visible-column.mjs",
|
|
316
304
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-visible-column.mjs"
|
|
317
305
|
},
|
|
318
|
-
"./src/lib/components/
|
|
319
|
-
"types": "./src/lib/components/
|
|
320
|
-
"esm2022": "./esm2022/src/lib/components/
|
|
321
|
-
"esm": "./esm2022/src/lib/components/
|
|
322
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-
|
|
306
|
+
"./src/lib/components/pop-up": {
|
|
307
|
+
"types": "./src/lib/components/pop-up/index.d.ts",
|
|
308
|
+
"esm2022": "./esm2022/src/lib/components/pop-up/verben-ng-ui-src-lib-components-pop-up.mjs",
|
|
309
|
+
"esm": "./esm2022/src/lib/components/pop-up/verben-ng-ui-src-lib-components-pop-up.mjs",
|
|
310
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-pop-up.mjs"
|
|
311
|
+
},
|
|
312
|
+
"./src/lib/components/verben-dialogue": {
|
|
313
|
+
"types": "./src/lib/components/verben-dialogue/index.d.ts",
|
|
314
|
+
"esm2022": "./esm2022/src/lib/components/verben-dialogue/verben-ng-ui-src-lib-components-verben-dialogue.mjs",
|
|
315
|
+
"esm": "./esm2022/src/lib/components/verben-dialogue/verben-ng-ui-src-lib-components-verben-dialogue.mjs",
|
|
316
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-verben-dialogue.mjs"
|
|
317
|
+
},
|
|
318
|
+
"./src/lib/components/verbena-icon": {
|
|
319
|
+
"types": "./src/lib/components/verbena-icon/index.d.ts",
|
|
320
|
+
"esm2022": "./esm2022/src/lib/components/verbena-icon/verben-ng-ui-src-lib-components-verbena-icon.mjs",
|
|
321
|
+
"esm": "./esm2022/src/lib/components/verbena-icon/verben-ng-ui-src-lib-components-verbena-icon.mjs",
|
|
322
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-verbena-icon.mjs"
|
|
323
323
|
}
|
|
324
324
|
}
|
|
325
325
|
}
|
|
@@ -14,6 +14,7 @@ export declare class DatePickerComponent implements ControlValueAccessor {
|
|
|
14
14
|
yearPlaceholder: string;
|
|
15
15
|
monthPlaceholder: string;
|
|
16
16
|
date: Date | null | string;
|
|
17
|
+
showTime: boolean;
|
|
17
18
|
dateChange: EventEmitter<Date>;
|
|
18
19
|
yearRange: number[];
|
|
19
20
|
filteredYearRange: number[];
|
|
@@ -32,9 +33,27 @@ export declare class DatePickerComponent implements ControlValueAccessor {
|
|
|
32
33
|
registerOnTouched(fn: any): void;
|
|
33
34
|
setDisabledState?(isDisabled: boolean): void;
|
|
34
35
|
ngOnChanges(): void;
|
|
36
|
+
isSameDate(d1: Date, d2: Date): boolean;
|
|
35
37
|
ngOnInit(): void;
|
|
36
38
|
get displayDate(): string;
|
|
39
|
+
tempTime: string;
|
|
40
|
+
amPm: 'AM' | 'PM';
|
|
41
|
+
selectedHour: string;
|
|
42
|
+
selectedMinute: string;
|
|
43
|
+
showHourOptions: boolean;
|
|
44
|
+
showMinuteOptions: boolean;
|
|
45
|
+
hours: string[];
|
|
46
|
+
minutes: string[];
|
|
47
|
+
toggleHourDropdown(): void;
|
|
48
|
+
toggleMinuteDropdown(): void;
|
|
49
|
+
selectHour(h: string): void;
|
|
50
|
+
selectMinute(m: string): void;
|
|
51
|
+
toggleAmPm(): void;
|
|
37
52
|
toggleCalendar(): void;
|
|
53
|
+
initTimeFromDate(date: Date): void;
|
|
54
|
+
fixToUTC(dateValue: any): Date | null;
|
|
55
|
+
confirm(): void;
|
|
56
|
+
setToStartOfDay(): void;
|
|
38
57
|
previousMonth(): void;
|
|
39
58
|
nextMonth(): void;
|
|
40
59
|
onDropdownYearChange(event: DropdownChangeEvent): void;
|
|
@@ -44,11 +63,11 @@ export declare class DatePickerComponent implements ControlValueAccessor {
|
|
|
44
63
|
isDisabled(day: Date | string): boolean;
|
|
45
64
|
private stripTime;
|
|
46
65
|
private toDate;
|
|
66
|
+
is24Hour: boolean;
|
|
47
67
|
selectTemporaryDate(day: Date): void;
|
|
48
68
|
isSelected(day: Date): boolean;
|
|
49
69
|
formatDate(date: Date, format: string): string;
|
|
50
|
-
confirm(): void;
|
|
51
70
|
cancel(): void;
|
|
52
71
|
static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerComponent, never>;
|
|
53
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DatePickerComponent, "app-date-picker", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "format": { "alias": "format"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "bgColor": { "alias": "bgColor"; "required": false; }; "border": { "alias": "border"; "required": false; }; "useDropdowns": { "alias": "useDropdowns"; "required": false; }; "yearPlaceholder": { "alias": "yearPlaceholder"; "required": false; }; "monthPlaceholder": { "alias": "monthPlaceholder"; "required": false; }; "date": { "alias": "date"; "required": false; }; }, { "dateChange": "dateChange"; }, never, never, false, never>;
|
|
72
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DatePickerComponent, "app-date-picker", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "format": { "alias": "format"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "bgColor": { "alias": "bgColor"; "required": false; }; "border": { "alias": "border"; "required": false; }; "useDropdowns": { "alias": "useDropdowns"; "required": false; }; "yearPlaceholder": { "alias": "yearPlaceholder"; "required": false; }; "monthPlaceholder": { "alias": "monthPlaceholder"; "required": false; }; "date": { "alias": "date"; "required": false; }; "showTime": { "alias": "showTime"; "required": false; }; }, { "dateChange": "dateChange"; }, never, never, false, never>;
|
|
54
73
|
}
|