{"version":3,"file":"afd-software-pce-angular-material.mjs","sources":["../../../../projects/afd-software/pce-angular-material/src/lib/directives/afd.typeahead.material.directive.ts","../../../../projects/afd-software/pce-angular-material/src/lib/components/typeahead/material.type.ahead.component.ts","../../../../projects/afd-software/pce-angular-material/src/lib/components/typeahead/material.type.ahead.component.html","../../../../projects/afd-software/pce-angular-material/src/lib/pce-angular-material.module.ts","../../../../projects/afd-software/pce-angular-material/src/public_api.ts","../../../../projects/afd-software/pce-angular-material/src/afd-software-pce-angular-material.ts"],"sourcesContent":["import {Directive, ElementRef, HostListener, Output, Input, OnInit} from '@angular/core';\r\nimport {NgControl} from '@angular/forms';\r\nimport {EventEmitter} from '@angular/core';\r\nimport {AfdPceService, AfdLookupResult} from '@afd-software/pce-angular';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport {Observable, Subject} from 'rxjs';\r\nimport {debounceTime, distinctUntilChanged, switchMap} from 'rxjs/operators';\r\nimport {HttpResponse} from '@angular/common/http';\r\n\r\n// todo: Directive is not needed and can be merged into the component\r\n\r\n@Directive({\r\n  selector: '[afdMaterialTypeAheadInput]'\r\n})\r\nexport class AfdTypeaheadMaterialDirective {\r\n\r\n  @Input() data: string;\r\n  @Output() loading: EventEmitter<boolean> = new EventEmitter();\r\n\r\n  timer = null;\r\n\r\n  constructor(\r\n    private el: ElementRef,\r\n    private afdPceService: AfdPceService,\r\n    public dialog: MatDialog\r\n  ) {\r\n    this.afdPceService.refreshUniqueId();\r\n  }\r\n\r\n\r\n  @HostListener('document:afdRetrieveComplete', ['$event']) onAfdRetrieveComplete(e) {\r\n\r\n\r\n\r\n  }\r\n\r\n  @HostListener('document:afdReverseGeocodeComplete', ['$event']) onAfdReverseGeocodeComplete(e) {\r\n\r\n    console.log(e);\r\n  }\r\n\r\n\r\n}\r\n","import {AfterViewInit, Component, HostListener, Input, OnInit, ViewEncapsulation, ViewChild, ElementRef} from '@angular/core';\r\nimport {FormControl} from '@angular/forms';\r\nimport {Observable, Subject} from 'rxjs';\r\n\r\nimport {parseString} from 'xml2js';\r\n\r\nimport {AfdPceService, AfdLookupResult} from '@afd-software/pce-angular';\r\nimport {debounceTime, distinctUntilChanged, switchMap} from 'rxjs/operators';\r\nimport {HttpResponse} from '@angular/common/http';\r\n\r\n@Component({\r\n  selector: 'afd-material-type-ahead-component',\r\n  templateUrl: './material.type.ahead.component.html',\r\n  styleUrls: ['./material.type.ahead.component.css'],\r\n  encapsulation: ViewEncapsulation.None,\r\n\r\n})\r\n\r\nexport class AfdMaterialTypeAheadComponent implements AfterViewInit, OnInit {\r\n\r\n  @Input() data: string;\r\n  @Input() country: string | null = null;\r\n  @Input('afdReverseGeocode') reverseGeocode: false;\r\n  @Input() afdSpinner = false;\r\n  @Input() afdControlId; // Assign a ID to this particular control so that it can be matched with result fields\r\n  @ViewChild('inputControl') inputControl: ElementRef;\r\n  @ViewChild('autoComplete') autoCompleter: ElementRef;\r\n\r\n\r\n  results$: Observable<HttpResponse<AfdLookupResult>>;\r\n  private lookupText$ = new Subject<string>();\r\n\r\n  filteredResults: Observable<any>;\r\n  spinner = false;\r\n  control$;\r\n\r\n  constructor(\r\n    public afdPceService: AfdPceService\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.control$ = this.afdPceService.registerControl('typeahead', this.afdControlId);\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n\r\n    // listens each time a key, but only does a lookup when there has been a 100ms delay in typing and the current value is distinct\r\n    this.results$ = this.lookupText$.pipe(\r\n      debounceTime(100),\r\n      distinctUntilChanged(),\r\n      switchMap(lookupString =>\r\n        this.afdPceService.pceLookup(lookupString)\r\n      )\r\n    );\r\n\r\n    // what happens when look gets results\r\n    this.results$.subscribe((res) => {\r\n\r\n      this.spinner = false;\r\n\r\n      // Check for resultCode\r\n      if (res.body.Result === '1') {\r\n        // Populate results in pce service\r\n        this.afdPceService.typeAheadResults = res.body.Item;\r\n\r\n        if (this.afdPceService.settings.typeahead.fewResultsManualInput && res.body.Item.length < 5) {\r\n          this.afdPceService.typeAheadResults.push(\r\n            {\r\n              List: this.afdPceService.settings.typeahead.fewResultsManualInputText,\r\n              angularManualSelect: true\r\n            }\r\n          );\r\n        }\r\n      } else if (res.body.Result === '-2') {\r\n\r\n        this.afdPceService.typeAheadResults = [\r\n          {\r\n            List: this.afdPceService.settings.typeahead.noResultsManualInputText,\r\n            angularManualSelect: true\r\n          }\r\n        ];\r\n\r\n      }\r\n\r\n      // fire completion event\r\n      const event = new CustomEvent(\r\n        'afdTypeAheadLookupComplete',\r\n        {detail: res}\r\n      );\r\n      document.dispatchEvent(event);\r\n    });\r\n\r\n    // clear the results\r\n    this.afdPceService.listResult = null;\r\n\r\n    // handle what to do if a country is specified\r\n    if (this.country) {\r\n\r\n      const upperCountry = this.country.toUpperCase();\r\n\r\n      // hard code USA for the sake of zipaddress\r\n      if (upperCountry === 'USA') {\r\n        this.afdPceService.selectedCountry = {\r\n          '@value': '231',\r\n          iso: 'USA',\r\n          name: 'United States of America'\r\n        };\r\n\r\n      } else {\r\n\r\n        const startEvent = new CustomEvent(\r\n          'afdGetCountriesStart'\r\n        );\r\n        document.dispatchEvent(startEvent);\r\n\r\n        this.afdPceService.getCountries(this.country).subscribe((res) => {\r\n\r\n          this.afdPceService.countries = res.body['Item'];\r\n\r\n          const endEvent = new CustomEvent(\r\n            'afdGetCountriesComplete',\r\n            {detail: res}\r\n          );\r\n          document.dispatchEvent(endEvent);\r\n\r\n\r\n          for (const country of this.afdPceService.countries) {\r\n            if (upperCountry === country.iso) {\r\n              this.afdPceService.selectedCountry = country;\r\n            }\r\n          }\r\n          if (typeof this.afdPceService.selectedCountry === 'undefined') {\r\n            console.error('Invalid or Unsupported Country Code: ' + this.country);\r\n            console.error('Please input a valid ISO3 code');\r\n          }\r\n\r\n\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  onKeyup(e) {\r\n\r\n    if (e.code === 'Backspace' || e.code === 'Delete') {\r\n      this.afdPceService.listResult = null;\r\n      e.target.focus();\r\n    }\r\n\r\n  }\r\n\r\n  onInput(e) {\r\n\r\n    // manage the unique id timer\r\n    this.afdPceService.manageUniqueId(e.target.value);\r\n\r\n    if (e.target.value.length > this.afdPceService.settings.typeahead.minLength) {\r\n\r\n      this.spinner = true;\r\n      this.lookupText$.next(e.target.value);\r\n\r\n    } else {\r\n\r\n      this.afdPceService.typeAheadResults = [];\r\n\r\n    }\r\n\r\n  }\r\n\r\n  onFocus(e) {\r\n    console.log(e);\r\n    this.afdPceService.listResult = null;\r\n\r\n  }\r\n\r\n  processResults(result) {\r\n\r\n    const list = result.List;\r\n\r\n    const openingTag = '&nbsp;<span class=\"afd-matched-highlight\">';\r\n    const closingTag = '</span>';\r\n    const tagLengths = openingTag.length + closingTag.length;\r\n\r\n    let holder = list;\r\n    if (typeof result.matchPositions !== 'undefined') {\r\n      for (let i = 0; i < result.matchPositions.length; i++) {\r\n\r\n        const position = result.matchPositions[i];\r\n        const offset = i * tagLengths;\r\n\r\n        let inner = '';\r\n\r\n        inner += holder.substr(0, position[0] + offset);\r\n        inner += openingTag;\r\n        inner += holder.substr(position[0] + offset, position[1] - position[0]);\r\n        inner += closingTag;\r\n        if (holder.substr(position[1] + offset).slice(0, 1) === ' ') {\r\n          inner += '&nbsp;';\r\n        }\r\n        inner += holder.substr(position[1] + offset);\r\n        holder = inner;\r\n\r\n      }\r\n      return holder;\r\n    }\r\n\r\n    return result.List;\r\n  }\r\n\r\n  resultSelected(val, data, e) {\r\n    e.source.options.reset([]);\r\n    if (val.angularManualSelect) {\r\n      this.resultSelectedVisibility();\r\n      this.afdPceService.typeaheadVisibility = {\r\n        control: false,\r\n        manualInput: false,\r\n        addressSearch: true,\r\n        searchAgain: false\r\n      };\r\n\r\n      this.afdPceService.allResultFieldVisibility.next(true);\r\n      return;\r\n    }\r\n\r\n    this.spinner = true;\r\n\r\n    const result = this.afdPceService.typeAheadSelected(val, data);\r\n\r\n    result.subscribe((res) => {\r\n      // initial value for behaviour subject is null and should be ignored\r\n      if (!res) { return; }\r\n\r\n      this.spinner = false;\r\n\r\n      // update the behaviour subject that the result fields are subscribed to\r\n      this.control$.next(res);\r\n\r\n      this.resultSelectedVisibility();\r\n\r\n    });\r\n\r\n  }\r\n\r\n  resultSelectedVisibility() {\r\n    if (this.afdPceService.settings.typeahead.afterClearTypeahead) {\r\n      this.inputControl.nativeElement.value = '';\r\n    }\r\n\r\n    if (this.afdPceService.settings.typeahead.afterHideTypeahead) {\r\n      this.afdPceService.typeaheadVisibility.control = false;\r\n    }\r\n\r\n    if (this.afdPceService.settings.typeahead.searchAgain) {\r\n      this.afdPceService.typeaheadVisibility.searchAgain = true;\r\n    }\r\n\r\n    this.afdPceService.typeaheadVisibility.manualInput = false;\r\n  }\r\n\r\n  public displayFn(result?) {\r\n    return null;\r\n  }\r\n\r\n  loading(e) {\r\n    this.spinner = e;\r\n  }\r\n\r\n}\r\n","<mat-form-field appearance=\"standard\" *ngIf=\"afdPceService.typeaheadVisibility.control\">\r\n  <button mat-icon-button matPrefix afdGeocode *ngIf=\"reverseGeocode\">\r\n    <mat-icon aria-label=\"Get Location\">my_location</mat-icon>\r\n  </button>\r\n    <input #inputControl\r\n           type=\"text\"\r\n           [data]=\"data\"\r\n           class=\"type-ahead-input\"\r\n           matInput\r\n           afdMaterialTypeAheadInput\r\n           [matAutocomplete]=\"auto\"\r\n           title=\"Search Input\"\r\n           [placeholder]=\"afdPceService.settings.typeahead.placeholder\"\r\n           [(ngModel)]=\"afdPceService.typeAheadString\"\r\n           name=\"new-address-search\"\r\n           autocomplete=\"new-address-search\"\r\n           (loading)=\"loading($event)\"\r\n           (keyup)=\"onKeyup($event)\"\r\n           (input)=\"onInput($event)\"\r\n           (focus)=\"onFocus($event)\"\r\n\r\n    >\r\n  <mat-spinner *ngIf=\"!afdSpinner && spinner\" matSuffix [diameter]=\"18\" style=\"float: right; margin-left: 8px\"></mat-spinner>\r\n\r\n</mat-form-field>\r\n\r\n<mat-autocomplete\r\n  #auto=\"matAutocomplete\"\r\n  (optionSelected)=\"resultSelected($event.option.value, data, $event )\"\r\n  [panelWidth]=\"'auto'\"\r\n  [displayWith]=\"displayFn\">\r\n\r\n  <mat-option *ngFor=\"let result of afdPceService.typeAheadResults\" [value]=\"result\" [innerHTML]=\"processResults(result)\"></mat-option>\r\n</mat-autocomplete>\r\n","// Angular Dependencies\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n// Angular Material Dependencies\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\n\r\n// Third Party Modules\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\n\r\n// AFD Material Components\r\n/*import {AfdMaterialPhoneComponent} from './components/phone/material.phone.component';\r\nimport {AfdMaterialCardComponent} from './components/card/material.card.component';\r\nimport {AfdMaterialExpiryComponent} from './components/card/material.expiry.component';\r\nimport {AfdMaterialAccountComponent} from './components/account/material.account.component';\r\nimport {AfdMaterialSortComponent} from './components/account/material.sort.component';*/\r\nimport {AfdMaterialTypeAheadComponent} from './components/typeahead/material.type.ahead.component';\r\n\r\n// AFD Material Directives\r\nimport {AfdTypeaheadMaterialDirective} from './directives/afd.typeahead.material.directive';\r\n\r\n// Afd Pce Angular Module\r\nimport {AfdPceAngularModule} from '@afd-software/pce-angular';\r\n\r\n\r\n@NgModule({\r\n  imports: [\r\n    FormsModule,\r\n    CommonModule,\r\n\r\n    MatInputModule,\r\n    MatAutocompleteModule,\r\n    MatFormFieldModule,\r\n    MatSelectModule,\r\n    MatRadioModule,\r\n    MatDialogModule,\r\n    MatButtonModule,\r\n    MatChipsModule,\r\n    MatIconModule,\r\n    MatProgressSpinnerModule,\r\n\r\n    TextMaskModule,\r\n\r\n    AfdPceAngularModule\r\n  ],\r\n  declarations: [\r\n    AfdTypeaheadMaterialDirective,\r\n\r\n    AfdMaterialTypeAheadComponent\r\n  ],\r\n  exports: [\r\n    AfdTypeaheadMaterialDirective,\r\n    AfdMaterialTypeAheadComponent\r\n  ]\r\n})\r\nexport class PceAngularMaterialModule { }\r\n","/*\r\n * Public API Surface of pce-angular-material\r\n */\r\n\r\nexport * from './lib/pce-angular-material.module';\r\nexport * from './lib/directives/afd.typeahead.material.directive';\r\nexport * from './lib/components/typeahead/material.type.ahead.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}