import * as i0 from '@angular/core'; import { OnInit, OnChanges, OnDestroy, TemplateRef, EventEmitter, ChangeDetectorRef, AfterContentChecked, ElementRef, AfterViewInit, SimpleChanges, PipeTransform, InjectionToken, ModuleWithProviders } from '@angular/core'; import { MediaMatcher } from '@angular/cdk/layout'; import { Subject, Subscription } from 'rxjs'; import { EventColor, WeekViewHourSegment, WeekViewHour } from 'calendar-utils'; import { ResizeEvent } from 'angular-resizable-element'; import * as i11 from 'angular-calendar'; import { CalendarEventTimesChangedEventType, DateAdapter, CalendarEventTitleFormatter, CalendarDateFormatter, DateFormatterParams, CalendarView } from 'angular-calendar'; import { DropEvent, DragMoveEvent, DragEndEvent } from 'angular-draggable-droppable'; import * as i10 from '@angular/common'; /** * Auth configuration. */ declare class SchedulerConfig { locale?: string; headerDateFormat?: 'weekNumber' | 'daysRange'; logEnabled?: boolean; constructor(config?: SchedulerConfig); static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } interface CalendarSchedulerEvent { id: string; start: Date; end?: Date; title: string; content?: string; color: EventColor; actions?: CalendarSchedulerEventAction[]; status?: CalendarSchedulerEventStatus; cssClass?: string; isDisabled?: boolean; isClickable?: boolean; isCancelled?: boolean; resizable?: { beforeStart?: boolean; afterEnd?: boolean; }; draggable?: boolean; } type CalendarSchedulerEventStatus = 'ok' | 'warning' | 'danger'; interface CalendarSchedulerEventAction { when?: 'enabled' | 'disabled' | 'cancelled'; label: string; title: string; cssClass?: string; onClick(event: CalendarSchedulerEvent): void; } interface SchedulerEventTimesChangedEvent { event: CalendarSchedulerEvent; newStart: Date; newEnd?: Date; type?: CalendarEventTimesChangedEventType; } interface SchedulerViewEvent { event: CalendarSchedulerEvent; top?: number; height?: number; left?: number; width?: number; startsBeforeDay?: boolean; endsAfterDay?: boolean; } interface SchedulerViewHourSegment { segment: WeekViewHourSegment; date: Date; events: SchedulerViewEvent[]; isDisabled: boolean; isCancelled: boolean; backgroundColor?: string; cssClass?: string; } interface SchedulerViewHour { hour: WeekViewHour; date: Date; events: SchedulerViewEvent[]; segments: SchedulerViewHourSegment[]; backgroundColor?: string; cssClass?: string; } interface SchedulerViewDay { date: Date; events: SchedulerViewEvent[]; isPast: boolean; isToday: boolean; isFuture: boolean; isWeekend: boolean; inMonth: boolean; backgroundColor?: string; cssClass?: string; hours: SchedulerViewHour[]; } interface SchedulerView { days: SchedulerViewDay[]; period: SchedulerViewPeriod; } interface SchedulerViewPeriod { start: Date; end: Date; events: CalendarSchedulerEvent[]; } declare enum DAYS_OF_WEEK { SUNDAY = 0, MONDAY = 1, TUESDAY = 2, WEDNESDAY = 3, THURSDAY = 4, FRIDAY = 5, SATURDAY = 6 } declare const DAYS_IN_WEEK: number; declare const HOURS_IN_DAY: number; declare const MINUTES_IN_HOUR: number; declare const SECONDS_IN_DAY: number; declare const DEFAULT_HOUR_SEGMENT_HEIGHT_PX = 40; declare const DEFAULT_EVENT_WIDTH = 1; declare const DEFAULT_HOUR_SEGMENTS = 2; interface Time { hour: number; minute: number; } interface GetSchedulerViewHourGridArgs { viewDate: Date; hourSegments: number; dayStart: Time; dayEnd: Time; } declare function getSchedulerViewHourGrid(dateAdapter: DateAdapter, { viewDate, hourSegments, dayStart, dayEnd }: GetSchedulerViewHourGridArgs): WeekViewHour[]; interface GetSchedulerViewArgs { events?: CalendarSchedulerEvent[]; viewDate: Date; viewDays: number; hourSegments: 1 | 2 | 4 | 6; weekStartsOn: number; startsWithToday: boolean; dayStart: Time; dayEnd: Time; weekendDays?: number[]; excluded?: number[]; eventWidth: number; hourSegmentHeight: number; logEnabled?: boolean; } declare function getSchedulerView(dateAdapter: DateAdapter, moment: any, { events, viewDate, viewDays, weekStartsOn, startsWithToday, excluded, hourSegments, dayStart, dayEnd, weekendDays, hourSegmentHeight, eventWidth, logEnabled, }: GetSchedulerViewArgs): SchedulerView; interface GetSchedulerViewDaysArgs { viewDate: Date; viewDays: number; weekStartsOn: number; startsWithToday: boolean; excluded?: number[]; weekendDays?: number[]; } declare function getSchedulerViewDays(dateAdapter: DateAdapter, { viewDate, viewDays, weekStartsOn, startsWithToday, excluded, weekendDays }: GetSchedulerViewDaysArgs): SchedulerViewDay[]; interface GetEventsInPeriodArgs { events: CalendarSchedulerEvent[]; periodStart: Date; periodEnd: Date; } interface GetSchedulerEventsInPeriodArgs { events: SchedulerViewEvent[]; periodStart: Date; periodEnd: Date; } declare class CalendarSchedulerUtils { private dateAdapter; protected moment: any; constructor(dateAdapter: DateAdapter, moment: any); getSchedulerViewHourGrid(args: GetSchedulerViewHourGridArgs): WeekViewHour[]; getSchedulerViewDays(args: GetSchedulerViewDaysArgs): SchedulerViewDay[]; getSchedulerView(args: GetSchedulerViewArgs): SchedulerView; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } /** * [ngClass]="getPositioningClasses(event)" * * [style.top.px]="event.top" * [style.height.px]="event.height" * [style.left.%]="event.left" * [style.width.%]="event.width" * * DRAG & DROP & RESIZE -> https://github.com/mattlewis92/angular-calendar/blob/main/projects/angular-calendar/src/modules/week/calendar-week-view.component.ts * FLEXBOX -> https://css-tricks.com/snippets/css/a-guide-to-flexbox/ */ declare class CalendarSchedulerViewComponent implements OnInit, OnChanges, OnDestroy { private cdr; private config; private utils; private dateAdapter; private media; private changeDetectorRef; /** * Number of days shown. This value will be always normalized to DAYS_IN_WEEK (7) */ _viewDays: number; get viewDays(): number; set viewDays(value: number); /** * The current view date */ viewDate: Date; /** * Specify if the calendar must be resposive on window resize, changing the days showed automatically */ responsive: boolean; /** * An array of events to display on view */ events: CalendarSchedulerEvent[]; /** * The number of segments in an hour. Must be one of 1, 2, 4, 6 */ hourSegments: 1 | 2 | 4 | 6; /** * The height in pixels of each hour segment */ hourSegmentHeight: number; /** * An array of day indexes (0 = sunday, 1 = monday etc) that will be hidden on the view */ excludeDays: number[]; /** * Specify if the first day of current scheduler view has to be today or the first day of the week */ startsWithToday: boolean; /** * Specify if content must be shown or not */ showEventContent: boolean; /** * Specify if actions must be shown or not */ showEventActions: boolean; /** * Specify if status must be shown or not */ showEventStatus: boolean; /** * Specify if hour must be shown on segment or not */ showSegmentHour: boolean; /** * Specify if event must zoom on mouse hover or not */ zoomEventOnHover: boolean; /** * A function that will be called before each cell is rendered. The first argument will contain the calendar (day, hour or segment) cell. * If you add the `cssClass` property to the cell it will add that class to the cell in the template */ dayModifier: Function; hourModifier: Function; segmentModifier: Function; eventModifier: Function; /** * An observable that when emitted on will re-render the current view */ refresh: Subject; /** * The locale used to format dates */ locale: string; /** * The grid size to snap resizing and dragging of events to */ eventSnapSize: number; /** * Whether to snap events to a grid when dragging */ snapDraggedEvents: boolean; /** * The start number of the week */ weekStartsOn: number; /** * A custom template to use to replace the header */ headerTemplate: TemplateRef; /** * A custom template to use to replace the day cell */ cellTemplate: TemplateRef; /** * A custom template to use for week view events */ eventTemplate: TemplateRef; /** * A custom template to use for event titles */ eventTitleTemplate: TemplateRef; /** * A custom template to use for all day events */ allDayEventTemplate: TemplateRef; /** * An array of day indexes (0 = sunday, 1 = monday etc) that indicate which days are weekends */ weekendDays: number[]; /** * The day start hours in 24 hour time. Must be 0-23 */ dayStartHour: number; /** * The day start minutes. Must be 0-59 */ dayStartMinute: number; /** * The day end hours in 24 hour time. Must be 0-23 */ dayEndHour: number; /** * The day end minutes. Must be 0-59 */ dayEndMinute: number; /** * Called when view days value changes */ viewDaysChanged: EventEmitter; /** * Called when a header week day is clicked */ dayHeaderClicked: EventEmitter<{ day: SchedulerViewDay; }>; /** * Called when the hour is clicked */ hourClicked: EventEmitter<{ hour: SchedulerViewHour; }>; /** * Called when the segment is clicked */ segmentClicked: EventEmitter<{ segment: SchedulerViewHourSegment; }>; /** * Called when the event is clicked */ eventClicked: EventEmitter<{ event: CalendarSchedulerEvent; }>; /** * Called when an event is resized or dragged and dropped */ eventTimesChanged: EventEmitter; /** * @hidden */ view: SchedulerView; /** * @hidden */ refreshSubscription: Subscription; /** * @hidden */ days: SchedulerViewDay[]; /** * @hidden */ hours: WeekViewHour[]; /** * @hidden */ resizes: Map; /** * @hidden */ eventDragEnter: number; /** * @hidden */ dragActive: boolean; /** * @hidden */ dragAlreadyMoved: boolean; /** * @hidden */ validateResize: (args: any) => boolean; /** * @hidden */ validateDrag: (args: any) => boolean; /** * @hidden */ dayColumnWidth: number; /** * @hidden */ calendarId: symbol; /** * @hidden */ rtl: boolean; /** * @hidden */ trackByHourColumn: (index: number, day: SchedulerViewDay) => string | SchedulerViewDay; /** * @hidden */ trackByDayOrEvent: (index: number, event: SchedulerViewEvent) => string | CalendarSchedulerEvent; /** * @hidden */ trackByHour: (index: number, hour: WeekViewHour | SchedulerViewHour) => string; /** * @hidden */ trackByHourSegment: (index: number, segment: SchedulerViewHourSegment) => string; mobileQueryXs: MediaQueryList; mobileQuerySm: MediaQueryList; mobileQueryListener: (this: MediaQueryList, ev: MediaQueryListEvent) => any; onResize(event: any): void; /** * @hidden */ constructor(cdr: ChangeDetectorRef, locale: string, config: SchedulerConfig, utils: CalendarSchedulerUtils, dateAdapter: DateAdapter, media: MediaMatcher, changeDetectorRef: ChangeDetectorRef); /** * @hidden */ ngOnInit(): void; /** * @hidden */ ngOnChanges(changes: any): void; /** * @hidden */ ngOnDestroy(): void; setViewDays(viewDays: number): void; protected adjustViewDays(): void; protected getPositioningClasses(day: SchedulerViewDay, event: CalendarSchedulerEvent): string; private getDayClass; private getTimeClass; private getLengthClass; private refreshHourGrid; private refreshHeader; private refreshBody; private refreshAll; private getSchedulerView; /** * @hidden */ resizeStarted(eventsContainer: HTMLElement, event: SchedulerViewEvent, resizeEvent: ResizeEvent): void; /** * @hidden */ resizing(event: SchedulerViewEvent, resizeEvent: ResizeEvent): void; /** * @hidden */ resizeEnded(event: SchedulerViewEvent): void; private getResizedEventDates; /** * @hidden */ eventDropped(dropEvent: DropEvent<{ event?: CalendarSchedulerEvent; calendarId?: symbol; }>, date: Date): void; /** * @hidden */ dragStarted(eventsContainer: HTMLElement, eventContainer: HTMLElement, event?: SchedulerViewEvent): void; /** * @hidden */ dragMove(event: SchedulerViewEvent, dragEvent: DragMoveEvent): void; dragEnded(event: SchedulerViewEvent, dragEndEvent: DragEndEvent, dayWidth: number, useY?: boolean): void; private getDragMovedEventTimes; private restoreOriginalEvents; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class CalendarSchedulerHourSegmentComponent implements OnInit { protected moment: any; title: string; day: SchedulerViewDay; segment: SchedulerViewHourSegment; locale: string; customTemplate: TemplateRef; hourSegmentHeight: number; showHour: boolean; segmentClicked: EventEmitter<{ segment: SchedulerViewHourSegment; }>; constructor(moment: any); ngOnInit(): void; /** * @hidden */ onMouseEnter(mouseEvent: MouseEvent, segment: SchedulerViewHourSegment, event: CalendarSchedulerEvent): void; /** * @hidden */ onMouseLeave(mouseEvent: MouseEvent, segment: SchedulerViewHourSegment, event: CalendarSchedulerEvent): void; /** * @hidden */ onSegmentClick(mouseEvent: MouseEvent, segment: SchedulerViewHourSegment): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class CalendarSchedulerHeaderComponent { days: SchedulerViewDay[]; locale: string; customTemplate: TemplateRef; dayHeaderClicked: EventEmitter<{ day: SchedulerViewDay; }>; /** * @hidden */ onDayHeaderClick(mouseEvent: MouseEvent, day: SchedulerViewDay): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class CalendarSchedulerEventComponent implements OnInit, AfterContentChecked { private hostElement; protected changeDetectorRef: ChangeDetectorRef; protected moment: any; title: string; day: SchedulerViewDay; event: SchedulerViewEvent; container: HTMLElement; showContent: boolean; showActions: boolean; showStatus: boolean; customTemplate: TemplateRef; eventTitleTemplate: TemplateRef; eventClicked: EventEmitter<{ event: CalendarSchedulerEvent; }>; constructor(hostElement: ElementRef, changeDetectorRef: ChangeDetectorRef, moment: any); ngOnInit(): void; ngAfterContentChecked(): void; onMouseEnter(): void; onMouseLeave(): void; /** * @hidden */ onEventClick(mouseEvent: MouseEvent, event: CalendarSchedulerEvent): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class CalendarSchedulerEventTitleComponent { view: string; event: CalendarSchedulerEvent; showStatus: boolean; showContent: boolean; showActions: boolean; customTemplate: TemplateRef; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class CalendarSchedulerEventContentComponent implements AfterViewInit { private hostElement; event: CalendarSchedulerEvent; eventContainer: HTMLElement; maxHeight: number; constructor(hostElement: ElementRef); ngAfterViewInit(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class CalendarSchedulerEventActionsComponent implements OnInit, OnChanges { event: CalendarSchedulerEvent; actions: CalendarSchedulerEventAction[]; ngOnInit(): void; ngOnChanges(changes: SimpleChanges): void; private setupActions; /** * @hidden */ onActionClick(mouseEvent: MouseEvent, action: CalendarSchedulerEventAction, event: CalendarSchedulerEvent): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class SchedulerEventTitleFormatter extends CalendarEventTitleFormatter { static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class SchedulerEventTitlePipe implements PipeTransform { private schedulerEventTitle; constructor(schedulerEventTitle: SchedulerEventTitleFormatter); transform(title: string, titleType: string, event: CalendarSchedulerEvent): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵpipe: i0.ɵɵPipeDeclaration; } declare class CalendarSchedulerDatePipe implements PipeTransform { private dateAdapter; private dateFormatter; private locale; constructor(dateAdapter: DateAdapter, dateFormatter: CalendarDateFormatter, locale: string); transform(date: Date, method: string, locale?: string, weekStartsOn?: number, excludeDays?: number[], daysInWeek?: number, startsWithToday?: boolean): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵpipe: i0.ɵɵPipeDeclaration; } interface SchedulerDateFormatterParams extends DateFormatterParams { dateAdapter: DateAdapter; startsWithToday: boolean; } declare class SchedulerDateFormatter extends CalendarDateFormatter { protected dateAdapter: DateAdapter; constructor(dateAdapter: DateAdapter); /** * The time formatting down the left hand side of the day view */ dayViewHour({ date, locale }: SchedulerDateFormatterParams): string; weekViewTitle({ date, locale, weekStartsOn, excludeDays, daysInWeek, startsWithToday }: SchedulerDateFormatterParams): string; private daysInMonth; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare function addPeriod(dateAdapter: DateAdapter, period: CalendarView, date: Date, amount: number): Date; declare function subPeriod(dateAdapter: DateAdapter, period: CalendarView, date: Date, amount: number): Date; declare function startOfPeriod(dateAdapter: DateAdapter, period: CalendarView, date: Date): Date; declare function endOfPeriod(dateAdapter: DateAdapter, period: CalendarView, date: Date): Date; declare const trackByDayOrEvent: (index: number, event: SchedulerViewEvent) => string | CalendarSchedulerEvent; declare const trackByHourColumn: (index: number, day: SchedulerViewDay) => string | SchedulerViewDay; declare const trackByHour: (index: number, hour: WeekViewHour | SchedulerViewHour) => string; declare const trackByHourSegment: (index: number, segment: SchedulerViewHourSegment) => string; declare function getMinimumEventHeightInMinutes(hourSegments: number, hourSegmentHeight: number): number; declare function getDefaultEventEnd(dateAdapter: DateAdapter, event: CalendarSchedulerEvent, minimumMinutes: number): Date; declare function roundToNearest(amount: number, precision: number): number; declare function getMinutesMoved(movedY: number, hourSegments: number, hourSegmentHeight: number, eventSnapSize: number): number; declare function isDraggedWithinPeriod(newStart: Date, newEnd: Date, period: SchedulerViewPeriod): boolean; declare function shouldFireDroppedEvent(dropEvent: { dropData?: { event?: CalendarSchedulerEvent; calendarId?: symbol; }; }, date: Date, calendarId: symbol): boolean; declare const SCHEDULER_CONFIG: InjectionToken; declare function provideSchedulerConfig(config: SchedulerConfig): SchedulerConfig; /** * The main module of this library. Example usage: * * ```typescript * import { CalendarModule, DateAdapter } from 'angular-calendar'; * import { adapterFactory } from 'angular-calendar/date-adapters/date-fns'; * import { SchedulerModule } from 'angular-calendar-scheduler'; * * @NgModule({ * imports: [ * CalendarModule.forRoot({ * provide: DateAdapter, * useFactory: adapterFactory * }), * SchedulerModule.forRoot({ locale: 'en', headerDateFormat: 'daysRange' }) * ] * }) * class MyModule {} * ``` * */ declare class SchedulerModule { static forRoot(config?: SchedulerConfig): ModuleWithProviders; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵmod: i0.ɵɵNgModuleDeclaration; static ɵinj: i0.ɵɵInjectorDeclaration; } export { CalendarSchedulerDatePipe, CalendarSchedulerEventActionsComponent, CalendarSchedulerEventComponent, CalendarSchedulerEventContentComponent, CalendarSchedulerEventTitleComponent, CalendarSchedulerHeaderComponent, CalendarSchedulerHourSegmentComponent, CalendarSchedulerUtils, CalendarSchedulerViewComponent, DAYS_IN_WEEK, DAYS_OF_WEEK, DEFAULT_EVENT_WIDTH, DEFAULT_HOUR_SEGMENTS, DEFAULT_HOUR_SEGMENT_HEIGHT_PX, HOURS_IN_DAY, MINUTES_IN_HOUR, SCHEDULER_CONFIG, SECONDS_IN_DAY, SchedulerDateFormatter, SchedulerEventTitleFormatter, SchedulerEventTitlePipe, SchedulerModule, addPeriod, endOfPeriod, getDefaultEventEnd, getMinimumEventHeightInMinutes, getMinutesMoved, getSchedulerView, getSchedulerViewDays, getSchedulerViewHourGrid, isDraggedWithinPeriod, provideSchedulerConfig, roundToNearest, shouldFireDroppedEvent, startOfPeriod, subPeriod, trackByDayOrEvent, trackByHour, trackByHourColumn, trackByHourSegment }; export type { CalendarSchedulerEvent, CalendarSchedulerEventAction, CalendarSchedulerEventStatus, GetEventsInPeriodArgs, GetSchedulerEventsInPeriodArgs, GetSchedulerViewArgs, GetSchedulerViewDaysArgs, GetSchedulerViewHourGridArgs, SchedulerDateFormatterParams, SchedulerEventTimesChangedEvent, SchedulerView, SchedulerViewDay, SchedulerViewEvent, SchedulerViewHour, SchedulerViewHourSegment, SchedulerViewPeriod, Time };