verben-ng-ui 1.2.27 → 1.2.28
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 +46 -18
- package/esm2022/src/lib/components/notification/notification.module.mjs +2 -2
- package/fesm2022/verben-ng-ui-src-lib-components-date-picker.mjs +45 -18
- package/fesm2022/verben-ng-ui-src-lib-components-date-picker.mjs.map +1 -1
- package/fesm2022/verben-ng-ui-src-lib-components-notification.mjs.map +1 -1
- package/package.json +19 -19
- package/src/lib/components/date-picker/date-picker.component.d.ts +8 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
import * as i1 from "@angular/forms";
|
|
4
5
|
import * as i2 from "@angular/common";
|
|
@@ -17,7 +18,7 @@ export class DatePickerComponent {
|
|
|
17
18
|
yearPlaceholder = 'Select a year';
|
|
18
19
|
monthPlaceholder = 'Select a month';
|
|
19
20
|
date = null; // Two-way binding support
|
|
20
|
-
dateChange = new EventEmitter();
|
|
21
|
+
dateChange = new EventEmitter();
|
|
21
22
|
yearRange = [];
|
|
22
23
|
filteredYearRange = [];
|
|
23
24
|
selectedDate = new Date();
|
|
@@ -25,22 +26,34 @@ export class DatePickerComponent {
|
|
|
25
26
|
showCalendar = false;
|
|
26
27
|
weekDays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
|
|
27
28
|
months = [
|
|
28
|
-
'January',
|
|
29
|
-
'
|
|
30
|
-
'March',
|
|
31
|
-
'April',
|
|
32
|
-
'May',
|
|
33
|
-
'June',
|
|
34
|
-
'July',
|
|
35
|
-
'August',
|
|
36
|
-
'September',
|
|
37
|
-
'October',
|
|
38
|
-
'November',
|
|
39
|
-
'December',
|
|
29
|
+
'January', 'February', 'March', 'April', 'May', 'June',
|
|
30
|
+
'July', 'August', 'September', 'October', 'November', 'December',
|
|
40
31
|
];
|
|
41
32
|
selectedMonth = 1;
|
|
42
33
|
selectedMonthString = '';
|
|
43
34
|
selectedYear = new Date().getFullYear();
|
|
35
|
+
// ControlValueAccessor bindings
|
|
36
|
+
onChange = () => { };
|
|
37
|
+
onTouched = () => { };
|
|
38
|
+
writeValue(value) {
|
|
39
|
+
if (value) {
|
|
40
|
+
this.date = value;
|
|
41
|
+
const parsedDate = typeof value === 'string' ? new Date(value) : value;
|
|
42
|
+
this.selectedDate = new Date(parsedDate);
|
|
43
|
+
this.tempSelectedDate = new Date(parsedDate);
|
|
44
|
+
this.selectedMonth = this.selectedDate.getMonth();
|
|
45
|
+
this.selectedYear = this.selectedDate.getFullYear();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
registerOnChange(fn) {
|
|
49
|
+
this.onChange = fn;
|
|
50
|
+
}
|
|
51
|
+
registerOnTouched(fn) {
|
|
52
|
+
this.onTouched = fn;
|
|
53
|
+
}
|
|
54
|
+
setDisabledState(isDisabled) {
|
|
55
|
+
this.disabled = isDisabled;
|
|
56
|
+
}
|
|
44
57
|
ngOnChanges() {
|
|
45
58
|
if (this.date) {
|
|
46
59
|
const parsedDate = typeof this.date === 'string' ? new Date(this.date) : this.date;
|
|
@@ -105,7 +118,6 @@ export class DatePickerComponent {
|
|
|
105
118
|
days.push(null);
|
|
106
119
|
}
|
|
107
120
|
const totalDays = new Date(year, month + 1, 0).getDate();
|
|
108
|
-
// Add the actual days of the month
|
|
109
121
|
for (let i = 1; i <= totalDays; i++) {
|
|
110
122
|
days.push(new Date(year, month, i));
|
|
111
123
|
}
|
|
@@ -134,18 +146,34 @@ export class DatePickerComponent {
|
|
|
134
146
|
confirm() {
|
|
135
147
|
this.tempSelectedDate.setHours(12, 0, 0, 0);
|
|
136
148
|
this.selectedDate = new Date(this.tempSelectedDate);
|
|
149
|
+
this.date = this.selectedDate;
|
|
150
|
+
// emit both ways
|
|
137
151
|
this.dateChange.emit(this.selectedDate);
|
|
152
|
+
this.onChange(this.selectedDate);
|
|
153
|
+
this.onTouched();
|
|
138
154
|
this.showCalendar = false;
|
|
139
155
|
}
|
|
140
156
|
cancel() {
|
|
141
157
|
this.showCalendar = false;
|
|
142
158
|
}
|
|
143
159
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
144
|
-
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" },
|
|
160
|
+
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: [
|
|
161
|
+
{
|
|
162
|
+
provide: NG_VALUE_ACCESSOR,
|
|
163
|
+
useExisting: forwardRef(() => DatePickerComponent),
|
|
164
|
+
multi: true,
|
|
165
|
+
},
|
|
166
|
+
], usesOnChanges: true, ngImport: i0, template: "<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 \n [placeholder]=\"yearPlaceholder\"\n (onChange)=\"onDropdownYearChange($event)\"\n [options]=\"yearRange\"\n \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 (click)=\"selectTemporaryDate(day)\"\n >\n {{ day.getDate() }}\n </button>\n <ng-template #empty>\n <span class=\"empty-date\"></span> <!-- or use a styled placeholder -->\n </ng-template>\n </ng-container>\n </div>\n</div>\n\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 ", styles: [".date-picker{position:relative;width:250px}input{width:100%;padding:10px;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:fit-content;border:1px solid #ccc;background-color:#fff;z-index:10;border-radius:4px}.calendar-header{display:flex;justify-content:space-between;gap:10px;padding:10px;background-color:#f0f0f0}.weekdays,.dates{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:6px;padding:10px}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:20px;padding:4px 10px;color:#000;font-weight:600}.calendar-footer button{color:#000}\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"] }] });
|
|
145
167
|
}
|
|
146
168
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
147
169
|
type: Component,
|
|
148
|
-
args: [{ selector: 'app-date-picker',
|
|
170
|
+
args: [{ selector: 'app-date-picker', providers: [
|
|
171
|
+
{
|
|
172
|
+
provide: NG_VALUE_ACCESSOR,
|
|
173
|
+
useExisting: forwardRef(() => DatePickerComponent),
|
|
174
|
+
multi: true,
|
|
175
|
+
},
|
|
176
|
+
], template: "<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 \n [placeholder]=\"yearPlaceholder\"\n (onChange)=\"onDropdownYearChange($event)\"\n [options]=\"yearRange\"\n \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 (click)=\"selectTemporaryDate(day)\"\n >\n {{ day.getDate() }}\n </button>\n <ng-template #empty>\n <span class=\"empty-date\"></span> <!-- or use a styled placeholder -->\n </ng-template>\n </ng-container>\n </div>\n</div>\n\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 ", styles: [".date-picker{position:relative;width:250px}input{width:100%;padding:10px;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:fit-content;border:1px solid #ccc;background-color:#fff;z-index:10;border-radius:4px}.calendar-header{display:flex;justify-content:space-between;gap:10px;padding:10px;background-color:#f0f0f0}.weekdays,.dates{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:6px;padding:10px}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:20px;padding:4px 10px;color:#000;font-weight:600}.calendar-footer button{color:#000}\n"] }]
|
|
149
177
|
}], propDecorators: { placeholder: [{
|
|
150
178
|
type: Input
|
|
151
179
|
}], format: [{
|
|
@@ -171,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
|
|
|
171
199
|
}], dateChange: [{
|
|
172
200
|
type: Output
|
|
173
201
|
}] } });
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFRdkUsTUFBTSxPQUFPLG1CQUFtQjtJQUNyQixXQUFXLEdBQUcsYUFBYSxDQUFDO0lBQzVCLE1BQU0sR0FBRyxZQUFZLENBQUM7SUFDdEIsT0FBTyxDQUFRO0lBQ2YsT0FBTyxDQUFRO0lBQ2YsUUFBUSxHQUFhLEtBQUssQ0FBQztJQUMzQixPQUFPLEdBQVksTUFBTSxDQUFDO0lBQzFCLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFDckIsWUFBWSxHQUFZLElBQUksQ0FBQztJQUM3QixlQUFlLEdBQVcsZUFBZSxDQUFDO0lBQzFDLGdCQUFnQixHQUFXLGdCQUFnQixDQUFDO0lBQzVDLElBQUksR0FBeUIsSUFBSSxDQUFDLENBQUMsMEJBQTBCO0lBQzVELFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDLENBQUMsb0JBQW9CO0lBQ3JFLFNBQVMsR0FBYSxFQUFFLENBQUM7SUFDekIsaUJBQWlCLEdBQWEsRUFBRSxDQUFDO0lBQ2pDLFlBQVksR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ2hDLGdCQUFnQixHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7SUFDcEMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUVyQixRQUFRLEdBQUcs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LFNBQVM7K0JBQ0UsaUJBQWlCOzhCQUtsQixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERyb3Bkb3duQ2hhbmdlRXZlbnQgfSBmcm9tICd2ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3AtZG93bic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kYXRlLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1NlbGVjdCBkYXRlJztcbiAgQElucHV0KCkgZm9ybWF0ID0gJ01NL0REL1lZWVknO1xuICBASW5wdXQoKSBtaW5EYXRlPzogRGF0ZTtcbiAgQElucHV0KCkgbWF4RGF0ZT86IERhdGU7XG4gIEBJbnB1dCgpIGRpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBiZ0NvbG9yPzogc3RyaW5nID0gJyNmZmYnO1xuICBASW5wdXQoKSBib3JkZXI/OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgdXNlRHJvcGRvd25zOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgeWVhclBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWN0IGEgeWVhcic7XG4gIEBJbnB1dCgpIG1vbnRoUGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3QgYSBtb250aCc7XG4gIEBJbnB1dCgpIGRhdGU6IERhdGUgfCBudWxsIHwgc3RyaW5nID0gbnVsbDsgLy8gVHdvLXdheSBiaW5kaW5nIHN1cHBvcnRcbiAgQE91dHB1dCgpIGRhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7IC8vIEVtaXQgZGF0ZSBjaGFuZ2VzXG4gIHllYXJSYW5nZTogbnVtYmVyW10gPSBbXTtcbiAgZmlsdGVyZWRZZWFyUmFuZ2U6IG51bWJlcltdID0gW107XG4gIHNlbGVjdGVkRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHRlbXBTZWxlY3RlZERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBzaG93Q2FsZW5kYXIgPSBmYWxzZTtcblxuICB3ZWVrRGF5cyA9IFsnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnLCAnU3VuJ107XG4gIG1vbnRocyA9IFtcbiAgICAnSmFudWFyeScsXG4gICAgJ0ZlYnJ1YXJ5JyxcbiAgICAnTWFyY2gnLFxuICAgICdBcHJpbCcsXG4gICAgJ01heScsXG4gICAgJ0p1bmUnLFxuICAgICdKdWx5JyxcbiAgICAnQXVndXN0JyxcbiAgICAnU2VwdGVtYmVyJyxcbiAgICAnT2N0b2JlcicsXG4gICAgJ05vdmVtYmVyJyxcbiAgICAnRGVjZW1iZXInLFxuICBdO1xuXG4gIHNlbGVjdGVkTW9udGg6IG51bWJlciA9IDE7XG4gIHNlbGVjdGVkTW9udGhTdHJpbmc6IHN0cmluZyA9ICcnO1xuICBzZWxlY3RlZFllYXI6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5kYXRlKSB7XG4gICAgICBjb25zdCBwYXJzZWREYXRlID1cbiAgICAgICAgdHlwZW9mIHRoaXMuZGF0ZSA9PT0gJ3N0cmluZycgPyBuZXcgRGF0ZSh0aGlzLmRhdGUpIDogdGhpcy5kYXRlO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZShwYXJzZWREYXRlKTtcbiAgICAgIHRoaXMudGVtcFNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHBhcnNlZERhdGUpO1xuICAgICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRZZWFyID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG4gIH1cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgY3VycmVudFllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgZW5kWWVhciA9IGN1cnJlbnRZZWFyICsgMTA7XG4gICAgdGhpcy55ZWFyUmFuZ2UgPSBBcnJheS5mcm9tKFxuICAgICAgeyBsZW5ndGg6IGVuZFllYXIgLSAxOTYwICsgMSB9LFxuICAgICAgKF8sIGkpID0+IDE5NjAgKyBpXG4gICAgKTtcbiAgICB0aGlzLnllYXJSYW5nZS5zb3J0KChhLCBiKSA9PiBiIC0gYSk7XG4gIH1cbiAgZ2V0IGRpc3BsYXlEYXRlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9XG4gICAgICB0eXBlb2YgdGhpcy5kYXRlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHRoaXMuZGF0ZSkgOiB0aGlzLmRhdGU7XG4gICAgcmV0dXJuIHBhcnNlZERhdGUgPyB0aGlzLmZvcm1hdERhdGUocGFyc2VkRGF0ZSwgdGhpcy5mb3JtYXQpIDogJyc7XG4gIH1cblxuICB0b2dnbGVDYWxlbmRhcigpIHtcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9ICF0aGlzLnNob3dDYWxlbmRhcjtcbiAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmRhdGUgfHwgbmV3IERhdGUoKSk7XG4gICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gdGhpcy50ZW1wU2VsZWN0ZWREYXRlLmdldE1vbnRoKCk7XG4gICAgdGhpcy5zZWxlY3RlZE1vbnRoU3RyaW5nID0gdGhpcy5tb250aHNbdGhpcy5zZWxlY3RlZE1vbnRoXTtcbiAgICB0aGlzLnNlbGVjdGVkWWVhciA9IHRoaXMudGVtcFNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xuICB9XG5cbiAgcHJldmlvdXNNb250aCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9udGgtLTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZE1vbnRoIDwgMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gMTE7XG4gICAgICB0aGlzLnNlbGVjdGVkWWVhci0tO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVRlbXBTZWxlY3RlZERhdGUoKTtcbiAgfVxuXG4gIG5leHRNb250aCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9udGgrKztcbiAgICBpZiAodGhpcy5zZWxlY3RlZE1vbnRoID4gMTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRNb250aCA9IDA7XG4gICAgICB0aGlzLnNlbGVjdGVkWWVhcisrO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVRlbXBTZWxlY3RlZERhdGUoKTtcbiAgfVxuXG4gIG9uRHJvcGRvd25ZZWFyQ2hhbmdlKGV2ZW50OiBEcm9wZG93bkNoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFllYXIgPSBldmVudC52YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZVRlbXBTZWxlY3RlZERhdGUoKTtcbiAgfVxuXG4gIG9uRHJvcGRvd25Nb250aENoYW5nZShldmVudDogRHJvcGRvd25DaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRNb250aCA9IHRoaXMubW9udGhzLmluZGV4T2YoZXZlbnQudmFsdWUpO1xuICAgIHRoaXMudXBkYXRlVGVtcFNlbGVjdGVkRGF0ZSgpO1xuICB9XG5cbiAgdXBkYXRlVGVtcFNlbGVjdGVkRGF0ZSgpIHtcbiAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGUuc2V0TW9udGgodGhpcy5zZWxlY3RlZE1vbnRoKTtcbiAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGUuc2V0RnVsbFllYXIodGhpcy5zZWxlY3RlZFllYXIpO1xuICB9XG5cbiAgZ2V0RGF5c0luTW9udGgoKTogKERhdGUgfCBudWxsKVtdIHtcbiAgICBjb25zdCBkYXlzOiAoRGF0ZSB8IG51bGwpW10gPSBbXTtcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5zZWxlY3RlZFllYXI7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLnNlbGVjdGVkTW9udGg7XG5cbiAgICBjb25zdCBmaXJzdERheU9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KCk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gZmlyc3REYXlPZk1vbnRoID09PSAwID8gNiA6IGZpcnN0RGF5T2ZNb250aCAtIDE7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9mZnNldDsgaSsrKSB7XG4gICAgICBkYXlzLnB1c2gobnVsbCk7XG4gICAgfVxuXG4gICAgY29uc3QgdG90YWxEYXlzID0gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKS5nZXREYXRlKCk7XG5cbiAgICAvLyBBZGQgdGhlIGFjdHVhbCBkYXlzIG9mIHRoZSBtb250aFxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRvdGFsRGF5czsgaSsrKSB7XG4gICAgICBkYXlzLnB1c2gobmV3IERhdGUoeWVhciwgbW9udGgsIGkpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF5cztcbiAgfVxuXG4gIHNlbGVjdFRlbXBvcmFyeURhdGUoZGF5OiBEYXRlKSB7XG4gICAgdGhpcy50ZW1wU2VsZWN0ZWREYXRlID0gZGF5O1xuICB9XG5cbiAgaXNTZWxlY3RlZChkYXk6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgZGF5LmdldERhdGUoKSA9PT0gdGhpcy50ZW1wU2VsZWN0ZWREYXRlLmdldERhdGUoKSAmJlxuICAgICAgZGF5LmdldE1vbnRoKCkgPT09IHRoaXMudGVtcFNlbGVjdGVkRGF0ZS5nZXRNb250aCgpICYmXG4gICAgICBkYXkuZ2V0RnVsbFllYXIoKSA9PT0gdGhpcy50ZW1wU2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKClcbiAgICApO1xuICB9XG5cbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIGNvbnN0IG1vbnRoID0gKGRhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgIGNhc2UgJ0REL01NL1lZWVknOlxuICAgICAgICByZXR1cm4gYCR7ZGF5fS8ke21vbnRofS8ke3llYXJ9YDtcbiAgICAgIGNhc2UgJ01NL0REL1lZWVknOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGAke21vbnRofS8ke2RheX0vJHt5ZWFyfWA7XG4gICAgfVxuICB9XG5cbiAgY29uZmlybSgpIHtcbiAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGUuc2V0SG91cnMoMTIsIDAsIDAsIDApO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy50ZW1wU2VsZWN0ZWREYXRlKTtcbiAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkRGF0ZSk7XG4gICAgdGhpcy5zaG93Q2FsZW5kYXIgPSBmYWxzZTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9IGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXJcIj5cbiAgPGlucHV0XG4gICAgdHlwZT1cInRleHRcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgW3ZhbHVlXT1cImRpc3BsYXlEYXRlXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIChjbGljayk9XCIhZGlzYWJsZWQgJiYgdG9nZ2xlQ2FsZW5kYXIoKVwiXG4gICAgY2xhc3M9XCJ3LWZ1bGwgYmxvY2tcIlxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImJnQ29sb3JcIlxuICAgIFtzdHlsZS5ib3JkZXJdPVwiYm9yZGVyXCJcbiAgICBbbmdDbGFzc109XCJ7J2N1cnNvci1ub3QtYWxsb3dlZCc6ZGlzYWJsZWQ9PT10cnVlLCAnY3Vyc29yLXBvaW50ZXInOmRpc2FibGVkPT09ZmFsc2V9XCJcbiAgICByZWFkb25seVxuICAvPlxuXG4gIDxkaXYgKm5nSWY9XCJzaG93Q2FsZW5kYXJcIiBbYXBwT3V0U2lkZUNsaWNrXT1cInNob3dDYWxlbmRhclwiIChvdXRTaWRlQ2xpY2spPVwic2hvd0NhbGVuZGFyPWZhbHNlXCIgY2xhc3M9XCJjYWxlbmRhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgICpuZ0lmPVwiIXVzZURyb3Bkb3duczsgZWxzZSBkcm9wZG93bnNcIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicHJldmlvdXNNb250aCgpXCI+XG4gICAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjIwXCIgW2ljb25dPVwiJ2NoZXZyb24tbGVmdCdcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8c3Bhbj57eyBtb250aHNbc2VsZWN0ZWRNb250aF0gfX0ge3sgc2VsZWN0ZWRZZWFyIH19PC9zcGFuPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJuZXh0TW9udGgoKVwiPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnIFt3aWR0aF09XCIyMFwiIFtpY29uXT1cIidjaGV2cm9uLXJpZ2h0J1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bnM+XG4gICAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgIFxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ5ZWFyUGxhY2Vob2xkZXJcIlxuICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkRyb3Bkb3duWWVhckNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJ5ZWFyUmFuZ2VcIlxuICAgICAgICAgIFxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRZZWFyXCJcbiAgICAgICAgPjwvdmVyYmVuLWRyb3AtZG93bj5cblxuICAgICAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJtb250aFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAob25DaGFuZ2UpPVwib25Ecm9wZG93bk1vbnRoQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFtvcHRpb25zXT1cIm1vbnRoc1wiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE1vbnRoU3RyaW5nXCJcbiAgICAgICAgPjwvdmVyYmVuLWRyb3AtZG93bj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG5cbiAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5XCI+XG4gIDxkaXYgY2xhc3M9XCJ3ZWVrZGF5c1wiPlxuICAgIDxzcGFuICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla0RheXNcIj57eyBkYXkgfX08L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXkgb2YgZ2V0RGF5c0luTW9udGgoKVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cImRheTsgZWxzZSBlbXB0eVwiXG4gICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc1NlbGVjdGVkKGRheSlcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0VGVtcG9yYXJ5RGF0ZShkYXkpXCJcbiAgICAgID5cbiAgICAgICAge3sgZGF5LmdldERhdGUoKSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8bmctdGVtcGxhdGUgI2VtcHR5PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVtcHR5LWRhdGVcIj48L3NwYW4+IDwhLS0gb3IgdXNlIGEgc3R5bGVkIHBsYWNlaG9sZGVyIC0tPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuXG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWZvb3RlclwiPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImNvbmZpcm0oKVwiPk9LPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4gIl19
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5GLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQWN6RSxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLFdBQVcsR0FBRyxhQUFhLENBQUM7SUFDNUIsTUFBTSxHQUFHLFlBQVksQ0FBQztJQUN0QixPQUFPLENBQVE7SUFDZixPQUFPLENBQVE7SUFDZixRQUFRLEdBQWEsS0FBSyxDQUFDO0lBQzNCLE9BQU8sR0FBWSxNQUFNLENBQUM7SUFDMUIsTUFBTSxHQUFZLEVBQUUsQ0FBQztJQUNyQixZQUFZLEdBQVksSUFBSSxDQUFDO0lBQzdCLGVBQWUsR0FBVyxlQUFlLENBQUM7SUFDMUMsZ0JBQWdCLEdBQVcsZ0JBQWdCLENBQUM7SUFDNUMsSUFBSSxHQUF5QixJQUFJLENBQUMsQ0FBQywwQkFBMEI7SUFDNUQsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFaEQsU0FBUyxHQUFhLEVBQUUsQ0FBQztJQUN6QixpQkFBaUIsR0FBYSxFQUFFLENBQUM7SUFDakMsWUFBWSxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7SUFDaEMsZ0JBQWdCLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FB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QUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQ2xELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiwrQ0NkSCw4eEVBd0VDOzs0RkR4RFksbUJBQW1CO2tCQVovQixTQUFTOytCQUNFLGlCQUFpQixhQUdoQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBR1EsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEcm9wZG93bkNoYW5nZUV2ZW50IH0gZnJvbSAndmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kcm9wLWRvd24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZGF0ZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdTZWxlY3QgZGF0ZSc7XG4gIEBJbnB1dCgpIGZvcm1hdCA9ICdNTS9ERC9ZWVlZJztcbiAgQElucHV0KCkgbWluRGF0ZT86IERhdGU7XG4gIEBJbnB1dCgpIG1heERhdGU/OiBEYXRlO1xuICBASW5wdXQoKSBkaXNhYmxlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYmdDb2xvcj86IHN0cmluZyA9ICcjZmZmJztcbiAgQElucHV0KCkgYm9yZGVyPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHVzZURyb3Bkb3duczogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHllYXJQbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlbGVjdCBhIHllYXInO1xuICBASW5wdXQoKSBtb250aFBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWN0IGEgbW9udGgnO1xuICBASW5wdXQoKSBkYXRlOiBEYXRlIHwgbnVsbCB8IHN0cmluZyA9IG51bGw7IC8vIFR3by13YXkgYmluZGluZyBzdXBwb3J0XG4gIEBPdXRwdXQoKSBkYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIHllYXJSYW5nZTogbnVtYmVyW10gPSBbXTtcbiAgZmlsdGVyZWRZZWFyUmFuZ2U6IG51bWJlcltdID0gW107XG4gIHNlbGVjdGVkRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHRlbXBTZWxlY3RlZERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBzaG93Q2FsZW5kYXIgPSBmYWxzZTtcblxuICB3ZWVrRGF5cyA9IFsnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnLCAnU3VuJ107XG4gIG1vbnRocyA9IFtcbiAgICAnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsXG4gICAgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJyxcbiAgXTtcblxuICBzZWxlY3RlZE1vbnRoOiBudW1iZXIgPSAxO1xuICBzZWxlY3RlZE1vbnRoU3RyaW5nOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWRZZWFyOiBudW1iZXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgYmluZGluZ3NcbiAgcHJpdmF0ZSBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIHByaXZhdGUgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5kYXRlID0gdmFsdWU7XG4gICAgICBjb25zdCBwYXJzZWREYXRlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHZhbHVlKSA6IHZhbHVlO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZShwYXJzZWREYXRlKTtcbiAgICAgIHRoaXMudGVtcFNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHBhcnNlZERhdGUpO1xuICAgICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRZZWFyID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLmRhdGUpIHtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGUgPVxuICAgICAgICB0eXBlb2YgdGhpcy5kYXRlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHRoaXMuZGF0ZSkgOiB0aGlzLmRhdGU7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHBhcnNlZERhdGUpO1xuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWREYXRlID0gbmV3IERhdGUocGFyc2VkRGF0ZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkTW9udGggPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpO1xuICAgICAgdGhpcy5zZWxlY3RlZFllYXIgPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGN1cnJlbnRZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IGVuZFllYXIgPSBjdXJyZW50WWVhciArIDEwO1xuICAgIHRoaXMueWVhclJhbmdlID0gQXJyYXkuZnJvbShcbiAgICAgIHsgbGVuZ3RoOiBlbmRZZWFyIC0gMTk2MCArIDEgfSxcbiAgICAgIChfLCBpKSA9PiAxOTYwICsgaVxuICAgICk7XG4gICAgdGhpcy55ZWFyUmFuZ2Uuc29ydCgoYSwgYikgPT4gYiAtIGEpO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlEYXRlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9XG4gICAgICB0eXBlb2YgdGhpcy5kYXRlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHRoaXMuZGF0ZSkgOiB0aGlzLmRhdGU7XG4gICAgcmV0dXJuIHBhcnNlZERhdGUgPyB0aGlzLmZvcm1hdERhdGUocGFyc2VkRGF0ZSwgdGhpcy5mb3JtYXQpIDogJyc7XG4gIH1cblxuICB0b2dnbGVDYWxlbmRhcigpIHtcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9ICF0aGlzLnNob3dDYWxlbmRhcjtcbiAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmRhdGUgfHwgbmV3IERhdGUoKSk7XG4gICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gdGhpcy50ZW1wU2VsZWN0ZWREYXRlLmdldE1vbnRoKCk7XG4gICAgdGhpcy5zZWxlY3RlZE1vbnRoU3RyaW5nID0gdGhpcy5tb250aHNbdGhpcy5zZWxlY3RlZE1vbnRoXTtcbiAgICB0aGlzLnNlbGVjdGVkWWVhciA9IHRoaXMudGVtcFNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xuICB9XG5cbiAgcHJldmlvdXNNb250aCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9udGgtLTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZE1vbnRoIDwgMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gMTE7XG4gICAgICB0aGlzLnNlbGVjdGVkWWVhci0tO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVRlbXBTZWxlY3RlZERhdGUoKTtcbiAgfVxuXG4gIG5leHRNb250aCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9udGgrKztcbiAgICBpZiAodGhpcy5zZWxlY3RlZE1vbnRoID4gMTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRNb250aCA9IDA7XG4gICAgICB0aGlzLnNlbGVjdGVkWWVhcisrO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVRlbXBTZWxlY3RlZERhdGUoKTtcbiAgfVxuXG4gIG9uRHJvcGRvd25ZZWFyQ2hhbmdlKGV2ZW50OiBEcm9wZG93bkNoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFllYXIgPSBldmVudC52YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZVRlbXBTZWxlY3RlZERhdGUoKTtcbiAgfVxuXG4gIG9uRHJvcGRvd25Nb250aENoYW5nZShldmVudDogRHJvcGRvd25DaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRNb250aCA9IHRoaXMubW9udGhzLmluZGV4T2YoZXZlbnQudmFsdWUpO1xuICAgIHRoaXMudXBkYXRlVGVtcFNlbGVjdGVkRGF0ZSgpO1xuICB9XG5cbiAgdXBkYXRlVGVtcFNlbGVjdGVkRGF0ZSgpIHtcbiAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGUuc2V0TW9udGgodGhpcy5zZWxlY3RlZE1vbnRoKTtcbiAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGUuc2V0RnVsbFllYXIodGhpcy5zZWxlY3RlZFllYXIpO1xuICB9XG5cbiAgZ2V0RGF5c0luTW9udGgoKTogKERhdGUgfCBudWxsKVtdIHtcbiAgICBjb25zdCBkYXlzOiAoRGF0ZSB8IG51bGwpW10gPSBbXTtcbiAgICBjb25zdCB5ZWFyID0gdGhpcy5zZWxlY3RlZFllYXI7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLnNlbGVjdGVkTW9udGg7XG5cbiAgICBjb25zdCBmaXJzdERheU9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KCk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gZmlyc3REYXlPZk1vbnRoID09PSAwID8gNiA6IGZpcnN0RGF5T2ZNb250aCAtIDE7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9mZnNldDsgaSsrKSB7XG4gICAgICBkYXlzLnB1c2gobnVsbCk7XG4gICAgfVxuXG4gICAgY29uc3QgdG90YWxEYXlzID0gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKS5nZXREYXRlKCk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdG90YWxEYXlzOyBpKyspIHtcbiAgICAgIGRheXMucHVzaChuZXcgRGF0ZSh5ZWFyLCBtb250aCwgaSkpO1xuICAgIH1cbiAgICByZXR1cm4gZGF5cztcbiAgfVxuXG4gIHNlbGVjdFRlbXBvcmFyeURhdGUoZGF5OiBEYXRlKSB7XG4gICAgdGhpcy50ZW1wU2VsZWN0ZWREYXRlID0gZGF5O1xuICB9XG5cbiAgaXNTZWxlY3RlZChkYXk6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgZGF5LmdldERhdGUoKSA9PT0gdGhpcy50ZW1wU2VsZWN0ZWREYXRlLmdldERhdGUoKSAmJlxuICAgICAgZGF5LmdldE1vbnRoKCkgPT09IHRoaXMudGVtcFNlbGVjdGVkRGF0ZS5nZXRNb250aCgpICYmXG4gICAgICBkYXkuZ2V0RnVsbFllYXIoKSA9PT0gdGhpcy50ZW1wU2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKClcbiAgICApO1xuICB9XG5cbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIGNvbnN0IG1vbnRoID0gKGRhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgIGNhc2UgJ0REL01NL1lZWVknOlxuICAgICAgICByZXR1cm4gYCR7ZGF5fS8ke21vbnRofS8ke3llYXJ9YDtcbiAgICAgIGNhc2UgJ01NL0REL1lZWVknOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGAke21vbnRofS8ke2RheX0vJHt5ZWFyfWA7XG4gICAgfVxuICB9XG5cbiAgY29uZmlybSgpIHtcbiAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGUuc2V0SG91cnMoMTIsIDAsIDAsIDApO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy50ZW1wU2VsZWN0ZWREYXRlKTtcbiAgICB0aGlzLmRhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZTtcblxuICAgIC8vIGVtaXQgYm90aCB3YXlzXG4gICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG5cbiAgICB0aGlzLnNob3dDYWxlbmRhciA9IGZhbHNlO1xuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMuc2hvd0NhbGVuZGFyID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlclwiPlxuICA8aW5wdXRcbiAgICB0eXBlPVwidGV4dFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbdmFsdWVdPVwiZGlzcGxheURhdGVcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cIiFkaXNhYmxlZCAmJiB0b2dnbGVDYWxlbmRhcigpXCJcbiAgICBjbGFzcz1cInctZnVsbCBibG9ja1wiXG4gICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYmdDb2xvclwiXG4gICAgW3N0eWxlLmJvcmRlcl09XCJib3JkZXJcIlxuICAgIFtuZ0NsYXNzXT1cInsnY3Vyc29yLW5vdC1hbGxvd2VkJzpkaXNhYmxlZD09PXRydWUsICdjdXJzb3ItcG9pbnRlcic6ZGlzYWJsZWQ9PT1mYWxzZX1cIlxuICAgIHJlYWRvbmx5XG4gIC8+XG5cbiAgPGRpdiAqbmdJZj1cInNob3dDYWxlbmRhclwiIFthcHBPdXRTaWRlQ2xpY2tdPVwic2hvd0NhbGVuZGFyXCIgKG91dFNpZGVDbGljayk9XCJzaG93Q2FsZW5kYXI9ZmFsc2VcIiBjbGFzcz1cImNhbGVuZGFyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAgKm5nSWY9XCIhdXNlRHJvcGRvd25zOyBlbHNlIGRyb3Bkb3duc1wiPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJwcmV2aW91c01vbnRoKClcIj5cbiAgICAgICAgICA8dmVyYmVuLXN2ZyBbd2lkdGhdPVwiMjBcIiBbaWNvbl09XCInY2hldnJvbi1sZWZ0J1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxzcGFuPnt7IG1vbnRoc1tzZWxlY3RlZE1vbnRoXSB9fSB7eyBzZWxlY3RlZFllYXIgfX08L3NwYW4+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm5leHRNb250aCgpXCI+XG4gICAgICAgICAgPHZlcmJlbi1zdmcgW3dpZHRoXT1cIjIwXCIgW2ljb25dPVwiJ2NoZXZyb24tcmlnaHQnXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3ducz5cbiAgICAgICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgICAgXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInllYXJQbGFjZWhvbGRlclwiXG4gICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRHJvcGRvd25ZZWFyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFtvcHRpb25zXT1cInllYXJSYW5nZVwiXG4gICAgICAgICAgXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFllYXJcIlxuICAgICAgICA+PC92ZXJiZW4tZHJvcC1kb3duPlxuXG4gICAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIm1vbnRoUGxhY2Vob2xkZXJcIlxuICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkRyb3Bkb3duTW9udGhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgW29wdGlvbnNdPVwibW9udGhzXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTW9udGhTdHJpbmdcIlxuICAgICAgICA+PC92ZXJiZW4tZHJvcC1kb3duPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWJvZHlcIj5cbiAgPGRpdiBjbGFzcz1cIndlZWtkYXlzXCI+XG4gICAgPHNwYW4gKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrRGF5c1wiPnt7IGRheSB9fTwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkYXRlc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRheSBvZiBnZXREYXlzSW5Nb250aCgpXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiZGF5OyBlbHNlIGVtcHR5XCJcbiAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzU2VsZWN0ZWQoZGF5KVwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RUZW1wb3JhcnlEYXRlKGRheSlcIlxuICAgICAgPlxuICAgICAgICB7eyBkYXkuZ2V0RGF0ZSgpIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHk+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZW1wdHktZGF0ZVwiPjwvc3Bhbj4gPCEtLSBvciB1c2UgYSBzdHlsZWQgcGxhY2Vob2xkZXIgLS0+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZm9vdGVyXCI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJjYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY29uZmlybSgpXCI+T0s8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiAiXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
|
-
import { NotificationComponent } from '
|
|
2
|
+
import { NotificationComponent } from '.';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
4
|
import { SvgModule } from 'verben-ng-ui/src/lib/components/svg';
|
|
5
5
|
import { VerbenaButtonModule } from 'verben-ng-ui/src/lib/verbena-button';
|
|
@@ -17,4 +17,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
|
|
|
17
17
|
exports: [NotificationComponent],
|
|
18
18
|
}]
|
|
19
19
|
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFPMUUsTUFBTSxPQUFPLGtCQUFrQjt3R0FBbEIsa0JBQWtCO3lHQUFsQixrQkFBa0IsaUJBSmQscUJBQXFCLGFBQzFCLFlBQVksRUFBRSxTQUFTLEVBQUUsbUJBQW1CLGFBQzVDLHFCQUFxQjt5R0FFcEIsa0JBQWtCLFlBSG5CLFlBQVksRUFBRSxTQUFTLEVBQUUsbUJBQW1COzs0RkFHM0Msa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNyQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixDQUFDO29CQUN2RCxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3ZnTW9kdWxlIH0gZnJvbSAndmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9zdmcnO1xuaW1wb3J0IHsgVmVyYmVuYUJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ZlcmJlbi1uZy11aS9zcmMvbGliL3ZlcmJlbmEtYnV0dG9uJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTm90aWZpY2F0aW9uQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU3ZnTW9kdWxlLCBWZXJiZW5hQnV0dG9uTW9kdWxlXSxcbiAgZXhwb3J0czogW05vdGlmaWNhdGlvbkNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbk1vZHVsZSB7fVxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Component, Input, Output, NgModule } from '@angular/core';
|
|
2
|
+
import { EventEmitter, forwardRef, Component, Input, Output, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/forms';
|
|
4
|
-
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
5
5
|
import * as i2 from '@angular/common';
|
|
6
6
|
import { CommonModule } from '@angular/common';
|
|
7
7
|
import * as i3 from 'verben-ng-ui/src/lib/components/svg';
|
|
@@ -24,7 +24,7 @@ class DatePickerComponent {
|
|
|
24
24
|
yearPlaceholder = 'Select a year';
|
|
25
25
|
monthPlaceholder = 'Select a month';
|
|
26
26
|
date = null; // Two-way binding support
|
|
27
|
-
dateChange = new EventEmitter();
|
|
27
|
+
dateChange = new EventEmitter();
|
|
28
28
|
yearRange = [];
|
|
29
29
|
filteredYearRange = [];
|
|
30
30
|
selectedDate = new Date();
|
|
@@ -32,22 +32,34 @@ class DatePickerComponent {
|
|
|
32
32
|
showCalendar = false;
|
|
33
33
|
weekDays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
|
|
34
34
|
months = [
|
|
35
|
-
'January',
|
|
36
|
-
'
|
|
37
|
-
'March',
|
|
38
|
-
'April',
|
|
39
|
-
'May',
|
|
40
|
-
'June',
|
|
41
|
-
'July',
|
|
42
|
-
'August',
|
|
43
|
-
'September',
|
|
44
|
-
'October',
|
|
45
|
-
'November',
|
|
46
|
-
'December',
|
|
35
|
+
'January', 'February', 'March', 'April', 'May', 'June',
|
|
36
|
+
'July', 'August', 'September', 'October', 'November', 'December',
|
|
47
37
|
];
|
|
48
38
|
selectedMonth = 1;
|
|
49
39
|
selectedMonthString = '';
|
|
50
40
|
selectedYear = new Date().getFullYear();
|
|
41
|
+
// ControlValueAccessor bindings
|
|
42
|
+
onChange = () => { };
|
|
43
|
+
onTouched = () => { };
|
|
44
|
+
writeValue(value) {
|
|
45
|
+
if (value) {
|
|
46
|
+
this.date = value;
|
|
47
|
+
const parsedDate = typeof value === 'string' ? new Date(value) : value;
|
|
48
|
+
this.selectedDate = new Date(parsedDate);
|
|
49
|
+
this.tempSelectedDate = new Date(parsedDate);
|
|
50
|
+
this.selectedMonth = this.selectedDate.getMonth();
|
|
51
|
+
this.selectedYear = this.selectedDate.getFullYear();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
registerOnChange(fn) {
|
|
55
|
+
this.onChange = fn;
|
|
56
|
+
}
|
|
57
|
+
registerOnTouched(fn) {
|
|
58
|
+
this.onTouched = fn;
|
|
59
|
+
}
|
|
60
|
+
setDisabledState(isDisabled) {
|
|
61
|
+
this.disabled = isDisabled;
|
|
62
|
+
}
|
|
51
63
|
ngOnChanges() {
|
|
52
64
|
if (this.date) {
|
|
53
65
|
const parsedDate = typeof this.date === 'string' ? new Date(this.date) : this.date;
|
|
@@ -112,7 +124,6 @@ class DatePickerComponent {
|
|
|
112
124
|
days.push(null);
|
|
113
125
|
}
|
|
114
126
|
const totalDays = new Date(year, month + 1, 0).getDate();
|
|
115
|
-
// Add the actual days of the month
|
|
116
127
|
for (let i = 1; i <= totalDays; i++) {
|
|
117
128
|
days.push(new Date(year, month, i));
|
|
118
129
|
}
|
|
@@ -141,18 +152,34 @@ class DatePickerComponent {
|
|
|
141
152
|
confirm() {
|
|
142
153
|
this.tempSelectedDate.setHours(12, 0, 0, 0);
|
|
143
154
|
this.selectedDate = new Date(this.tempSelectedDate);
|
|
155
|
+
this.date = this.selectedDate;
|
|
156
|
+
// emit both ways
|
|
144
157
|
this.dateChange.emit(this.selectedDate);
|
|
158
|
+
this.onChange(this.selectedDate);
|
|
159
|
+
this.onTouched();
|
|
145
160
|
this.showCalendar = false;
|
|
146
161
|
}
|
|
147
162
|
cancel() {
|
|
148
163
|
this.showCalendar = false;
|
|
149
164
|
}
|
|
150
165
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
151
|
-
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" },
|
|
166
|
+
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: [
|
|
167
|
+
{
|
|
168
|
+
provide: NG_VALUE_ACCESSOR,
|
|
169
|
+
useExisting: forwardRef(() => DatePickerComponent),
|
|
170
|
+
multi: true,
|
|
171
|
+
},
|
|
172
|
+
], usesOnChanges: true, ngImport: i0, template: "<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 \n [placeholder]=\"yearPlaceholder\"\n (onChange)=\"onDropdownYearChange($event)\"\n [options]=\"yearRange\"\n \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 (click)=\"selectTemporaryDate(day)\"\n >\n {{ day.getDate() }}\n </button>\n <ng-template #empty>\n <span class=\"empty-date\"></span> <!-- or use a styled placeholder -->\n </ng-template>\n </ng-container>\n </div>\n</div>\n\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 ", styles: [".date-picker{position:relative;width:250px}input{width:100%;padding:10px;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:fit-content;border:1px solid #ccc;background-color:#fff;z-index:10;border-radius:4px}.calendar-header{display:flex;justify-content:space-between;gap:10px;padding:10px;background-color:#f0f0f0}.weekdays,.dates{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:6px;padding:10px}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:20px;padding:4px 10px;color:#000;font-weight:600}.calendar-footer button{color:#000}\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"] }] });
|
|
152
173
|
}
|
|
153
174
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
154
175
|
type: Component,
|
|
155
|
-
args: [{ selector: 'app-date-picker',
|
|
176
|
+
args: [{ selector: 'app-date-picker', providers: [
|
|
177
|
+
{
|
|
178
|
+
provide: NG_VALUE_ACCESSOR,
|
|
179
|
+
useExisting: forwardRef(() => DatePickerComponent),
|
|
180
|
+
multi: true,
|
|
181
|
+
},
|
|
182
|
+
], template: "<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 \n [placeholder]=\"yearPlaceholder\"\n (onChange)=\"onDropdownYearChange($event)\"\n [options]=\"yearRange\"\n \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 (click)=\"selectTemporaryDate(day)\"\n >\n {{ day.getDate() }}\n </button>\n <ng-template #empty>\n <span class=\"empty-date\"></span> <!-- or use a styled placeholder -->\n </ng-template>\n </ng-container>\n </div>\n</div>\n\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 ", styles: [".date-picker{position:relative;width:250px}input{width:100%;padding:10px;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:fit-content;border:1px solid #ccc;background-color:#fff;z-index:10;border-radius:4px}.calendar-header{display:flex;justify-content:space-between;gap:10px;padding:10px;background-color:#f0f0f0}.weekdays,.dates{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:6px;padding:10px}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:20px;padding:4px 10px;color:#000;font-weight:600}.calendar-footer button{color:#000}\n"] }]
|
|
156
183
|
}], propDecorators: { placeholder: [{
|
|
157
184
|
type: Input
|
|
158
185
|
}], format: [{
|
|
@@ -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 } from '@angular/core';\nimport { DropdownChangeEvent } from 'verben-ng-ui/src/lib/components/drop-down';\n\n@Component({\n selector: 'app-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.css'],\n})\nexport class DatePickerComponent {\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; // Two-way binding support\n @Output() dateChange = new EventEmitter<Date>(); // Emit date changes\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',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n\n selectedMonth: number = 1;\n selectedMonthString: string = '';\n selectedYear: number = new Date().getFullYear();\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 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 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\n // Add the actual days of the month\n for (let i = 1; i <= totalDays; i++) {\n days.push(new Date(year, month, i));\n }\n\n return days;\n }\n\n selectTemporaryDate(day: Date) {\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 this.tempSelectedDate.setHours(12, 0, 0, 0);\n this.selectedDate = new Date(this.tempSelectedDate);\n this.dateChange.emit(this.selectedDate);\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 \n [placeholder]=\"yearPlaceholder\"\n (onChange)=\"onDropdownYearChange($event)\"\n [options]=\"yearRange\"\n \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 (click)=\"selectTemporaryDate(day)\"\n >\n {{ day.getDate() }}\n </button>\n <ng-template #empty>\n <span class=\"empty-date\"></span> <!-- or use a styled placeholder -->\n </ng-template>\n </ng-container>\n </div>\n</div>\n\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; // Two-way binding support\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 // ControlValueAccessor bindings\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 days.push(new Date(year, month, i));\n }\n return days;\n }\n\n selectTemporaryDate(day: Date) {\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 this.tempSelectedDate.setHours(12, 0, 0, 0);\n this.selectedDate = new Date(this.tempSelectedDate);\n this.date = this.selectedDate;\n\n // emit both ways\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 \n [placeholder]=\"yearPlaceholder\"\n (onChange)=\"onDropdownYearChange($event)\"\n [options]=\"yearRange\"\n \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 (click)=\"selectTemporaryDate(day)\"\n >\n {{ day.getDate() }}\n </button>\n <ng-template #empty>\n <span class=\"empty-date\"></span> <!-- or use a styled placeholder -->\n </ng-template>\n </ng-container>\n </div>\n</div>\n\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verben-ng-ui-src-lib-components-notification.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/notification/notification.module.ts","../../../projects/verben-ng-ui/src/lib/components/notification/notification.component.ts","../../../projects/verben-ng-ui/src/lib/components/notification/notification.component.html","../../../projects/verben-ng-ui/src/lib/components/notification/verben-ng-ui-src-lib-components-notification.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { NotificationComponent } from '../notification';\nimport { CommonModule } from '@angular/common';\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\nimport { VerbenaButtonModule } from 'verben-ng-ui/src/lib/verbena-button';\n\n@NgModule({\n declarations: [NotificationComponent],\n imports: [CommonModule, SvgModule, VerbenaButtonModule],\n exports: [NotificationComponent],\n})\nexport class NotificationModule {}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport { NotificationService } from 'verben-ng-ui/src/lib/services';\nimport { Subscription } from 'rxjs';\n\ninterface Button {\n text: string;\n bgColor?: string;\n primarycolor?: string;\n secondarycolor?: string;\n fontSize?: string;\n fontWeight?: string;\n}\n\n@Component({\n selector: 'verben-notification',\n templateUrl: './notification.component.html',\n styleUrl: './notification.component.css',\n})\nexport class NotificationComponent implements OnInit, OnDestroy {\n @Input() width?: string = '400px';\n height?: string = '50px';\n borderRadius: string = '15px';\n fontSize: string = '20px';\n fontWeight: string = '700';\n padding: string = '10px 2.5rem 10px 1.5rem';\n @Input() content?: string;\n top: string = '';\n bottom: string = '';\n @Input() buttons: Button[] = [];\n @Input() timeout: number = 10000;\n @Input() position: string = 'top-left';\n transition: string = '0.6s ease-in-out';\n\n showNotification = false;\n notificationContent = '';\n notificationOptions: any = {};\n subscription: Subscription;\n\n constructor(private notificationService: NotificationService) {\n this.subscription = new Subscription();\n }\n\n ngOnInit() {\n this.subscription = this.notificationService.notification$.subscribe(\n (notification) => {\n if (notification) {\n this.showNotification = true;\n this.notificationContent = notification.message;\n this.notificationOptions = notification.options;\n\n setTimeout(() => {\n this.closeNotification();\n }, this.notificationOptions.timeout);\n } else {\n this.showNotification = false;\n }\n }\n );\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n closeNotification() {\n this.showNotification = false;\n this.notificationService.clearNotification();\n }\n\n @Output() buttonClick = new EventEmitter<Button>();\n @Output() close = new EventEmitter();\n\n get notificationStyles() {\n return {\n 'background-color': this.notificationOptions.backgroundColor,\n color: this.notificationOptions.textColor,\n padding: this.padding,\n 'border-radius': this.borderRadius,\n border: '1px solid transparent',\n width: this.width,\n 'font-size': this.fontSize,\n 'font-weight': this.fontWeight,\n display: 'flex',\n 'align-items': 'center',\n 'justify-content': 'space-between',\n ...this.getPositionStyles(),\n position: 'fixed',\n 'z-index': '9999',\n transition: this.transition,\n };\n }\n\n getPositionStyles() {\n const positions: { [key: string]: any } = {\n 'top-left': {\n top: this.top || '1rem',\n left: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'top-right': {\n top: this.top || '1rem',\n right: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'middle-left': {\n top: this.top || '45%',\n left: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'middle-right': {\n top: this.top || '45%',\n right: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'bottom-left': {\n bottom: this.bottom || '1rem',\n left: this.showNotification ? '1rem' : '-100%',\n transition: 'bottom 0.5s ease-in-out',\n },\n 'bottom-right': {\n bottom: this.bottom || '1rem',\n right: this.showNotification ? '1rem' : '-100%',\n transition: 'bottom 0.5s ease-in-out',\n },\n };\n\n return positions[this.position] || positions['top-left'];\n }\n\n get btnWrapperStyle() {\n return {\n display: 'flex',\n 'align-items': 'center',\n gap: '0.2rem',\n };\n }\n\n get innerWrapperStyles() {\n return {\n display: 'flex',\n 'align-items': 'center',\n gap: '1.5rem',\n };\n }\n\n onButtonClick(button: Button) {\n this.buttonClick.emit(button);\n }\n}\n","<div \n[ngStyle]=\"notificationStyles\"\nclass=\"mainwrapper\"\n>\n <div [ngStyle]=\"innerWrapperStyles\">\n <verben-svg\n [icon]=\"notificationOptions.iconName\"\n [width]=\"notificationOptions.iconWidth\"\n [height]=\"notificationOptions.iconHeight\"\n [stroke]=\"notificationOptions.stroke\"\n [fill]=\"notificationOptions.fill\"\n ></verben-svg>\n <p>{{ notificationContent }}</p>\n </div>\n <div>\n <div [ngStyle]=\"btnWrapperStyle\" *ngIf=\"buttons.length\">\n <verbena-button\n *ngFor=\"let button of buttons\"\n [text]=\"button.text\"\n [bgColor]=\"button.bgColor\"\n [textColor]=\"button.primarycolor || button.secondarycolor\"\n [borderRadius]=\"'8px'\"\n [pd]=\"'0px 8px'\"\n [fontSize]=\"'14px'\"\n (click)=\"onButtonClick(button)\"\n ></verbena-button>\n </div>\n <verben-svg\n class=\"closeSvg\"\n [icon]=\"'close'\"\n [size]=\"'sm'\"\n [stroke]=\"'grey'\"\n (click) = \"closeNotification()\"\n ></verben-svg>\n </div>\n</div>\n\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-notification.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/notification/notification.module.ts","../../../projects/verben-ng-ui/src/lib/components/notification/notification.component.ts","../../../projects/verben-ng-ui/src/lib/components/notification/notification.component.html","../../../projects/verben-ng-ui/src/lib/components/notification/verben-ng-ui-src-lib-components-notification.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { NotificationComponent } from '.';\nimport { CommonModule } from '@angular/common';\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\nimport { VerbenaButtonModule } from 'verben-ng-ui/src/lib/verbena-button';\n\n@NgModule({\n declarations: [NotificationComponent],\n imports: [CommonModule, SvgModule, VerbenaButtonModule],\n exports: [NotificationComponent],\n})\nexport class NotificationModule {}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport { NotificationService } from 'verben-ng-ui/src/lib/services';\nimport { Subscription } from 'rxjs';\n\ninterface Button {\n text: string;\n bgColor?: string;\n primarycolor?: string;\n secondarycolor?: string;\n fontSize?: string;\n fontWeight?: string;\n}\n\n@Component({\n selector: 'verben-notification',\n templateUrl: './notification.component.html',\n styleUrl: './notification.component.css',\n})\nexport class NotificationComponent implements OnInit, OnDestroy {\n @Input() width?: string = '400px';\n height?: string = '50px';\n borderRadius: string = '15px';\n fontSize: string = '20px';\n fontWeight: string = '700';\n padding: string = '10px 2.5rem 10px 1.5rem';\n @Input() content?: string;\n top: string = '';\n bottom: string = '';\n @Input() buttons: Button[] = [];\n @Input() timeout: number = 10000;\n @Input() position: string = 'top-left';\n transition: string = '0.6s ease-in-out';\n\n showNotification = false;\n notificationContent = '';\n notificationOptions: any = {};\n subscription: Subscription;\n\n constructor(private notificationService: NotificationService) {\n this.subscription = new Subscription();\n }\n\n ngOnInit() {\n this.subscription = this.notificationService.notification$.subscribe(\n (notification) => {\n if (notification) {\n this.showNotification = true;\n this.notificationContent = notification.message;\n this.notificationOptions = notification.options;\n\n setTimeout(() => {\n this.closeNotification();\n }, this.notificationOptions.timeout);\n } else {\n this.showNotification = false;\n }\n }\n );\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n closeNotification() {\n this.showNotification = false;\n this.notificationService.clearNotification();\n }\n\n @Output() buttonClick = new EventEmitter<Button>();\n @Output() close = new EventEmitter();\n\n get notificationStyles() {\n return {\n 'background-color': this.notificationOptions.backgroundColor,\n color: this.notificationOptions.textColor,\n padding: this.padding,\n 'border-radius': this.borderRadius,\n border: '1px solid transparent',\n width: this.width,\n 'font-size': this.fontSize,\n 'font-weight': this.fontWeight,\n display: 'flex',\n 'align-items': 'center',\n 'justify-content': 'space-between',\n ...this.getPositionStyles(),\n position: 'fixed',\n 'z-index': '9999',\n transition: this.transition,\n };\n }\n\n getPositionStyles() {\n const positions: { [key: string]: any } = {\n 'top-left': {\n top: this.top || '1rem',\n left: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'top-right': {\n top: this.top || '1rem',\n right: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'middle-left': {\n top: this.top || '45%',\n left: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'middle-right': {\n top: this.top || '45%',\n right: this.showNotification ? '1rem' : '-100%',\n transition: 'top 0.5s ease-in-out',\n },\n 'bottom-left': {\n bottom: this.bottom || '1rem',\n left: this.showNotification ? '1rem' : '-100%',\n transition: 'bottom 0.5s ease-in-out',\n },\n 'bottom-right': {\n bottom: this.bottom || '1rem',\n right: this.showNotification ? '1rem' : '-100%',\n transition: 'bottom 0.5s ease-in-out',\n },\n };\n\n return positions[this.position] || positions['top-left'];\n }\n\n get btnWrapperStyle() {\n return {\n display: 'flex',\n 'align-items': 'center',\n gap: '0.2rem',\n };\n }\n\n get innerWrapperStyles() {\n return {\n display: 'flex',\n 'align-items': 'center',\n gap: '1.5rem',\n };\n }\n\n onButtonClick(button: Button) {\n this.buttonClick.emit(button);\n }\n}\n","<div \n[ngStyle]=\"notificationStyles\"\nclass=\"mainwrapper\"\n>\n <div [ngStyle]=\"innerWrapperStyles\">\n <verben-svg\n [icon]=\"notificationOptions.iconName\"\n [width]=\"notificationOptions.iconWidth\"\n [height]=\"notificationOptions.iconHeight\"\n [stroke]=\"notificationOptions.stroke\"\n [fill]=\"notificationOptions.fill\"\n ></verben-svg>\n <p>{{ notificationContent }}</p>\n </div>\n <div>\n <div [ngStyle]=\"btnWrapperStyle\" *ngIf=\"buttons.length\">\n <verbena-button\n *ngFor=\"let button of buttons\"\n [text]=\"button.text\"\n [bgColor]=\"button.bgColor\"\n [textColor]=\"button.primarycolor || button.secondarycolor\"\n [borderRadius]=\"'8px'\"\n [pd]=\"'0px 8px'\"\n [fontSize]=\"'14px'\"\n (click)=\"onButtonClick(button)\"\n ></verbena-button>\n </div>\n <verben-svg\n class=\"closeSvg\"\n [icon]=\"'close'\"\n [size]=\"'sm'\"\n [stroke]=\"'grey'\"\n (click) = \"closeNotification()\"\n ></verben-svg>\n </div>\n</div>\n\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.28",
|
|
4
4
|
"author": "Verbena Logic",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -141,18 +141,18 @@
|
|
|
141
141
|
"esm": "./esm2022/src/lib/verbena-textarea/verben-ng-ui-src-lib-verbena-textarea.mjs",
|
|
142
142
|
"default": "./fesm2022/verben-ng-ui-src-lib-verbena-textarea.mjs"
|
|
143
143
|
},
|
|
144
|
-
"./src/lib/components/card-data-view": {
|
|
145
|
-
"types": "./src/lib/components/card-data-view/index.d.ts",
|
|
146
|
-
"esm2022": "./esm2022/src/lib/components/card-data-view/verben-ng-ui-src-lib-components-card-data-view.mjs",
|
|
147
|
-
"esm": "./esm2022/src/lib/components/card-data-view/verben-ng-ui-src-lib-components-card-data-view.mjs",
|
|
148
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-card-data-view.mjs"
|
|
149
|
-
},
|
|
150
144
|
"./src/lib/components/card": {
|
|
151
145
|
"types": "./src/lib/components/card/index.d.ts",
|
|
152
146
|
"esm2022": "./esm2022/src/lib/components/card/verben-ng-ui-src-lib-components-card.mjs",
|
|
153
147
|
"esm": "./esm2022/src/lib/components/card/verben-ng-ui-src-lib-components-card.mjs",
|
|
154
148
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-card.mjs"
|
|
155
149
|
},
|
|
150
|
+
"./src/lib/components/card-data-view": {
|
|
151
|
+
"types": "./src/lib/components/card-data-view/index.d.ts",
|
|
152
|
+
"esm2022": "./esm2022/src/lib/components/card-data-view/verben-ng-ui-src-lib-components-card-data-view.mjs",
|
|
153
|
+
"esm": "./esm2022/src/lib/components/card-data-view/verben-ng-ui-src-lib-components-card-data-view.mjs",
|
|
154
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-card-data-view.mjs"
|
|
155
|
+
},
|
|
156
156
|
"./src/lib/components/chip": {
|
|
157
157
|
"types": "./src/lib/components/chip/index.d.ts",
|
|
158
158
|
"esm2022": "./esm2022/src/lib/components/chip/verben-ng-ui-src-lib-components-chip.mjs",
|
|
@@ -165,6 +165,12 @@
|
|
|
165
165
|
"esm": "./esm2022/src/lib/components/data-columns/verben-ng-ui-src-lib-components-data-columns.mjs",
|
|
166
166
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-columns.mjs"
|
|
167
167
|
},
|
|
168
|
+
"./src/lib/components/data-export": {
|
|
169
|
+
"types": "./src/lib/components/data-export/index.d.ts",
|
|
170
|
+
"esm2022": "./esm2022/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.mjs",
|
|
171
|
+
"esm": "./esm2022/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.mjs",
|
|
172
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-export.mjs"
|
|
173
|
+
},
|
|
168
174
|
"./src/lib/components/data-extend": {
|
|
169
175
|
"types": "./src/lib/components/data-extend/index.d.ts",
|
|
170
176
|
"esm2022": "./esm2022/src/lib/components/data-extend/verben-ng-ui-src-lib-components-data-extend.mjs",
|
|
@@ -183,12 +189,6 @@
|
|
|
183
189
|
"esm": "./esm2022/src/lib/components/data-import/verben-ng-ui-src-lib-components-data-import.mjs",
|
|
184
190
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-import.mjs"
|
|
185
191
|
},
|
|
186
|
-
"./src/lib/components/data-export": {
|
|
187
|
-
"types": "./src/lib/components/data-export/index.d.ts",
|
|
188
|
-
"esm2022": "./esm2022/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.mjs",
|
|
189
|
-
"esm": "./esm2022/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.mjs",
|
|
190
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-export.mjs"
|
|
191
|
-
},
|
|
192
192
|
"./src/lib/components/data-sort": {
|
|
193
193
|
"types": "./src/lib/components/data-sort/index.d.ts",
|
|
194
194
|
"esm2022": "./esm2022/src/lib/components/data-sort/verben-ng-ui-src-lib-components-data-sort.mjs",
|
|
@@ -309,17 +309,17 @@
|
|
|
309
309
|
"esm": "./esm2022/src/lib/components/verbena-icon/verben-ng-ui-src-lib-components-verbena-icon.mjs",
|
|
310
310
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-verbena-icon.mjs"
|
|
311
311
|
},
|
|
312
|
-
"./src/lib/components/verbena-tab": {
|
|
313
|
-
"types": "./src/lib/components/verbena-tab/index.d.ts",
|
|
314
|
-
"esm2022": "./esm2022/src/lib/components/verbena-tab/verben-ng-ui-src-lib-components-verbena-tab.mjs",
|
|
315
|
-
"esm": "./esm2022/src/lib/components/verbena-tab/verben-ng-ui-src-lib-components-verbena-tab.mjs",
|
|
316
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-verbena-tab.mjs"
|
|
317
|
-
},
|
|
318
312
|
"./src/lib/components/visible-column": {
|
|
319
313
|
"types": "./src/lib/components/visible-column/index.d.ts",
|
|
320
314
|
"esm2022": "./esm2022/src/lib/components/visible-column/verben-ng-ui-src-lib-components-visible-column.mjs",
|
|
321
315
|
"esm": "./esm2022/src/lib/components/visible-column/verben-ng-ui-src-lib-components-visible-column.mjs",
|
|
322
316
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-visible-column.mjs"
|
|
317
|
+
},
|
|
318
|
+
"./src/lib/components/verbena-tab": {
|
|
319
|
+
"types": "./src/lib/components/verbena-tab/index.d.ts",
|
|
320
|
+
"esm2022": "./esm2022/src/lib/components/verbena-tab/verben-ng-ui-src-lib-components-verbena-tab.mjs",
|
|
321
|
+
"esm": "./esm2022/src/lib/components/verbena-tab/verben-ng-ui-src-lib-components-verbena-tab.mjs",
|
|
322
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-verbena-tab.mjs"
|
|
323
323
|
}
|
|
324
324
|
}
|
|
325
325
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { EventEmitter } from '@angular/core';
|
|
2
2
|
import { DropdownChangeEvent } from 'verben-ng-ui/src/lib/components/drop-down';
|
|
3
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class DatePickerComponent {
|
|
5
|
+
export declare class DatePickerComponent implements ControlValueAccessor {
|
|
5
6
|
placeholder: string;
|
|
6
7
|
format: string;
|
|
7
8
|
minDate?: Date;
|
|
@@ -24,6 +25,12 @@ export declare class DatePickerComponent {
|
|
|
24
25
|
selectedMonth: number;
|
|
25
26
|
selectedMonthString: string;
|
|
26
27
|
selectedYear: number;
|
|
28
|
+
private onChange;
|
|
29
|
+
private onTouched;
|
|
30
|
+
writeValue(value: Date | string | null): void;
|
|
31
|
+
registerOnChange(fn: any): void;
|
|
32
|
+
registerOnTouched(fn: any): void;
|
|
33
|
+
setDisabledState?(isDisabled: boolean): void;
|
|
27
34
|
ngOnChanges(): void;
|
|
28
35
|
ngOnInit(): void;
|
|
29
36
|
get displayDate(): string;
|