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.

176 lines (175 loc) 9.55 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, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; import { LocalizationService } from '@progress/kendo-angular-l10n'; import { SchedulerView } from '../../types'; import { ViewContextService } from '../view-context.service'; import { ViewStateService } from '../view-state.service'; import { DayViewComponent } from './day-view.component'; 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-l10n"; import * as i2 from "../view-context.service"; import * as i3 from "../view-state.service"; /** * The component for rendering the **Multi-Day** view. */ export class MultiDayViewComponent extends DayViewComponent { /** * The long-date format for displaying the * selected date in the Scheduler toolbar. * Defaults to `{0:D} - {1:D}` for multiple days and `{0:D}` for a single day * ([more information](slug:parsingandformatting_intl#toc-date-formatting)). * @default '{0:D} - {1:D}' */ set selectedDateFormat(value) { this.dateFormat = value; } get selectedDateFormat() { return this.dateFormat || this.defaultDateFormat; } /** * The short date format for displaying the * selected date in the Scheduler toolbar. * Defaults to `{0:d} - {1:d}` for multiple days and `{0:d}` for a single day * ([more information](slug:parsingandformatting_intl#toc-date-formatting)). * @default '{0:d} - {1:d}' */ set selectedShortDateFormat(value) { this.shortDateFormat = value; } get selectedShortDateFormat() { return this.shortDateFormat || this.defaultShortDateFormat; } /** * Specifies the number of days that the view will render. * @default 1 */ numberOfDays = 1; /** * @hidden */ get title() { return this.localization.get('multiDayViewTitle'); } /** * The invariant name for this view. * @default 'multi-day' */ name = 'multiDay'; get defaultDateFormat() { return this.numberOfDays === 1 ? '{0:D}' : '{0:D} - {1:D}'; } get defaultShortDateFormat() { return this.numberOfDays === 1 ? '{0:d}' : '{0:d} - {1:d}'; } dateFormat; shortDateFormat; constructor(localization, changeDetector, viewContext, viewState) { super(localization, changeDetector, viewContext, viewState); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiDayViewComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i2.ViewContextService }, { token: i3.ViewStateService }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultiDayViewComponent, isStandalone: true, selector: "kendo-scheduler-multi-day-view", inputs: { selectedDateFormat: "selectedDateFormat", selectedShortDateFormat: "selectedShortDateFormat", numberOfDays: "numberOfDays" }, providers: [{ provide: SchedulerView, useExisting: forwardRef(() => MultiDayViewComponent) }], usesInheritance: true, ngImport: i0, template: ` <ng-template #content> <multi-day-view viewName="day" [allDaySlot]="allDaySlot" [name]="name" [numberOfDays]="numberOfDays" [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: MultiDayViewComponent, decorators: [{ type: Component, args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'kendo-scheduler-multi-day-view', providers: [{ provide: SchedulerView, useExisting: forwardRef(() => MultiDayViewComponent) }], template: ` <ng-template #content> <multi-day-view viewName="day" [allDaySlot]="allDaySlot" [name]="name" [numberOfDays]="numberOfDays" [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.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i2.ViewContextService }, { type: i3.ViewStateService }]; }, propDecorators: { selectedDateFormat: [{ type: Input }], selectedShortDateFormat: [{ type: Input }], numberOfDays: [{ type: Input }] } });