{"version":3,"file":"ng-doc-ui-kit-cdk-combobox-host.mjs","sources":["../../../../libs/ui-kit/cdk/combobox-host/combobox-host.component.ts","../../../../libs/ui-kit/cdk/combobox-host/combobox-host.component.html","../../../../libs/ui-kit/cdk/combobox-host/ng-doc-ui-kit-cdk-combobox-host.ts"],"sourcesContent":["import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ElementRef,\n  forwardRef,\n  inject,\n  Input,\n  NgZone,\n  ViewChild,\n} from '@angular/core';\nimport {\n  NgDocBaseInput,\n  NgDocDisplayValueHost,\n  NgDocInputHost,\n  NgDocListHost,\n  NgDocOverlayHost,\n} from '@ng-doc/ui-kit/classes';\nimport { NgDocDropdownComponent } from '@ng-doc/ui-kit/components/dropdown';\nimport { NgDocDropdownHandlerDirective } from '@ng-doc/ui-kit/directives/dropdown-handler';\nimport { NgDocFocusCatcherDirective } from '@ng-doc/ui-kit/directives/focus-catcher';\nimport { ngDocZoneOptimize } from '@ng-doc/ui-kit/observables';\nimport { NgDocDisplayValueFunction, NgDocOverlayPosition } from '@ng-doc/ui-kit/types';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport {\n  DI_DEFAULT_COMPARE,\n  DICompareFunction,\n  DICompareHost,\n  DIControl,\n  DIStateControl,\n  injectHostControl,\n  provideCompareHost,\n  provideHostControl,\n} from 'di-controls';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n  selector: 'ng-doc-combobox-host',\n  templateUrl: './combobox-host.component.html',\n  styleUrls: ['./combobox-host.component.scss'],\n  providers: [\n    provideHostControl(forwardRef(() => NgDocComboboxHostComponent)),\n    provideCompareHost(forwardRef(() => NgDocComboboxHostComponent)),\n    {\n      provide: NgDocOverlayHost,\n      useExisting: forwardRef(() => NgDocComboboxHostComponent),\n    },\n    {\n      provide: NgDocInputHost,\n      useExisting: forwardRef(() => NgDocComboboxHostComponent),\n    },\n    {\n      provide: NgDocDisplayValueHost,\n      useExisting: forwardRef(() => NgDocComboboxHostComponent),\n    },\n    {\n      provide: NgDocListHost,\n      useExisting: forwardRef(() => NgDocComboboxHostComponent),\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NgDocFocusCatcherDirective, NgDocDropdownHandlerDirective],\n})\n@UntilDestroy()\nexport class NgDocComboboxHostComponent<T>\n  extends DIControl<T>\n  implements\n    NgDocOverlayHost,\n    NgDocInputHost<string>,\n    DICompareHost<T>,\n    NgDocDisplayValueHost<T>,\n    NgDocListHost,\n    AfterContentInit\n{\n  @Input()\n  compareFn: DICompareFunction<T> = DI_DEFAULT_COMPARE;\n\n  @Input()\n  displayValueFn: NgDocDisplayValueFunction<T> = String;\n\n  @ViewChild('origin', { read: ElementRef, static: true })\n  origin?: ElementRef<HTMLElement>;\n\n  @ContentChild(NgDocDropdownComponent)\n  dropdown?: NgDocDropdownComponent;\n\n  @ContentChild(NgDocBaseInput)\n  inputControl?: NgDocBaseInput<string>;\n\n  readonly positions: NgDocOverlayPosition[] = ['bottom-center', 'top-center'];\n\n  protected readonly ngZone: NgZone = inject(NgZone);\n\n  constructor() {\n    super({\n      host: injectHostControl({ skipSelf: true, optional: true }),\n      onChildControlChange: (control) => {\n        if (control instanceof DIStateControl) {\n          this.dropdown?.close();\n        }\n      },\n    });\n  }\n\n  ngAfterContentInit(): void {\n    this.inputControl?.changes\n      .pipe(\n        filter(() => !!this.inputControl?.isFocused),\n        untilDestroyed(this),\n        ngDocZoneOptimize(this.ngZone),\n      )\n      .subscribe(() => this.dropdown?.open());\n  }\n\n  get listHostOrigin(): ElementRef<HTMLElement> | undefined {\n    return this.inputControl?.elementRef;\n  }\n\n  get searchText(): string {\n    return this.hasValue ? '' : this.inputControl?.value || '';\n  }\n\n  get width(): number {\n    return this.origin?.nativeElement.offsetWidth || 0;\n  }\n\n  get panelClass(): string {\n    return `ng-doc-combobox-host-overlay`;\n  }\n\n  clickEvent(): void {\n    if (!this.disabled) {\n      this.dropdown?.open();\n    }\n  }\n}\n","<label\n\tclass=\"ng-doc-dropdown-host\"\n\tngDocFocusCatcher\n\t[ngDocDropdownHandler]=\"dropdown\"\n\t(click)=\"clickEvent()\"\n\t#origin>\n\t<ng-content></ng-content>\n</label>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}