{"version":3,"file":"novo-elements-elements-date-picker.mjs","sources":["../../../projects/novo-elements/src/elements/date-picker/DatePicker.ts","../../../projects/novo-elements/src/elements/date-picker/DatePickerInput.ts","../../../projects/novo-elements/src/elements/date-picker/DateRangeInput.ts","../../../projects/novo-elements/src/elements/date-picker/MultiDateInput.ts","../../../projects/novo-elements/src/elements/date-picker/DatePicker.module.ts","../../../projects/novo-elements/src/elements/date-picker/novo-elements-elements-date-picker.ts"],"sourcesContent":["// NG2\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n// Vendor\nimport { Day, isDate, isValid, subDays } from 'date-fns';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BooleanInput, DataTableRangeModel, DatePickerSelectModes, DateUtil, Helpers, modelTypes, RangeModel, rangeSelectModes } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst DATE_PICKER_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoDatePickerElement),\n  multi: true,\n};\n\n@Component({\n    selector: 'novo-date-picker',\n    providers: [DATE_PICKER_VALUE_ACCESSOR],\n    animations: [\n        trigger('startDateTextState', [\n            state('startDate', style({\n                opacity: '1.0',\n            })),\n            state('endDate', style({\n                opacity: '0.6',\n            })),\n            transition('startDate <=> endDate', animate('200ms ease-in')),\n        ]),\n        trigger('endDateTextState', [\n            state('startDate', style({\n                opacity: '0.6',\n            })),\n            state('endDate', style({\n                opacity: '1.0',\n            })),\n            transition('startDate <=> endDate', animate('200ms ease-in')),\n        ]),\n        trigger('indicatorState', [\n            state('startDate', style({\n                transform: 'translateX(0%)',\n            })),\n            state('endDate', style({\n                transform: 'translateX(100%)',\n            })),\n            transition('startDate <=> endDate', animate('200ms ease-in')),\n        ]),\n    ],\n    template: `\n    <div class=\"date-picker-container\">\n      <div class=\"date-range-tabs\" *ngIf=\"range\" [class.week-select-mode]=\"weekRangeSelect\">\n        <span\n          class=\"range-tab\"\n          (click)=\"toggleRangeSelect('startDate')\"\n          [@startDateTextState]=\"rangeSelectMode\"\n          data-automation-id=\"calendar-start-date\"\n          >{{ startDateLabel }}</span\n        >\n        <span\n          class=\"range-tab\"\n          (click)=\"toggleRangeSelect('endDate')\"\n          [@endDateTextState]=\"rangeSelectMode\"\n          data-automation-id=\"calendar-end-date\"\n          >{{ endDateLabel }}</span\n        >\n        <i class=\"indicator\" [@indicatorState]=\"rangeSelectMode\"></i>\n      </div>\n\n      <novo-calendar\n        [activeDate]=\"activeDate\"\n        [(selected)]=\"selection\"\n        (selectedChange)=\"updateSelection($event)\"\n        [mode]=\"mode\"\n        [numberOfMonths]=\"numberOfMonths\"\n        [weekStartsOn]=\"weekStart\"\n        [disabledDateMessage]=\"disabledDateMessage\"\n        [minDate]=\"start\"\n        [maxDate]=\"end\"\n      ></novo-calendar>\n\n      <div class=\"calendar-footer\" [hidden]=\"hideFooter\">\n\n        <novo-button [hidden]=\"hideToday\" (click)=\"setToday()\" class=\"today\" size=\"small\" data-automation-id=\"calendar-today\">{{ labels.today }}</novo-button>\n        <ng-content select=\".footer-content\"></ng-content>\n      </div>\n    </div>\n  `,\n    styleUrls: ['./DatePicker.scss'],\n    standalone: false,\n})\nexport class NovoDatePickerElement implements ControlValueAccessor, OnInit {\n  /**\n   * The minimum year to allow selected in year select view\n   **/\n  @Input()\n  minYear: string | number;\n  /**\n   * The maximum year to allow selected in year select view\n   **/\n  @Input()\n  maxYear: string | number;\n  /**\n   * The minimum date that can be selected.\n   **/\n  @Input()\n  start: Date;\n  /**\n   * The maximum date that can be selected.\n   **/\n  @Input()\n  end: Date;\n  /**\n   * **Deprecated** Whether the date-picker is used outside of an overlay.\n   **/\n  @Input()\n  @BooleanInput()\n  inline: boolean;\n  /**\n   * Day of the week the calendar should display first, Sunday=0...Saturday=6\n   **/\n  @Input()\n  weekStart: Day = 0;\n  /**\n   * Certain dates that are already selected.\n   **/\n  @Input()\n  preselected: Date[] = [];\n  /**\n   * Whether the days for the previous and next month should be hidden.\n   **/\n  @Input()\n  @BooleanInput()\n  @HostBinding('class.hide-overflow-days')\n  public hideOverflowDays: boolean = false;\n  /**\n   * Whether the footer should be hidden - contains `today`/`cancel`/`save` buttons\n   **/\n  @Input()\n  @BooleanInput()\n  public hideFooter: boolean = false;\n\n  /**\n   * Whether to hide the `today` button.\n   **/\n  @Input()\n  @BooleanInput()\n  public hideToday: boolean = false;\n\n  @Input()\n  disabledDateMessage: string;\n\n  @Input()\n  dateForInitialView?: Date;\n\n  // Select callback for output\n  @Output()\n  onSelect: EventEmitter<any> = new EventEmitter(false);\n\n  _mode: DatePickerSelectModes = 'single';\n  _range: boolean;\n  _weekRangeSelect: boolean;\n  _numberOfMonths: number[] = [0];\n\n  /**\n   * Number of months to display at once.\n   * @default 1\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  }\n\n  /**\n   * How the date selection should work.\n   * @default single\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    }\n  }\n  /**\n   * **deprecated** please use `mode=\"range\"`.\n   **/\n  @Input()\n  get range(): boolean {\n    return ['range', 'week'].includes(this.mode) || this._range;\n  }\n  set range(value) {\n    console.warn('\\'range\\' property is deprecated, please use \\'mode=\"range\"\\'.');\n    if (this._range !== value) {\n      this._range = value;\n      this.mode = 'range';\n    }\n  }\n  /**\n   * **deprecated** please use `mode=\"week\"`.\n   **/\n  @Input()\n  get weekRangeSelect(): boolean {\n    return this._mode === 'week' || this._weekRangeSelect;\n  }\n  set weekRangeSelect(value) {\n    console.warn('\\'weekRangeSelect\\' property is deprecated, please use \\'mode=\"week\"\\'.');\n    if (this._weekRangeSelect !== value) {\n      this._weekRangeSelect = value;\n      this.mode = 'week';\n    }\n  }\n\n  model: modelTypes;\n  activeDate: Date;\n\n  _selection: Date[] = [];\n  preview: Date[] = [];\n  startDateLabel: string;\n  endDateLabel: string;\n\n  rangeSelectMode: rangeSelectModes = 'startDate';\n  _onChange: Function = () => {};\n  _onTouched: Function = () => {};\n\n  get selection(): Date[] {\n    return this._selection;\n  }\n  set selection(value) {\n    this._selection = value ? value.filter(isDate).map((d) => DateUtil.startOfDay(d)) : [];\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    // Determine the year array\n    const now = new Date();\n    // Set labels\n    if (this.model) {\n      this.modelToSelection(this.model);\n    }\n    if (this.dateForInitialView) {\n      this.updateView(this.dateForInitialView);\n    } else if (this.selection && this.selection.length) {\n      this.updateView(this.selection[0]);\n    }\n  }\n\n  updateView(date) {\n    const value: any = date ? new Date(date) : new Date();\n    this.activeDate = new Date(value);\n  }\n\n  updateSelection(selected: Date[], fireEvents = true) {\n    this.selection = selected;\n\n    this.startDateLabel = this.labels.formatDateWithFormat(this.selection[0], {\n      month: 'short',\n      day: '2-digit',\n      year: 'numeric',\n    });\n\n    this.endDateLabel = this.labels.formatDateWithFormat(this.selection[1], {\n      month: 'short',\n      day: '2-digit',\n      year: 'numeric',\n    });\n\n    if (fireEvents) {\n      switch (this.mode) {\n        case 'multiple':\n          this.fireSelect();\n          // Also, update the ngModel\n          this._onChange(this.selection);\n          this.model = this.selection;\n          break;\n        case 'range':\n        case 'week':\n          if (this.selection.filter(Boolean).length === 2) {\n            this.fireRangeSelect();\n            // Also, update the ngModel\n            const model = {\n              startDate: this.selection[0],\n              endDate: this.selection[1],\n            };\n            this._onChange(model);\n            this.model = model;\n          }\n          break;\n        case 'single':\n        default:\n          this.fireSelect();\n          // Also, update the ngModel\n          this._onChange(this.selection[0]);\n          this.model = this.selection[0];\n          break;\n      }\n    }\n\n    this.cdr.markForCheck();\n  }\n\n  eventData(date: Date) {\n    return {\n      year: date.getFullYear(),\n      month: this.labels.formatDateWithFormat(date, { month: 'long' }),\n      day: this.labels.formatDateWithFormat(date, { weekday: 'long' }),\n      date,\n    };\n  }\n\n  fireSelect() {\n    if (this.mode === 'multiple') {\n      this.onSelect.next(this.selection);\n    } else {\n      this.onSelect.next(this.eventData(this.selection[0]));\n    }\n  }\n\n  fireRangeSelect() {\n    // Make sure the start date is before the end date\n    if (this.selection.filter(Boolean).length === 2) {\n      const [start, end] = this.selection;\n      this.onSelect.next({\n        startDate: this.eventData(start),\n        endDate: this.eventData(end),\n      });\n    }\n  }\n\n  setToday() {\n    const tmp = new Date();\n    this.updateView(tmp);\n    this.updateSelection(Array.of(tmp));\n  }\n\n  toggleRangeSelect(range: rangeSelectModes): void {\n    this.rangeSelectMode = range;\n    if (range === 'startDate' && this.selection.length) {\n      this.updateView(this.selection[0]);\n    }\n    if (range === 'endDate' && this.selection.length === 2) {\n      this.updateView(this.selection[1]);\n    }\n  }\n\n  modelToSelection(model: modelTypes) {\n    switch (this.mode) {\n      case 'multiple':\n        this.selection = model as Date[];\n        break;\n      case 'range':\n      case 'week':\n        this.setRangeSelection();\n        break;\n      case 'single':\n      default:\n        this.selection = [model as Date];\n        break;\n    }\n  }\n\n  // ValueAccessor Functions\n  writeValue(model: modelTypes): void {\n    this.model = model;\n    if (this.mode === 'multiple') {\n      this.selection = this.model as Date[];\n    }\n    if (this.mode === 'range') {\n      this.setRangeSelection();\n    }\n    if (Helpers.isDate(model)) {\n      this.updateView(model);\n      this.modelToSelection(model);\n    } else if (Helpers.isString(model)) {\n      const date = DateUtil.parse(model as any);\n      if (isValid(date)) {\n        this.updateView(date);\n        this.modelToSelection(date);\n      }\n    }\n  }\n\n  setRangeSelection() {\n    if (this.model?.hasOwnProperty('startDate')) {\n       // coming from standalone date picker\n      const range = this.model as RangeModel;\n      this.selection = [range.startDate, range.endDate].filter(Boolean);\n    } else if (this.model?.hasOwnProperty('min')) {\n       // coming from data-table filter where model end date is the beginning of the next day\n      const range = this.model as DataTableRangeModel;\n      this.selection = [range.min, subDays(range.max, 1)].filter(Boolean);\n    }\n  }\n\n  registerOnChange(fn: Function): void {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: Function): void {\n    this._onTouched = fn;\n  }\n}\n","// NG\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  DestroyRef,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// Vendor\nimport { Day, isValid } from 'date-fns';\n// App\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { BooleanInput, DateUtil, Helpers, Key } from 'novo-elements/utils';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n// Value accessor for the component (supports ngModel)\nconst DATE_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoDatePickerInputElement),\n  multi: true,\n};\n\n@Component({\n    selector: 'novo-date-picker-input',\n    providers: [DATE_VALUE_ACCESSOR],\n    template: `\n    <input\n      type=\"text\"\n      [name]=\"name\"\n      [(ngModel)]=\"formattedValue\"\n      [imask]=\"maskOptions\"\n      [placeholder]=\"placeholder\"\n      (focus)=\"_handleFocus($event)\"\n      (keydown)=\"_handleKeydown($event)\"\n      (input)=\"_handleInput($event)\"\n      (blur)=\"_handleBlur($event)\"\n      (accept)=\"handleMaskAccept($event)\"\n      #input\n      data-automation-id=\"date-input\"\n      [disabled]=\"disabled\"\n    />\n    <span class=\"error-text\" *ngIf=\"showInvalidDateError\">{{ invalidDateErrorMessage }}</span>\n    <i *ngIf=\"!hasValue\" (click)=\"openPanel()\" class=\"bhi-calendar\"></i>\n    <i *ngIf=\"hasValue\" (click)=\"clearAction()\" class=\"bhi-times\"></i>\n    <novo-overlay-template [parent]=\"overlayElement\" position=\"above-below\">\n      <novo-date-picker\n        [start]=\"start\"\n        [end]=\"end\"\n        inline=\"true\"\n        (onSelect)=\"onSelected($event)\"\n        [disabledDateMessage]=\"disabledDateMessage\"\n        [ngModel]=\"value\"\n        [weekStart]=\"weekStart\"\n        [hideFooter]=\"hideFooter\"\n        [hideToday]=\"hideToday\"\n        [dateForInitialView]=\"dateForInitialView\">\n        <div *ngIf=\"hasButtons\" class=\"footer-content\">\n          <novo-button\n            class=\"cancel-button\"\n            data-automation-id=\"date-picker-cancel\"\n            theme=\"dialogue\"\n            size=\"small\"\n            (click)=\"cancel()\">{{ labels.cancel }}</novo-button>\n          <novo-button\n            class=\"save-button\"\n            data-automation-id=\"date-picker-save\"\n            theme=\"primary\"\n            color=\"primary\"\n            size=\"small\"\n            (click)=\"save()\">{{ labels.save }}</novo-button>\n        </div>\n      </novo-date-picker>\n    </novo-overlay-template>\n  `,\n    styleUrls: ['./DatePickerInput.scss'],\n    standalone: false,\n})\nexport class NovoDatePickerInputElement implements OnInit, OnChanges, AfterViewInit, ControlValueAccessor {\n  public value: any;\n  public formattedValue: string = '';\n  public showInvalidDateError: boolean;\n  public invalidDateErrorMessage: string = '';\n  private userDefinedFormat: boolean;\n  private isInvalidDate: boolean;\n\n  /** View -> model callback called when value changes */\n  _onChange: (value: any) => void = () => {};\n\n  /** View -> model callback called when autocomplete has been touched */\n  _onTouched = () => {};\n\n  /**\n   * The name of the form field, get passed to the native `input` element\n   **/\n  @Input()\n  name: string;\n  /**\n   * The minimum date that can be selected.\n   **/\n  @Input()\n  start: Date;\n  /**\n   * The maximum date that can be selected.\n   **/\n  @Input()\n  end: Date;\n  /**\n   * Placeholder text to display in the input when it is empty.\n   **/\n  @Input()\n  placeholder: string;\n  /**\n   * MaskOptions to pass to the angular-imask plugin\n   **/\n  @Input()\n  maskOptions: any;\n  /**\n   * The format to use to parse and render dates: DD/MM/YYYY or MM/DD/YYYY\n   **/\n  @Input()\n  format: string;\n  /**\n   * Whether to apply a text mask to the date (see `maskOptions`). Only enabled if allowInvalidDate is false.\n   */\n  @Input()\n  textMaskEnabled: boolean = true;\n  /**\n   * Whether the input should emit values when the field does not yet constitute a valid date\n   */\n  @Input()\n  allowInvalidDate: boolean = false;\n  /**\n   * The element to use as the parent for the date picker's overlay (to determine bounds sizing). By default,\n   * this refers to the input element itself, but may be a container if it has a padded border.\n   */\n  @Input()\n  overlayOnElement: ElementRef;\n  /**\n   * Whether the footer in the date picker which contains `today` button and cancel/save buttons should be hidden.\n   **/\n  @Input()\n  @BooleanInput()\n  public hideFooter: boolean = false;\n  /**\n   * Whether to hide the 'today' button\n   */\n  @Input()\n  @BooleanInput()\n  public hideToday: boolean = false;\n  /**\n   * Whether to display the picker together with 'cancel'/'save' buttons\n   */\n  @Input()\n  @BooleanInput()\n  public hasButtons: boolean = false;\n  /**\n   * Sets the field as to appear disabled, users will not be able to interact with the text field.\n   **/\n  @HostBinding('class.disabled')\n  @Input()\n  disabled: boolean = false;\n  /**\n   * A message to display in the picker overlay when a given date is disabled through minimum/maximum\n   */\n  @Input()\n  disabledDateMessage: string;\n  /**\n   * An optional date/month to show in the DatePicker initially besides the current date/month\n   */\n  @Input()\n  dateForInitialView?: Date;\n  /**\n   * Day of the week the calendar should display first, Sunday=0...Saturday=6\n   **/\n  @Input()\n  weekStart: Day = 0;\n  @Output()\n  blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n  @Output()\n  focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n  @Output()\n  changeEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n  @Output()\n  onSave: EventEmitter<any> = new EventEmitter();\n  @Output()\n  onCancel: EventEmitter<any> = new EventEmitter();\n  @Output()\n  valueCleared: EventEmitter<any> = new EventEmitter();\n  /** Element for the panel containing the autocomplete options. */\n  @ViewChild(NovoOverlayTemplateComponent)\n  overlay: NovoOverlayTemplateComponent;\n\n  constructor(\n    public element: ElementRef,\n    public labels: NovoLabelService,\n    private _changeDetectorRef: ChangeDetectorRef,\n    public dateFormatService: DateFormatService,\n    private destroyRef: DestroyRef,\n  ) {\n    this.placeholder = this.labels.localizedDatePlaceholder();\n  }\n\n  ngOnInit() {\n    this._initFormatOptions();\n  }\n  ngOnChanges(changes: SimpleChanges): void {\n    if (Object.keys(changes).some((key) => ['format'].includes(key))) {\n      this._initFormatOptions();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.overlay.panelClosingActions.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this._handleOverlayClickout.bind(this));\n  }\n\n  _initFormatOptions() {\n    this.userDefinedFormat = this.format ? !this.format.match(/^(DD\\/MM\\/YYYY|MM\\/DD\\/YYYY)$/g) : false;\n    if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {\n      this.maskOptions = this.maskOptions || this.dateFormatService.getDateMask();\n    } else {\n      this.maskOptions = undefined;\n    }\n    this.setupInvalidDateErrorMessage();\n  }\n\n  /** BEGIN: Convenient Panel Methods. */\n  openPanel(): void {\n    if (!this.disabled) {\n      this.overlay.openPanel();\n    }\n  }\n  closePanel(): void {\n    this.overlay.closePanel();\n  }\n  get panelOpen(): boolean {\n    return this.overlay?.panelOpen;\n  }\n\n  get overlayElement(): ElementRef {\n    return this.overlayOnElement || this.element;\n  }\n  /** END: Convenient Panel Methods. */\n\n  _handleKeydown(event: KeyboardEvent): void {\n    if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n      this._handleValueUpdate((event.target as HTMLInputElement).value, true);\n      this.closePanel();\n      event.stopPropagation();\n    }\n  }\n\n  _handleInput(event: KeyboardEvent): void {\n    // if maskOptions is enabled, then we do not want to process inputs until the mask has accepted them - so those events will be\n    // handled by the (accept) event.\n    if (document.activeElement === event.target && !this.maskOptions) {\n      this._handleValueUpdate((event.target as HTMLInputElement).value, false);\n    }\n  }\n\n  _handleBlur(event: FocusEvent): void {\n    if (!this.overlay.isBlurRecipient(event)) {\n      this.handleInvalidDate();\n      this.blurEvent.emit(event);\n    }\n  }\n\n  _handleOverlayClickout(): void {\n    this.handleInvalidDate(/* fromPanelClose: */true);\n    this.blurEvent.emit();\n  }\n\n  _handleFocus(event: FocusEvent): void {\n    this.showInvalidDateError = false;\n    this.openPanel();\n    this.focusEvent.emit(event);\n  }\n\n  _handleValueUpdate(value: string, blur: boolean): void {\n    if (value === '') {\n      this.clearValue();\n      if (!this.hasButtons) {\n        this.closePanel();\n      }\n    } else {\n      this.formatDate(value, blur);\n      this.openPanel();\n    }\n  }\n\n  handleMaskAccept(maskValue: string): void {\n    this._handleValueUpdate(maskValue, false);\n  }\n\n  protected formatDate(value: string, blur: boolean) {\n    try {\n      let dateTimeValue: Date;\n      let isInvalidDate: boolean;\n      if (this.format) {\n        [dateTimeValue, , isInvalidDate] = this.dateFormatService.parseCustomDateString(value, this.format);\n      } else {\n        [dateTimeValue, , isInvalidDate] = this.dateFormatService.parseString(value, false, 'date');\n      }\n      this.isInvalidDate = isInvalidDate;\n      // if we have a full date - set the dateTimeValue\n      if (dateTimeValue?.getFullYear()?.toString().length === 4) {\n        const dt = new Date(dateTimeValue);\n        this.dispatchOnChange(dt, blur);\n      // if we only have a partial date - set the value to null\n      } else if (isNaN(dateTimeValue?.getUTCDate())) {\n        this.dispatchOnChange(null, blur);\n      }\n    } catch (err) {}\n  }\n\n  writeValue(value: any): void {\n    Promise.resolve(null).then(() => this._setTriggerValue(value));\n  }\n\n  registerOnChange(fn: (value: any) => {}): void {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: () => {}) {\n    this._onTouched = fn;\n  }\n\n  setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n  }\n\n  handleInvalidDate(fromPanelClose = false): void {\n    if (this.isInvalidDate) {\n      this.showInvalidDateError = true;\n      this.clearValue();\n      if (!fromPanelClose) {\n        this.closePanel();\n      }\n    }\n  }\n\n  setupInvalidDateErrorMessage(): void {\n    let dateFormat: string = this.labels.dateFormatString();\n    if (Helpers.isEmpty(dateFormat)) {\n      // Default to mm/dd/yyyy\n      dateFormat = 'mm/dd/yyyy';\n    } else {\n      dateFormat = dateFormat.toLowerCase();\n    }\n    this.invalidDateErrorMessage = `Invalid date field entered. Date format of ${dateFormat} is required.`;\n  }\n\n  public dispatchOnChange(newValue?: any, blur: boolean = false, skip: boolean = false) {\n    if (newValue !== this.value) {\n      this._onChange(newValue);\n      this.changeEvent.emit(newValue);\n      if (blur) {\n        !skip && this.writeValue(newValue);\n      } else {\n        !skip && this._setCalendarValue(newValue);\n      }\n    }\n  }\n\n  private _setTriggerValue(value: any): void {\n    this._setCalendarValue(value);\n    this._setFormValue(value);\n    this._changeDetectorRef.markForCheck();\n  }\n\n  private _setCalendarValue(value: any): void {\n    if (value instanceof Date && this.value instanceof Date) {\n      const newDate = new Date(value);\n      newDate.setHours(0, 0, 0, 0);\n      this.value = newDate;\n      return;\n    }\n    this.value = value;\n  }\n\n  private _setFormValue(value: any): void {\n    if (value) {\n      const test = this.formatDateValue(value);\n      this.formattedValue = test;\n    } else {\n      this.formattedValue = '';\n    }\n  }\n\n  public onSelected(event: any): void {\n    this.setValue(event);\n    if (!this.hasButtons) {\n      this.closePanel();\n    }\n  }\n\n  private setValue(event: any | null): void {\n    if (event?.date) {\n      this.showInvalidDateError = false;\n      this.dispatchOnChange(event.date, true);\n    }\n  }\n\n  /**\n   * This method closes the panel, and if a value is specified, also sets the associated\n   * control to that value. It will also mark the control as dirty if this interaction\n   * stemmed from the user.\n   */\n  public setValueAndClose(event: any | null): void {\n    this.setValue(event);\n    this.closePanel();\n  }\n\n  /**\n   * Respond to clicking the X button within the input\n   */\n  public clearAction() {\n    this.clearValue();\n    this.valueCleared.emit();\n  }\n\n  /**\n   * Clear any previous selected option and emit a selection change event for this option\n   */\n  public clearValue() {\n    this._setFormValue(null);\n    this.dispatchOnChange(null);\n  }\n\n  public formatDateValue(value) {\n    const originalValue = value;\n    try {\n      if (!value) {\n        return '';\n      }\n      if (this.userDefinedFormat && isValid(value)) {\n        return DateUtil.format(value, this.format);\n      }\n      if (!(value instanceof Date)) {\n        value = new Date(value);\n      }\n      if (!(isNaN(value.valueOf()) && this.allowInvalidDate)) {\n        return this.labels.formatDateWithFormat(value, {\n          month: '2-digit',\n          day: '2-digit',\n          year: 'numeric',\n        });\n      } else {\n        return originalValue;\n      }\n    } catch (err) {\n      return err;\n    }\n  }\n\n  public get hasValue() {\n    return !Helpers.isEmpty(this.value);\n  }\n\n  save(): void {\n    this.onSave.emit();\n  }\n\n  cancel(): void {\n    this.onCancel.emit();\n  }\n}\n","// NG\nimport {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// Vendor\nimport { isValid } from 'date-fns';\n// App\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { DateUtil, Helpers, Key, RangeModel } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst DATE_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoDateRangeInputElement),\n  multi: true,\n};\n\n@Component({\n    selector: 'novo-date-range-input',\n    providers: [DATE_VALUE_ACCESSOR],\n    template: `\n    <div class=\"date-range-input-container\">\n      <input\n        type=\"text\"\n        [name]=\"name\"\n        [(ngModel)]=\"formattedStartDate\"\n        [imask]=\"maskOptions\"\n        [placeholder]=\"placeholder\"\n        (keydown)=\"_onStartInputChange($event)\"\n        (input)=\"_onStartInputChange($event)\"\n        (focus)=\"_handleFocus($event)\"\n        (blur)=\"_handleBlur($event)\"\n        #startDate\n        data-automation-id=\"date-range-input-start\"\n        [disabled]=\"disabled\"\n      />\n      <novo-icon *ngIf=\"!hasStartValue\" (click)=\"openPanel()\">calendar</novo-icon>\n      <novo-icon *ngIf=\"hasStartValue\" (click)=\"clearStartValue()\">x</novo-icon>\n    </div>\n    <div class=\"date-range-input-divider\">-</div>\n    <div class=\"date-range-input-container\">\n      <input\n        type=\"text\"\n        [name]=\"name\"\n        [(ngModel)]=\"formattedEndDate\"\n        [imask]=\"maskOptions\"\n        [placeholder]=\"placeholder\"\n        (keydown)=\"_onEndInputChange($event)\"\n        (input)=\"_onEndInputChange($event)\"\n        (focus)=\"_handleFocus($event)\"\n        (blur)=\"_handleBlur($event)\"\n        #endDate\n        data-automation-id=\"date-range-input-end\"\n        [disabled]=\"disabled\"\n      />\n      <novo-icon *ngIf=\"!hasEndValue\" (click)=\"openPanel()\">calendar</novo-icon>\n      <novo-icon *ngIf=\"hasEndValue\" (click)=\"clearEndValue()\">x</novo-icon>\n    </div>\n    <novo-overlay-template [parent]=\"element\" position=\"above-below\">\n      <novo-date-picker\n        [start]=\"start\"\n        [end]=\"end\"\n        [mode]=\"mode\"\n        range=\"true\"\n        inline=\"true\"\n        (onSelect)=\"setValueAndClose($event)\"\n        [ngModel]=\"value\"\n        [weekStart]=\"weekStart\"\n      ></novo-date-picker>\n    </novo-overlay-template>\n  `,\n    styleUrls: ['./DateRangeInput.scss'],\n    standalone: false,\n})\nexport class NovoDateRangeInputElement implements OnInit, OnChanges, ControlValueAccessor {\n  public formattedStartDate: string = '';\n  public formattedEndDate: string = '';\n  private userDefinedFormat: boolean;\n\n  @Input()\n  name: string;\n  @Input()\n  start: Date;\n  @Input()\n  end: Date;\n  @Input()\n  weekRangeSelect: boolean = false;\n  @Input()\n  mode: string = 'range';\n  @Input()\n  placeholder: string;\n  @Input()\n  maskOptions: any;\n  @Input()\n  format: string;\n  @Input()\n  textMaskEnabled: boolean = true;\n  @Input()\n  allowInvalidDate: boolean = false;\n  @Input()\n  weekStart: number = 0;\n  @Output()\n  blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n  @Output()\n  focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n  /** Element for the panel containing the autocomplete options. */\n  @ViewChild(NovoOverlayTemplateComponent)\n  overlay: NovoOverlayTemplateComponent;\n\n  @Output() change = new EventEmitter();\n  @Output() blur = new EventEmitter();\n  @Output() focus = new EventEmitter();\n\n  private _value: RangeModel = { startDate: null, endDate: null };\n  private _disabled: boolean = false;\n\n  @Input() get value(): RangeModel {\n    return this._value;\n  }\n  set value(value) {\n    if (this.value !== value) {\n      this._value = value;\n      this._setFormValue(value);\n      this.onChangeCallback(this._value);\n    }\n  }\n\n  // Disabled State\n  @Input()\n  @HostBinding('class.disabled')\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = !!value;\n  }\n\n  constructor(\n    public element: ElementRef,\n    public labels: NovoLabelService,\n    private cdr: ChangeDetectorRef,\n    public dateFormatService: DateFormatService,\n  ) {\n    this.placeholder = this.labels.dateFormatString().toUpperCase() || this.labels.dateFormatPlaceholder;\n  }\n\n  ngOnInit() {\n    this._initFormatOptions();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (Object.keys(changes).some((key) => ['format'].includes(key))) {\n      this._initFormatOptions();\n    }\n  }\n\n  _initFormatOptions() {\n    this.userDefinedFormat = this.format ? !this.format.match(/^(DD\\/MM\\/YYYY|MM\\/DD\\/YYYY)$/g) : false;\n    if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {\n      this.maskOptions = this.maskOptions || this.dateFormatService.getDateMask();\n    } else {\n      this.maskOptions = undefined;\n    }\n  }\n\n  /** BEGIN: Convenient Panel Methods. */\n  openPanel(): void {\n    if (!this.disabled) {\n      this.overlay.openPanel();\n    }\n  }\n\n  closePanel(): void {\n    this.overlay && this.overlay.closePanel();\n  }\n\n  get panelOpen(): boolean {\n    return this.overlay && this.overlay.panelOpen;\n  }\n  /** END: Convenient Panel Methods. */\n\n  _handleKeydown(event: KeyboardEvent): void {\n    if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n      this.closePanel();\n      event.stopPropagation();\n    }\n  }\n\n  _handleBlur(event: FocusEvent): void {\n    this.blurEvent.emit(event);\n  }\n\n  _handleFocus(event: FocusEvent): void {\n    this.openPanel();\n    this.focusEvent.emit(event);\n  }\n\n  protected formatDate(value: string) {\n    try {\n      const [dateTimeValue] = this.dateFormatService.parseString(value, false, 'date');\n      return dateTimeValue ? new Date(dateTimeValue) : null;\n    } catch (err) {\n      return null;\n    }\n  }\n\n  writeValue(value: any): void {\n    this.value = value;\n    this.cdr.markForCheck();\n  }\n\n  setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeCallback = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouchedCallback = fn;\n  }\n\n  private onChangeCallback = (_: any) => {\n    // placeholder\n  };\n\n  private onTouchedCallback = () => {\n    // placeholder\n  };\n\n  _onStartInputChange(event: KeyboardEvent) {\n    this._handleKeydown(event);\n    if (document.activeElement === event.target) {\n      event.stopPropagation();\n      const startDate = this.formatDate((event.target as HTMLInputElement).value);\n      if (startDate) {\n        this.value = {\n          ...this.value,\n          startDate,\n        };\n        this.change.emit(this.value);\n      }\n    }\n  }\n\n  _onEndInputChange(event: KeyboardEvent) {\n    this._handleKeydown(event);\n    if (document.activeElement === event.target) {\n      event.stopPropagation();\n      const endDate = this.formatDate((event.target as HTMLInputElement).value);\n      if (endDate) {\n        this.value = {\n          ...this.value,\n          endDate,\n        };\n        this.change.emit(this.value);\n      }\n    }\n  }\n\n  private _setFormValue(value: RangeModel): void {\n    if (this.value) {\n      this.formattedStartDate = this.formatDateValue(this.value.startDate);\n      this.formattedEndDate = this.formatDateValue(this.value.endDate);\n    }\n  }\n\n  /**\n   * This method closes the panel, and if a value is specified, also sets the associated\n   * control to that value. It will also mark the control as dirty if this interaction\n   * stemmed from the user.\n   */\n  public setValueAndClose(event: any | null): void {\n    if (event && event.startDate && event.endDate) {\n      const startDate = event.startDate.date;\n      const endDate = event.endDate.date;\n      this.value = { startDate, endDate };\n      this.change.emit(this.value);\n    }\n    this.closePanel();\n  }\n\n  /**\n   * Clear any previous selected option and emit a selection change event for this option\n   */\n  public clearStartValue() {\n    this.formattedStartDate = '';\n    this.value = { ...this.value, startDate: null };\n    this.change.emit(this.value);\n  }\n  public clearEndValue() {\n    this.formattedEndDate = '';\n    this.value = { ...this.value, endDate: null };\n    this.change.emit(this.value);\n  }\n\n  public formatDateValue(value) {\n    const originalValue = value;\n    try {\n      if (!value) {\n        return '';\n      }\n      if (this.userDefinedFormat && isValid(value)) {\n        return DateUtil.format(value, this.format);\n      }\n      if (!(value instanceof Date)) {\n        value = new Date(value);\n      }\n      if (!(isNaN(value.valueOf()) && this.allowInvalidDate)) {\n        return this.labels.formatDateWithFormat(value, {\n          month: '2-digit',\n          day: '2-digit',\n          year: 'numeric',\n        });\n      } else {\n        return originalValue;\n      }\n    } catch (err) {\n      return '';\n    }\n  }\n\n  public get hasStartValue() {\n    return !Helpers.isEmpty(this.value?.startDate);\n  }\n  public get hasEndValue() {\n    return !Helpers.isEmpty(this.value?.endDate);\n  }\n}\n","// NG\nimport {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// App\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { Helpers, Key } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst MULTI_DATE_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoMultiDateInputElement),\n  multi: true,\n};\n\n@Component({\n    selector: 'novo-multi-date-input',\n    providers: [MULTI_DATE_VALUE_ACCESSOR],\n    template: `\n    <novo-chip-list>\n      <novo-chip *ngFor=\"let date of value | default: []\" (removed)=\"remove($event, date)\">\n        {{ date | date: format }}\n        <novo-icon novoChipRemove>close</novo-icon>\n      </novo-chip>\n    </novo-chip-list>\n    <div class=\"chip-input-container\" (click)=\"_handleFocus($event)\">\n      <span class=\"placeholder\" *ngIf=\"!value.length\" data-automation-id=\"multi-date-input\">{{ placeholder }}</span>\n    </div>\n    <novo-icon class=\"panel-toggle\" [class.selected]=\"panelOpen\" (click)=\"openPanel()\">calendar</novo-icon>\n    <label class=\"clear-all\" *ngIf=\"value.length\" (click)=\"clearValue()\">{{ labels.clearAll }} <i class=\"bhi-times\"></i></label>\n    <novo-overlay-template [parent]=\"element\" position=\"above-below\">\n      <novo-date-picker\n        [start]=\"start\"\n        [end]=\"end\"\n        inline=\"true\"\n        mode=\"multiple\"\n        (onSelect)=\"setValueAndClose($event)\"\n        [(ngModel)]=\"value\"\n        [weekStart]=\"weekStart\"\n      ></novo-date-picker>\n    </novo-overlay-template>\n  `,\n    styleUrls: ['./MultiDateInput.scss'],\n    standalone: false,\n})\nexport class NovoMultiDateInputElement implements OnInit, ControlValueAccessor {\n  public formattedStartDate: string = '';\n  public formattedEndDate: string = '';\n  private userDefinedFormat: boolean;\n\n  @Input()\n  name: string;\n  @Input()\n  start: Date;\n  @Input()\n  end: Date;\n  @Input()\n  placeholder: string;\n  @Input()\n  format: string = 'shortDate';\n  @Input()\n  allowInvalidDate: boolean = false;\n  @Input()\n  weekStart: number = 0;\n  @Input()\n  chipsCount: number = 5;\n  @Output()\n  blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n  @Output()\n  focusEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\n\n  /** Element for the panel containing the autocomplete options. */\n  @ViewChild(NovoOverlayTemplateComponent)\n  overlay: NovoOverlayTemplateComponent;\n\n  @Output() change = new EventEmitter();\n  @Output() blur = new EventEmitter();\n  @Output() focus = new EventEmitter();\n\n  private _value: Date[] = [];\n  private _disabled: boolean = false;\n  private notShown: any = {};\n\n  @Input() get value(): Date[] {\n    return this._value;\n  }\n  set value(value) {\n    if (this.value !== value) {\n      this._value = value;\n      this.onChangeCallback(this._value);\n    }\n  }\n\n  // Disabled State\n  @Input()\n  @HostBinding('class.disabled')\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = !!value;\n  }\n\n  constructor(\n    public element: ElementRef,\n    public labels: NovoLabelService,\n    private cdr: ChangeDetectorRef,\n    public dateFormatService: DateFormatService,\n  ) {\n    this.placeholder = this.labels.dateFormatString().toUpperCase() || this.labels.dateFormatPlaceholder;\n  }\n\n  ngOnInit() {\n    this.userDefinedFormat = this.format ? !this.format.match(/^(DD\\/MM\\/YYYY|MM\\/DD\\/YYYY)$/g) : false;\n  }\n\n  formatter(value) {\n    const [dateTimeValue, formatted] = this.dateFormatService.parseString(value, false, 'date');\n    return formatted;\n  }\n\n  /** BEGIN: Convenient Panel Methods. */\n  openPanel(): void {\n    if (!this.disabled) {\n      this.panelOpen ? this.overlay.closePanel() : this.overlay.openPanel();\n    }\n  }\n\n  closePanel(): void {\n    this.overlay && this.overlay.closePanel();\n  }\n\n  get panelOpen(): boolean {\n    return this.overlay && this.overlay.panelOpen;\n  }\n  /** END: Convenient Panel Methods. */\n\n  _handleKeydown(event: KeyboardEvent): void {\n    if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n      this.closePanel();\n      event.stopPropagation();\n    }\n  }\n\n  _handleBlur(event: FocusEvent): void {\n    this.blurEvent.emit(event);\n  }\n\n  _handleFocus(event: FocusEvent): void {\n    this.openPanel();\n    this.focusEvent.emit(event);\n  }\n\n  remove(event: any, date: Date) {\n    const current = new Set(this.value);\n    if (current.has(date)) {\n      current.delete(date);\n    }\n    this.value = [...current];\n  }\n\n  writeValue(value: any): void {\n    this.value = value;\n    this.cdr.markForCheck();\n  }\n\n  setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeCallback = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouchedCallback = fn;\n  }\n\n  private onChangeCallback = (_: any) => {\n    // placeholder\n  };\n\n  private onTouchedCallback = () => {\n    // placeholder\n  };\n\n  /**\n   * This method closes the panel, and if a value is specified, also sets the associated\n   * control to that value. It will also mark the control as dirty if this interaction\n   * stemmed from the user.\n   */\n  public setValueAndClose(event: Date[] = []): void {\n    if (event) {\n      this.value = event;\n      this.change.emit(this.value);\n    }\n  }\n\n  /**\n   * Clear any previous selected option and emit a selection change event for this option\n   */\n  public clearValue() {\n    this.value = [];\n    this.change.emit(this.value);\n  }\n\n  public get hasValue() {\n    return !Helpers.isEmpty(this.value);\n  }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// Vendor\nimport { IMaskModule } from 'angular-imask';\nimport { NovoPipesModule } from 'novo-elements/pipes';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCalendarModule } from 'novo-elements/elements/calendar';\nimport { NovoChipsModule } from 'novo-elements/elements/chips';\nimport { NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoDatePickerElement } from './DatePicker';\nimport { NovoDatePickerInputElement } from './DatePickerInput';\nimport { NovoDateRangeInputElement } from './DateRangeInput';\nimport { NovoMultiDateInputElement } from './MultiDateInput';\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    NovoButtonModule,\n    NovoPipesModule,\n    NovoOverlayModule,\n    IMaskModule,\n    NovoIconModule,\n    NovoChipsModule,\n    NovoCalendarModule,\n  ],\n  declarations: [NovoDatePickerElement, NovoDatePickerInputElement, NovoDateRangeInputElement, NovoMultiDateInputElement],\n  exports: [NovoDatePickerElement, NovoDatePickerInputElement, NovoDateRangeInputElement, NovoMultiDateInputElement],\n})\nexport class NovoDatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","__decorate","DATE_VALUE_ACCESSOR","i2","i5","i7.NovoDatePickerElement","i4","i6"],"mappings":"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"}