{"version":3,"file":"ngx-t-forms-map-mat-options-keys-BOX1dYlB.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/map-mat-options-keys/map-mat-options-keys.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/map-mat-options-keys/map-mat-options-keys.html"],"sourcesContent":["import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  OnDestroy,\r\n  Optional,\r\n  Self,\r\n  output,\r\n} from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Subject } from 'rxjs';\r\nimport { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\nimport { FormColumnInputs, TreeNode } from 'ngx-t-forms-types';\r\nimport { DataTreeComponent } from '../api-value-access-rules/elements/data-tree/data-tree.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n  selector: 'lib-map-mat-options-keys',\r\n  imports: [DataTreeComponent,CommonModule],\r\n  providers: [{ provide: MatFormFieldControl, useExisting: MapMatOptionsKeys }],\r\n  standalone: true,\r\n  templateUrl: './map-mat-options-keys.html',\r\n  styleUrl: './map-mat-options-keys.css',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    '[id]': 'id',\r\n  },\r\n})\r\nexport class MapMatOptionsKeys implements MatFormFieldControl<TreeNode[] | string | null>, OnDestroy {\r\n  static nextId = 0;\r\n  private _mapToData: unknown;\r\n  // -- MatFormFieldControl Boilerplate --\r\n  stateChanges = new Subject<void>();\r\n  id = `lib-map-mat-options-keys-${MapMatOptionsKeys.nextId++}`;\r\n  placeholder = '';\r\n  focused = false;\r\n  touched = false;\r\n  controlType?: string | undefined;\r\n  autofilled?: boolean | undefined;\r\n  userAriaDescribedBy?: string | undefined;\r\n  disableAutomaticLabeling?: boolean | undefined;\r\n  required = false;\r\n\r\n  // -- Inputs --\r\n  @Input() disabled = false;\r\n  @Input() errors: IConfigElementError[] | undefined = [];\r\n  @Input() value: TreeNode[] | string | null = null;\r\n  @Input() formInputs: FormColumnInputs[] = [];\r\n  @Input() set mapToData(value: unknown){\r\n    this._mapToData = value;\r\n  };\r\n  get mapToData(): unknown {\r\n    return this._mapToData;\r\n  }\r\n\r\n  // -- Outputs --\r\n  readonly valueChanged = output<TreeNode[] | string | null>();\r\n\r\n  constructor(\r\n    @Optional() @Self() public ngControl: NgControl,\r\n    private _elementRef: ElementRef<HTMLElement>\r\n  ) {\r\n    if (this.ngControl) {\r\n      this.ngControl.valueAccessor = this;\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.stateChanges.complete();\r\n  }\r\n\r\n  // -- Getters for Template --\r\n  get empty(): boolean {\r\n    if (this.value == null) return true;\r\n    if (typeof this.value === 'string') return this.value === '';\r\n    return Array.isArray(this.value) && 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 hasError =\r\n      !!this.ngControl?.control?.errors ||\r\n      ((this.errors?.length ?? 0) > 0 && this.touched);\r\n    return (!this.value && !!this.required) || hasError;\r\n  }\r\n\r\n  // -- MatFormFieldControl Methods --\r\n  setDescribedByIds(ids: string[]): void {\r\n    if (this._elementRef?.nativeElement) {\r\n      const controlElement = this._elementRef.nativeElement.querySelector(\r\n        '.lib-map-mat-options-keys'\r\n      );\r\n      if (controlElement) {\r\n        controlElement.setAttribute('aria-describedby', ids.join(' '));\r\n      }\r\n    }\r\n  }\r\n\r\n  onContainerClick(_event: MouseEvent): 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.onTouched();\r\n      this.touched = true;\r\n    }\r\n  }\r\n\r\n  // -- ControlValueAccessor --\r\n  writeValue(value: TreeNode[] | string | null): void {\r\n    this.value = value;\r\n    this.stateChanges.next();\r\n  }\r\n\r\n  registerOnChange(_fn: (value: TreeNode[] | string | null) => void): void {\r\n    // Handled by parent or ngControl usually, but good practice to have stub\r\n  }\r\n\r\n  registerOnTouched(fn: () => void): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  pathChanged(path: TreeNode[] | string): void {\r\n    if (!Array.isArray(path) && typeof path !== 'string') return;\r\n    this.value = path;\r\n    this.valueChanged.emit(path);\r\n    this.stateChanges.next();\r\n  }\r\n\r\n \r\n}\r\n","<div class=\"lib-map-mat-options-keys\">\r\n  <lib-data-tree\r\n    [data]=\"mapToData\"\r\n    [value]=\"value || ''\"\r\n    [formInputs]=\"formInputs\"\r\n    (pathChanged)=\"pathChanged($event)\">\r\n  </lib-data-tree>\r\n</div>\r\n"],"names":[],"mappings":"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"}