{"version":3,"file":"novo-elements-elements-calendar.mjs","sources":["../../../projects/novo-elements/src/elements/calendar/strategies/default-selection.strategy.ts","../../../projects/novo-elements/src/elements/calendar/strategies/multi-date-selection.strategy.ts","../../../projects/novo-elements/src/elements/calendar/strategies/range-selection.strategy.ts","../../../projects/novo-elements/src/elements/calendar/strategies/week-selection.strategy.ts","../../../projects/novo-elements/src/elements/calendar/month-view/month-view.component.ts","../../../projects/novo-elements/src/elements/calendar/month-view/month-view.component.html","../../../projects/novo-elements/src/elements/calendar/month-select/month-select.component.ts","../../../projects/novo-elements/src/elements/calendar/month-select/month-select.component.html","../../../projects/novo-elements/src/elements/calendar/year-select/year-select.component.ts","../../../projects/novo-elements/src/elements/calendar/year-select/year-select.component.html","../../../projects/novo-elements/src/elements/calendar/calendar.component.ts","../../../projects/novo-elements/src/elements/calendar/calendar.component.html","../../../projects/novo-elements/src/elements/calendar/Calendar.module.ts","../../../projects/novo-elements/src/elements/calendar/novo-elements-elements-calendar.ts"],"sourcesContent":["import { FactoryProvider, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core';\nimport { DateUtil, type DateLike, type NovoDateSelectionStrategy } from 'novo-elements/utils';\n\n/** Injection token used to customize the date range selection behavior. */\nexport const NOVO_DATE_SELECTION_STRATEGY = new InjectionToken<NovoDateSelectionStrategy>('NOVO_DATE_SELECTION_STRATEGY');\n\n/** Provides the default date selection behavior. Single Date */\n@Injectable()\nexport class DefaultDateSelectionStrategy implements NovoDateSelectionStrategy<DateLike[]> {\n  selectionFinished(date: DateLike | null, currentValue: DateLike[], event: Event): DateLike[] {\n    return [date];\n  }\n\n  createPreview(activeDate: DateLike | null, [currentDate]: DateLike[]) {\n    return [activeDate];\n  }\n\n  isSelected(activeDate: DateLike | null, [currentDate]: DateLike[]) {\n    return DateUtil.isSameDay(activeDate, currentDate);\n  }\n}\n\n/** @docs-private */\nexport function NOVO_DATE_SELECTION_STRATEGY_PROVIDER_FACTORY(parent: NovoDateSelectionStrategy<unknown>) {\n  return parent || new DefaultDateSelectionStrategy();\n}\n\n/** @docs-private */\nexport const NOVO_DATE_SELECTION_STRATEGY_PROVIDER: FactoryProvider = {\n  provide: NOVO_DATE_SELECTION_STRATEGY,\n  deps: [[new Optional(), new SkipSelf(), NOVO_DATE_SELECTION_STRATEGY]],\n  useFactory: NOVO_DATE_SELECTION_STRATEGY_PROVIDER_FACTORY,\n};\n","import { Injectable } from '@angular/core';\nimport type { DateLike, NovoDateSelectionStrategy } from 'novo-elements/utils';\n\n@Injectable()\nexport class MultiDateSelectionStrategy implements NovoDateSelectionStrategy<DateLike[]> {\n  selectionFinished(dateLike: DateLike | null, currentValue: DateLike[], event: Event): DateLike[] {\n    const date = dateLike as Date;\n    const current = new Set(currentValue.map((c: Date) => c.getTime()));\n    if (current.has(date.getTime())) {\n      current.delete(date.getTime());\n    } else {\n      current.add(date.getTime());\n    }\n    return [...current].map((c) => new Date(c));\n  }\n\n  createPreview(activeDate: DateLike | null, currentValue: DateLike[]) {\n    return [activeDate];\n  }\n\n  isSelected(activeDate: DateLike | null, currentValue: DateLike[]) {\n    return currentValue && currentValue.includes(activeDate);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { DateUtil, type DateLike, type NovoDateSelectionStrategy } from 'novo-elements/utils';\n\n@Injectable()\nexport class RangeSelectionStrategy implements NovoDateSelectionStrategy<DateLike[]> {\n  selectionFinished(date: DateLike, currentRange: DateLike[]) {\n    let [start, end] = currentRange;\n\n    if (start == null) {\n      start = date;\n    } else if (end == null && date && DateUtil.differenceInCalendarDays(date, start) >= 0) {\n      end = date;\n    } else {\n      start = date;\n      end = null;\n    }\n\n    return [start, end];\n  }\n\n  createPreview(activeDate: DateLike | null, currentRange: DateLike[]) {\n    let start: DateLike | null = null;\n    let end: DateLike | null = null;\n    const [currStart, currEnd] = currentRange;\n\n    if (currStart && !currEnd && activeDate) {\n      start = currStart;\n      end = activeDate;\n    }\n\n    return [start, end];\n  }\n\n  isSelected(activeDate: DateLike | null, currentRange: DateLike[]) {\n    const [start, end] = currentRange;\n    return DateUtil.isWithinRange(activeDate, start, end);\n  }\n}\n","import { Day } from 'date-fns';\nimport { DateUtil, type DateLike, type NovoDateSelectionStrategy } from 'novo-elements/utils';\n\nexport class WeekSelectionStrategy implements NovoDateSelectionStrategy<DateLike[]> {\n  constructor(private weekStartsOn: Day = 0) {}\n\n  selectionFinished(date: DateLike | null): DateLike[] {\n    return this._createWeekRange(date);\n  }\n\n  createPreview(activeDate: DateLike | null): DateLike[] {\n    return this._createWeekRange(activeDate);\n  }\n\n  private _createWeekRange(date: DateLike | null): DateLike[] {\n    if (date) {\n      const { weekStartsOn } = this;\n      const start = DateUtil.startOfWeek(date as DateLike, { weekStartsOn });\n      const end = DateUtil.endOfWeek(date as DateLike, { weekStartsOn });\n      return [start, end];\n    }\n\n    return [null, null];\n  }\n\n  isSelected(activeDate: DateLike | null, currentRange: DateLike[]) {\n    const [start, end] = currentRange;\n    return DateUtil.isWithinRange(activeDate, start, end);\n  }\n}\n","// NG2\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n// Vendor\nimport { addDays, Day as DateFnsDay, isToday } from 'date-fns';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BooleanInput, DateUtil, type DateLike, type Day, type OverlayDate } from 'novo-elements/utils';\n\n@Component({\n    selector: 'novo-month-view',\n    templateUrl: './month-view.component.html',\n    styleUrls: ['./month-view.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class NovoMonthViewElement implements OnInit {\n  @Input()\n  minDate: Date;\n  @Input()\n  maxDate: Date;\n  @Input()\n  activeDate: Date = new Date();\n  // Weekstart must be 0-6 (Sunday - Saturday)\n  @Input()\n  selected: DateLike[] = [];\n  @Input()\n  preview: DateLike[] = [];\n  @Input()\n  overlays: OverlayDate[] = [];\n  @Input()\n  disabledDateMessage: string;\n\n  @Input()\n  @BooleanInput()\n  isRange: boolean = false;\n\n  @Input()\n  @BooleanInput()\n  @HostBinding('class.hide-overflow-days')\n  public hideOverflowDays: boolean = false;\n\n  _weekStartsOn: DateFnsDay = 0;\n\n  @Input()\n  get weekStartsOn(): DateFnsDay {\n    return this._weekStartsOn;\n  }\n  set weekStartsOn(value: DateFnsDay) {\n    this._weekStartsOn = value;\n    this.weekdays = this.labels.getWeekdays(value);\n    this.updateView(this.activeDate);\n  }\n\n  // Select callback for output\n  @Output()\n  select: EventEmitter<any> = new EventEmitter(false);\n  // Select callback for output\n  @Output()\n  hover: EventEmitter<any> = new EventEmitter(false);\n\n  // List of all the weekdays\n  weekdays: string[] = this.labels.getWeekdays(this.weekStartsOn);\n  // List of all months\n  monthNames: string[] = this.labels.getMonths();\n\n  monthLabel: string;\n  weeks: any;\n\n  constructor(\n    public labels: NovoLabelService,\n    private element: ElementRef,\n    private cdr: ChangeDetectorRef,\n    private _sanitizer: DomSanitizer,\n  ) {}\n\n  ngOnInit() {\n    // Set labels\n    this.updateView(this.activeDate);\n  }\n\n  updateView(date: Date) {\n    this.monthLabel = this.labels.formatDateWithFormat(this.activeDate, { month: 'short' });\n    this.buildMonth(this.activeDate);\n  }\n\n  onSelect(event: Event, day: Day) {\n    // Helpers.swallowEvent(event);\n    this.select.next({ event, day });\n    this.cdr.markForCheck();\n  }\n\n  onHover(event: Event, day: Day): void {\n    this.isRange && this.hover.next({ event, day });\n  }\n\n  buildMonth(month: Date) {\n    // Reset the weeks\n    this.weeks = [];\n    const start = DateUtil.startOfMonth(month);\n\n    // House keeping variables to know when we are done building the month\n    let done = false;\n    let date = DateUtil.startOfWeek(start, { weekStartsOn: this.weekStartsOn });\n    let monthIndex = date.getMonth();\n    let count = 0;\n\n    while (!done) {\n      // Build the days for the weeks\n      this.weeks.push({ days: this.buildWeek(new Date(date.getTime()), month) });\n\n      // Increment variables for the next iteration\n      date = addDays(date, 7);\n      done = count++ > 2 && monthIndex !== date.getMonth();\n      monthIndex = date.getMonth();\n    }\n  }\n\n  buildWeek(date: Date, month: Date): Array<Object> {\n    // Build out of the days of the week\n    const days = [];\n    // Iterate over the days of the week\n    for (let i = 0; i < 7; i++) {\n      // Push a variable on the day array with lots of helpers to make the template easier\n      days.push({\n        name: this.weekdays[i],\n        number: date.getDate(),\n        isToday: isToday(date),\n        date,\n      });\n\n      // Increment for the next iteration\n      date = addDays(date, 1);\n    }\n\n    return days;\n  }\n\n  isDisabled(day: DateLike) {\n    return (this.minDate && DateUtil.isBefore(day, this.minDate)) || (this.maxDate && DateUtil.isAfter(day, this.maxDate));\n  }\n\n  /** Returns whether a cell should be marked as selected. */\n  _isSelected(value: DateLike) {\n    return this.selected && this.selected.find((d) => DateUtil.isSameDay(d, value));\n  }\n\n  /** Returns whether a cell should be marked as preview. */\n  _isPreview(value: DateLike) {\n    return this.preview && this.preview.find((d) => DateUtil.isSameDay(d, value));\n  }\n\n  /** Returns whether a cell should be marked as an overlay. */\n  _isOverlay(value: DateLike) {\n    return this.overlays && this.overlays.find((o) => DateUtil.isSameDay(o.date, value));\n  }\n\n  /** Returns whether a cell should be marked as an overlay. */\n  _hasOverlayType(value: DateLike) {\n    const overlay = this.overlays && this.overlays.find((o) => DateUtil.isSameDay(o.date, value));\n    return overlay ? overlay.type : null;\n  }\n\n  /** Gets whether a value is the start of the main range. */\n  _isRangeStart(value: DateLike) {\n    return isStart(value, this.selected, this.isRange);\n  }\n\n  /** Gets whether a value is the end of the main range. */\n  _isRangeEnd(value: DateLike) {\n    return isEnd(value, this.selected, this.isRange);\n  }\n\n  /** Gets whether a value is within the currently-selected range. */\n  _isInRange(value: DateLike): boolean {\n    return isInRange(value, this.selected, this.isRange);\n  }\n\n  /** Gets whether a value is the start of the preview range. */\n  _isPreviewStart(value: DateLike) {\n    return isStart(value, this.preview, this.isRange);\n  }\n\n  /** Gets whether a value is the end of the preview range. */\n  _isPreviewEnd(value: DateLike) {\n    return isEnd(value, this.preview, this.isRange);\n  }\n\n  /** Gets whether a value is inside the preview range. */\n  _isInPreview(value: DateLike) {\n    return isInRange(value, this.preview, this.isRange);\n  }\n}\n\n/** Checks whether a value is the start of a range. */\nfunction isStart(value: DateLike, range: DateLike[] | null, rangeEnabled: boolean): boolean {\n  const [start, end] = range ?? [];\n  return rangeEnabled && end !== null && !DateUtil.isSameDay(start, end) && value < end && DateUtil.isSameDay(value, start);\n}\n\n/** Checks whether a value is the end of a range. */\nfunction isEnd(value: DateLike, range: DateLike[] | null, rangeEnabled: boolean): boolean {\n  const [start, end] = range ?? [];\n  return rangeEnabled && start !== null && !DateUtil.isSameDay(start, end) && value >= start && DateUtil.isSameDay(value, end);\n}\n\n/** Checks whether a value is inside of a range. */\nfunction isInRange(value: DateLike, range: DateLike[] | null, rangeEnabled: boolean): boolean {\n  const [start, end] = range ?? [];\n  return rangeEnabled && start !== null && end !== null && !DateUtil.isSameDay(start, end) && value >= start && value <= end;\n}\n","<div class=\"calendar-table\" cellspacing=\"0\" cellpadding=\"0\">\n  <div class=\"calendar-thead\">\n    <div class=\"calendar-th weekday\" *ngFor=\"let day of weekdays\" title=\"{{ day }}\"\n      [attr.data-automation-id]=\"day.substr(0, 2)\">\n      {{ day.substr(0, 2) }}\n    </div>\n  </div>\n  <div class=\"calendar-body\">\n    <div class=\"calendar-week\" *ngFor=\"let week of weeks\">\n      <div class=\"calendar-date\" *ngFor=\"let day of week.days\"\n        [class.today]=\"day.isToday\"\n        [class.notinmonth]=\"day.date.getMonth() !== activeDate.getMonth()\"\n        [class.selected]=\"_isSelected(day.date)\"\n        [class.preview]=\"_isPreview(day.date)\"\n        [class.overlay]=\"_isOverlay(day.date)\"\n        [class]=\"_hasOverlayType(day.date)\"\n        [class.inRange]=\"_isInRange(day.date)\"\n        [class.rangeStart]=\"_isRangeStart(day.date)\"\n        [class.rangeEnd]=\"_isRangeEnd(day.date)\"\n        [class.inPreview]=\"_isInPreview(day.date)\"\n        [class.previewStart]=\"_isPreviewStart(day.date)\"\n        [class.previewEnd]=\"_isPreviewEnd(day.date)\"\n        [class.calendar-date]=\"true\"\n        [attr.aria-label]=\"day.name\"\n        [attr.aria-disabled]=\"isDisabled(day.date)\"\n        [attr.aria-selected]=\"_isSelected(day.date)\"\n        [attr.data-automation-id]=\"day.number\"\n        [title]=\"isDisabled(day.date) ? disabledDateMessage : ''\"\n        (mouseover)=\"onHover($event, day)\">\n        <novo-button\n          class=\"day\"\n          tabindex=\"0\"\n          [attr.data-automation-id]=\"day.number\"\n          [disabled]=\"isDisabled(day.date)\"\n          (click)=\"onSelect($event, day)\">\n          {{ day.number }}\n        </novo-button>\n      </div>\n    </div>\n  </div>\n</div>","// NG2\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { DateUtil, type DateLike } from 'novo-elements/utils';\n\n@Component({\n    selector: 'novo-month-select',\n    templateUrl: './month-select.component.html',\n    styleUrls: ['./month-select.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class NovoMonthSelectElement implements OnInit {\n  @Input()\n  activeDate: DateLike = new Date();\n  @Input()\n  selected: DateLike[] = [];\n\n  // Select callback for output\n  @Output()\n  select: EventEmitter<any> = new EventEmitter(false);\n\n  // List of all months\n  monthNames: string[] = this.labels.getMonths();\n\n  constructor(public labels: NovoLabelService) {}\n\n  ngOnInit() {}\n\n  onSelect(event: Event, month: number) {\n    // Helpers.swallowEvent(event);\n    this.select.next({ event, month });\n  }\n\n  _isActive(month: number) {\n    return this.activeDate && month === DateUtil.getMonth(this.activeDate);\n  }\n\n  _isSelected(month: number) {\n    return this.selected && month === DateUtil.getMonth(this.selected[0]);\n  }\n}\n","<div *ngFor=\"let month of monthNames; let i = index\" (click)=\"onSelect($event, i)\" tabindex=\"0\">\n  <div class=\"month\" [class.selected]=\"_isSelected(i)\" [attr.data-automation-id]=\"month\">\n    {{ month }}</div>\n</div>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { DateUtil, type DateLike } from 'novo-elements/utils';\n\n@Component({\n    selector: 'novo-year-select',\n    templateUrl: './year-select.component.html',\n    styleUrls: ['./year-select.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class NovoYearSelectElement implements OnInit {\n  @Input()\n  minYear: string | number;\n  @Input()\n  maxYear: string | number;\n\n  @Input()\n  activeDate: DateLike = new Date();\n  @Input()\n  selected: DateLike[] = [];\n  // Select callback for output\n  @Output()\n  select: EventEmitter<any> = new EventEmitter(false);\n\n  // List of all years (generated in ngOnInit)\n  years: Array<any> = [];\n\n  constructor(public labels: NovoLabelService) {}\n\n  ngOnInit() {\n    // Determine the year array\n    const now = new Date();\n    const start = this.minYear ? Number(this.minYear) : now.getFullYear() - 100;\n    const end = this.maxYear ? Number(this.maxYear) : now.getFullYear() + 10;\n    const years = [];\n    for (let i = start; i <= end; i++) {\n      years.push(i);\n    }\n    this.years = years.reverse();\n  }\n\n  onSelect(event: Event, year: number) {\n    // Helpers.swallowEvent(event);\n    this.select.next({ event, year });\n  }\n\n  _isActive(year: number) {\n    return this.activeDate && year === DateUtil.getYear(this.activeDate);\n  }\n\n  _isSelected(year: number) {\n    return this.selected && year === DateUtil.getYear(this.selected[0]);\n  }\n}\n","<div *ngFor=\"let year of years\" (click)=\"onSelect($event, year)\" tabindex=\"0\">\n  <div class=\"year\" [class.selected]=\"_isSelected(year)\" [attr.data-automation-id]=\"year\">{{ year }}</div>\n</div>","// NG2\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n// Vendor\nimport { addMonths, Day, isDate, isSameDay, setMonth, setYear, startOfDay, startOfMonth, subMonths } from 'date-fns';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport {\n  Helpers,\n  type DatePickerSelectModes,\n  type NovoDateSelectEvent,\n  type NovoDateSelectionStrategy,\n  type NovoMonthSelectEvent,\n  type NovoYearSelectEvent,\n  type OverlayDate,\n} from 'novo-elements/utils';\nimport { DefaultDateSelectionStrategy, MultiDateSelectionStrategy, RangeSelectionStrategy, WeekSelectionStrategy } from './strategies';\n\n@Component({\n    selector: 'novo-calendar',\n    templateUrl: './calendar.component.html',\n    styleUrls: ['./calendar.component.scss'],\n    standalone: false,\n})\nexport class NovoCalendarElement implements OnInit {\n  @Input()\n  minYear: string | number;\n  @Input()\n  maxYear: string | number;\n  @Input()\n  minDate: string | number;\n  @Input()\n  maxDate: string | number;\n  // Default view mode (select days)\n  @Input()\n  activeView: string = 'days';\n  @Input()\n  layout: string = 'horizontal';\n\n  _selected: Date[] = [];\n  @Input()\n  get selected(): Date[] {\n    return this._selected;\n  }\n  set selected(value) {\n    this._selected = value ? value.filter(isDate).map((d) => startOfDay(d)) : [];\n  }\n  @Output()\n  selectedChange: EventEmitter<Date[]> = new EventEmitter();\n  @Input()\n  preview: Date[] = [];\n  @Output()\n  previewChange: EventEmitter<Date[]> = new EventEmitter();\n  @Output()\n  activeDateChange: EventEmitter<Date> = new EventEmitter();\n\n  @Input()\n  overlays: OverlayDate[] = [];\n  @Input()\n  disabledDateMessage: string;\n\n  _activeDate: Date = new Date();\n  _mode: DatePickerSelectModes = 'single';\n  _numberOfMonths: number[] = [0];\n  _weekStartsOn: Day = 0;\n  _strategy: NovoDateSelectionStrategy<any> = new DefaultDateSelectionStrategy();\n\n  months: any;\n\n  @Input()\n  get activeDate(): Date {\n    return this._activeDate;\n  }\n  set activeDate(value) {\n    if (!isSameDay(value, this._activeDate)) {\n      this._activeDate = value;\n      this.activeDateChange.next(value);\n      this.updateView(value);\n    }\n  }\n\n  @Input()\n  get weekStartsOn(): Day {\n    return this._weekStartsOn;\n  }\n  set weekStartsOn(value: Day) {\n    this._weekStartsOn = value;\n    if (this.mode === 'week') {\n      this._strategy = new WeekSelectionStrategy(this.weekStartsOn);\n    }\n  }\n\n  @Input()\n  get numberOfMonths(): number {\n    return this._numberOfMonths.length;\n  }\n  set numberOfMonths(value) {\n    this._numberOfMonths = Array.from(Array(Number(value)).keys());\n    this.updateView(this.activeDate);\n  }\n\n  @Input()\n  get mode(): DatePickerSelectModes {\n    return this._mode;\n  }\n  set mode(value) {\n    if (this._mode !== value) {\n      this._mode = value;\n      switch (value) {\n        case 'multiple':\n          this._strategy = new MultiDateSelectionStrategy();\n          break;\n        case 'range':\n          this._strategy = new RangeSelectionStrategy();\n          break;\n        case 'week':\n          this._strategy = new WeekSelectionStrategy(this.weekStartsOn);\n          break;\n        case 'single':\n        default:\n          this._strategy = new DefaultDateSelectionStrategy();\n          break;\n      }\n    }\n  }\n\n  @HostBinding('style.width')\n  get hb_width() {\n    if (this.layout === 'vertical') {\n      return this._sanitizer.bypassSecurityTrustStyle('min-content');\n    }\n    return this._sanitizer.bypassSecurityTrustStyle('min-content');\n  }\n\n  @HostBinding('class.layout-horizontal')\n  get hb_horiztonal() {\n    return this.layout !== 'vertical';\n  }\n\n  @HostBinding('class.layout-vertical')\n  get hb_vertical() {\n    return this.layout === 'vertical';\n  }\n\n  constructor(\n    public labels: NovoLabelService,\n    private element: ElementRef,\n    private cdr: ChangeDetectorRef,\n    private _sanitizer: DomSanitizer,\n  ) {}\n\n  ngOnInit() {\n    if (!this.activeDate) {\n      this.activeDate = this.selected.length ? this.selected[0] : new Date();\n    }\n    this.updateView(this.activeDate);\n  }\n\n  updateView(activeDate: Date) {\n    this.activeDate = new Date(activeDate ? new Date(activeDate) : new Date());\n    this.months = [];\n    const month = startOfMonth(this.activeDate);\n    for (const i of this._numberOfMonths) {\n      const date = addMonths(month, i);\n      const label = this.labels.formatDateWithFormat(date, { month: 'short' });\n      this.months.push({ date, label });\n    }\n  }\n\n  setToday() {\n    const tmp = new Date();\n    this.updateView(tmp);\n    // Go back to days\n    this.openView(null, 'days');\n  }\n\n  monthSelected({ event, month }: NovoMonthSelectEvent): void {\n    const date = this.activeDate ? this.activeDate : new Date().getMonth();\n    const tmp = setMonth(date, month);\n    this.updateView(tmp);\n    // Go back to days\n    this.openView(null, 'days');\n  }\n\n  yearSelected({ event, year }: NovoYearSelectEvent): void {\n    const date = this.activeDate ? this.activeDate : new Date();\n    const tmp = setYear(date, year);\n    this.updateView(tmp);\n    // Go back to days\n    this.openView(null, 'days');\n  }\n\n  dateSelected({ event, day }: NovoDateSelectEvent) {\n    // Helpers.swallowEvent(event);\n    this.selected = this._strategy.selectionFinished(day.date, this.selected, event);\n    this.selectedChange.emit(this.selected);\n    this.cdr.markForCheck();\n  }\n\n  updatePreview({ event, day }: NovoDateSelectEvent) {\n    this.preview = this._strategy.createPreview(day.date, this.selected, event);\n    this.previewChange.emit(this.preview);\n  }\n\n  prevMonth(event: Event): void {\n    Helpers.swallowEvent(event);\n    const tmp = subMonths(this.activeDate, 1);\n    this.updateView(tmp);\n  }\n\n  nextMonth(event: Event): void {\n    Helpers.swallowEvent(event);\n    const tmp = addMonths(this.activeDate, 1);\n    this.updateView(tmp);\n  }\n\n  openView(event: Event, type: string) {\n    Helpers.swallowEvent(event);\n\n    // If they click the toggle two time in a row, close it (go back to days)\n    if (type === this.activeView) {\n      this.activeView = 'days';\n    } else {\n      this.activeView = type;\n    }\n\n    // Make sure to scroll the selected one into view\n    if (this.activeView === 'years' || this.activeView === 'months') {\n      setTimeout(() => {\n        const container = this.element.nativeElement.querySelector(`.calendar-content.${this.activeView}`);\n        const selectedItem = this.element.nativeElement.querySelector(\n          `.calendar-content.${this.activeView} .${this.activeView === 'years' ? 'year' : 'month'}.selected`,\n        );\n        if (container && selectedItem) {\n          container.scrollTop = selectedItem.offsetTop - 100;\n        }\n      });\n    }\n  }\n\n  _isRange() {\n    return ['week', 'range'].includes(this.mode);\n  }\n}\n","<div class=\"calendar-header\">\n  <novo-button theme=\"icon\" icon=\"previous\" size=\"small\" (click)=\"prevMonth($event)\"\n    data-automation-id=\"calendar-previous\" tabindex=\"0\"></novo-button>\n  <ng-container *ngFor=\"let month of months; let i = index;\">\n    <span class=\"heading\" [class.secondary]=\"i > 0\">\n      <span class=\"month\" (click)=\"openView($event, 'months')\"\n        data-automation-id=\"header-month\" tabindex=\"0\">{{ month.label }}</span>\n      <span class=\"year\" (click)=\"openView($event, 'years')\"\n        data-automation-id=\"header-year\" tabindex=\"0\">{{ month.date?.getFullYear() }}</span>\n    </span>\n  </ng-container>\n  <novo-button theme=\"icon\" icon=\"next\" size=\"small\" (click)=\"nextMonth($event)\" data-automation-id=\"calendar-next\" tabindex=\"0\">\n  </novo-button>\n</div>\n<section class=\"calendar-content\" [ngSwitch]=\"activeView\">\n  <ng-container *ngSwitchCase=\"'days'\">\n    <ng-container *ngFor=\"let month of months; let i = index\">\n      <div class=\"calendar-header\" *ngIf=\"layout==='vertical' && i > 0\">\n        <span class=\"previous\" (click)=\"prevMonth($event)\" data-automation-id=\"calendar-previous\" tabindex=\"0\"></span>\n        <span class=\"heading\">\n          <span class=\"month\" (click)=\"openView($event, 'months')\"\n            data-automation-id=\"header-month\" tabindex=\"0\">{{ month.label }}</span>\n          <span class=\"year\" (click)=\"openView($event, 'years')\"\n            data-automation-id=\"header-year\" tabindex=\"0\">{{ month.date?.getFullYear() }}</span>\n        </span>\n        <span class=\"next\" (click)=\"nextMonth($event)\" data-automation-id=\"calendar-next\"></span>\n      </div>\n      <novo-month-view\n        class=\"month-view\"\n        [activeDate]=\"month.date\"\n        [selected]=\"selected\"\n        [preview]=\"preview\"\n        [overlays]=\"overlays\"\n        [isRange]=\"_isRange()\"\n        [hideOverflowDays]=\"months.length > 1\"\n        [weekStartsOn]=\"weekStartsOn\"\n        [disabledDateMessage]=\"disabledDateMessage\"\n        [minDate]=\"minDate\"\n        [maxDate]=\"maxDate\"\n        (select)=\"dateSelected($event)\"\n        (hover)=\"updatePreview($event)\"></novo-month-view>\n    </ng-container>\n  </ng-container>\n  <novo-month-select\n    *ngSwitchCase=\"'months'\"\n    [activeDate]=\"activeDate\"\n    [selected]=\"selected\"\n    (select)=\"monthSelected($event)\">\n  </novo-month-select>\n  <novo-year-select\n    *ngSwitchCase=\"'years'\"\n    [activeDate]=\"activeDate\"\n    [selected]=\"selected\"\n    (select)=\"yearSelected($event)\">\n  </novo-year-select>\n</section>","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoPipesModule } from 'novo-elements/pipes';\nimport { NovoCalendarElement } from './calendar.component';\nimport { NovoMonthSelectElement } from './month-select/month-select.component';\nimport { NovoMonthViewElement } from './month-view/month-view.component';\nimport { NovoYearSelectElement } from './year-select/year-select.component';\n\n@NgModule({\n  imports: [CommonModule, FormsModule, NovoButtonModule, NovoPipesModule, NovoIconModule],\n  declarations: [NovoMonthViewElement, NovoMonthSelectElement, NovoYearSelectElement, NovoCalendarElement],\n  exports: [NovoMonthViewElement, NovoMonthSelectElement, NovoYearSelectElement, NovoCalendarElement],\n})\nexport class NovoCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i5.NovoMonthViewElement","i6.NovoMonthSelectElement","i7.NovoYearSelectElement"],"mappings":"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"}