{"version":3,"file":"kolkov-ngx-dadata.mjs","sources":["../../../projects/ngx-dadata/src/lib/ngx-dadata.service.ts","../../../projects/ngx-dadata/src/lib/dadata-config.ts","../../../projects/ngx-dadata/src/lib/ngx-dadata.component.ts","../../../projects/ngx-dadata/src/lib/ngx-dadata.component.html","../../../projects/ngx-dadata/src/lib/ngx-dadata.module.ts","../../../projects/ngx-dadata/src/public-api.ts","../../../projects/ngx-dadata/src/kolkov-ngx-dadata.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {DadataResponse} from './models/dadata-response';\nimport {Bounds, DadataConfig, Location} from './dadata-config';\n\nexport enum DadataType {\n  fio = 'fio',\n  address = 'address',\n  party = 'party',\n  bank = 'bank',\n  email = 'email'\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgxDadataService {\n  apiKey = '';\n\n  constructor(private http: HttpClient) {\n  }\n\n  setApiKey(key: string) {\n    this.apiKey = key;\n  }\n\n  // eslint-disable-next-line max-len\n  getData(value: string, type: DadataType = DadataType.address, config: DadataConfig): Observable<DadataResponse> {\n    const httpOptions = {\n      headers: new HttpHeaders({\n        Accept: 'application/json',\n        'Content-Type': 'application/json',\n        Authorization: 'Token ' + this.apiKey,\n      })\n    };\n    const body = Object.assign(\n      {},\n      {query: value},\n      {count: config?.limit},\n      {location: config?.locations},\n      {location_bust: config?.locationsBoost},\n      {from_bound: config?.bounds?.fromBound},\n      {to_bound: config?.bounds?.toBound}\n    );\n    return this.http.post<DadataResponse>('https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/' + type, body, httpOptions);\n  }\n}\n","import {DadataType} from './ngx-dadata.service';\n\nexport interface Location {\n  country?: string;\n  country_iso_code?: string;\n  region?: string;\n  area?: string;\n  city?: string;\n  street?: string;\n  street_type_full?: string;\n  settlement_type_full?: string;\n  city_district_type_full?: string;\n  city_type_full?: string;\n  area_type_full?: string;\n  region_type_full?: string;\n  kladr_id?: string;\n  region_fias_id?: string;\n  area_fias_id?: string;\n  city_fias_id?: string;\n  settlement_fias_id?: string;\n  street_fias_id?: string;\n}\n\nexport interface Bound {\n  value: 'country' | 'region' | 'city' | 'street' | 'settlement' | 'area' | 'house';\n}\n\nexport interface Bounds {\n  fromBound?: Bound;\n  toBound?: Bound;\n}\n\nexport interface DadataConfig {\n  apiKey: string;\n  type?: DadataType;\n  delay?: number;\n  limit?: number;\n  width?: 'auto' | string;\n  minWidth?: '0' | string;\n  partyAddress?: 'city' | 'full';\n  locations?: Location[];\n  locationsBoost?: Location[];\n  bounds?: Bounds;\n}\n\nexport const DadataConfigDefault: DadataConfig = {\n  apiKey: '',\n  type: DadataType.address,\n  delay: 500,\n  limit: 10,\n  width: 'auto',\n  minWidth: '0',\n  partyAddress: 'city',\n  locations: null,\n};\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostListener, Inject,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport {DadataType, NgxDadataService} from './ngx-dadata.service';\nimport {Subject, timer} from 'rxjs';\nimport {debounce} from 'rxjs/operators';\nimport {DadataResponse} from './models/dadata-response';\nimport {DadataSuggestion} from './models/suggestion';\nimport {DadataConfig, DadataConfigDefault} from './dadata-config';\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {DOCUMENT} from '@angular/common';\nimport {unwrapHtmlForSink} from 'safevalues';\nimport {createHtml} from 'safevalues/implementation/html_impl';\n\n/*const NGX_DADATA_VALIDATOR = {\n  provide: NG_VALIDATORS,\n  useExisting: forwardRef(() => NgxDadataComponent),\n  multi: true,\n};*/\n\nexport function createDaDataValidator(value) {\n  return (c: FormControl) => {\n    const err = {\n      rangeError: {\n        given: c.value,\n        expected: value,\n      }\n    };\n\n    return (c.value !== value) ? err : null;\n  };\n}\n\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet uniqueDadataIdCounter = 0;\n\n@Component({\n  selector: 'ngx-dadata',\n  templateUrl: './ngx-dadata.component.html',\n  styleUrls: ['./ngx-dadata.component.scss'],\n  providers: [\n    {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => NgxDadataComponent),\n    multi: true\n  }, /*NGX_DADATA_VALIDATOR*/]\n})\nexport class NgxDadataComponent implements OnInit, ControlValueAccessor, OnChanges {\n  private v: any = '';\n  currentFocus = -1;\n\n  opened = false;\n\n  data: DadataSuggestion[] = [];\n\n  @Input() config: DadataConfig = DadataConfigDefault;\n  @Input() apiKey: string;\n  @Input() disabled = null;\n  @Input() type = DadataType.address;\n  @Input() limit = DadataConfigDefault.limit;\n  @Input() placeholder = '';\n  @Input() locations = null;\n\n  @Output() selectedSuggestion: DadataSuggestion;\n  @Output() selected: EventEmitter<DadataSuggestion> = new EventEmitter<DadataSuggestion>();\n  // @Output() selectedData = new EventEmitter<DaDataAddress | DaDataFIO | DaDataBank | DaDataParty | DaDataEmail>();\n  // @Output() selectedString = new EventEmitter<string>();\n\n  @ViewChild('inputValue', { static: true }) inputValue: ElementRef;\n\n  private inputString$ = new Subject<string>();\n\n  /** Unique ID to be used by autocomplete trigger's \"aria-owns\" property. */\n  id = `ngx-dadata-${uniqueDadataIdCounter++}`;\n\n  // onSuggestionSelected = (value: string) => {};\n  onTouched = () => {};\n  propagateChange: any = () => {};\n  validateFn: any = () => {};\n\n  constructor(\n    private dataService: NgxDadataService,\n    private r: Renderer2,\n    private elRef: ElementRef,\n    @Inject(DOCUMENT) private document: Document,\n    ) {\n  }\n\n  get value(): any {\n    return this.v;\n  }\n\n  set value(v: any) {\n    if (v !== this.v) {\n      this.v = v;\n      this.propagateChange(v);\n    }\n  }\n\n  ngOnInit() {\n    /*this.validateFn = createDaDataValidator(this._value);\n    this.propagateChange(this._value);*/\n    this.type = this.config.type;\n    this.locations = this.config.locations;\n    this.dataService.setApiKey(this.apiKey ? this.apiKey : this.config.apiKey);\n    this.inputString$.pipe(\n      debounce(() => timer(this.config.delay ? this.config.delay : 500)),\n    ).subscribe(x => {\n      this.dataService.getData(x, this.type, this.config)\n        .subscribe((y: DadataResponse) => {\n        this.data = y.suggestions;\n        if (this.data.length) {\n          this.opened = true;\n        }\n      });\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.value) {\n      // console.log('ngOnChanges');\n    }\n  }\n\n  getData(value: string) {\n    this.inputString$.next(value);\n    this.currentFocus = -1;\n  }\n\n  onClick(e: MouseEvent, item: DadataSuggestion) {\n    this.inputValue.nativeElement.value = item.value;\n    this.propagateChange(item.value);\n    this.inputValue.nativeElement.focus();\n    this.selectedSuggestion = item;\n    this.data = [];\n    this.currentFocus = -1;\n    this.opened = false;\n    this.selected.emit(item);\n    // this.selectedData.emit(item.data);\n    // this.selectedString.emit(item.value);\n  }\n\n  @HostListener('document:click', ['$event'])\n  onOutsideClick($event: MouseEvent) {\n    if (!this.opened) {\n      return;\n    }\n    if (!this.elRef.nativeElement.contains($event.target)) {\n      this.data = [];\n      this.opened = false;\n    }\n  }\n\n  onArrowDown() {\n    this.removeFocus(this.currentFocus);\n    if (this.currentFocus >= this.data.length - 1) {\n      this.currentFocus = 0;\n    } else {\n      this.currentFocus++;\n    }\n    this.setFocus(this.currentFocus);\n  }\n\n  onArrowUp() {\n    this.removeFocus(this.currentFocus);\n    if (this.currentFocus === 0) {\n      this.currentFocus = this.data.length - 1;\n    } else {\n      this.currentFocus--;\n    }\n    this.setFocus(this.currentFocus);\n  }\n\n  onEnter(event: KeyboardEvent) {\n    this.selectedSuggestion = this.data[this.currentFocus];\n    this.inputValue.nativeElement.value = this.selectedSuggestion.value;\n    this.data = [];\n    this.currentFocus = -1;\n    this.propagateChange(this.selectedSuggestion.value);\n    this.selected.emit(this.selectedSuggestion);\n    // this.selectedData.emit(this.selectedSuggestion.data);\n    // this.selectedString.emit(this.selectedSuggestion.value);\n  }\n\n  setFocus(id: number) {\n    const activeEl = this.document.getElementById(id + 'item');\n    this.r.addClass(activeEl, 'active');\n  }\n\n  removeFocus(id: number) {\n    if (id !== -1) {\n      const activeEl = this.document.getElementById(id + 'item');\n      this.r.removeClass(activeEl, 'active');\n    }\n  }\n\n  writeValue(value: any): void {\n    if (value !== undefined && value !== null) {\n      this.v = value;\n    } else {\n      this.v = '';\n    }\n\n    this.r.setProperty(this.inputValue.nativeElement, 'innerHTML', unwrapHtmlForSink(createHtml(this.v)));\n  }\n\n  /**\n   * Set the function to be called\n   * when the control receives a change event.\n   *\n   * @param fn a function\n   */\n  registerOnChange(fn: any): void {\n    // this.onSuggestionSelected = fn;\n    this.propagateChange = fn;\n  }\n\n  /**\n   * Set the function to be called\n   * when the control receives a touch event.\n   *\n   * @param fn a function\n   */\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  /**\n   * Implements disabled state for this element\n   *\n   * @param isDisabled Disabled state flag\n   */\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n}\n","<div class=\"autocomplete\">\n  <input [disabled]=\"disabled  ? true : null\" type=\"text\" class=\"search\" #inputValue (input)=\"getData(inputValue.value)\"\n         [placeholder]=\"placeholder\" (keyup.ArrowDown)=\"onArrowDown()\" (keyup.ArrowUp)=\"onArrowUp()\"\n         (keyup.Enter)=\"onEnter($event)\" spellcheck=\"false\" [(ngModel)]=\"value\" autocomplete=\"off\" />\n  <div *ngIf=\"data.length\">\n    <div class=\"autocomplete-items\">\n      <div class=\"autocomplele-item\" *ngFor=\"let item of data; let i = index\" (click)=\"onClick($event, item)\" [id]=\"i+'item'\">\n        {{item.value}}\n        <ng-template [ngIf]=\"type==='party'\">\n          <br/>\n          <span>{{item.data?.inn}} {{config.partyAddress === 'full' ? item.data?.address?.value : item.data?.address?.data?.city}}</span>\n        </ng-template>\n      </div>\n    </div>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { NgxDadataComponent } from './ngx-dadata.component';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule\n  ],\n  declarations: [NgxDadataComponent],\n  exports: [NgxDadataComponent]\n})\nexport class NgxDadataModule { }\n","/*\n * Public API Surface of ngx-dadata\n */\n\nexport * from './lib/ngx-dadata.service';\nexport * from './lib/ngx-dadata.component';\nexport * from './lib/ngx-dadata.module';\nexport * from './lib/dadata-config';\nexport * from './lib/models/data';\nexport * from './lib/models/suggestion';\nexport {DadataType} from './lib/ngx-dadata.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}