UNPKG

@bimeister/pupakit.calendar

Version:
52 lines 9.41 kB
import { Pipe } from '@angular/core'; import { DayOfWeek } from '../declarations/enums/day-of-week.enum'; import { getDayPositionInDateRange } from '../declarations/functions/get-day-position-in-date-range.function'; import { getDaysCountInMonth } from '../declarations/functions/get-days-count-in-month.function'; import { getWeekdayIndex } from '../declarations/functions/get-weekday-index.function'; import { getWeekdayRelativeToNewWeekStart } from '../declarations/functions/get-weekday-relative-to-new-week-start.function'; import { isLeapYear } from '../declarations/functions/is-leap-year.function'; import '../declarations/interfaces/calendar-day.interface'; import '../declarations/interfaces/calendar-month.interface'; import '../declarations/types/day-position-in-date-range.type'; import { CalendarConfigService } from '../services/calendar-config.service'; import * as i0 from "@angular/core"; import * as i1 from "../services/calendar-config.service"; export class IsEmptyDayInDateRangePipe { constructor(calendarConfigService) { this.startWeekday = calendarConfigService.startWeekday; } transform(dayIndex, calendarMonth, selectedDates) { const { year, month } = calendarMonth; if (selectedDates.length !== 2) { return false; } const defaultMonthStart = getWeekdayIndex(year, month, 1); const relativeMonthStart = getWeekdayRelativeToNewWeekStart(defaultMonthStart, DayOfWeek.Sunday, this.startWeekday); const isEmptyAtBegin = dayIndex < relativeMonthStart; const firstMonthDay = { year, month, day: 1 }; const firstMonthDayPosition = getDayPositionInDateRange(firstMonthDay, selectedDates); const firstMonthDayIsNotFirst = ['last', 'inside'].includes(firstMonthDayPosition); if (isEmptyAtBegin && firstMonthDayIsNotFirst) { return true; } const daysCount = getDaysCountInMonth(month, isLeapYear(year)); const isEmptyAtEnd = dayIndex + 1 >= relativeMonthStart + daysCount; const lastMonthDay = { year, month, day: daysCount }; const lastMonthDayPosition = getDayPositionInDateRange(lastMonthDay, selectedDates); const lastMonthDayIsNotLast = ['first', 'inside'].includes(lastMonthDayPosition); if (isEmptyAtEnd && lastMonthDayIsNotLast) { return true; } return false; } } IsEmptyDayInDateRangePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: IsEmptyDayInDateRangePipe, deps: [{ token: i1.CalendarConfigService }], target: i0.ɵɵFactoryTarget.Pipe }); IsEmptyDayInDateRangePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: IsEmptyDayInDateRangePipe, name: "isEmptyDayInDateRange" }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: IsEmptyDayInDateRangePipe, decorators: [{ type: Pipe, args: [{ name: 'isEmptyDayInDateRange', pure: true, }] }], ctorParameters: function () { return [{ type: i1.CalendarConfigService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZW1wdHktZGF5LWluLWRhdGUtcmFuZ2UucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9waXBlcy9pcy1lbXB0eS1kYXktaW4tZGF0ZS1yYW5nZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDdkYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFDN0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzdFLE9BQTRCLG1EQUFtRCxDQUFDO0FBQ2hGLE9BQThCLHFEQUFxRCxDQUFDO0FBQ3BGLE9BQXVDLHVEQUF1RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7QUFNNUUsTUFBTSxPQUFPLHlCQUF5QjtJQUdwQyxZQUFZLHFCQUE0QztRQUN0RCxJQUFJLENBQUMsWUFBWSxHQUFHLHFCQUFxQixDQUFDLFlBQVksQ0FBQztJQUN6RCxDQUFDO0lBRU0sU0FBUyxDQUFDLFFBQWdCLEVBQUUsYUFBNEIsRUFBRSxhQUFxQjtRQUNwRixNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFrQixhQUFhLENBQUM7UUFFckQsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM5QixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsTUFBTSxpQkFBaUIsR0FBYyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRSxNQUFNLGtCQUFrQixHQUFjLGdDQUFnQyxDQUNwRSxpQkFBaUIsRUFDakIsU0FBUyxDQUFDLE1BQU0sRUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FDbEIsQ0FBQztRQUVGLE1BQU0sY0FBYyxHQUFZLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQztRQUM5RCxNQUFNLGFBQWEsR0FBZ0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMzRCxNQUFNLHFCQUFxQixHQUEyQix5QkFBeUIsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDOUcsTUFBTSx1QkFBdUIsR0FBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUU1RixJQUFJLGNBQWMsSUFBSSx1QkFBdUIsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxTQUFTLEdBQVcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sWUFBWSxHQUFZLFFBQVEsR0FBRyxDQUFDLElBQUksa0JBQWtCLEdBQUcsU0FBUyxDQUFDO1FBQzdFLE1BQU0sWUFBWSxHQUFnQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ2xFLE1BQU0sb0JBQW9CLEdBQTJCLHlCQUF5QixDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUM1RyxNQUFNLHFCQUFxQixHQUFZLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTFGLElBQUksWUFBWSxJQUFJLHFCQUFxQixFQUFFO1lBQ3pDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7O3VIQXpDVSx5QkFBeUI7cUhBQXpCLHlCQUF5Qjs0RkFBekIseUJBQXlCO2tCQUpyQyxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSx1QkFBdUI7b0JBQzdCLElBQUksRUFBRSxJQUFJO2lCQUNYIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF5T2ZXZWVrIH0gZnJvbSAnLi4vZGVjbGFyYXRpb25zL2VudW1zL2RheS1vZi13ZWVrLmVudW0nO1xuaW1wb3J0IHsgZ2V0RGF5UG9zaXRpb25JbkRhdGVSYW5nZSB9IGZyb20gJy4uL2RlY2xhcmF0aW9ucy9mdW5jdGlvbnMvZ2V0LWRheS1wb3NpdGlvbi1pbi1kYXRlLXJhbmdlLmZ1bmN0aW9uJztcbmltcG9ydCB7IGdldERheXNDb3VudEluTW9udGggfSBmcm9tICcuLi9kZWNsYXJhdGlvbnMvZnVuY3Rpb25zL2dldC1kYXlzLWNvdW50LWluLW1vbnRoLmZ1bmN0aW9uJztcbmltcG9ydCB7IGdldFdlZWtkYXlJbmRleCB9IGZyb20gJy4uL2RlY2xhcmF0aW9ucy9mdW5jdGlvbnMvZ2V0LXdlZWtkYXktaW5kZXguZnVuY3Rpb24nO1xuaW1wb3J0IHsgZ2V0V2Vla2RheVJlbGF0aXZlVG9OZXdXZWVrU3RhcnQgfSBmcm9tICcuLi9kZWNsYXJhdGlvbnMvZnVuY3Rpb25zL2dldC13ZWVrZGF5LXJlbGF0aXZlLXRvLW5ldy13ZWVrLXN0YXJ0LmZ1bmN0aW9uJztcbmltcG9ydCB7IGlzTGVhcFllYXIgfSBmcm9tICcuLi9kZWNsYXJhdGlvbnMvZnVuY3Rpb25zL2lzLWxlYXAteWVhci5mdW5jdGlvbic7XG5pbXBvcnQgeyBDYWxlbmRhckRheSB9IGZyb20gJy4uL2RlY2xhcmF0aW9ucy9pbnRlcmZhY2VzL2NhbGVuZGFyLWRheS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2FsZW5kYXJNb250aCB9IGZyb20gJy4uL2RlY2xhcmF0aW9ucy9pbnRlcmZhY2VzL2NhbGVuZGFyLW1vbnRoLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXlQb3NpdGlvbkluRGF0ZVJhbmdlIH0gZnJvbSAnLi4vZGVjbGFyYXRpb25zL3R5cGVzL2RheS1wb3NpdGlvbi1pbi1kYXRlLXJhbmdlLnR5cGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2FsZW5kYXItY29uZmlnLnNlcnZpY2UnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdpc0VtcHR5RGF5SW5EYXRlUmFuZ2UnLFxuICBwdXJlOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBJc0VtcHR5RGF5SW5EYXRlUmFuZ2VQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhcnRXZWVrZGF5OiBEYXlPZldlZWs7XG5cbiAgY29uc3RydWN0b3IoY2FsZW5kYXJDb25maWdTZXJ2aWNlOiBDYWxlbmRhckNvbmZpZ1NlcnZpY2UpIHtcbiAgICB0aGlzLnN0YXJ0V2Vla2RheSA9IGNhbGVuZGFyQ29uZmlnU2VydmljZS5zdGFydFdlZWtkYXk7XG4gIH1cblxuICBwdWJsaWMgdHJhbnNmb3JtKGRheUluZGV4OiBudW1iZXIsIGNhbGVuZGFyTW9udGg6IENhbGVuZGFyTW9udGgsIHNlbGVjdGVkRGF0ZXM6IERhdGVbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHsgeWVhciwgbW9udGggfTogQ2FsZW5kYXJNb250aCA9IGNhbGVuZGFyTW9udGg7XG5cbiAgICBpZiAoc2VsZWN0ZWREYXRlcy5sZW5ndGggIT09IDIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0TW9udGhTdGFydDogRGF5T2ZXZWVrID0gZ2V0V2Vla2RheUluZGV4KHllYXIsIG1vbnRoLCAxKTtcbiAgICBjb25zdCByZWxhdGl2ZU1vbnRoU3RhcnQ6IERheU9mV2VlayA9IGdldFdlZWtkYXlSZWxhdGl2ZVRvTmV3V2Vla1N0YXJ0KFxuICAgICAgZGVmYXVsdE1vbnRoU3RhcnQsXG4gICAgICBEYXlPZldlZWsuU3VuZGF5LFxuICAgICAgdGhpcy5zdGFydFdlZWtkYXlcbiAgICApO1xuXG4gICAgY29uc3QgaXNFbXB0eUF0QmVnaW46IGJvb2xlYW4gPSBkYXlJbmRleCA8IHJlbGF0aXZlTW9udGhTdGFydDtcbiAgICBjb25zdCBmaXJzdE1vbnRoRGF5OiBDYWxlbmRhckRheSA9IHsgeWVhciwgbW9udGgsIGRheTogMSB9O1xuICAgIGNvbnN0IGZpcnN0TW9udGhEYXlQb3NpdGlvbjogRGF5UG9zaXRpb25JbkRhdGVSYW5nZSA9IGdldERheVBvc2l0aW9uSW5EYXRlUmFuZ2UoZmlyc3RNb250aERheSwgc2VsZWN0ZWREYXRlcyk7XG4gICAgY29uc3QgZmlyc3RNb250aERheUlzTm90Rmlyc3Q6IGJvb2xlYW4gPSBbJ2xhc3QnLCAnaW5zaWRlJ10uaW5jbHVkZXMoZmlyc3RNb250aERheVBvc2l0aW9uKTtcblxuICAgIGlmIChpc0VtcHR5QXRCZWdpbiAmJiBmaXJzdE1vbnRoRGF5SXNOb3RGaXJzdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZGF5c0NvdW50OiBudW1iZXIgPSBnZXREYXlzQ291bnRJbk1vbnRoKG1vbnRoLCBpc0xlYXBZZWFyKHllYXIpKTtcbiAgICBjb25zdCBpc0VtcHR5QXRFbmQ6IGJvb2xlYW4gPSBkYXlJbmRleCArIDEgPj0gcmVsYXRpdmVNb250aFN0YXJ0ICsgZGF5c0NvdW50O1xuICAgIGNvbnN0IGxhc3RNb250aERheTogQ2FsZW5kYXJEYXkgPSB7IHllYXIsIG1vbnRoLCBkYXk6IGRheXNDb3VudCB9O1xuICAgIGNvbnN0IGxhc3RNb250aERheVBvc2l0aW9uOiBEYXlQb3NpdGlvbkluRGF0ZVJhbmdlID0gZ2V0RGF5UG9zaXRpb25JbkRhdGVSYW5nZShsYXN0TW9udGhEYXksIHNlbGVjdGVkRGF0ZXMpO1xuICAgIGNvbnN0IGxhc3RNb250aERheUlzTm90TGFzdDogYm9vbGVhbiA9IFsnZmlyc3QnLCAnaW5zaWRlJ10uaW5jbHVkZXMobGFzdE1vbnRoRGF5UG9zaXRpb24pO1xuXG4gICAgaWYgKGlzRW1wdHlBdEVuZCAmJiBsYXN0TW9udGhEYXlJc05vdExhc3QpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19