import { EventEmitter, ChangeDetectorRef, OnChanges, OnInit, OnDestroy, TemplateRef } from '@angular/core'; import { Subject, Subscription } from 'rxjs'; import { WeekDay, CalendarEvent, WeekViewEvent, WeekView, ViewPeriod } from 'calendar-utils'; import { ResizeEvent } from 'angular-resizable-element'; import { CalendarEventTimesChangedEvent } from '../common/calendar-event-times-changed-event.interface'; import { CalendarUtils } from '../common/calendar-utils.provider'; export interface WeekViewEventResize { originalOffset: number; originalSpan: number; edge: string; } export interface CalendarWeekViewBeforeRenderEvent { header: WeekDay[]; period: ViewPeriod; } /** * Shows all events on a given week. Example usage: * * ```typescript * * * ``` */ export declare class CalendarWeekViewComponent implements OnChanges, OnInit, OnDestroy { private cdr; private utils; /** * The current view date */ viewDate: Date; /** * An array of events to display on view * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63 */ events: CalendarEvent[]; /** * An array of day indexes (0 = sunday, 1 = monday etc) that will be hidden on the view */ excludeDays: number[]; /** * An observable that when emitted on will re-render the current view */ refresh: Subject; /** * The locale used to format dates */ locale: string; /** * The placement of the event tooltip */ tooltipPlacement: string; /** * A custom template to use for the event tooltips */ tooltipTemplate: TemplateRef; /** * Whether to append tooltips to the body or next to the trigger element */ tooltipAppendToBody: 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 for week view events */ eventTemplate: TemplateRef; /** * A custom template to use for event titles */ eventTitleTemplate: TemplateRef; /** * The precision to display events. * `days` will round event start and end dates to the nearest day and `minutes` will not do this rounding */ precision: 'days' | 'minutes'; /** * An array of day indexes (0 = sunday, 1 = monday etc) that indicate which days are weekends */ weekendDays: number[]; /** * Called when a header week day is clicked. Adding a `cssClass` property on `$event.day` will add that class to the header element */ dayHeaderClicked: EventEmitter<{ day: WeekDay; }>; /** * Called when the event title is clicked */ eventClicked: EventEmitter<{ event: CalendarEvent; }>; /** * Called when an event is resized or dragged and dropped */ eventTimesChanged: EventEmitter; /** * An output that will be called before the view is rendered for the current week. * If you add the `cssClass` property to a day in the header it will add that class to the cell element in the template */ beforeViewRender: EventEmitter; /** * @hidden */ days: WeekDay[]; /** * @hidden */ view: WeekView; /** * @hidden */ refreshSubscription: Subscription; /** * @hidden */ currentResizes: Map; /** * @hidden */ validateDrag: (args: any) => boolean; /** * @hidden */ validateResize: (args: any) => boolean; /** * @hidden */ dayColumnWidth: number; /** * @hidden */ trackByIndex: (index: number) => number; /** * @hidden */ trackByEventId: (index: number, weekEvent: WeekViewEvent) => string | number | WeekViewEvent; /** * @hidden */ constructor(cdr: ChangeDetectorRef, utils: CalendarUtils, locale: string); /** * @hidden */ ngOnInit(): void; /** * @hidden */ ngOnChanges(changes: any): void; /** * @hidden */ ngOnDestroy(): void; /** * @hidden */ resizeStarted(weekViewContainer: HTMLElement, weekEvent: WeekViewEvent, resizeEvent: ResizeEvent): void; /** * @hidden */ resizing(weekEvent: WeekViewEvent, resizeEvent: ResizeEvent, dayWidth: number): void; /** * @hidden */ resizeEnded(weekEvent: WeekViewEvent): void; /** * @hidden */ eventDragged(weekEvent: WeekViewEvent, draggedByPx: number, dayWidth: number): void; /** * @hidden */ getDayColumnWidth(eventRowContainer: HTMLElement): number; /** * @hidden */ dragStart(weekViewContainer: HTMLElement, event: HTMLElement): void; private refreshHeader(); private refreshBody(); private refreshAll(); private emitBeforeViewRender(); }