{"version":3,"file":"form-field.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/form-field/error.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/form-field/form-field-control.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/form-field/form-field-errors.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/form-field/label.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/form-field/form-field.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/form-field/form-field.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/form-field/form-field.module.ts"],"sourcesContent":["import { _IdGenerator } from '@angular/cdk/a11y';\nimport {\n  Directive,\n  ElementRef,\n  HostAttributeToken,\n  inject,\n  InjectionToken,\n  Input,\n} from '@angular/core';\n\n/**\n * Injection token that can be used to reference instances of `SbbError`. It serves as\n * alternative token to the actual `SbbError` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const SBB_ERROR = new InjectionToken<SbbError>('SbbError');\n\n/** Single error message to be shown underneath the form field. */\n@Directive({\n  selector: 'sbb-error, [sbbError]',\n  host: {\n    class: 'sbb-error',\n    '[attr.id]': 'id',\n    'aria-atomic': 'true',\n  },\n  providers: [{ provide: SBB_ERROR, useExisting: SbbError }],\n})\nexport class SbbError {\n  @Input() id: string = inject(_IdGenerator).getId('sbb-error-');\n\n  constructor(...args: unknown[]);\n  constructor() {\n    const ariaLive = inject(new HostAttributeToken('aria-live'), { optional: true });\n\n    // If no aria-live value is set add 'polite' as a default. This is preferred over setting\n    // role='alert' so that screen readers do not interrupt the current task to read this aloud.\n    if (!ariaLive) {\n      const elementRef = inject(ElementRef);\n      elementRef.nativeElement.setAttribute('aria-live', 'polite');\n    }\n  }\n}\n","import { AbstractControlDirective, NgControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\n/** An interface which allows a control to work inside of a `SbbField`. */\nexport abstract class SbbFormFieldControl<TValue> {\n  /** The value of the control. */\n  value: TValue | null = null;\n  /**\n   * Stream that emits whenever the state of the control changes such that the parent `SbbField`\n   * needs to run change detection.\n   */\n  readonly stateChanges!: Observable<void>;\n  /** The id of the form field. */\n  readonly id!: string;\n  /** The attached NgControl or AbstractControlDirective, if any exists. */\n  readonly ngControl: NgControl | AbstractControlDirective | undefined;\n  /** Whether the control is focused. */\n  readonly focused: boolean = false;\n  /** Whether the control is empty. */\n  readonly empty: boolean = false;\n  /** Whether the control is required. */\n  readonly required: boolean = false;\n  /** Whether the control is disabled. */\n  readonly disabled: boolean = false;\n  /** Whether the control is in an error state. */\n  readonly errorState: boolean = false;\n  /**\n   * An optional name for the control type that can be used to distinguish `sbb-form-field` elements\n   * based on their control type. The form field will add a class,\n   * `sbb-form-field-type-{{controlType}}` to its root element.\n   */\n  readonly controlType?: string;\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   * Value of `aria-describedby` that should be merged with the described-by ids\n   * which are set by the form-field.\n   */\n  readonly userAriaDescribedBy?: string;\n\n  /**\n   * Whether to automatically assign the ID of the form field as the `for` attribute\n   * on the `<label>` inside the form field. Set this to true to prevent the form\n   * field from associating the label with non-native elements.\n   */\n  readonly disableAutomaticLabeling?: 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","/** @docs-private */\nexport function getSbbFormFieldMissingControlError(): Error {\n  return Error('sbb-form-field must contain a SbbFormFieldControl.');\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'sbb-label',\n  host: {\n    class: 'sbb-label',\n  },\n})\nexport class SbbLabel {}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport {\n  AfterContentChecked,\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  computed,\n  contentChild,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  inject,\n  InjectionToken,\n  input,\n  InputSignal,\n  OnDestroy,\n  QueryList,\n  Signal,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { AbstractControlDirective } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { filter, map, pairwise, startWith, takeUntil } from 'rxjs/operators';\n\nimport { SbbError, SBB_ERROR } from './error';\nimport { SbbFormFieldControl } from './form-field-control';\nimport { getSbbFormFieldMissingControlError } from './form-field-errors';\nimport { SbbLabel } from './label';\n\n/**\n * Injection token that can be used to inject an instances of `SbbFormField`. It serves\n * as alternative token to the actual `SbbFormField` class which would cause unnecessary\n * retention of the `SbbFormField` class and its component metadata.\n */\nexport const SBB_FORM_FIELD = new InjectionToken<SbbFormField>('SBB_FORM_FIELD');\n\n@Component({\n  selector: 'sbb-form-field',\n  exportAs: 'sbbFormField',\n  templateUrl: './form-field.html',\n  styleUrls: ['./form-field.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [{ provide: SBB_FORM_FIELD, useExisting: SbbFormField }],\n  host: {\n    class: 'sbb-form-field',\n    '[class.sbb-form-field-invalid]': '_control?.errorState',\n    '[class.sbb-form-field-disabled]': '_control?.disabled',\n    '[class.sbb-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})\nexport class SbbFormField implements AfterContentInit, AfterContentChecked, OnDestroy {\n  _elementRef: ElementRef<HTMLElement> = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n\n  /** The label text for the input. */\n  label: InputSignal<string | undefined> = input<string>();\n\n  private _destroyed = new Subject<void>();\n\n  // Unique id for the label element.\n  readonly _labelId = inject(_IdGenerator).getId('sbb-form-field-label-');\n\n  @ViewChild('connectionContainer', { static: true }) _connectionContainerRef!: ElementRef;\n\n  @ContentChild(SbbFormFieldControl) _controlNonStatic!: SbbFormFieldControl<any>;\n  @ContentChild(SbbFormFieldControl, { static: true }) _controlStatic!: SbbFormFieldControl<any>;\n  get _control() {\n    // TODO(crisbeto): we need this workaround in order to support both Ivy and ViewEngine.\n    //  We should clean this up once Ivy is the default renderer.\n    return this._explicitFormFieldControl || this._controlNonStatic || this._controlStatic;\n  }\n  set _control(value) {\n    this._explicitFormFieldControl = value;\n  }\n  private _explicitFormFieldControl!: SbbFormFieldControl<any>;\n\n  @ContentChildren(SBB_ERROR, { descendants: true }) _errorChildren!: QueryList<SbbError>;\n  private readonly _labelChild = contentChild(SbbLabel);\n\n  private _previousControl: SbbFormFieldControl<unknown> | null = null;\n  private _stateChanges: Subscription | undefined;\n  private _valueChanges: Subscription | undefined;\n  private _describedByChanges: Subscription | undefined;\n\n  constructor(...args: unknown[]);\n  constructor() {}\n\n  /**\n   * Gets the id of the label element. If no label is present, returns `null`.\n   */\n  getLabelId: Signal<string | null> = computed(() =>\n    this._hasLabel() || this.label() ? this._labelId : null,\n  );\n\n  ngAfterContentInit() {\n    this._validateControlChild();\n  }\n\n  ngAfterContentChecked() {\n    this._validateControlChild();\n\n    if (this._control !== this._previousControl) {\n      this._initializeControl(this._previousControl);\n      this._previousControl = this._control;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this._stateChanges?.unsubscribe();\n    this._valueChanges?.unsubscribe();\n    this._describedByChanges?.unsubscribe();\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  /**\n   * Determines whether a class from the AbstractControlDirective\n   * should be forwarded to the host element.\n   */\n  _shouldForward(prop: keyof AbstractControlDirective): boolean {\n    const control = this._control ? this._control.ngControl : null;\n    return control && control[prop];\n  }\n\n  _hasLabel: Signal<boolean> = computed(() => !!this._labelChild());\n\n  _hasErrors() {\n    return !!(this._errorChildren && this._errorChildren.length && this._control.errorState);\n  }\n\n  /**\n   * Sets the list of element IDs that describe the child control. This allows the control to update\n   * its `aria-describedby` attribute accordingly.\n   */\n  private _syncDescribedByIds() {\n    if (this._control) {\n      const ids: string[] = [];\n\n      // TODO(wagnermaciel): Remove the type check when we find the root cause of this bug.\n      if (\n        this._control.userAriaDescribedBy &&\n        typeof this._control.userAriaDescribedBy === 'string'\n      ) {\n        ids.push(...this._control.userAriaDescribedBy.split(' '));\n      }\n\n      if (this._errorChildren) {\n        ids.push(...this._errorChildren.map((error) => error.id));\n      }\n\n      this._control.setDescribedByIds(ids);\n    }\n  }\n\n  /** Throws an error if the form field's control is missing. */\n  protected _validateControlChild() {\n    if (!this._control && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw getSbbFormFieldMissingControlError();\n    }\n  }\n\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._connectionContainerRef || this._elementRef;\n  }\n\n  /** Initializes the registered form field control. */\n  private _initializeControl(previousControl: SbbFormFieldControl<unknown> | null) {\n    const control = this._control;\n    const classPrefix = 'sbb-form-field-type-';\n\n    if (previousControl) {\n      this._elementRef.nativeElement.classList.remove(classPrefix + previousControl.controlType);\n    }\n\n    if (control.controlType) {\n      this._elementRef.nativeElement.classList.add(classPrefix + control.controlType);\n    }\n\n    // Subscribe to changes in the child control state in order to update the form field UI.\n    this._stateChanges?.unsubscribe();\n    this._stateChanges = control.stateChanges.pipe(startWith(null! as any)).subscribe(() => {\n      this._changeDetectorRef.markForCheck();\n    });\n\n    // Updating the `aria-describedby` touches the DOM. Only do it if it actually needs to change.\n    this._describedByChanges?.unsubscribe();\n    this._describedByChanges = control.stateChanges\n      .pipe(\n        startWith([undefined, undefined] as const),\n        map(() => [control.errorState, control.userAriaDescribedBy] as const),\n        pairwise(),\n        filter(([[prevErrorState, prevDescribedBy], [currentErrorState, currentDescribedBy]]) => {\n          return prevErrorState !== currentErrorState || prevDescribedBy !== currentDescribedBy;\n        }),\n      )\n      .subscribe(() => this._syncDescribedByIds());\n\n    this._valueChanges?.unsubscribe();\n\n    // Run change detection if the value changes.\n    if (control.ngControl && control.ngControl.valueChanges) {\n      this._valueChanges = control.ngControl.valueChanges\n        .pipe(takeUntil(this._destroyed))\n        .subscribe(() => this._changeDetectorRef.markForCheck());\n    }\n\n    // Update the aria-described by when the number of errors changes.\n    this._errorChildren.changes.pipe(startWith(null)).subscribe(() => {\n      this._syncDescribedByIds();\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n}\n","<div class=\"sbb-form-field-wrapper\">\n  <div class=\"sbb-form-field-label-wrapper\" (click)=\"_control.onContainerClick($event)\">\n    <label\n      class=\"sbb-label sbb-form-field-label\"\n      [id]=\"_labelId\"\n      [attr.for]=\"_control.disableAutomaticLabeling ? null : _control.id\"\n      [class.sbb-form-field-empty]=\"_control.empty\"\n    >\n      @switch (_hasLabel()) {\n        @case (false) {\n          <span>{{ label() }}</span>\n        }\n        @case (true) {\n          <ng-content select=\"sbb-label\"></ng-content>\n        }\n      }\n    </label>\n  </div>\n  <div class=\"sbb-form-field-input-wrapper\" #connectionContainer>\n    <ng-content></ng-content>\n  </div>\n  <div class=\"sbb-form-field-error-wrapper\">\n    @if (_hasErrors()) {\n      <ng-content select=\"sbb-error,[sbbError]\"></ng-content>\n    }\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { SbbCommonModule } from '@sbb-esta/angular/core';\n\nimport { SbbError } from './error';\nimport { SbbFormField } from './form-field';\nimport { SbbLabel } from './label';\n\n@NgModule({\n  imports: [SbbCommonModule, SbbFormField, SbbError, SbbLabel],\n  exports: [SbbFormField, SbbError, SbbLabel],\n})\nexport class SbbFormFieldModule {}\n"],"names":[],"mappings":"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"}