{"version":3,"file":"novo-elements-elements-field.mjs","sources":["../../../projects/novo-elements/src/elements/field/error/error.ts","../../../projects/novo-elements/src/elements/field/error/error.html","../../../projects/novo-elements/src/elements/field/field-control.ts","../../../projects/novo-elements/src/elements/field/hint/hint.ts","../../../projects/novo-elements/src/elements/field/hint/hint.html","../../../projects/novo-elements/src/elements/field/field.ts","../../../projects/novo-elements/src/elements/field/field.html","../../../projects/novo-elements/src/elements/field/fieldset.ts","../../../projects/novo-elements/src/elements/field/fieldset.html","../../../projects/novo-elements/src/elements/field/formats/base-format.ts","../../../projects/novo-elements/src/elements/field/formats/date-format.ts","../../../projects/novo-elements/src/elements/field/formats/date-range-format.ts","../../../projects/novo-elements/src/elements/field/formats/date-time-format.ts","../../../projects/novo-elements/src/elements/field/formats/time-format.ts","../../../projects/novo-elements/src/elements/field/input.ts","../../../projects/novo-elements/src/elements/field/picker.directive.ts","../../../projects/novo-elements/src/elements/field/toggle/picker-toggle.component.ts","../../../projects/novo-elements/src/elements/field/toggle/picker-toggle.component.html","../../../projects/novo-elements/src/elements/field/field.module.ts","../../../projects/novo-elements/src/elements/field/novo-elements-elements-field.ts"],"sourcesContent":["// NG2\nimport { Component, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n    selector: 'novo-error',\n    templateUrl: './error.html',\n    styleUrls: ['./error.scss'],\n    standalone: false,\n})\nexport class NovoErrorElement implements OnInit {\n  constructor(private sanitizer: DomSanitizer) {}\n\n  ngOnInit(): any {}\n}\n","<ng-content></ng-content>","import { Directive } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\n/** An interface which allows a control to work inside of a `NovoField`. */\n@Directive()\nexport abstract class NovoFieldControl<T> {\n  /** The value of the control. */\n  value: T | null;\n\n  /** The last key pressed. */\n  lastKeyValue: string | null;\n\n  /** The last cursor position. */\n  lastCaretPosition: number | null;\n\n  /**\n   * Stream that emits whenever the state of the control changes such that the parent `NovoField`\n   * needs to run change detection.\n   */\n  readonly stateChanges: Observable<void>;\n\n  /** The element ID for this control. */\n  readonly id: string;\n\n  /** The placeholder for this control. */\n  readonly placeholder: string;\n\n  /** Gets the NgControl for this control. */\n  readonly ngControl: NgControl | null;\n\n  /** Whether the control is focused. */\n  readonly focused: boolean;\n\n  /** Whether the control is empty. */\n  readonly empty: boolean;\n\n  /** Whether the `NovoField` label should try to float. */\n  // readonly shouldLabelFloat: boolean;\n  // readonly shouldFieldHaveUnderline: boolean;\n\n  /** Whether the control is required. */\n  readonly required: boolean;\n\n  /** Whether the control is disabled. */\n  readonly disabled: boolean;\n\n  /** Whether the control is in an error state. */\n  readonly errorState: boolean;\n\n  /** Whether the control can have multiple values. */\n  readonly multiple?: boolean;\n  /**\n   * An optional name for the control type that can be used to distinguish `novo-form-field` elements\n   * based on their control type. The form field will add a class,\n   * `novo-form-field-type-{{controlType}}` to its root element.\n   */\n  readonly controlType?: string;\n\n  /**\n   * Whether the input is currently in an autofilled state. If property is not present on the\n   * control it is assumed to be false.\n   */\n  readonly autofilled?: boolean;\n\n  /** Sets the list of element IDs that currently describe this control. */\n  abstract setDescribedByIds(ids: string[]): void;\n\n  /** Handles a click on the control's container. */\n  abstract onContainerClick(event: MouseEvent): void;\n\n  abstract focus(options?: FocusOptions): void;\n}\n","// NG2\nimport { Component, Input, OnInit } from '@angular/core';\n\nlet nextUniqueId = 0;\n@Component({\n    selector: 'novo-hint',\n    templateUrl: './hint.html',\n    styleUrls: ['./hint.scss'],\n    host: {\n        class: 'novo-hint',\n        '[class.novo-field-hint-end]': 'align === \"end\"',\n        '[attr.id]': 'id',\n        // Remove align attribute to prevent it from interfering with layout.\n        '[attr.align]': 'null',\n    },\n    standalone: false,\n})\nexport class NovoHintElement implements OnInit {\n  /** Whether to align the hint label at the start or end of the line. */\n  @Input() align: 'start' | 'end' = 'start';\n\n  /** Unique ID for the hint. Used for the aria-describedby on the form field control. */\n  @Input() id: string = `novo-hint-${nextUniqueId++}`;\n\n  ngOnInit(): any {}\n}\n","<ng-content></ng-content>","// NG2\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  InjectionToken,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewChild,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { fromEvent, Subject, Subscription } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport { NovoLabel, HasOverlay, NOVO_OVERLAY_CONTAINER } from 'novo-elements/elements/common';\nimport { NovoErrorElement } from './error/error';\nimport { NovoFieldControl } from './field-control';\nimport { NovoHintElement } from './hint/hint';\n\n@Directive({\n    selector: '[novoPrefix]',\n    standalone: false,\n})\nexport class NovoFieldPrefixDirective {}\n@Directive({\n    selector: '[novoSuffix]',\n    standalone: false,\n})\nexport class NovoFieldSuffixDirective {}\n\nconst NOVO_INPUT_UNDERLINED_TYPES = [\n  'text',\n  'date',\n  'time',\n  'datetime-local',\n  'password',\n  'email',\n  'tel',\n  'select',\n  'textarea',\n  'number',\n  'novo-chip-list',\n  'chip-list',\n];\nexport const NOVO_FORM_FIELD = new InjectionToken<NovoFieldElement>('NovoFormField');\n\n@Component({\n    selector: 'novo-field',\n    templateUrl: './field.html',\n    styleUrls: ['./field.scss', './field-standard.scss', './field-fill.scss', './field-outline.scss', './field-list.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'novo-field',\n        '[class.novo-field-layout-horizontal]': 'layout==\"horizontal\"',\n        '[class.novo-field-layout-vertical]': 'layout==\"vertical\"',\n        '[class.novo-field-appearance-standard]': 'appearance == \"standard\"',\n        '[class.novo-field-appearance-fill]': 'appearance == \"fill\"',\n        '[class.novo-field-appearance-outline]': 'appearance == \"outline\"',\n        '[class.novo-field-appearance-list]': 'appearance == \"list\"',\n        '[class.novo-field-appearance-underlined]': '_isUnderlinedInput()',\n        '[class.novo-field-invalid]': '_control.errorState',\n        '[class.novo-field-has-label]': '_hasLabel()',\n        '[class.novo-field-no-label]': '!_hasLabel()',\n        '[class.novo-field-disabled]': '_control.disabled',\n        '[class.novo-field-autofilled]': '_control.autofilled',\n        '[class.novo-focused]': '_control.focused',\n        '[class.ng-untouched]': '_shouldForward(\"untouched\")',\n        '[class.ng-touched]': '_shouldForward(\"touched\")',\n        '[class.ng-pristine]': '_shouldForward(\"pristine\")',\n        '[class.ng-dirty]': '_shouldForward(\"dirty\")',\n        '[class.ng-valid]': '_shouldForward(\"valid\")',\n        '[class.ng-invalid]': '_shouldForward(\"invalid\")',\n        '[class.ng-pending]': '_shouldForward(\"pending\")',\n    },\n    providers: [{ provide: NOVO_FORM_FIELD, useExisting: NovoFieldElement }],\n    standalone: false,\n})\nexport class NovoFieldElement implements AfterContentInit, OnDestroy {\n  private _labelClicks = Subscription.EMPTY;\n\n  @ViewChild('inputContainer') _inputContainerRef: ElementRef;\n\n  @ContentChild(NovoLabel) _labelElement: NovoLabel;\n  @ContentChildren(NovoHintElement) _hintElements: QueryList<NovoHintElement>;\n  @ContentChildren(NovoErrorElement) _errorElements: QueryList<NovoErrorElement>;\n  @ContentChildren(NovoFieldPrefixDirective) _prefixElements: QueryList<NovoFieldPrefixDirective>;\n  @ContentChildren(NovoFieldSuffixDirective) _suffixElements: QueryList<NovoFieldSuffixDirective>;\n  @ContentChildren(NOVO_OVERLAY_CONTAINER) _overlayElements: QueryList<HasOverlay>;\n\n  @ContentChild(NovoFieldControl) _control: NovoFieldControl<any>;\n\n  @Input() layout: 'horizontal' | 'vertical' = 'vertical';\n  @Input() appearance: 'standard' | 'outline' | 'fill' | 'list' = 'standard';\n  /**\n   * When this field has a picker element, express which element it should be parented to\n   */\n  @Input() customOverlayOrigin: ElementRef;\n\n  @Input()\n  width: string;\n\n  private _destroyed = new Subject<void>();\n\n  @Output() valueChanges: EventEmitter<any> = new EventEmitter();\n  @Output() stateChanges: EventEmitter<void> = new EventEmitter();\n\n  constructor(public _elementRef: ElementRef, private _changeDetectorRef: ChangeDetectorRef) {}\n  /**\n   * Gets an ElementRef for the element that a overlay attached to the form-field should be\n   * positioned relative to.\n   */\n  getConnectedOverlayOrigin(): ElementRef {\n    return this.customOverlayOrigin || this._inputContainerRef || this._elementRef;\n  }\n\n  ngAfterContentInit(): any {\n    this._validateControlChild();\n\n    const control = this._control;\n    if (control.controlType) {\n      this._elementRef.nativeElement.classList.add(`novo-field-type-${control.controlType}`);\n      this._elementRef.nativeElement.setAttribute('data-control-type', control.controlType);\n    }\n\n    if (control.id) {\n      this._elementRef.nativeElement.setAttribute('data-control-id', control.id);\n    }\n\n    if (control.ngControl?.name) {\n      this._elementRef.nativeElement.setAttribute('data-control-key', control.ngControl.name);\n    }\n\n    // Subscribe to changes in the child control state in order to update the form field UI.\n    control.stateChanges.pipe(startWith(null)).subscribe(() => {\n      this.stateChanges.next();\n      this._changeDetectorRef.markForCheck();\n    });\n\n    // Run change detection if the value changes.\n    if (control.ngControl && control.ngControl.valueChanges) {\n      control.ngControl.valueChanges.pipe(takeUntil(this._destroyed)).subscribe((v) => {\n        this.valueChanges.next(v);\n        this._changeDetectorRef.markForCheck();\n      });\n    }\n\n    if (this._hasLabel()) {\n      this._labelClicks = fromEvent(this._labelElement.nativeElement, 'click').subscribe(() => this._control.focus());\n    }\n  }\n\n  ngOnDestroy() {\n    this._destroyed.next();\n    this._destroyed.complete();\n    this._labelClicks.unsubscribe();\n  }\n\n  /** Throws an error if the form field's control is missing. */\n  protected _validateControlChild() {\n    if (!this._control) {\n      throw new Error('Missing Novo Control');\n    }\n  }\n\n  public blurEventIsInField(blurEvt: FocusEvent): boolean {\n    return this._elementRef.nativeElement.contains(blurEvt.relatedTarget) || this._overlayElements.some(hasOverlay => hasOverlay.overlay?.isBlurRecipient(blurEvt));\n  }\n\n  @HostListener('click', ['$event'])\n  _handleContainerClick(evt: MouseEvent) {\n    this._control.onContainerClick(evt);\n  }\n\n  _isUnderlinedInput(): boolean {\n    return NOVO_INPUT_UNDERLINED_TYPES.includes(this._control.controlType);\n  }\n\n  /** Determines whether to display hints or errors. */\n  _getDisplayedMessages(): 'error' | 'hint' {\n    return this._errorElements && this._errorElements.length > 0 && this._control.errorState ? 'error' : 'hint';\n  }\n\n  /** Determines whether a class from the NgControl should be forwarded to the host element. */\n  _shouldForward(prop: keyof NgControl): boolean {\n    const ngControl = this._control ? this._control.ngControl : null;\n    return ngControl && ngControl[prop];\n  }\n\n  _hasLabel() {\n    return !!this._labelElement;\n  }\n}\n","<div class=\"novo-field-label\">\n  <ng-content select=\"novo-label\"></ng-content>\n</div>\n<div class=\"novo-field-input\" [style.width]=\"width\" #inputContainer>\n  <div class=\"novo-field-prefix\">\n    <ng-content select=\"[novoPrefix]\"></ng-content>\n  </div>\n  <div class=\"novo-field-infix\">\n    <ng-content></ng-content>\n  </div>\n  <div class=\"novo-field-suffix\">\n    <ng-content select=\"[novoSuffix]\"></ng-content>\n  </div>\n</div>\n<div class=\"novo-field-messages\" [ngSwitch]=\"_getDisplayedMessages()\">\n  <div class=\"novo-field-hint-wrapper\" *ngSwitchCase=\"'error'\">\n    <ng-content select=\"novo-error\"></ng-content>\n  </div>\n  <div class=\"novo-field-hint-wrapper\" *ngSwitchCase=\"'hint'\">\n    <ng-content select=\"novo-hint\"></ng-content>\n    <ng-content select=\"novo-hint[align=end]\"></ng-content>\n  </div>\n</div>","// NG2\nimport { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, HostBinding, Input, QueryList } from '@angular/core';\nimport { BooleanInput } from 'novo-elements/utils';\nimport { NovoFieldElement } from './field';\n\n@Component({\n    selector: 'novo-fields',\n    templateUrl: './fieldset.html',\n    styleUrls: ['./fieldset.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'novo-field',\n        '[class.novo-fieldset-appearance-standard]': 'appearance == \"standard\"',\n        '[class.novo-fieldset-appearance-fill]': 'appearance == \"fill\"',\n        '[class.novo-fieldset-appearance-outline]': 'appearance == \"outline\"',\n        '[class.novo-fieldset-appearance-list]': 'appearance == \"list\"',\n    },\n    standalone: false,\n})\nexport class NovoFieldsElement implements AfterContentInit {\n  @ContentChildren(NovoFieldElement)\n  _fields: QueryList<NovoFieldElement>;\n\n  _layout: 'horizontal' | 'vertical' = 'horizontal';\n  @Input() get layout(): any {\n    return this._layout;\n  }\n  set layout(value) {\n    if (this._layout !== value) {\n      this._layout = value;\n      this._updateFieldLayout();\n    }\n  }\n\n  _appearance: 'standard' | 'outline' | 'fill' | 'list' = 'standard';\n  @Input() get appearance(): any {\n    return this._appearance;\n  }\n  set appearance(value) {\n    if (this._appearance !== value) {\n      this._appearance = value;\n      this._updateFieldAppearance();\n    }\n  }\n\n  @HostBinding('class.full-width')\n  @Input()\n  @BooleanInput()\n  fullWidth: boolean = false;\n\n  ngAfterContentInit(): any {\n    this._updateFieldLayout();\n    this._updateFieldAppearance();\n  }\n\n  private _updateFieldLayout(): void {\n    if (this._fields) {\n      this._fields.forEach((field) => {\n        field.layout = this.layout;\n      });\n    }\n  }\n\n  private _updateFieldAppearance(): void {\n    if (this._fields) {\n      this._fields.forEach((field) => {\n        field.appearance = this.appearance;\n      });\n    }\n  }\n}\n","<ng-content></ng-content>","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nexport const NOVO_INPUT_FORMAT = new InjectionToken<NovoInputFormat>('NovoInputFormat');\n\nexport interface NovoInputFormat<T = any> extends ControlValueAccessor {\n  valueChange: EventEmitter<any>;\n  formatValue(value: T): string;\n}\n\nexport enum DATE_FORMATS {\n  DATE = 'date',\n  ISO8601 = 'iso8601',\n  STRING = 'string',\n  YEAR_MONTH_DAY = 'yyyy-mm-dd',\n}\n","import { Directive, EventEmitter, forwardRef, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IMaskDirective } from 'angular-imask';\nimport { isValid } from 'date-fns';\nimport { MaskedRange } from 'imask';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { DateParseOptions, DateUtil } from 'novo-elements/utils';\nimport { DATE_FORMATS, NOVO_INPUT_FORMAT } from './base-format';\n\nexport const DATEFORMAT_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoDateFormatDirective),\n  multi: true,\n};\n\n@Directive({\n    selector: 'input[dateFormat]',\n    host: {\n        class: 'novo-date-format',\n    },\n    providers: [DATEFORMAT_VALUE_ACCESSOR, { provide: NOVO_INPUT_FORMAT, useExisting: NovoDateFormatDirective }],\n    standalone: false,\n})\nexport class NovoDateFormatDirective extends IMaskDirective<any> {\n  valueChange: EventEmitter<any> = new EventEmitter();\n\n  @Input() dateFormat: DATE_FORMATS = DATE_FORMATS.DATE;\n\n  constructor(private labels: NovoLabelService, private dateFormatService: DateFormatService) {\n    super();\n    this.unmask = 'typed' as unknown as false; // typing is to work around angular-imask bug\n    this.imask = {\n      mask: Date,\n      pattern: this.dateFormatService.dateFormatAsImaskPattern,\n      overwrite: true,\n      autofix: true,\n      lazy: false,\n      min: new Date(1900, 0, 1),\n      max: new Date(2100, 0, 1),\n      prepare: (str) => str.toUpperCase(),\n      format: (date) => this.formatValue(date, { userDateFormat: this.labels.dateFormatString()}),\n      parse: (str) => DateUtil.parse(str, { userDateFormat: this.labels.dateFormatString().toUpperCase() }),\n      blocks: {\n        d: {\n          mask: MaskedRange,\n          placeholderChar: 'D',\n          from: 1,\n          to: 31,\n          maxLength: 2,\n        },\n        m: {\n          mask: MaskedRange,\n          placeholderChar: 'M',\n          from: 1,\n          to: 12,\n          maxLength: 2,\n        },\n        Y: {\n          mask: MaskedRange,\n          placeholderChar: 'Y',\n          from: 1900,\n          to: 9999,\n        },\n      },\n    };\n  }\n\n  normalize(value: string) {\n    const pattern = this.labels.dateFormatString().toUpperCase();\n    if (!value) {\n      return '';\n    }\n    return DateUtil.format(DateUtil.parse(value, { userDateFormat: this.labels.dateFormatString()}), pattern);\n  }\n\n  formatAsIso(date: Date): string {\n    if (date && isValid(date)) {\n      return date.toISOString().slice(0, 10);\n    }\n    return null;\n  }\n\n  formatYearMonthDay(date: Date): string {\n    if (date && isValid(date)) {\n       return DateUtil.format(date, 'YYYY-MM-DD');\n    }\n    return null;\n  }\n\n  formatValue(value: any, options?: DateParseOptions): string {\n    if (value == null) {\n      return '';\n    }\n    const dateFormat = this.labels.dateFormatString().toUpperCase();\n    const date = DateUtil.parse(value, options);\n    if (isValid(date)) {\n      return DateUtil.format(date, dateFormat);\n    }\n    return this.normalize(value);\n  }\n\n  writeValue(value: any) {\n    const initialValue = this['_initialValue'];\n    if (initialValue != null && value === initialValue) {\n      // This value has already been formatted from the first call to writeValue, simply use it.\n      super.writeValue(initialValue);\n    } else {\n      super.writeValue(this.formatValue(value));\n      this.valueChange.emit(value);\n    }\n  }\n\n  registerOnChange(fn: (_: any) => void): void {\n    this.onChange = (date: any) => {\n      let formatted = date;\n      switch (this.dateFormat) {\n        case DATE_FORMATS.ISO8601:\n          formatted = this.formatAsIso(date);\n          break;\n        case DATE_FORMATS.STRING:\n          formatted = this.formatValue(date);\n          break;\n        case DATE_FORMATS.YEAR_MONTH_DAY:\n          formatted = this.formatYearMonthDay(date);\n          break;\n        default:\n          formatted = date;\n          break;\n      }\n      this.valueChange.emit(date);\n      fn(formatted);\n    };\n  }\n}\n","import { Directive, EventEmitter, forwardRef, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IMaskDirective } from 'angular-imask';\nimport { isValid } from 'date-fns';\nimport { MaskedRange } from 'imask';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { DateParseOptions, DateUtil } from 'novo-elements/utils';\nimport { DATE_FORMATS, NOVO_INPUT_FORMAT } from './base-format';\n\nexport const DATERANGEFORMAT_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoDateRangeFormatDirective),\n  multi: true,\n};\n\ntype DateRange = {\n  startDate: Date;\n  endDate: Date;\n};\n\n@Directive({\n    selector: 'input[dateRangeFormat]',\n    host: {\n        class: 'novo-date-range-format',\n    },\n    providers: [DATERANGEFORMAT_VALUE_ACCESSOR, { provide: NOVO_INPUT_FORMAT, useExisting: NovoDateRangeFormatDirective }],\n    standalone: false,\n})\nexport class NovoDateRangeFormatDirective extends IMaskDirective<any> {\n  valueChange: EventEmitter<any> = new EventEmitter();\n\n  @Input() dateRangeFormat: DATE_FORMATS = DATE_FORMATS.DATE;\n\n  constructor(private labels: NovoLabelService, private dateFormat: DateFormatService) {\n    super();\n    this.unmask = false;\n    this.imask = {\n      mask: `${this.dateFormat.dateFormatAsImaskPattern} - ${this.dateFormat.dateFormatAsImaskPattern}`,\n      overwrite: true,\n      autofix: true,\n      lazy: false,\n      blocks: {\n        d: {\n          mask: MaskedRange,\n          placeholderChar: 'D',\n          from: 1,\n          to: 31,\n          maxLength: 2,\n        },\n        m: {\n          mask: MaskedRange,\n          placeholderChar: 'M',\n          from: 1,\n          to: 12,\n          maxLength: 2,\n        },\n        Y: {\n          mask: MaskedRange,\n          placeholderChar: 'Y',\n          from: 1900,\n          to: 9999,\n        },\n      },\n    };\n  }\n\n  normalize(value: string | Date, options?: DateParseOptions) {\n    const pattern = this.labels.dateFormatString().toUpperCase();\n    return DateUtil.format(value ? DateUtil.parse(value, options) : null, pattern);\n  }\n\n  formatAsIso(value: DateRange): string {\n    if (!value) {\n      return '';\n    }\n    const { startDate, endDate } = value;\n    if (startDate && isValid(startDate) && endDate && isValid(endDate)) {\n      const startIso = startDate.toISOString().slice(0, 10);\n      const endIso = endDate.toISOString().slice(0, 10);\n      return `${startIso}/${endIso}`;\n    }\n    return null;\n  }\n\n  formatValue(value: DateRange): string {\n    if (!value) {\n      return '';\n    }\n    const { startDate, endDate } = value;\n    return `${this.formatDate(startDate)} - ${this.formatDate(endDate)}`;\n  }\n\n  formatDate(source: Date | string) {\n    const dateRangeFormat = this.labels.dateFormatString().toUpperCase();\n    const date = DateUtil.parse(source);\n    if (isValid(date)) {\n      return DateUtil.format(date, dateRangeFormat);\n    }\n    return this.normalize(source);\n  }\n\n  writeValue(value: any) {\n    if (this['_initialValue'] && value === this['_initialValue']) {\n      // if this call is coming from the super class, skip through.\n      // If we ever wanted to reduce the need for this hack/workaround, we could refactor\n      // IMaskDirective to exist as a child portion of DateRangeFormatDirective.\n      super.writeValue(value);\n      return;\n    }\n    const formattedValue = this.formatValue(value);\n    if (formattedValue !== this.maskValue) {\n      super.writeValue(this.formatValue(value));\n      this.onChange(this.formatValue(value));\n      this.valueChange.emit(value);\n    }\n  }\n\n  registerOnChange(fn: (_: any) => void): void {\n    this.onChange = (input: any) => {\n      if (this.validate(input)) {\n        const dates = this.extractDatesFromInput(input);\n        let formatted: DateRange | string = dates;\n        switch (this.dateRangeFormat) {\n          case DATE_FORMATS.ISO8601:\n            formatted = this.formatAsIso(dates);\n            break;\n          case DATE_FORMATS.STRING:\n            formatted = this.formatValue(dates);\n            break;\n          default:\n            formatted = dates;\n            break;\n        }\n        this.valueChange.emit(dates);\n        fn(formatted);\n      }\n    };\n  }\n\n  extractDatesFromInput(value) {\n    const [startStr, endStr] = value.split(' - ');\n    const startDate = DateUtil.parse(startStr, { userDateFormat: this.labels.dateFormatString()});\n    const endDate = DateUtil.parse(endStr, { userDateFormat: this.labels.dateFormatString()});\n    return { startDate, endDate };\n  }\n\n  validate(dateStr: string) {\n    const { startDate, endDate } = this.extractDatesFromInput(dateStr);\n    return isValid(startDate) && isValid(endDate);\n  }\n}\n","import { Directive, EventEmitter, Input, OnChanges, SimpleChanges, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IMaskDirective } from 'angular-imask';\nimport { isValid } from 'date-fns';\nimport { MaskedEnum, MaskedRange } from 'imask';\nimport { DateFormatService, NovoLabelService } from 'novo-elements/services';\nimport { DateParseOptions, DateUtil, Key } from 'novo-elements/utils';\nimport { DATE_FORMATS, NOVO_INPUT_FORMAT, NovoInputFormat } from './base-format';\n\nexport const DATETIMEFORMAT_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoDateTimeFormatDirective),\n  multi: true,\n};\n\n@Directive({\n    selector: 'input[dateTimeFormat]',\n    host: {\n        class: 'novo-date-time-format',\n        '(input)': '_checkInput($event)',\n        '(blur)': '_handleBlur($event)',\n        '(keydown)': '_handleKeydown($event)',\n    },\n    providers: [DATETIMEFORMAT_VALUE_ACCESSOR, { provide: NOVO_INPUT_FORMAT, useExisting: NovoDateTimeFormatDirective }],\n    standalone: false,\n})\nexport class NovoDateTimeFormatDirective extends IMaskDirective<any> implements NovoInputFormat, OnChanges {\n  valueChange: EventEmitter<any> = new EventEmitter();\n\n  @Input() military: boolean = false;\n  @Input() dateTimeFormat: DATE_FORMATS = DATE_FORMATS.DATE;\n\n  constructor(private labels: NovoLabelService, private dateFormat: DateFormatService) {\n    super();\n    this.initFormatOptions();\n  }\n\n  initFormatOptions() {\n    const amFormat = this.labels.timeFormatAM.toUpperCase();\n    const pmFormat = this.labels.timeFormatPM.toUpperCase();\n    this.unmask = 'typed' as unknown as false; // typing is to work around angular-imask bug\n    let pattern = `${this.dateFormat.dateFormatAsImaskPattern}, HH:mm`;\n    if (!this.military) {\n      pattern += ' aa';\n    }\n    this.imask = {\n      mask: Date,\n      pattern,\n      overwrite: true,\n      autofix: true,\n      lazy: false,\n      min: new Date(1900, 0, 1),\n      max: new Date(2100, 0, 1),\n      prepare: (str) => str.toUpperCase(),\n      format: (date) => this.formatValue(date, { userDateFormat: this.labels.dateFormatString() }),\n      parse: (str) => DateUtil.parse(str, { userDateFormat: this.labels.dateFormatString().toUpperCase() }),\n      blocks: {\n        d: {\n          mask: MaskedRange,\n          placeholderChar: 'D',\n          from: 1,\n          to: 31,\n          maxLength: 2,\n        },\n        m: {\n          mask: MaskedRange,\n          placeholderChar: 'M',\n          from: 1,\n          to: 12,\n          maxLength: 2,\n        },\n        Y: {\n          mask: MaskedRange,\n          placeholderChar: 'Y',\n          from: 1900,\n          to: 9999,\n        },\n        HH: {\n          mask: MaskedRange,\n          placeholderChar: '-',\n          maxLength: 2,\n          from: 0,\n          to: 23,\n        },\n        hh: {\n          mask: MaskedRange,\n          placeholderChar: '-',\n          maxLength: 2,\n          from: 1,\n          to: 12,\n        },\n        mm: {\n          mask: MaskedRange,\n          placeholderChar: '-',\n          maxLength: 2,\n          from: 0,\n          to: 59,\n        },\n        ss: {\n          mask: MaskedRange,\n          placeholderChar: '-',\n          maxLength: 2,\n          from: 0,\n          to: 59,\n        },\n        aa: {\n          mask: MaskedEnum,\n          placeholderChar: '-',\n          enum: ['AM', 'PM', 'am', 'pm', amFormat, pmFormat],\n        },\n      },\n    };\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (Object.keys(changes).some((key) => ['military', 'dateFormat'].includes(key))) {\n      this.initFormatOptions();\n    }\n  }\n\n  _checkInput(event: InputEvent): void {\n    if (document.activeElement === event.target) {\n      const text = (event.target as HTMLInputElement).value;\n      const dateTime =  text.split(', ');\n      const hour = dateTime[1].slice(0, 2);\n      if ((this.military && Number(dateTime[1][0]) > 2) || (!this.military && Number(dateTime[1][0]) > 1)) {\n        event.preventDefault();\n        const value = `0${dateTime[1]}`;\n        (event.target as HTMLInputElement).value = value;\n      }\n      if (!this.military) {\n        const input = dateTime[1].substr(5, 4).replace(/\\-/g, '').trim().slice(0, 2);\n        const timePeriod = this.imask.blocks.aa.enum.find((it) => it[0] === input[0]);\n        if (timePeriod) {\n          (event.target as HTMLInputElement).value = `${dateTime[0]}, ${dateTime[1].slice(0, 5)} ${timePeriod}`;\n        }\n        if ((event.target as HTMLInputElement).selectionStart >= 3 && this.hourOneFormatRequired(hour)) {\n          (event.target as HTMLInputElement).value = `${dateTime[0]}, 01:${(event.target as HTMLInputElement).value.slice(\n            3,\n            (event.target as HTMLInputElement).value.length,\n          )}`;\n        }\n      }\n    }\n  }\n\n  _handleBlur(event: FocusEvent): void {\n    const text = (event.target as HTMLInputElement).value;\n    const dateTime =  text.split(', ');\n    const hour: string = dateTime[1].slice(0, 2);\n    if (!this.military) {\n      const input = dateTime[1].substr(5, 4).replace(/\\-/g, '').trim().slice(0, 2);\n      const timePeriod = this.imask.blocks.aa.enum.find((it) => it[0] === input[0]);\n      if (this.hourOneFormatRequired(hour)) {\n        (event.target as HTMLInputElement).value = `${dateTime[0]}, 01:${dateTime[1].slice(3, dateTime[1].length)}`;\n      }\n      if (!timePeriod) {\n        (event.target as HTMLInputElement).value = `${dateTime[0]}, ${dateTime[1].slice(0, 5)} --`;\n      }\n    }\n  }\n\n  _handleKeydown(event: KeyboardEvent): void {\n    const input = event.target as HTMLInputElement;\n    const dateTime =  input.value.split(', ');\n    const hour: string = dateTime[1].slice(0, 2);\n\n    if (event.key === Key.Backspace && input.selectionStart === dateTime[1].length) {\n      (event.target as HTMLInputElement).value = `${dateTime[1].slice(0, 5)} --`;\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 = `${dateTime[0]}, 01:${dateTime[1].slice(3, dateTime[1].length)}`;\n      input.setSelectionRange(15, 15);\n    } else if (event.key === Key.ArrowRight && input.selectionStart >= 2 && this.hourOneFormatRequired(hour)) {\n      input.value = `${dateTime[0]}, 01:${dateTime[1].slice(3, dateTime[1].length)}`;\n      input.setSelectionRange(14, 14);\n    }\n  }\n\n  normalize(value: string, options?: DateParseOptions) {\n    const pattern = this.labels.dateFormatString().toUpperCase();\n    return DateUtil.format(value ? DateUtil.parse(value, options) : null, pattern);\n  }\n\n  formatAsIso(date: Date): string {\n    if (date && isValid(date)) {\n      return date.toISOString();\n    }\n    return null;\n  }\n\n  convertTime12to24(time12h: string) {\n    const pmFormat = this.labels.timeFormatPM.toUpperCase();\n    const [time, meridian] = 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(meridian)) {\n      hours = `${parseInt(hours, 10) + 12}`.padStart(2, '0');\n    }\n    return `${hours}:${minutes}`;\n  }\n\n  convertTime24to12(time24h: string) {\n    if (time24h.length === 5) {\n      const date = DateUtil.parse(`2020-01-01T${time24h}`);\n      return DateUtil.format(date, 'hh:mm A');\n    }\n    return time24h;\n  }\n\n  formatValue(value: Date | string, options?: DateParseOptions): string {\n    if (value == null) {\n      return '';\n    }\n    // Use `parse` because it keeps dates in locale\n    const date = DateUtil.parse(value, options);\n    if (isValid(date)) {\n      const dateFormat = `${this.labels.dateFormatString().toUpperCase()}, ${this.military ? 'HH:mm' : 'hh:mm A'}`;\n      return DateUtil.format(date, dateFormat);\n    }\n    return this.normalize(value as string, options);\n  }\n\n  writeValue(value: any) {\n    const initialValue = this['_initialValue'];\n    if (initialValue != null && value === initialValue) {\n      // This value has already been formatted from the first call to writeValue, simply use it.\n      super.writeValue(initialValue);\n    } else {\n      super.writeValue(this.formatValue(value));\n      this.valueChange.emit(value);\n    }\n  }\n\n  registerOnChange(fn: (_: any) => void): void {\n    this.onChange = (date: Date) => {\n      let formatted: Date | string;\n      switch (this.dateTimeFormat) {\n        case DATE_FORMATS.ISO8601:\n          formatted = this.formatAsIso(date);\n          break;\n        case DATE_FORMATS.STRING:\n          formatted = this.formatValue(date);\n          break;\n        default:\n          formatted = date;\n          break;\n      }\n      this.valueChange.emit(date);\n      fn(formatted);\n    };\n  }\n\n  hourOneFormatRequired(hourInput: string): boolean {\n    return hourInput === '-1' || hourInput === '1-';\n  }\n\n  get initialValue(): any {\n    return this.maskValue;\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Directive,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnChanges,\n  SimpleChanges,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IMaskDirective } from 'angular-imask';\nimport { isValid } from 'date-fns';\nimport { MaskedEnum, MaskedRange } from 'imask';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { DateUtil, Key } from 'novo-elements/utils';\nimport { NOVO_INPUT_FORMAT, NovoInputFormat } from './base-format';\n\nexport const TIMEFORMAT_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoTimeFormatDirective),\n  multi: true,\n};\n\nexport enum TIME_FORMATS {\n  DATE = 'date',\n  ISO8601 = 'iso8601',\n  STRING = 'string',\n}\n\n@Directive({\n    selector: 'input[timeFormat]',\n    host: {\n        class: 'novo-time-format',\n        '(input)': '_checkInput($event)',\n        '(blur)': '_handleBlur($event)',\n        '(keydown)': '_handleKeydown($event)',\n    },\n    providers: [TIMEFORMAT_VALUE_ACCESSOR, { provide: NOVO_INPUT_FORMAT, useExisting: NovoTimeFormatDirective }],\n    standalone: false,\n})\nexport class NovoTimeFormatDirective extends IMaskDirective<any> implements NovoInputFormat, AfterViewInit, OnChanges {\n  valueChange: EventEmitter<any> = new EventEmitter();\n\n  @Input() military: boolean = false;\n  @Input() timeFormat: TIME_FORMATS = TIME_FORMATS.DATE;\n\n  constructor(private labels: NovoLabelService, private cdr: ChangeDetectorRef) {\n    super();\n    this.initFormatOptions();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (Object.keys(changes).some((key) => ['military', 'timeFormat'].includes(key))) {\n      this.initFormatOptions();\n    }\n  }\n\n  initFormatOptions() {\n    const amFormat = this.labels.timeFormatAM.toUpperCase();\n    const pmFormat = this.labels.timeFormatPM.toUpperCase();\n    this.unmask = 'typed' as unknown as false; // typing is to work around angular-imask bug\n    this.imask = {\n      mask: Date,\n      pattern: this.military ? 'HH:mm' : 'hh:mm aa',\n      overwrite: true,\n      autofix: true,\n      lazy: false,\n      min: new Date(1970, 0, 1),\n      max: new Date(2100, 0, 1),\n      prepare: (str) => str.toUpperCase(),\n      format: (value) => this.formatValue(value),\n      parse: (str) => {\n        const time = this.convertTime12to24(str);\n        return DateUtil.parse(`${DateUtil.format(Date.now(), 'YYYY-MM-DD')}T${time}`);\n      },\n      blocks: {\n        HH: {\n          mask: MaskedRange,\n          placeholderChar: '-',\n          maxLength: 2,\n          from: 0,\n          to: 23,\n        },\n        hh: {\n          mask: MaskedRange,\n          placeholderChar: '-',\n          maxLength: 2,\n          from: 1,\n          to: 12,\n        },\n        mm: {\n          mask: MaskedRange,\n          placeholderChar: '-',\n          maxLength: 2,\n          from: 0,\n          to: 59,\n        },\n        aa: {\n          mask: MaskedEnum,\n          placeholderChar: '-',\n          enum: ['AM', 'PM', 'am', 'pm', amFormat, pmFormat],\n        },\n      },\n    };\n  }\n\n  _checkInput(event: InputEvent): void {\n    if (document.activeElement === event.target) {\n      const text = (event.target as HTMLInputElement).value;\n      const hour = text.slice(0, 2);\n      if ((this.military && Number(text[0]) > 2) || (!this.military && Number(text[0]) > 1)) {\n        event.preventDefault();\n        const value = `0${text}`;\n        (event.target as HTMLInputElement).value = value;\n      }\n      if (!this.military) {\n        const input = text.substr(5, 4).replace(/\\-/g, '').trim().slice(0, 2);\n        const timePeriod = this.imask.blocks.aa.enum.find((it) => it[0] === input[0]);\n        if (timePeriod) {\n          (event.target as HTMLInputElement).value = `${text.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  _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 input = text.substr(5, 4).replace(/\\-/g, '').trim().slice(0, 2);\n      const timePeriod = this.imask.blocks.aa.enum.find((it) => it[0] === input[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 = `${text.slice(0, 5)} --`;\n      }\n    }\n  }\n\n  _handleKeydown(event: KeyboardEvent): void {\n    const input = event.target as HTMLInputElement;\n    const hour: string = input.value.slice(0, 2);\n\n    if (event.key === Key.Backspace && input.selectionStart === input.value.length) {\n      (event.target as HTMLInputElement).value = `${input.value.slice(0, 5)} --`;\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.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  normalize(value: string) {\n    if (this.military) {\n      return this.convertTime12to24(value);\n    }\n    return this.convertTime24to12(value);\n  }\n\n  formatValue(value: any): string {\n    const date = DateUtil.parse(value);\n    if (isValid(date)) {\n      const pattern = this.military ? 'HH:mm' : 'hh:mm A';\n      return DateUtil.format(date, pattern);\n    }\n    return this.normalize(value);\n  }\n\n  formatAsIso(date: Date): string {\n    if (date && isValid(date)) {\n      return DateUtil.format(date, 'HH:mm');\n    }\n    return null;\n  }\n\n  convertTime12to24(time12h: string) {\n    const pmFormat = this.labels.timeFormatPM.toUpperCase();\n    const [time, meridian] = 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(meridian)) {\n      hours = `${parseInt(hours, 10) + 12}`.padStart(2, '0');\n    }\n    return `${hours}:${minutes}`;\n  }\n\n  convertTime24to12(time24h: string) {\n    if (time24h.length === 5) {\n      const date = DateUtil.parse(`2020-01-01T${time24h}`);\n      return DateUtil.format(date, 'hh:mm A');\n    }\n    return time24h;\n  }\n\n  writeValue(value: any) {\n    super.writeValue(this.formatValue(value));\n    this.valueChange.emit(value);\n  }\n\n  registerOnChange(fn: (date: any) => void): void {\n    this.onChange = (date: any) => {\n      let formatted = date;\n      switch (this.timeFormat) {\n        case TIME_FORMATS.ISO8601:\n          formatted = this.formatAsIso(date);\n          break;\n        case TIME_FORMATS.STRING:\n          formatted = this.formatValue(date);\n          break;\n        default:\n          formatted = date;\n          break;\n      }\n      this.valueChange.emit(date);\n      fn(formatted);\n    };\n  }\n\n  hourOneFormatRequired(hourInput: string): boolean {\n    return hourInput === '-1' || hourInput === '1-';\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { getSupportedInputTypes, Platform } from '@angular/cdk/platform';\nimport { AutofillMonitor } from '@angular/cdk/text-field';\nimport {\n  AfterViewInit,\n  Directive,\n  DoCheck,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  Output,\n  Self,\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { NovoFieldControl } from './field-control';\n\n/**\n * This token is used to inject the object whose value should be set into `NovoInput`. If none is\n * provided, the native `HTMLInputElement` is used. Directives like `MatDatepickerInput` can provide\n * themselves for this token, in order to make `NovoInput` delegate the getting and setting of the\n * value to them.\n */\nexport const NOVO_INPUT_VALUE_ACCESSOR = new InjectionToken<{ value: any }>('NOVO_INPUT_VALUE_ACCESSOR');\n\n// Invalid input type. Using one of these will throw an NovoInputUnsupportedTypeError.\nconst NOVO_INPUT_INVALID_TYPES = ['button', 'file', 'hidden', 'image', 'radio', 'reset', 'submit'];\n\nlet nextUniqueId = 0;\n\n// Boilerplate for applying mixins to NovoInput.\nclass NovoInputBase {\n  constructor(\n    public _parentForm: NgForm,\n    public _parentFormGroup: FormGroupDirective,\n    /** @docs-private */\n    public ngControl: NgControl,\n  ) {}\n}\n\n/** Directive that allows a native input to work inside a `NovoField`. */\n@Directive({\n    selector: 'input[novoInput], textarea[novoInput], select[novoInput]',\n    host: {\n        class: 'novo-input-element',\n        '[attr.id]': 'id',\n        '[attr.placeholder]': 'placeholder',\n        '[disabled]': 'disabled',\n        '[required]': 'required',\n        '[attr.readonly]': 'readonly && !_isNativeSelect || null',\n        '[attr.aria-invalid]': 'errorState',\n        '[attr.aria-required]': 'required.toString()',\n        '[attr.autocomplete]': \"'off'\",\n    },\n    providers: [{ provide: NovoFieldControl, useExisting: NovoInput }],\n    standalone: false,\n})\nexport class NovoInput extends NovoInputBase implements NovoFieldControl<any>, OnChanges, OnDestroy, AfterViewInit, DoCheck {\n  protected _uid = `novo-input-${nextUniqueId++}`;\n  protected _previousNativeValue: any;\n  private _inputValueAccessor: { value: any };\n  /** The aria-describedby attribute on the input for improved a11y. */\n  @HostBinding('attr.aria-describedby') _ariaDescribedby: string;\n\n  /** Whether the component is being rendered on the server. */\n  readonly _isServer: boolean;\n\n  /** Whether the component is a native html select. */\n  readonly _isNativeSelect: boolean;\n\n  /** Whether the component is a textarea. */\n  readonly _isTextarea: boolean;\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  focused: boolean = false;\n\n  errorState: boolean = false;\n\n  /** @docs-private Implemented as part of NovoFieldControl. */\n  lastKeyValue: string = null;\n  /** @docs-private Implemented as part of NovoFieldControl.*/\n  lastCaretPosition: number | null;\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  readonly stateChanges: Subject<void> = new Subject<void>();\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  controlType: string = 'novo-input';\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  autofilled = false;\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  @Input()\n  get disabled(): boolean {\n    if (this.ngControl && this.ngControl.disabled !== null) {\n      return this.ngControl.disabled;\n    }\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n\n    // Browsers may not fire the blur event if the input is disabled too quickly.\n    // Reset from here to ensure that the element doesn't become stuck.\n    if (this.focused) {\n      this.focused = false;\n      this.stateChanges.next();\n    }\n  }\n  protected _disabled = false;\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  @Input()\n  get id(): string {\n    return this._id;\n  }\n  set id(value: string) {\n    this._id = value || this._uid;\n  }\n  protected _id: string;\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  @Input() placeholder: string;\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  @Input()\n  get required(): boolean {\n    return this._required;\n  }\n  set required(value: boolean) {\n    this._required = coerceBooleanProperty(value);\n  }\n  protected _required = false;\n\n  /** Input type of the element. */\n  @Input()\n  get type(): string {\n    return this._type;\n  }\n  set type(value: string) {\n    this._type = value || 'text';\n    this._validateType();\n\n    // When using Angular inputs, developers are no longer able to set the properties on the native\n    // input element. To ensure that bindings for `type` work, we need to sync the setter\n    // with the native property. Textarea elements don't support the type property or attribute.\n    if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {\n      (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\n    }\n  }\n  protected _type = 'text';\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  @Input()\n  get value(): string {\n    return this._inputValueAccessor.value;\n  }\n  set value(value: string) {\n    if (value !== this.value) {\n      this._inputValueAccessor.value = value;\n      this.stateChanges.next();\n    }\n  }\n\n  /** Whether the element is readonly. */\n  @Input()\n  get readonly(): boolean {\n    return this._readonly;\n  }\n  set readonly(value: boolean) {\n    this._readonly = coerceBooleanProperty(value);\n  }\n  private _readonly = false;\n\n  protected _neverEmptyInputTypes = ['date', 'datetime', 'datetime-local', 'month', 'time', 'week'].filter((t) =>\n    getSupportedInputTypes().has(t),\n  );\n\n  constructor(\n    protected _elementRef: ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>,\n    protected _platform: Platform,\n    /** @docs-private */\n    @Optional() @Self() public ngControl: NgControl,\n    @Optional() _parentForm: NgForm,\n    @Optional() _parentFormGroup: FormGroupDirective,\n    @Optional() @Self() @Inject(NOVO_INPUT_VALUE_ACCESSOR) inputValueAccessor: any,\n    private _autofillMonitor: AutofillMonitor,\n    ngZone: NgZone,\n  ) {\n    super(_parentForm, _parentFormGroup, ngControl);\n\n    const element = this._elementRef.nativeElement;\n    const nodeName = element.nodeName.toLowerCase();\n\n    // If no input value accessor was explicitly specified, use the element as the input value\n    // accessor.\n    this._inputValueAccessor = inputValueAccessor || element;\n\n    this._previousNativeValue = this.value;\n\n    // Force setter to be called in case id was not specified.\n    this.id = this.id;\n\n    // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n    // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n    // exists on iOS, we only bother to install the listener on iOS.\n    if (_platform.IOS) {\n      ngZone.runOutsideAngular(() => {\n        _elementRef.nativeElement.addEventListener('keyup', (event: Event) => {\n          const el = event.target as HTMLInputElement;\n          if (!el.value && !el.selectionStart && !el.selectionEnd) {\n            // Note: Just setting `0, 0` doesn't fix the issue. Setting\n            // `1, 1` fixes it for the first time that you type text and\n            // then hold delete. Toggling to `1, 1` and then back to\n            // `0, 0` seems to completely fix it.\n            el.setSelectionRange(1, 1);\n            el.setSelectionRange(0, 0);\n          }\n        });\n      });\n    }\n\n    this._isServer = !this._platform.isBrowser;\n    this._isNativeSelect = nodeName === 'select';\n    this._isTextarea = nodeName === 'textarea';\n\n    this.controlType = (this._elementRef.nativeElement as HTMLInputElement).type;\n    if (this._isNativeSelect) {\n      this.controlType = (element as HTMLSelectElement).multiple ? 'select-multiple' : 'select';\n    } else if (this._isTextarea) {\n      this.controlType = 'textarea';\n    }\n  }\n\n  ngAfterViewInit() {\n    if (this._platform.isBrowser) {\n      this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe((event) => {\n        this.autofilled = event.isAutofilled;\n        this.stateChanges.next();\n      });\n    }\n  }\n\n  ngOnChanges() {\n    this.stateChanges.next();\n  }\n\n  ngOnDestroy() {\n    this.stateChanges.complete();\n\n    if (this._platform.isBrowser) {\n      this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n    }\n  }\n\n  ngDoCheck() {\n    // We need to dirty-check the native element's value, because there are some cases where\n    // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n    // updating the value using `emitEvent: false`).\n    this._dirtyCheckNativeValue();\n  }\n\n  /** Focuses the input. */\n  focus(options?: FocusOptions): void {\n    this._elementRef.nativeElement.focus(options);\n  }\n\n  // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n  // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n  // ViewEngine they're overwritten.\n  @HostListener('focus', ['true'])\n  @HostListener('blur', ['false'])\n  _focusChanged(isFocused: boolean) {\n    if (isFocused !== this.focused && (!this.readonly || !isFocused)) {\n      this.focused = isFocused;\n      this.stateChanges.next();\n    }\n  }\n\n  // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n  // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n  // ViewEngine they're overwritten.\n  @HostListener('input', ['$event'])\n  _onInput(event: InputEvent) {\n    // Listening to the input event wouldn't be necessary when the input is using the\n    // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n    this.lastKeyValue = event.data;\n    if (this._isTextarea) {\n      this.lastCaretPosition = (this._elementRef.nativeElement as HTMLTextAreaElement).selectionStart;\n    }\n  }\n\n  /** Does some manual dirty checking on the native input `value` property. */\n  protected _dirtyCheckNativeValue() {\n    const newValue = this._elementRef.nativeElement.value;\n\n    if (this._previousNativeValue !== newValue) {\n      this._previousNativeValue = newValue;\n      this.stateChanges.next();\n    }\n  }\n\n  /** Make sure the input is a supported type. */\n  protected _validateType() {\n    if (NOVO_INPUT_INVALID_TYPES.indexOf(this._type) > -1) {\n      throw new Error(`Invalid Input Type: ${this._type}`);\n    }\n  }\n\n  /** Checks whether the input type is one of the types that are never empty. */\n  protected _isNeverEmpty() {\n    return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n  }\n\n  /** Checks whether the input is invalid based on the native validation. */\n  protected _isBadInput() {\n    // The `validity` property won't be present on platform-server.\n    const validity = (this._elementRef.nativeElement as HTMLInputElement).validity;\n    return validity && validity.badInput;\n  }\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  get empty(): boolean {\n    return !this._isNeverEmpty() && !this._elementRef.nativeElement.value && !this._isBadInput() && !this.autofilled;\n  }\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  get shouldLabelFloat(): boolean {\n    if (this._isNativeSelect) {\n      // For a single-selection `<select>`, the label should float when the selected option has\n      // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid\n      // overlapping the label with the options.\n      const selectElement = this._elementRef.nativeElement as HTMLSelectElement;\n      const firstOption: HTMLOptionElement | undefined = selectElement.options[0];\n\n      // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n      // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n      return (\n        this.focused || selectElement.multiple || !this.empty || !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label)\n      );\n    } else {\n      return this.focused || !this.empty;\n    }\n  }\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  setDescribedByIds(ids: string[]) {\n    this._ariaDescribedby = ids.join(' ');\n  }\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  onContainerClick() {\n    // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n    // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n    // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\n    if (!this.focused) {\n      this.focus();\n    }\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_readonly: BooleanInput;\n  static ngAcceptInputType_required: BooleanInput;\n\n  // Accept `any` to avoid conflicts with other directives on `<input>` that may\n  // accept different types.\n  static ngAcceptInputType_value: any;\n  @Output() onSelect = new EventEmitter<unknown>();\n}\n","import { Directive, ElementRef, Inject, Input, Optional, Self } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { NovoInputFormat, NOVO_INPUT_FORMAT } from './formats/base-format';\n\n/** Directive used to connect an input to a MatDatepicker. */\n@Directive({\n    selector: 'input[picker]',\n    host: {\n        class: 'novo-has-picker',\n        '[attr.autocomplete]': 'autocompleteAttribute',\n    },\n    standalone: false,\n})\nexport class NovoPickerDirective {\n  /** The datepicker that this input is associated with. */\n  @Input()\n  set picker(picker: ControlValueAccessor) {\n    if (picker) {\n      this._picker = picker;\n      picker.registerOnChange((value) => this.updateValue(value));\n    }\n  }\n  _picker: ControlValueAccessor;\n  /**\n   * `autocomplete` attribute to be set on the input element.\n   * @docs-private\n   */\n  @Input('autocomplete') autocompleteAttribute: string = 'off';\n\n  constructor(\n    private _elementRef: ElementRef<HTMLInputElement>,\n    @Optional() @Self() @Inject(NOVO_INPUT_FORMAT) private formatter: NovoInputFormat<any>,\n  ) {\n    if (!this.formatter) {\n      console.warn('Picker directive is missing required formatter');\n    }\n    this.formatter?.valueChange.subscribe((value) => {\n      this.updatePicker(value);\n    });\n  }\n\n  updateValue(value: any) {\n    this.formatter.writeValue(value);\n  }\n\n  updatePicker(value: any) {\n    if (this._picker) {\n      this._picker.writeValue(value);\n    }\n  }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  Attribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { BooleanInput } from 'novo-elements/utils';\nimport { NovoButtonElement } from 'novo-elements/elements/button';\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\nimport { NovoFieldElement, NOVO_FORM_FIELD } from '../field';\n\n@Component({\n    selector: 'novo-picker-toggle',\n    templateUrl: 'picker-toggle.component.html',\n    host: {\n        class: 'novo-picker-toggle',\n        // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the\n        // consumer may have provided, while still being able to receive focus.\n        '[attr.tabindex]': 'disabled ? null : -1',\n        '[class.novo-toggle-active]': 'picker && picker.opened',\n        '[class.novo-accent]': 'picker && picker.color === \"accent\"',\n        '[class.novo-warn]': 'picker && picker.color === \"warn\"',\n        '(focus)': '_button.focus()',\n    },\n    exportAs: 'novoPickerToggle',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class NovoPickerToggleElement<T = any> implements AfterContentInit, AfterViewInit, OnChanges, OnDestroy {\n  private _stateChanges = Subscription.EMPTY;\n  private _onDestroy = new Subject<void>();\n\n  /** Datepicker instance that the button will toggle. */\n  @Input('for') picker: T;\n\n  @Input() icon: string;\n\n  /** Tabindex for the toggle. */\n  @Input() tabIndex: number | null;\n\n  /** Screenreader label for the button. */\n  @Input('aria-label') ariaLabel: string;\n\n  /** Determines whether the overlay is triggered on input focus or solely button click. */\n  @Input()\n  @BooleanInput()\n  triggerOnFocus: boolean = false;\n\n  /** An id to select the correct overlay.*/\n  @Input() overlayId: string;\n\n  /** Width to pass to overlay.*/\n  @Input() width: string;\n\n  /** Whether the toggle button is disabled. */\n  @Input()\n  get disabled(): boolean {\n    if (this._disabled === undefined && this.picker) {\n      return (this.picker as any).disabled;\n    }\n\n    return !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n  private _disabled: boolean;\n\n  /** Underlying button element. */\n  @ViewChild('button') _button: NovoButtonElement;\n\n  /** Element for the panel containing the autocomplete options. */\n  @ViewChild(NovoOverlayTemplateComponent)\n  overlay: NovoOverlayTemplateComponent;\n\n  element: ElementRef;\n\n  constructor(\n    private _elementRef: ElementRef,\n    private cdr: ChangeDetectorRef,\n    @Attribute('tabindex') defaultTabIndex: string,\n    @Optional() @Inject(NOVO_FORM_FIELD) private _formField: NovoFieldElement,\n  ) {\n    const parsedTabIndex = Number(defaultTabIndex);\n    this.tabIndex = parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.picker) {\n      this._watchStateChanges();\n    }\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.unsubscribe();\n    this._onDestroy.next();\n    this._onDestroy.complete();\n  }\n\n  ngAfterContentInit() {\n    this._watchStateChanges();\n  }\n\n  ngAfterViewInit() {\n    this.element = this._formField.getConnectedOverlayOrigin() || this._elementRef;\n  }\n\n  checkPanel() {\n    if (this.triggerOnFocus && this._formField._control.focused) {\n      this.openPanel();\n    }\n  }\n\n  togglePanel(event?: Event) {\n    this.cdr.detectChanges();\n    this.overlay.parent = this.element;\n    if (!this.overlay.panelOpen) {\n      this.openPanel(event);\n    } else {\n      this.closePanel(event);\n    }\n  }\n\n  /** BEGIN: Convenient Panel Methods. */\n  openPanel(event?: Event): void {\n    if (!this.overlay.panelOpen) {\n      this.overlay.parent = this.element;\n      this.overlay.openPanel();\n    }\n  }\n\n  closePanel(event?: Event): void {\n    this.overlay.closePanel();\n  }\n\n  get panelOpen(): boolean {\n    return this.overlay && this.overlay.panelOpen;\n  }\n\n  private _watchStateChanges() {\n    this._formField._control?.stateChanges.pipe(takeUntil(this._onDestroy)).subscribe(() => {\n      this.checkPanel();\n    });\n  }\n}\n","<novo-button\n  #button\n  theme=\"icon\"\n  [icon]=\"icon\"\n  [attr.aria-haspopup]=\"'dialog'\"\n  [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n  [disabled]=\"disabled\"\n  (click)=\"togglePanel($event)\"></novo-button>\n\n<novo-overlay-template [width]=\"width\" [parent]=\"element\" position=\"above-below\">\n  <ng-content></ng-content>\n</novo-overlay-template>","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCommonModule, NovoOptionModule, NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoErrorElement } from './error/error';\nimport { NovoFieldElement, NovoFieldPrefixDirective, NovoFieldSuffixDirective } from './field';\nimport { NovoFieldsElement } from './fieldset';\nimport { NovoDateFormatDirective } from './formats/date-format';\nimport { NovoDateRangeFormatDirective } from './formats/date-range-format';\nimport { NovoDateTimeFormatDirective } from './formats/date-time-format';\nimport { NovoTimeFormatDirective } from './formats/time-format';\nimport { NovoHintElement } from './hint/hint';\nimport { NovoInput } from './input';\nimport { NovoPickerDirective } from './picker.directive';\nimport { NovoPickerToggleElement } from './toggle/picker-toggle.component';\n\n@NgModule({\n  imports: [CommonModule, NovoButtonModule, NovoOverlayModule, NovoOptionModule, NovoCommonModule],\n  declarations: [\n    NovoFieldElement,\n    NovoHintElement,\n    NovoErrorElement,\n    NovoInput,\n    NovoFieldPrefixDirective,\n    NovoFieldSuffixDirective,\n    NovoFieldsElement,\n    NovoTimeFormatDirective,\n    NovoDateFormatDirective,\n    NovoDateTimeFormatDirective,\n    NovoDateRangeFormatDirective,\n    NovoPickerToggleElement,\n    NovoPickerDirective,\n  ],\n  exports: [\n    NovoFieldElement,\n    NovoHintElement,\n    NovoErrorElement,\n    NovoInput,\n    NovoFieldPrefixDirective,\n    NovoFieldSuffixDirective,\n    NovoFieldsElement,\n    NovoTimeFormatDirective,\n    NovoDateFormatDirective,\n    NovoDateRangeFormatDirective,\n    NovoDateTimeFormatDirective,\n    NovoPickerToggleElement,\n    NovoPickerDirective,\n  ],\n})\nexport class NovoFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextUniqueId","i1","__decorate","i2"],"mappings":"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"}