{"version":3,"file":"ngx-t-forms-config-mscoa-additional-inputs.component-BHiOEQe4.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/config-mscoa-additional-inputs/config-mscoa-additional-inputs.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/config-mscoa-additional-inputs/config-mscoa-additional-inputs.component.html"],"sourcesContent":["import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  DestroyRef,\r\n  Input,\r\n  ViewEncapsulation,\r\n  computed,\r\n  inject,\r\n  output,\r\n  signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NgControl } from '@angular/forms';\r\nimport { MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { Subject, catchError, of, take, tap, type Observable } from 'rxjs';\r\n\r\nimport type { FormColumnInputs, IGetTreeResponse } from 'ngx-t-forms-types';\r\nimport { EmptyStateComponent } from '../_shared/empty-state/empty-state.component';\r\nimport type { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\n\r\n/**\r\n * A configured form input paired with the MSCOA account-segment it links to.\r\n *\r\n * `segment` is `undefined` when the user selects \"None\" (i.e. the input is not\r\n * bound to any account segment).\r\n */\r\nexport interface ConfiguredMscoaInput extends FormColumnInputs {\r\n  /** Selected account-segment key. `undefined` when the user picks \"None\". */\r\n  segment: string | undefined;\r\n}\r\n\r\n/** A selectable account-segment option (plus the synthetic \"None\" entry). */\r\ninterface SegmentOption {\r\n  readonly value: string | undefined;\r\n  readonly label: string;\r\n}\r\n\r\n/**\r\n * Internal editor that links each configured form input to an MSCOA\r\n * account-segment, implementing `MatFormFieldControl<ConfiguredMscoaInput[]>`\r\n * for the dynamic-data-edit configuration surface.\r\n *\r\n * Rendered by `t-dynamic-data-edit`, which supplies the surrounding field label,\r\n * hint, and validation errors — so this component owns only the per-input\r\n * segment selectors and the empty-state hint.\r\n *\r\n * NOTE: `MatFormFieldControl<T>` mandates plain mutable `value` / `disabled` /\r\n * `required` / `placeholder` / `id` members, `@Input()` decorators, the\r\n * `focused` / `touched` / `stateChanges` members, and the `useExisting`\r\n * provider. These are framework wiring, not defects — the CLAUDE.md bans on\r\n * `@Input()` / `useExisting` do not apply to MatFormFieldControl integration.\r\n */\r\n@Component({\r\n  selector: 'lib-config-mscoa-additional-inputs',\r\n  imports: [\r\n    MatListModule,\r\n    MatToolbarModule,\r\n    MatFormFieldModule,\r\n    MatSelectModule,\r\n    EmptyStateComponent,\r\n  ],\r\n  templateUrl: './config-mscoa-additional-inputs.component.html',\r\n  styleUrls: ['./config-mscoa-additional-inputs.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.Emulated,\r\n  providers: [\r\n    { provide: MatFormFieldControl, useExisting: ConfigMscoaAdditionalInputsComponent },\r\n  ],\r\n  host: {\r\n    'class': 'lib-config-mscoa-additional-inputs',\r\n    '[id]': 'id',\r\n    '[attr.aria-describedby]': 'describedBy',\r\n  },\r\n})\r\nexport class ConfigMscoaAdditionalInputsComponent\r\n  implements MatFormFieldControl<ConfiguredMscoaInput[]>\r\n{\r\n  static nextId = 0;\r\n\r\n  // ---- MatFormFieldControl wiring (framework-mandated plain members) -------\r\n\r\n  /** Emits whenever a piece of `MatFormFieldControl` state changes. */\r\n  readonly stateChanges = new Subject<void>();\r\n  readonly controlType = 'lib-config-mscoa-additional-inputs';\r\n\r\n  id = `app-config-mscoa-additional-inputs-${ConfigMscoaAdditionalInputsComponent.nextId++}`;\r\n  placeholder = '';\r\n  focused = false;\r\n  touched = false;\r\n  describedBy = '';\r\n  autofilled: boolean | undefined = undefined;\r\n  userAriaDescribedBy: string | undefined = undefined;\r\n  disableAutomaticLabeling: boolean | undefined = undefined;\r\n\r\n  readonly ngControl = inject(NgControl, { self: true, optional: true });\r\n\r\n  readonly #destroyRef = inject(DestroyRef);\r\n\r\n  // ---- Public input/output contract ---------------------------------------\r\n\r\n  /** Whether all segment selectors are inert. */\r\n  @Input() disabled = false;\r\n\r\n  /** Whether a value is required (drives the MFC error state). */\r\n  @Input() required = false;\r\n\r\n  /** Validation errors surfaced by the parent for error-state derivation. */\r\n  @Input() errors: IConfigElementError[] | undefined = [];\r\n\r\n  /** Data context; the add-input affordance is gated on `mapToData?.id`. */\r\n  @Input() mapToData: FormColumnInputs | undefined = undefined;\r\n\r\n  /**\r\n   * One-shot stream of the MSCOA tree. The first emitted response's\r\n   * `accountTreeKeys` populate the per-input segment options; later\r\n   * assignments are ignored (the stream is consumed once).\r\n   */\r\n  @Input() set getMscoaTree(options$: Observable<IGetTreeResponse | undefined>) {\r\n    if (!options$ || this.#mscoaInitiated) {\r\n      return;\r\n    }\r\n    this.#mscoaInitiated = true;\r\n    options$\r\n      .pipe(\r\n        take(1),\r\n        tap((options) => this.#accountTreeKeys.set(options?.accountTreeKeys ?? [])),\r\n        catchError(() => of(undefined)),\r\n        takeUntilDestroyed(this.#destroyRef),\r\n      )\r\n      .subscribe();\r\n  }\r\n\r\n  /** Emits the full configured-input list whenever a segment changes. */\r\n  readonly valueChanged = output<ConfiguredMscoaInput[]>();\r\n\r\n  #mscoaInitiated = false;\r\n  readonly #accountTreeKeys = signal<string[]>([]);\r\n  readonly #value = signal<ConfiguredMscoaInput[]>([]);\r\n\r\n  /** Currently hovered list row index, for hover affordances. */\r\n  protected readonly hovered = signal<number | null>(null);\r\n\r\n  /**\r\n   * Segment options offered per input: every account-tree key plus a trailing\r\n   * synthetic \"None\" entry that clears the binding.\r\n   */\r\n  protected readonly limitInputTo = computed<SegmentOption[]>(() => [\r\n    ...this.#accountTreeKeys().map((key) => ({ value: key as string | undefined, label: key })),\r\n    { value: undefined, label: 'None' },\r\n  ]);\r\n\r\n  /**\r\n   * Whether the empty-state hint may render.\r\n   *\r\n   * A plain getter (not a `computed()`) because `mapToData` is a framework-style\r\n   * mutable `@Input` rather than a signal — OnPush re-evaluates this binding\r\n   * each change-detection pass.\r\n   */\r\n  protected get canAddInputs(): boolean {\r\n    return !!this.mapToData?.id;\r\n  }\r\n\r\n  /** Configured inputs to render. */\r\n  protected readonly inputs = this.#value.asReadonly();\r\n\r\n  /** Current MatFormFieldControl value (the configured-input list). */\r\n  @Input()\r\n  get value(): ConfiguredMscoaInput[] {\r\n    return this.#value();\r\n  }\r\n  set value(val: ConfiguredMscoaInput[]) {\r\n    this.#value.set(val ?? []);\r\n    this.stateChanges.next();\r\n  }\r\n\r\n  // ---- MatFormFieldControl framework getters ------------------------------\r\n\r\n  get empty(): boolean {\r\n    return this.#value().length === 0;\r\n  }\r\n\r\n  get shouldLabelFloat(): boolean {\r\n    return this.focused || !this.empty;\r\n  }\r\n\r\n  get errorState(): boolean {\r\n    const requiredUnset = this.empty && this.required;\r\n    const ngControlError = this.ngControl?.errors != null;\r\n    const externalError = (this.errors?.length ?? 0) > 0 && this.touched;\r\n    return requiredUnset || ngControlError || externalError;\r\n  }\r\n\r\n  setDescribedByIds(ids: string[]): void {\r\n    this.describedBy = ids.join(' ');\r\n    this.stateChanges.next();\r\n  }\r\n\r\n  onContainerClick(): void {\r\n    this.markAsTouched();\r\n    this.stateChanges.next();\r\n  }\r\n\r\n  onTouched: () => void = () => {};\r\n\r\n  markAsTouched(): void {\r\n    if (!this.touched) {\r\n      this.touched = true;\r\n      this.onTouched();\r\n      this.stateChanges.next();\r\n    }\r\n  }\r\n\r\n  // ---- Behaviour ----------------------------------------------------------\r\n\r\n  /**\r\n   * Assigns the chosen account-segment to the input at `index` and emits the\r\n   * updated list immediately. Selecting \"None\" (`undefined`) clears the binding.\r\n   */\r\n  inputSegmentChanged(\r\n    event: { detail?: { value: string }; value?: string },\r\n    index: number,\r\n  ): void {\r\n    const detailValue = event.detail?.value ?? event.value;\r\n    const current = this.#value();\r\n    const item = current[index];\r\n    if (!item) {\r\n      return;\r\n    }\r\n    const next = current.map((input, i) =>\r\n      i === index\r\n        ? { ...input, segment: detailValue === 'None' ? undefined : detailValue }\r\n        : input,\r\n    );\r\n    this.#value.set(next);\r\n    this.markAsTouched();\r\n    this.stateChanges.next();\r\n    this.valueChanged.emit(next);\r\n  }\r\n}\r\n","@if (inputs().length > 0) {\r\n  <mat-list class=\"lib-config-mscoa-additional-inputs__list\">\r\n    <mat-toolbar class=\"lib-config-mscoa-additional-inputs__heading\">\r\n      Additional inputs configuration\r\n    </mat-toolbar>\r\n    @for (input of inputs(); track input.id; let i = $index) {\r\n      <mat-form-field\r\n        class=\"lib-config-mscoa-additional-inputs__row\"\r\n        appearance=\"outline\"\r\n        subscriptSizing=\"dynamic\"\r\n        (mouseover)=\"hovered.set(i)\"\r\n        (mouseleave)=\"hovered.set(null)\">\r\n        <mat-label>{{ input.label }}</mat-label>\r\n        <mat-select\r\n          matNativeControl\r\n          [disabled]=\"disabled\"\r\n          [value]=\"input.segment\"\r\n          placeholder=\"select segment\"\r\n          (selectionChange)=\"inputSegmentChanged($event, i)\">\r\n          @for (segment of limitInputTo(); track segment.label) {\r\n            <mat-option [value]=\"segment.value\">{{ segment.label }}</mat-option>\r\n          }\r\n        </mat-select>\r\n        <mat-hint>Link formula to an input value</mat-hint>\r\n      </mat-form-field>\r\n    }\r\n  </mat-list>\r\n} @else if (canAddInputs) {\r\n  <lib-empty-state\r\n    icon=\"info\"\r\n    message=\"No input configuration available.\" />\r\n}\r\n"],"names":["i1","i3","i4"],"mappings":"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"}