UNPKG

@taiga-ui/core

Version:

Core library for creating Angular components and applications using Taiga UI

54 lines 7.83 kB
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=