novo-elements
Version:
1 lines • 82.5 kB
Source Map (JSON)
{"version":3,"file":"novo-elements-elements-agenda.mjs","sources":["../../../projects/novo-elements/src/elements/agenda/pipe/Weekday.pipe.ts","../../../projects/novo-elements/src/elements/agenda/pipe/DayOfMonth.pipe.ts","../../../projects/novo-elements/src/elements/agenda/pipe/Month.pipe.ts","../../../projects/novo-elements/src/elements/agenda/pipe/MonthDay.pipe.ts","../../../projects/novo-elements/src/elements/agenda/pipe/Year.pipe.ts","../../../projects/novo-elements/src/elements/agenda/pipe/EndOfWeekDisplayPipe.pipe.ts","../../../projects/novo-elements/src/elements/agenda/common/AgendaDateChange.ts","../../../projects/novo-elements/src/elements/agenda/common/EventTypeLegend.ts","../../../projects/novo-elements/src/elements/agenda/day/AgendaAllDayEvent.ts","../../../projects/novo-elements/src/elements/agenda/day/AgendaDayEvent.ts","../../../projects/novo-elements/src/elements/agenda/pipe/Hours.pipe.ts","../../../projects/novo-elements/src/elements/agenda/day/AgendaHourSegment.ts","../../../projects/novo-elements/src/elements/agenda/day/AgendaDayView.ts","../../../projects/novo-elements/src/elements/agenda/month/AgendaMonthDay.ts","../../../projects/novo-elements/src/elements/agenda/month/AgendaMonthHeader.ts","../../../projects/novo-elements/src/elements/agenda/month/AgendaMonthView.ts","../../../projects/novo-elements/src/elements/agenda/week/AgendaWeekEvent.ts","../../../projects/novo-elements/src/elements/agenda/week/AgendaWeekHeader.ts","../../../projects/novo-elements/src/elements/agenda/week/AgendaWeekView.ts","../../../projects/novo-elements/src/elements/agenda/Agenda.module.ts","../../../projects/novo-elements/src/elements/agenda/novo-elements-elements-agenda.ts"],"sourcesContent":["import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'weekday',\n standalone: false,\n})\nexport class WeekdayPipe implements PipeTransform {\n constructor(@Inject(LOCALE_ID) private locale: string = 'en-US') {}\n transform(date: Date, locale: string = this.locale, method: 'long' | 'short' | 'narrow' = 'short'): string {\n return new Intl.DateTimeFormat(locale, { weekday: method }).format(date);\n }\n}\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'dayofmonth',\n standalone: false,\n})\nexport class DayOfMonthPipe implements PipeTransform {\n constructor(@Inject(LOCALE_ID) private locale: string = 'en-US') {}\n transform(date: Date, locale: string = this.locale, method: 'numeric' | '2-digit' = 'numeric'): string {\n return new Intl.DateTimeFormat(locale, { day: method }).format(date);\n }\n}\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'month',\n standalone: false,\n})\nexport class MonthPipe implements PipeTransform {\n constructor(@Inject(LOCALE_ID) private locale: string = 'en-US') {}\n transform(date: Date, locale: string = this.locale, method: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow' = 'long'): string {\n return new Intl.DateTimeFormat(locale, { month: method }).format(date);\n }\n}\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'monthday',\n standalone: false,\n})\nexport class MonthDayPipe implements PipeTransform {\n constructor(@Inject(LOCALE_ID) private locale: string = 'en-US') {}\n transform(date: Date, locale: string = this.locale, method: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow' = 'short'): string {\n return new Intl.DateTimeFormat(locale, { month: method, day: 'numeric' }).format(date);\n }\n}\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'year',\n standalone: false,\n})\nexport class YearPipe implements PipeTransform {\n constructor(@Inject(LOCALE_ID) private locale: string = 'en-US') {}\n transform(date: Date, locale: string = this.locale, method: 'numeric' | '2-digit' = 'numeric'): string {\n return new Intl.DateTimeFormat(locale, { year: method }).format(date);\n }\n}\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'endofweekdisplay',\n standalone: false,\n})\nexport class EndOfWeekDisplayPipe implements PipeTransform {\n constructor(@Inject(LOCALE_ID) private locale: string = 'en-US') {}\n\n transform(\n endOfWeek: Date,\n startOfWeek: Date,\n locale: string = this.locale,\n method: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow' = 'short',\n ): String {\n if (endOfWeek.getMonth() === startOfWeek.getMonth()) {\n return new Intl.DateTimeFormat(locale, { day: 'numeric' }).format(endOfWeek);\n }\n\n return new Intl.DateTimeFormat(locale, { month: method, day: 'numeric' }).format(endOfWeek);\n }\n}\n","import { Component, EventEmitter, Inject, Input, LOCALE_ID, Output } from '@angular/core';\nimport { DateUtil } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-agenda-date-change',\n template: `\n <div class=\"cal-date-change\">\n <i class=\"bhi-arrow-left\" (click)=\"subtractDate()\"></i>\n <span [ngSwitch]=\"view\">\n <span *ngSwitchCase=\"'month'\">{{ (viewDate | month: locale) + ' ' + (viewDate | year: locale) }}</span>\n <span *ngSwitchCase=\"'week'\">{{\n (startOfWeek | monthday: locale:'long') + ' - ' + (endOfWeek | endofweekdisplay: startOfWeek:locale:'long')\n }}</span>\n <span *ngSwitchCase=\"'day'\">{{\n (viewDate | weekday: locale:'long') + ', ' + (viewDate | month: locale) + ' ' + (viewDate | dayofmonth: locale)\n }}</span>\n </span>\n <i class=\"bhi-arrow-right\" (click)=\"addDate()\"></i>\n </div>\n `,\n styleUrls: ['./AgendaDateChange.scss'],\n standalone: false,\n})\nexport class NovoAgendaDateChangeElement {\n /**\n * The current view\n */\n @Input()\n view: string;\n\n /**\n * The current view date\n */\n @Input()\n viewDate: Date;\n\n @Input()\n locale: string;\n\n /**\n * Called when the view date is changed\n */\n @Output()\n viewDateChange: EventEmitter<Date> = new EventEmitter();\n\n constructor(@Inject(LOCALE_ID) locale: string) {\n this.locale = locale;\n }\n\n /**\n * @hidden\n */\n subtractDate(): void {\n this.changeDate(-1);\n }\n\n addDate(): void {\n this.changeDate(1);\n }\n\n changeDate(unit: number): void {\n const addFn: any = {\n day: DateUtil.addDays,\n week: DateUtil.addWeeks,\n month: DateUtil.addMonths,\n }[this.view];\n\n this.viewDateChange.emit(addFn(this.viewDate, unit));\n }\n\n get startOfWeek() {\n return DateUtil.startOfWeek(this.viewDate);\n }\n\n get endOfWeek() {\n return DateUtil.endOfWeek(this.viewDate);\n }\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { CalendarEvent } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-event-type-legend',\n template: `\n <ng-template #defaultTemplate>\n <div class=\"cal-event-legend\">\n <div\n class=\"cal-event-type\"\n *ngFor=\"let type of events | groupBy: 'type'\"\n (click)=\"$event.stopPropagation(); eventTypeClicked.emit({ event: type?.key })\"\n >\n <div class=\"cal-event-type-swatch\"></div>\n <div>{{ type?.key }}</div>\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{ events: events, eventTypeClicked: eventTypeClicked }\"\n >\n </ng-template>\n `,\n standalone: false,\n})\nexport class NovoEventTypeLegendElement {\n @Input()\n events: CalendarEvent[];\n\n @Input()\n customTemplate: TemplateRef<any>;\n\n @Output()\n eventTypeClicked: EventEmitter<any> = new EventEmitter();\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { CalendarEvent } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-agenda-all-day-event',\n template: `\n <ng-template #defaultTemplate>\n <div class=\"cal-all-day-event\" [style.backgroundColor]=\"event.color.secondary\" [style.borderColor]=\"event.color.primary\">\n {{ event.title }}\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n event: event,\n eventClicked: eventClicked\n }\"\n >\n </ng-template>\n `,\n standalone: false,\n})\nexport class NovoAgendaAllDayEventElement {\n @Input()\n event: CalendarEvent;\n\n @Input()\n customTemplate: TemplateRef<any>;\n\n @Output()\n eventClicked: EventEmitter<any> = new EventEmitter();\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { DayViewEvent } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-agenda-day-event',\n template: `\n <ng-template #defaultTemplate>\n <div\n class=\"cal-event\"\n [style.borderColor]=\"dayEvent.event.color.secondary\"\n [class.cal-starts-within-day]=\"!dayEvent.startsBeforeDay\"\n [class.cal-ends-within-day]=\"!dayEvent.endsAfterDay\"\n [ngClass]=\"dayEvent.event.cssClass\"\n [tooltip]=\"dayEvent.event.description\"\n [tooltipPosition]=\"tooltipPosition\"\n (click)=\"eventClicked.emit({ event: dayEvent.event })\"\n >\n <div class=\"cal-event-ribbon\" [style.backgroundColor]=\"dayEvent.event.color.primary\"></div>\n <div class=\"cal-event-group\">\n <div class=\"cal-event-title\">{{ dayEvent.event.title }}</div>\n <div class=\"cal-event-description\">{{ dayEvent.event?.description }}</div>\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{ dayEvent: dayEvent, tooltipPosition: tooltipPosition, eventClicked: eventClicked }\"\n >\n </ng-template>\n `,\n standalone: false,\n})\nexport class NovoAgendaDayEventElement {\n @Input()\n dayEvent: DayViewEvent;\n\n @Input()\n tooltipPosition: string;\n\n @Input()\n customTemplate: TemplateRef<any>;\n\n @Output()\n eventClicked: EventEmitter<any> = new EventEmitter();\n}\n","import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'hours',\n standalone: false,\n})\nexport class HoursPipe implements PipeTransform {\n constructor(@Inject(LOCALE_ID) private locale: string = 'en-US') {}\n transform(date: Date, locale: string = this.locale, method: 'numeric' | '2-digit' = 'numeric'): string {\n return new Intl.DateTimeFormat(locale, { hour: method }).format(date);\n }\n}\n","import { Component, Input, TemplateRef } from '@angular/core';\nimport { DayViewHourSegment } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-agenda-day-hour-segment',\n template: `\n <ng-template #defaultTemplate>\n <div\n class=\"cal-hour-segment\"\n [class.cal-hour-start]=\"segment.isStart\"\n [class.cal-after-hour-start]=\"!segment.isStart\"\n [ngClass]=\"segment.cssClass\"\n >\n <div class=\"cal-time\">\n {{ segment.date | hours: locale }}\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n segment: segment,\n locale: locale\n }\"\n >\n </ng-template>\n `,\n standalone: false,\n})\nexport class NovoAgendaHourSegmentElement {\n @Input()\n segment: DayViewHourSegment;\n\n @Input()\n locale: string;\n\n @Input()\n customTemplate: TemplateRef<any>;\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n LOCALE_ID,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport {\n CalendarEvent,\n CalendarEventTimesChangedEvent,\n DayView,\n DayViewHour,\n getDayView,\n getDayViewHourGrid,\n} from 'novo-elements/utils';\n\n/**\n * @hidden\n */\nconst SEGMENT_HEIGHT: number = 30;\n\n/**\n * @hidden\n */\nconst MINUTES_IN_HOUR: number = 60;\n\n/**\n * Shows all events on a given day. Example usage:\n *\n * ```typescript\n * <novo-agenda-day\n * [viewDate]=\"viewDate\"\n * [events]=\"events\">\n * </novo-agenda-day>\n * ```\n */\n@Component({\n selector: 'novo-agenda-day',\n template: `\n <div class=\"cal-day-view\" #dayViewContainer>\n <novo-agenda-all-day-event\n *ngFor=\"let event of view.allDayEvents\"\n [event]=\"event\"\n [customTemplate]=\"allDayEventTemplate\"\n (eventClicked)=\"eventClicked.emit({ event: event })\"\n >\n </novo-agenda-all-day-event>\n <div class=\"cal-hour-rows\">\n <div class=\"cal-events\">\n <div\n #event\n *ngFor=\"let dayEvent of view?.events\"\n class=\"cal-event-container\"\n [style.marginTop.px]=\"dayEvent.top\"\n [style.height.px]=\"dayEvent.height\"\n [style.marginLeft.px]=\"dayEvent.left + 70\"\n [style.width.px]=\"dayEvent.width - 1\"\n >\n <novo-agenda-day-event\n [dayEvent]=\"dayEvent\"\n [tooltipPosition]=\"tooltipPosition\"\n [customTemplate]=\"eventTemplate\"\n (eventClicked)=\"eventClicked.emit($event)\"\n >\n </novo-agenda-day-event>\n </div>\n </div>\n <div class=\"cal-hour\" *ngFor=\"let hour of hours\" [style.minWidth.px]=\"view?.width + 70\">\n <novo-agenda-day-hour-segment\n *ngFor=\"let segment of hour.segments\"\n [segment]=\"segment\"\n [locale]=\"locale\"\n [customTemplate]=\"hourSegmentTemplate\"\n (click)=\"hourSegmentClicked.emit({ date: segment.date })\"\n >\n </novo-agenda-day-hour-segment>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./AgendaDayView.scss', '../common/AgendaHoursLayout.scss'],\n standalone: false,\n})\nexport class NovoAgendaDayViewElement implements OnChanges, OnInit, OnDestroy {\n /**\n * The current view date\n */\n @Input()\n viewDate: Date;\n\n /**\n * An array of events to display on view\n */\n @Input()\n events: CalendarEvent[] = [];\n\n /**\n * The number of segments in an hour. Must be <= 6\n */\n @Input()\n hourSegments: number = 2;\n\n /**\n * The day start hours in 24 hour time. Must be 0-23\n */\n @Input()\n dayStartHour: number = 0;\n\n /**\n * The day start minutes. Must be 0-59\n */\n @Input()\n dayStartMinute: number = 0;\n\n /**\n * The day end hours in 24 hour time. Must be 0-23\n */\n @Input()\n dayEndHour: number = 23;\n\n /**\n * The day end minutes. Must be 0-59\n */\n @Input()\n dayEndMinute: number = 59;\n\n /**\n * The width in pixels of each event on the view\n */\n @Input()\n eventWidth: number = 150;\n\n /**\n * An observable that when emitted on will re-render the current view\n */\n @Input()\n refresh: Subject<any>;\n\n /**\n * The locale used to format dates\n */\n @Input()\n locale: string;\n\n /**\n * A function that will be called before each hour segment is called. The first argument will contain the hour segment.\n * If you add the `cssClass` property to the segment it will add that class to the hour segment in the template\n */\n @Input()\n hourSegmentModifier: Function;\n\n /**\n * The grid size to snap resizing and dragging of events to\n */\n @Input()\n eventSnapSize: number = 30;\n\n /**\n * The placement of the event tooltip\n */\n @Input()\n tooltipPosition: string = 'top';\n\n /**\n * A custom template to use to replace the hour segment\n */\n @Input()\n hourSegmentTemplate: TemplateRef<any>;\n\n /**\n * A custom template to use for all day events\n */\n @Input()\n allDayEventTemplate: TemplateRef<any>;\n\n /**\n * A custom template to use for day view events\n */\n @Input()\n eventTemplate: TemplateRef<any>;\n\n /**\n * Called when an event title is clicked\n */\n @Output()\n eventClicked: EventEmitter<{ event: CalendarEvent }> = new EventEmitter<{ event: CalendarEvent }>();\n\n /**\n * Called when an hour segment is clicked\n */\n @Output()\n hourSegmentClicked: EventEmitter<{ date: Date }> = new EventEmitter<{ date: Date }>();\n\n /**\n * Called when an event is resized or dragged and dropped\n */\n @Output()\n eventTimesChanged: EventEmitter<CalendarEventTimesChangedEvent> = new EventEmitter<CalendarEventTimesChangedEvent>();\n\n /**\n * @hidden\n */\n hours: DayViewHour[] = [];\n\n /**\n * @hidden\n */\n view: DayView;\n\n /**\n * @hidden\n */\n width: number = 0;\n\n /**\n * @hidden\n */\n refreshSubscription: Subscription;\n\n /**\n * @hidden\n */\n currentResize: {\n originalTop: number;\n originalHeight: number;\n edge: string;\n };\n\n /**\n * @hidden\n */\n validateDrag: Function;\n\n /**\n * @hidden\n */\n validateResize: Function;\n\n /**\n * @hidden\n */\n constructor(private cdr: ChangeDetectorRef, @Inject(LOCALE_ID) locale: string) {\n this.locale = locale;\n }\n\n /**\n * @hidden\n */\n ngOnInit(): void {\n if (this.refresh) {\n this.refreshSubscription = this.refresh.subscribe(() => {\n this.refreshAll();\n this.cdr.detectChanges();\n });\n }\n }\n\n /**\n * @hidden\n */\n ngOnDestroy(): void {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n }\n\n /**\n * @hidden\n */\n ngOnChanges(changes: any): void {\n if (changes.viewDate || changes.dayStartHour || changes.dayStartMinute || changes.dayEndHour || changes.dayEndMinute) {\n this.refreshHourGrid();\n }\n\n if (\n changes.viewDate ||\n changes.events ||\n changes.dayStartHour ||\n changes.dayStartMinute ||\n changes.dayEndHour ||\n changes.dayEndMinute ||\n changes.eventWidth\n ) {\n this.refreshView();\n }\n }\n\n /*\n eventDropped(dropEvent: {dropData?: {event?: CalendarEvent}}, segment: DayViewHourSegment): void {\n if (dropEvent.dropData && dropEvent.dropData.event) {\n this.eventTimesChanged.emit({event: dropEvent.dropData.event, newStart: segment.date});\n }\n }\n\n resizeStarted(event: DayViewEvent, resizeEvent: ResizeEvent, dayViewContainer: HTMLElement): void {\n this.currentResize = {\n originalTop: event.top,\n originalHeight: event.height,\n edge: typeof resizeEvent.edges.top !== 'undefined' ? 'top' : 'bottom'\n };\n const resizeHelper: CalendarResizeHelper = new CalendarResizeHelper(dayViewContainer);\n this.validateResize = ({rectangle}) => resizeHelper.validateResize({rectangle});\n this.cdr.detectChanges();\n }\n\n resizing(event: DayViewEvent, resizeEvent: ResizeEvent): void {\n if (resizeEvent.edges.top) {\n event.top = this.currentResize.originalTop + +resizeEvent.edges.top;\n event.height = this.currentResize.originalHeight - +resizeEvent.edges.top;\n } else if (resizeEvent.edges.bottom) {\n event.height = this.currentResize.originalHeight + +resizeEvent.edges.bottom;\n }\n }\n\n resizeEnded(dayEvent: DayViewEvent): void {\n\n let pixelsMoved: number;\n if (this.currentResize.edge === 'top') {\n pixelsMoved = (dayEvent.top - this.currentResize.originalTop);\n } else {\n pixelsMoved = (dayEvent.height - this.currentResize.originalHeight);\n }\n\n dayEvent.top = this.currentResize.originalTop;\n dayEvent.height = this.currentResize.originalHeight;\n\n const pixelAmountInMinutes: number = MINUTES_IN_HOUR / (this.hourSegments * SEGMENT_HEIGHT);\n const minutesMoved: number = pixelsMoved * pixelAmountInMinutes;\n let newStart: Date = dayEvent.event.start;\n let newEnd: Date = dayEvent.event.end;\n if (this.currentResize.edge === 'top') {\n newStart = addMinutes(newStart, minutesMoved);\n } else if (newEnd) {\n newEnd = addMinutes(newEnd, minutesMoved);\n }\n\n this.eventTimesChanged.emit({newStart, newEnd, event: dayEvent.event});\n this.currentResize = null;\n\n }\n\n dragStart(event: HTMLElement, dayViewContainer: HTMLElement): void {\n const dragHelper: CalendarDragHelper = new CalendarDragHelper(dayViewContainer, event);\n this.validateDrag = ({x, y}) => !this.currentResize && dragHelper.validateDrag({x, y});\n this.cdr.detectChanges();\n }\n\n eventDragged(dayEvent: DayViewEvent, draggedInPixels: number): void {\n const pixelAmountInMinutes: number = MINUTES_IN_HOUR / (this.hourSegments * SEGMENT_HEIGHT);\n const minutesMoved: number = draggedInPixels * pixelAmountInMinutes;\n const newStart: Date = addMinutes(dayEvent.event.start, minutesMoved);\n let newEnd: Date;\n if (dayEvent.event.end) {\n newEnd = addMinutes(dayEvent.event.end, minutesMoved);\n }\n this.eventTimesChanged.emit({newStart, newEnd, event: dayEvent.event});\n }\n */\n\n private refreshHourGrid(): void {\n this.hours = getDayViewHourGrid({\n viewDate: this.viewDate,\n hourSegments: this.hourSegments,\n dayStart: {\n hour: this.dayStartHour,\n minute: this.dayStartMinute,\n },\n dayEnd: {\n hour: this.dayEndHour,\n minute: this.dayEndMinute,\n },\n });\n if (this.hourSegmentModifier) {\n this.hours.forEach((hour) => {\n hour.segments.forEach((segment) => this.hourSegmentModifier(segment));\n });\n }\n }\n\n private refreshView(): void {\n this.view = getDayView({\n events: this.events,\n viewDate: this.viewDate,\n hourSegments: this.hourSegments,\n dayStart: {\n hour: this.dayStartHour,\n minute: this.dayStartMinute,\n },\n dayEnd: {\n hour: this.dayEndHour,\n minute: this.dayEndMinute,\n },\n eventWidth: this.eventWidth,\n segmentHeight: SEGMENT_HEIGHT,\n });\n }\n\n private refreshAll(): void {\n this.refreshHourGrid();\n this.refreshView();\n }\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { CalendarEvent, CalendarEventResponse, MonthViewDay } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-agenda-month-day',\n template: `\n <ng-template #defaultTemplate>\n <div class=\"agenda-day-top\">\n <span class=\"agenda-day-badge\" *ngIf=\"day.badgeTotal > 0\">{{ day.badgeTotal }}</span>\n <span class=\"agenda-day-number\">{{ day.date | dayofmonth: locale }}</span>\n </div>\n <div class=\"agenda-events\">\n <div\n class=\"agenda-event\"\n *ngFor=\"let type of day.events | groupBy: 'type'\"\n [style.backgroundColor]=\"type?.value[0]?.color.primary\"\n [ngClass]=\"type?.value[0]?.cssClass\"\n (click)=\"$event.stopPropagation(); eventClicked.emit({ event: type?.value[0] })\"\n >\n {{ type?.value.length }}\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n day: day,\n locale: locale,\n tooltipPosition: tooltipPosition,\n eventClicked: eventClicked,\n accepted: accepted,\n rejected: rejected,\n maybes: maybes\n }\"\n >\n </ng-template>\n `,\n host: {\n '[class]': '\"agenda-cell agenda-day-cell \" + day?.cssClass',\n '[class.agenda-day-accepted]': 'accepted.length',\n '[class.agenda-day-rejected]': 'rejected.length',\n '[class.agenda-past]': 'day.isPast',\n '[class.agenda-today]': 'day.isToday',\n '[class.agenda-future]': 'day.isFuture',\n '[class.agenda-weekend]': 'day.isWeekend',\n '[class.agenda-in-month]': 'day.inMonth',\n '[class.agenda-out-month]': '!day.inMonth',\n '[class.agenda-has-events]': 'day.events.length > 0',\n '[style.backgroundColor]': 'day.backgroundColor',\n },\n standalone: false,\n})\nexport class NovoAgendaMonthDayElement {\n @Input()\n day: MonthViewDay;\n\n @Input()\n locale: string;\n\n @Input()\n tooltipPosition: string;\n\n @Input()\n customTemplate: TemplateRef<any>;\n\n @Output()\n eventClicked: EventEmitter<{ event: CalendarEvent }> = new EventEmitter<{ event: CalendarEvent }>();\n\n get accepted(): Array<CalendarEvent> {\n if (!this.day) {\n return [];\n }\n return this.day.events.filter((evt) => {\n return evt.response === CalendarEventResponse.Accepted;\n });\n }\n\n get rejected(): Array<CalendarEvent> {\n if (!this.day) {\n return [];\n }\n return this.day.events.filter((evt) => {\n return evt.response === CalendarEventResponse.Rejected;\n });\n }\n\n get maybes(): Array<CalendarEvent> {\n if (!this.day) {\n return [];\n }\n return this.day.events.filter((evt) => {\n return evt.response === CalendarEventResponse.Maybe;\n });\n }\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { addMonths, subMonths } from 'date-fns';\nimport { WeekDay } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-agenda-month-header',\n template: `\n <ng-template #defaultTemplate>\n <div class=\"agenda-header\">\n <div class=\"agenda-header-top\">\n <novo-button theme=\"icon\" icon=\"previous\" (click)=\"prevMonth($event)\"></novo-button>\n <div class=\"agenda-month\">{{ viewDate | month: locale }}</div>\n <novo-button theme=\"icon\" icon=\"next\" (click)=\"nextMonth($event)\"></novo-button>\n </div>\n <div class=\"agenda-weekdays\">\n <div\n class=\"agenda-weekday\"\n *ngFor=\"let day of days\"\n [class.agenda-past]=\"day.isPast\"\n [class.agenda-today]=\"day.isToday\"\n [class.agenda-future]=\"day.isFuture\"\n [class.agenda-weekend]=\"day.isWeekend\"\n >\n {{ day.date | weekday: locale }}\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{ days: days, locale: locale, viewDate: viewDate }\"\n >\n </ng-template>\n `,\n standalone: false,\n})\nexport class NovoAgendaMonthHeaderElement {\n @Input()\n viewDate: Date;\n\n @Input()\n days: WeekDay[];\n\n @Input()\n locale: string;\n\n @Input()\n customTemplate: TemplateRef<any>;\n\n /**\n * Called when the view date is changed\n */\n @Output()\n viewDateChange: EventEmitter<Date> = new EventEmitter();\n\n prevMonth(event: Event) {\n this.viewDateChange.emit(subMonths(this.viewDate, 1));\n }\n\n nextMonth(event: Event) {\n this.viewDateChange.emit(addMonths(this.viewDate, 1));\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n LOCALE_ID,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { addSeconds, Day, differenceInSeconds, getDate, getMonth, getYear, setDate, setMonth, setYear } from 'date-fns';\nimport { Subject, Subscription } from 'rxjs';\nimport {\n CalendarEvent,\n CalendarEventTimesChangedEvent,\n getMonthView,\n getWeekViewHeader,\n MonthView,\n MonthViewDay,\n WeekDay,\n} from 'novo-elements/utils';\n\n/**\n * Shows all events on a given month. Example usage:\n *\n * ```\n * <novo-agenda-month-view\n * [viewDate]=\"viewDate\"\n * [events]=\"events\">\n * </novo-agenda-month-view>\n * ```\n */\n@Component({\n selector: 'novo-agenda-month',\n template: `\n <div class=\"agenda-month-view\">\n <novo-agenda-month-header\n [(viewDate)]=\"viewDate\"\n [days]=\"columnHeaders\"\n [locale]=\"locale\"\n [customTemplate]=\"headerTemplate\"\n (viewDateChange)=\"refreshAll()\"\n >\n </novo-agenda-month-header>\n <div class=\"agenda-days\">\n <div *ngFor=\"let rowIndex of view.rowOffsets\">\n <div class=\"agenda-cell-row\">\n <novo-agenda-month-day\n *ngFor=\"let day of view.days | slice: rowIndex:rowIndex + view.totalDaysVisibleInWeek\"\n [day]=\"day\"\n [locale]=\"locale\"\n [customTemplate]=\"cellTemplate\"\n (click)=\"dayClicked.emit({ day: day })\"\n (eventClicked)=\"eventClicked.emit({ day: day, event: $event.event })\"\n >\n </novo-agenda-month-day>\n </div>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./AgendaMonthView.scss'],\n standalone: false,\n})\nexport class NovoAgendaMonthViewElement implements OnChanges, OnInit, OnDestroy {\n /**\n * The current view date\n */\n @Input()\n viewDate: Date;\n\n /**\n * An array of events to display on view\n */\n @Input()\n events: CalendarEvent[] = [];\n\n /**\n * An array of day indexes (0 = sunday, 1 = monday etc) that will be hidden on the view\n */\n @Input()\n excludeDays: number[] = [];\n\n /**\n * A function that will be called before each cell is rendered. The first argument will contain the calendar cell.\n * If you add the `cssClass` property to the cell it will add that class to the cell in the template\n */\n @Input()\n dayModifier: Function;\n\n /**\n * An observable that when emitted on will re-render the current view\n */\n @Input()\n refresh: Subject<any>;\n\n /**\n * The locale used to format dates\n */\n @Input()\n locale: string = 'en-US';\n\n /**\n * The placement of the event tooltip\n */\n @Input()\n tooltipPosition: string = 'top';\n\n /**\n * The start number of the week\n */\n @Input()\n weekStartsOn: Day;\n\n /**\n * A custom template to use to replace the header\n */\n @Input()\n headerTemplate: TemplateRef<any>;\n\n /**\n * A custom template to use to replace the day cell\n */\n @Input()\n cellTemplate: TemplateRef<any>;\n\n /**\n * Called when the day cell is clicked\n */\n @Output()\n dayClicked: EventEmitter<{ day: MonthViewDay }> = new EventEmitter<{ day: MonthViewDay }>();\n\n /**\n * Called when the event title is clicked\n */\n @Output()\n eventClicked: EventEmitter<{ day: any; event: CalendarEvent }> = new EventEmitter<{ day: any; event: CalendarEvent }>();\n\n /**\n * Called when an event is dragged and dropped\n */\n @Output()\n eventTimesChanged: EventEmitter<CalendarEventTimesChangedEvent> = new EventEmitter<CalendarEventTimesChangedEvent>();\n\n @Output()\n viewDateChange: EventEmitter<Date> = new EventEmitter<Date>();\n\n /**\n * @hidden\n */\n columnHeaders: WeekDay[];\n\n /**\n * @hidden\n */\n view: MonthView;\n\n /**\n * @hidden\n */\n refreshSubscription: Subscription;\n\n /**\n * @hidden\n */\n constructor(private cdr: ChangeDetectorRef, @Inject(LOCALE_ID) locale: string) {\n this.locale = locale;\n }\n\n /**\n * @hidden\n */\n ngOnInit(): void {\n if (this.refresh) {\n this.refreshSubscription = this.refresh.subscribe(() => {\n this.refreshAll();\n this.cdr.markForCheck();\n });\n }\n }\n\n /**\n * @hidden\n */\n ngOnChanges(changes: any): void {\n if (changes.viewDate || changes.excludeDays) {\n this.refreshHeader();\n }\n if (changes.viewDate || changes.events || changes.excludeDays) {\n this.refreshBody();\n }\n }\n\n /**\n * @hidden\n */\n ngOnDestroy(): void {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n }\n\n /**\n * @hidden\n */\n eventDropped(day: MonthViewDay, event: CalendarEvent): void {\n const year: number = getYear(day.date);\n const month: number = getMonth(day.date);\n const date: number = getDate(day.date);\n const newStart: Date = setYear(setMonth(setDate(event.start, date), month), year);\n let newEnd: Date;\n if (event.end) {\n const secondsDiff: number = differenceInSeconds(newStart, event.start);\n newEnd = addSeconds(event.end, secondsDiff);\n }\n this.eventTimesChanged.emit({ event, newStart, newEnd });\n }\n\n private refreshHeader(): void {\n this.columnHeaders = getWeekViewHeader({\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n });\n }\n\n private refreshBody(): void {\n this.view = getMonthView({\n events: this.events,\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n });\n if (this.dayModifier) {\n this.view.days.forEach((day) => this.dayModifier(day));\n }\n }\n\n public refreshAll(): void {\n this.refreshHeader();\n this.refreshBody();\n this.viewDateChange.emit(this.viewDate);\n }\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { WeekViewEvent } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-agenda-week-event',\n template: `\n <ng-template #defaultTemplate>\n <div\n class=\"cal-event\"\n [class.cal-starts-within-week]=\"!weekEvent.startsBeforeWeek\"\n [class.cal-ends-within-week]=\"!weekEvent.endsAfterWeek\"\n [ngClass]=\"weekEvent.event?.cssClass\"\n [tooltip]=\"weekEvent.event.description\"\n [tooltipPosition]=\"tooltipPosition\"\n (click)=\"eventClicked.emit({ event: weekEvent.event })\"\n >\n <div class=\"cal-event-ribbon\" [style.backgroundColor]=\"weekEvent.event.color.primary\"></div>\n <div class=\"cal-event-title\">{{ weekEvent.event?.title }}</div>\n <div class=\"cal-event-description\">{{ weekEvent.event?.description }}</div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{ weekEvent: weekEvent, tooltipPosition: tooltipPosition, eventClicked: eventClicked }\"\n >\n </ng-template>\n `,\n standalone: false,\n})\nexport class NovoAgendaWeekEventElement {\n @Input()\n weekEvent: WeekViewEvent;\n\n @Input()\n tooltipPosition: string;\n\n @Input()\n customTemplate: TemplateRef<any>;\n\n @Output()\n eventClicked: EventEmitter<any> = new EventEmitter();\n}\n","import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { CalendarEvent, WeekDay } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-agenda-week-header',\n template: `\n <ng-template #defaultTemplate>\n <div class=\"cal-day-headers\">\n <div\n class=\"cal-header\"\n *ngFor=\"let day of days\"\n [class.cal-past]=\"day.isPast\"\n [class.cal-today]=\"day.isToday\"\n [class.cal-future]=\"day.isFuture\"\n [class.cal-weekend]=\"day.isWeekend\"\n [class.cal-drag-over]=\"day.dragOver\"\n (click)=\"dayClicked.emit({ date: day.date })\"\n mwlDroppable\n (dragEnter)=\"day.dragOver = true\"\n (dragLeave)=\"day.dragOver = false\"\n (drop)=\"day.dragOver = false; eventDropped.emit({ event: $event.dropData.event, newStart: day.date })\"\n >\n <b>{{ day.date | weekday: locale:'long' }}</b\n ><br />\n <span>{{ day.date | monthday: locale }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{ days: days, locale: locale, dayClicked: dayClicked, eventDropped: eventDropped }\"\n >\n </ng-template>\n `,\n standalone: false,\n})\nexport class NovoAgendaWeekHeaderElement {\n @Input()\n days: WeekDay[];\n\n @Input()\n locale: string;\n\n @Input()\n customTemplate: TemplateRef<any>;\n\n @Output()\n dayClicked: EventEmitter<{ date: Date }> = new EventEmitter<{ date: Date }>();\n\n @Output()\n eventDropped: EventEmitter<{ event: CalendarEvent; newStart: Date }> = new EventEmitter<{ event: CalendarEvent; newStart: Date }>();\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n LOCALE_ID,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { Day } from 'date-fns';\nimport { Subject, Subscription } from 'rxjs';\nimport {\n CalendarEvent,\n CalendarEventTimesChangedEvent,\n DayViewHour,\n getDayViewHourGrid,\n getWeekView,\n getWeekViewHeader,\n WeekDay,\n WeekViewEventRow,\n} from 'novo-elements/utils';\n\n/**\n * @hidden\n */\nconst SEGMENT_HEIGHT: number = 30;\n\n/**\n * @hidden\n */\nconst MINUTES_IN_HOUR: number = 60;\n/**\n * Shows all events on a given week. Example usage:\n *\n * ```typescript\n * <novo-agenda-week\n * [viewDate]=\"viewDate\"\n * [events]=\"events\">\n * </novo-agenda-week>\n * ```\n */\n@Component({\n selector: 'novo-agenda-week',\n template: `\n <div class=\"cal-week-view\" #weekViewContainer>\n <novo-agenda-week-header [days]=\"days\" [locale]=\"locale\" [customTemplate]=\"headerTemplate\" (dayClicked)=\"dayClicked.emit($event)\">\n </novo-agenda-week-header>\n <div *ngFor=\"let eventRow of eventRows\" #eventRowContainer>\n <div\n class=\"cal-event-container\"\n #event\n *ngFor=\"let weekEvent of eventRow.row\"\n [style.width]=\"(100 / days.length) * weekEvent.span + '%'\"\n [style.marginTop.px]=\"weekEvent.top\"\n [style.height.px]=\"weekEvent.height\"\n [style.marginLeft]=\"(100 / days.length) * weekEvent.offset + '%'\"\n >\n <novo-agenda-week-event\n [weekEvent]=\"weekEvent\"\n [tooltipPosition]=\"tooltipPosition\"\n [customTemplate]=\"eventTemplate\"\n (eventClicked)=\"eventClicked.emit($event)\"\n >\n </novo-agenda-week-event>\n </div>\n </div>\n <div class=\"cal-hour\" *ngFor=\"let hour of hours\" [style.minWidth.px]=\"70\">\n <novo-agenda-day-hour-segment\n *ngFor=\"let segment of hour.segments\"\n [segment]=\"segment\"\n [locale]=\"locale\"\n [customTemplate]=\"hourSegmentTemplate\"\n (click)=\"hourSegmentClicked.emit({ date: segment.date })\"\n >\n </novo-agenda-day-hour-segment>\n </div>\n </div>\n `,\n styleUrls: ['./AgendaWeekView.scss', '../common/AgendaHoursLayout.scss'],\n standalone: false,\n})\nexport class NovoAgendaWeekViewElement implements OnChanges, OnInit, OnDestroy {\n /**\n * The current view date\n */\n @Input()\n viewDate: Date;\n\n /**\n * An array of events to display on view\n */\n @Input()\n events: CalendarEvent[] = [];\n\n /**\n * An array of day indexes (0 = sunday, 1 = monday etc) that will be hidden on the view\n */\n @Input()\n excludeDays: number[] = [];\n\n /**\n * An observable that when emitted on will re-render the current view\n */\n @Input()\n refresh: Subject<any>;\n\n /**\n * The locale used to format dates\n */\n @Input()\n locale: string;\n\n /**\n * The placement of the event tooltip\n */\n @Input()\n tooltipPosition: string = 'bottom';\n\n /**\n * The start number of the week\n */\n @Input()\n weekStartsOn: Day;\n\n /**\n * A custom template to use to replace the header\n */\n @Input()\n headerTemplate: TemplateRef<any>;\n\n /**\n * A custom template to use for week view events\n */\n @Input()\n eventTemplate: TemplateRef<any>;\n\n /**\n * The precision to display events.\n * `days` will round event start and end dates to the nearest day and `minutes` will not do this rounding\n */\n @Input()\n precision: 'days' | 'minutes' = 'days';\n /**\n * The number of segments in an hour. Must be <= 6\n */\n @Input()\n hourSegments: number = 2;\n\n /**\n * The day start hours in 24 hour time. Must be 0-23\n */\n @Input()\n dayStartHour: number = 0;\n\n /**\n * The day start minutes. Must be 0-59\n */\n @Input()\n dayStartMinute: number = 0;\n\n /**\n * The day end hours in 24 hour time. Must be 0-23\n */\n @Input()\n dayEndHour: number = 23;\n\n /**\n * The day end minutes. Must be 0-59\n */\n @Input()\n dayEndMinute: number = 59;\n /**\n * A custom template to use to replace the hour segment\n */\n @Input()\n hourSegmentTemplate: TemplateRef<any>;\n /**\n * Called when an hour segment is clicked\n */\n @Output()\n hourSegmentClicked: EventEmitter<{ date: Date }> = new EventEmitter<{ date: Date }>();\n /**\n * Called when a header week day is clicked\n */\n @Output()\n dayClicked: EventEmitter<{ date: Date }> = new EventEmitter<{ date: Date }>();\n\n /**\n * Called when the event title is clicked\n */\n @Output()\n eventClicked: EventEmitter<{ event: CalendarEvent }> = new EventEmitter<{ event: CalendarEvent }>();\n\n /**\n * Called when an event is resized or dragged and dropped\n */\n @Output()\n eventTimesChanged: EventEmitter<CalendarEventTimesChangedEvent> = new EventEmitter<CalendarEventTimesChangedEvent>();\n\n /**\n * @hidden\n */\n days: WeekDay[];\n /**\n * @hidden\n */\n hours: DayViewHour[] = [];\n\n /**\n * @hidden\n */\n eventRows: WeekViewEventRow[] = [];\n\n /**\n * @hidden\n */\n refreshSubscription: Subscription;\n\n /**\n * @hidden\n */\n currentResize: {\n originalOffset: number;\n originalSpan: number;\n edge: string;\n };\n\n /**\n * @hidden\n */\n validateDrag: Function;\n\n /**\n * @hidden\n */\n validateResize: Function;\n\n /**\n * @hidden\n */\n constructor(private cdr: ChangeDetectorRef, @Inject(LOCALE_ID) locale: string) {\n this.locale = locale;\n }\n\n /**\n * @hidden\n */\n ngOnInit(): void {\n if (this.refresh) {\n this.refreshSubscription = this.refresh.subscribe(() => {\n this.refreshAll();\n this.cdr.detectChanges();\n });\n }\n }\n\n /**\n * @hidden\n */\n ngOnChanges(changes: any): void {\n if (changes.viewDate || changes.excludeDays) {\n this.refreshHeader();\n }\n\n if (changes.events || changes.viewDate || changes.excludeDays) {\n this.refreshBody();\n }\n\n if (changes.viewDate || changes.dayStartHour || changes.dayStartMinute || changes.dayEndHour || changes.dayEndMinute) {\n this.refreshHourGrid();\n }\n }\n\n /**\n * @hidden\n */\n ngOnDestroy(): void {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n }\n\n getDayColumnWidth(eventRowContainer: HTMLElement): number {\n return Math.floor(eventRowContainer.offsetWidth / this.days.length);\n }\n\n private refreshHeader(): void {\n this.days = getWeekViewHeader({\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n });\n }\n\n private refreshBody(): void {\n this.eventRows = getWeekView({\n events: this.events,\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n hourSegments: this.hourSegments,\n segmentHeight: SEGMENT_HEIGHT,\n dayStart: {\n hour: this.dayStartHour,\n minute: this.dayStartMinute,\n },\n dayEnd: {\n hour: this.dayEndHour,\n minute: this.dayEndMinute,\n },\n });\n }\n\n private refreshHourGrid(): void {\n this.hours = getDayViewHourGrid({\n viewDate: this.viewDate,\n hourSegments: this.hourSegments,\n dayStart: {\n hour: this.dayStartHour,\n minute: this.dayStartMinute,\n },\n dayEnd: {\n hour: this.dayEndHour,\n minute: this.dayEndMinute,\n },\n });\n }\n\n private refreshAll(): void {\n this.refreshHeader();\n this.refreshHourGrid();\n this.refreshBody();\n }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoPipesModule } from 'novo-elements/pipes';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\n// Common Elements\nimport { NovoAgendaDateChangeElement } from './common/AgendaDateChange';\nimport { NovoEventTypeLegendElement } from './common/EventTypeLegend';\n// Day View\nimport { NovoAgendaAllDayEventElement } from './day/AgendaAllDayEvent';\nimport { NovoAgendaDayEventElement } from './day/AgendaDayEvent';\nimport { NovoAgendaDayViewElement } from './day/AgendaDayView';\nimport { NovoAgendaHourSegmentElement } from './day/AgendaHourSegment';\n// Month View\nimport { NovoAgendaMonthDayElement } from './month/AgendaMonthDay';\nimport { NovoAgendaMonthHeaderElement } from './month/AgendaMonthHeader';\nimport { NovoAgendaMonthViewElement } from './month/AgendaMonthView';\n// Week View\nimport { NovoAgendaWeekEventElement } from './week/AgendaWeekEvent';\nimport { NovoAgendaWeekHeaderElement } from './week/AgendaWeekHeader';\nimport { NovoAgendaWeekViewElement } from './week/AgendaWeekView';\n// Pipes\nimport { DayOfMonthPipe } from './pipe/DayOfMonth.pipe';\nimport { EndOfWeekDisplayPipe } from './pipe/EndOfWeekDisplayPipe.pipe';\nimport { HoursPipe } from './pipe/Hours.pipe';\nimport { MonthPipe } from './pipe/Month.pipe';\nimport { MonthDayPipe } from './pipe/MonthDay.pipe';\nimport { WeekdayPipe } from './pipe/Weekday.pipe';\nimport { YearPipe } from './pipe/Year.pipe';\n\n@NgModule({\n imports: [CommonModule, NovoButtonModule, NovoTooltipModule, NovoPipesModule],\n declarations: [\n NovoEventTypeLegendElement,\n NovoAgendaMonthViewElement,\n NovoAgendaMonthHeaderElement,\n NovoAgendaMonthDayElement,\n NovoAgendaWeekViewElement,\n NovoAgendaWeekHeaderElement,\n NovoAgendaWeekEventElement,\n NovoAgendaDayViewElement,\n NovoAgendaDayEventElement,\n NovoAgendaHourSegmentElement,\n NovoAgendaAllDayEventElement,\n NovoAgendaDateChangeElement,\n WeekdayPipe,\n DayOfMonthPipe,\n MonthPipe,\n MonthDayPipe,\n YearPipe,\n HoursPipe,\n EndOfWeekDisplayPipe,\n ],\n exports: [\n NovoEventTypeLegendElement,\n NovoAgendaMonthViewElement,\n NovoAgendaMonthHeaderElement,\n NovoAgendaMonthDayElement,\n NovoAgendaWeekViewElement,\n NovoAgendaWeekHeaderElement,\n NovoAgendaWeekEventElement,\n NovoAgendaDayViewElement,\n NovoAgendaDayEventElement,\n NovoAgendaHourSegmentElement,\n NovoAgendaAllDayEventElement,\n NovoAgendaDateChangeElement,\n WeekdayPipe,\n DayOfMonthPipe,\n MonthPipe,\n MonthDayPipe,\n YearPipe,\n HoursPipe,\n EndOfWeekDisplayPipe,\n ],\n})\nexport class NovoAgendaModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.WeekdayPipe","i3.DayOfMonthPipe","i4.MonthPipe","i5.MonthDayPipe","i6.YearPipe","i7.EndOfWeekDisplayPipe","i2","i2.HoursPipe","SEGMENT_HEIGHT","MINUTES_IN_HOUR","i2.NovoAgendaDayEventElement","i3.NovoAgendaHourSegmentElement","i4.NovoAgendaAllDayEventElement","i3.WeekdayPipe","i2.NovoAgendaMonthHeaderElement","i3.NovoAgendaMonthDayElement","i3.MonthDayPipe","i2.NovoAgendaWeekHeaderElement","i3.NovoAgendaWeekEventElement","i4.NovoAgendaHourSegmentElement"],"mappings":"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