@taiga-ui/core
Version:
Core library for creating Angular components and applications using Taiga UI
54 lines • 7.83 kB
JavaScript
import { inject, Pipe } from '@angular/core';
import { DAYS_IN_WEEK } from '@taiga-ui/cdk/date-time';
import { TUI_FIRST_DAY_OF_WEEK } from '@taiga-ui/core/tokens';
import { getDayFromMonthRowCol } from './utils';
import * as i0 from "@angular/core";
const CALENDAR_ROWS_COUNT = 6;
class TuiCalendarSheetPipe {
constructor() {
this.firstDayOfWeek = inject(TUI_FIRST_DAY_OF_WEEK);
this.currentMonth = null;
this.currentSheet = [];
}
transform(month, showAdjacentDays = false) {
if (this.currentMonth?.monthSame(month)) {
return this.currentSheet;
}
const sheet = [];
for (let rowIndex = 0; rowIndex < CALENDAR_ROWS_COUNT; rowIndex++) {
const row = [];
for (let colIndex = 0; colIndex < DAYS_IN_WEEK; colIndex++) {
const day = getDayFromMonthRowCol({
month,
rowIndex,
colIndex,
firstDayOfWeek: this.firstDayOfWeek,
});
const isPrevMonthDay = (day, relativeToMonth = month) => day.year < relativeToMonth.year || day.month < relativeToMonth.month;
const isNextMonthDay = (day, relativeToMonth = month) => day.year > relativeToMonth.year || day.month > relativeToMonth.month;
if (isPrevMonthDay(day) && !showAdjacentDays) {
continue;
}
if (isNextMonthDay(day) && !showAdjacentDays) {
break;
}
row.push(day);
}
sheet.push(row);
}
this.currentSheet = sheet.filter((row) => row.length);
this.currentMonth = month;
return this.currentSheet;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCalendarSheetPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: TuiCalendarSheetPipe, isStandalone: true, name: "tuiCalendarSheet" }); }
}
export { TuiCalendarSheetPipe };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCalendarSheetPipe, decorators: [{
type: Pipe,
args: [{
standalone: true,
name: 'tuiCalendarSheet',
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItc2hlZXQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvcGlwZXMvY2FsZW5kYXItc2hlZXQvY2FsZW5kYXItc2hlZXQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFDLFlBQVksRUFBNkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxTQUFTLENBQUM7O0FBRTlDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBRTlCLE1BSWEsb0JBQW9CO0lBSmpDO1FBS3FCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDeEQsaUJBQVksR0FBb0IsSUFBSSxDQUFDO1FBQ3JDLGlCQUFZLEdBQXFDLEVBQUUsQ0FBQztLQWdEL0Q7SUE5Q1UsU0FBUyxDQUNaLEtBQWUsRUFDZixnQkFBZ0IsR0FBRyxLQUFLO1FBRXhCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzVCO1FBRUQsTUFBTSxLQUFLLEdBQTZCLEVBQUUsQ0FBQztRQUUzQyxLQUFLLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDL0QsTUFBTSxHQUFHLEdBQWEsRUFBRSxDQUFDO1lBRXpCLEtBQUssSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUU7Z0JBQ3hELE1BQU0sR0FBRyxHQUFHLHFCQUFxQixDQUFDO29CQUM5QixLQUFLO29CQUNMLFFBQVE7b0JBQ1IsUUFBUTtvQkFDUixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7aUJBQ3RDLENBQUMsQ0FBQztnQkFFSCxNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQVcsRUFBRSxlQUFlLEdBQUcsS0FBSyxFQUFXLEVBQUUsQ0FDckUsR0FBRyxDQUFDLElBQUksR0FBRyxlQUFlLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztnQkFFekUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFXLEVBQUUsZUFBZSxHQUFHLEtBQUssRUFBVyxFQUFFLENBQ3JFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUM7Z0JBRXpFLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7b0JBQzFDLFNBQVM7aUJBQ1o7Z0JBRUQsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtvQkFDMUMsTUFBTTtpQkFDVDtnQkFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pCO1lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNuQjtRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBRTFCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDOytHQWxEUSxvQkFBb0I7NkdBQXBCLG9CQUFvQjs7U0FBcEIsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBSmhDLElBQUk7bUJBQUM7b0JBQ0YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSxrQkFBa0I7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3QsIFBpcGUsIHR5cGUgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RBWVNfSU5fV0VFSywgdHlwZSBUdWlEYXksIHR5cGUgVHVpTW9udGh9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7VFVJX0ZJUlNUX0RBWV9PRl9XRUVLfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuXG5pbXBvcnQge2dldERheUZyb21Nb250aFJvd0NvbH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IENBTEVOREFSX1JPV1NfQ09VTlQgPSA2O1xuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAndHVpQ2FsZW5kYXJTaGVldCcsXG59KVxuZXhwb3J0IGNsYXNzIFR1aUNhbGVuZGFyU2hlZXRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmaXJzdERheU9mV2VlayA9IGluamVjdChUVUlfRklSU1RfREFZX09GX1dFRUspO1xuICAgIHByaXZhdGUgY3VycmVudE1vbnRoOiBUdWlNb250aCB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgY3VycmVudFNoZWV0OiBSZWFkb25seUFycmF5PHJlYWRvbmx5IFR1aURheVtdPiA9IFtdO1xuXG4gICAgcHVibGljIHRyYW5zZm9ybShcbiAgICAgICAgbW9udGg6IFR1aU1vbnRoLFxuICAgICAgICBzaG93QWRqYWNlbnREYXlzID0gZmFsc2UsXG4gICAgKTogUmVhZG9ubHlBcnJheTxyZWFkb25seSBUdWlEYXlbXT4ge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50TW9udGg/Lm1vbnRoU2FtZShtb250aCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRTaGVldDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNoZWV0OiBBcnJheTxyZWFkb25seSBUdWlEYXlbXT4gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgQ0FMRU5EQVJfUk9XU19DT1VOVDsgcm93SW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3Qgcm93OiBUdWlEYXlbXSA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBjb2xJbmRleCA9IDA7IGNvbEluZGV4IDwgREFZU19JTl9XRUVLOyBjb2xJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF5ID0gZ2V0RGF5RnJvbU1vbnRoUm93Q29sKHtcbiAgICAgICAgICAgICAgICAgICAgbW9udGgsXG4gICAgICAgICAgICAgICAgICAgIHJvd0luZGV4LFxuICAgICAgICAgICAgICAgICAgICBjb2xJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgZmlyc3REYXlPZldlZWs6IHRoaXMuZmlyc3REYXlPZldlZWssXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc1ByZXZNb250aERheSA9IChkYXk6IFR1aURheSwgcmVsYXRpdmVUb01vbnRoID0gbW9udGgpOiBib29sZWFuID0+XG4gICAgICAgICAgICAgICAgICAgIGRheS55ZWFyIDwgcmVsYXRpdmVUb01vbnRoLnllYXIgfHwgZGF5Lm1vbnRoIDwgcmVsYXRpdmVUb01vbnRoLm1vbnRoO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNOZXh0TW9udGhEYXkgPSAoZGF5OiBUdWlEYXksIHJlbGF0aXZlVG9Nb250aCA9IG1vbnRoKTogYm9vbGVhbiA9PlxuICAgICAgICAgICAgICAgICAgICBkYXkueWVhciA+IHJlbGF0aXZlVG9Nb250aC55ZWFyIHx8IGRheS5tb250aCA+IHJlbGF0aXZlVG9Nb250aC5tb250aDtcblxuICAgICAgICAgICAgICAgIGlmIChpc1ByZXZNb250aERheShkYXkpICYmICFzaG93QWRqYWNlbnREYXlzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpc05leHRNb250aERheShkYXkpICYmICFzaG93QWRqYWNlbnREYXlzKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJvdy5wdXNoKGRheSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNoZWV0LnB1c2gocm93KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudFNoZWV0ID0gc2hlZXQuZmlsdGVyKChyb3cpID0+IHJvdy5sZW5ndGgpO1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aCA9IG1vbnRoO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRTaGVldDtcbiAgICB9XG59XG4iXX0=