{"version":3,"file":"sdcorejs-angular-forms-time.mjs","sources":["../../../projects/sdcorejs-angular/forms/time/src/time-value.ts","../../../projects/sdcorejs-angular/forms/time/src/time-picker.adapter.ts","../../../projects/sdcorejs-angular/forms/time/src/time.component.ts","../../../projects/sdcorejs-angular/forms/time/src/time.component.html","../../../projects/sdcorejs-angular/forms/time/sdcorejs-angular-forms-time.ts"],"sourcesContent":["export interface SdTimeParts {\n  readonly hour: number;\n  readonly minute: number;\n}\n\nexport interface SdTimeConstraints {\n  readonly min?: string | null;\n  readonly max?: string | null;\n  /** Minute increment. Non-positive and non-finite values disable step validation. */\n  readonly step?: number | null;\n}\n\nexport type SdTimeValidationError = 'time' | 'min' | 'max' | 'step';\n\nconst TIME_PATTERN = /^([01]?\\d|2[0-3]):([0-5]\\d)$/;\n\n/** Parses a time-only string without constructing a Date or applying a timezone. */\nexport function sdParseTime(value: unknown): SdTimeParts | null {\n  if (typeof value !== 'string') return null;\n  const match = TIME_PATTERN.exec(value.trim());\n  if (!match) return null;\n  return { hour: Number(match[1]), minute: Number(match[2]) };\n}\n\n/** Converts a valid time-only value to the canonical `HH:mm` representation. */\nexport function sdNormalizeTime(value: unknown): string | null {\n  const parsed = sdParseTime(value);\n  if (!parsed) return null;\n  return `${String(parsed.hour).padStart(2, '0')}:${String(parsed.minute).padStart(2, '0')}`;\n}\n\n/** Returns minutes since midnight for ordering and range validation. */\nexport function sdTimeToMinutes(value: unknown): number | null {\n  const parsed = sdParseTime(value);\n  return parsed ? parsed.hour * 60 + parsed.minute : null;\n}\n\n/** Validates syntax, inclusive boundaries, and minute-step alignment. */\nexport function sdValidateTime(value: unknown, constraints: SdTimeConstraints = {}): SdTimeValidationError | null {\n  if (value == null || (typeof value === 'string' && value.trim() === '')) return null;\n\n  const minutes = sdTimeToMinutes(value);\n  if (minutes === null) return 'time';\n\n  const minMinutes = sdTimeToMinutes(constraints.min);\n  if (minMinutes !== null && minutes < minMinutes) return 'min';\n\n  const maxMinutes = sdTimeToMinutes(constraints.max);\n  if (maxMinutes !== null && minutes > maxMinutes) return 'max';\n\n  const step = constraints.step;\n  if (typeof step === 'number' && Number.isFinite(step) && step > 0) {\n    const base = minMinutes ?? 0;\n    if ((minutes - base) % step !== 0) return 'step';\n  }\n\n  return null;\n}\n","import { sdParseTime } from './time-value';\n\nexport interface SdTimePickerAdapter<TPickerValue> {\n  toPickerValue(value: string | null | undefined): TPickerValue;\n  fromPickerValue(value: TPickerValue): string | null;\n}\n\n/**\n * Bridges the public time-only string contract to Date-based picker controls.\n * The fixed date never escapes this adapter, so timezone/calendar data cannot\n * leak into the model.\n */\nexport class SdDateTimePickerAdapter implements SdTimePickerAdapter<Date> {\n  toPickerValue(value: string | null | undefined): Date {\n    const parsed = sdParseTime(value) ?? { hour: 0, minute: 0 };\n    return new Date(2000, 0, 1, parsed.hour, parsed.minute, 0, 0);\n  }\n\n  fromPickerValue(value: Date): string | null {\n    if (!(value instanceof Date) || Number.isNaN(value.getTime())) return null;\n    return `${String(value.getHours()).padStart(2, '0')}:${String(value.getMinutes()).padStart(2, '0')}`;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  TemplateRef,\n  booleanAttribute,\n  computed,\n  contentChild,\n  inject,\n  input,\n  model,\n  output,\n  signal,\n  viewChild,\n} from '@angular/core';\nimport { AbstractControl, FormGroup, ReactiveFormsModule, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { FloatLabelType, MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SdView } from '@sdcorejs/angular/components/view';\nimport { SdViewDefDirective } from '@sdcorejs/angular/forms/directives';\nimport { SdLabel } from '@sdcorejs/angular/forms/label';\nimport {\n  SD_FORM_CONFIGURATION,\n  SdFormControl,\n  SdInlineErrorValidator,\n  SdViewed,\n  SdViewedInput,\n  sdFormControlState,\n  sdViewedTransform,\n  ɵSdFormControlParent,\n  ɵsdCoerceFormGroup,\n  ɵsdFormControlConnector,\n} from '@sdcorejs/angular/forms/models';\nimport { I18nService, TranslatePipe } from '@sdcorejs/angular/i18n';\nimport { SdIcon } from '@sdcorejs/angular/modules/icon';\nimport { sdIsEmpty, sdSerializeDataValue } from '@sdcorejs/angular/utilities/data-state';\nimport {\n  SD_DATE_FORMATS,\n  SD_NATIVE_DATE_FORMATS,\n  SdDateAdapter,\n  SdNativeDateAdapter,\n  SdTimeSpinner,\n} from '@sdcorejs/angular-material-datetime';\nimport { Utilities } from '@sdcorejs/utils/fns';\nimport { Size } from '@sdcorejs/utils/models';\n\nimport { SdDateTimePickerAdapter } from './time-picker.adapter';\nimport { sdNormalizeTime, sdTimeToMinutes, sdValidateTime } from './time-value';\n\nexport type SdTimeModelValue = string | null | undefined;\n\n/**\n * Edits a timezone-free time of day and emits valid values as canonical `HH:mm` strings.\n * Invalid typed text remains in the control without replacing the last valid model.\n */\n@Component({\n  selector: 'sd-time',\n  templateUrl: './time.component.html',\n  styleUrl: './time.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  providers: [\n    Platform,\n    SdNativeDateAdapter,\n    { provide: MAT_DATE_LOCALE, useValue: 'en-US' },\n    { provide: DateAdapter, useExisting: SdNativeDateAdapter },\n    { provide: SdDateAdapter, useExisting: SdNativeDateAdapter },\n    { provide: MAT_DATE_FORMATS, useValue: SD_NATIVE_DATE_FORMATS },\n    { provide: SD_DATE_FORMATS, useValue: SD_NATIVE_DATE_FORMATS },\n  ],\n  host: {\n    '[class.sd-has-label]': '!!label()',\n    '[class.sd-viewed]': 'connectorState().isViewed || connectorState().isInline',\n    '[class.sd-bare]': 'connectorState().isInline',\n  },\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    MatButtonModule,\n    MatFormFieldModule,\n    MatInputModule,\n    MatMenuModule,\n    MatTooltipModule,\n    SdIcon,\n    SdLabel,\n    SdTimeSpinner,\n    SdView,\n    TranslatePipe,\n  ],\n})\nexport class SdTime {\n  readonly id = `I${Utilities.generateUuid()}`;\n  readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('input');\n  readonly menuTrigger = viewChild(MatMenuTrigger);\n  readonly sdLabelTemplate = contentChild<TemplateRef<unknown>>('sdLabel');\n  readonly sdValueTemplate = contentChild<TemplateRef<unknown>>('sdValue');\n  readonly sdViewDef = contentChild(SdViewDefDirective);\n\n  readonly #formConfig = inject(SD_FORM_CONFIGURATION, { optional: true });\n  readonly #i18n = inject(I18nService);\n  readonly #pickerAdapter = new SdDateTimePickerAdapter();\n\n  readonly autoIdInput = input<string | null | undefined>(undefined, { alias: 'autoId' });\n  readonly autoId = computed(() => (this.autoIdInput() ? `forms-time-${this.autoIdInput()}` : undefined));\n  readonly name = input<string>(Utilities.generateUuid());\n  readonly form = input<FormGroup | undefined, ɵSdFormControlParent>(undefined, { transform: ɵsdCoerceFormGroup });\n  readonly label = input<string | undefined>();\n  readonly ariaLabel = input<string | undefined>();\n  readonly helperText = input<string | undefined>();\n  readonly placeholder = input<string | undefined>();\n  readonly size = input<Size>('md');\n  readonly appearanceInput = input<MatFormFieldAppearance | undefined>(undefined, { alias: 'appearance' });\n  readonly appearance = computed(() => this.appearanceInput() ?? this.#formConfig?.appearance ?? 'outline');\n  readonly floatLabel = input<FloatLabelType>('auto');\n  readonly min = input<string | null | undefined>();\n  readonly max = input<string | null | undefined>();\n  readonly stepInput = input<number | undefined, number | string | null | undefined>(1, {\n    alias: 'step',\n    transform: value => (value == null ? 1 : Number(value)),\n  });\n  readonly step = computed(() => {\n    const value = this.stepInput();\n    return typeof value === 'number' && Number.isFinite(value) && value > 0 ? Math.max(1, Math.trunc(value)) : 1;\n  });\n  readonly required = input(false, { transform: booleanAttribute });\n  readonly clearable = input(false, { transform: booleanAttribute });\n  readonly disabled = input(false, { transform: booleanAttribute });\n  readonly readonly = input(false, { transform: booleanAttribute });\n  readonly viewed = input<SdViewed, SdViewedInput>(false, { transform: sdViewedTransform });\n  readonly hideInlineError = input(false, { transform: booleanAttribute });\n  readonly inlineError = input<string | undefined>();\n  readonly hyperlink = input<string | null | undefined>();\n  readonly valueModel = model<SdTimeModelValue>(undefined, { alias: 'model' });\n\n  readonly sdChange = output<SdTimeModelValue>();\n  readonly sdFocus = output<void>();\n  readonly sdBlur = output<SdTimeModelValue>();\n\n  readonly formControl = new SdFormControl();\n  readonly #state = sdFormControlState(computed<AbstractControl<string | null>>(() => this.formControl));\n  readonly #validators = computed<readonly ValidatorFn[]>(() => {\n    const constraints = { min: this.min(), max: this.max(), step: this.step() };\n    const timeValidator: ValidatorFn = control => {\n      const error = sdValidateTime(control.value, constraints);\n      return error ? ({ [error]: true } satisfies ValidationErrors) : null;\n    };\n    return this.inlineError() ? [timeValidator, SdInlineErrorValidator] : [timeValidator];\n  });\n  readonly #connector = ɵsdFormControlConnector<SdTimeModelValue, string | null>({\n    form: this.form,\n    name: this.name,\n    control: computed<AbstractControl<string | null>>(() => this.formControl),\n    model: this.valueModel,\n    writeModel: value => {\n      this.valueModel.set(value);\n      this.sdChange.emit(value);\n    },\n    modelToControl: value => {\n      if (value == null) return null;\n      return sdNormalizeTime(value) ?? value;\n    },\n    controlToModel: value => {\n      if (value == null || value.trim() === '') return null;\n      return sdNormalizeTime(value) ?? this.valueModel();\n    },\n    validators: this.#validators,\n    required: this.required,\n    disabled: this.disabled,\n    readonly: this.readonly,\n    viewed: this.viewed,\n    validationError: computed(() => this.errorMessage()),\n  });\n\n  readonly connectorState = this.#connector.state;\n  readonly isViewed = computed(() => this.connectorState().isViewed);\n  readonly isInline = computed(() => this.connectorState().isInline);\n  readonly isReadonly = computed(() => this.connectorState().readonly);\n  readonly viewTemplate = computed<TemplateRef<unknown> | undefined>(() => this.sdViewDef()?.templateRef ?? this.sdValueTemplate());\n  readonly displayValue = computed(() => {\n    const value = this.valueModel();\n    return value == null ? null : (sdNormalizeTime(value) ?? value);\n  });\n  readonly showClear = computed(\n    () => this.clearable() && !this.required() && !this.disabled() && !this.isReadonly() && !sdIsEmpty(this.formControl.value)\n  );\n\n  readonly dataDisabled = computed(() => (this.#state().disabled ? 'true' : 'false'));\n  readonly dataInvalid = computed(() => (this.#state().invalid ? 'true' : 'false'));\n  readonly dataEmpty = computed(() => (sdIsEmpty(this.#state().value) ? 'true' : 'false'));\n  readonly dataValue = computed(() => sdSerializeDataValue(this.#state().value));\n  readonly dataRequired = computed(() => (this.required() ? 'true' : 'false'));\n  readonly dataErrorMessage = computed(() => this.errorMessage() ?? null);\n\n  readonly errorMessage = computed<string | undefined>(() => {\n    void this.#state();\n    const errors = this.formControl.errors;\n    if (!errors) return undefined;\n    if (errors['required']) return this.#i18n.t('core.form.time.required');\n    if (errors['time']) return this.#i18n.t('core.form.time.invalid');\n    if (errors['min']) return this.#i18n.t('core.form.time.min', { min: this.min() ?? '' });\n    if (errors['max']) return this.#i18n.t('core.form.time.max', { max: this.max() ?? '' });\n    if (errors['step']) return this.#i18n.t('core.form.time.step', { step: this.step() });\n    if (errors['inlineError']) return this.inlineError();\n    return undefined;\n  });\n\n  protected readonly pickerDraft = signal(this.#pickerAdapter.toPickerValue(null));\n\n  preparePicker(): void {\n    this.pickerDraft.set(this.#pickerAdapter.toPickerValue(sdNormalizeTime(this.formControl.value) ?? this.valueModel()));\n  }\n\n  onPickerValue(value: Date): void {\n    this.pickerDraft.set(value);\n  }\n\n  applyPicker(): void {\n    const value = this.#pickerAdapter.fromPickerValue(this.pickerDraft());\n    if (value) {\n      this.formControl.setValue(value);\n      this.formControl.markAsDirty();\n      this.formControl.markAsTouched();\n    }\n    this.menuTrigger()?.closeMenu();\n  }\n\n  cancelPicker(): void {\n    this.menuTrigger()?.closeMenu();\n  }\n\n  open(): void {\n    if (this.formControl.disabled || this.isReadonly()) return;\n    this.preparePicker();\n    this.menuTrigger()?.openMenu();\n  }\n\n  focus(): void {\n    this.inputRef()?.nativeElement.focus();\n  }\n\n  clear(event?: Event): void {\n    event?.stopPropagation();\n    if (sdIsEmpty(this.formControl.value) && this.valueModel() == null) return;\n    this.formControl.setValue(null);\n    this.formControl.markAsDirty();\n    this.formControl.markAsTouched();\n  }\n\n  onFocus(): void {\n    this.sdFocus.emit();\n  }\n\n  onBlur(): void {\n    this.#connector.markAsTouched();\n    this.sdBlur.emit(this.valueModel());\n  }\n\n  stepBy(direction: 1 | -1, event: KeyboardEvent): void {\n    if (this.formControl.disabled || this.isReadonly()) return;\n    event.preventDefault();\n    const base = sdTimeToMinutes(this.formControl.value) ?? sdTimeToMinutes(this.min()) ?? 0;\n    const min = sdTimeToMinutes(this.min()) ?? 0;\n    const max = sdTimeToMinutes(this.max()) ?? 23 * 60 + 59;\n    const next = Math.min(max, Math.max(min, base + direction * this.step()));\n    const value = `${String(Math.floor(next / 60)).padStart(2, '0')}:${String(next % 60).padStart(2, '0')}`;\n    this.formControl.setValue(value);\n    this.formControl.markAsDirty();\n  }\n}\n","@let _label = label();\n@let _appearance = appearance();\n@let _errorMessage = errorMessage();\n@let _helperText = helperText();\n@let _required = required();\n\n@if (isViewed()) {\n  <sd-view\n    [label]=\"_label\"\n    [labelTemplate]=\"sdLabelTemplate()\"\n    [value]=\"valueModel()\"\n    [display]=\"displayValue()\"\n    [hyperlink]=\"hyperlink()\"\n    [valueTemplate]=\"viewTemplate()\">\n  </sd-view>\n} @else {\n  @if (!_appearance) {\n    <ng-content select=\"[sdLabel]\">\n      @if (_label) {\n        <sd-label [label]=\"_label\" [required]=\"_required\"></sd-label>\n      }\n    </ng-content>\n  }\n\n  <mat-form-field\n    [class.sd-md]=\"size() === 'md'\"\n    [class.sd-sm]=\"size() === 'sm'\"\n    [class.hide-inline-error]=\"hideInlineError()\"\n    [appearance]=\"_appearance!\"\n    [floatLabel]=\"floatLabel()\">\n    @if (_appearance && _label) {\n      <mat-label class=\"sd-form-field-label\">\n        <span>{{ _label }}</span>\n        @if (_helperText) {\n          <sd-icon [matTooltip]=\"_helperText\" matTooltipPosition=\"below\" name=\"info\"></sd-icon>\n        }\n      </mat-label>\n    }\n\n    <input\n      #input\n      matInput\n      type=\"text\"\n      inputmode=\"numeric\"\n      maxlength=\"5\"\n      autocomplete=\"off\"\n      autocorrect=\"off\"\n      [id]=\"id\"\n      [formControl]=\"formControl\"\n      [placeholder]=\"placeholder() || _label || 'HH:mm'\"\n      [required]=\"_required\"\n      [readonly]=\"isReadonly()\"\n      [attr.aria-label]=\"ariaLabel() || _label || placeholder() || 'HH:mm'\"\n      [attr.aria-invalid]=\"dataInvalid()\"\n      [attr.data-autoId]=\"autoId()\"\n      [attr.data-disabled]=\"dataDisabled()\"\n      [attr.data-invalid]=\"dataInvalid()\"\n      [attr.data-empty]=\"dataEmpty()\"\n      [attr.data-value]=\"dataValue()\"\n      [attr.data-required]=\"dataRequired()\"\n      [attr.data-error-message]=\"dataErrorMessage()\"\n      (focus)=\"onFocus()\"\n      (blur)=\"onBlur()\"\n      (keydown.arrowUp)=\"stepBy(1, $event)\"\n      (keydown.arrowDown)=\"stepBy(-1, $event)\" />\n\n    @if (!hideInlineError() && _errorMessage) {\n      <mat-error>{{ _errorMessage }}</mat-error>\n    }\n\n    @if (showClear()) {\n      <button\n        type=\"button\"\n        class=\"sd-clear-btn sd-hover\"\n        matSuffix\n        (click)=\"clear($event)\"\n        [attr.aria-label]=\"'core.form.time.clear' | translate\">\n        <sd-icon name=\"close\"></sd-icon>\n      </button>\n    }\n\n    @if (hideInlineError() && _errorMessage) {\n      <sd-icon matSuffix class=\"sd-error-icon\" [matTooltip]=\"_errorMessage\" matTooltipPosition=\"above\" name=\"error\"></sd-icon>\n    }\n\n    <button\n      #menuTrigger=\"matMenuTrigger\"\n      type=\"button\"\n      mat-icon-button\n      matSuffix\n      data-time-picker-trigger\n      [matMenuTriggerFor]=\"timePickerMenu\"\n      [disabled]=\"formControl.disabled || isReadonly()\"\n      [attr.aria-label]=\"'core.form.time.open-picker' | translate\"\n      (menuOpened)=\"preparePicker()\">\n      <sd-icon name=\"schedule\"></sd-icon>\n    </button>\n  </mat-form-field>\n\n  <mat-menu #timePickerMenu=\"matMenu\" class=\"sd-time-picker-menu\">\n    <div class=\"d-flex flex-column\" (click)=\"$event.stopPropagation()\">\n      <sd-time-spinner [value]=\"pickerDraft()\" [baseValue]=\"pickerDraft()\" [stepMinute]=\"step()\" (valueChange)=\"onPickerValue($event)\">\n      </sd-time-spinner>\n      <div class=\"d-flex justify-content-end gap-8 p-8\">\n        <button type=\"button\" mat-button (click)=\"cancelPicker()\">{{ 'core.common.cancel' | translate }}</button>\n        <button type=\"button\" mat-flat-button (click)=\"applyPicker()\">{{ 'core.form.time.confirm' | translate }}</button>\n      </div>\n    </div>\n  </mat-menu>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ɵsdCoerceFormGroup","ɵsdFormControlConnector"],"mappings":"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"}