{"version":3,"file":"time-input.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/time-input/time-input.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/time-input/time-input.module.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, HostListener, inject, Input, Renderer2 } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { SbbInput } from '@sbb-esta/angular/input';\n\nconst REGEX_PATTERN = /[0-9]{3,4}/;\nconst REGEX_GROUPS_WITH_COLON = /([0-9]{1,2})[.:,\\-;_hH]?([0-9]{1,2})?/;\nconst REGEX_GROUPS_WO_COLON = /([0-9]{1,2})([0-9]{2})/;\nconst PLACEHOLDER_DEFAULT = 'HH:MM';\n\n@Directive({\n  selector: 'input[sbbTimeInput]',\n  exportAs: 'sbbTimeInput',\n  host: {\n    class: 'sbb-time-input sbb-input-element',\n    type: 'text',\n    pattern: '[0-9]*',\n    inputmode: 'numeric',\n    '[attr.placeholder]': 'placeholder',\n  },\n})\nexport class SbbTimeInput {\n  private _elementRef = inject(ElementRef);\n  private _renderer = inject(Renderer2);\n  private _control = inject(NgControl, { self: true, optional: true })!;\n  private _input = inject(SbbInput, { optional: true })!;\n\n  /** The placeholder value display in the input field (defaults to HH:MM) */\n  @Input()\n  get placeholder(): string {\n    return this._placeholder;\n  }\n  set placeholder(value: string) {\n    this._placeholder = value ?? PLACEHOLDER_DEFAULT;\n\n    if (this._input) {\n      this._input.placeholder = this._placeholder;\n    }\n  }\n  private _placeholder: string;\n\n  private _document = inject(DOCUMENT);\n\n  constructor(...args: unknown[]);\n  constructor() {\n    this.placeholder = PLACEHOLDER_DEFAULT;\n  }\n\n  /** Method that sets the input value in 'hours:mins' format on blur event */\n  @HostListener('blur', ['$event'])\n  _onBlur(event: Event) {\n    const value = (event.target as HTMLInputElement).value;\n    const regGroups = this._validateInput(value);\n    if (!regGroups || regGroups.length <= 2) {\n      return;\n    }\n\n    const hours = this._parseHour(regGroups[1]);\n    const mins = this._parseMinute(regGroups[2]);\n    if (this._control && this._control.control) {\n      this._control.control.setValue(`${hours}:${mins}`);\n    } else {\n      this._renderer.setProperty(this._elementRef.nativeElement, 'value', `${hours}:${mins}`);\n      const event = this._document.createEvent('Event');\n      event.initEvent('input', true, true);\n      this._elementRef.nativeElement.dispatchEvent(event);\n    }\n  }\n\n  private _validateInput(value: string) {\n    if (REGEX_PATTERN.test(value)) {\n      // special case: the input is 3 or 4 digits; split like so: AB?:CD\n      return value.match(REGEX_GROUPS_WO_COLON);\n    } else if (value) {\n      return value.match(REGEX_GROUPS_WITH_COLON);\n    } else {\n      return null;\n    }\n  }\n\n  private _parseHour(regGroupHours: string) {\n    return regGroupHours.length > 1 ? regGroupHours : '0' + regGroupHours;\n  }\n\n  private _parseMinute(regGroupMin: string) {\n    regGroupMin = regGroupMin || '00';\n    return regGroupMin.length > 1 ? regGroupMin : '0' + regGroupMin;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { SbbCommonModule } from '@sbb-esta/angular/core';\n\nimport { SbbTimeInput } from './time-input';\n\n@NgModule({\n  imports: [SbbCommonModule, SbbTimeInput],\n  exports: [SbbTimeInput],\n})\nexport class SbbTimeInputModule {}\n"],"names":["REGEX_PATTERN","REGEX_GROUPS_WITH_COLON","REGEX_GROUPS_WO_COLON","PLACEHOLDER_DEFAULT","SbbTimeInput","_elementRef","inject","ElementRef","_renderer","Renderer2","_control","NgControl","self","optional","_input","SbbInput","placeholder","_placeholder","value","_document","DOCUMENT","constructor","_onBlur","event","target","regGroups","_validateInput","length","hours","_parseHour","mins","_parseMinute","control","setValue","setProperty","nativeElement","createEvent","initEvent","dispatchEvent","test","match","regGroupHours","regGroupMin","deps","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","host","attributes","listeners","properties","classAttribute","exportAs","ngImport","decorators","args","class","type","pattern","inputmode","Input","HostListener","SbbTimeInputModule","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","imports","SbbCommonModule","ɵinj","ɵɵngDeclareInjector","exports"],"mappings":"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"}