import { OnChanges, EventEmitter, ChangeDetectorRef, OnInit, OnDestroy, TemplateRef } from '@angular/core'; import { CalendarEvent, DayView, DayViewHour, DayViewHourSegment, DayViewEvent, ViewPeriod } from 'calendar-utils'; import { Subject, Subscription } from 'rxjs'; 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 CalendarDayViewBeforeRenderEvent { body: { hourGrid: DayViewHour[]; }; period: ViewPeriod; } /** * @hidden */ export interface DayViewEventResize { originalTop: number; originalHeight: number; edge: string; } /** * Shows all events on a given day. Example usage: * * ```typescript * * * ``` */ export declare class CalendarDayViewComponent 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[]; /** * The number of segments in an hour. Must be <= 6 */ hourSegments: number; /** * The height in pixels of each hour segment */ hourSegmentHeight: 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; /** * The width in pixels of each event on the view */ eventWidth: number; /** * 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; /** * 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; /** * A custom template to use to replace the hour segment */ hourSegmentTemplate: TemplateRef; /** * A custom template to use for all day events */ allDayEventTemplate: TemplateRef; /** * A custom template to use for day view events */ eventTemplate: TemplateRef; /** * A custom template to use for event titles */ eventTitleTemplate: TemplateRef; /** * Called when an event title is clicked */ eventClicked: EventEmitter<{ event: CalendarEvent; }>; /** * Called when an hour segment is clicked */ hourSegmentClicked: EventEmitter<{ date: Date; }>; /** * 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 day. * If you add the `cssClass` property to an hour grid segment it will add that class to the hour segment in the template */ beforeViewRender: EventEmitter; /** * @hidden */ hours: DayViewHour[]; /** * @hidden */ view: DayView; /** * @hidden */ width: number; /** * @hidden */ refreshSubscription: Subscription; /** * @hidden */ currentResizes: Map; /** * @hidden */ validateDrag: (args: any) => boolean; /** * @hidden */ validateResize: (args: any) => boolean; /** * @hidden */ trackByEventId: (index: number, event: CalendarEvent) => string | number | CalendarEvent; /** * @hidden */ trackByDayEvent: (index: number, dayEvent: DayViewEvent) => string | number | CalendarEvent; /** * @hidden */ trackByHour: (index: number, hour: DayViewHour) => string; /** * @hidden */ trackByHourSegment: (index: number, segment: DayViewHourSegment) => string; /** * @hidden */ constructor(cdr: ChangeDetectorRef, utils: CalendarUtils, locale: string); /** * @hidden */ ngOnInit(): void; /** * @hidden */ ngOnDestroy(): void; /** * @hidden */ ngOnChanges(changes: any): void; eventDropped(dropEvent: { dropData?: { event?: CalendarEvent; }; }, segment: DayViewHourSegment): void; resizeStarted(event: DayViewEvent, resizeEvent: ResizeEvent, dayViewContainer: HTMLElement): void; resizing(event: DayViewEvent, resizeEvent: ResizeEvent): void; resizeEnded(dayEvent: DayViewEvent): void; dragStart(event: HTMLElement, dayViewContainer: HTMLElement): void; eventDragged(dayEvent: DayViewEvent, draggedInPixels: number): void; private refreshHourGrid(); private refreshView(); private refreshAll(); private emitBeforeViewRender(); }