{"version":3,"file":"novo-elements-elements-time-picker.mjs","sources":["../../../projects/novo-elements/src/elements/time-picker/TimePicker.ts","../../../projects/novo-elements/src/elements/time-picker/TimePickerInput.ts","../../../projects/novo-elements/src/elements/time-picker/TimePicker.module.ts","../../../projects/novo-elements/src/elements/time-picker/novo-elements-elements-time-picker.ts"],"sourcesContent":["// NG2\nimport {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { isValid } from 'date-fns';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { DateUtil, Helpers } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst TIME_PICKER_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoTimePickerElement),\n  multi: true,\n};\n\nexport enum TIME_VALUE_FORMATS {\n  iso8601 = 'iso8601',\n  Date = 'Date',\n}\n\n@Component({\n    selector: 'novo-time-picker',\n    providers: [TIME_PICKER_VALUE_ACCESSOR],\n    template: `\n    <div class=\"increments\" *ngIf=\"!analog\">\n      <novo-list class=\"increments--hours\" direction=\"vertical\" data-automation-id=\"novo-time-picker-hours\">\n        <novo-list-item\n          class=\"increments--hour\"\n          *ngFor=\"let increment of HOURS\"\n          (click)=\"setHours($event, increment, true)\"\n          [class.active]=\"increment == activeHour\"\n          [attr.data-automation-id]=\"increment\"\n        >\n          <item-content>{{ increment }}</item-content>\n        </novo-list-item>\n      </novo-list>\n      <novo-list class=\"increments--minutes\" direction=\"vertical\" data-automation-id=\"novo-time-picker-minutes\">\n        <novo-list-item\n          class=\"increments--minute\"\n          *ngFor=\"let increment of MINUTES\"\n          (click)=\"setMinutes($event, increment, true)\"\n          [class.active]=\"increment == activeMinute\"\n          [attr.data-automation-id]=\"increment\"\n        >\n          <item-content>{{ increment }}</item-content>\n        </novo-list-item>\n      </novo-list>\n      <novo-list class=\"increments--meridians\" direction=\"vertical\" *ngIf=\"!military\" data-automation-id=\"novo-time-picker-meridians\">\n        <novo-list-item\n          class=\"increments--meridian\"\n          *ngFor=\"let period of MERIDIANS\"\n          (click)=\"setPeriod($event, period, true)\"\n          [class.active]=\"meridian == period\"\n          [attr.data-automation-id]=\"period\"\n        >\n          <item-content>{{ period }}</item-content>\n        </novo-list-item>\n      </novo-list>\n    </div>\n    <div class=\"analog\" *ngIf=\"analog\">\n      <div class=\"analog--inner\">\n        <div class=\"analog--face\">\n          <span class=\"analog--center\"></span>\n          <span class=\"analog--hand--hours\" [ngClass]=\"hoursClass\">\n            <span class=\"analog--ball\"></span>\n          </span>\n          <span class=\"analog--hand--minutes\" [ngClass]=\"minutesClass\">\n            <span class=\"analog--ball\" [ngClass]=\"{ between: inBetween }\"></span>\n          </span>\n        </div>\n        <div class=\"analog--hours\">\n          <span\n            *ngFor=\"let hour of HOURS\"\n            class=\"analog--hour\"\n            [ngClass]=\"{ active: activeHour == hour }\"\n            (click)=\"setHours($event, hour, true)\"\n            [attr.data-automation-id]=\"hour\"\n            >{{ hour }}</span\n          >\n        </div>\n        <div class=\"analog--minutes\">\n          <span\n            *ngFor=\"let minute of MINUTES\"\n            class=\"analog--minute\"\n            [ngClass]=\"{ active: activeMinute == minute }\"\n            (click)=\"setMinutes($event, minute, true)\"\n            [attr.data-automation-id]=\"minute\"\n            >{{ minute }}</span\n          >\n        </div>\n      </div>\n    </div>\n    <div class=\"save-cancel-buttons\" *ngIf=\"hasButtons\">\n      <novo-button\n          class=\"cancel-button\"\n          theme=\"dialogue\"\n          size=\"small\"\n          (click)=\"cancel()\">{{ labels.cancel }}</novo-button>\n      <novo-button\n          class=\"save-button\"\n          theme=\"primary\"\n          color=\"primary\"\n          size=\"small\"\n          [disabled]=\"saveDisabled\"\n          (click)=\"save()\">{{ labels.save }}</novo-button>\n    </div>\n  `,\n    styleUrls: ['./TimePicker.scss'],\n    host: {\n        class: 'novo-time-picker',\n        '[class.military]': 'military',\n    },\n    standalone: false,\n})\nexport class NovoTimePickerElement implements ControlValueAccessor, OnInit, OnChanges {\n  @Input()\n  military: boolean = false;\n  @Input()\n  analog: boolean = false;\n  @Input()\n  inline: boolean = false;\n  @Input()\n  step: number = 1;\n  @Input()\n  hasButtons: boolean = false;\n  @Input()\n  saveDisabled: boolean = false;\n\n  @Output()\n  onSelect: EventEmitter<any> = new EventEmitter();\n  @Output()\n  onSave: EventEmitter<any> = new EventEmitter();\n  @Output()\n  onCancel: EventEmitter<any> = new EventEmitter();\n\n  hours: number = 12;\n  minutes: number = 0;\n  value: any = null;\n  meridian: string;\n  inBetween: boolean;\n  hoursClass: string;\n  activeHour;\n  minutesClass: string;\n  activeMinute;\n  increments: string[] = [];\n  selected: string;\n  MERIDIANS: Array<string> = ['am', 'pm'];\n  MINUTES: Array<string> = ['05', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55', '00'];\n  HOURS: Array<string> = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'];\n  model: any;\n  _onChange: Function = () => {};\n  _onTouched: Function = () => {};\n\n  flatten(arr) {\n    return Array.prototype.concat(...arr);\n  }\n\n  constructor(\n    public element: ElementRef,\n    public labels: NovoLabelService,\n    protected cdr: ChangeDetectorRef,\n  ) {}\n\n  ngOnInit() {\n    if (this.military) {\n      this.HOURS = ['0', ...this.HOURS, '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23'];\n    }\n    if (!this.analog) {\n      const mins = Array.from(Array(60 / this.step).keys()).map((i) => i * this.step);\n      this.MINUTES = mins.map((m) => `${m}`.padStart(2, '0'));\n    }\n    this.ngOnChanges();\n  }\n\n  ngOnChanges(changes?: SimpleChanges) {\n    if (this.model) {\n      this.init(this.model, false);\n    } else {\n      this.selected = null;\n      this.init(new Date(), false);\n    }\n  }\n\n  init(value, dispatch) {\n    const _value = new Date(value);\n    let hours: string | number = _value.getHours();\n    let minutes: string | number = _value.getMinutes();\n\n    if (!this.military) {\n      this.meridian = hours >= 12 ? 'pm' : 'am';\n      hours = hours % 12;\n      hours = hours || 12;\n    }\n    minutes = minutes < 10 ? `0${minutes}` : minutes;\n\n    this.setHours(null, hours, dispatch);\n    this.setMinutes(null, minutes, dispatch);\n    this.checkBetween(minutes);\n  }\n\n  checkBetween(value) {\n    this.inBetween = this.MINUTES.indexOf(String(value)) < 0;\n  }\n\n  setValue(event, value) {\n    Helpers.swallowEvent(event);\n    this.selected = value;\n    const [time, meridian] = value.split(' ');\n    const [hours, minutes] = time.split(':');\n    this.hours = hours;\n    this.minutes = minutes;\n    this.meridian = meridian;\n\n    this.dispatchChange();\n  }\n\n  setHours(event, hours, dispatch) {\n    Helpers.swallowEvent(event);\n    this.hours = hours;\n    this.hoursClass = `hour-${hours}`;\n    this.activeHour = hours;\n\n    if (dispatch) {\n      this.dispatchChange();\n    }\n  }\n\n  setMinutes(event, minutes, dispatch) {\n    Helpers.swallowEvent(event);\n    this.minutes = minutes;\n    this.minutesClass = `min-${minutes}`;\n    this.activeMinute = minutes;\n    this.checkBetween(minutes);\n\n    if (dispatch) {\n      this.dispatchChange();\n    }\n  }\n\n  setPeriod(event, period, dispatch) {\n    Helpers.swallowEvent(event);\n    this.meridian = period;\n\n    if (dispatch) {\n      this.dispatchChange();\n    }\n  }\n\n  dispatchChange() {\n    let hours = Number(this.hours);\n\n    if (!this.military) {\n      hours = this.meridian.toLowerCase() === 'pm' ? hours + 12 : hours;\n\n      // Special case for 12\n      if (this.meridian.toLowerCase() === 'pm' && hours === 24) {\n        hours = 12;\n      } else if (this.meridian.toLowerCase() === 'am' && hours === 12) {\n        hours = 0;\n      }\n    }\n\n    const value = new Date();\n    value.setHours(hours);\n    value.setMinutes(this.minutes);\n    value.setSeconds(0);\n    this.value = `${this.hours}:${this.minutes} ${this.meridian}`;\n    this.onSelect.next({\n      hours,\n      minutes: this.minutes,\n      meridian: this.meridian,\n      date: value,\n      text: this.value,\n    });\n    this._onChange(value);\n  }\n\n  // ValueAccessor Functions\n  writeValue(model: any): void {\n    this.model = model;\n    if (Helpers.isDate(model)) {\n      this.init(model, false);\n    }\n    if (Helpers.isString(model)) {\n      const time = this.military ? model : this.convertTime12to24(model);\n      const date = DateUtil.parse(`${DateUtil.format(Date.now(), 'YYYY-MM-DD')}T${time}`);\n      if (isValid(date)) {\n        this.init(date, false);\n      }\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  convertTime12to24(time12h: string) {\n    const pmFormat = this.labels.timeFormatPM.toUpperCase();\n\n    const [time, modifier] = time12h.split(' ');\n    // eslint-disable-next-line prefer-const\n    let [hours, minutes] = time.split(':');\n    if (hours === '12') {\n      hours = '00';\n    }\n    if (['PM', pmFormat].includes(modifier)) {\n      hours = `${parseInt(hours, 10) + 12}`.padStart(2, '0');\n    }\n    return `${hours}:${minutes}`;\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// 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 DATE_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoTimePickerInputElement),\n  multi: true,\n};\n\n@Component({\n    selector: 'novo-time-picker-input',\n    providers: [DATE_VALUE_ACCESSOR],\n    template: `\n    <input\n      type=\"text\"\n      [name]=\"name\"\n      [(ngModel)]=\"value\"\n      [imask]=\"maskOptions\"\n      [unmask]=\"'typed'\"\n      [placeholder]=\"placeholder\"\n      (change)=\"_handleChange($event)\"\n      (focus)=\"_handleFocus($event)\"\n      (keydown)=\"_handleKeydown($event)\"\n      (input)=\"_handleInput($event)\"\n      (blur)=\"_handleBlur($event)\"\n      #input\n      data-automation-id=\"time-input\"\n      [disabled]=\"disabled\"\n    />\n    <i *ngIf=\"!hasValue\" (click)=\"openPanel()\" class=\"bhi-clock\"></i> <i *ngIf=\"hasValue\" (click)=\"clearValue()\" class=\"bhi-times\"></i>\n    <novo-overlay-template [parent]=\"overlayElement\" position=\"above-below\">\n      <novo-time-picker\n        [ngClass]=\"{ 'hasButtons': hasButtons }\"\n        [hasButtons]=\"hasButtons\"\n        inline=\"true\"\n        [analog]=\"analog\"\n        (onSelect)=\"setValue($event)\"\n        [ngModel]=\"value\"\n        [military]=\"military\"\n        [saveDisabled]=\"saveDisabled\"\n        (onCancel)=\"cancel()\"\n        (onSave)=\"save()\"\n      ></novo-time-picker>\n    </novo-overlay-template>\n  `,\n    styleUrls: ['./TimePickerInput.scss'],\n    standalone: false,\n})\nexport class NovoTimePickerInputElement implements OnInit, OnChanges, ControlValueAccessor {\n  public value: any;\n\n  /** View -> model callback called when value changes */\n  _onChange: (value: any) => void = () => {};\n  /** View -> model callback called when autocomplete has been touched */\n  _onTouched = () => {};\n\n  @Input()\n  name: string;\n  @Input()\n  placeholder: string;\n  @Input()\n  military: boolean = false;\n  @Input()\n  maskOptions: any;\n  @HostBinding('class.disabled')\n  @Input()\n  disabled: boolean = false;\n  @Input()\n  hasButtons: boolean = false;\n  @Input()\n  saveDisabled: boolean = false;\n  @Input()\n  overlayOnElement: ElementRef;\n\n  /**\n   * @deprecated don't use\n   */\n  @Input()\n  analog: boolean = false;\n\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\n  /** Element for the panel containing the autocomplete options. */\n  @ViewChild(NovoOverlayTemplateComponent)\n  overlay: NovoOverlayTemplateComponent;\n  @ViewChild('input')\n  input: HTMLInputElement;\n\n  constructor(\n    public element: ElementRef,\n    public labels: NovoLabelService,\n    public dateFormatService: DateFormatService,\n    protected _changeDetectorRef: ChangeDetectorRef,\n  ) {}\n\n  ngOnInit(): void {\n    this.initFormatOptions();\n  }\n\n  ngOnChanges(changes?: SimpleChanges) {\n    // set icon and styling\n    if (Object.keys(changes).some((key) => ['military', 'maskOptions'].includes(key))) {\n      this.initFormatOptions();\n    }\n  }\n\n  initFormatOptions() {\n    this.placeholder = this.military ? this.labels.timeFormatPlaceholder24Hour : this.labels.timeFormatPlaceholderAM;\n    this.maskOptions = this.dateFormatService.getTimeMask(this.military);\n  }\n\n  /** BEGIN: Convenient Panel Methods. */\n  openPanel(): void {\n    if (!this.overlay.panelOpen) {\n      this.overlay.openPanel();\n      const hour = new Date().getHours();\n      Promise.resolve(null).then(() => this.scrollToIndex(hour * 4));\n    }\n  }\n\n  closePanel(): void {\n    this.overlay.closePanel();\n  }\n\n  get panelOpen(): boolean {\n    return this.overlay && this.overlay.panelOpen;\n  }\n\n  get overlayElement(): ElementRef {\n    return this.overlayOnElement || this.element;\n  }\n\n  /** END: Convenient Panel Methods. */\n\n  _handleKeydown(event: KeyboardEvent): void {\n    const input = event.target as HTMLInputElement;\n    const hour: string = input.value.slice(0, 2);\n    if ((event.key === Key.Escape || event.key === Key.Enter) && this.panelOpen) {\n      this.closePanel();\n      event.stopPropagation();\n      event.stopImmediatePropagation();\n      if (this.hourOneFormatRequired(hour)) {\n        input.value = `01:${input.value.slice(3, input.value.length)}`;\n      }\n    } else if (event.key === Key.Tab && input.selectionStart <= 2 && this.hourOneFormatRequired(hour)) {\n      event.preventDefault();\n      event.stopPropagation();\n      event.stopImmediatePropagation();\n      input.value = `01:${input.value.slice(3, input.value.length)}`;\n      input.setSelectionRange(3, 3);\n    } else if (event.key === Key.Backspace && input.selectionStart === input.value.length) {\n      input.value = `${input.value.slice(0, 5)} xx`;\n    } else if (event.key === Key.Tab && this.panelOpen) {\n      this.closePanel();\n      event.stopPropagation();\n      event.stopImmediatePropagation();\n    } else if (event.key === Key.ArrowRight && input.selectionStart >= 2 && this.hourOneFormatRequired(hour)) {\n      input.value = `01:${input.value.slice(3, input.value.length)}`;\n      input.setSelectionRange(2, 2);\n    }\n  }\n\n  _handleInput(event: KeyboardEvent): void {\n    if (document.activeElement === event.target) {\n      const text = (event.target as HTMLInputElement).value;\n      const hour = text.slice(0, 2);\n      this.openPanel();\n      if ((this.military && Number(text[0]) > 2) || (!this.military && Number(text[0]) > 1)) {\n        event.preventDefault();\n        (event.target as HTMLInputElement).value = `0${text}`;\n      }\n      if (!this.military) {\n        const test = text.substr(5, 4).replace(/x/g, '').trim().slice(0, 2);\n        const timePeriod = this.maskOptions.blocks.aa.enum.find((it) => it[0] === test[0]);\n        if (timePeriod) {\n          (event.target as HTMLInputElement).value = `${(event.target as HTMLInputElement).value.slice(0, 5)} ${timePeriod}`;\n        }\n        if ((event.target as HTMLInputElement).selectionStart >= 3 && this.hourOneFormatRequired(hour)) {\n          (event.target as HTMLInputElement).value = `01:${(event.target as HTMLInputElement).value.slice(\n            3,\n            (event.target as HTMLInputElement).value.length,\n          )}`;\n        }\n      }\n    }\n  }\n\n  _handleChange(event: Event): void {\n    const text = (event?.target as HTMLInputElement)?.value;\n    this.formatTime(text);\n    this.changeEvent.emit();\n  }\n\n  _handleBlur(event: FocusEvent): void {\n    const text = (event.target as HTMLInputElement).value;\n    const hour: string = text.slice(0, 2);\n    if (!this.military) {\n      const test = text.substr(5, 4).replace(/x/g, '').trim().slice(0, 2);\n      const timePeriod = this.maskOptions.blocks.aa.enum.find((it) => it[0] === test[0]);\n      if (this.hourOneFormatRequired(hour)) {\n        (event.target as HTMLInputElement).value = `01:${text.slice(3, text.length)}`;\n      }\n      if (!timePeriod) {\n        (event.target as HTMLInputElement).value = `${(event.target as HTMLInputElement).value.slice(0, 5)} xx`;\n      }\n    }\n  }\n\n  _handleFocus(event: FocusEvent): void {\n    this.openPanel();\n    this.focusEvent.emit(event);\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  public dispatchOnChange(newValue?: any, skip: boolean = false) {\n    if (newValue !== this.value) {\n      this._onChange(newValue);\n      this.changeEvent.emit(newValue);\n      !skip && this.writeValue(newValue);\n    }\n  }\n\n  private _setTriggerValue(value: any): void {\n    if (value instanceof Date && this.value instanceof Date) {\n      value = new Date(value.setFullYear(this.value.getFullYear(), this.value.getMonth(), this.value.getDate()));\n    }\n    this.value = value;\n    this._changeDetectorRef.markForCheck();\n  }\n\n  public setValueAndClose(event: any | null): void {\n    this.setValue(event);\n    this.closePanel();\n  }\n\n  public setValue(event: any | null): void {\n    if (event && event.date) {\n      this.dispatchOnChange(event.date);\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.dispatchOnChange(null);\n  }\n\n  public get hasValue() {\n    return !Helpers.isEmpty(this.value);\n  }\n\n  public scrollToIndex(index: number) {\n    const element = this.overlay.overlayRef.overlayElement;\n    const list = element.querySelector('.increments');\n    const items = list.querySelectorAll('novo-list-item');\n    const item = items[index];\n    if (item) {\n      list.scrollTop = (item as HTMLElement).offsetTop;\n    }\n  }\n\n  hourOneFormatRequired(hourInput: string): boolean {\n    return hourInput === 'h1' || hourInput === '1h';\n  }\n\n  protected formatTime(value: string) {\n    try {\n      const [dateTimeValue, formatted] = this.dateFormatService.parseString(value, this.military, 'time');\n      if (!isNaN(dateTimeValue.getUTCDate())) {\n        const dt = new Date(dateTimeValue);\n        this.dispatchOnChange(dt);\n      } else {\n        this.dispatchOnChange(null);\n      }\n    } catch (err) {}\n  }\n\n  save(): void {\n    this.onSave.emit();\n  }\n\n  cancel(): void {\n    this.onCancel.emit();\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';\n// APP\nimport { NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoListModule } from 'novo-elements/elements/list';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoTimePickerElement } from './TimePicker';\nimport { NovoTimePickerInputElement } from './TimePickerInput';\n\n@NgModule({\n  imports: [CommonModule, FormsModule, IMaskModule, NovoOverlayModule, NovoListModule, NovoButtonModule],\n  declarations: [NovoTimePickerElement, NovoTimePickerInputElement],\n  exports: [NovoTimePickerElement, NovoTimePickerInputElement],\n})\nexport class NovoTimePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i4","i6.NovoTimePickerElement"],"mappings":"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"}