@quadrel-enterprise-ui/framework 18.25.0 → 18.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -43,7 +43,7 @@ export class QdCalendarComponent {
|
|
|
43
43
|
QdCalendarMode = QdCalendarMode;
|
|
44
44
|
ngOnInit() {
|
|
45
45
|
moment.locale(this.language);
|
|
46
|
-
this.
|
|
46
|
+
this.setWeekdays();
|
|
47
47
|
this.todayDate = moment();
|
|
48
48
|
this.months = moment.months();
|
|
49
49
|
this.years = this.getYears((QdDateAdapter.parseToMoment(this.selectedDate)?.isValid()
|
|
@@ -53,8 +53,10 @@ export class QdCalendarComponent {
|
|
|
53
53
|
this.generateCalendar(this.currentDate);
|
|
54
54
|
}
|
|
55
55
|
ngOnChanges(changes) {
|
|
56
|
-
if (changes['language'])
|
|
56
|
+
if (changes['language']) {
|
|
57
57
|
moment.locale(this.language);
|
|
58
|
+
this.setWeekdays();
|
|
59
|
+
}
|
|
58
60
|
if (changes['disabledDates'] && !changes['disabledDates'].isFirstChange())
|
|
59
61
|
this.generateCalendar(this.currentDate);
|
|
60
62
|
}
|
|
@@ -118,9 +120,8 @@ export class QdCalendarComponent {
|
|
|
118
120
|
this.weeks = Array.from({ length: Math.ceil(dates.length / 7) }, () => dates.splice(0, 7));
|
|
119
121
|
}
|
|
120
122
|
fillDates(momentObj) {
|
|
121
|
-
const
|
|
122
|
-
const
|
|
123
|
-
const lastDayOfGrid = moment(momentObj).endOf('month').subtract(lastOfMonth, 'days').add(7, 'days');
|
|
123
|
+
const firstDayOfGrid = moment(momentObj).locale(this.language).startOf('month').startOf('isoWeek');
|
|
124
|
+
const lastDayOfGrid = moment(momentObj).endOf('month').endOf('isoWeek').add(1, 'day');
|
|
124
125
|
const startCalendar = firstDayOfGrid.date();
|
|
125
126
|
return range(startCalendar, startCalendar + lastDayOfGrid.diff(firstDayOfGrid, 'days')).map(date => {
|
|
126
127
|
const newDate = moment(firstDayOfGrid).date(date);
|
|
@@ -165,6 +166,10 @@ export class QdCalendarComponent {
|
|
|
165
166
|
return date.isAfter(fromDate, 'day') && date.isBefore(toDate, 'day');
|
|
166
167
|
});
|
|
167
168
|
}
|
|
169
|
+
setWeekdays() {
|
|
170
|
+
const w = moment.localeData(this.language).weekdaysMin();
|
|
171
|
+
this.weekdays = w.slice(1).concat(w[0]);
|
|
172
|
+
}
|
|
168
173
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
169
174
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: QdCalendarComponent, selector: "qd-calendar", inputs: { selectedDate: "selectedDate", language: "language", disabledDates: "disabledDates" }, outputs: { selectedChange: "selectedChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"nav\">\n <button (click)=\"prev()\">\n <qd-icon icon=\"arrowLeft\"></qd-icon>\n </button>\n\n <ng-container>\n <span\n *ngIf=\"mode === QdCalendarMode.Default\"\n class=\"current-month-year\"\n (click)=\"changeMode(QdCalendarMode.YearPicker)\"\n >\n {{ currentDate.locale(language).format(\"MMMM\") }} {{ currentDate?.format(\"YYYY\") }}\n </span>\n <span\n *ngIf=\"mode === QdCalendarMode.YearPicker\"\n class=\"current-years-list\"\n (click)=\"changeMode(QdCalendarMode.MonthPicker)\"\n >\n {{ years[0] }} - {{ years[years.length - 1] }}\n </span>\n <span\n *ngIf=\"mode === QdCalendarMode.MonthPicker\"\n class=\"current-year\"\n (click)=\"changeMode(QdCalendarMode.YearPicker)\"\n >\n {{ currentDate?.format(\"YYYY\") }}\n </span>\n </ng-container>\n\n <button (click)=\"next()\">\n <qd-icon icon=\"arrowRight\"></qd-icon>\n </button>\n</div>\n\n<table *ngIf=\"mode === QdCalendarMode.Default\">\n <thead></thead>\n <tbody>\n <tr>\n <td class=\"weekday\" *ngFor=\"let name of weekdays\">{{ name }}</td>\n </tr>\n <tr *ngFor=\"let week of weeks\">\n <td\n class=\"day {{ day.moment.date() }}\"\n *ngFor=\"let day of week\"\n (click)=\"selectDate(day)\"\n [ngClass]=\"{\n today: day.today,\n selected: day.selected,\n hidden: !isSameYearMonth(day.moment),\n disabled: day.disabled\n }\"\n >\n {{ day.moment.date() }}\n </td>\n </tr>\n </tbody>\n</table>\n\n<div class=\"calendar\" *ngIf=\"mode !== QdCalendarMode.Default\">\n <div class=\"picker\" *ngIf=\"mode === QdCalendarMode.YearPicker\">\n <div class=\"col {{ year }}\" *ngFor=\"let year of years\">\n <div class=\"entry\" (click)=\"selectYear(year)\" [ngClass]=\"{ selected: isSameYear(year) }\">\n {{ year }}\n </div>\n </div>\n </div>\n\n <div class=\"picker\" *ngIf=\"mode === QdCalendarMode.MonthPicker\">\n <div class=\"col {{ month }}\" *ngFor=\"let month of months; let i = index\">\n <div class=\"entry\" (click)=\"selectMonth(i)\" [ngClass]=\"{ selected: isSameMonth(i), month }\">\n {{ month }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".nav{color:#171717;font-size:1rem;font-weight:700;line-height:1.5rem;display:grid;margin:.75rem;grid-template-columns:[next] 2rem [monthyear] auto [prev] 2rem [end];text-transform:capitalize}.nav span{line-height:2.5rem;text-align:center}.nav .current-month-year,.nav .current-years-list,.nav .current-year{cursor:pointer}tbody{display:inherit;margin:.75rem}td{color:#171717;font-size:.875rem;font-weight:400;line-height:1.3125rem;min-width:2.5625rem;padding:.4375rem;text-align:center;text-transform:capitalize}td.disabled{color:#d5d5d5;pointer-events:none}td.hidden{opacity:0;pointer-events:none}td.today{box-shadow:0 0 0 .125rem #d5d5d5 inset}td.selected,td.day:hover{background:#d5d5d5;cursor:pointer}.picker{display:flex;width:100%;flex-wrap:wrap;padding:.75rem}.picker .col{flex:0 0 33.33%;padding:.5rem .25rem}.picker .entry{padding:.4375rem;background:#d5d5d5;cursor:pointer;text-align:center}.picker .entry.selected,.picker .entry:hover{background:gray}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.QdIconComponent, selector: "qd-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
170
175
|
}
|
|
@@ -180,4 +185,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
180
185
|
}], selectedChange: [{
|
|
181
186
|
type: Output
|
|
182
187
|
}] } });
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL2RhdGVwaWNrZXIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL2RhdGVwaWNrZXIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxNQUFrQixNQUFNLFFBQVEsQ0FBQztBQUN4QyxPQUFPLEVBQWlCLGNBQWMsRUFBbUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFeEQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztBQVFyQixNQUFNLE9BQU8sbUJBQW1CO0lBQzlCOzs7O09BSUc7SUFFSCxZQUFZLENBQTZCO0lBRXpDOzs7O09BSUc7SUFFSCxRQUFRLENBQVM7SUFFakI7Ozs7O09BS0c7SUFFSCxhQUFhLENBQW9CO0lBRWpDOztPQUVHO0lBRUgsY0FBYyxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO0lBRWhFLFdBQVcsQ0FBUztJQUNwQixTQUFTLENBQVM7SUFFbEIsUUFBUSxDQUFXO0lBQ25CLEtBQUssR0FBMkIsRUFBRSxDQUFDO0lBQ25DLE1BQU0sQ0FBVztJQUNqQixLQUFLLENBQVc7SUFFaEIsSUFBSSxHQUFtQixjQUFjLENBQUMsT0FBTyxD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LFNBQVM7K0JBQ0UsYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNOzhCQVMvQyxZQUFZO3NCQURYLEtBQUs7Z0JBU04sUUFBUTtzQkFEUCxLQUFLO2dCQVVOLGFBQWE7c0JBRFosS0FBSztnQkFPTixjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtc3RyaWN0LWlnbm9yZVxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJhbmdlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFFkQ2FsZW5kYXJEYXksIFFkQ2FsZW5kYXJNb2RlLCBRZERpc2FibGVkRGF0ZXMgfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IFFkRGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVyL2RhdGUtYWRhcHRlcic7XG5cbmNvbnN0IFllYXJzQmVmb3JlID0gOTtcbmNvbnN0IFllYXJzQWZ0ZXIgPSAyO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFFkQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gaGlnaGxpZ2h0IHRoZSBzZWxlY3RlZCBkYXRlIGluIHRoZSBjYWxlbmRhci4gSXQgc2hvdWxkIGJlIGluIHRoZSBmb3JtYXQgZm9yIGV4YW1wbGUgJ0RELk1NLllZWVknIG9yICdNTS9ERC9ZWVlZJyBkZXBlbmRpbmcgb24gdGhlIGxhbmd1YWdlIHVzZWQuXG4gICAqXG4gICAqIEBleGFtcGxlICcyMDIyLTEyLTI1J1xuICAgKi9cbiAgQElucHV0KClcbiAgc2VsZWN0ZWREYXRlOiBRZENhbGVuZGFyRGF5Wydmb3JtYXR0ZWQnXTtcblxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZXRlcm1pbmVzIHRoZSBsYW5ndWFnZSB1c2VkIGZvciBkaXNwbGF5aW5nIHRoZSB3ZWVrZGF5cyBhbmQgZm9ybWF0dGluZyB0aGUgZGF0ZXMgaW4gdGhlIGNhbGVuZGFyLiBJdCBzaG91bGQgYmUgYSB2YWxpZCBsYW5ndWFnZSBjb2RlIHN1cHBvcnRlZCBieSB0aGUgbW9tZW50LmpzIGxpYnJhcnkuXG4gICAqXG4gICAqIEBleGFtcGxlICdkZSdcbiAgICovXG4gIEBJbnB1dCgpXG4gIGxhbmd1YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgZGlzYWJsZXMgdGhlIGdpdmVuIGRhdGUgcmFuZ2VzLlRoZSByYW5nZXMgaGF2ZSBhIFwiZnJvbVwiIGFuZCBcInRvXCIgZGF0ZS5cbiAgICogSWYgXCJmcm9tXCIgaXMgZW1wdHksIGl0IHdpbGwgc2V0IHRoZSBkZWZhdWx0IHZhbHVlIDE5MDBcbiAgICogSWYgXCJ0b1wiIGlzIGVtcHR5LCBpdCB3aWxsIGJlIHNldCB0byB0aGUgZGVmYXVsdCAyMTAwXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICBkaXNhYmxlZERhdGVzOiBRZERpc2FibGVkRGF0ZXNbXTtcblxuICAvKipcbiAgICogT3V0cHV0cyBhIHZhbHVlIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIGRhdGUgaW4gdGhlIGNhbGVuZGFyLiBUaGUgbmV3bHkgc2VsZWN0ZWQgZGF0ZSBpcyBvdXRwdXQgYXMgYSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFFkQ2FsZW5kYXJEYXlbJ2Zvcm1hdHRlZCddPigpO1xuXG4gIGN1cnJlbnREYXRlOiBNb21lbnQ7XG4gIHRvZGF5RGF0ZTogTW9tZW50O1xuXG4gIHdlZWtkYXlzOiBzdHJpbmdbXTtcbiAgd2Vla3M6IEFycmF5PFFkQ2FsZW5kYXJEYXlbXT4gPSBbXTtcbiAgbW9udGhzOiBzdHJpbmdbXTtcbiAgeWVhcnM6IG51bWJlcltdO1xuXG4gIG1vZGU6IFFkQ2FsZW5kYXJNb2RlID0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdDtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgUWRDYWxlbmRhck1vZGUgPSBRZENhbGVuZGFyTW9kZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBtb21lbnQubG9jYWxlKHRoaXMubGFuZ3VhZ2UpO1xuXG4gICAgdGhpcy53ZWVrZGF5cyA9IG1vbWVudC53ZWVrZGF5c01pbih0cnVlKTtcbiAgICB0aGlzLnRvZGF5RGF0ZSA9IG1vbWVudCgpO1xuXG4gICAgdGhpcy5tb250aHMgPSBtb21lbnQubW9udGhzKCk7XG4gICAgdGhpcy55ZWFycyA9IHRoaXMuZ2V0WWVhcnMoXG4gICAgICAoUWREYXRlQWRhcHRlci5wYXJzZVRvTW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlKT8uaXNWYWxpZCgpXG4gICAgICAgID8gbW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlLCAnTCcsIHRoaXMubGFuZ3VhZ2UpXG4gICAgICAgIDogdGhpcy50b2RheURhdGVcbiAgICAgICkueWVhcigpXG4gICAgKTtcblxuICAgIHRoaXMuc2V0Q3VycmVudERhdGUoKTtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIodGhpcy5jdXJyZW50RGF0ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2xhbmd1YWdlJ10pIG1vbWVudC5sb2NhbGUodGhpcy5sYW5ndWFnZSk7XG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkRGF0ZXMnXSAmJiAhY2hhbmdlc1snZGlzYWJsZWREYXRlcyddLmlzRmlyc3RDaGFuZ2UoKSkgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICB9XG5cbiAgaXNTYW1lWWVhck1vbnRoKGRheTogTW9tZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRheS5pc1NhbWUodGhpcy5jdXJyZW50RGF0ZSwgJ21vbnRoJyk7XG4gIH1cblxuICBpc1NhbWVNb250aChtb250aCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnREYXRlLm1vbnRoKCkgPT09IG1vbnRoO1xuICB9XG5cbiAgaXNTYW1lWWVhcih5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gUWREYXRlQWRhcHRlci5wYXJzZVRvTW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlKS55ZWFyKCkgPT09IHllYXI7XG4gIH1cblxuICBwcmV2KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLkRlZmF1bHQpIHtcbiAgICAgIHRoaXMuY3VycmVudERhdGUuc3VidHJhY3QoMSwgJ21vbnRocycpO1xuICAgICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHRoaXMuY3VycmVudERhdGUueWVhcigpIC0gKFllYXJzQmVmb3JlICsgWWVhcnNBZnRlciArIDEpKTtcbiAgICAgIHRoaXMueWVhcnMgPSB0aGlzLmdldFllYXJzKHRoaXMuY3VycmVudERhdGUueWVhcigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXQoJ3llYXInLCB0aGlzLmN1cnJlbnREYXRlLnllYXIoKSAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIG5leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdCkge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5hZGQoMSwgJ21vbnRocycpO1xuICAgICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHRoaXMuY3VycmVudERhdGUueWVhcigpICsgKFllYXJzQmVmb3JlICsgWWVhcnNBZnRlciArIDEpKTtcbiAgICAgIHRoaXMueWVhcnMgPSB0aGlzLmdldFllYXJzKHRoaXMuY3VycmVudERhdGUueWVhcigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXQoJ3llYXInLCB0aGlzLmN1cnJlbnREYXRlLnllYXIoKSArIDEpO1xuICAgIH1cbiAgfVxuXG4gIGlzU2VsZWN0ZWQobW9tZW50T2JqOiBNb21lbnQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gUWREYXRlQWRhcHRlci5mb3JtYXRUb0xvY2FsaXplZERhdGVTdHJpbmcobW9tZW50T2JqKSA9PT0gdGhpcy5zZWxlY3RlZERhdGU7XG4gIH1cblxuICBzZWxlY3REYXRlKGRhdGU6IFFkQ2FsZW5kYXJEYXkgfCBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoZGF0ZS5mb3JtYXR0ZWQpO1xuICB9XG5cbiAgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHllYXIpO1xuICAgIHRoaXMubW9kZSA9IFFkQ2FsZW5kYXJNb2RlLk1vbnRoUGlja2VyO1xuICB9XG5cbiAgc2VsZWN0TW9udGgobW9udGg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERhdGUuc2V0KCdtb250aCcsIG1vbnRoKTtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIodGhpcy5jdXJyZW50RGF0ZSk7XG4gICAgdGhpcy5tb2RlID0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdDtcbiAgfVxuXG4gIGNoYW5nZU1vZGUobnI6IFFkQ2FsZW5kYXJNb2RlKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlID0gbnI7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FsZW5kYXIobW9tZW50T2JqOiBNb21lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlcyA9IHRoaXMuZmlsbERhdGVzKG1vbWVudE9iaik7XG4gICAgdGhpcy53ZWVrcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IE1hdGguY2VpbChkYXRlcy5sZW5ndGggLyA3KSB9LCAoKSA9PiBkYXRlcy5zcGxpY2UoMCwgNykpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsRGF0ZXMobW9tZW50T2JqOiBNb21lbnQpOiBRZENhbGVuZGFyRGF5W10ge1xuICAgIGNvbnN0IGxhc3RPZk1vbnRoID0gbW9tZW50KG1vbWVudE9iaikuZW5kT2YoJ21vbnRoJykuZGF5KCk7XG4gICAgY29uc3QgZmlyc3REYXlPZkdyaWQgPSBtb21lbnQobW9tZW50T2JqKS5sb2NhbGUodGhpcy5sYW5ndWFnZSkuc3RhcnRPZignbW9udGgnKS5zdGFydE9mKCd3ZWVrJyk7XG4gICAgY29uc3QgbGFzdERheU9mR3JpZCA9IG1vbWVudChtb21lbnRPYmopLmVuZE9mKCdtb250aCcpLnN1YnRyYWN0KGxhc3RPZk1vbnRoLCAnZGF5cycpLmFkZCg3LCAnZGF5cycpO1xuICAgIGNvbnN0IHN0YXJ0Q2FsZW5kYXIgPSBmaXJzdERheU9mR3JpZC5kYXRlKCk7XG5cbiAgICByZXR1cm4gcmFuZ2Uoc3RhcnRDYWxlbmRhciwgc3RhcnRDYWxlbmRhciArIGxhc3REYXlPZkdyaWQuZGlmZihmaXJzdERheU9mR3JpZCwgJ2RheXMnKSkubWFwKGRhdGUgPT4ge1xuICAgICAgY29uc3QgbmV3RGF0ZSA9IG1vbWVudChmaXJzdERheU9mR3JpZCkuZGF0ZShkYXRlKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9ybWF0dGVkOiBRZERhdGVBZGFwdGVyLmZvcm1hdFRvTG9jYWxpemVkRGF0ZVN0cmluZyhuZXdEYXRlKSxcbiAgICAgICAgbW9tZW50OiBuZXdEYXRlLFxuICAgICAgICBzZWxlY3RlZDogdGhpcy5pc1NlbGVjdGVkKG5ld0RhdGUpLFxuICAgICAgICB0b2RheTogdGhpcy5pc1RvZGF5KG5ld0RhdGUpLFxuICAgICAgICBkaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkKG5ld0RhdGUpXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RvZGF5KG1vbWVudE9iajogTW9tZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9kYXlEYXRlLmlzU2FtZShtb21lbnRPYmosICdkYXknKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3VycmVudERhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudERhdGU6IE1vbWVudCA9ICh0aGlzLmN1cnJlbnREYXRlID0gUWREYXRlQWRhcHRlci5wYXJzZVRvTW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlKT8uaXNWYWxpZCgpXG4gICAgICA/IG1vbWVudCh0aGlzLnNlbGVjdGVkRGF0ZSwgJ0wnLCAnZGUnKVxuICAgICAgOiB0aGlzLnRvZGF5RGF0ZSk7XG5cbiAgICB0aGlzLmN1cnJlbnREYXRlID0gY3VycmVudERhdGU7XG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBRZERhdGVBZGFwdGVyLmZvcm1hdFRvTG9jYWxpemVkRGF0ZVN0cmluZyhjdXJyZW50RGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFllYXJzKHllYXI6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBjb25zdCB5ZWFyc0JlZm9yZSA9IFllYXJzQmVmb3JlO1xuICAgIGNvbnN0IHllYXJzQWZ0ZXIgPSBZZWFyc0FmdGVyO1xuICAgIGNvbnN0IHJlc3VsdDogbnVtYmVyW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSB5ZWFyIC0geWVhcnNCZWZvcmU7IGkgPD0geWVhciArIHllYXJzQWZ0ZXI7IGkrKykge1xuICAgICAgcmVzdWx0LnB1c2goaSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgaXNEaXNhYmxlZChkYXRlOiBNb21lbnQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWREYXRlcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkRGF0ZXMuc29tZShkaXNhYmxlZERhdGUgPT4ge1xuICAgICAgbGV0IGZyb21EYXRlID0gbW9tZW50KGRpc2FibGVkRGF0ZS5mcm9tKTtcbiAgICAgIGxldCB0b0RhdGUgPSBtb21lbnQoZGlzYWJsZWREYXRlLnRvKTtcbiAgICAgIGlmICghZGlzYWJsZWREYXRlLmZyb20pIGZyb21EYXRlID0gbW9tZW50KCcxOTAwLTAxLTAxVDAwOjAwOjAwLjAwMFonKTtcbiAgICAgIGlmICghZGlzYWJsZWREYXRlLnRvKSB0b0RhdGUgPSBtb21lbnQoJzIxMDAtMDEtMDFUMDA6MDA6MDAuMDAwWicpO1xuXG4gICAgICByZXR1cm4gZGF0ZS5pc0FmdGVyKGZyb21EYXRlLCAnZGF5JykgJiYgZGF0ZS5pc0JlZm9yZSh0b0RhdGUsICdkYXknKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm5hdlwiPlxuICA8YnV0dG9uIChjbGljayk9XCJwcmV2KClcIj5cbiAgICA8cWQtaWNvbiBpY29uPVwiYXJyb3dMZWZ0XCI+PC9xZC1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8bmctY29udGFpbmVyPlxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cIm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLkRlZmF1bHRcIlxuICAgICAgY2xhc3M9XCJjdXJyZW50LW1vbnRoLXllYXJcIlxuICAgICAgKGNsaWNrKT1cImNoYW5nZU1vZGUoUWRDYWxlbmRhck1vZGUuWWVhclBpY2tlcilcIlxuICAgID5cbiAgICAgIHt7IGN1cnJlbnREYXRlLmxvY2FsZShsYW5ndWFnZSkuZm9ybWF0KFwiTU1NTVwiKSB9fSB7eyBjdXJyZW50RGF0ZT8uZm9ybWF0KFwiWVlZWVwiKSB9fVxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyXCJcbiAgICAgIGNsYXNzPVwiY3VycmVudC15ZWFycy1saXN0XCJcbiAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKFFkQ2FsZW5kYXJNb2RlLk1vbnRoUGlja2VyKVwiXG4gICAgPlxuICAgICAge3sgeWVhcnNbMF0gfX0gLSB7eyB5ZWFyc1t5ZWFycy5sZW5ndGggLSAxXSB9fVxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5Nb250aFBpY2tlclwiXG4gICAgICBjbGFzcz1cImN1cnJlbnQteWVhclwiXG4gICAgICAoY2xpY2spPVwiY2hhbmdlTW9kZShRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKVwiXG4gICAgPlxuICAgICAge3sgY3VycmVudERhdGU/LmZvcm1hdChcIllZWVlcIikgfX1cbiAgICA8L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxidXR0b24gKGNsaWNrKT1cIm5leHQoKVwiPlxuICAgIDxxZC1pY29uIGljb249XCJhcnJvd1JpZ2h0XCI+PC9xZC1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48dGFibGUgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5EZWZhdWx0XCI+XG4gIDx0aGVhZD48L3RoZWFkPlxuICA8dGJvZHk+XG4gICAgPHRyPlxuICAgICAgPHRkIGNsYXNzPVwid2Vla2RheVwiICpuZ0Zvcj1cImxldCBuYW1lIG9mIHdlZWtkYXlzXCI+e3sgbmFtZSB9fTwvdGQ+XG4gICAgPC90cj5cbiAgICA8dHIgKm5nRm9yPVwibGV0IHdlZWsgb2Ygd2Vla3NcIj5cbiAgICAgIDx0ZFxuICAgICAgICBjbGFzcz1cImRheSB7eyBkYXkubW9tZW50LmRhdGUoKSB9fVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRheSlcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgdG9kYXk6IGRheS50b2RheSxcbiAgICAgICAgICBzZWxlY3RlZDogZGF5LnNlbGVjdGVkLFxuICAgICAgICAgIGhpZGRlbjogIWlzU2FtZVllYXJNb250aChkYXkubW9tZW50KSxcbiAgICAgICAgICBkaXNhYmxlZDogZGF5LmRpc2FibGVkXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICB7eyBkYXkubW9tZW50LmRhdGUoKSB9fVxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L3Rib2R5PlxuPC90YWJsZT5cblxuPGRpdiBjbGFzcz1cImNhbGVuZGFyXCIgKm5nSWY9XCJtb2RlICE9PSBRZENhbGVuZGFyTW9kZS5EZWZhdWx0XCI+XG4gIDxkaXYgY2xhc3M9XCJwaWNrZXJcIiAqbmdJZj1cIm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLlllYXJQaWNrZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sIHt7IHllYXIgfX1cIiAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImVudHJ5XCIgKGNsaWNrKT1cInNlbGVjdFllYXIoeWVhcilcIiBbbmdDbGFzc109XCJ7IHNlbGVjdGVkOiBpc1NhbWVZZWFyKHllYXIpIH1cIj5cbiAgICAgICAge3sgeWVhciB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJwaWNrZXJcIiAqbmdJZj1cIm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLk1vbnRoUGlja2VyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbCB7eyBtb250aCB9fVwiICpuZ0Zvcj1cImxldCBtb250aCBvZiBtb250aHM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiIChjbGljayk9XCJzZWxlY3RNb250aChpKVwiIFtuZ0NsYXNzXT1cInsgc2VsZWN0ZWQ6IGlzU2FtZU1vbnRoKGkpLCBtb250aCB9XCI+XG4gICAgICAgIHt7IG1vbnRoIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL2RhdGVwaWNrZXIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL2RhdGVwaWNrZXIvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxNQUFrQixNQUFNLFFBQVEsQ0FBQztBQUN4QyxPQUFPLEVBQWlCLGNBQWMsRUFBbUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFeEQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztBQVFyQixNQUFNLE9BQU8sbUJBQW1CO0lBQzlCOzs7O09BSUc7SUFFSCxZQUFZLENBQTZCO0lBRXpDOzs7O09BSUc7SUFFSCxRQUFRLENBQVM7SUFFakI7Ozs7O09BS0c7SUFFSCxhQUFhLENBQW9CO0lBRWpDOztPQUVHO0lBRUgsY0FBYyxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO0lBRWhFLFdBQVcsQ0FBUztJQUNwQixTQUFTLENBQVM7SUFFbEIsUUFBUSxDQUFXO0lBQ25CLEtBQUssR0FBMkIsRUFBRSxDQUFDO0lBQ25DLE1BQU0sQ0FBVztJQUNqQixLQUFLLENBQVc7SUFFaEIsSUFBSSxHQUFtQixjQUFjLENBQUMsT0FBTyxD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QUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO3VHQW5NVSxtQkFBbUI7MkZBQW5CLG1CQUFtQix1TkN6QmhDLHF1RUEyRUE7OzJGRGxEYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNOzhCQVMvQyxZQUFZO3NCQURYLEtBQUs7Z0JBU04sUUFBUTtzQkFEUCxLQUFLO2dCQVVOLGFBQWE7c0JBRFosS0FBSztnQkFPTixjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtc3RyaWN0LWlnbm9yZVxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJhbmdlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFFkQ2FsZW5kYXJEYXksIFFkQ2FsZW5kYXJNb2RlLCBRZERpc2FibGVkRGF0ZXMgfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IFFkRGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVyL2RhdGUtYWRhcHRlcic7XG5cbmNvbnN0IFllYXJzQmVmb3JlID0gOTtcbmNvbnN0IFllYXJzQWZ0ZXIgPSAyO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFFkQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gaGlnaGxpZ2h0IHRoZSBzZWxlY3RlZCBkYXRlIGluIHRoZSBjYWxlbmRhci4gSXQgc2hvdWxkIGJlIGluIHRoZSBmb3JtYXQgZm9yIGV4YW1wbGUgJ0RELk1NLllZWVknIG9yICdNTS9ERC9ZWVlZJyBkZXBlbmRpbmcgb24gdGhlIGxhbmd1YWdlIHVzZWQuXG4gICAqXG4gICAqIEBleGFtcGxlICcyMDIyLTEyLTI1J1xuICAgKi9cbiAgQElucHV0KClcbiAgc2VsZWN0ZWREYXRlOiBRZENhbGVuZGFyRGF5Wydmb3JtYXR0ZWQnXTtcblxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZXRlcm1pbmVzIHRoZSBsYW5ndWFnZSB1c2VkIGZvciBkaXNwbGF5aW5nIHRoZSB3ZWVrZGF5cyBhbmQgZm9ybWF0dGluZyB0aGUgZGF0ZXMgaW4gdGhlIGNhbGVuZGFyLiBJdCBzaG91bGQgYmUgYSB2YWxpZCBsYW5ndWFnZSBjb2RlIHN1cHBvcnRlZCBieSB0aGUgbW9tZW50LmpzIGxpYnJhcnkuXG4gICAqXG4gICAqIEBleGFtcGxlICdkZSdcbiAgICovXG4gIEBJbnB1dCgpXG4gIGxhbmd1YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgZGlzYWJsZXMgdGhlIGdpdmVuIGRhdGUgcmFuZ2VzLlRoZSByYW5nZXMgaGF2ZSBhIFwiZnJvbVwiIGFuZCBcInRvXCIgZGF0ZS5cbiAgICogSWYgXCJmcm9tXCIgaXMgZW1wdHksIGl0IHdpbGwgc2V0IHRoZSBkZWZhdWx0IHZhbHVlIDE5MDBcbiAgICogSWYgXCJ0b1wiIGlzIGVtcHR5LCBpdCB3aWxsIGJlIHNldCB0byB0aGUgZGVmYXVsdCAyMTAwXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICBkaXNhYmxlZERhdGVzOiBRZERpc2FibGVkRGF0ZXNbXTtcblxuICAvKipcbiAgICogT3V0cHV0cyBhIHZhbHVlIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIGRhdGUgaW4gdGhlIGNhbGVuZGFyLiBUaGUgbmV3bHkgc2VsZWN0ZWQgZGF0ZSBpcyBvdXRwdXQgYXMgYSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFFkQ2FsZW5kYXJEYXlbJ2Zvcm1hdHRlZCddPigpO1xuXG4gIGN1cnJlbnREYXRlOiBNb21lbnQ7XG4gIHRvZGF5RGF0ZTogTW9tZW50O1xuXG4gIHdlZWtkYXlzOiBzdHJpbmdbXTtcbiAgd2Vla3M6IEFycmF5PFFkQ2FsZW5kYXJEYXlbXT4gPSBbXTtcbiAgbW9udGhzOiBzdHJpbmdbXTtcbiAgeWVhcnM6IG51bWJlcltdO1xuXG4gIG1vZGU6IFFkQ2FsZW5kYXJNb2RlID0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdDtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgUWRDYWxlbmRhck1vZGUgPSBRZENhbGVuZGFyTW9kZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBtb21lbnQubG9jYWxlKHRoaXMubGFuZ3VhZ2UpO1xuXG4gICAgdGhpcy5zZXRXZWVrZGF5cygpO1xuICAgIHRoaXMudG9kYXlEYXRlID0gbW9tZW50KCk7XG5cbiAgICB0aGlzLm1vbnRocyA9IG1vbWVudC5tb250aHMoKTtcbiAgICB0aGlzLnllYXJzID0gdGhpcy5nZXRZZWFycyhcbiAgICAgIChRZERhdGVBZGFwdGVyLnBhcnNlVG9Nb21lbnQodGhpcy5zZWxlY3RlZERhdGUpPy5pc1ZhbGlkKClcbiAgICAgICAgPyBtb21lbnQodGhpcy5zZWxlY3RlZERhdGUsICdMJywgdGhpcy5sYW5ndWFnZSlcbiAgICAgICAgOiB0aGlzLnRvZGF5RGF0ZVxuICAgICAgKS55ZWFyKClcbiAgICApO1xuXG4gICAgdGhpcy5zZXRDdXJyZW50RGF0ZSgpO1xuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcih0aGlzLmN1cnJlbnREYXRlKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snbGFuZ3VhZ2UnXSkge1xuICAgICAgbW9tZW50LmxvY2FsZSh0aGlzLmxhbmd1YWdlKTtcbiAgICAgIHRoaXMuc2V0V2Vla2RheXMoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkRGF0ZXMnXSAmJiAhY2hhbmdlc1snZGlzYWJsZWREYXRlcyddLmlzRmlyc3RDaGFuZ2UoKSkgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICB9XG5cbiAgaXNTYW1lWWVhck1vbnRoKGRheTogTW9tZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRheS5pc1NhbWUodGhpcy5jdXJyZW50RGF0ZSwgJ21vbnRoJyk7XG4gIH1cblxuICBpc1NhbWVNb250aChtb250aCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnREYXRlLm1vbnRoKCkgPT09IG1vbnRoO1xuICB9XG5cbiAgaXNTYW1lWWVhcih5ZWFyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gUWREYXRlQWRhcHRlci5wYXJzZVRvTW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlKS55ZWFyKCkgPT09IHllYXI7XG4gIH1cblxuICBwcmV2KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLkRlZmF1bHQpIHtcbiAgICAgIHRoaXMuY3VycmVudERhdGUuc3VidHJhY3QoMSwgJ21vbnRocycpO1xuICAgICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHRoaXMuY3VycmVudERhdGUueWVhcigpIC0gKFllYXJzQmVmb3JlICsgWWVhcnNBZnRlciArIDEpKTtcbiAgICAgIHRoaXMueWVhcnMgPSB0aGlzLmdldFllYXJzKHRoaXMuY3VycmVudERhdGUueWVhcigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXQoJ3llYXInLCB0aGlzLmN1cnJlbnREYXRlLnllYXIoKSAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIG5leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdCkge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5hZGQoMSwgJ21vbnRocycpO1xuICAgICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKHRoaXMuY3VycmVudERhdGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKSB7XG4gICAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHRoaXMuY3VycmVudERhdGUueWVhcigpICsgKFllYXJzQmVmb3JlICsgWWVhcnNBZnRlciArIDEpKTtcbiAgICAgIHRoaXMueWVhcnMgPSB0aGlzLmdldFllYXJzKHRoaXMuY3VycmVudERhdGUueWVhcigpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXQoJ3llYXInLCB0aGlzLmN1cnJlbnREYXRlLnllYXIoKSArIDEpO1xuICAgIH1cbiAgfVxuXG4gIGlzU2VsZWN0ZWQobW9tZW50T2JqOiBNb21lbnQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gUWREYXRlQWRhcHRlci5mb3JtYXRUb0xvY2FsaXplZERhdGVTdHJpbmcobW9tZW50T2JqKSA9PT0gdGhpcy5zZWxlY3RlZERhdGU7XG4gIH1cblxuICBzZWxlY3REYXRlKGRhdGU6IFFkQ2FsZW5kYXJEYXkgfCBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoZGF0ZS5mb3JtYXR0ZWQpO1xuICB9XG5cbiAgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnREYXRlLnNldCgneWVhcicsIHllYXIpO1xuICAgIHRoaXMubW9kZSA9IFFkQ2FsZW5kYXJNb2RlLk1vbnRoUGlja2VyO1xuICB9XG5cbiAgc2VsZWN0TW9udGgobW9udGg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudERhdGUuc2V0KCdtb250aCcsIG1vbnRoKTtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIodGhpcy5jdXJyZW50RGF0ZSk7XG4gICAgdGhpcy5tb2RlID0gUWRDYWxlbmRhck1vZGUuRGVmYXVsdDtcbiAgfVxuXG4gIGNoYW5nZU1vZGUobnI6IFFkQ2FsZW5kYXJNb2RlKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlID0gbnI7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FsZW5kYXIobW9tZW50T2JqOiBNb21lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlcyA9IHRoaXMuZmlsbERhdGVzKG1vbWVudE9iaik7XG4gICAgdGhpcy53ZWVrcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IE1hdGguY2VpbChkYXRlcy5sZW5ndGggLyA3KSB9LCAoKSA9PiBkYXRlcy5zcGxpY2UoMCwgNykpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsRGF0ZXMobW9tZW50T2JqOiBNb21lbnQpOiBRZENhbGVuZGFyRGF5W10ge1xuICAgIGNvbnN0IGZpcnN0RGF5T2ZHcmlkID0gbW9tZW50KG1vbWVudE9iaikubG9jYWxlKHRoaXMubGFuZ3VhZ2UpLnN0YXJ0T2YoJ21vbnRoJykuc3RhcnRPZignaXNvV2VlaycpO1xuICAgIGNvbnN0IGxhc3REYXlPZkdyaWQgPSBtb21lbnQobW9tZW50T2JqKS5lbmRPZignbW9udGgnKS5lbmRPZignaXNvV2VlaycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnRDYWxlbmRhciA9IGZpcnN0RGF5T2ZHcmlkLmRhdGUoKTtcblxuICAgIHJldHVybiByYW5nZShzdGFydENhbGVuZGFyLCBzdGFydENhbGVuZGFyICsgbGFzdERheU9mR3JpZC5kaWZmKGZpcnN0RGF5T2ZHcmlkLCAnZGF5cycpKS5tYXAoZGF0ZSA9PiB7XG4gICAgICBjb25zdCBuZXdEYXRlID0gbW9tZW50KGZpcnN0RGF5T2ZHcmlkKS5kYXRlKGRhdGUpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmb3JtYXR0ZWQ6IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9Mb2NhbGl6ZWREYXRlU3RyaW5nKG5ld0RhdGUpLFxuICAgICAgICBtb21lbnQ6IG5ld0RhdGUsXG4gICAgICAgIHNlbGVjdGVkOiB0aGlzLmlzU2VsZWN0ZWQobmV3RGF0ZSksXG4gICAgICAgIHRvZGF5OiB0aGlzLmlzVG9kYXkobmV3RGF0ZSksXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLmlzRGlzYWJsZWQobmV3RGF0ZSlcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzVG9kYXkobW9tZW50T2JqOiBNb21lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b2RheURhdGUuaXNTYW1lKG1vbWVudE9iaiwgJ2RheScpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDdXJyZW50RGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50RGF0ZTogTW9tZW50ID0gKHRoaXMuY3VycmVudERhdGUgPSBRZERhdGVBZGFwdGVyLnBhcnNlVG9Nb21lbnQodGhpcy5zZWxlY3RlZERhdGUpPy5pc1ZhbGlkKClcbiAgICAgID8gbW9tZW50KHRoaXMuc2VsZWN0ZWREYXRlLCAnTCcsICdkZScpXG4gICAgICA6IHRoaXMudG9kYXlEYXRlKTtcblxuICAgIHRoaXMuY3VycmVudERhdGUgPSBjdXJyZW50RGF0ZTtcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9Mb2NhbGl6ZWREYXRlU3RyaW5nKGN1cnJlbnREYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0WWVhcnMoeWVhcjogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHllYXJzQmVmb3JlID0gWWVhcnNCZWZvcmU7XG4gICAgY29uc3QgeWVhcnNBZnRlciA9IFllYXJzQWZ0ZXI7XG4gICAgY29uc3QgcmVzdWx0OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IHllYXIgLSB5ZWFyc0JlZm9yZTsgaSA8PSB5ZWFyICsgeWVhcnNBZnRlcjsgaSsrKSB7XG4gICAgICByZXN1bHQucHVzaChpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0Rpc2FibGVkKGRhdGU6IE1vbWVudCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZERhdGVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWREYXRlcy5zb21lKGRpc2FibGVkRGF0ZSA9PiB7XG4gICAgICBsZXQgZnJvbURhdGUgPSBtb21lbnQoZGlzYWJsZWREYXRlLmZyb20pO1xuICAgICAgbGV0IHRvRGF0ZSA9IG1vbWVudChkaXNhYmxlZERhdGUudG8pO1xuICAgICAgaWYgKCFkaXNhYmxlZERhdGUuZnJvbSkgZnJvbURhdGUgPSBtb21lbnQoJzE5MDAtMDEtMDFUMDA6MDA6MDAuMDAwWicpO1xuICAgICAgaWYgKCFkaXNhYmxlZERhdGUudG8pIHRvRGF0ZSA9IG1vbWVudCgnMjEwMC0wMS0wMVQwMDowMDowMC4wMDBaJyk7XG5cbiAgICAgIHJldHVybiBkYXRlLmlzQWZ0ZXIoZnJvbURhdGUsICdkYXknKSAmJiBkYXRlLmlzQmVmb3JlKHRvRGF0ZSwgJ2RheScpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRXZWVrZGF5cygpOiB2b2lkIHtcbiAgICBjb25zdCB3ID0gbW9tZW50LmxvY2FsZURhdGEodGhpcy5sYW5ndWFnZSkud2Vla2RheXNNaW4oKTtcblxuICAgIHRoaXMud2Vla2RheXMgPSB3LnNsaWNlKDEpLmNvbmNhdCh3WzBdKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm5hdlwiPlxuICA8YnV0dG9uIChjbGljayk9XCJwcmV2KClcIj5cbiAgICA8cWQtaWNvbiBpY29uPVwiYXJyb3dMZWZ0XCI+PC9xZC1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8bmctY29udGFpbmVyPlxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cIm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLkRlZmF1bHRcIlxuICAgICAgY2xhc3M9XCJjdXJyZW50LW1vbnRoLXllYXJcIlxuICAgICAgKGNsaWNrKT1cImNoYW5nZU1vZGUoUWRDYWxlbmRhck1vZGUuWWVhclBpY2tlcilcIlxuICAgID5cbiAgICAgIHt7IGN1cnJlbnREYXRlLmxvY2FsZShsYW5ndWFnZSkuZm9ybWF0KFwiTU1NTVwiKSB9fSB7eyBjdXJyZW50RGF0ZT8uZm9ybWF0KFwiWVlZWVwiKSB9fVxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyXCJcbiAgICAgIGNsYXNzPVwiY3VycmVudC15ZWFycy1saXN0XCJcbiAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKFFkQ2FsZW5kYXJNb2RlLk1vbnRoUGlja2VyKVwiXG4gICAgPlxuICAgICAge3sgeWVhcnNbMF0gfX0gLSB7eyB5ZWFyc1t5ZWFycy5sZW5ndGggLSAxXSB9fVxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5Nb250aFBpY2tlclwiXG4gICAgICBjbGFzcz1cImN1cnJlbnQteWVhclwiXG4gICAgICAoY2xpY2spPVwiY2hhbmdlTW9kZShRZENhbGVuZGFyTW9kZS5ZZWFyUGlja2VyKVwiXG4gICAgPlxuICAgICAge3sgY3VycmVudERhdGU/LmZvcm1hdChcIllZWVlcIikgfX1cbiAgICA8L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxidXR0b24gKGNsaWNrKT1cIm5leHQoKVwiPlxuICAgIDxxZC1pY29uIGljb249XCJhcnJvd1JpZ2h0XCI+PC9xZC1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48dGFibGUgKm5nSWY9XCJtb2RlID09PSBRZENhbGVuZGFyTW9kZS5EZWZhdWx0XCI+XG4gIDx0aGVhZD48L3RoZWFkPlxuICA8dGJvZHk+XG4gICAgPHRyPlxuICAgICAgPHRkIGNsYXNzPVwid2Vla2RheVwiICpuZ0Zvcj1cImxldCBuYW1lIG9mIHdlZWtkYXlzXCI+e3sgbmFtZSB9fTwvdGQ+XG4gICAgPC90cj5cbiAgICA8dHIgKm5nRm9yPVwibGV0IHdlZWsgb2Ygd2Vla3NcIj5cbiAgICAgIDx0ZFxuICAgICAgICBjbGFzcz1cImRheSB7eyBkYXkubW9tZW50LmRhdGUoKSB9fVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRheSlcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgdG9kYXk6IGRheS50b2RheSxcbiAgICAgICAgICBzZWxlY3RlZDogZGF5LnNlbGVjdGVkLFxuICAgICAgICAgIGhpZGRlbjogIWlzU2FtZVllYXJNb250aChkYXkubW9tZW50KSxcbiAgICAgICAgICBkaXNhYmxlZDogZGF5LmRpc2FibGVkXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICB7eyBkYXkubW9tZW50LmRhdGUoKSB9fVxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L3Rib2R5PlxuPC90YWJsZT5cblxuPGRpdiBjbGFzcz1cImNhbGVuZGFyXCIgKm5nSWY9XCJtb2RlICE9PSBRZENhbGVuZGFyTW9kZS5EZWZhdWx0XCI+XG4gIDxkaXYgY2xhc3M9XCJwaWNrZXJcIiAqbmdJZj1cIm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLlllYXJQaWNrZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sIHt7IHllYXIgfX1cIiAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImVudHJ5XCIgKGNsaWNrKT1cInNlbGVjdFllYXIoeWVhcilcIiBbbmdDbGFzc109XCJ7IHNlbGVjdGVkOiBpc1NhbWVZZWFyKHllYXIpIH1cIj5cbiAgICAgICAge3sgeWVhciB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJwaWNrZXJcIiAqbmdJZj1cIm1vZGUgPT09IFFkQ2FsZW5kYXJNb2RlLk1vbnRoUGlja2VyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbCB7eyBtb250aCB9fVwiICpuZ0Zvcj1cImxldCBtb250aCBvZiBtb250aHM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiIChjbGljayk9XCJzZWxlY3RNb250aChpKVwiIFtuZ0NsYXNzXT1cInsgc2VsZWN0ZWQ6IGlzU2FtZU1vbnRoKGkpLCBtb250aCB9XCI+XG4gICAgICAgIHt7IG1vbnRoIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -10564,7 +10564,7 @@ class QdCalendarComponent {
|
|
|
10564
10564
|
QdCalendarMode = QdCalendarMode;
|
|
10565
10565
|
ngOnInit() {
|
|
10566
10566
|
moment.locale(this.language);
|
|
10567
|
-
this.
|
|
10567
|
+
this.setWeekdays();
|
|
10568
10568
|
this.todayDate = moment();
|
|
10569
10569
|
this.months = moment.months();
|
|
10570
10570
|
this.years = this.getYears((QdDateAdapter.parseToMoment(this.selectedDate)?.isValid()
|
|
@@ -10574,8 +10574,10 @@ class QdCalendarComponent {
|
|
|
10574
10574
|
this.generateCalendar(this.currentDate);
|
|
10575
10575
|
}
|
|
10576
10576
|
ngOnChanges(changes) {
|
|
10577
|
-
if (changes['language'])
|
|
10577
|
+
if (changes['language']) {
|
|
10578
10578
|
moment.locale(this.language);
|
|
10579
|
+
this.setWeekdays();
|
|
10580
|
+
}
|
|
10579
10581
|
if (changes['disabledDates'] && !changes['disabledDates'].isFirstChange())
|
|
10580
10582
|
this.generateCalendar(this.currentDate);
|
|
10581
10583
|
}
|
|
@@ -10639,9 +10641,8 @@ class QdCalendarComponent {
|
|
|
10639
10641
|
this.weeks = Array.from({ length: Math.ceil(dates.length / 7) }, () => dates.splice(0, 7));
|
|
10640
10642
|
}
|
|
10641
10643
|
fillDates(momentObj) {
|
|
10642
|
-
const
|
|
10643
|
-
const
|
|
10644
|
-
const lastDayOfGrid = moment(momentObj).endOf('month').subtract(lastOfMonth, 'days').add(7, 'days');
|
|
10644
|
+
const firstDayOfGrid = moment(momentObj).locale(this.language).startOf('month').startOf('isoWeek');
|
|
10645
|
+
const lastDayOfGrid = moment(momentObj).endOf('month').endOf('isoWeek').add(1, 'day');
|
|
10645
10646
|
const startCalendar = firstDayOfGrid.date();
|
|
10646
10647
|
return range(startCalendar, startCalendar + lastDayOfGrid.diff(firstDayOfGrid, 'days')).map(date => {
|
|
10647
10648
|
const newDate = moment(firstDayOfGrid).date(date);
|
|
@@ -10686,6 +10687,10 @@ class QdCalendarComponent {
|
|
|
10686
10687
|
return date.isAfter(fromDate, 'day') && date.isBefore(toDate, 'day');
|
|
10687
10688
|
});
|
|
10688
10689
|
}
|
|
10690
|
+
setWeekdays() {
|
|
10691
|
+
const w = moment.localeData(this.language).weekdaysMin();
|
|
10692
|
+
this.weekdays = w.slice(1).concat(w[0]);
|
|
10693
|
+
}
|
|
10689
10694
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10690
10695
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: QdCalendarComponent, selector: "qd-calendar", inputs: { selectedDate: "selectedDate", language: "language", disabledDates: "disabledDates" }, outputs: { selectedChange: "selectedChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"nav\">\n <button (click)=\"prev()\">\n <qd-icon icon=\"arrowLeft\"></qd-icon>\n </button>\n\n <ng-container>\n <span\n *ngIf=\"mode === QdCalendarMode.Default\"\n class=\"current-month-year\"\n (click)=\"changeMode(QdCalendarMode.YearPicker)\"\n >\n {{ currentDate.locale(language).format(\"MMMM\") }} {{ currentDate?.format(\"YYYY\") }}\n </span>\n <span\n *ngIf=\"mode === QdCalendarMode.YearPicker\"\n class=\"current-years-list\"\n (click)=\"changeMode(QdCalendarMode.MonthPicker)\"\n >\n {{ years[0] }} - {{ years[years.length - 1] }}\n </span>\n <span\n *ngIf=\"mode === QdCalendarMode.MonthPicker\"\n class=\"current-year\"\n (click)=\"changeMode(QdCalendarMode.YearPicker)\"\n >\n {{ currentDate?.format(\"YYYY\") }}\n </span>\n </ng-container>\n\n <button (click)=\"next()\">\n <qd-icon icon=\"arrowRight\"></qd-icon>\n </button>\n</div>\n\n<table *ngIf=\"mode === QdCalendarMode.Default\">\n <thead></thead>\n <tbody>\n <tr>\n <td class=\"weekday\" *ngFor=\"let name of weekdays\">{{ name }}</td>\n </tr>\n <tr *ngFor=\"let week of weeks\">\n <td\n class=\"day {{ day.moment.date() }}\"\n *ngFor=\"let day of week\"\n (click)=\"selectDate(day)\"\n [ngClass]=\"{\n today: day.today,\n selected: day.selected,\n hidden: !isSameYearMonth(day.moment),\n disabled: day.disabled\n }\"\n >\n {{ day.moment.date() }}\n </td>\n </tr>\n </tbody>\n</table>\n\n<div class=\"calendar\" *ngIf=\"mode !== QdCalendarMode.Default\">\n <div class=\"picker\" *ngIf=\"mode === QdCalendarMode.YearPicker\">\n <div class=\"col {{ year }}\" *ngFor=\"let year of years\">\n <div class=\"entry\" (click)=\"selectYear(year)\" [ngClass]=\"{ selected: isSameYear(year) }\">\n {{ year }}\n </div>\n </div>\n </div>\n\n <div class=\"picker\" *ngIf=\"mode === QdCalendarMode.MonthPicker\">\n <div class=\"col {{ month }}\" *ngFor=\"let month of months; let i = index\">\n <div class=\"entry\" (click)=\"selectMonth(i)\" [ngClass]=\"{ selected: isSameMonth(i), month }\">\n {{ month }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".nav{color:#171717;font-size:1rem;font-weight:700;line-height:1.5rem;display:grid;margin:.75rem;grid-template-columns:[next] 2rem [monthyear] auto [prev] 2rem [end];text-transform:capitalize}.nav span{line-height:2.5rem;text-align:center}.nav .current-month-year,.nav .current-years-list,.nav .current-year{cursor:pointer}tbody{display:inherit;margin:.75rem}td{color:#171717;font-size:.875rem;font-weight:400;line-height:1.3125rem;min-width:2.5625rem;padding:.4375rem;text-align:center;text-transform:capitalize}td.disabled{color:#d5d5d5;pointer-events:none}td.hidden{opacity:0;pointer-events:none}td.today{box-shadow:0 0 0 .125rem #d5d5d5 inset}td.selected,td.day:hover{background:#d5d5d5;cursor:pointer}.picker{display:flex;width:100%;flex-wrap:wrap;padding:.75rem}.picker .col{flex:0 0 33.33%;padding:.5rem .25rem}.picker .entry{padding:.4375rem;background:#d5d5d5;cursor:pointer;text-align:center}.picker .entry.selected,.picker .entry:hover{background:gray}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: QdIconComponent, selector: "qd-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10691
10696
|
}
|