{"version":3,"file":"dshch-rad-ui-autocomplete.mjs","sources":["../../../projects/rad-ui/autocomplete/autocomplete.component.ts","../../../projects/rad-ui/autocomplete/autocomplete.component.html","../../../projects/rad-ui/autocomplete/module.ts","../../../projects/rad-ui/autocomplete/dshch-rad-ui-autocomplete.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  forwardRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { Element } from '@dshch/rad-ui/common';\nimport { distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\n\nexport interface IAucompleteItem {\n  key: string;\n  value: string;\n  customValue?: string;\n}\n\n@Component({\n  selector: 'rad-ui-autocomplete',\n  templateUrl: './autocomplete.component.html',\n  styleUrls: ['./autocomplete.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => AutocompleteComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AutocompleteComponent implements OnInit, OnChanges, OnDestroy, ControlValueAccessor {\n  @Input() id: string = '';\n  @Input() label: string = '';\n  @Input() tooltip: string = '';\n  @Input() required = false;\n  @Input() disabled = false;\n  @Input() formControl: FormControl = new FormControl();\n  @Input() errorMessages: { [key: string]: string } = {};\n\n  @Input()\n  get items(): IAucompleteItem[] {\n    return this._items;\n  }\n\n  set items(values: IAucompleteItem[]) {\n    this._items = values;\n    this.filter(this.formControl.value);\n    this.cdr.detectChanges();\n  }\n\n  @Output() search$: Subject<string> = new Subject();\n\n  _open = false;\n\n  private _items: IAucompleteItem[] = [];\n  private value: string = '';\n  private unsubscribe$: Subject<void> = new Subject();\n  private open$: Subject<boolean> = new Subject();\n  private close$: Subject<boolean> = new Subject();\n\n  filteredItems: IAucompleteItem[] = [];\n\n  onChange = (value: string) => {\n  };\n\n  onTouched = () => {\n  };\n\n  constructor(private cdr: ChangeDetectorRef) {\n  }\n\n  ngOnInit() {\n    if (!this.id) {\n      this.id = Element.generateId();\n    }\n  }\n\n  private initFormControl(): void {\n    // Для асинхронных валидаторов\n    this.formControl.statusChanges.pipe(distinctUntilChanged(), takeUntil(this.unsubscribe$)).subscribe((value) => {\n      if (value === 'VALID' || value === 'INVALID') {\n        this.cdr.detectChanges();\n      }\n    });\n\n    // Переопределяем markAsTouched чтобы запустить обнаружение изменений\n    const oldMarkAsTouched = this.formControl.markAsTouched.bind(this.formControl);\n    this.formControl.markAsTouched = (opts?: { onlySelf?: boolean }) => {\n      oldMarkAsTouched(opts);\n      this.cdr.markForCheck();\n    };\n\n    // Пустая строка => null\n    this.formControl.valueChanges\n      .pipe(\n        filter((value) => value === '' || value === null),\n        takeUntil(this.unsubscribe$),\n      )\n      .subscribe((value) => {\n        if (value === '') {\n          this.formControl.setValue(null);\n        }\n        this.cdr.detectChanges();\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.hasOwnProperty('formControl')) {\n      this.initFormControl();\n    }\n  }\n\n  get open() {\n    return this.open$.pipe(distinctUntilChanged(), takeUntil(this.unsubscribe$));\n  }\n\n  get close() {\n    return this.close$.pipe(distinctUntilChanged(), takeUntil(this.unsubscribe$));\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribe$.next();\n    this.unsubscribe$.complete();\n    this.open$.complete();\n    this.close$.complete();\n    this.search$.complete();\n  }\n\n  writeValue(value: string): void {\n    if (value !== this.value) {\n      this.value = value;\n      this.onChange(this.value);\n      this.cdr.detectChanges();\n    }\n  }\n\n  registerOnChange(fn: (value: string) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  opened() {\n    this._open = true;\n    this.open$.next(this._open);\n    this.cdr.detectChanges();\n  }\n\n  closed() {\n    setTimeout(() => {\n      this._open = false;\n      this.close$.next(this._open);\n      this.cdr.detectChanges();\n    }, 100);\n  }\n\n  trackByFn(index: number, item: IAucompleteItem): number | string {\n    return item.key; // or item.id\n  }\n\n  selectItem(item: IAucompleteItem) {\n    this.formControl.patchValue(item.value);\n  }\n\n  _search(value: any) {\n    this.filter(this.formControl.value);\n\n    this.search$.next(this.formControl.value);\n    this.cdr.detectChanges();\n  }\n\n  private filter(searchValue: any) {\n    searchValue = String(searchValue).toLowerCase();\n\n    const filteredItems: Array<IAucompleteItem> = [];\n\n    for (const item of this.items) {\n      if (typeof item.value === 'number') {\n        item.value = String(item.value);\n      } else if (typeof item.value !== 'string') {\n        item.value = '';\n      }\n\n      if (searchValue === '' || item.value.toLowerCase().indexOf(searchValue) + 1) {\n        filteredItems.push(item);\n      }\n    }\n\n    this.filteredItems = filteredItems;\n  }\n}\n","<div class=\"row form-group mx-0\">\n  <rad-ui-label\n    *ngIf=\"label\"\n    [id]=\"id\"\n    [label]=\"label\"\n    [required]=\"required\"\n    [tooltip]=\"tooltip\"\n    class=\"col-12 col-md-6 pl-0\"\n  ></rad-ui-label>\n  <div\n    [id]=\"id\"\n    [ngClass]=\"{ 'col-12 pr-0 form-control-static autocomplete__input-wrap': true, 'col-md-6': label, 'pl-0': !label }\"\n  >\n    <input\n      trim=\"blur\"\n      class=\"form-control\"\n      type=\"text\"\n      autocomplete=\"off\"\n      autocapitalize=\"off\"\n      [formControl]=\"formControl\"\n      (click)=\"opened()\"\n      (focus)=\"opened()\"\n      (blur)=\"closed()\"\n      (change)=\"_search($event)\"\n    />\n\n    <!--    Выпадающий список-->\n    <div *ngIf=\"_open\" class=\"autocomplete__dropdown\">\n      <ul class=\"autocomplete__list\">\n        <li\n          *ngFor=\"let item of filteredItems; trackBy: trackByFn\"\n          class=\"autocomplete__option\"\n          role=\"option\"\n          (click)=\"selectItem(item)\"\n        >\n          {{ item.customValue || item.value }}\n        </li>\n      </ul>\n    </div>\n\n    <rad-ui-control-errors\n      [control]=\"formControl\"\n      [touched]=\"formControl.touched\"\n      [errorMessages]=\"errorMessages\"\n    ></rad-ui-control-errors>\n  </div>\n</div>\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { RadUILabelModule } from \"@dshch/rad-ui/label\";\nimport { RadUIControlErrorsModule } from \"@dshch/rad-ui/control-errors\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { AutocompleteComponent } from \"./autocomplete.component\";\n\n@NgModule({\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    RadUILabelModule,\n    RadUIControlErrorsModule,\n  ],\n  exports: [\n    AutocompleteComponent,\n  ],\n  declarations: [\n    AutocompleteComponent,\n  ],\n})\nexport class RadUIAutocompleteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}