{"version":3,"file":"acorex-components-form.mjs","sources":["../../../../packages/components/form/src/lib/form.component.ts","../../../../packages/components/form/src/lib/form-field.component.ts","../../../../packages/components/form/src/lib/form.config.ts","../../../../packages/components/form/src/lib/validation-rule.directive.ts","../../../../packages/components/form/src/lib/validation-summary.component.ts","../../../../packages/components/form/src/lib/form.module.ts","../../../../packages/components/form/src/acorex-components-form.ts"],"sourcesContent":["import {\n  AXComponent,\n  AXEvent,\n  AXStyleLookType,\n  AXValuableComponent,\n  AXValueChangedEvent,\n  MXValueComponent,\n} from '@acorex/cdk/common';\nimport { AXValidationSummary } from '@acorex/core/validation';\nimport {\n  AfterViewInit,\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  ViewEncapsulation,\n  afterNextRender,\n  contentChildren,\n  effect,\n  input,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AXFormFieldComponent } from './form-field.component';\n\n/**\n *  Contains native event\n * @category Events\n */\nexport class AXFormValidationEvent extends AXEvent {\n  result: AXValidationSummary;\n}\n\n/**\n *  Contains native event\n * @category Events\n */\nexport type AXFormUpdateOn = 'change' | 'blur' | 'submit';\nexport type AXFormMessageStyle = 'bottom' | 'float';\nexport type AXLabelMode = 'static' | 'floating' | 'over';\n\n/**\n * The AXForm is a component which detects user interaction and triggers a corresponding event\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-form',\n  template: `<form (submit)=\"_handleSubmit($event)\" (reset)=\"_handleReset()\" class=\"ax-{{ messageStyle() }}-error\">\n    <ng-content></ng-content>\n  </form>`,\n  inputs: ['disabled', 'readonly'],\n  encapsulation: ViewEncapsulation.None,\n\n  providers: [{ provide: AXComponent, useExisting: AXFormComponent }],\n  styles: `\n    form {\n      height: inherit;\n    }\n  `,\n})\nexport class AXFormComponent extends MXValueComponent implements OnDestroy, AfterViewInit {\n  /**\n   * Specifies the mode of the label in the form field.\n   *  @defaultValue 'static'\n   */\n  readonly labelMode = input<AXLabelMode>('static');\n\n  readonly look = input<AXStyleLookType>(null);\n\n  content = contentChildren(AXFormFieldComponent, { descendants: true });\n\n  #applyLooks = effect(() => {\n    const currentLook = this.look();\n    if (!currentLook) return;\n    this.content().forEach((item: any) => {\n      if (item.input) {\n        item.input.look = currentLook;\n      }\n    });\n  });\n\n  #init = afterNextRender(() => {\n    this.content().forEach((item: any) => {\n      if (item.input?.readonly === null) {\n        item.input.readonly = this.readonly;\n      }\n      if (item.input?.disabled === null) {\n        item.input.disabled = this.disabled;\n      }\n    });\n    this.disabledChange.subscribe((disabled) => {\n      this.content().forEach((item: any) => {\n        item.input.disabled = disabled;\n      });\n    });\n    this.readonlyChange.subscribe((readonly) => {\n      this.content().forEach((item: any) => {\n        item.input.readonly = readonly;\n      });\n    });\n  });\n\n  /**\n   * Determines the style of the message in the form field.\n   * @defaultValue 'bottom'\n   */\n  readonly messageStyle = input<AXFormMessageStyle>('bottom');\n\n  /**\n   * Emitted when the form is validated.\n   *\n   * @event\n   */\n  @Output()\n  onValidate: EventEmitter<AXFormValidationEvent> = new EventEmitter<AXFormValidationEvent>();\n\n  /**\n   * Emitted when the form's update mode changes.\n   *\n   * @event\n   */\n  @Output()\n  updateOnChange: EventEmitter<AXFormUpdateOn> = new EventEmitter<AXFormUpdateOn>();\n\n  /**\n   *  @ignore\n   */\n  private _updateOn: AXFormUpdateOn = 'blur';\n\n  /**\n   * Determines when the form should be updated.\n   */\n  @Input()\n  public get updateOn(): AXFormUpdateOn {\n    return this._updateOn;\n  }\n\n  /**\n   * Sets the criteria for when the form should be updated.\n   * @param v The criteria to set (e.g., 'change', 'blur').\n   */\n  public set updateOn(v: AXFormUpdateOn) {\n    this.setOption({\n      name: 'updateOn',\n      value: v,\n      afterCallback: () => {\n        this._bindEvents();\n      },\n    });\n  }\n\n  inUserInteractionActive = input(true);\n\n  /**\n   *  @ignore\n   */\n  private _subs: Subscription[] = [];\n\n  /**\n   *  @ignore\n   */\n  protected async _handleSubmit(e: SubmitEvent) {\n    e.preventDefault();\n    await this.validate();\n  }\n\n  /**\n   *  @ignore\n   */\n  protected _handleReset() {\n    this.reset();\n  }\n\n  /**\n   *  @ignore\n   */\n  constructor() {\n    super();\n  }\n\n  ngAfterViewInit(): void {\n    this._bindEvents();\n  }\n\n  private _bindEvents() {\n    this._clearSubs();\n    const widgets = this.content();\n\n    widgets.forEach((w: any) => {\n      const input = w?.input;\n      if (!input) return;\n\n      const shouldValidate = () => this.updateOn === 'change';\n      const applyUpdate = () => (shouldValidate() ? input.validate() : input.resetErrors());\n\n      if (this.updateOn === 'blur') {\n        this._subs.push(input.onBlur?.subscribe(() => input.validate()));\n        return;\n      }\n\n      this._subs.push(\n        input.onValueChanged?.subscribe((e: AXValueChangedEvent) => {\n          // Only gate on user interaction when that mode is active\n          if (this.inUserInteractionActive() && !e.isUserInteraction) return;\n          applyUpdate();\n        }),\n      );\n    });\n  }\n\n  /**\n   *  @ignore\n   */\n  private _clearSubs() {\n    this._subs.forEach((c) => c?.unsubscribe());\n    this._subs = [];\n  }\n\n  /**\n   *  @ignore\n   */\n  private get fields(): AXValuableComponent[] {\n    return Array.from(this.getHostElement().querySelectorAll('[ax-form-item=\"true\"]'))\n      .map((c) => (c as any).__axContext__)\n      .filter((c) => c != null);\n  }\n\n  /**\n   * Validates the form fields.\n   *\n   * @param names - Optional array of field names to validate.\n   * @returns Promise<AXValidationSummary> - Promise that resolves with validation results.\n   */\n  override async validate(...names: string[]): Promise<AXValidationSummary> {\n    const results = await Promise.all(\n      this.fields\n        .filter((c) => names == null || names.length == 0 || names.includes(this.#resolveName(c)))\n        .map((field) => field.validate()),\n    );\n    // Merge all validation summaries into one\n    const mergedSummary: AXValidationSummary = {\n      result: results.every((res) => res.result),\n      rules: results.flatMap((res) => res.rules),\n    };\n    this._emitOnValidateEvent(mergedSummary);\n    return mergedSummary;\n  }\n\n  /**\n   *  @ignore\n   */\n  private _emitOnValidateEvent(e: AXValidationSummary) {\n    this.onValidate.emit({\n      component: this,\n      result: e,\n      htmlElement: this.getHostElement(),\n    });\n  }\n\n  /**\n   * Resets all form fields without clearing errors.\n   *\n   * @returns void - No return value. Form fields are reset to their initial values.\n   */\n  override reset() {\n    this.fields.forEach((c) => c.reset(false));\n    this.fields.forEach((c) => c.resetErrors());\n  }\n\n  /**\n   * Resets validation errors for all form fields.\n   *\n   * @returns void - No return value. All validation errors are cleared.\n   */\n  override resetErrors() {\n    this.fields.forEach((c) => c.resetErrors());\n  }\n\n  /**\n   *  @ignore\n   */\n  override ngOnDestroy(): void {\n    this._clearSubs();\n  }\n\n  #resolveName(field: AXValuableComponent): string | undefined {\n    const name = field.name as unknown;\n    const resolved = typeof name === 'function' ? (name as () => unknown)() : name;\n    return resolved as string | undefined;\n  }\n}\n","import { AXComponent, AXValuableComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport {\n  AfterContentChecked,\n  Component,\n  ContentChild,\n  HostBinding,\n  ViewContainerRef,\n  ViewEncapsulation,\n  afterNextRender,\n  effect,\n  inject,\n  input,\n  signal,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AXFormComponent, AXLabelMode } from './form.component';\n\n/**\n * A container component for form fields that provides styling and structure.\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-form-field',\n  template: `<ng-content></ng-content>`,\n  styleUrls: ['./form-field.component.css'],\n  encapsulation: ViewEncapsulation.None,\n\n  providers: [AXUnsubscriber, { provide: AXComponent, useExisting: AXFormFieldComponent }],\n})\nexport class AXFormFieldComponent extends MXBaseComponent implements AfterContentChecked {\n  /**\n   * Specifies the mode of the label in the form field.\n   *  @defaultValue 'static'\n   */\n  readonly labelMode = input<AXLabelMode>('static');\n\n  /**\n   *  @ignore\n   */\n  protected _labelMode = signal<AXLabelMode>(this.labelMode());\n\n  private unsubscriber = inject(AXUnsubscriber);\n\n  @ContentChild(AXValuableComponent)\n  private input: AXValuableComponent;\n\n  /**\n   *  @ignore\n   */\n  @ContentChild(AXLabelComponent)\n  private label: AXLabelComponent;\n\n  private form = inject(AXFormComponent, { optional: true });\n\n  private host = inject(ViewContainerRef);\n\n  /**\n   *  @ignore\n   */\n  protected prefix: HTMLElement;\n\n  /**\n   *  @ignore\n   */\n  constructor() {\n    super();\n\n    afterNextRender(() => {\n      this.setRequired();\n      this.listeningEvent();\n      // this.calcIndentSize();\n      this.autoSetLabelAssociation();\n    });\n\n    effect(() => {\n      this.setLabelMode();\n    });\n  }\n\n  ngAfterContentChecked(): void {\n    // this.calcIndentSize();\n  }\n\n  /**\n   * Calculates and sets the indentation size for the label based on the width of the prefix element.\n   * @ignore\n   */\n  protected calcIndentSize() {\n    const prefix = (this.input as any)?.getHostElement()?.querySelector('ax-prefix') as HTMLElement;\n\n    if (prefix && this.label) {\n      this.label.getHostElement().style.insetInlineStart = `calc(${prefix?.clientWidth}px + calc(var(--spacing) * 2) + calc(var(--spacing) * 3))`;\n      this.label.getHostElement().style.paddingInline = '0px';\n    }\n  }\n\n  /**\n   * Sets the required attribute for the input field based on validation rules.\n   * Automatically updates if validation rules change.\n   * @ignore\n   */\n  protected setRequired() {\n    this.autoSetRequired();\n    this.input?.validationRulesChange.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n      this.autoSetRequired();\n    });\n  }\n  /**\n   * Sets the label mode based on the form's label mode configuration.\n   * @ignore\n   */\n  protected setLabelMode() {\n    this._labelMode.set(this.form?.labelMode());\n  }\n\n  /**\n   * Subscribes to focus and blur events on the input element.\n   * Adds or removes the 'ax-state-focused' class to/from the host element based on the focus state.\n   * @ignone\n   */\n  protected listeningEvent() {\n    if (this.input instanceof AXCheckBoxComponent) return;\n    const focusEvent = this.input?.['onFocus'] as Subject<any>;\n    focusEvent?.subscribe((e) => {\n      // this.handleFloating('focus');\n      this.host.element.nativeElement.classList.add('ax-state-focused');\n    });\n    //\n    const blurEvent = this.input?.['onBlur'] as Subject<any>;\n    blurEvent?.subscribe((e) => {\n      // this.handleFloating('blur');\n      this.host.element.nativeElement.classList.remove('ax-state-focused');\n    });\n  }\n  // protected handleFloating(mode: 'focus' | 'blur') {\n  //   const _host = this.host.element.nativeElement as HTMLElement;\n  //   const placeholder = this.input;\n\n  //   switch (mode) {\n  //     case 'focus':\n  //       _host.classList.add('ax-state-floating');\n  //       this.label.getHostElement().style.insetInlineStart = 'inherit';\n\n  //       break;\n  //     case 'blur':\n  //       _host.classList.remove('ax-state-floating');\n\n  //       break;\n  //   }\n  // }\n\n  /**\n   *  @ignore\n   */\n  private autoSetRequired() {\n    if (this.label && this.input) {\n      if (this.label.required == null || this.label['autoSetRequired']) {\n        this.label.required = this.input.isRequired;\n        this.label['autoSetRequired'] = true;\n      }\n    }\n  }\n\n  /**\n   *  @ignore\n   */\n  private autoSetLabelAssociation() {\n    if (this.label && this.input) {\n      this.label.for = this.input as any;\n    }\n  }\n\n  /**\n   *  @ignore\n   */\n  @HostBinding('class')\n  get __hostClass(): string[] {\n    let hasValue;\n    let isCheckbox = this.input instanceof AXCheckBoxComponent;\n\n    if (this.input) {\n      const source = this.input.value as unknown;\n      const isSignal = typeof source === 'function';\n      const raw = isSignal ? (source as () => unknown)() : source;\n      // Classic select-box multiple and NX model values (lookup/combo-box) use array length.\n      // Other classic array editors (e.g. tag-box) keep the previous truthiness of the array itself.\n      if ((this.input instanceof AXSelectBoxComponent && this.input.multiple) || (isSignal && Array.isArray(raw))) {\n        hasValue = Array.isArray(raw) ? raw.length : (raw as { length?: number } | undefined)?.length;\n      } else {\n        hasValue = raw;\n      }\n    }\n\n    if (isCheckbox) {\n      return [`ax-state-static-label`];\n    } else {\n      return [`ax-state-${this._labelMode()}-label`, `${hasValue ? 'ax-state-has-value' : ''}`];\n    }\n  }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface AXFormConfig {}\n\nexport const AX_FORM_CONFIG = new InjectionToken<AXFormConfig>('AX_FORM_CONFIG', {\n  providedIn: 'root',\n  factory: () => {\n    return AXFormDefaultConfig;\n  },\n});\n\nexport const AXFormDefaultConfig: AXFormConfig = {};\n\nexport type PartialFormConfig = Partial<AXFormConfig>;\n\nexport function formConfig(config: PartialFormConfig = {}): AXFormConfig {\n  const result = {\n    ...AXFormDefaultConfig,\n    ...config,\n  };\n  return result;\n}\n","import { AXValuableComponent } from '@acorex/cdk/common';\nimport { AXValidationRuleOptions } from '@acorex/core/validation';\nimport { Directive, effect, inject, input, OnDestroy } from '@angular/core';\n\n@Directive({ selector: 'ax-validation-rule' })\nexport class AXValidationRuleDirective implements OnDestroy {\n  private host = inject(AXValuableComponent);\n\n  rule = input<string>();\n  options = input<Omit<AXValidationRuleOptions, 'message'>>();\n  message = input<string>();\n  disabled = input(false);\n\n  #disabledChanged = effect(() => {\n    if (this.disabled()) {\n      this.removeValidation();\n    } else {\n      this.addValidation();\n    }\n  });\n\n  ngOnDestroy() {\n    this.removeValidation();\n  }\n\n  private addValidation() {\n    this.host.addValidationRule({ rule: this.rule(), disabled: this.disabled(), options: this.ruleOptions });\n  }\n  private removeValidation() {\n    this.host.removeValidationRule({\n      rule: this.rule(),\n      disabled: this.disabled(),\n      options: this.ruleOptions,\n    });\n  }\n\n  private get ruleOptions(): AXValidationRuleOptions {\n    return Object.assign({ message: this.message(), name: this.#resolveName() }, this.options());\n  }\n\n  /** Classic editors expose `name` as a string getter; NX editors expose it as an `input()` signal. */\n  #resolveName(): string | undefined {\n    const name = this.host.name as unknown;\n    const resolved = typeof name === 'function' ? (name as () => unknown)() : name;\n    return resolved as string | undefined;\n  }\n}\n","import { AXComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXAlertComponent } from '@acorex/components/alert';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService, AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, Input, OnDestroy, ViewEncapsulation, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AXFormComponent, AXFormValidationEvent } from './form.component';\n\nexport type AXValidationSummaryDisplayMode = 'toast' | 'alert';\n\n/**\n * Displays validation summaries in the form of an alert.\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-validation-summary',\n  template: `\n    @if (displayMode === 'alert' && _content) {\n      <ax-alert color=\"danger\" [timeOut]=\"_timeOut\" #a (onClosed)=\"_handleOnDismissed()\">\n        <ax-icon></ax-icon>\n        <ax-title>{{ title | translate | async }}</ax-title>\n        <ax-content>\n          <div [innerHTML]=\"_content\"></div>\n        </ax-content>\n        <ax-footer>\n          <ax-suffix>\n            <ax-button text=\"Dismiss\" (onClick)=\"a.close()\"></ax-button>\n          </ax-suffix>\n        </ax-footer>\n      </ax-alert>\n    }\n  `,\n\n  encapsulation: ViewEncapsulation.None,\n  imports: [\n    AXAlertComponent,\n    AXDecoratorIconComponent,\n    AXDecoratorGenericComponent,\n    AXButtonComponent,\n    AsyncPipe,\n    AXTranslatorPipe,\n  ],\n  providers: [{ provide: AXComponent, useExisting: AXValidationSummaryComponent }],\n})\nexport class AXValidationSummaryComponent extends MXBaseComponent implements OnDestroy {\n  private _tosatService = inject(AXToastService);\n  private host = inject<AXFormComponent>(AXFormComponent, { optional: true });\n  private translateService = inject(AXTranslationService);\n\n  /**\n   *  @ignore\n   */\n  protected _content?: string = null;\n\n  /**\n   *  @ignore\n   */\n  private _title = '@acorex:validation.messages.title';\n\n  /**\n   * The title of the validation summary alert.\n   */\n  @Input()\n  public get title(): string {\n    return this._title;\n  }\n\n  /**\n   * Sets the title of the validation summary alert.\n   *\n   * @param v The title to be set.\n   */\n  public set title(v: string) {\n    this._title = v;\n  }\n\n  /**\n   * Specifies the display mode for the validation summary.\n   *\n   *  @defaultValue 'toast'\n   */\n  @Input()\n  displayMode: AXValidationSummaryDisplayMode = 'toast';\n\n  /**\n   * Specifies the time in milliseconds before the validation summary automatically hides.\n   */\n  @Input()\n  timeOut?: number;\n\n  /**\n   * Determines whether the validation summary should automatically hide after a specified time.\n   * @defaultValue false\n   */\n  @Input()\n  autoHide = false;\n\n  /**\n   *  @ignore\n   */\n  protected _timeOut: number;\n\n  /**\n   *  @ignore\n   */\n  private sub: Subscription;\n\n  /**\n   *  @ignore\n   */\n  constructor() {\n    super();\n    const host = this.host;\n\n    //\n    this.sub = host.onValidate.subscribe(async (e: AXFormValidationEvent) => {\n      if (e.result.result) {\n        this._content = null;\n      } else {\n        const failedRules = e.result.rules.filter((c) => !c.result && c.message);\n\n        this._content = `<ul>${failedRules.map((c) => this.formatRule({ title: c['title'] as string, message: c.message })).join('')}</ul>`;\n        this._timeOut = this.autoHide ? (this.timeOut ?? Math.max(failedRules.length * 1000, 2000)) : 0;\n\n        if (this.displayMode == 'toast') {\n          this._tosatService.show({\n            color: 'danger',\n            closeButton: true,\n            timeOut: this._timeOut,\n            timeOutProgress: true,\n            content: this._content,\n            title: await this.translateService.translateAsync(this.title),\n            location: 'bottom-center',\n          });\n        }\n      }\n      this.cdr.markForCheck();\n    });\n  }\n\n  /**\n   *  @ignore\n   */\n  private formatRule(rule: { title?: string; message: string }): string {\n    return rule.title ? `<li><b>${rule.title}:</b> ${rule.message}</li>` : `<li>${rule.message}</li>`;\n  }\n\n  /**\n   *  @ignore\n   */\n  protected _handleOnDismissed() {\n    this._content = null;\n  }\n\n  /**\n   *  @ignore\n   */\n  ngOnDestroy() {\n    this.sub?.unsubscribe();\n  }\n}\n","import { AXAlertModule } from '@acorex/components/alert';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXFormFieldComponent } from './form-field.component';\nimport { AXFormComponent } from './form.component';\nimport { AXValidationRuleDirective } from './validation-rule.directive';\nimport { AXValidationSummaryComponent } from './validation-summary.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    AXDecoratorModule,\n    AXAlertModule,\n    AXButtonModule,\n    AXValidationModule,\n    AXTranslationModule,\n    AXFormFieldComponent,\n    AXFormComponent,\n    AXValidationRuleDirective,\n    AXValidationSummaryComponent,\n  ],\n  exports: [AXFormFieldComponent, AXFormComponent, AXValidationRuleDirective, AXValidationSummaryComponent],\n  providers: [],\n})\nexport class AXFormModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}