UNPKG

@magicnov/ngx-dadata

Version:

Angular 6+ and 13+ DaData suggestion (подсказки) implementation with Material Design

1 lines 13.9 kB
{"version":3,"file":"magicnov-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/magicnov-ngx-dadata.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { Observable } from \"rxjs\";\r\nimport { DadataResponse } from \"./models/dadata-response\";\r\nimport { DadataConfig } from \"./dadata-config\";\r\n\r\nexport enum DadataType {\r\n fio = \"fio\",\r\n address = \"address\",\r\n party = \"party\",\r\n bank = \"bank\",\r\n email = \"email\",\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class NgxDadataService {\r\n apiKey = \"\";\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n setApiKey(key: string) {\r\n this.apiKey = key;\r\n }\r\n\r\n // eslint-disable-next-line max-len\r\n getData(\r\n value: string,\r\n type: DadataType = DadataType.address,\r\n config: DadataConfig\r\n ): Observable<DadataResponse> {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Token \" + this.apiKey,\r\n }),\r\n };\r\n const body = Object.assign(\r\n {},\r\n { query: value },\r\n { count: config?.limit },\r\n { location: config?.locations },\r\n { location_bust: config?.locationsBoost },\r\n { from_bound: config?.bounds?.fromBound },\r\n { to_bound: config?.bounds?.toBound }\r\n );\r\n return this.http.post<DadataResponse>(\r\n \"https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/\" + type,\r\n body,\r\n httpOptions\r\n );\r\n }\r\n}\r\n","import { DadataType } from \"./ngx-dadata.service\";\r\n\r\nexport interface Location {\r\n country?: string;\r\n country_iso_code?: string;\r\n region?: string;\r\n area?: string;\r\n city?: string;\r\n street?: string;\r\n street_type_full?: string;\r\n settlement_type_full?: string;\r\n city_district_type_full?: string;\r\n city_type_full?: string;\r\n area_type_full?: string;\r\n region_type_full?: string;\r\n kladr_id?: string;\r\n region_fias_id?: string;\r\n area_fias_id?: string;\r\n city_fias_id?: string;\r\n settlement_fias_id?: string;\r\n street_fias_id?: string;\r\n}\r\n\r\nexport interface Bound {\r\n value:\r\n | \"country\"\r\n | \"region\"\r\n | \"city\"\r\n | \"street\"\r\n | \"settlement\"\r\n | \"area\"\r\n | \"house\";\r\n}\r\n\r\nexport interface Bounds {\r\n fromBound?: Bound;\r\n toBound?: Bound;\r\n}\r\n\r\nexport interface DadataConfig {\r\n apiKey: string;\r\n type?: DadataType;\r\n delay?: number;\r\n limit?: number;\r\n width?: \"auto\" | string;\r\n minWidth?: \"0\" | string;\r\n partyAddress?: \"city\" | \"full\";\r\n locations?: Location[];\r\n locationsBoost?: Location[];\r\n bounds?: Bounds;\r\n}\r\n\r\nexport const DadataConfigDefault: DadataConfig = {\r\n apiKey: \"\",\r\n type: DadataType.address,\r\n delay: 500,\r\n limit: 10,\r\n width: \"auto\",\r\n minWidth: \"0\",\r\n partyAddress: \"city\",\r\n locations: null,\r\n};\r\n","import {\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\nimport { NgxDadataService } from \"./ngx-dadata.service\";\r\nimport { timer } from \"rxjs\";\r\nimport { debounce } from \"rxjs/operators\";\r\nimport { DadataResponse } from \"./models/dadata-response\";\r\nimport { DadataSuggestion } from \"./models/suggestion\";\r\nimport { DadataConfig, DadataConfigDefault } from \"./dadata-config\";\r\nimport { FormControl, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: \"ngx-dadata\",\r\n templateUrl: \"./ngx-dadata.component.html\",\r\n styleUrls: [\"./ngx-dadata.component.css\"],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgxDadataComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class NgxDadataComponent implements OnInit {\r\n data: DadataSuggestion[] = [];\r\n\r\n @Input() config: DadataConfig = DadataConfigDefault;\r\n @Input() control: FormControl = new FormControl();\r\n @Input() label: string = \"\";\r\n @Input() placeholder: string = \"\";\r\n @Output() selected: EventEmitter<DadataSuggestion> =\r\n new EventEmitter<DadataSuggestion>();\r\n\r\n constructor(private dataService: NgxDadataService) {}\r\n\r\n ngOnInit(): void {\r\n this.dataService.setApiKey(this.config.apiKey);\r\n this.control.valueChanges\r\n .pipe(debounce(() => timer(this.config.delay ? this.config.delay : 500)))\r\n .subscribe((x) => {\r\n if (x && typeof x === \"string\") {\r\n this.dataService\r\n .getData(x, this.config.type, this.config)\r\n .subscribe((y: DadataResponse) => {\r\n this.data = y.suggestions;\r\n });\r\n } else {\r\n this.data = [];\r\n }\r\n });\r\n }\r\n\r\n getItemDisplayName(item: DadataSuggestion) {\r\n return item ? item.value : \"\";\r\n }\r\n\r\n itemSelected(item: DadataSuggestion): void {\r\n this.selected.emit(item);\r\n }\r\n}\r\n","<mat-form-field class=\"dadata-field\">\r\n <mat-label>{{ label }}</mat-label>\r\n <input\r\n type=\"text\"\r\n [placeholder]=\"placeholder\"\r\n matInput\r\n [formControl]=\"control\"\r\n [matAutocomplete]=\"auto\"\r\n />\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"getItemDisplayName\"\r\n (optionSelected)=\"itemSelected($event.option.value)\"\r\n >\r\n <mat-option *ngFor=\"let item of data\" [value]=\"item\">\r\n {{ item.value }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { NgxDadataComponent } from \"./ngx-dadata.component\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatAutocompleteModule } from \"@angular/material/autocomplete\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatAutocompleteModule,\r\n ],\r\n declarations: [NgxDadataComponent],\r\n exports: [NgxDadataComponent],\r\n})\r\nexport class NgxDadataModule {}\r\n","/*\r\n * Public API Surface of ngx-dadata\r\n */\r\n\r\nexport * from \"./lib/ngx-dadata.service\";\r\nexport * from \"./lib/ngx-dadata.component\";\r\nexport * from \"./lib/ngx-dadata.module\";\r\nexport * from \"./lib/dadata-config\";\r\nexport * from \"./lib/models/data\";\r\nexport * from \"./lib/models/suggestion\";\r\nexport { DadataType } from \"./lib/ngx-dadata.service\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxDadataService"],"mappings":"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"}