{"version":3,"file":"talenra-ngx-base-form-field.mjs","sources":["../../../projects/ngx-base/form-field/src/abstracts/form-field-control.ts","../../../projects/ngx-base/form-field/src/clear-button/clear-button.component.ts","../../../projects/ngx-base/form-field/src/clear-button/clear-button.component.html","../../../projects/ngx-base/form-field/src/form-field/form-field.types.ts","../../../projects/ngx-base/form-field/src/control-container/control-container.component.ts","../../../projects/ngx-base/form-field/src/control-container/control-container.component.html","../../../projects/ngx-base/form-field/src/form-error/form-error.component.ts","../../../projects/ngx-base/form-field/src/form-error/form-error.component.html","../../../projects/ngx-base/form-field/src/form-field/form-field.helpers.ts","../../../projects/ngx-base/form-field/src/form-field/form-field.component.ts","../../../projects/ngx-base/form-field/src/form-field/form-field.component.html","../../../projects/ngx-base/form-field/src/form-field-control-base/form-field-control-base.component.ts","../../../projects/ngx-base/form-field/talenra-ngx-base-form-field.ts"],"sourcesContent":["import { Observable } from 'rxjs';\nimport { signal, Signal } from '@angular/core';\nimport { FormFieldComponent } from '../form-field/form-field.component';\n\n/**\n * Abstract class defining the requirements for a control implemented by a `FormFieldComponent` instance.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport abstract class FormFieldControl<T> {\n  /** Determines whether the control is disabled. */\n  readonly disabled: boolean = false;\n  /** Determines whether the control is read-only. */\n  readonly readonly: boolean = false;\n  /** Determines whether the control has focus. */\n  readonly hasFocus: boolean = false;\n  /** Determines whether the control or any element within has focus. Used to toggle clear button visibility. */\n  readonly hasFocusWithin: boolean = false;\n  /** The control's id (the value used in the HTML element's id attribute). */\n  readonly id: string = '';\n  /** Determines whether the control contains a value. */\n  readonly isEmpty: boolean = true;\n  /** Determines whether the control's value is required. */\n  readonly required: boolean = false;\n  /** Determines whether the control's value is invalid. */\n  readonly invalid: boolean = false;\n  /** Determines whether the control is touched. A control is considered touched after the user has triggered a 'blur' event on the control. */\n  readonly touched: boolean = false;\n  /** Determines whether the control is dirty. A control is considered dirty after the user has changed its value in the UI. */\n  readonly dirty: boolean = false;\n  /** Reference to the enclosing FormField if available */\n  readonly formField?: FormFieldComponent;\n  /** Determines whether the control's content has scroll offset. */\n  readonly hasScroll: Signal<boolean> = signal<boolean>(false);\n  /** Observable, pushes an empty notification whenever the state of the control changes (e.g. when it gets focus). */\n  readonly stateChanges: Observable<void> = new Observable<void>();\n\n  /**\n   * Determines whether the control (Input, Date, Select, etc.) includes its own ControlContainer. Most controls are ok\n   * to use the FormField's ControlContainer, but some controls (e.g. Date) require their own ControlContainer, like\n   * Date, which has two separate input fields for date and time.\n   *\n   * true → The FormField will not display a label, read-only icon (padlock), clear button etc.\n   * false → The FormField will display a label, read-only icon, clear button etc.\n   *\n   * see {@link DateComponent}\n   */\n  readonly hasControlContainer?: boolean = false;\n\n  /**\n   * `clearValue` is triggered when the user clicks the clear button in the FormField. It is the responsibility of the\n   * control to clear its value and take any other necessary actions.\n   */\n  readonly clearValue: () => void = () => {};\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { ButtonComponent } from '@talenra/ngx-base/button';\n\n/**\n * Clear button component. Used in ControlContainer to clear the wrapped control's value.\n *\n * @internal\n */\n@Component({\n  selector: 'talenra-clear-button',\n  imports: [ButtonComponent],\n  templateUrl: './clear-button.component.html',\n  styleUrl: './clear-button.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.is-visible]': 'isVisible()',\n  },\n})\nexport class ClearButtonComponent {\n  /** Determines whether clear button is visible (fade-in/out). */\n  public isVisible = input<boolean>(true);\n}\n","<button talenra-button kind=\"ghost\" size=\"s\" icon=\"close\" [attr.tabindex]=\"-1\" type=\"button\"></button>\n","/**\n * Values accepted by the `FormField`'s `status` property.\n *\n * ### Import\n *\n * ```typescript\n * import { FormFieldStatus } from '@talenra/ngx-base/form-field';\n * ```\n *\n * @see {@link FormField}\n * @see {@link TFormFieldStatus}\n */\nexport const FormFieldStatus = {\n  Default: 'default',\n  Invalid: 'invalid',\n} as const;\n\n/**\n * Type of values accepted by the `FormField`'s `status` property.\n *\n * ### Import\n *\n * ```typescript\n * import { TFormFieldStatus } from '@talenra/ngx-base/form-field';\n * ```\n *\n * @see {@link FormField}\n * @see {@link FormFieldStatus}\n */\nexport type TFormFieldStatus = (typeof FormFieldStatus)[keyof typeof FormFieldStatus];\n\n/**\n * Values accepted by the `FormField`'s `size§` property.\n *\n * ### Import\n *\n * ```typescript\n * import { FormFieldSize } from '@talenra/ngx-base/form-field';\n * ```\n *\n * @see {@link FormField}\n * @see {@link TFormFieldSize}\n */\nexport const FormFieldSize = {\n  S: 's',\n  M: 'm',\n} as const;\n\n/**\n * Type of values accepted by the `FormField`'s `size` property.\n *\n * ### Import\n *\n * ```typescript\n * import { TFormFieldSize } from '@talenra/ngx-base/form-field';\n * ```\n *\n * @see {@link FormField}\n * @see {@link FormFieldSize}\n */\nexport type TFormFieldSize = (typeof FormFieldSize)[keyof typeof FormFieldSize];\n","import {\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  input,\n  OnInit,\n  output,\n  signal,\n} from '@angular/core';\nimport { FieldUnderlineComponent } from '@talenra/ngx-base/shared';\nimport { ButtonComponent } from '@talenra/ngx-base/button';\nimport { FormFieldSize, FormFieldStatus, TFormFieldSize, TFormFieldStatus } from '../form-field/form-field.types';\nimport { ClearButtonComponent } from '../clear-button/clear-button.component';\n\n/**\n * Wrapper for form controls used in FormField context. Adds read-only icon and underline effects.\n *\n * ### Import\n *\n * ```typescript\n * import { ControlContainerComponent } from '@talenra/ngx-base/form-field';\n * ```\n *\n * @internal\n */\n@Component({\n  selector: 'talenra-control-container',\n  templateUrl: './control-container.component.html',\n  styleUrls: ['./control-container.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class]': '`size--${size()}`',\n    '[class.status--invalid]': 'status() === FormFieldStatus.Invalid',\n    '[class.use-transition]': 'useTransition()',\n    '[class.disabled]': 'disabled()',\n    '[class.has-focus]': 'hasFocus()',\n    '[class.readonly]': 'readonly()',\n    '[class.label-minimized]': 'hasFocus() || !isEmpty()',\n    '[class.has-child-control-container]': 'hasChildControlContainer()',\n    '[class.clear-button-visible]': 'showClearButton()',\n    '[class.has-scroll]': 'hasScroll()',\n  },\n  imports: [FieldUnderlineComponent, ButtonComponent, ClearButtonComponent],\n})\nexport class ControlContainerComponent implements OnInit {\n  /** Label displayed to the user */\n  public label = input<string>('');\n\n  /** Determines whether the wrapped control is required. */\n  public required = input<boolean>(false);\n\n  /** Determines whether the wrapped control has focus. */\n  public hasFocus = input<boolean>(false);\n\n  /** Determines whether the wrapped control is read-only. */\n  public readonly = input<boolean>(false);\n\n  /** Determines whether the wrapped control is disabled. */\n  public disabled = input<boolean>(false);\n\n  /** Status of the form-field (e.g. \"invalid\"). */\n  public status = input<TFormFieldStatus>(FormFieldStatus.Default);\n\n  /** Determindes whether the wrapped control contains a value. */\n  public isEmpty = input<boolean>(true);\n\n  /**\n   * Determines the size of ControlContainer. Defaults to \"m\".\n   *\n   * ```html\n   * <talenra-control-container ... size=\"s\"></talenra-control-container>\n   * ```\n   *\n   * @see {@link FormFieldSize}\n   */\n  public size = input<TFormFieldSize>(FormFieldSize.M);\n\n  /**\n   * Suppress the clear button which is displayed by default if the input has a value and is focused.\n   *\n   * ```html\n   * <talenra-control-container ... hideClearButton></talenra-control-container>\n   * ````\n   */\n  public hideClearButton = input(false, { transform: booleanAttribute });\n\n  /**\n   * Determines whether the control's content has scroll offset (textarea). Used to show/hide the label's background.\n   */\n  public hasScroll = input<boolean>(false);\n\n  /**\n   * Event emitted when the clear button is pressed.\n   *\n   * ```typescript\n   * protected onClearValue(): void {\n   *   console.log('Clear value');\n   * }\n   * ```\n   *\n   * ```html\n   * <talenra-control-container (clearValue)=\"onClearValue()\"></talenra-control-container>\n   * ```\n   */\n  public clearValue = output<void>();\n\n  /** Determines whether clear button is visible */\n  protected showClearButton = computed<boolean>(() => {\n    return (\n      this.hasFocus() &&\n      !this.readonly() &&\n      !this.disabled() &&\n      !this.isEmpty() &&\n      !this.hasChildControlContainer() &&\n      !this.hideClearButton()\n    );\n  });\n\n  /**\n   * Determines whether the wrapped control (e.g. Input, Select) includes its own ControlContainer\n   *\n   * @see {@link FormFieldControl.hasControlContainer}\n   */\n  public hasChildControlContainer = input<boolean>(false);\n\n  /** Whether the UI shall use transitions (e.g. when the control gets focus) */\n  private useTransition = signal<boolean>(false);\n\n  /** @internal */\n  ngOnInit(): void {\n    // Suppress transitions when initialized\n    setTimeout(() => this.useTransition.set(true));\n  }\n\n  /** Used for property binding in component's metadata */\n  private FormFieldStatus = FormFieldStatus;\n}\n","@if (!hasChildControlContainer() && label()) {\n  <div class=\"label\" aria-hidden=\"true\">\n    {{ label() }}\n    @if (required()) {\n      <span> *</span>\n    }\n  </div>\n}\n<ng-content />\n<span class=\"icon talenra-icon talenra-icon--lock\"></span>\n@if (!hideClearButton() && !hasChildControlContainer()) {\n  <talenra-clear-button\n    class=\"clear\"\n    (click)=\"clearValue.emit()\"\n    [isVisible]=\"showClearButton()\"\n    data-testid=\"clear-button\" />\n}\n<talenra-field-underline class=\"underline\" [hasFocus]=\"hasFocus()\" [status]=\"status()\" />\n<div class=\"label-background\"></div>\n","import { ChangeDetectionStrategy, Component, Input, booleanAttribute } from '@angular/core';\n\n/**\n * `<talenra-form-error>` is used as a child element of `<talenra-form-field>` to display input validation errors.\n *\n * Use multiple instances to provide accurate description of the errors.\n *\n * ```html\n * <talenra-form-field label=\"Email\">\n *   <input talenra-input formControlName=\"email\" type=\"email\" required />\n *   <talenra-form-error [isVisible]=\"emailEmpty\">This field is required.</talenra-form-error>\n *   <talenra-form-error [isVisible]=\"emailInvalid\">Email address is invalid.</talenra-form-error>\n * </talenra-form-field>\n * ```\n *\n * ### Import\n *\n * ```typescript\n * import { FormErrorComponent } from '@talenra/ngx-base/form-field';\n * ```\n *\n * <example-url>../../#/input</example-url>\n *\n * @see {@link FormFieldComponent}\n */\n@Component({\n  selector: 'talenra-form-error',\n  templateUrl: './form-error.component.html',\n  styleUrls: ['./form-error.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.is-visible]': 'isVisible',\n  },\n})\nexport class FormErrorComponent {\n  /**\n   * The component's active state determines whether the error message is displayed to the user.\n   *\n   * ```html\n   * <talenra-form-error [isVisible]=\"emailInvalid\">Email address is invalid.</talenra-form-error>\n   * ```\n   */\n  @Input({ transform: booleanAttribute })\n  /** Get the component's active state. */\n  get isVisible(): boolean {\n    return this._isVisible;\n  }\n  /** Set the component's active state. */\n  set isVisible(value: boolean | undefined) {\n    if (!!value === this._isVisible) return;\n    this._isVisible = !!value;\n  }\n  private _isVisible = false;\n}\n","<div class=\"inner\"><ng-content /></div>\n","/**\n * Strip a given suffix from a string.\n *\n * ```typescript\n * class RandomComponent {\n *   constructor() {\n *     const className: string = stripSuffix(this.constructor.name); // 'random'\n *   }\n * }\n */\nexport const stripSuffix = (value: string, suffix: string = 'Component'): string => {\n  value = value?.endsWith(suffix) ? value.slice(0, suffix.length * -1) : value;\n  return value?.toLocaleLowerCase();\n};\n","import {\n  AfterContentInit,\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  DestroyRef,\n  inject,\n  input,\n  Input,\n  signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormFieldSize, FormFieldStatus, TFormFieldSize, TFormFieldStatus } from './form-field.types';\nimport { stripSuffix } from './form-field.helpers';\nimport { FormFieldControl } from '../abstracts/form-field-control';\nimport { ControlContainerComponent } from '../control-container/control-container.component';\n\n/**\n * `<talenra-form-field>` is a wrapper for form inputs.\n *\n * - implements the label associated with the input\n * - adds a hook to display validation errors\n * - shows an optional hint text\n * - injects consistent styling and behaviour for different inputs\n *\n * Minimal example:\n *\n * ```html\n * <talenra-form-field label=\"Email\">\n *   <input talenra-input formControlName=\"email\" type=\"email\" />\n * </talenra-form-field>\n * ```\n *\n * Example using a hint text and validation errors:\n *\n * ```html\n * <talenra-form-field label=\"Email\">\n *   <input talenra-input formControlName=\"email\" type=\"email\" required />\n *   <talenra-form-error [isVisible]=\"emailEmpty\">This field is required.</talenra-form-error>\n *   <talenra-form-error [isVisible]=\"emailInvalid\">Email address is invalid.</talenra-form-error>\n * </talenra-form-field>\n * ```\n *\n * ### Import\n *\n * ```typescript\n * import { FormFieldComponent } from '@talenra/ngx-base/form-field';\n * ```\n *\n * <example-url>../../#/input</example-url>\n *\n * @see {@link FormErrorComponent}\n */\n@Component({\n  selector: 'talenra-form-field',\n  templateUrl: './form-field.component.html',\n  styleUrls: ['./form-field.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class]': 'hostClass',\n    '(focusin)': 'control && control.hasFocusWithin = true',\n    '(focusout)': 'control && control.hasFocusWithin = false',\n  },\n  imports: [ControlContainerComponent],\n})\nexport class FormFieldComponent implements AfterContentInit {\n  /** Optional hint text displayed to the user */\n  @Input() public hint?: string;\n\n  /**\n   * Label displayed to the user\n   *\n   * ```html\n   * <talenra-form-field ... label=\"Email\"></talenra-form-field>\n   * ```\n   */\n  public label = input<string>('');\n\n  /**\n   * Determines the size of FormField and the wrapped control. Defaults to `m`.\n   *\n   * ```html\n   * <talenra-form-field ... size=\"s\"></talenra-form-field>\n   * ```\n   *\n   * @see {@link FormFieldSize}\n   */\n  size = input<TFormFieldSize>(FormFieldSize.M);\n\n  /**\n   * Suppress the clear button which is displayed by default if the input has a\n   * value and is focused.\n   *\n   * ```html\n   * <talenra-form-field ... hideClearButton></talenra-form-field>\n   * ````\n   */\n  public hideClearButton = input(false, { transform: booleanAttribute });\n\n  /**\n   * Status of the form-field. Controls display status like \"invalid\".\n   *\n   * @internal\n   */\n  public status = signal<TFormFieldStatus>(FormFieldStatus.Default);\n\n  /** @internal */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  @ContentChild(FormFieldControl) control?: FormFieldControl<any>;\n\n  private hostClass = '';\n\n  private readonly changeDetector: ChangeDetectorRef = inject(ChangeDetectorRef);\n  private readonly destroyRef: DestroyRef = inject(DestroyRef);\n\n  /** @internal */\n  ngAfterContentInit(): void {\n    this.control?.stateChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      this.updateState();\n      this.updateHostClass();\n    });\n    this.updateHostClass();\n  }\n\n  private updateState(): void {\n    this.status.set(\n      this.control?.invalid && (this.control?.touched || this.control?.dirty)\n        ? FormFieldStatus.Invalid\n        : FormFieldStatus.Default\n    );\n  }\n\n  private updateHostClass(): void {\n    this.hostClass = [\n      this.control ? `control--${stripSuffix(this.control.constructor.name)}` : '',\n      this.hint && this.hint.length > 0 ? 'has-hint' : '',\n    ]\n      .filter((item) => item)\n      .join(' ');\n    this.changeDetector.markForCheck();\n  }\n}\n","<label class=\"native-label\" [attr.for]=\"control?.id\"\n  >{{ label() }}\n  @if (control?.required) {\n    <span> *</span>\n  }\n</label>\n<talenra-control-container\n  [label]=\"label()\"\n  [required]=\"!!control?.required\"\n  [hasFocus]=\"!!control && !control.hasControlContainer && (!!control.hasFocus || !!control.hasFocusWithin)\"\n  [readonly]=\"!!control?.readonly\"\n  [disabled]=\"!!control?.disabled\"\n  [status]=\"status()\"\n  [isEmpty]=\"!!control?.isEmpty\"\n  [size]=\"size()\"\n  [hasChildControlContainer]=\"!!control?.hasControlContainer\"\n  [hideClearButton]=\"hideClearButton()\"\n  [hasScroll]=\"!!control?.hasScroll()\"\n  (clearValue)=\"control?.clearValue()\">\n  <ng-content />\n</talenra-control-container>\n@if (hint) {\n  <span class=\"hint\">{{ hint }}</span>\n}\n<ng-content select=\"talenra-form-error\" />\n","import { ChangeDetectorRef, Component, Injector, Input, booleanAttribute, inject, signal } from '@angular/core';\nimport { AbstractControl, Validators } from '@angular/forms';\nimport { ControlBaseDirective } from '@talenra/ngx-base/shared';\nimport { Subject } from 'rxjs';\nimport { FormFieldComponent } from '../form-field/form-field.component';\n\n/**\n * Base class to be expanded by controls used with FormFieldComponent.\n *\n * s. {@link InputComponent} or {@link SelectComponent} for examples.\n *\n * @internal\n */\n@Component({\n  template: ``,\n  styleUrls: [],\n  host: {\n    '[id]': 'id',\n    '[tabindex]': 'tabindex',\n  },\n})\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\nexport class FormFieldControlBaseComponent<T = any> extends ControlBaseDirective {\n  /** @internal */\n  public hasFocus = false;\n\n  /**\n   * Determines whether the control or any element within Form Field has focus. Used to toggle clear button visibility.\n   *\n   * @internal\n   */\n  private _hasFocusWithin = false;\n  get hasFocusWithin(): boolean {\n    return this._hasFocusWithin;\n  }\n  set hasFocusWithin(value: boolean) {\n    // Exit early if the value is unchanged\n    if (this._hasFocusWithin === value) return;\n    // Prevent setting focus if the control is disabled or readonly\n    if (value && (this.disabled || this.readonly)) return;\n    this._hasFocusWithin = value;\n  }\n\n  /** @internal */\n  public id = '';\n\n  /** @internal */\n  public tabindex = 0;\n\n  /** @internal */\n  public control: AbstractControl | null = null;\n\n  /** Determines whether the control is required. */\n  @Input({ transform: booleanAttribute })\n  /** Get the control's required state */\n  get required(): boolean {\n    return this._required ?? this.control?.hasValidator(Validators.required) ?? false;\n  }\n  /** Set the control's required state */\n  set required(value: boolean) {\n    if (value === this._required) return;\n    this._required = value;\n    this.stateChanges.next();\n  }\n  /** @internal */\n  _required: boolean | undefined;\n\n  /**\n   * Get whether the control is invalid.\n   *\n   * @internal\n   */\n  get invalid(): boolean {\n    return !!this.control?.invalid;\n  }\n\n  /**\n   * Get whether the control is touched.\n   *\n   * @internal\n   */\n  get touched(): boolean {\n    return !!this.control?.touched;\n  }\n\n  /**\n   * Get whether the control is dirty.\n   *\n   * @internal\n   */\n  get dirty(): boolean {\n    return !!this.control?.dirty;\n  }\n\n  /** @internal */\n  public stateChanges = new Subject<void>();\n\n  /**\n   * Reference to the enclosing `FormFieldComponent`.\n   *\n   * @internal\n   */\n  public formField?: FormFieldComponent;\n\n  /**\n   * Determine whether the control's content has scroll offset.\n   *\n   * @internal\n   */\n  public hasScroll = signal<boolean>(false);\n\n  protected injector: Injector = inject(Injector);\n\n  /** @internal */\n  constructor() {\n    super(inject(ChangeDetectorRef));\n    // Allow usage of control without a wrapping FormFieldComponent\n    this.formField =\n      this.injector.get<FormFieldComponent>(FormFieldComponent, undefined, { optional: true }) || undefined;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}