UNPKG

238 kBSource Map (JSON)View Raw
1{"version":3,"file":"angular-calendar.umd.js","sources":["../../../projects/angular-calendar/src/modules/common/click.directive.ts","../../../projects/angular-calendar/src/modules/common/keydown-enter.directive.ts","../../../projects/angular-calendar/src/modules/common/calendar-a11y.provider.ts","../../../projects/angular-calendar/src/modules/common/calendar-a11y.pipe.ts","../../../projects/angular-calendar/src/modules/common/calendar-event-actions.component.ts","../../../projects/angular-calendar/src/modules/common/calendar-event-title-formatter.provider.ts","../../../projects/angular-calendar/src/modules/common/calendar-event-title.pipe.ts","../../../projects/angular-calendar/src/modules/common/calendar-event-title.component.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/angular-calendar/src/modules/common/calendar-tooltip.directive.ts","../../../projects/angular-calendar/src/modules/common/calendar-view.enum.ts","../../../projects/angular-calendar/src/modules/common/util.ts","../../../projects/angular-calendar/src/date-adapters/date-adapter.ts","../../../projects/angular-calendar/src/modules/common/calendar-previous-view.directive.ts","../../../projects/angular-calendar/src/modules/common/calendar-next-view.directive.ts","../../../projects/angular-calendar/src/modules/common/calendar-today.directive.ts","../../../projects/angular-calendar/src/modules/common/calendar-angular-date-formatter.provider.ts","../../../projects/angular-calendar/src/modules/common/calendar-date-formatter.provider.ts","../../../projects/angular-calendar/src/modules/common/calendar-date.pipe.ts","../../../projects/angular-calendar/src/modules/common/calendar-utils.provider.ts","../../../projects/angular-calendar/src/modules/common/calendar-moment-date-formatter.provider.ts","../../../projects/angular-calendar/src/modules/common/calendar-native-date-formatter.provider.ts","../../../projects/angular-calendar/src/modules/common/calendar-event-times-changed-event.interface.ts","../../../projects/angular-calendar/src/modules/common/calendar-common.module.ts","../../../projects/angular-calendar/src/modules/month/calendar-month-view-header.component.ts","../../../projects/angular-calendar/src/modules/month/calendar-month-cell.component.ts","../../../projects/angular-calendar/src/modules/month/calendar-open-day-events.component.ts","../../../projects/angular-calendar/src/modules/month/calendar-month-view.component.ts","../../../projects/angular-calendar/src/modules/month/calendar-month.module.ts","../../../projects/angular-calendar/src/modules/common/calendar-drag-helper.provider.ts","../../../projects/angular-calendar/src/modules/common/calendar-resize-helper.provider.ts","../../../projects/angular-calendar/src/modules/week/calendar-week-view-header.component.ts","../../../projects/angular-calendar/src/modules/week/calendar-week-view-event.component.ts","../../../projects/angular-calendar/src/modules/week/calendar-week-view-hour-segment.component.ts","../../../projects/angular-calendar/src/modules/week/calendar-week-view-current-time-marker.component.ts","../../../projects/angular-calendar/src/modules/week/calendar-week-view.component.ts","../../../projects/angular-calendar/src/modules/week/calendar-week.module.ts","../../../projects/angular-calendar/src/modules/day/calendar-day-view.component.ts","../../../projects/angular-calendar/src/modules/day/calendar-day.module.ts","../../../projects/angular-calendar/src/modules/calendar.module.ts","../../../projects/angular-calendar/src/index.ts","../../../projects/angular-calendar/src/angular-calendar.ts"],"sourcesContent":["import {\n Directive,\n Renderer2,\n ElementRef,\n OnInit,\n OnDestroy,\n Output,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Directive({\n selector: '[mwlClick]',\n})\nexport class ClickDirective implements OnInit, OnDestroy {\n @Input() clickListenerDisabled = false;\n\n @Output('mwlClick') click = new EventEmitter<MouseEvent>(); // eslint-disable-line\n\n private destroy$ = new Subject<void>();\n\n constructor(\n private renderer: Renderer2,\n private elm: ElementRef<HTMLElement>,\n @Inject(DOCUMENT) private document\n ) {}\n\n ngOnInit(): void {\n if (!this.clickListenerDisabled) {\n this.listen()\n .pipe(takeUntil(this.destroy$))\n .subscribe((event) => {\n event.stopPropagation();\n this.click.emit(event);\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n\n private listen() {\n return new Observable<MouseEvent>((observer) => {\n return this.renderer.listen(this.elm.nativeElement, 'click', (event) => {\n observer.next(event);\n });\n });\n }\n}\n","import {\n Directive,\n Output,\n EventEmitter,\n ElementRef,\n NgZone,\n Renderer2,\n OnInit,\n OnDestroy,\n} from '@angular/core';\n\n@Directive({\n selector: '[mwlKeydownEnter]',\n})\nexport class KeydownEnterDirective implements OnInit, OnDestroy {\n @Output('mwlKeydownEnter') keydown = new EventEmitter<KeyboardEvent>(); // eslint-disable-line\n\n private keydownListener: VoidFunction | null = null;\n\n constructor(\n private host: ElementRef<HTMLElement>,\n private ngZone: NgZone,\n private renderer: Renderer2\n ) {}\n\n ngOnInit(): void {\n this.ngZone.runOutsideAngular(() => {\n this.keydownListener = this.renderer.listen(\n this.host.nativeElement,\n 'keydown',\n (event: KeyboardEvent) => {\n if (\n event.keyCode === 13 ||\n event.which === 13 ||\n event.key === 'Enter'\n ) {\n event.preventDefault();\n event.stopPropagation();\n\n this.ngZone.run(() => {\n this.keydown.emit(event);\n });\n }\n }\n );\n });\n }\n\n ngOnDestroy(): void {\n if (this.keydownListener !== null) {\n this.keydownListener();\n this.keydownListener = null;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { formatDate, I18nPluralPipe } from '@angular/common';\nimport { A11yParams } from './calendar-a11y.interface';\n\n/**\n * This class is responsible for adding accessibility to the calendar.\n * You may override any of its methods via angulars DI to suit your requirements.\n * For example:\n *\n * ```typescript\n * import { A11yParams, CalendarA11y } from 'angular-calendar';\n * import { formatDate, I18nPluralPipe } from '@angular/common';\n * import { Injectable } from '@angular/core';\n *\n * // adding your own a11y params\n * export interface CustomA11yParams extends A11yParams {\n * isDrSuess?: boolean;\n * }\n *\n * @Injectable()\n * export class CustomCalendarA11y extends CalendarA11y {\n * constructor(protected i18nPlural: I18nPluralPipe) {\n * super(i18nPlural);\n * }\n *\n * // overriding a function\n * public openDayEventsLandmark({ date, locale, isDrSuess }: CustomA11yParams): string {\n * if (isDrSuess) {\n * return `\n * ${formatDate(date, 'EEEE MMMM d', locale)}\n * Today you are you! That is truer than true! There is no one alive\n * who is you-er than you!\n * `;\n * }\n * }\n * }\n *\n * // in your component that uses the calendar\n * providers: [{\n * provide: CalendarA11y,\n * useClass: CustomCalendarA11y\n * }]\n * ```\n */\n@Injectable()\nexport class CalendarA11y {\n constructor(protected i18nPlural: I18nPluralPipe) {}\n\n /**\n * Aria label for the badges/date of a cell\n * @example: `Saturday October 19 1 event click to expand`\n */\n public monthCell({ day, locale }: A11yParams): string {\n if (day.badgeTotal > 0) {\n return `\n ${formatDate(day.date, 'EEEE MMMM d', locale)},\n ${this.i18nPlural.transform(day.badgeTotal, {\n '=0': 'No events',\n '=1': 'One event',\n other: '# events',\n })},\n click to expand\n `;\n } else {\n return `${formatDate(day.date, 'EEEE MMMM d', locale)}`;\n }\n }\n\n /**\n * Aria label for the open day events start landmark\n * @example: `Saturday October 19 expanded view`\n */\n public openDayEventsLandmark({ date, locale }: A11yParams): string {\n return `\n Beginning of expanded view for ${formatDate(date, 'EEEE MMMM dd', locale)}\n `;\n }\n\n /**\n * Aria label for alert that a day in the month view was expanded\n * @example: `Saturday October 19 expanded`\n */\n public openDayEventsAlert({ date, locale }: A11yParams): string {\n return `${formatDate(date, 'EEEE MMMM dd', locale)} expanded`;\n }\n\n /**\n * Descriptive aria label for an event\n * @example: `Saturday October 19th, Scott's Pizza Party, from 11:00am to 5:00pm`\n */\n public eventDescription({ event, locale }: A11yParams): string {\n if (event.allDay === true) {\n return this.allDayEventDescription({ event, locale });\n }\n\n const aria = `\n ${formatDate(event.start, 'EEEE MMMM dd', locale)},\n ${event.title}, from ${formatDate(event.start, 'hh:mm a', locale)}\n `;\n if (event.end) {\n return aria + ` to ${formatDate(event.end, 'hh:mm a', locale)}`;\n }\n return aria;\n }\n\n /**\n * Descriptive aria label for an all day event\n * @example:\n * `Scott's Party, event spans multiple days: start time October 19 5:00pm, no stop time`\n */\n public allDayEventDescription({ event, locale }: A11yParams): string {\n const aria = `\n ${event.title}, event spans multiple days:\n start time ${formatDate(event.start, 'MMMM dd hh:mm a', locale)}\n `;\n if (event.end) {\n return (\n aria + `, stop time ${formatDate(event.end, 'MMMM d hh:mm a', locale)}`\n );\n }\n return aria + `, no stop time`;\n }\n\n /**\n * Aria label for the calendar event actions icons\n * @returns 'Edit' for fa-pencil icons, and 'Delete' for fa-times icons\n */\n public actionButtonLabel({ action }: A11yParams): string {\n return action.a11yLabel;\n }\n\n /**\n * @returns {number} Tab index to be given to month cells\n */\n public monthCellTabIndex(): number {\n return 0;\n }\n\n /**\n * @returns true if the events inside the month cell should be aria-hidden\n */\n public hideMonthCellEvents(): boolean {\n return true;\n }\n\n /**\n * @returns true if event titles should be aria-hidden (global)\n */\n public hideEventTitle(): boolean {\n return true;\n }\n\n /**\n * @returns true if hour segments in the week view should be aria-hidden\n */\n public hideWeekHourSegment(): boolean {\n return true;\n }\n\n /**\n * @returns true if hour segments in the day view should be aria-hidden\n */\n public hideDayHourSegment(): boolean {\n return true;\n }\n}\n","import { Pipe, PipeTransform, LOCALE_ID, Inject } from '@angular/core';\nimport { CalendarA11y } from './calendar-a11y.provider';\nimport { A11yParams } from './calendar-a11y.interface';\n\n/**\n * This pipe is primarily for rendering aria labels. Example usage:\n * ```typescript\n * // where `myEvent` is a `CalendarEvent` and myLocale is a locale identifier\n * {{ { event: myEvent, locale: myLocale } | calendarA11y: 'eventDescription' }}\n * ```\n */\n@Pipe({\n name: 'calendarA11y',\n})\nexport class CalendarA11yPipe implements PipeTransform {\n constructor(\n private calendarA11y: CalendarA11y,\n @Inject(LOCALE_ID) private locale: string\n ) {}\n\n transform(a11yParams: A11yParams, method: string): string {\n a11yParams.locale = a11yParams.locale || this.locale;\n if (typeof this.calendarA11y[method] === 'undefined') {\n const allowedMethods = Object.getOwnPropertyNames(\n Object.getPrototypeOf(CalendarA11y.prototype)\n ).filter((iMethod) => iMethod !== 'constructor');\n throw new Error(\n `${method} is not a valid a11y method. Can only be one of ${allowedMethods.join(\n ', '\n )}`\n );\n }\n return this.calendarA11y[method](a11yParams);\n }\n}\n","import { Component, Input, TemplateRef } from '@angular/core';\nimport { CalendarEvent, EventAction } from 'calendar-utils';\n\n@Component({\n selector: 'mwl-calendar-event-actions',\n template: `\n <ng-template\n #defaultTemplate\n let-event=\"event\"\n let-trackByActionId=\"trackByActionId\"\n >\n <span *ngIf=\"event.actions\" class=\"cal-event-actions\">\n <a\n class=\"cal-event-action\"\n href=\"javascript:;\"\n *ngFor=\"let action of event.actions; trackBy: trackByActionId\"\n (mwlClick)=\"action.onClick({ event: event, sourceEvent: $event })\"\n (mwlKeydownEnter)=\"\n action.onClick({ event: event, sourceEvent: $event })\n \"\n [ngClass]=\"action.cssClass\"\n [innerHtml]=\"action.label\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"\n { action: action } | calendarA11y: 'actionButtonLabel'\n \"\n >\n </a>\n </span>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n event: event,\n trackByActionId: trackByActionId\n }\"\n >\n </ng-template>\n `,\n})\nexport class CalendarEventActionsComponent {\n @Input() event: CalendarEvent;\n\n @Input() customTemplate: TemplateRef<any>;\n\n trackByActionId = (index: number, action: EventAction) =>\n action.id ? action.id : action;\n}\n","import { CalendarEvent } from 'calendar-utils';\n\n/**\n * This class is responsible for displaying all event titles within the calendar. You may override any of its methods via angulars DI to suit your requirements. For example:\n *\n * ```typescript\n * import { Injectable } from '@angular/core';\n * import { CalendarEventTitleFormatter, CalendarEvent } from 'angular-calendar';\n *\n * @Injectable()\n * class CustomEventTitleFormatter extends CalendarEventTitleFormatter {\n *\n * month(event: CalendarEvent): string {\n * return `Custom prefix: ${event.title}`;\n * }\n *\n * }\n *\n * // in your component\n * providers: [{\n * provide: CalendarEventTitleFormatter,\n * useClass: CustomEventTitleFormatter\n * }]\n * ```\n */\nexport class CalendarEventTitleFormatter {\n /**\n * The month view event title.\n */\n month(event: CalendarEvent, title: string): string {\n return event.title;\n }\n\n /**\n * The month view event tooltip. Return a falsey value from this to disable the tooltip.\n */\n monthTooltip(event: CalendarEvent, title: string): string {\n return event.title;\n }\n\n /**\n * The week view event title.\n */\n week(event: CalendarEvent, title: string): string {\n return event.title;\n }\n\n /**\n * The week view event tooltip. Return a falsey value from this to disable the tooltip.\n */\n weekTooltip(event: CalendarEvent, title: string): string {\n return event.title;\n }\n\n /**\n * The day view event title.\n */\n day(event: CalendarEvent, title: string): string {\n return event.title;\n }\n\n /**\n * The day view event tooltip. Return a falsey value from this to disable the tooltip.\n */\n dayTooltip(event: CalendarEvent, title: string): string {\n return event.title;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CalendarEvent } from 'calendar-utils';\nimport { CalendarEventTitleFormatter } from './calendar-event-title-formatter.provider';\n\n@Pipe({\n name: 'calendarEventTitle',\n})\nexport class CalendarEventTitlePipe implements PipeTransform {\n constructor(private calendarEventTitle: CalendarEventTitleFormatter) {}\n\n transform(title: string, titleType: string, event: CalendarEvent): string {\n return this.calendarEventTitle[titleType](event, title);\n }\n}\n","import { Component, Input, TemplateRef } from '@angular/core';\nimport { CalendarEvent } from 'calendar-utils';\n\n@Component({\n selector: 'mwl-calendar-event-title',\n template: `\n <ng-template #defaultTemplate let-event=\"event\" let-view=\"view\">\n <span\n class=\"cal-event-title\"\n [innerHTML]=\"event.title | calendarEventTitle: view:event\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideEventTitle'\"\n >\n </span>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n event: event,\n view: view\n }\"\n >\n </ng-template>\n `,\n})\nexport class CalendarEventTitleComponent {\n @Input() event: CalendarEvent;\n\n @Input() customTemplate: TemplateRef<any>;\n\n @Input() view: string;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {\n Directive,\n Component,\n HostListener,\n OnDestroy,\n Input,\n ComponentRef,\n Injector,\n ComponentFactoryResolver,\n ViewContainerRef,\n ElementRef,\n ComponentFactory,\n Inject,\n Renderer2,\n TemplateRef,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { PlacementArray, positionElements } from 'positioning';\nimport { CalendarEvent } from 'calendar-utils';\nimport { Observable, of, Subject, timer } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'mwl-calendar-tooltip-window',\n template: `\n <ng-template\n #defaultTemplate\n let-contents=\"contents\"\n let-placement=\"placement\"\n let-event=\"event\"\n >\n <div class=\"cal-tooltip\" [ngClass]=\"'cal-tooltip-' + placement\">\n <div class=\"cal-tooltip-arrow\"></div>\n <div class=\"cal-tooltip-inner\" [innerHtml]=\"contents\"></div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n contents: contents,\n placement: placement,\n event: event\n }\"\n >\n </ng-template>\n `,\n})\nexport class CalendarTooltipWindowComponent {\n @Input() contents: string;\n\n @Input() placement: string;\n\n @Input() event: CalendarEvent;\n\n @Input() customTemplate: TemplateRef<any>;\n}\n\n@Directive({\n selector: '[mwlCalendarTooltip]',\n})\nexport class CalendarTooltipDirective implements OnDestroy, OnChanges {\n @Input('mwlCalendarTooltip') contents: string; // eslint-disable-line @angular-eslint/no-input-rename\n\n @Input('tooltipPlacement') placement: PlacementArray = 'auto'; // eslint-disable-line @angular-eslint/no-input-rename\n\n @Input('tooltipTemplate') customTemplate: TemplateRef<any>; // eslint-disable-line @angular-eslint/no-input-rename\n\n @Input('tooltipEvent') event: CalendarEvent; // eslint-disable-line @angular-eslint/no-input-rename\n\n @Input('tooltipAppendToBody') appendToBody: boolean; // eslint-disable-line @angular-eslint/no-input-rename\n\n @Input('tooltipDelay') delay: number | null = null; // eslint-disable-line @angular-eslint/no-input-rename\n\n private tooltipFactory: ComponentFactory<CalendarTooltipWindowComponent>;\n private tooltipRef: ComponentRef<CalendarTooltipWindowComponent>;\n private cancelTooltipDelay$ = new Subject<void>();\n\n constructor(\n private elementRef: ElementRef,\n private injector: Injector,\n private renderer: Renderer2,\n componentFactoryResolver: ComponentFactoryResolver,\n private viewContainerRef: ViewContainerRef,\n @Inject(DOCUMENT) private document // eslint-disable-line\n ) {\n this.tooltipFactory = componentFactoryResolver.resolveComponentFactory(\n CalendarTooltipWindowComponent\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n this.tooltipRef &&\n (changes.contents || changes.customTemplate || changes.event)\n ) {\n this.tooltipRef.instance.contents = this.contents;\n this.tooltipRef.instance.customTemplate = this.customTemplate;\n this.tooltipRef.instance.event = this.event;\n this.tooltipRef.changeDetectorRef.markForCheck();\n\n if (!this.contents) {\n this.hide();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.hide();\n }\n\n @HostListener('mouseenter')\n onMouseOver(): void {\n const delay$: Observable<any> =\n this.delay === null ? of('now') : timer(this.delay);\n delay$.pipe(takeUntil(this.cancelTooltipDelay$)).subscribe(() => {\n this.show();\n });\n }\n\n @HostListener('mouseleave')\n onMouseOut(): void {\n this.hide();\n }\n\n private show(): void {\n if (!this.tooltipRef && this.contents) {\n this.tooltipRef = this.viewContainerRef.createComponent(\n this.tooltipFactory,\n 0,\n this.injector,\n []\n );\n this.tooltipRef.instance.contents = this.contents;\n this.tooltipRef.instance.customTemplate = this.customTemplate;\n this.tooltipRef.instance.event = this.event;\n if (this.appendToBody) {\n this.document.body.appendChild(this.tooltipRef.location.nativeElement);\n }\n requestAnimationFrame(() => {\n this.positionTooltip();\n });\n }\n }\n\n private hide(): void {\n if (this.tooltipRef) {\n this.viewContainerRef.remove(\n this.viewContainerRef.indexOf(this.tooltipRef.hostView)\n );\n this.tooltipRef = null;\n }\n this.cancelTooltipDelay$.next();\n }\n\n private positionTooltip(previousPositions: string[] = []): void {\n if (this.tooltipRef) {\n this.tooltipRef.changeDetectorRef.detectChanges();\n this.tooltipRef.instance.placement = positionElements(\n this.elementRef.nativeElement,\n this.tooltipRef.location.nativeElement.children[0],\n this.placement,\n this.appendToBody\n );\n // keep re-positioning the tooltip until the arrow position doesn't make a difference\n if (\n previousPositions.indexOf(this.tooltipRef.instance.placement) === -1\n ) {\n this.positionTooltip([\n ...previousPositions,\n this.tooltipRef.instance.placement,\n ]);\n }\n }\n }\n}\n","export enum CalendarView {\n Month = 'month',\n Week = 'week',\n Day = 'day',\n}\n","import {\n CalendarEvent,\n WeekViewTimeEvent,\n WeekViewHour,\n WeekViewHourSegment,\n validateEvents as validateEventsWithoutLog,\n ViewPeriod,\n WeekDay,\n WeekViewAllDayEvent,\n} from 'calendar-utils';\nimport { DateAdapter } from '../../date-adapters/date-adapter';\n\nexport const validateEvents = (events: CalendarEvent[]) => {\n const warn = (...args) => console.warn('angular-calendar', ...args);\n return validateEventsWithoutLog(events, warn);\n};\n\nexport function isInsideLeftAndRight(\n outer: ClientRect,\n inner: ClientRect\n): boolean {\n return (\n Math.floor(outer.left) <= Math.ceil(inner.left) &&\n Math.floor(inner.left) <= Math.ceil(outer.right) &&\n Math.floor(outer.left) <= Math.ceil(inner.right) &&\n Math.floor(inner.right) <= Math.ceil(outer.right)\n );\n}\n\nfunction isInsideTopAndBottom(outer: ClientRect, inner: ClientRect): boolean {\n return (\n Math.floor(outer.top) <= Math.ceil(inner.top) &&\n Math.floor(inner.top) <= Math.ceil(outer.bottom) &&\n Math.floor(outer.top) <= Math.ceil(inner.bottom) &&\n Math.floor(inner.bottom) <= Math.ceil(outer.bottom)\n );\n}\n\nexport function isInside(outer: ClientRect, inner: ClientRect): boolean {\n return (\n isInsideLeftAndRight(outer, inner) && isInsideTopAndBottom(outer, inner)\n );\n}\n\nexport function roundToNearest(amount: number, precision: number) {\n return Math.round(amount / precision) * precision;\n}\n\nexport const trackByEventId = (index: number, event: CalendarEvent) =>\n event.id ? event.id : event;\n\nexport const trackByWeekDayHeaderDate = (index: number, day: WeekDay) =>\n day.date.toISOString();\n\nexport const trackByHourSegment = (\n index: number,\n segment: WeekViewHourSegment\n) => segment.date.toISOString();\n\nexport const trackByHour = (index: number, hour: WeekViewHour) =>\n hour.segments[0].date.toISOString();\n\nexport const trackByWeekAllDayEvent = (\n index: number,\n weekEvent: WeekViewAllDayEvent\n) => (weekEvent.event.id ? weekEvent.event.id : weekEvent.event);\n\nexport const trackByWeekTimeEvent = (\n index: number,\n weekEvent: WeekViewTimeEvent\n) => (weekEvent.event.id ? weekEvent.event.id : weekEvent.event);\n\nconst MINUTES_IN_HOUR = 60;\n\nfunction getPixelAmountInMinutes(\n hourSegments: number,\n hourSegmentHeight: number,\n hourDuration?: number\n) {\n return (hourDuration || MINUTES_IN_HOUR) / (hourSegments * hourSegmentHeight);\n}\n\nexport function getMinutesMoved(\n movedY: number,\n hourSegments: number,\n hourSegmentHeight: number,\n eventSnapSize: number,\n hourDuration?: number\n): number {\n const draggedInPixelsSnapSize = roundToNearest(\n movedY,\n eventSnapSize || hourSegmentHeight\n );\n const pixelAmountInMinutes = getPixelAmountInMinutes(\n hourSegments,\n hourSegmentHeight,\n hourDuration\n );\n return draggedInPixelsSnapSize * pixelAmountInMinutes;\n}\n\nexport function getDefaultEventEnd(\n dateAdapter: DateAdapter,\n event: CalendarEvent,\n minimumMinutes: number\n): Date {\n if (event.end) {\n return event.end;\n } else {\n return dateAdapter.addMinutes(event.start, minimumMinutes);\n }\n}\n\nexport function addDaysWithExclusions(\n dateAdapter: DateAdapter,\n date: Date,\n days: number,\n excluded: number[]\n): Date {\n let daysCounter = 0;\n let daysToAdd = 0;\n const changeDays = days < 0 ? dateAdapter.subDays : dateAdapter.addDays;\n let result = date;\n while (daysToAdd <= Math.abs(days)) {\n result = changeDays(date, daysCounter);\n const day = dateAdapter.getDay(result);\n if (excluded.indexOf(day) === -1) {\n daysToAdd++;\n }\n daysCounter++;\n }\n return result;\n}\n\nexport function isDraggedWithinPeriod(\n newStart: Date,\n newEnd: Date,\n period: ViewPeriod\n): boolean {\n const end = newEnd || newStart;\n return (\n (period.start <= newStart && newStart <= period.end) ||\n (period.start <= end && end <= period.end)\n );\n}\n\nexport function shouldFireDroppedEvent(\n dropEvent: { dropData?: { event?: CalendarEvent; calendarId?: symbol } },\n date: Date,\n allDay: boolean,\n calendarId: symbol\n) {\n return (\n dropEvent.dropData &&\n dropEvent.dropData.event &&\n (dropEvent.dropData.calendarId !== calendarId ||\n (dropEvent.dropData.event.allDay && !allDay) ||\n (!dropEvent.dropData.event.allDay && allDay))\n );\n}\n\nexport function getWeekViewPeriod(\n dateAdapter: DateAdapter,\n viewDate: Date,\n weekStartsOn: number,\n excluded: number[] = [],\n daysInWeek?: number\n): { viewStart: Date; viewEnd: Date } {\n let viewStart = daysInWeek\n ? dateAdapter.startOfDay(viewDate)\n : dateAdapter.startOfWeek(viewDate, { weekStartsOn });\n const endOfWeek = dateAdapter.endOfWeek(viewDate, { weekStartsOn });\n while (\n excluded.indexOf(dateAdapter.getDay(viewStart)) > -1 &&\n viewStart < endOfWeek\n ) {\n viewStart = dateAdapter.addDays(viewStart, 1);\n }\n if (daysInWeek) {\n const viewEnd = dateAdapter.endOfDay(\n addDaysWithExclusions(dateAdapter, viewStart, daysInWeek - 1, excluded)\n );\n return { viewStart, viewEnd };\n } else {\n let viewEnd = endOfWeek;\n while (\n excluded.indexOf(dateAdapter.getDay(viewEnd)) > -1 &&\n viewEnd > viewStart\n ) {\n viewEnd = dateAdapter.subDays(viewEnd, 1);\n }\n return { viewStart, viewEnd };\n }\n}\n\nexport function isWithinThreshold({ x, y }: { x: number; y: number }) {\n const DRAG_THRESHOLD = 1;\n return Math.abs(x) > DRAG_THRESHOLD || Math.abs(y) > DRAG_THRESHOLD;\n}\n","import { DateAdapter as BaseDateAdapter } from 'calendar-utils/date-adapters/date-adapter';\n\nexport abstract class DateAdapter implements BaseDateAdapter {\n abstract addWeeks(date: Date | number, amount: number): Date;\n\n abstract addMonths(date: Date | number, amount: number): Date;\n\n abstract subDays(date: Date | number, amount: number): Date;\n\n abstract subWeeks(date: Date | number, amount: number): Date;\n\n abstract subMonths(date: Date | number, amount: number): Date;\n\n abstract getISOWeek(date: Date | number): number;\n\n abstract setDate(date: Date | number, dayOfMonth: number): Date;\n\n abstract setMonth(date: Date | number, month: number): Date;\n\n abstract setYear(date: Date | number, year: number): Date;\n\n abstract getDate(date: Date | number): number;\n\n abstract getMonth(date: Date | number): number;\n\n abstract getYear(date: Date | number): number;\n\n abstract addDays(date: Date | number, amount: number): Date;\n\n abstract addHours(date: Date | number, amount: number): Date;\n\n abstract addMinutes(date: Date | number, amount: number): Date;\n\n abstract addSeconds(date: Date | number, amount: number): Date;\n\n abstract differenceInDays(\n dateLeft: Date | number,\n dateRight: Date | number\n ): number;\n\n abstract differenceInMinutes(\n dateLeft: Date | number,\n dateRight: Date | number\n ): number;\n\n abstract differenceInSeconds(\n dateLeft: Date | number,\n dateRight: Date | number\n ): number;\n\n abstract endOfDay(date: Date | number): Date;\n\n abstract endOfMonth(date: Date | number): Date;\n\n abstract endOfWeek(\n date: Date | number,\n options?: { weekStartsOn?: number }\n ): Date;\n\n abstract getDay(date: Date | number): number;\n\n abstract isSameDay(\n dateLeft: Date | number,\n dateRight: Date | number\n ): boolean;\n\n abstract isSameMonth(\n dateLeft: Date | number,\n dateRight: Date | number\n ): boolean;\n\n abstract isSameSecond(\n dateLeft: Date | number,\n dateRight: Date | number\n ): boolean;\n\n abstract max(dates: (Date | number)[]): Date;\n\n abstract setHours(date: Date | number, hours: number): Date;\n\n abstract setMinutes(date: Date | number, minutes: number): Date;\n\n abstract startOfDay(date: Date | number): Date;\n\n abstract startOfMinute(date: Date | number): Date;\n\n abstract startOfMonth(date: Date | number): Date;\n\n abstract startOfWeek(\n date: Date | number,\n options?: { weekStartsOn?: number }\n ): Date;\n\n abstract getHours(date: Date | number): number;\n\n abstract getMinutes(date: Date | number): number;\n\n abstract getTimezoneOffset(date: Date | number): number;\n}\n","import {\n Directive,\n HostListener,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { DateAdapter } from '../../date-adapters/date-adapter';\nimport { CalendarView } from './calendar-view.enum';\nimport { addDaysWithExclusions } from './util';\n\n/**\n * Change the view date to the previous view. For example:\n *\n * ```typescript\n * <button\n * mwlCalendarPreviousView\n * [(viewDate)]=\"viewDate\"\n * [view]=\"view\">\n * Previous\n * </button>\n * ```\n */\n@Directive({\n selector: '[mwlCalendarPreviousView]',\n})\nexport class CalendarPreviousViewDirective {\n /**\n * The current view\n */\n @Input() view: CalendarView | 'month' | 'week' | 'day';\n\n /**\n * The current view date\n */\n @Input() viewDate: Date;\n\n /**\n * Days to skip when going back by 1 day\n */\n @Input() excludeDays: number[] = [];\n\n /**\n * The number of days in a week. If set will subtract this amount of days instead of 1 week\n */\n @Input() daysInWeek: number;\n\n /**\n * Called when the view date is changed\n */\n @Output() viewDateChange: EventEmitter<Date> = new EventEmitter();\n\n constructor(private dateAdapter: DateAdapter) {}\n\n /**\n * @hidden\n */\n @HostListener('click')\n onClick(): void {\n const subFn: any = {\n day: this.dateAdapter.subDays,\n week: this.dateAdapter.subWeeks,\n month: this.dateAdapter.subMonths,\n }[this.view];\n\n if (this.view === CalendarView.Day) {\n this.viewDateChange.emit(\n addDaysWithExclusions(\n this.dateAdapter,\n this.viewDate,\n -1,\n this.excludeDays\n )\n );\n } else if (this.view === CalendarView.Week && this.daysInWeek) {\n this.viewDateChange.emit(\n addDaysWithExclusions(\n this.dateAdapter,\n this.viewDate,\n -this.daysInWeek,\n this.excludeDays\n )\n );\n } else {\n this.viewDateChange.emit(subFn(this.viewDate, 1));\n }\n }\n}\n","import {\n Directive,\n EventEmitter,\n HostListener,\n Input,\n Output,\n} from '@angular/core';\nimport { DateAdapter } from '../../date-adapters/date-adapter';\nimport { CalendarView } from './calendar-view.enum';\nimport { addDaysWithExclusions } from './util';\n\n/**\n * Change the view date to the next view. For example:\n *\n * ```typescript\n * <button\n * mwlCalendarNextView\n * [(viewDate)]=\"viewDate\"\n * [view]=\"view\">\n * Next\n * </button>\n * ```\n */\n@Directive({\n selector: '[mwlCalendarNextView]',\n})\nexport class CalendarNextViewDirective {\n /**\n * The current view\n */\n @Input() view: CalendarView | 'month' | 'week' | 'day';\n\n /**\n * The current view date\n */\n @Input() viewDate: Date;\n\n /**\n * Days to skip when going forward by 1 day\n */\n @Input() excludeDays: number[] = [];\n\n /**\n * The number of days in a week. If set will add this amount of days instead of 1 week\n */\n @Input() daysInWeek: number;\n\n /**\n * Called when the view date is changed\n */\n @Output() viewDateChange: EventEmitter<Date> = new EventEmitter();\n\n constructor(private dateAdapter: DateAdapter) {}\n\n /**\n * @hidden\n */\n @HostListener('click')\n onClick(): void {\n const addFn: any = {\n day: this.dateAdapter.addDays,\n week: this.dateAdapter.addWeeks,\n month: this.dateAdapter.addMonths,\n }[this.view];\n\n if (this.view === CalendarView.Day) {\n this.viewDateChange.emit(\n addDaysWithExclusions(\n this.dateAdapter,\n this.viewDate,\n 1,\n this.excludeDays\n )\n );\n } else if (this.view === CalendarView.Week && this.daysInWeek) {\n this.viewDateChange.emit(\n addDaysWithExclusions(\n this.dateAdapter,\n this.viewDate,\n this.daysInWeek,\n this.excludeDays\n )\n );\n } else {\n this.viewDateChange.emit(addFn(this.viewDate, 1));\n }\n }\n}\n","import {\n Directive,\n HostListener,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { DateAdapter } from '../../date-adapters/date-adapter';\n\n/**\n * Change the view date to the current day. For example:\n *\n * ```typescript\n * <button\n * mwlCalendarToday\n * [(viewDate)]=\"viewDate\">\n * Today\n * </button>\n * ```\n */\n@Directive({\n selector: '[mwlCalendarToday]',\n})\nexport class CalendarTodayDirective {\n /**\n * The current view date\n */\n @Input() viewDate: Date;\n\n /**\n * Called when the view date is changed\n */\n @Output() viewDateChange: EventEmitter<Date> = new EventEmitter();\n\n constructor(private dateAdapter: DateAdapter) {}\n\n /**\n * @hidden\n */\n @HostListener('click')\n onClick(): void {\n this.viewDateChange.emit(this.dateAdapter.startOfDay(new Date()));\n }\n}\n","import {\n CalendarDateFormatterInterface,\n DateFormatterParams,\n} from './calendar-date-formatter.interface';\nimport { formatDate } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { DateAdapter } from '../../date-adapters/date-adapter';\nimport { getWeekViewPeriod } from './util';\n\n/**\n * This will use the angular date pipe to do all date formatting. It is the default date formatter used by the calendar.\n */\n@Injectable()\nexport class CalendarAngularDateFormatter\n implements CalendarDateFormatterInterface\n{\n constructor(protected dateAdapter: DateAdapter) {}\n\n /**\n * The month view header week day labels\n */\n public monthViewColumnHeader({ date, locale }: DateFormatterParams): string {\n return formatDate(date, 'EEEE', locale);\n }\n\n /**\n * The month view cell day number\n */\n public monthViewDayNumber({ date, locale }: DateFormatterParams): string {\n return formatDate(date, 'd', locale);\n }\n\n /**\n * The month view title\n */\n public monthViewTitle({ date, locale }: DateFormatterParams): string {\n return formatDate(date, 'LLLL y', locale);\n }\n\n /**\n * The week view header week day labels\n */\n public weekViewColumnHeader({ date, locale }: DateFormatterParams): string {\n return formatDate(date, 'EEEE', locale);\n }\n\n /**\n * The week view sub header day and month labels\n */\n public weekViewColumnSubHeader({\n date,\n locale,\n }: DateFormatterParams): string {\n return formatDate(date, 'MMM d', locale);\n }\n\n /**\n * The week view title\n */\n public weekViewTitle({\n date,\n locale,\n weekStartsOn,\n excludeDays,\n daysInWeek,\n }: DateFormatterParams): string {\n const { viewStart, viewEnd } = getWeekViewPeriod(\n this.dateAdapter,\n date,\n weekStartsOn,\n excludeDays,\n daysInWeek\n );\n const format = (dateToFormat: Date, showYear: boolean) =>\n formatDate(dateToFormat, 'MMM d' + (showYear ? ', yyyy' : ''), locale);\n return `${format(\n viewStart,\n viewStart.getUTCFullYear() !== viewEnd.getUTCFullYear()\n )} - ${format(viewEnd, true)}`;\n }\n\n /**\n * The time formatting down the left hand side of the week view\n */\n public weekViewHour({ date, locale }: DateFormatterParams): string {\n return formatDate(date, 'h a', locale);\n }\n\n /**\n * The time formatting down the left hand side of the day view\n */\n public dayViewHour({ date, locale }: DateFormatterParams): string {\n return formatDate(date, 'h a', locale);\n }\n\n /**\n * The day view title\n */\n public dayViewTitle({ date, locale }: DateFormatterParams): string {\n return formatDate(date, 'EEEE, MMMM d, y', locale);\n }\n}\n","import { CalendarAngularDateFormatter } from './calendar-angular-date-formatter.provider';\nimport { Injectable } from '@angular/core';\n\n/**\n * This class is responsible for all formatting of dates. There are 3 implementations available, the `CalendarAngularDateFormatter` (default) which uses the angular date pipe to format dates, the `CalendarNativeDateFormatter` which will use the <a href=\"https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Intl\" target=\"_blank\">Intl</a> API to format dates, or there is the `CalendarMomentDateFormatter` which uses <a href=\"http://momentjs.com/\" target=\"_blank\">moment</a>.\n *\n * If you wish, you may override any of the defaults via angulars DI. For example:\n *\n * ```typescript\n * import { CalendarDateFormatter, DateFormatterParams } from 'angular-calendar';\n * import { formatDate } from '@angular/common';\n * import { Injectable } from '@angular/core';\n *\n * @Injectable()\n * class CustomDateFormatter extends CalendarDateFormatter {\n *\n * public monthViewColumnHeader({date, locale}: DateFormatterParams): string {\n * return formatDate(date, 'EEE', locale); // use short week days\n * }\n *\n * }\n *\n * // in your component that uses the calendar\n * providers: [{\n * provide: CalendarDateFormatter,\n * useClass: CustomDateFormatter\n * }]\n * ```\n */\n@Injectable()\nexport class CalendarDateFormatter extends CalendarAngularDateFormatter {}\n","import { Pipe, PipeTransform, LOCALE_ID, Inject } from '@angular/core';\nimport { CalendarDateFormatter } from './calendar-date-formatter.provider';\n\n/**\n * This pipe is primarily for rendering the current view title. Example usage:\n * ```typescript\n * // where `viewDate` is a `Date` and view is `'month' | 'week' | 'day'`\n * {{ viewDate | calendarDate:(view + 'ViewTitle'):'en' }}\n * ```\n */\n@Pipe({\n name: 'calendarDate',\n})\nexport class CalendarDatePipe implements PipeTransform {\n constructor(\n private dateFormatter: CalendarDateFormatter,\n @Inject(LOCALE_ID) private locale: string\n ) {}\n\n transform(\n date: Date,\n method: string,\n locale: string = this.locale,\n weekStartsOn: number = 0,\n excludeDays: number[] = [],\n daysInWeek?: number\n ): string {\n if (typeof this.dateFormatter[method] === 'undefined') {\n const allowedMethods = Object.getOwnPropertyNames(\n Object.getPrototypeOf(CalendarDateFormatter.prototype)\n ).filter((iMethod) => iMethod !== 'constructor');\n throw new Error(\n `${method} is not a valid date formatter. Can only be one of ${allowedMethods.join(\n ', '\n )}`\n );\n }\n return this.dateFormatter[method]({\n date,\n locale,\n weekStartsOn,\n excludeDays,\n daysInWeek,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n GetMonthViewArgs,\n MonthView,\n GetWeekViewHeaderArgs,\n WeekDay,\n GetWeekViewArgs,\n WeekView,\n getMonthView,\n getWeekViewHeader,\n getWeekView,\n} from 'calendar-utils';\nimport { DateAdapter } from '../../date-adapters/date-adapter';\n\n@Injectable()\nexport class CalendarUtils {\n constructor(protected dateAdapter: DateAdapter) {}\n\n getMonthView(args: GetMonthViewArgs): MonthView {\n return getMonthView(this.dateAdapter, args);\n }\n\n getWeekViewHeader(args: GetWeekViewHeaderArgs): WeekDay[] {\n return getWeekViewHeader(this.dateAdapter, args);\n }\n\n getWeekView(args: GetWeekViewArgs): WeekView {\n return getWeekView(this.dateAdapter, args);\n }\n}\n","import { InjectionToken, Inject, Injectable } from '@angular/core';\nimport {\n CalendarDateFormatterInterface,\n DateFormatterParams,\n} from './calendar-date-formatter.interface';\nimport { getWeekViewPeriod } from './util';\nimport { DateAdapter } from '../../date-adapters/date-adapter';\n\nexport const MOMENT: InjectionToken<string> = new InjectionToken('Moment');\n\n/**\n * This will use <a href=\"http://momentjs.com/\" target=\"_blank\">moment</a> to do all date formatting. To use this class:\n *\n * ```typescript\n * import { CalendarDateFormatter, CalendarMomentDateFormatter, MOMENT } from 'angular-calendar';\n * import moment from 'moment';\n *\n * // in your component\n * provide: [{\n * provide: MOMENT, useValue: moment\n * }, {\n * provide: CalendarDateFormatter, useClass: CalendarMomentDateFormatter\n * }]\n *\n * ```\n */\n@Injectable()\nexport class CalendarMomentDateFormatter\n implements CalendarDateFormatterInterface\n{\n /**\n * @hidden\n */\n constructor(\n @Inject(MOMENT) protected moment: any,\n protected dateAdapter: DateAdapter\n ) {}\n\n /**\n * The month view header week day labels\n */\n public monthViewColumnHeader({ date, locale }: DateFormatterParams): string {\n return this.moment(date).locale(locale).format('dddd');\n }\n\n /**\n * The month view cell day number\n */\n public monthViewDayNumber({ date, locale }: DateFormatterParams): string {\n return this.moment(date).locale(locale).format('D');\n }\n\n /**\n * The month view title\n */\n public monthViewTitle({ date, locale }: DateFormatterParams): string {\n return this.moment(date).locale(locale).format('MMMM YYYY');\n }\n\n /**\n * The week view header week day labels\n */\n public weekViewColumnHeader({ date, locale }: DateFormatterParams): string {\n return this.moment(date).locale(locale).format('dddd');\n }\n\n /**\n * The week view sub header day and month labels\n */\n public weekViewColumnSubHeader({\n date,\n locale,\n }: DateFormatterParams): string {\n return this.moment(date).locale(locale).format('MMM D');\n }\n\n /**\n * The week view title\n */\n public weekViewTitle({\n date,\n locale,\n weekStartsOn,\n excludeDays,\n daysInWeek,\n }: DateFormatterParams): string {\n const { viewStart, viewEnd } = getWeekViewPeriod(\n this.dateAdapter,\n date,\n weekStartsOn,\n excludeDays,\n daysInWeek\n );\n const format = (dateToFormat: Date, showYear: boolean) =>\n this.moment(dateToFormat)\n .locale(locale)\n .format('MMM D' + (showYear ? ', YYYY' : ''));\n return `${format(\n viewStart,\n viewStart.getUTCFullYear() !== viewEnd.getUTCFullYear()\n )} - ${format(viewEnd, true)}`;\n }\n\n /**\n * The time formatting down the left hand side of the week view\n */\n public weekViewHour({ date, locale }: DateFormatterParams): string {\n return this.moment(date).locale(locale).format('ha');\n }\n\n /**\n * The time formatting down the left hand side of the day view\n */\n public dayViewHour({ date, locale }: DateFormatterParams): string {\n return this.moment(date).locale(locale).format('ha');\n }\n\n /**\n * The day view title\n */\n public dayViewTitle({ date, locale }: DateFormatterParams): string {\n return this.moment(date).locale(locale).format('dddd, LL'); // dddd = Thursday\n } // LL = locale-dependent Month Day, Year\n}\n","import {\n CalendarDateFormatterInterface,\n DateFormatterParams,\n} from './calendar-date-formatter.interface';\nimport { Injectable } from '@angular/core';\nimport { DateAdapter } from '../../date-adapters/date-adapter';\nimport { getWeekViewPeriod } from './util';\n\n/**\n * This will use <a href=\"https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Intl\" target=\"_blank\">Intl</a> API to do all date formatting.\n *\n * You will need to include a <a href=\"https://github.com/andyearnshaw/Intl.js/\">polyfill</a> for older browsers.\n */\n@Injectable()\nexport class CalendarNativeDateFormatter\n implements CalendarDateFormatterInterface\n{\n constructor(protected dateAdapter: DateAdapter) {}\n\n /**\n * The month view header week day labels\n */\n public monthViewColumnHeader({ date, locale }: DateFormatterParams): string {\n return new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(date);\n }\n\n /**\n * The month view cell day number\n */\n public monthViewDayNumber({ date, locale }: DateFormatterParams): string {\n return new Intl.DateTimeFormat(locale, { day: 'numeric' }).format(date);\n }\n\n /**\n * The month view title\n */\n public monthViewTitle({ date, locale }: DateFormatterParams): string {\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'long',\n }).format(date);\n }\n\n /**\n * The week view header week day labels\n */\n public weekViewColumnHeader({ date, locale }: DateFormatterParams): string {\n return new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(date);\n }\n\n /**\n * The week view sub header day and month labels\n */\n public weekViewColumnSubHeader({\n date,\n locale,\n }: DateFormatterParams): string {\n return new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'short',\n }).format(date);\n }\n\n /**\n * The week view title\n */\n public weekViewTitle({\n date,\n locale,\n weekStartsOn,\n excludeDays,\n daysInWeek,\n }: DateFormatterParams): string {\n const { viewStart, viewEnd } = getWeekViewPeriod(\n this.dateAdapter,\n date,\n weekStartsOn,\n excludeDays,\n daysInWeek\n );\n\n const format = (dateToFormat: Date, showYear: boolean) =>\n new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'short',\n year: showYear ? 'numeric' : undefined,\n }).format(dateToFormat);\n\n return `${format(\n viewStart,\n viewStart.getUTCFullYear() !== viewEnd.getUTCFullYear()\n )} - ${format(viewEnd, true)}`;\n }\n\n /**\n * The time formatting down the left hand side of the week view\n */\n public weekViewHour({ date, locale }: DateFormatterParams): string {\n return new Intl.DateTimeFormat(locale, { hour: 'numeric' }).format(date);\n }\n\n /**\n * The time formatting down the left hand side of the day view\n */\n public dayViewHour({ date, locale }: DateFormatterParams): string {\n return new Intl.DateTimeFormat(locale, { hour: 'numeric' }).format(date);\n }\n\n /**\n * The day view title\n */\n public dayViewTitle({ date, locale }: DateFormatterParams): string {\n return new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n weekday: 'long',\n }).format(date);\n }\n}\n","import { CalendarEvent } from 'calendar-utils';\n\nexport enum CalendarEventTimesChangedEventType {\n Drag = 'drag',\n Drop = 'drop',\n Resize = 'resize',\n}\n\n/**\n * The output `$event` type when an event is resized or dragged and dropped.\n */\nexport interface CalendarEventTimesChangedEvent<MetaType = any> {\n type: CalendarEventTimesChangedEventType;\n event: CalendarEvent<MetaType>;\n newStart: Date;\n newEnd?: Date;\n allDay?: boolean;\n}\n","import { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { CommonModule, I18nPluralPipe } from '@angular/common';\nimport { CalendarEventActionsComponent } from './calendar-event-actions.component';\nimport { CalendarEventTitleComponent } from './calendar-event-title.component';\nimport {\n CalendarTooltipDirective,\n CalendarTooltipWindowComponent,\n} from './calendar-tooltip.directive';\nimport { CalendarPreviousViewDirective } from './calendar-previous-view.directive';\nimport { CalendarNextViewDirective } from './calendar-next-view.directive';\nimport { CalendarTodayDirective } from './calendar-today.directive';\nimport { CalendarDatePipe } from './calendar-date.pipe';\nimport { CalendarEventTitlePipe } from './calendar-event-title.pipe';\nimport { ClickDirective } from './click.directive';\nimport { KeydownEnterDirective } from './keydown-enter.directive';\nimport { CalendarEventTitleFormatter } from './calendar-event-title-formatter.provider';\nimport { CalendarDateFormatter } from './calendar-date-formatter.provider';\nimport { CalendarUtils } from './calendar-utils.provider';\nimport { CalendarA11y } from './calendar-a11y.provider';\nimport { CalendarA11yPipe } from './calendar-a11y.pipe';\n\nexport interface CalendarModuleConfig {\n eventTitleFormatter?: Provider;\n dateFormatter?: Provider;\n utils?: Provider;\n a11y?: Provider;\n}\n\nexport * from './calendar-event-title-formatter.provider';\nexport * from './calendar-moment-date-formatter.provider';\nexport * from './calendar-native-date-formatter.provider';\nexport * from './calendar-angular-date-formatter.provider';\nexport * from './calendar-date-formatter.provider';\nexport * from './calendar-utils.provider';\nexport * from './calendar-a11y.provider';\nexport * from './calendar-a11y.interface';\nexport * from './calendar-date-formatter.interface';\nexport * from './calendar-event-times-changed-event.interface';\nexport * from '../../date-adapters/date-adapter';\nexport * from './calendar-view.enum';\n\n// needed for ivy, not part of the public api\nexport { CalendarEventActionsComponent as ɵCalendarEventActionsComponent } from './calendar-event-actions.component';\nexport { CalendarEventTitleComponent as ɵCalendarEventTitleComponent } from './calendar-event-title.component';\nexport {\n CalendarTooltipDirective as ɵCalendarTooltipDirective,\n CalendarTooltipWindowComponent as ɵCalendarTooltipWindowComponent,\n} from './calendar-tooltip.directive';\nexport { CalendarPreviousViewDirective as ɵCalendarPreviousViewDirective } from './calendar-previous-view.directive';\nexport { CalendarNextViewDirective as ɵCalendarNextViewDirective } from './calendar-next-view.directive';\nexport { CalendarTodayDirective as ɵCalendarTodayDirective } from './calendar-today.directive';\nexport { CalendarDatePipe as ɵCalendarDatePipe } from './calendar-date.pipe';\nexport { CalendarEventTitlePipe as ɵCalendarEventTitlePipe } from './calendar-event-title.pipe';\nexport { ClickDirective as ɵClickDirective } from './click.directive';\nexport { KeydownEnterDirective as ɵKeydownEnterDirective } from './keydown-enter.directive';\nexport { CalendarA11yPipe as ɵCalendarA11yPipe } from './calendar-a11y.pipe';\n\nexport {\n CalendarEvent,\n EventAction as CalendarEventAction,\n DAYS_OF_WEEK,\n ViewPeriod as CalendarViewPeriod,\n} from 'calendar-utils';\n\n/**\n * Import this module to if you're just using a singular view and want to save on bundle size. Example usage:\n *\n * ```typescript\n * import { CalendarCommonModule, CalendarMonthModule } from 'angular-calendar';\n *\n * @NgModule({\n * imports: [\n * CalendarCommonModule.forRoot(),\n * CalendarMonthModule\n * ]\n * })\n * class MyModule {}\n * ```\n *\n */\n@NgModule({\n declarations: [\n CalendarEventActionsComponent,\n CalendarEventTitleComponent,\n CalendarTooltipWindowComponent,\n CalendarTooltipDirective,\n CalendarPreviousViewDirective,\n CalendarNextViewDirective,\n CalendarTodayDirective,\n CalendarDatePipe,\n CalendarEventTitlePipe,\n CalendarA11yPipe,\n ClickDirective,\n KeydownEnterDirective,\n ],\n imports: [CommonModule],\n exports: [\n CalendarEventActionsComponent,\n CalendarEventTitleComponent,\n CalendarTooltipWindowComponent,\n CalendarTooltipDirective,\n CalendarPreviousViewDirective,\n CalendarNextViewDirective,\n CalendarTodayDirective,\n CalendarDatePipe,\n CalendarEventTitlePipe,\n CalendarA11yPipe,\n ClickDirective,\n KeydownEnterDirective,\n ],\n providers: [I18nPluralPipe],\n entryComponents: [CalendarTooltipWindowComponent],\n})\nexport class CalendarCommonModule {\n static forRoot(\n dateAdapter: Provider,\n config: CalendarModuleConfig = {}\n ): ModuleWithProviders<CalendarCommonModule> {\n return {\n ngModule: CalendarCommonModule,\n providers: [\n dateAdapter,\n config.eventTitleFormatter || CalendarEventTitleFormatter,\n config.dateFormatter || CalendarDateFormatter,\n config.utils || CalendarUtils,\n config.a11y || CalendarA11y,\n ],\n };\n }\n}\n","import {\n Component,\n Input,\n TemplateRef,\n EventEmitter,\n Output,\n} from '@angular/core';\nimport { WeekDay } from 'calendar-utils';\nimport { trackByWeekDayHeaderDate } from '../common/util';\n\n@Component({\n selector: 'mwl-calendar-month-view-header',\n template: `\n <ng-template\n #defaultTemplate\n let-days=\"days\"\n let-locale=\"locale\"\n let-trackByWeekDayHeaderDate=\"trackByWeekDayHeaderDate\"\n >\n <div class=\"cal-cell-row cal-header\" role=\"row\">\n <div\n class=\"cal-cell\"\n *ngFor=\"let day of days; trackBy: trackByWeekDayHeaderDate\"\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 (click)=\"\n columnHeaderClicked.emit({\n isoDayNumber: day.day,\n sourceEvent: $event\n })\n \"\n [ngClass]=\"day.cssClass\"\n tabindex=\"0\"\n role=\"columnheader\"\n >\n {{ day.date | calendarDate: 'monthViewColumnHeader':locale }}\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n days: days,\n locale: locale,\n trackByWeekDayHeaderDate: trackByWeekDayHeaderDate\n }\"\n >\n </ng-template>\n `,\n})\nexport class CalendarMonthViewHeaderComponent {\n @Input() days: WeekDay[];\n\n @Input() locale: string;\n\n @Input() customTemplate: TemplateRef<any>;\n\n @Output() columnHeaderClicked = new EventEmitter<{\n isoDayNumber: number;\n sourceEvent: MouseEvent;\n }>();\n\n trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n TemplateRef,\n} from '@angular/core';\nimport { MonthViewDay, CalendarEvent } from 'calendar-utils';\nimport { isWithinThreshold, trackByEventId } from '../common/util';\nimport { PlacementArray } from 'positioning';\n\n@Component({\n selector: 'mwl-calendar-month-cell',\n template: `\n <ng-template\n #defaultTemplate\n let-day=\"day\"\n let-openDay=\"openDay\"\n let-locale=\"locale\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-highlightDay=\"highlightDay\"\n let-unhighlightDay=\"unhighlightDay\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDelay=\"tooltipDelay\"\n let-trackByEventId=\"trackByEventId\"\n let-validateDrag=\"validateDrag\"\n >\n <div\n class=\"cal-cell-top\"\n [attr.aria-label]=\"\n { day: day, locale: locale } | calendarA11y: 'monthCell'\n \"\n >\n <span aria-hidden=\"true\">\n <span class=\"cal-day-badge\" *ngIf=\"day.badgeTotal > 0\">{{\n day.badgeTotal\n }}</span>\n <span class=\"cal-day-number\">{{\n day.date | calendarDate: 'monthViewDayNumber':locale\n }}</span>\n </span>\n </div>\n <div class=\"cal-events\" *ngIf=\"day.events.length > 0\">\n <div\n class=\"cal-event\"\n *ngFor=\"let event of day.events; trackBy: trackByEventId\"\n [ngStyle]=\"{ backgroundColor: event.color?.primary }\"\n [ngClass]=\"event?.cssClass\"\n (mouseenter)=\"highlightDay.emit({ event: event })\"\n (mouseleave)=\"unhighlightDay.emit({ event: event })\"\n [mwlCalendarTooltip]=\"\n event.title | calendarEventTitle: 'monthTooltip':event\n \"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n mwlDraggable\n [class.cal-draggable]=\"event.draggable\"\n dragActiveClass=\"cal-drag-active\"\n [dropData]=\"{ event: event, draggedFrom: day }\"\n [dragAxis]=\"{ x: event.draggable, y: event.draggable }\"\n [validateDrag]=\"validateDrag\"\n [touchStartLongPress]=\"{ delay: 300, delta: 30 }\"\n (mwlClick)=\"eventClicked.emit({ event: event, sourceEvent: $event })\"\n [attr.aria-hidden]=\"{} | calendarA11y: 'hideMonthCellEvents'\"\n ></div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n day: day,\n openDay: openDay,\n locale: locale,\n tooltipPlacement: tooltipPlacement,\n highlightDay: highlightDay,\n unhighlightDay: unhighlightDay,\n eventClicked: eventClicked,\n tooltipTemplate: tooltipTemplate,\n tooltipAppendToBody: tooltipAppendToBody,\n tooltipDelay: tooltipDelay,\n trackByEventId: trackByEventId,\n validateDrag: validateDrag\n }\"\n >\n </ng-template>\n `,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'cal-cell cal-day-cell',\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-in-month]': 'day.inMonth',\n '[class.cal-out-month]': '!day.inMonth',\n '[class.cal-has-events]': 'day.events.length > 0',\n '[class.cal-open]': 'day === openDay',\n '[class.cal-event-highlight]': '!!day.backgroundColor',\n },\n})\nexport class CalendarMonthCellComponent {\n @Input() day: MonthViewDay;\n\n @Input() openDay: MonthViewDay;\n\n @Input() locale: string;\n\n @Input() tooltipPlacement: PlacementArray;\n\n @Input() tooltipAppendToBody: boolean;\n\n @Input() customTemplate: TemplateRef<any>;\n\n @Input() tooltipTemplate: TemplateRef<any>;\n\n @Input() tooltipDelay: number | null;\n\n @Output() highlightDay: EventEmitter<any> = new EventEmitter();\n\n @Output() unhighlightDay: EventEmitter<any> = new EventEmitter();\n\n @Output() eventClicked = new EventEmitter<{\n event: CalendarEvent;\n sourceEvent: MouseEvent;\n }>();\n\n trackByEventId = trackByEventId;\n\n validateDrag = isWithinThreshold;\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n TemplateRef,\n} from '@angular/core';\nimport {\n trigger,\n style,\n state,\n transition,\n animate,\n AnimationTriggerMetadata,\n} from '@angular/animations';\nimport { CalendarEvent } from 'calendar-utils';\nimport { isWithinThreshold, trackByEventId } from '../common/util';\n\nexport const collapseAnimation: AnimationTriggerMetadata = trigger('collapse', [\n state(\n 'void',\n style({\n height: 0,\n overflow: 'hidden',\n 'padding-top': 0,\n 'padding-bottom': 0,\n })\n ),\n state(\n '*',\n style({\n height: '*',\n overflow: 'hidden',\n 'padding-top': '*',\n 'padding-bottom': '*',\n })\n ),\n transition('* => void', animate('150ms ease-out')),\n transition('void => *', animate('150ms ease-in')),\n]);\n\n@Component({\n selector: 'mwl-calendar-open-day-events',\n template: `\n <ng-template\n #defaultTemplate\n let-events=\"events\"\n let-eventClicked=\"eventClicked\"\n let-isOpen=\"isOpen\"\n let-trackByEventId=\"trackByEventId\"\n let-validateDrag=\"validateDrag\"\n >\n <div\n class=\"cal-open-day-events\"\n [@collapse]\n *ngIf=\"isOpen\"\n role=\"application\"\n >\n <span\n tabindex=\"-1\"\n role=\"alert\"\n [attr.aria-label]=\"\n { date: date, locale: locale } | calendarA11y: 'openDayEventsAlert'\n \"\n ></span>\n <span\n tabindex=\"0\"\n role=\"landmark\"\n [attr.aria-label]=\"\n { date: date, locale: locale }\n | calendarA11y: 'openDayEventsLandmark'\n \"\n ></span>\n <div\n *ngFor=\"let event of events; trackBy: trackByEventId\"\n [ngClass]=\"event?.cssClass\"\n mwlDraggable\n [class.cal-draggable]=\"event.draggable\"\n dragActiveClass=\"cal-drag-active\"\n [dropData]=\"{ event: event }\"\n [dragAxis]=\"{ x: event.draggable, y: event.draggable }\"\n [validateDrag]=\"validateDrag\"\n [touchStartLongPress]=\"{ delay: 300, delta: 30 }\"\n >\n <span\n class=\"cal-event\"\n [ngStyle]=\"{ backgroundColor: event.color?.primary }\"\n >\n </span>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"event\"\n [customTemplate]=\"eventTitleTemplate\"\n view=\"month\"\n (mwlClick)=\"\n eventClicked.emit({ event: event, sourceEvent: $event })\n \"\n (mwlKeydownEnter)=\"\n eventClicked.emit({ event: event, sourceEvent: $event })\n \"\n tabindex=\"0\"\n [attr.aria-label]=\"\n { event: event, locale: locale }\n | calendarA11y: 'eventDescription'\n \"\n >\n </mwl-calendar-event-title>\n &ngsp;\n <mwl-calendar-event-actions\n [event]=\"event\"\n [customTemplate]=\"eventActionsTemplate\"\n >\n </mwl-calendar-event-actions>\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n events: events,\n eventClicked: eventClicked,\n isOpen: isOpen,\n trackByEventId: trackByEventId,\n validateDrag: validateDrag\n }\"\n >\n </ng-template>\n `,\n animations: [collapseAnimation],\n})\nexport class CalendarOpenDayEventsComponent {\n @Input() locale: string;\n\n @Input() isOpen: boolean = false;\n\n @Input() events: CalendarEvent[];\n\n @Input() customTemplate: TemplateRef<any>;\n\n @Input() eventTitleTemplate: TemplateRef<any>;\n\n @Input() eventActionsTemplate: TemplateRef<any>;\n\n @Input() date: Date;\n\n @Output() eventClicked = new EventEmitter<{\n event: CalendarEvent;\n sourceEvent: MouseEvent | KeyboardEvent;\n }>();\n\n trackByEventId = trackByEventId;\n\n validateDrag = isWithinThreshold;\n}\n","import {\n Component,\n OnChanges,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n OnInit,\n OnDestroy,\n LOCALE_ID,\n Inject,\n TemplateRef,\n} from '@angular/core';\nimport {\n CalendarEvent,\n WeekDay,\n MonthView,\n MonthViewDay,\n ViewPeriod,\n} from 'calendar-utils';\nimport { Subject, Subscription } from 'rxjs';\nimport {\n CalendarEventTimesChangedEvent,\n CalendarEventTimesChangedEventType,\n} from '../common/calendar-event-times-changed-event.interface';\nimport { CalendarUtils } from '../common/calendar-utils.provider';\nimport { validateEvents } from '../common/util';\nimport { DateAdapter } from '../../date-adapters/date-adapter';\nimport { PlacementArray } from 'positioning';\n\nexport interface CalendarMonthViewBeforeRenderEvent {\n header: WeekDay[];\n body: MonthViewDay[];\n period: ViewPeriod;\n}\n\nexport interface CalendarMonthViewEventTimesChangedEvent<\n EventMetaType = any,\n DayMetaType = any\n> extends CalendarEventTimesChangedEvent<EventMetaType> {\n day: MonthViewDay<DayMetaType>;\n}\n\n/**\n * Shows all events on a given month. Example usage:\n *\n * ```typescript\n * <mwl-calendar-month-view\n * [viewDate]=\"viewDate\"\n * [events]=\"events\">\n * </mwl-calendar-month-view>\n * ```\n */\n@Component({\n selector: 'mwl-calendar-month-view',\n template: `\n <div class=\"cal-month-view\" role=\"grid\">\n <mwl-calendar-month-view-header\n [days]=\"columnHeaders\"\n [locale]=\"locale\"\n (columnHeaderClicked)=\"columnHeaderClicked.emit($event)\"\n [customTemplate]=\"headerTemplate\"\n >\n </mwl-calendar-month-view-header>\n <div class=\"cal-days\">\n <div\n *ngFor=\"let rowIndex of view.rowOffsets; trackBy: trackByRowOffset\"\n >\n <div role=\"row\" class=\"cal-cell-row\">\n <mwl-calendar-month-cell\n role=\"gridcell\"\n *ngFor=\"\n let day of view.days\n | slice: rowIndex:rowIndex + view.totalDaysVisibleInWeek;\n trackBy: trackByDate\n \"\n [ngClass]=\"day?.cssClass\"\n [day]=\"day\"\n [openDay]=\"openDay\"\n [locale]=\"locale\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipDelay]=\"tooltipDelay\"\n [customTemplate]=\"cellTemplate\"\n [ngStyle]=\"{ backgroundColor: day.backgroundColor }\"\n (mwlClick)=\"dayClicked.emit({ day: day, sourceEvent: $event })\"\n [clickListenerDisabled]=\"dayClicked.observers.length === 0\"\n (mwlKeydownEnter)=\"\n dayClicked.emit({ day: day, sourceEvent: $event })\n \"\n (highlightDay)=\"toggleDayHighlight($event.event, true)\"\n (unhighlightDay)=\"toggleDayHighlight($event.event, false)\"\n mwlDroppable\n dragOverClass=\"cal-drag-over\"\n (drop)=\"\n eventDropped(\n day,\n $event.dropData.event,\n $event.dropData.draggedFrom\n )\n \"\n (eventClicked)=\"\n eventClicked.emit({\n event: $event.event,\n sourceEvent: $event.sourceEvent\n })\n \"\n [attr.tabindex]=\"{} | calendarA11y: 'monthCellTabIndex'\"\n >\n </mwl-calendar-month-cell>\n </div>\n <mwl-calendar-open-day-events\n [locale]=\"locale\"\n [isOpen]=\"openRowIndex === rowIndex\"\n [events]=\"openDay?.events\"\n [date]=\"openDay?.date\"\n [customTemplate]=\"openDayEventsTemplate\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n [eventActionsTemplate]=\"eventActionsTemplate\"\n (eventClicked)=\"\n eventClicked.emit({\n event: $event.event,\n sourceEvent: $event.sourceEvent\n })\n \"\n mwlDroppable\n dragOverClass=\"cal-drag-over\"\n (drop)=\"\n eventDropped(\n openDay,\n $event.dropData.event,\n $event.dropData.draggedFrom\n )\n \"\n >\n </mwl-calendar-open-day-events>\n </div>\n </div>\n </div>\n `,\n})\nexport class CalendarMonthViewComponent\n implements OnChanges, OnInit, OnDestroy\n{\n /**\n * The current view date\n */\n @Input() viewDate: Date;\n\n /**\n * An array of events to display on view.\n * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63\n */\n @Input() 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() excludeDays: number[] = [];\n\n /**\n * Whether the events list for the day of the `viewDate` option is visible or not\n */\n @Input() activeDayIsOpen: boolean = false;\n\n /**\n * If set will be used to determine the day that should be open. If not set, the `viewDate` is used\n */\n @Input() activeDay: Date;\n\n /**\n * An observable that when emitted on will re-render the current view\n */\n @Input() refresh: Subject<any>;\n\n /**\n * The locale used to format dates\n */\n @Input() locale: string;\n\n /**\n * The placement of the event tooltip\n */\n @Input() tooltipPlacement: PlacementArray = 'auto';\n\n /**\n * A custom template to use for the event tooltips\n */\n @Input() tooltipTemplate: TemplateRef<any>;\n\n /**\n * Whether to append tooltips to the body or next to the trigger element\n */\n @Input() tooltipAppendToBody: boolean = true;\n\n /**\n * The delay in milliseconds before the tooltip should be displayed. If not provided the tooltip\n * will be displayed immediately.\n */\n @Input() tooltipDelay: number | null = null;\n\n /**\n * The start number of the week.\n * If using the moment date adapter this option won't do anything and you'll need to set it globally like so:\n * ```\n * moment.updateLocale('en', {\n * week: {\n * dow: 1, // set start of week to monday instead\n * doy: 0,\n * },\n * });\n * ```\n */\n @Input() weekStartsOn: number;\n\n /**\n * A custom template to use to replace the header\n */\n @Input() headerTemplate: TemplateRef<any>;\n\n /**\n * A custom template to use to replace the day cell\n */\n @Input() cellTemplate: TemplateRef<any>;\n\n /**\n * A custom template to use for the slide down box of events for the active day\n */\n @Input() openDayEventsTemplate: TemplateRef<any>;\n\n /**\n * A custom template to use for event titles\n */\n @Input() eventTitleTemplate: TemplateRef<any>;\n\n /**\n * A custom template to use for event actions\n */\n @Input() eventActionsTemplate: TemplateRef<any>;\n\n /**\n * An array of day indexes (0 = sunday, 1 = monday etc) that indicate which days are weekends\n */\n @Input() weekendDays: number[];\n\n /**\n * An output that will be called before the view is rendered for the current month.\n * If you add the `cssClass` property to a day in the body it will add that class to the cell element in the template\n */\n @Output() beforeViewRender =\n new EventEmitter<CalendarMonthViewBeforeRenderEvent>();\n\n /**\n * Called when the day cell is clicked\n */\n @Output() dayClicked = new EventEmitter<{\n day: MonthViewDay;\n sourceEvent: MouseEvent | KeyboardEvent;\n }>();\n\n /**\n * Called when the event title is clicked\n */\n @Output() eventClicked = new EventEmitter<{\n event: CalendarEvent;\n sourceEvent: MouseEvent | KeyboardEvent;\n }>();\n\n /**\n * Called when a header week day is clicked. Returns ISO day number.\n */\n @Output() columnHeaderClicked = new EventEmitter<{\n isoDayNumber: number;\n sourceEvent: MouseEvent | KeyboardEvent;\n }>();\n\n /**\n * Called when an event is dragged and dropped\n */\n @Output()\n eventTimesChanged = new EventEmitter<CalendarMonthViewEventTimesChangedEvent>();\n\n /**\n * @hidden\n */\n columnHeaders: WeekDay[];\n\n /**\n * @hidden\n */\n view: MonthView;\n\n /**\n * @hidden\n */\n openRowIndex: number;\n\n /**\n * @hidden\n */\n openDay: MonthViewDay;\n\n /**\n * @hidden\n */\n refreshSubscription: Subscription;\n\n /**\n * @hidden\n */\n constructor(\n protected cdr: ChangeDetectorRef,\n protected utils: CalendarUtils,\n @Inject(LOCALE_ID) locale: string,\n protected dateAdapter: DateAdapter\n ) {\n this.locale = locale;\n }\n\n /**\n * @hidden\n */\n trackByRowOffset = (index: number, offset: number) =>\n this.view.days\n .slice(offset, this.view.totalDaysVisibleInWeek)\n .map((day) => day.date.toISOString())\n .join('-');\n\n /**\n * @hidden\n */\n trackByDate = (index: number, day: MonthViewDay) => day.date.toISOString();\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 const refreshHeader =\n changes.viewDate || changes.excludeDays || changes.weekendDays;\n const refreshBody =\n changes.viewDate ||\n changes.events ||\n changes.excludeDays ||\n changes.weekendDays;\n\n if (refreshHeader) {\n this.refreshHeader();\n }\n\n if (changes.events) {\n validateEvents(this.events);\n }\n\n if (refreshBody) {\n this.refreshBody();\n }\n\n if (refreshHeader || refreshBody) {\n this.emitBeforeViewRender();\n }\n\n if (\n changes.activeDayIsOpen ||\n changes.viewDate ||\n changes.events ||\n changes.excludeDays ||\n changes.activeDay\n ) {\n this.checkActiveDayIsOpen();\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 toggleDayHighlight(event: CalendarEvent, isHighlighted: boolean): void {\n this.view.days.forEach((day) => {\n if (isHighlighted && day.events.indexOf(event) > -1) {\n day.backgroundColor =\n (event.color && event.color.secondary) || '#D1E8FF';\n } else {\n delete day.backgroundColor;\n }\n });\n }\n\n /**\n * @hidden\n */\n eventDropped(\n droppedOn: MonthViewDay,\n event: CalendarEvent,\n draggedFrom?: MonthViewDay\n ): void {\n if (droppedOn !== draggedFrom) {\n const year: number = this.dateAdapter.getYear(droppedOn.date);\n const month: number = this.dateAdapter.getMonth(droppedOn.date);\n const date: number = this.dateAdapter.getDate(droppedOn.date);\n const newStart: Date = this.dateAdapter.setDate(\n this.dateAdapter.setMonth(\n this.dateAdapter.setYear(event.start, year),\n month\n ),\n date\n );\n let newEnd: Date;\n if (event.end) {\n const secondsDiff: number = this.dateAdapter.differenceInSeconds(\n newStart,\n event.start\n );\n newEnd = this.dateAdapter.addSeconds(event.end, secondsDiff);\n }\n this.eventTimesChanged.emit({\n event,\n newStart,\n newEnd,\n day: droppedOn,\n type: CalendarEventTimesChangedEventType.Drop,\n });\n }\n }\n\n protected refreshHeader(): void {\n this.columnHeaders = this.utils.getWeekViewHeader({\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n weekendDays: this.weekendDays,\n });\n }\n\n protected refreshBody(): void {\n this.view = this.utils.getMonthView({\n events: this.events,\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n weekendDays: this.weekendDays,\n });\n }\n\n protected checkActiveDayIsOpen(): void {\n if (this.activeDayIsOpen === true) {\n const activeDay = this.activeDay || this.viewDate;\n this.openDay = this.view.days.find((day) =>\n this.dateAdapter.isSameDay(day.date, activeDay)\n );\n const index: number = this.view.days.indexOf(this.openDay);\n this.openRowIndex =\n Math.floor(index / this.view.totalDaysVisibleInWeek) *\n this.view.totalDaysVisibleInWeek;\n } else {\n this.openRowIndex = null;\n this.openDay = null;\n }\n }\n\n protected refreshAll(): void {\n this.refreshHeader();\n this.refreshBody();\n this.emitBeforeViewRender();\n this.checkActiveDayIsOpen();\n }\n\n protected emitBeforeViewRender(): void {\n if (this.columnHeaders && this.view) {\n this.beforeViewRender.emit({\n header: this.columnHeaders,\n body: this.view.days,\n period: this.view.period,\n });\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DragAndDropModule } from 'angular-draggable-droppable';\nimport { CalendarMonthViewComponent } from './calendar-month-view.component';\nimport { CalendarMonthViewHeaderComponent } from './calendar-month-view-header.component';\nimport { CalendarMonthCellComponent } from './calendar-month-cell.component';\nimport { CalendarOpenDayEventsComponent } from './calendar-open-day-events.component';\nimport { CalendarCommonModule } from '../common/calendar-common.module';\n\nexport {\n CalendarMonthViewComponent,\n CalendarMonthViewBeforeRenderEvent,\n CalendarMonthViewEventTimesChangedEvent,\n} from './calendar-month-view.component';\nexport { MonthViewDay as CalendarMonthViewDay } from 'calendar-utils';\nexport { collapseAnimation } from './calendar-open-day-events.component';\n\n// needed for ivy, not part of the public api\nexport { CalendarMonthCellComponent as ɵCalendarMonthCellComponent } from './calendar-month-cell.component';\nexport { CalendarMonthViewHeaderComponent as ɵCalendarMonthViewHeaderComponent } from './calendar-month-view-header.component';\nexport { CalendarOpenDayEventsComponent as ɵCalendarOpenDayEventsComponent } from './calendar-open-day-events.component';\n\n@NgModule({\n imports: [CommonModule, DragAndDropModule, CalendarCommonModule],\n declarations: [\n CalendarMonthViewComponent,\n CalendarMonthCellComponent,\n CalendarOpenDayEventsComponent,\n CalendarMonthViewHeaderComponent,\n ],\n exports: [\n DragAndDropModule,\n CalendarMonthViewComponent,\n CalendarMonthCellComponent,\n CalendarOpenDayEventsComponent,\n CalendarMonthViewHeaderComponent,\n ],\n})\nexport class CalendarMonthModule {}\n","import { isInsideLeftAndRight, isWithinThreshold } from './util';\nimport { ValidateDragParams } from 'angular-draggable-droppable';\n\nexport class CalendarDragHelper {\n private readonly startPosition: ClientRect;\n\n constructor(\n private dragContainerElement: HTMLElement,\n draggableElement: HTMLElement\n ) {\n this.startPosition = draggableElement.getBoundingClientRect();\n }\n\n validateDrag({\n x,\n y,\n snapDraggedEvents,\n dragAlreadyMoved,\n transform,\n }: {\n x: number;\n y: number;\n snapDraggedEvents: boolean;\n dragAlreadyMoved: boolean;\n transform: ValidateDragParams['transform'];\n }): boolean {\n const isDraggedWithinThreshold =\n isWithinThreshold({ x, y }) || dragAlreadyMoved;\n\n if (snapDraggedEvents) {\n const inner: ClientRect = Object.assign({}, this.startPosition, {\n left: this.startPosition.left + transform.x,\n right: this.startPosition.right + transform.x,\n top: this.startPosition.top + transform.y,\n bottom: this.startPosition.bottom + transform.y,\n });\n\n if (isDraggedWithinThreshold) {\n const outer = this.dragContainerElement.getBoundingClientRect();\n\n const isTopInside = outer.top < inner.top && inner.top < outer.bottom;\n\n const isBottomInside =\n outer.top < inner.bottom && inner.bottom < outer.bottom;\n\n return (\n isInsideLeftAndRight(outer, inner) && (isTopInside || isBottomInside)\n );\n }\n\n /* istanbul ignore next */\n return false;\n } else {\n return isDraggedWithinThreshold;\n }\n }\n}\n","import { isInside } from './util';\n\nexport class CalendarResizeHelper {\n constructor(\n private resizeContainerElement: HTMLElement,\n private minWidth: number,\n private rtl: boolean\n ) {}\n\n validateResize({ rectangle, edges }): boolean {\n if (this.rtl) {\n // TODO - find a way of testing this, for some reason the tests always fail but it does actually work\n /* istanbul ignore next */\n if (typeof edges.left !== 'undefined') {\n rectangle.left -= edges.left;\n rectangle.right += edges.left;\n } else if (typeof edges.right !== 'undefined') {\n rectangle.left += edges.right;\n rectangle.right -= edges.right;\n }\n rectangle.width = rectangle.right - rectangle.left;\n }\n\n if (\n this.minWidth &&\n Math.ceil(rectangle.width) < Math.ceil(this.minWidth)\n ) {\n return false;\n }\n\n return isInside(\n this.resizeContainerElement.getBoundingClientRect(),\n rectangle\n );\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n TemplateRef,\n} from '@angular/core';\nimport { CalendarEvent, WeekDay } from 'calendar-utils';\nimport { trackByWeekDayHeaderDate } from '../common/util';\n\n@Component({\n selector: 'mwl-calendar-week-view-header',\n template: `\n <ng-template\n #defaultTemplate\n let-days=\"days\"\n let-locale=\"locale\"\n let-dayHeaderClicked=\"dayHeaderClicked\"\n let-eventDropped=\"eventDropped\"\n let-trackByWeekDayHeaderDate=\"trackByWeekDayHeaderDate\"\n let-dragEnter=\"dragEnter\"\n >\n <div class=\"cal-day-headers\" role=\"row\">\n <div\n class=\"cal-header\"\n *ngFor=\"let day of days; trackBy: trackByWeekDayHeaderDate\"\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 [ngClass]=\"day.cssClass\"\n (mwlClick)=\"dayHeaderClicked.emit({ day: day, sourceEvent: $event })\"\n mwlDroppable\n dragOverClass=\"cal-drag-over\"\n (drop)=\"\n eventDropped.emit({\n event: $event.dropData.event,\n newStart: day.date\n })\n \"\n (dragEnter)=\"dragEnter.emit({ date: day.date })\"\n tabindex=\"0\"\n role=\"columnheader\"\n >\n <b>{{ day.date | calendarDate: 'weekViewColumnHeader':locale }}</b\n ><br />\n <span>{{\n day.date | calendarDate: 'weekViewColumnSubHeader':locale\n }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n days: days,\n locale: locale,\n dayHeaderClicked: dayHeaderClicked,\n eventDropped: eventDropped,\n dragEnter: dragEnter,\n trackByWeekDayHeaderDate: trackByWeekDayHeaderDate\n }\"\n >\n </ng-template>\n `,\n})\nexport class CalendarWeekViewHeaderComponent {\n @Input() days: WeekDay[];\n\n @Input() locale: string;\n\n @Input() customTemplate: TemplateRef<any>;\n\n @Output() dayHeaderClicked = new EventEmitter<{\n day: WeekDay;\n sourceEvent: MouseEvent;\n }>();\n\n @Output() eventDropped = new EventEmitter<{\n event: CalendarEvent;\n newStart: Date;\n }>();\n\n @Output() dragEnter = new EventEmitter<{ date: Date }>();\n\n trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n TemplateRef,\n} from '@angular/core';\nimport {\n WeekViewAllDayEvent,\n WeekViewTimeEvent,\n WeekViewHourColumn,\n} from 'calendar-utils';\nimport { PlacementArray } from 'positioning';\n\n@Component({\n selector: 'mwl-calendar-week-view-event',\n template: `\n <ng-template\n #defaultTemplate\n let-weekEvent=\"weekEvent\"\n let-tooltipPlacement=\"tooltipPlacement\"\n let-eventClicked=\"eventClicked\"\n let-tooltipTemplate=\"tooltipTemplate\"\n let-tooltipAppendToBody=\"tooltipAppendToBody\"\n let-tooltipDisabled=\"tooltipDisabled\"\n let-tooltipDelay=\"tooltipDelay\"\n let-column=\"column\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n class=\"cal-event\"\n [ngStyle]=\"{\n backgroundColor: weekEvent.event.color?.secondary,\n borderColor: weekEvent.event.color?.primary\n }\"\n [mwlCalendarTooltip]=\"\n !tooltipDisabled\n ? (weekEvent.event.title\n | calendarEventTitle\n : (daysInWeek === 1 ? 'dayTooltip' : 'weekTooltip')\n : weekEvent.tempEvent || weekEvent.event)\n : ''\n \"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipEvent]=\"weekEvent.tempEvent || weekEvent.event\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n (mwlClick)=\"eventClicked.emit({ sourceEvent: $event })\"\n (mwlKeydownEnter)=\"eventClicked.emit({ sourceEvent: $event })\"\n tabindex=\"0\"\n role=\"application\"\n [attr.aria-label]=\"\n { event: weekEvent.tempEvent || weekEvent.event, locale: locale }\n | calendarA11y: 'eventDescription'\n \"\n >\n <mwl-calendar-event-actions\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventActionsTemplate\"\n >\n </mwl-calendar-event-actions>\n &ngsp;\n <mwl-calendar-event-title\n [event]=\"weekEvent.tempEvent || weekEvent.event\"\n [customTemplate]=\"eventTitleTemplate\"\n [view]=\"daysInWeek === 1 ? 'day' : 'week'\"\n >\n </mwl-calendar-event-title>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n weekEvent: weekEvent,\n tooltipPlacement: tooltipPlacement,\n eventClicked: eventClicked,\n tooltipTemplate: tooltipTemplate,\n tooltipAppendToBody: tooltipAppendToBody,\n tooltipDisabled: tooltipDisabled,\n tooltipDelay: tooltipDelay,\n column: column,\n daysInWeek: daysInWeek\n }\"\n >\n </ng-template>\n `,\n})\nexport class CalendarWeekViewEventComponent {\n @Input() locale: string;\n\n @Input() weekEvent: WeekViewAllDayEvent | WeekViewTimeEvent;\n\n @Input() tooltipPlacement: PlacementArray;\n\n @Input() tooltipAppendToBody: boolean;\n\n @Input() tooltipDisabled: boolean;\n\n @Input() tooltipDelay: number | null;\n\n @Input() customTemplate: TemplateRef<any>;\n\n @Input() eventTitleTemplate: TemplateRef<any>;\n\n @Input() eventActionsTemplate: TemplateRef<any>;\n\n @Input() tooltipTemplate: TemplateRef<any>;\n\n @Input() column: WeekViewHourColumn;\n\n @Input() daysInWeek: number;\n\n @Output() eventClicked = new EventEmitter<{\n sourceEvent: MouseEvent | KeyboardEvent;\n }>();\n}\n","import { Component, Input, TemplateRef } from '@angular/core';\nimport { WeekViewHourSegment } from 'calendar-utils';\n\n@Component({\n selector: 'mwl-calendar-week-view-hour-segment',\n template: `\n <ng-template\n #defaultTemplate\n let-segment=\"segment\"\n let-locale=\"locale\"\n let-segmentHeight=\"segmentHeight\"\n let-isTimeLabel=\"isTimeLabel\"\n let-daysInWeek=\"daysInWeek\"\n >\n <div\n [attr.aria-hidden]=\"\n {}\n | calendarA11y\n : (daysInWeek === 1\n ? 'hideDayHourSegment'\n : 'hideWeekHourSegment')\n \"\n class=\"cal-hour-segment\"\n [style.height.px]=\"segmentHeight\"\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\" *ngIf=\"isTimeLabel\">\n {{\n segment.displayDate\n | calendarDate\n : (daysInWeek === 1 ? 'dayViewHour' : 'weekViewHour')\n : locale\n }}\n </div>\n </div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n segment: segment,\n locale: locale,\n segmentHeight: segmentHeight,\n isTimeLabel: isTimeLabel,\n daysInWeek: daysInWeek\n }\"\n >\n </ng-template>\n `,\n})\nexport class CalendarWeekViewHourSegmentComponent {\n @Input() segment: WeekViewHourSegment;\n\n @Input() segmentHeight: number;\n\n @Input() locale: string;\n\n @Input() isTimeLabel: boolean;\n\n @Input() daysInWeek: number;\n\n @Input() customTemplate: TemplateRef<any>;\n}\n","import {\n Component,\n Input,\n NgZone,\n OnChanges,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\nimport { BehaviorSubject, interval, Observable } from 'rxjs';\nimport { switchMapTo, startWith, map, switchMap } from 'rxjs/operators';\nimport { DateAdapter } from '../../date-adapters/date-adapter';\n\n@Component({\n selector: 'mwl-calendar-week-view-current-time-marker',\n template: `\n <ng-template\n #defaultTemplate\n let-columnDate=\"columnDate\"\n let-dayStartHour=\"dayStartHour\"\n let-dayStartMinute=\"dayStartMinute\"\n let-dayEndHour=\"dayEndHour\"\n let-dayEndMinute=\"dayEndMinute\"\n let-isVisible=\"isVisible\"\n let-topPx=\"topPx\"\n >\n <div\n class=\"cal-current-time-marker\"\n *ngIf=\"isVisible\"\n [style.top.px]=\"topPx\"\n ></div>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{\n columnDate: columnDate,\n dayStartHour: dayStartHour,\n dayStartMinute: dayStartMinute,\n dayEndHour: dayEndHour,\n dayEndMinute: dayEndMinute,\n isVisible: (marker$ | async)?.isVisible,\n topPx: (marker$ | async)?.top\n }\"\n >\n </ng-template>\n `,\n})\nexport class CalendarWeekViewCurrentTimeMarkerComponent implements OnChanges {\n @Input() columnDate: Date;\n\n @Input() dayStartHour: number;\n\n @Input() dayStartMinute: number;\n\n @Input() dayEndHour: number;\n\n @Input() dayEndMinute: number;\n\n @Input() hourSegments: number;\n\n @Input() hourDuration: number;\n\n @Input() hourSegmentHeight: number;\n\n @Input() customTemplate: TemplateRef<any>;\n\n columnDate$ = new BehaviorSubject<Date>(undefined);\n\n marker$: Observable<{\n isVisible: boolean;\n top: number;\n }> = this.zone.onStable.pipe(\n switchMap(() => interval(60 * 1000)),\n startWith(0),\n switchMapTo(this.columnDate$),\n map((columnDate) => {\n const startOfDay = this.dateAdapter.setMinutes(\n this.dateAdapter.setHours(columnDate, this.dayStartHour),\n this.dayStartMinute\n );\n const endOfDay = this.dateAdapter.setMinutes(\n this.dateAdapter.setHours(columnDate, this.dayEndHour),\n this.dayEndMinute\n );\n const hourHeightModifier =\n (this.hourSegments * this.hourSegmentHeight) /\n (this.hourDuration || 60);\n const now = new Date();\n return {\n isVisible:\n this.dateAdapter.isSameDay(columnDate, now) &&\n now >= startOfDay &&\n now <= endOfDay,\n top:\n this.dateAdapter.differenceInMinutes(now, startOfDay) *\n hourHeightModifier,\n };\n })\n );\n\n constructor(private dateAdapter: DateAdapter, private zone: NgZone) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.columnDate) {\n this.columnDate$.next(changes.columnDate.currentValue);\n }\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n OnChanges,\n OnInit,\n OnDestroy,\n LOCALE_ID,\n Inject,\n TemplateRef,\n ElementRef,\n AfterViewInit,\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport {\n WeekDay,\n CalendarEvent,\n WeekViewAllDayEvent,\n WeekView,\n ViewPeriod,\n WeekViewHourColumn,\n WeekViewTimeEvent,\n WeekViewHourSegment,\n WeekViewHour,\n WeekViewAllDayEventRow,\n} from 'calendar-utils';\nimport { ResizeEvent } from 'angular-resizable-element';\nimport { CalendarDragHelper } from '../common/calendar-drag-helper.provider';\nimport { CalendarResizeHelper } from '../common/calendar-resize-helper.provider';\nimport {\n CalendarEventTimesChangedEvent,\n CalendarEventTimesChangedEventType,\n} from '../common/calendar-event-times-changed-event.interface';\nimport { CalendarUtils } from '../common/calendar-utils.provider';\nimport {\n validateEvents,\n roundToNearest,\n trackByWeekDayHeaderDate,\n trackByHourSegment,\n trackByHour,\n getMinutesMoved,\n getDefaultEventEnd,\n addDaysWithExclusions,\n isDraggedWithinPeriod,\n shouldFireDroppedEvent,\n getWeekViewPeriod,\n trackByWeekAllDayEvent,\n trackByWeekTimeEvent,\n} from '../common/util';\nimport { DateAdapter } from '../../date-adapters/date-adapter';\nimport {\n DragEndEvent,\n DropEvent,\n DragMoveEvent,\n ValidateDrag,\n} from 'angular-draggable-droppable';\nimport { PlacementArray } from 'positioning';\n\nexport interface WeekViewAllDayEventResize {\n originalOffset: number;\n originalSpan: number;\n edge: string;\n}\n\nexport interface CalendarWeekViewBeforeRenderEvent extends WeekView {\n header: WeekDay[];\n}\n\n/**\n * Shows all events on a given week. Example usage:\n *\n * ```typescript\n * <mwl-calendar-week-view\n * [viewDate]=\"viewDate\"\n * [events]=\"events\">\n * </mwl-calendar-week-view>\n * ```\n */\n@Component({\n selector: 'mwl-calendar-week-view',\n template: `\n <div class=\"cal-week-view\" role=\"grid\">\n <mwl-calendar-week-view-header\n [days]=\"days\"\n [locale]=\"locale\"\n [customTemplate]=\"headerTemplate\"\n (dayHeaderClicked)=\"dayHeaderClicked.emit($event)\"\n (eventDropped)=\"\n eventDropped({ dropData: $event }, $event.newStart, true)\n \"\n (dragEnter)=\"dateDragEnter($event.date)\"\n >\n </mwl-calendar-week-view-header>\n <div\n class=\"cal-all-day-events\"\n #allDayEventsContainer\n *ngIf=\"view.allDayEventRows.length > 0\"\n mwlDroppable\n (dragEnter)=\"dragEnter('allDay')\"\n (dragLeave)=\"dragLeave('allDay')\"\n >\n <div class=\"cal-day-columns\">\n <div\n class=\"cal-time-label-column\"\n [ngTemplateOutlet]=\"allDayEventsLabelTemplate\"\n ></div>\n <div\n class=\"cal-day-column\"\n *ngFor=\"let day of days; trackBy: trackByWeekDayHeaderDate\"\n mwlDroppable\n dragOverClass=\"cal-drag-over\"\n (drop)=\"eventDropped($event, day.date, true)\"\n (dragEnter)=\"dateDragEnter(day.date)\"\n ></div>\n </div>\n <div\n *ngFor=\"let eventRow of view.allDayEventRows; trackBy: trackById\"\n #eventRowContainer\n class=\"cal-events-row\"\n >\n <div\n *ngFor=\"\n let allDayEvent of eventRow.row;\n trackBy: trackByWeekAllDayEvent\n \"\n #event\n class=\"cal-event-container\"\n [class.cal-draggable]=\"\n allDayEvent.event.draggable && allDayEventResizes.size === 0\n \"\n [class.cal-starts-within-week]=\"!allDayEvent.startsBeforeWeek\"\n [class.cal-ends-within-week]=\"!allDayEvent.endsAfterWeek\"\n [ngClass]=\"allDayEvent.event?.cssClass\"\n [style.width.%]=\"(100 / days.length) * allDayEvent.span\"\n [style.marginLeft.%]=\"\n rtl ? null : (100 / days.length) * allDayEvent.offset\n \"\n [style.marginRight.%]=\"\n rtl\n ? (100 / days.length) * (days.length - allDayEvent.offset) * -1\n : null\n \"\n mwlResizable\n [resizeSnapGrid]=\"{ left: dayColumnWidth, right: dayColumnWidth }\"\n [validateResize]=\"validateResize\"\n (resizeStart)=\"\n allDayEventResizeStarted(eventRowContainer, allDayEvent, $event)\n \"\n (resizing)=\"\n allDayEventResizing(allDayEvent, $event, dayColumnWidth)\n \"\n (resizeEnd)=\"allDayEventResizeEnded(allDayEvent)\"\n mwlDraggable\n dragActiveClass=\"cal-drag-active\"\n [dropData]=\"{ event: allDayEvent.event, calendarId: calendarId }\"\n [dragAxis]=\"{\n x: allDayEvent.event.draggable && allDayEventResizes.size === 0,\n y:\n !snapDraggedEvents &&\n allDayEvent.event.draggable &&\n allDayEventResizes.size === 0\n }\"\n [dragSnapGrid]=\"snapDraggedEvents ? { x: dayColumnWidth } : {}\"\n [validateDrag]=\"validateDrag\"\n [touchStartLongPress]=\"{ delay: 300, delta: 30 }\"\n (dragStart)=\"\n dragStarted(eventRowContainer, event, allDayEvent, false)\n \"\n (dragging)=\"allDayEventDragMove()\"\n (dragEnd)=\"dragEnded(allDayEvent, $event, dayColumnWidth)\"\n >\n <div\n class=\"cal-resize-handle cal-resize-handle-before-start\"\n *ngIf=\"\n allDayEvent.event?.resizable?.beforeStart &&\n !allDayEvent.startsBeforeWeek\n \"\n mwlResizeHandle\n [resizeEdges]=\"{ left: true }\"\n ></div>\n <mwl-calendar-week-view-event\n [locale]=\"locale\"\n [weekEvent]=\"allDayEvent\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n [customTemplate]=\"eventTemplate\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n [eventActionsTemplate]=\"eventActionsTemplate\"\n [daysInWeek]=\"daysInWeek\"\n (eventClicked)=\"\n eventClicked.emit({\n event: allDayEvent.event,\n sourceEvent: $event.sourceEvent\n })\n \"\n >\n </mwl-calendar-week-view-event>\n <div\n class=\"cal-resize-handle cal-resize-handle-after-end\"\n *ngIf=\"\n allDayEvent.event?.resizable?.afterEnd &&\n !allDayEvent.endsAfterWeek\n \"\n mwlResizeHandle\n [resizeEdges]=\"{ right: true }\"\n ></div>\n </div>\n </div>\n </div>\n <div\n class=\"cal-time-events\"\n mwlDroppable\n (dragEnter)=\"dragEnter('time')\"\n (dragLeave)=\"dragLeave('time')\"\n >\n <div\n class=\"cal-time-label-column\"\n *ngIf=\"view.hourColumns.length > 0 && daysInWeek !== 1\"\n >\n <div\n *ngFor=\"\n let hour of view.hourColumns[0].hours;\n trackBy: trackByHour;\n let odd = odd\n \"\n class=\"cal-hour\"\n [class.cal-hour-odd]=\"odd\"\n >\n <mwl-calendar-week-view-hour-segment\n *ngFor=\"let segment of hour.segments; trackBy: trackByHourSegment\"\n [style.height.px]=\"hourSegmentHeight\"\n [segment]=\"segment\"\n [segmentHeight]=\"hourSegmentHeight\"\n [locale]=\"locale\"\n [customTemplate]=\"hourSegmentTemplate\"\n [isTimeLabel]=\"true\"\n [daysInWeek]=\"daysInWeek\"\n >\n </mwl-calendar-week-view-hour-segment>\n </div>\n </div>\n <div\n class=\"cal-day-columns\"\n [class.cal-resize-active]=\"timeEventResizes.size > 0\"\n #dayColumns\n >\n <div\n class=\"cal-day-column\"\n *ngFor=\"let column of view.hourColumns; trackBy: trackByHourColumn\"\n >\n <mwl-calendar-week-view-current-time-marker\n [columnDate]=\"column.date\"\n [dayStartHour]=\"dayStartHour\"\n [dayStartMinute]=\"dayStartMinute\"\n [dayEndHour]=\"dayEndHour\"\n [dayEndMinute]=\"dayEndMinute\"\n [hourSegments]=\"hourSegments\"\n [hourDuration]=\"hourDuration\"\n [hourSegmentHeight]=\"hourSegmentHeight\"\n [customTemplate]=\"currentTimeMarkerTemplate\"\n ></mwl-calendar-week-view-current-time-marker>\n <div class=\"cal-events-container\">\n <div\n *ngFor=\"\n let timeEvent of column.events;\n trackBy: trackByWeekTimeEvent\n \"\n #event\n class=\"cal-event-container\"\n [class.cal-draggable]=\"\n timeEvent.event.draggable && timeEventResizes.size === 0\n \"\n [class.cal-starts-within-day]=\"!timeEvent.startsBeforeDay\"\n [class.cal-ends-within-day]=\"!timeEvent.endsAfterDay\"\n [ngClass]=\"timeEvent.event.cssClass\"\n [hidden]=\"timeEvent.height === 0 && timeEvent.width === 0\"\n [style.top.px]=\"timeEvent.top\"\n [style.height.px]=\"timeEvent.height\"\n [style.left.%]=\"timeEvent.left\"\n [style.width.%]=\"timeEvent.width\"\n mwlResizable\n [resizeSnapGrid]=\"{\n left: dayColumnWidth,\n right: dayColumnWidth,\n top: eventSnapSize || hourSegmentHeight,\n bottom: eventSnapSize || hourSegmentHeight\n }\"\n [validateResize]=\"validateResize\"\n [allowNegativeResizes]=\"true\"\n (resizeStart)=\"\n timeEventResizeStarted(dayColumns, timeEvent, $event)\n \"\n (resizing)=\"timeEventResizing(timeEvent, $event)\"\n (resizeEnd)=\"timeEventResizeEnded(timeEvent)\"\n mwlDraggable\n dragActiveClass=\"cal-drag-active\"\n [dropData]=\"{ event: timeEvent.event, calendarId: calendarId }\"\n [dragAxis]=\"{\n x: timeEvent.event.draggable && timeEventResizes.size === 0,\n y: timeEvent.event.draggable && timeEventResizes.size === 0\n }\"\n [dragSnapGrid]=\"\n snapDraggedEvents\n ? {\n x: dayColumnWidth,\n y: eventSnapSize || hourSegmentHeight\n }\n : {}\n \"\n [touchStartLongPress]=\"{ delay: 300, delta: 30 }\"\n [ghostDragEnabled]=\"!snapDraggedEvents\"\n [ghostElementTemplate]=\"weekEventTemplate\"\n [validateDrag]=\"validateDrag\"\n (dragStart)=\"dragStarted(dayColumns, event, timeEvent, true)\"\n (dragging)=\"dragMove(timeEvent, $event)\"\n (dragEnd)=\"dragEnded(timeEvent, $event, dayColumnWidth, true)\"\n >\n <div\n class=\"cal-resize-handle cal-resize-handle-before-start\"\n *ngIf=\"\n timeEvent.event?.resizable?.beforeStart &&\n !timeEvent.startsBeforeDay\n \"\n mwlResizeHandle\n [resizeEdges]=\"{\n left: true,\n top: true\n }\"\n ></div>\n <ng-template\n [ngTemplateOutlet]=\"weekEventTemplate\"\n ></ng-template>\n <ng-template #weekEventTemplate>\n <mwl-calendar-week-view-event\n [locale]=\"locale\"\n [weekEvent]=\"timeEvent\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDisabled]=\"dragActive || timeEventResizes.size > 0\"\n [tooltipDelay]=\"tooltipDelay\"\n [customTemplate]=\"eventTemplate\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n [eventActionsTemplate]=\"eventActionsTemplate\"\n [column]=\"column\"\n [daysInWeek]=\"daysInWeek\"\n (eventClicked)=\"\n eventClicked.emit({\n event: timeEvent.event,\n sourceEvent: $event.sourceEvent\n })\n \"\n >\n </mwl-calendar-week-view-event>\n </ng-template>\n <div\n class=\"cal-resize-handle cal-resize-handle-after-end\"\n *ngIf=\"\n timeEvent.event?.resizable?.afterEnd &&\n !timeEvent.endsAfterDay\n \"\n mwlResizeHandle\n [resizeEdges]=\"{\n right: true,\n bottom: true\n }\"\n ></div>\n </div>\n </div>\n\n <div\n *ngFor=\"\n let hour of column.hours;\n trackBy: trackByHour;\n let odd = odd\n \"\n class=\"cal-hour\"\n [class.cal-hour-odd]=\"odd\"\n >\n <mwl-calendar-week-view-hour-segment\n *ngFor=\"\n let segment of hour.segments;\n trackBy: trackByHourSegment\n \"\n [style.height.px]=\"hourSegmentHeight\"\n [segment]=\"segment\"\n [segmentHeight]=\"hourSegmentHeight\"\n [locale]=\"locale\"\n [customTemplate]=\"hourSegmentTemplate\"\n [daysInWeek]=\"daysInWeek\"\n (mwlClick)=\"\n hourSegmentClicked.emit({\n date: segment.date,\n sourceEvent: $event\n })\n \"\n [clickListenerDisabled]=\"\n hourSegmentClicked.observers.length === 0\n \"\n mwlDroppable\n [dragOverClass]=\"\n !dragActive || !snapDraggedEvents ? 'cal-drag-over' : null\n \"\n dragActiveClass=\"cal-drag-active\"\n (drop)=\"eventDropped($event, segment.date, false)\"\n (dragEnter)=\"dateDragEnter(segment.date)\"\n [isTimeLabel]=\"daysInWeek === 1\"\n >\n </mwl-calendar-week-view-hour-segment>\n </div>\n </div>\n </div>\n </div>\n </div>\n `,\n})\nexport class CalendarWeekViewComponent\n implements OnChanges, OnInit, OnDestroy, AfterViewInit\n{\n /**\n * The current view date\n */\n @Input() viewDate: Date;\n\n /**\n * An array of events to display on view\n * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63\n */\n @Input() 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() excludeDays: number[] = [];\n\n /**\n * An observable that when emitted on will re-render the current view\n */\n @Input() refresh: Subject<any>;\n\n /**\n * The locale used to format dates\n */\n @Input() locale: string;\n\n /**\n * The placement of the event tooltip\n */\n @Input() tooltipPlacement: PlacementArray = 'auto';\n\n /**\n * A custom template to use for the event tooltips\n */\n @Input() tooltipTemplate: TemplateRef<any>;\n\n /**\n * Whether to append tooltips to the body or next to the trigger element\n */\n @Input() tooltipAppendToBody: boolean = true;\n\n /**\n * The delay in milliseconds before the tooltip should be displayed. If not provided the tooltip\n * will be displayed immediately.\n */\n @Input() tooltipDelay: number | null = null;\n\n /**\n * The start number of the week.\n * This is ignored when the `daysInWeek` input is also set as the `viewDate` will be used as the start of the week instead.\n * Note, you should also pass this to the calendar title pipe so it shows the same days: {{ viewDate | calendarDate:(view + 'ViewTitle'):locale:weekStartsOn }}\n * If using the moment date adapter this option won't do anything and you'll need to set it globally like so:\n * ```\n * moment.updateLocale('en', {\n * week: {\n * dow: 1, // set start of week to monday instead\n * doy: 0,\n * },\n * });\n * ```\n */\n @Input() weekStartsOn: number;\n\n /**\n * A custom template to use to replace the header\n */\n @Input() headerTemplate: TemplateRef<any>;\n\n /**\n * A custom template to use for week view events\n */\n @Input() eventTemplate: TemplateRef<any>;\n\n /**\n * A custom template to use for event titles\n */\n @Input() eventTitleTemplate: TemplateRef<any>;\n\n /**\n * A custom template to use for event actions\n */\n @Input() eventActionsTemplate: 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() precision: 'days' | 'minutes' = 'days';\n\n /**\n * An array of day indexes (0 = sunday, 1 = monday etc) that indicate which days are weekends\n */\n @Input() weekendDays: number[];\n\n /**\n * Whether to snap events to a grid when dragging\n */\n @Input() snapDraggedEvents: boolean = true;\n\n /**\n * The number of segments in an hour. Must divide equally into 60.\n */\n @Input() hourSegments: number = 2;\n\n /**\n * The duration of each segment group in minutes\n */\n @Input() hourDuration: number;\n\n /**\n * The height in pixels of each hour segment\n */\n @Input() hourSegmentHeight: number = 30;\n\n /**\n * The minimum height in pixels of each event\n */\n @Input() minimumEventHeight: number = 30;\n\n /**\n * The day start hours in 24 hour time. Must be 0-23\n */\n @Input() dayStartHour: number = 0;\n\n /**\n * The day start minutes. Must be 0-59\n */\n @Input() dayStartMinute: number = 0;\n\n /**\n * The day end hours in 24 hour time. Must be 0-23\n */\n @Input() dayEndHour: number = 23;\n\n /**\n * The day end minutes. Must be 0-59\n */\n @Input() dayEndMinute: number = 59;\n\n /**\n * A custom template to use to replace the hour segment\n */\n @Input() hourSegmentTemplate: TemplateRef<any>;\n\n /**\n * The grid size to snap resizing and dragging of hourly events to\n */\n @Input() eventSnapSize: number;\n\n /**\n * A custom template to use for the all day events label text\n */\n @Input() allDayEventsLabelTemplate: TemplateRef<any>;\n\n /**\n * The number of days in a week. Can be used to create a shorter or longer week view.\n * The first day of the week will always be the `viewDate` and `weekStartsOn` if set will be ignored\n */\n @Input() daysInWeek: number;\n\n /**\n * A custom template to use for the current time marker\n */\n @Input() currentTimeMarkerTemplate: TemplateRef<any>;\n\n /**\n * Allow you to customise where events can be dragged and resized to.\n * Return true to allow dragging and resizing to the new location, or false to prevent it\n */\n @Input() validateEventTimesChanged: (\n event: CalendarEventTimesChangedEvent\n ) => boolean;\n\n /**\n * Called when a header week day is clicked. Adding a `cssClass` property on `$event.day` will add that class to the header element\n */\n @Output() dayHeaderClicked = new EventEmitter<{\n day: WeekDay;\n sourceEvent: MouseEvent;\n }>();\n\n /**\n * Called when an event title is clicked\n */\n @Output() eventClicked = new EventEmitter<{\n event: CalendarEvent;\n sourceEvent: MouseEvent | KeyboardEvent;\n }>();\n\n /**\n * Called when an event is resized or dragged and dropped\n */\n @Output() eventTimesChanged =\n new EventEmitter<CalendarEventTimesChangedEvent>();\n\n /**\n * An output that will be called before the view is rendered for the current week.\n * If you add the `cssClass` property to a day in the header it will add that class to the cell element in the template\n */\n @Output() beforeViewRender =\n new EventEmitter<CalendarWeekViewBeforeRenderEvent>();\n\n /**\n * Called when an hour segment is clicked\n */\n @Output() hourSegmentClicked = new EventEmitter<{\n date: Date;\n sourceEvent: MouseEvent;\n }>();\n\n /**\n * @hidden\n */\n days: WeekDay[];\n\n /**\n * @hidden\n */\n view: WeekView;\n\n /**\n * @hidden\n */\n refreshSubscription: Subscription;\n\n /**\n * @hidden\n */\n allDayEventResizes: Map<WeekViewAllDayEvent, WeekViewAllDayEventResize> =\n new Map();\n\n /**\n * @hidden\n */\n timeEventResizes: Map<CalendarEvent, ResizeEvent> = new Map();\n\n /**\n * @hidden\n */\n eventDragEnterByType = {\n allDay: 0,\n time: 0,\n };\n\n /**\n * @hidden\n */\n dragActive = false;\n\n /**\n * @hidden\n */\n dragAlreadyMoved = false;\n\n /**\n * @hidden\n */\n validateDrag: ValidateDrag;\n\n /**\n * @hidden\n */\n validateResize: (args: any) => boolean;\n\n /**\n * @hidden\n */\n dayColumnWidth: number;\n\n /**\n * @hidden\n */\n calendarId = Symbol('angular calendar week view id');\n\n /**\n * @hidden\n */\n lastDraggedEvent: CalendarEvent;\n\n /**\n * @hidden\n */\n rtl = false;\n\n /**\n * @hidden\n */\n trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;\n\n /**\n * @hidden\n */\n trackByHourSegment = trackByHourSegment;\n\n /**\n * @hidden\n */\n trackByHour = trackByHour;\n\n /**\n * @hidden\n */\n trackByWeekAllDayEvent = trackByWeekAllDayEvent;\n\n /**\n * @hidden\n */\n trackByWeekTimeEvent = trackByWeekTimeEvent;\n\n /**\n * @hidden\n */\n private lastDragEnterDate: Date;\n\n /**\n * @hidden\n */\n constructor(\n protected cdr: ChangeDetectorRef,\n protected utils: CalendarUtils,\n @Inject(LOCALE_ID) locale: string,\n protected dateAdapter: DateAdapter,\n protected element: ElementRef<HTMLElement>\n ) {\n this.locale = locale;\n }\n\n /**\n * @hidden\n */\n trackByHourColumn = (index: number, column: WeekViewHourColumn) =>\n column.hours[0] ? column.hours[0].segments[0].date.toISOString() : column;\n\n /**\n * @hidden\n */\n trackById = (index: number, row: WeekViewAllDayEventRow) => row.id;\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 const refreshHeader =\n changes.viewDate ||\n changes.excludeDays ||\n changes.weekendDays ||\n changes.daysInWeek ||\n changes.weekStartsOn;\n\n const refreshBody =\n changes.viewDate ||\n changes.dayStartHour ||\n changes.dayStartMinute ||\n changes.dayEndHour ||\n changes.dayEndMinute ||\n changes.hourSegments ||\n changes.hourDuration ||\n changes.weekStartsOn ||\n changes.weekendDays ||\n changes.excludeDays ||\n changes.hourSegmentHeight ||\n changes.events ||\n changes.daysInWeek ||\n changes.minimumEventHeight;\n\n if (refreshHeader) {\n this.refreshHeader();\n }\n\n if (changes.events) {\n validateEvents(this.events);\n }\n\n if (refreshBody) {\n this.refreshBody();\n }\n\n if (refreshHeader || refreshBody) {\n this.emitBeforeViewRender();\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 ngAfterViewInit() {\n this.rtl =\n typeof window !== 'undefined' &&\n getComputedStyle(this.element.nativeElement).direction === 'rtl';\n this.cdr.detectChanges();\n }\n\n /**\n * @hidden\n */\n timeEventResizeStarted(\n eventsContainer: HTMLElement,\n timeEvent: WeekViewTimeEvent,\n resizeEvent: ResizeEvent\n ): void {\n this.timeEventResizes.set(timeEvent.event, resizeEvent);\n this.resizeStarted(eventsContainer, timeEvent);\n }\n\n /**\n * @hidden\n */\n timeEventResizing(timeEvent: WeekViewTimeEvent, resizeEvent: ResizeEvent) {\n this.timeEventResizes.set(timeEvent.event, resizeEvent);\n const adjustedEvents = new Map<CalendarEvent, CalendarEvent>();\n\n const tempEvents = [...this.events];\n\n this.timeEventResizes.forEach((lastResizeEvent, event) => {\n const newEventDates = this.getTimeEventResizedDates(\n event,\n lastResizeEvent\n );\n const adjustedEvent = { ...event, ...newEventDates };\n adjustedEvents.set(adjustedEvent, event);\n const eventIndex = tempEvents.indexOf(event);\n tempEvents[eventIndex] = adjustedEvent;\n });\n\n this.restoreOriginalEvents(tempEvents, adjustedEvents, true);\n }\n\n /**\n * @hidden\n */\n timeEventResizeEnded(timeEvent: WeekViewTimeEvent) {\n this.view = this.getWeekView(this.events);\n const lastResizeEvent = this.timeEventResizes.get(timeEvent.event);\n if (lastResizeEvent) {\n this.timeEventResizes.delete(timeEvent.event);\n const newEventDates = this.getTimeEventResizedDates(\n timeEvent.event,\n lastResizeEvent\n );\n this.eventTimesChanged.emit({\n newStart: newEventDates.start,\n newEnd: newEventDates.end,\n event: timeEvent.event,\n type: CalendarEventTimesChangedEventType.Resize,\n });\n }\n }\n\n /**\n * @hidden\n */\n allDayEventResizeStarted(\n allDayEventsContainer: HTMLElement,\n allDayEvent: WeekViewAllDayEvent,\n resizeEvent: ResizeEvent\n ): void {\n this.allDayEventResizes.set(allDayEvent, {\n originalOffset: allDayEvent.offset,\n originalSpan: allDayEvent.span,\n edge: typeof resizeEvent.edges.left !== 'undefined' ? 'left' : 'right',\n });\n this.resizeStarted(\n allDayEventsContainer,\n allDayEvent,\n this.getDayColumnWidth(allDayEventsContainer)\n );\n }\n\n /**\n * @hidden\n */\n allDayEventResizing(\n allDayEvent: WeekViewAllDayEvent,\n resizeEvent: ResizeEvent,\n dayWidth: number\n ): void {\n const currentResize: WeekViewAllDayEventResize =\n this.allDayEventResizes.get(allDayEvent);\n\n const modifier = this.rtl ? -1 : 1;\n if (typeof resizeEvent.edges.left !== 'undefined') {\n const diff: number =\n Math.round(+resizeEvent.edges.left / dayWidth) * modifier;\n allDayEvent.offset = currentResize.originalOffset + diff;\n allDayEvent.span = currentResize.originalSpan - diff;\n } else if (typeof resizeEvent.edges.right !== 'undefined') {\n const diff: number =\n Math.round(+resizeEvent.edges.right / dayWidth) * modifier;\n allDayEvent.span = currentResize.originalSpan + diff;\n }\n }\n\n /**\n * @hidden\n */\n allDayEventResizeEnded(allDayEvent: WeekViewAllDayEvent): void {\n const currentResize: WeekViewAllDayEventResize =\n this.allDayEventResizes.get(allDayEvent);\n\n if (currentResize) {\n const allDayEventResizingBeforeStart = currentResize.edge === 'left';\n let daysDiff: number;\n if (allDayEventResizingBeforeStart) {\n daysDiff = allDayEvent.offset - currentResize.originalOffset;\n } else {\n daysDiff = allDayEvent.span - currentResize.originalSpan;\n }\n\n allDayEvent.offset = currentResize.originalOffset;\n allDayEvent.span = currentResize.originalSpan;\n\n const newDates = this.getAllDayEventResizedDates(\n allDayEvent.event,\n daysDiff,\n allDayEventResizingBeforeStart\n );\n\n this.eventTimesChanged.emit({\n newStart: newDates.start,\n newEnd: newDates.end,\n event: allDayEvent.event,\n type: CalendarEventTimesChangedEventType.Resize,\n });\n this.allDayEventResizes.delete(allDayEvent);\n }\n }\n\n /**\n * @hidden\n */\n getDayColumnWidth(eventRowContainer: HTMLElement): number {\n return Math.floor(eventRowContainer.offsetWidth / this.days.length);\n }\n\n /**\n * @hidden\n */\n dateDragEnter(date: Date) {\n this.lastDragEnterDate = date;\n }\n\n /**\n * @hidden\n */\n eventDropped(\n dropEvent: DropEvent<{ event?: CalendarEvent; calendarId?: symbol }>,\n date: Date,\n allDay: boolean\n ): void {\n if (\n shouldFireDroppedEvent(dropEvent, date, allDay, this.calendarId) &&\n this.lastDragEnterDate.getTime() === date.getTime() &&\n (!this.snapDraggedEvents ||\n dropEvent.dropData.event !== this.lastDraggedEvent)\n ) {\n this.eventTimesChanged.emit({\n type: CalendarEventTimesChangedEventType.Drop,\n event: dropEvent.dropData.event,\n newStart: date,\n allDay,\n });\n }\n this.lastDraggedEvent = null;\n }\n\n /**\n * @hidden\n */\n dragEnter(type: 'allDay' | 'time') {\n this.eventDragEnterByType[type]++;\n }\n\n /**\n * @hidden\n */\n dragLeave(type: 'allDay' | 'time') {\n this.eventDragEnterByType[type]--;\n }\n\n /**\n * @hidden\n */\n dragStarted(\n eventsContainerElement: HTMLElement,\n eventElement: HTMLElement,\n event: WeekViewTimeEvent | WeekViewAllDayEvent,\n useY: boolean\n ): void {\n this.dayColumnWidth = this.getDayColumnWidth(eventsContainerElement);\n const dragHelper: CalendarDragHelper = new CalendarDragHelper(\n eventsContainerElement,\n eventElement\n );\n this.validateDrag = ({ x, y, transform }) => {\n const isAllowed =\n this.allDayEventResizes.size === 0 &&\n this.timeEventResizes.size === 0 &&\n dragHelper.validateDrag({\n x,\n y,\n snapDraggedEvents: this.snapDraggedEvents,\n dragAlreadyMoved: this.dragAlreadyMoved,\n transform,\n });\n if (isAllowed && this.validateEventTimesChanged) {\n const newEventTimes = this.getDragMovedEventTimes(\n event,\n { x, y },\n this.dayColumnWidth,\n useY\n );\n return this.validateEventTimesChanged({\n type: CalendarEventTimesChangedEventType.Drag,\n event: event.event,\n newStart: newEventTimes.start,\n newEnd: newEventTimes.end,\n });\n }\n\n return isAllowed;\n };\n this.dragActive = true;\n this.dragAlreadyMoved = false;\n this.lastDraggedEvent = null;\n this.eventDragEnterByType = {\n allDay: 0,\n time: 0,\n };\n if (!this.snapDraggedEvents && useY) {\n this.view.hourColumns.forEach((column) => {\n const linkedEvent = column.events.find(\n (columnEvent) =>\n columnEvent.event === event.event && columnEvent !== event\n );\n // hide any linked events while dragging\n if (linkedEvent) {\n linkedEvent.width = 0;\n linkedEvent.height = 0;\n }\n });\n }\n this.cdr.markForCheck();\n }\n\n /**\n * @hidden\n */\n dragMove(dayEvent: WeekViewTimeEvent, dragEvent: DragMoveEvent) {\n const newEventTimes = this.getDragMovedEventTimes(\n dayEvent,\n dragEvent,\n this.dayColumnWidth,\n true\n );\n const originalEvent = dayEvent.event;\n const adjustedEvent = { ...originalEvent, ...newEventTimes };\n const tempEvents = this.events.map((event) => {\n if (event === originalEvent) {\n return adjustedEvent;\n }\n return event;\n });\n this.restoreOriginalEvents(\n tempEvents,\n new Map([[adjustedEvent, originalEvent]]),\n this.snapDraggedEvents\n );\n this.dragAlreadyMoved = true;\n }\n\n /**\n * @hidden\n */\n allDayEventDragMove() {\n this.dragAlreadyMoved = true;\n }\n\n /**\n * @hidden\n */\n dragEnded(\n weekEvent: WeekViewAllDayEvent | WeekViewTimeEvent,\n dragEndEvent: DragEndEvent,\n dayWidth: number,\n useY = false\n ): void {\n this.view = this.getWeekView(this.events);\n this.dragActive = false;\n this.validateDrag = null;\n const { start, end } = this.getDragMovedEventTimes(\n weekEvent,\n dragEndEvent,\n dayWidth,\n useY\n );\n if (\n (this.snapDraggedEvents ||\n this.eventDragEnterByType[useY ? 'time' : 'allDay'] > 0) &&\n isDraggedWithinPeriod(start, end, this.view.period)\n ) {\n this.lastDraggedEvent = weekEvent.event;\n this.eventTimesChanged.emit({\n newStart: start,\n newEnd: end,\n event: weekEvent.event,\n type: CalendarEventTimesChangedEventType.Drag,\n allDay: !useY,\n });\n }\n }\n\n protected refreshHeader(): void {\n this.days = this.utils.getWeekViewHeader({\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n weekendDays: this.weekendDays,\n ...getWeekViewPeriod(\n this.dateAdapter,\n this.viewDate,\n this.weekStartsOn,\n this.excludeDays,\n this.daysInWeek\n ),\n });\n }\n\n protected refreshBody(): void {\n this.view = this.getWeekView(this.events);\n }\n\n protected refreshAll(): void {\n this.refreshHeader();\n this.refreshBody();\n this.emitBeforeViewRender();\n }\n\n protected emitBeforeViewRender(): void {\n if (this.days && this.view) {\n this.beforeViewRender.emit({\n header: this.days,\n ...this.view,\n });\n }\n }\n\n protected getWeekView(events: CalendarEvent[]) {\n return this.utils.getWeekView({\n events,\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n precision: this.precision,\n absolutePositionedEvents: true,\n hourSegments: this.hourSegments,\n hourDuration: this.hourDuration,\n dayStart: {\n hour: this.dayStartHour,\n minute: this.dayStartMinute,\n },\n dayEnd: {\n hour: this.dayEndHour,\n minute: this.dayEndMinute,\n },\n segmentHeight: this.hourSegmentHeight,\n weekendDays: this.weekendDays,\n minimumEventHeight: this.minimumEventHeight,\n ...getWeekViewPeriod(\n this.dateAdapter,\n this.viewDate,\n this.weekStartsOn,\n this.excludeDays,\n this.daysInWeek\n ),\n });\n }\n\n protected getDragMovedEventTimes(\n weekEvent: WeekViewAllDayEvent | WeekViewTimeEvent,\n dragEndEvent: DragEndEvent | DragMoveEvent,\n dayWidth: number,\n useY: boolean\n ) {\n const daysDragged =\n (roundToNearest(dragEndEvent.x, dayWidth) / dayWidth) *\n (this.rtl ? -1 : 1);\n const minutesMoved = useY\n ? getMinutesMoved(\n dragEndEvent.y,\n this.hourSegments,\n this.hourSegmentHeight,\n this.eventSnapSize,\n this.hourDuration\n )\n : 0;\n\n const start = this.dateAdapter.addMinutes(\n addDaysWithExclusions(\n this.dateAdapter,\n weekEvent.event.start,\n daysDragged,\n this.excludeDays\n ),\n minutesMoved\n );\n let end: Date;\n if (weekEvent.event.end) {\n end = this.dateAdapter.addMinutes(\n addDaysWithExclusions(\n this.dateAdapter,\n weekEvent.event.end,\n daysDragged,\n this.excludeDays\n ),\n minutesMoved\n );\n }\n\n return { start, end };\n }\n\n protected restoreOriginalEvents(\n tempEvents: CalendarEvent[],\n adjustedEvents: Map<CalendarEvent, CalendarEvent>,\n snapDraggedEvents = true\n ) {\n const previousView = this.view;\n if (snapDraggedEvents) {\n this.view = this.getWeekView(tempEvents);\n }\n\n const adjustedEventsArray = tempEvents.filter((event) =>\n adjustedEvents.has(event)\n );\n this.view.hourColumns.forEach((column, columnIndex) => {\n previousView.hourColumns[columnIndex].hours.forEach((hour, hourIndex) => {\n hour.segments.forEach((segment, segmentIndex) => {\n column.hours[hourIndex].segments[segmentIndex].cssClass =\n segment.cssClass;\n });\n });\n\n adjustedEventsArray.forEach((adjustedEvent) => {\n const originalEvent = adjustedEvents.get(adjustedEvent);\n const existingColumnEvent = column.events.find(\n (columnEvent) =>\n columnEvent.event ===\n (snapDraggedEvents ? adjustedEvent : originalEvent)\n );\n if (existingColumnEvent) {\n // restore the original event so trackBy kicks in and the dom isn't changed\n existingColumnEvent.event = originalEvent;\n existingColumnEvent['tempEvent'] = adjustedEvent;\n if (!snapDraggedEvents) {\n existingColumnEvent.height = 0;\n existingColumnEvent.width = 0;\n }\n } else {\n // add a dummy event to the drop so if the event was removed from the original column the drag doesn't end early\n const event = {\n event: originalEvent,\n left: 0,\n top: 0,\n height: 0,\n width: 0,\n startsBeforeDay: false,\n endsAfterDay: false,\n tempEvent: adjustedEvent,\n };\n column.events.push(event);\n }\n });\n });\n adjustedEvents.clear();\n }\n\n protected getTimeEventResizedDates(\n calendarEvent: CalendarEvent,\n resizeEvent: ResizeEvent\n ) {\n const newEventDates = {\n start: calendarEvent.start,\n end: getDefaultEventEnd(\n this.dateAdapter,\n calendarEvent,\n this.minimumEventHeight\n ),\n };\n const { end, ...eventWithoutEnd } = calendarEvent;\n const smallestResizes = {\n start: this.dateAdapter.addMinutes(\n newEventDates.end,\n this.minimumEventHeight * -1\n ),\n end: getDefaultEventEnd(\n this.dateAdapter,\n eventWithoutEnd,\n this.minimumEventHeight\n ),\n };\n\n const modifier = this.rtl ? -1 : 1;\n\n if (typeof resizeEvent.edges.left !== 'undefined') {\n const daysDiff =\n Math.round(+resizeEvent.edges.left / this.dayColumnWidth) * modifier;\n const newStart = addDaysWithExclusions(\n this.dateAdapter,\n newEventDates.start,\n daysDiff,\n this.excludeDays\n );\n if (newStart < smallestResizes.start) {\n newEventDates.start = newStart;\n } else {\n newEventDates.start = smallestResizes.start;\n }\n } else if (typeof resizeEvent.edges.right !== 'undefined') {\n const daysDiff =\n Math.round(+resizeEvent.edges.right / this.dayColumnWidth) * modifier;\n const newEnd = addDaysWithExclusions(\n this.dateAdapter,\n newEventDates.end,\n daysDiff,\n this.excludeDays\n );\n if (newEnd > smallestResizes.end) {\n newEventDates.end = newEnd;\n } else {\n newEventDates.end = smallestResizes.end;\n }\n }\n\n if (typeof resizeEvent.edges.top !== 'undefined') {\n const minutesMoved = getMinutesMoved(\n resizeEvent.edges.top as number,\n this.hourSegments,\n this.hourSegmentHeight,\n this.eventSnapSize,\n this.hourDuration\n );\n const newStart = this.dateAdapter.addMinutes(\n newEventDates.start,\n minutesMoved\n );\n if (newStart < smallestResizes.start) {\n newEventDates.start = newStart;\n } else {\n newEventDates.start = smallestResizes.start;\n }\n } else if (typeof resizeEvent.edges.bottom !== 'undefined') {\n const minutesMoved = getMinutesMoved(\n resizeEvent.edges.bottom as number,\n this.hourSegments,\n this.hourSegmentHeight,\n this.eventSnapSize,\n this.hourDuration\n );\n const newEnd = this.dateAdapter.addMinutes(\n newEventDates.end,\n minutesMoved\n );\n if (newEnd > smallestResizes.end) {\n newEventDates.end = newEnd;\n } else {\n newEventDates.end = smallestResizes.end;\n }\n }\n\n return newEventDates;\n }\n\n protected resizeStarted(\n eventsContainer: HTMLElement,\n event: WeekViewTimeEvent | WeekViewAllDayEvent,\n dayWidth?: number\n ) {\n this.dayColumnWidth = this.getDayColumnWidth(eventsContainer);\n const resizeHelper = new CalendarResizeHelper(\n eventsContainer,\n dayWidth,\n this.rtl\n );\n this.validateResize = ({ rectangle, edges }) => {\n const isWithinBoundary = resizeHelper.validateResize({\n rectangle: { ...rectangle },\n edges,\n });\n\n if (isWithinBoundary && this.validateEventTimesChanged) {\n let newEventDates;\n if (!dayWidth) {\n newEventDates = this.getTimeEventResizedDates(event.event, {\n rectangle,\n edges,\n });\n } else {\n const modifier = this.rtl ? -1 : 1;\n if (typeof edges.left !== 'undefined') {\n const diff = Math.round(+edges.left / dayWidth) * modifier;\n newEventDates = this.getAllDayEventResizedDates(\n event.event,\n diff,\n !this.rtl\n );\n } else {\n const diff = Math.round(+edges.right / dayWidth) * modifier;\n newEventDates = this.getAllDayEventResizedDates(\n event.event,\n diff,\n this.rtl\n );\n }\n }\n return this.validateEventTimesChanged({\n type: CalendarEventTimesChangedEventType.Resize,\n event: event.event,\n newStart: newEventDates.start,\n newEnd: newEventDates.end,\n });\n }\n\n return isWithinBoundary;\n };\n this.cdr.markForCheck();\n }\n\n /**\n * @hidden\n */\n protected getAllDayEventResizedDates(\n event: CalendarEvent,\n daysDiff: number,\n beforeStart: boolean\n ) {\n let start: Date = event.start;\n let end: Date = event.end || event.start;\n if (beforeStart) {\n start = addDaysWithExclusions(\n this.dateAdapter,\n start,\n daysDiff,\n this.excludeDays\n );\n } else {\n end = addDaysWithExclusions(\n this.dateAdapter,\n end,\n daysDiff,\n this.excludeDays\n );\n }\n\n return { start, end };\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResizableModule } from 'angular-resizable-element';\nimport { DragAndDropModule } from 'angular-draggable-droppable';\nimport { CalendarWeekViewComponent } from './calendar-week-view.component';\nimport { CalendarWeekViewHeaderComponent } from './calendar-week-view-header.component';\nimport { CalendarWeekViewEventComponent } from './calendar-week-view-event.component';\nimport { CalendarCommonModule } from '../common/calendar-common.module';\nimport { CalendarWeekViewHourSegmentComponent } from './calendar-week-view-hour-segment.component';\nimport { CalendarWeekViewCurrentTimeMarkerComponent } from './calendar-week-view-current-time-marker.component';\n\nexport {\n CalendarWeekViewComponent,\n CalendarWeekViewBeforeRenderEvent,\n} from './calendar-week-view.component';\nexport {\n WeekViewAllDayEvent as CalendarWeekViewAllDayEvent,\n WeekViewAllDayEventRow as CalendarWeekViewAllDayEventRow,\n GetWeekViewArgs as CalendarGetWeekViewArgs,\n} from 'calendar-utils';\nexport { getWeekViewPeriod } from '../common/util';\n\n// needed for ivy, not part of the public api\nexport { CalendarWeekViewHeaderComponent as ɵCalendarWeekViewHeaderComponent } from './calendar-week-view-header.component';\nexport { CalendarWeekViewEventComponent as ɵCalendarWeekViewEventComponent } from './calendar-week-view-event.component';\nexport { CalendarWeekViewHourSegmentComponent as ɵCalendarWeekViewHourSegmentComponent } from './calendar-week-view-hour-segment.component';\nexport { CalendarWeekViewCurrentTimeMarkerComponent as ɵCalendarWeekViewCurrentTimeMarkerComponent } from './calendar-week-view-current-time-marker.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ResizableModule,\n DragAndDropModule,\n CalendarCommonModule,\n ],\n declarations: [\n CalendarWeekViewComponent,\n CalendarWeekViewHeaderComponent,\n CalendarWeekViewEventComponent,\n CalendarWeekViewHourSegmentComponent,\n CalendarWeekViewCurrentTimeMarkerComponent,\n ],\n exports: [\n ResizableModule,\n DragAndDropModule,\n CalendarWeekViewComponent,\n CalendarWeekViewHeaderComponent,\n CalendarWeekViewEventComponent,\n CalendarWeekViewHourSegmentComponent,\n CalendarWeekViewCurrentTimeMarkerComponent,\n ],\n})\nexport class CalendarWeekModule {}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n TemplateRef,\n} from '@angular/core';\nimport { CalendarEvent } from 'calendar-utils';\nimport { Subject } from 'rxjs';\nimport { CalendarEventTimesChangedEvent } from '../common/calendar-event-times-changed-event.interface';\nimport { PlacementArray } from 'positioning';\nimport { CalendarWeekViewBeforeRenderEvent } from '../week/calendar-week.module';\n\nexport type CalendarDayViewBeforeRenderEvent =\n CalendarWeekViewBeforeRenderEvent;\n\n/**\n * Shows all events on a given day. Example usage:\n *\n * ```typescript\n * <mwl-calendar-day-view\n * [viewDate]=\"viewDate\"\n * [events]=\"events\">\n * </mwl-calendar-day-view>\n * ```\n */\n@Component({\n selector: 'mwl-calendar-day-view',\n template: `\n <mwl-calendar-week-view\n class=\"cal-day-view\"\n [daysInWeek]=\"1\"\n [viewDate]=\"viewDate\"\n [events]=\"events\"\n [hourSegments]=\"hourSegments\"\n [hourDuration]=\"hourDuration\"\n [hourSegmentHeight]=\"hourSegmentHeight\"\n [minimumEventHeight]=\"minimumEventHeight\"\n [dayStartHour]=\"dayStartHour\"\n [dayStartMinute]=\"dayStartMinute\"\n [dayEndHour]=\"dayEndHour\"\n [dayEndMinute]=\"dayEndMinute\"\n [refresh]=\"refresh\"\n [locale]=\"locale\"\n [eventSnapSize]=\"eventSnapSize\"\n [tooltipPlacement]=\"tooltipPlacement\"\n [tooltipTemplate]=\"tooltipTemplate\"\n [tooltipAppendToBody]=\"tooltipAppendToBody\"\n [tooltipDelay]=\"tooltipDelay\"\n [hourSegmentTemplate]=\"hourSegmentTemplate\"\n [eventTemplate]=\"eventTemplate\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n [eventActionsTemplate]=\"eventActionsTemplate\"\n [snapDraggedEvents]=\"snapDraggedEvents\"\n [allDayEventsLabelTemplate]=\"allDayEventsLabelTemplate\"\n [currentTimeMarkerTemplate]=\"currentTimeMarkerTemplate\"\n [validateEventTimesChanged]=\"validateEventTimesChanged\"\n (eventClicked)=\"eventClicked.emit($event)\"\n (hourSegmentClicked)=\"hourSegmentClicked.emit($event)\"\n (eventTimesChanged)=\"eventTimesChanged.emit($event)\"\n (beforeViewRender)=\"beforeViewRender.emit($event)\"\n ></mwl-calendar-week-view>\n `,\n})\nexport class CalendarDayViewComponent {\n /**\n * The current view date\n */\n @Input() viewDate: Date;\n\n /**\n * An array of events to display on view\n * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63\n */\n @Input() events: CalendarEvent[] = [];\n\n /**\n * The number of segments in an hour. Must divide equally into 60.\n */\n @Input() hourSegments: number = 2;\n\n /**\n * The height in pixels of each hour segment\n */\n @Input() hourSegmentHeight: number = 30;\n\n /**\n * The duration of each segment group in minutes\n */\n @Input() hourDuration: number;\n\n /**\n * The minimum height in pixels of each event\n */\n @Input() minimumEventHeight: number = 30;\n\n /**\n * The day start hours in 24 hour time. Must be 0-23\n */\n @Input() dayStartHour: number = 0;\n\n /**\n * The day start minutes. Must be 0-59\n */\n @Input() dayStartMinute: number = 0;\n\n /**\n * The day end hours in 24 hour time. Must be 0-23\n */\n @Input() dayEndHour: number = 23;\n\n /**\n * The day end minutes. Must be 0-59\n */\n @Input() dayEndMinute: number = 59;\n\n /**\n * An observable that when emitted on will re-render the current view\n */\n @Input() refresh: Subject<any>;\n\n /**\n * The locale used to format dates\n */\n @Input() locale: string;\n\n /**\n * The grid size to snap resizing and dragging of events to\n */\n @Input() eventSnapSize: number;\n\n /**\n * The placement of the event tooltip\n */\n @Input() tooltipPlacement: PlacementArray = 'auto';\n\n /**\n * A custom template to use for the event tooltips\n */\n @Input() tooltipTemplate: TemplateRef<any>;\n\n /**\n * Whether to append tooltips to the body or next to the trigger element\n */\n @Input() tooltipAppendToBody: boolean = true;\n\n /**\n * The delay in milliseconds before the tooltip should be displayed. If not provided the tooltip\n * will be displayed immediately.\n */\n @Input() tooltipDelay: number | null = null;\n\n /**\n * A custom template to use to replace the hour segment\n */\n @Input() hourSegmentTemplate: TemplateRef<any>;\n\n /**\n * A custom template to use for day view events\n */\n @Input() eventTemplate: TemplateRef<any>;\n\n /**\n * A custom template to use for event titles\n */\n @Input() eventTitleTemplate: TemplateRef<any>;\n\n /**\n * A custom template to use for event actions\n */\n @Input() eventActionsTemplate: TemplateRef<any>;\n\n /**\n * Whether to snap events to a grid when dragging\n */\n @Input() snapDraggedEvents: boolean = true;\n\n /**\n * A custom template to use for the all day events label text\n */\n @Input() allDayEventsLabelTemplate: TemplateRef<any>;\n\n /**\n * A custom template to use for the current time marker\n */\n @Input() currentTimeMarkerTemplate: TemplateRef<any>;\n\n /**\n * Allow you to customise where events can be dragged and resized to.\n * Return true to allow dragging and resizing to the new location, or false to prevent it\n */\n @Input() validateEventTimesChanged: (\n event: CalendarEventTimesChangedEvent\n ) => boolean;\n\n /**\n * Called when an event title is clicked\n */\n @Output() eventClicked = new EventEmitter<{\n event: CalendarEvent;\n sourceEvent: MouseEvent | KeyboardEvent;\n }>();\n\n /**\n * Called when an hour segment is clicked\n */\n @Output() hourSegmentClicked = new EventEmitter<{\n date: Date;\n sourceEvent: MouseEvent;\n }>();\n\n /**\n * Called when an event is resized or dragged and dropped\n */\n @Output() eventTimesChanged =\n new EventEmitter<CalendarEventTimesChangedEvent>();\n\n /**\n * An output that will be called before the view is rendered for the current day.\n * If you add the `cssClass` property to an hour grid segment it will add that class to the hour segment in the template\n */\n @Output() beforeViewRender =\n new EventEmitter<CalendarDayViewBeforeRenderEvent>();\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CalendarDayViewComponent } from './calendar-day-view.component';\nimport { CalendarCommonModule } from '../common/calendar-common.module';\nimport { CalendarWeekModule } from '../week/calendar-week.module';\n\nexport {\n CalendarDayViewComponent,\n CalendarDayViewBeforeRenderEvent,\n} from './calendar-day-view.component';\n\n@NgModule({\n imports: [CommonModule, CalendarCommonModule, CalendarWeekModule],\n declarations: [CalendarDayViewComponent],\n exports: [CalendarDayViewComponent],\n})\nexport class CalendarDayModule {}\n","import { NgModule, ModuleWithProviders, Provider } from '@angular/core';\nimport {\n CalendarCommonModule,\n CalendarModuleConfig,\n CalendarEventTitleFormatter,\n CalendarDateFormatter,\n CalendarA11y,\n} from './common/calendar-common.module';\nimport { CalendarMonthModule } from './month/calendar-month.module';\nimport { CalendarWeekModule } from './week/calendar-week.module';\nimport { CalendarDayModule } from './day/calendar-day.module';\nimport { CalendarUtils } from './common/calendar-utils.provider';\n\nexport * from './common/calendar-common.module';\nexport * from './month/calendar-month.module';\nexport * from './week/calendar-week.module';\nexport * from './day/calendar-day.module';\n\n/**\n * The main module of this library. Example usage:\n *\n * ```typescript\n * import { CalenderModule } from 'angular-calendar';\n *\n * @NgModule({\n * imports: [\n * CalenderModule.forRoot()\n * ]\n * })\n * class MyModule {}\n * ```\n *\n */\n@NgModule({\n imports: [\n CalendarCommonModule,\n CalendarMonthModule,\n CalendarWeekModule,\n CalendarDayModule,\n ],\n exports: [\n CalendarCommonModule,\n CalendarMonthModule,\n CalendarWeekModule,\n CalendarDayModule,\n ],\n})\nexport class CalendarModule {\n static forRoot(\n dateAdapter: Provider,\n config: CalendarModuleConfig = {}\n ): ModuleWithProviders<CalendarModule> {\n return {\n ngModule: CalendarModule,\n providers: [\n dateAdapter,\n config.eventTitleFormatter || CalendarEventTitleFormatter,\n config.dateFormatter || CalendarDateFormatter,\n config.utils || CalendarUtils,\n config.a11y || CalendarA11y,\n ],\n };\n }\n}\n","/*\n * Public API Surface of angular-calendar\n */\n\nexport * from './modules/calendar.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["EventEmitter","Subject","takeUntil","Observable","DOCUMENT","Directive","Inject","Input","Output","formatDate","Injectable","LOCALE_ID","Pipe","Component","of","timer","positionElements","HostListener","CalendarView","validateEventsWithoutLog","getMonthView","getWeekViewHeader","getWeekView","InjectionToken","CalendarEventTimesChangedEventType","CommonModule","I18nPluralPipe","NgModule","trigger","state","style","transition","animate","DragAndDropModule","BehaviorSubject","switchMap","interval","startWith","switchMapTo","map","ResizableModule"],"mappings":"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"}
\No newline at end of file