UNPKG

@progress/kendo-angular-scheduler

Version:

Kendo UI Scheduler Angular - Outlook or Google-style angular scheduler calendar. Full-featured and customizable embedded scheduling from the creator developers trust for professional UI components.

161 lines (160 loc) 8.96 kB
/**----------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the project root for more information *-------------------------------------------------------------------------------------------*/ import { Component, forwardRef, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; import { LocalizationService } from '@progress/kendo-angular-l10n'; import { SchedulerView } from '../../types'; import { WeekViewComponent } from './week-view.component'; import { IntlService } from '@progress/kendo-angular-intl'; import { ViewContextService } from '../view-context.service'; import { ViewStateService } from '../view-state.service'; import { firstDayInWeek, getDate, addDays } from '@progress/kendo-date-math'; import { WorkHoursFooterDirective } from '../common/work-hours-footer.directive'; import { ViewFooterComponent } from '../common/view-footer.component'; import { MultiDayViewRendererComponent } from './multi-day-view-renderer.component'; import { NgIf } from '@angular/common'; import * as i0 from "@angular/core"; import * as i1 from "@progress/kendo-angular-intl"; import * as i2 from "@progress/kendo-angular-l10n"; import * as i3 from "../view-context.service"; import * as i4 from "../view-state.service"; const DAYS_IN_WEEK = 7; /** * The component for rendering the **Work Week** view. */ export class WorkWeekViewComponent extends WeekViewComponent { /** * @hidden */ get title() { return this.localization.get('workWeekViewTitle'); } /** * The invariant name for this view. * @default 'workWeek' */ name = 'workWeek'; /** * @hidden */ get numberOfDays() { if (this.viewWorkWeekStart > this.viewWorkWeekEnd) { return (DAYS_IN_WEEK - this.viewWorkWeekStart + this.viewWorkWeekEnd) + 1; } return (this.viewWorkWeekEnd - this.viewWorkWeekStart) + 1; } constructor(intl, localization, changeDetector, viewContext, viewState) { super(intl, localization, changeDetector, viewContext, viewState); this.getNextDate = this.getNextDate.bind(this); } /** * @hidden */ getStartDate(selectedDate) { return firstDayInWeek(getDate(selectedDate), this.viewWorkWeekStart); } /** * @hidden */ getNextDate(date, count, _numberOfDays) { return getDate(addDays(date, DAYS_IN_WEEK * count)); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WorkWeekViewComponent, deps: [{ token: i1.IntlService }, { token: i2.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i3.ViewContextService }, { token: i4.ViewStateService }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: WorkWeekViewComponent, isStandalone: true, selector: "kendo-scheduler-work-week-view", providers: [{ provide: SchedulerView, useExisting: forwardRef(() => WorkWeekViewComponent) }], usesInheritance: true, ngImport: i0, template: ` <ng-template #content> <multi-day-view viewName="workWeekview" [allDaySlot]="viewAllDaySlot" [name]="name" [numberOfDays]="numberOfDays" [getStartDate]="getStartDate" [getNextDate]="getNextDate" [eventHeight]="viewEventHeight" [currentTimeMarker]="viewCurrentTimeMarker" [highlightOngoingEvents]="viewHighlightOngoingEvents" [showWorkHours]="shouldShowWorkHours" [scrollTime]="viewScrollTime" [startTime]="viewStartTime" [endTime]="viewEndTime" [workDayStart]="viewWorkDayStart" [workDayEnd]="viewWorkDayEnd" [workWeekStart]="viewWorkWeekStart" [workWeekEnd]="viewWorkWeekEnd" [slotDuration]="viewSlotDuration" [slotDivisions]="viewSlotDivisions" [slotFill]="viewSlotFill" [slotClass]="viewSlotClass" [eventClass]="viewEventClass" [eventStyles]="viewEventStyles" [allDaySlotTemplate]="allDaySlotTemplate?.templateRef" [allDayEventTemplate]="allDayEventTemplate?.templateRef" [eventTemplate]="eventTemplate?.templateRef" [groupHeaderTemplate]="groupHeaderTemplate?.templateRef" [timeSlotTemplate]="timeSlotTemplate?.templateRef" [minorTimeHeaderTemplate]="minorTimeHeaderTemplate?.templateRef" [majorTimeHeaderTemplate]="majorTimeHeaderTemplate?.templateRef" [dateHeaderTemplate]="dateHeaderTemplate?.templateRef" [selectedDateFormat]="selectedDateFormat" [selectedShortDateFormat]="selectedShortDateFormat"> </multi-day-view> <div *ngIf="viewShowFooter" viewFooter kendoWorkHoursFooter [showWorkHours]="shouldShowWorkHours" (itemClick)="showWorkHours = !shouldShowWorkHours"></div> </ng-template> `, isInline: true, dependencies: [{ kind: "component", type: MultiDayViewRendererComponent, selector: "multi-day-view", inputs: ["allDaySlot", "name", "slotFill", "allDaySlotTemplate", "allDayEventTemplate"] }, { kind: "component", type: ViewFooterComponent, selector: "[viewFooter]", inputs: ["items"], outputs: ["itemClick"] }, { kind: "directive", type: WorkHoursFooterDirective, selector: "[kendoWorkHoursFooter]", inputs: ["showWorkHours"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WorkWeekViewComponent, decorators: [{ type: Component, args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'kendo-scheduler-work-week-view', providers: [{ provide: SchedulerView, useExisting: forwardRef(() => WorkWeekViewComponent) }], template: ` <ng-template #content> <multi-day-view viewName="workWeekview" [allDaySlot]="viewAllDaySlot" [name]="name" [numberOfDays]="numberOfDays" [getStartDate]="getStartDate" [getNextDate]="getNextDate" [eventHeight]="viewEventHeight" [currentTimeMarker]="viewCurrentTimeMarker" [highlightOngoingEvents]="viewHighlightOngoingEvents" [showWorkHours]="shouldShowWorkHours" [scrollTime]="viewScrollTime" [startTime]="viewStartTime" [endTime]="viewEndTime" [workDayStart]="viewWorkDayStart" [workDayEnd]="viewWorkDayEnd" [workWeekStart]="viewWorkWeekStart" [workWeekEnd]="viewWorkWeekEnd" [slotDuration]="viewSlotDuration" [slotDivisions]="viewSlotDivisions" [slotFill]="viewSlotFill" [slotClass]="viewSlotClass" [eventClass]="viewEventClass" [eventStyles]="viewEventStyles" [allDaySlotTemplate]="allDaySlotTemplate?.templateRef" [allDayEventTemplate]="allDayEventTemplate?.templateRef" [eventTemplate]="eventTemplate?.templateRef" [groupHeaderTemplate]="groupHeaderTemplate?.templateRef" [timeSlotTemplate]="timeSlotTemplate?.templateRef" [minorTimeHeaderTemplate]="minorTimeHeaderTemplate?.templateRef" [majorTimeHeaderTemplate]="majorTimeHeaderTemplate?.templateRef" [dateHeaderTemplate]="dateHeaderTemplate?.templateRef" [selectedDateFormat]="selectedDateFormat" [selectedShortDateFormat]="selectedShortDateFormat"> </multi-day-view> <div *ngIf="viewShowFooter" viewFooter kendoWorkHoursFooter [showWorkHours]="shouldShowWorkHours" (itemClick)="showWorkHours = !shouldShowWorkHours"></div> </ng-template> `, standalone: true, imports: [MultiDayViewRendererComponent, ViewFooterComponent, WorkHoursFooterDirective, NgIf] }] }], ctorParameters: function () { return [{ type: i1.IntlService }, { type: i2.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i3.ViewContextService }, { type: i4.ViewStateService }]; } });