{"version":3,"file":"oepa-ui-lib.mjs","sources":["../../../projects/oepa-ui-lib/src/lib/address/oepa-address.service.ts","../../../projects/oepa-ui-lib/src/lib/address/address.component.ts","../../../projects/oepa-ui-lib/src/lib/address/address.component.html","../../../projects/oepa-ui-lib/src/lib/contact/contact.component.ts","../../../projects/oepa-ui-lib/src/lib/contact/contact.component.html","../../../projects/oepa-ui-lib/src/lib/datepicker/datepicker.component.ts","../../../projects/oepa-ui-lib/src/lib/datepicker/datepicker.component.html","../../../projects/oepa-ui-lib/src/lib/action-btn/action-btn.component.ts","../../../projects/oepa-ui-lib/src/lib/action-btn/action-btn.component.html","../../../projects/oepa-ui-lib/src/lib/action-btn-modal/action-btn-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/action-btn-modal/action-btn-modal.component.html","../../../projects/oepa-ui-lib/src/lib/checkbox/checkbox.component.ts","../../../projects/oepa-ui-lib/src/lib/checkbox/checkbox.component.html","../../../projects/oepa-ui-lib/src/lib/comment-modal/comment-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/comment-modal/comment-modal.component.html","../../../projects/oepa-ui-lib/src/lib/table/table.service.ts","../../../projects/oepa-ui-lib/src/lib/table/table-export.service.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-sorting.directive.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-filtering.directive.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-inner-html.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-colspan.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-value.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-classname.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-icon-classname.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-img-src.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/table.component.ts","../../../projects/oepa-ui-lib/src/lib/table/table.component.html","../../../projects/oepa-ui-lib/src/lib/confirmation-modal/confirmation-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/confirmation-modal/confirmation-modal.component.html","../../../projects/oepa-ui-lib/src/lib/account-search-modal/account-search-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/account-search-modal/account-search-modal.component.html","../../../projects/oepa-ui-lib/src/lib/account-search-input/account-search-input.component.ts","../../../projects/oepa-ui-lib/src/lib/account-search-input/account-search-input.component.html","../../../projects/oepa-ui-lib/src/lib/p-action-btn/p-action-btn.component.ts","../../../projects/oepa-ui-lib/src/lib/p-action-btn/p-action-btn.component.html","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-not-selectable.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-input-component.pipe.ts","../../../projects/oepa-ui-lib/src/lib/table/p-table/p-table-data-cell/p-table-data-cell.component.ts","../../../projects/oepa-ui-lib/src/lib/table/p-table/p-table-data-cell/p-table-data-cell.component.html","../../../projects/oepa-ui-lib/src/lib/table/table-header-cell/table-header-cell.component.ts","../../../projects/oepa-ui-lib/src/lib/table/table-header-cell/table-header-cell.component.html","../../../projects/oepa-ui-lib/src/lib/table/p-table/p-table.component.ts","../../../projects/oepa-ui-lib/src/lib/table/p-table/p-table.component.html","../../../projects/oepa-ui-lib/src/lib/table/table-data-cell/table-data-cell.component.ts","../../../projects/oepa-ui-lib/src/lib/table/table-data-cell/table-data-cell.component.html","../../../projects/oepa-ui-lib/src/lib/daterangepicker/daterangepicker.component.ts","../../../projects/oepa-ui-lib/src/lib/daterangepicker/daterangepicker.component.html","../../../projects/oepa-ui-lib/src/lib/oepa-wait-message/oepa-wait-message.component.ts","../../../projects/oepa-ui-lib/src/lib/oepa-error-message/oepa-error-message.component.ts","../../../projects/oepa-ui-lib/src/lib/message/oepa-message-type.ts","../../../projects/oepa-ui-lib/src/lib/message/oepa-message.ts","../../../projects/oepa-ui-lib/src/lib/message/message.component.ts","../../../projects/oepa-ui-lib/src/lib/message/message.component.html","../../../projects/oepa-ui-lib/src/lib/message-list/message-list.component.ts","../../../projects/oepa-ui-lib/src/lib/message-list/message-list.component.html","../../../projects/oepa-ui-lib/src/lib/file-upload/file-upload.component.ts","../../../projects/oepa-ui-lib/src/lib/file-upload/file-upload.component.html","../../../projects/oepa-ui-lib/src/lib/multi-file-upload/multi-file-upload.component.ts","../../../projects/oepa-ui-lib/src/lib/multi-file-upload/multi-file-upload.component.html","../../../projects/oepa-ui-lib/src/lib/oepa-forms.service.ts","../../../projects/oepa-ui-lib/src/lib/entity/entity.service.ts","../../../projects/oepa-ui-lib/src/lib/entity/organization-create-modal/organization-create-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/organization-create-modal/organization-create-modal.component.html","../../../projects/oepa-ui-lib/src/lib/entity/organization-search-modal/organization-search-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/organization-search-modal/organization-search-modal.component.html","../../../projects/oepa-ui-lib/src/lib/entity/organization-search-input/organization-search-input.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/organization-search-input/organization-search-input.component.html","../../../projects/oepa-ui-lib/src/lib/entity/person-create-modal/person-create-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/person-create-modal/person-create-modal.component.html","../../../projects/oepa-ui-lib/src/lib/entity/person-search-modal/person-search-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/person-search-modal/person-search-modal.component.html","../../../projects/oepa-ui-lib/src/lib/entity/person-search-input/person-search-input.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/person-search-input/person-search-input.component.html","../../../projects/oepa-ui-lib/src/lib/entity/place-create-modal/place-create-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/place-create-modal/place-create-modal.component.html","../../../projects/oepa-ui-lib/src/lib/entity/place-search-modal/place-search-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/place-search-modal/place-search-modal.component.html","../../../projects/oepa-ui-lib/src/lib/entity/place-search-input/place-search-input.component.ts","../../../projects/oepa-ui-lib/src/lib/entity/place-search-input/place-search-input.component.html","../../../projects/oepa-ui-lib/src/lib/yes-no/yes-no.component.ts","../../../projects/oepa-ui-lib/src/lib/yes-no/yes-no.component.html","../../../projects/oepa-ui-lib/src/lib/yes-no-boolean/yes-no.component.ts","../../../projects/oepa-ui-lib/src/lib/yes-no-boolean/yes-no.component.html","../../../projects/oepa-ui-lib/src/lib/yes-no-other-input/yes-no-other-input.component.ts","../../../projects/oepa-ui-lib/src/lib/yes-no-other-input/yes-no-other-input.component.html","../../../projects/oepa-ui-lib/src/lib/date-input-modal/date-input-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/date-input-modal/date-input-modal.component.html","../../../projects/oepa-ui-lib/src/lib/ebiz-address/ebiz-address.component.ts","../../../projects/oepa-ui-lib/src/lib/ebiz-address/ebiz-address.component.html","../../../projects/oepa-ui-lib/src/lib/esri-map/esri-map.component.ts","../../../projects/oepa-ui-lib/src/lib/esri-map/esri-map.component.html","../../../projects/oepa-ui-lib/src/lib/ohio-lat-long/ohio-lat-long.component.ts","../../../projects/oepa-ui-lib/src/lib/ohio-lat-long/ohio-lat-long.component.html","../../../projects/oepa-ui-lib/src/lib/edoc-attachment/edoc-attachment.service.ts","../../../projects/oepa-ui-lib/src/lib/edoc-attachment/edoc-attachment.component.ts","../../../projects/oepa-ui-lib/src/lib/edoc-attachment/edoc-attachment.component.html","../../../projects/oepa-ui-lib/src/lib/dual-list-box/array.pipes.ts","../../../projects/oepa-ui-lib/src/lib/dual-list-box/dual-list-box.component.ts","../../../projects/oepa-ui-lib/src/lib/dual-list-box/dual-list-box.component.html","../../../projects/oepa-ui-lib/src/lib/lynx-image-upload/lynx-image-upload.component.ts","../../../projects/oepa-ui-lib/src/lib/lynx-image-upload/lynx-image-upload.component.html","../../../projects/oepa-ui-lib/src/lib/notes-modal/notes-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/notes-modal/notes-modal.component.html","../../../projects/oepa-ui-lib/src/lib/params-help-button/params-help-button.component.ts","../../../projects/oepa-ui-lib/src/lib/params-help-button/params-help-button.component.html","../../../projects/oepa-ui-lib/src/lib/pin-modal/oepa-pin.service.ts","../../../projects/oepa-ui-lib/src/lib/pin-modal/pin-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/pin-modal/pin-modal.component.html","../../../projects/oepa-ui-lib/src/lib/numeric-input.directive.ts","../../../projects/oepa-ui-lib/src/lib/server-timeout-modal/server-timeout-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/server-timeout-modal/server-timeout-modal.component.html","../../../projects/oepa-ui-lib/src/lib/shopping-cart/shopping-cart.service.ts","../../../projects/oepa-ui-lib/src/lib/shopping-cart/shopping-cart-view/shopping-cart-view.component.ts","../../../projects/oepa-ui-lib/src/lib/shopping-cart/shopping-cart-view/shopping-cart-view.component.html","../../../projects/oepa-ui-lib/src/lib/shopping-cart/shopping-cart-summary/shopping-cart-summary.component.ts","../../../projects/oepa-ui-lib/src/lib/shopping-cart/shopping-cart-summary/shopping-cart-summary.component.html","../../../projects/oepa-ui-lib/src/lib/start-end-timepicker/start-end-timepicker.component.ts","../../../projects/oepa-ui-lib/src/lib/start-end-timepicker/start-end-timepicker.component.html","../../../projects/oepa-ui-lib/src/lib/template-confirmation-modal/template-confirmation-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/template-confirmation-modal/template-confirmation-modal.component.html","../../../projects/oepa-ui-lib/src/lib/text-area-input/text-area-input.component.ts","../../../projects/oepa-ui-lib/src/lib/text-area-input/text-area-input.component.html","../../../projects/oepa-ui-lib/src/lib/timeout-modal/timeout-modal.component.ts","../../../projects/oepa-ui-lib/src/lib/timeout-modal/timeout-modal.component.html","../../../projects/oepa-ui-lib/src/lib/timepicker/timepicker.component.ts","../../../projects/oepa-ui-lib/src/lib/timepicker/timepicker.component.html","../../../projects/oepa-ui-lib/src/lib/table/oepa-table-cell-hidden.pipe.ts","../../../projects/oepa-ui-lib/src/lib/select-input/select-input.component.ts","../../../projects/oepa-ui-lib/src/lib/select-input/select-input.component.html","../../../projects/oepa-ui-lib/src/lib/numeric-input/numeric-input.component.ts","../../../projects/oepa-ui-lib/src/lib/numeric-input/numeric-input.component.html","../../../projects/oepa-ui-lib/src/lib/checkbox-input/checkbox-input.component.ts","../../../projects/oepa-ui-lib/src/lib/checkbox-input/checkbox-input.component.html","../../../projects/oepa-ui-lib/src/lib/date-input/date-input.component.ts","../../../projects/oepa-ui-lib/src/lib/date-input/date-input.component.html","../../../projects/oepa-ui-lib/src/lib/text-input/text-input.component.ts","../../../projects/oepa-ui-lib/src/lib/text-input/text-input.component.html","../../../projects/oepa-ui-lib/src/lib/phone-number/phone-number.component.ts","../../../projects/oepa-ui-lib/src/lib/phone-number/phone-number.component.html","../../../projects/oepa-ui-lib/src/lib/zip-code/zip-code.component.ts","../../../projects/oepa-ui-lib/src/lib/zip-code/zip-code.component.html","../../../projects/oepa-ui-lib/src/lib/common-forms.module.ts","../../../projects/oepa-ui-lib/src/lib/blank/blank.component.ts","../../../projects/oepa-ui-lib/src/lib/blank/blank.component.html","../../../projects/oepa-ui-lib/src/lib/lynx-image-upload/lynx.service.ts","../../../projects/oepa-ui-lib/src/lib/masks/oepa-create-integer-mask.ts","../../../projects/oepa-ui-lib/src/lib/parameter/parameter.service.ts","../../../projects/oepa-ui-lib/src/lib/validation/validation.service.ts","../../../projects/oepa-ui-lib/src/lib/oepa-images.ts","../../../projects/oepa-ui-lib/src/public-api.ts","../../../projects/oepa-ui-lib/src/oepa-ui-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * Helper service for the OepaAddressComponent.\n */\n@Injectable({\n    providedIn: 'root'\n  })\nexport class OepaAddressService {\n    private states!: string[];\n    private countries!: string[];\n    private statesUrl = '/ebiz/api/v1/references/states';\n    \n\n    constructor(private http: HttpClient) {\n    }\n\n    /**\n     * Retrieve the list of applicable states. If no states have been provided\n     * via the <code>setStates()</code> method, the list of states will be retrieved\n     * from the server.\n     * @returns a Promise providing the list of states as an array of strings.\n     */\n    public getStates(): Observable<string[]> {\n        if (this.states) {\n            return new Observable<string[]>((observer) => observer.next(this.states));\n        }\n        return this.http.get<string[]>(this.statesUrl).pipe(\n            map(states => {\n                this.states = [];\n                states.forEach((state:any) => {\n                    this.states.push(state['code']);\n                });\n                return this.states;\n            }));\n    }\n\n    /**\n     * Set the states used by this controller. Will replace any value set previously.\n     * @param states the list of states\n     */\n    public setStates(states: Array<string>) {\n        this.states = states;\n    }\n\n    public getCountries(): Observable<string[]> {\n        if (this.countries) {\n            return new Observable<string[]>((observer) => observer.next(this.countries));\n        }\n        const countryUrl = '/ebiz/api/v1/places/countries'\n        return this.http.get<string[]>(countryUrl ).pipe(\n            map(countries => {\n                this.countries = [];\n                countries.forEach(country => {\n                    this.countries.push(country);\n                });\n                return this.countries;\n            }));\n    }\n    \n}","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { OepaAddressService } from './oepa-address.service';\nimport { OepaComponentIdService, OEPAAddress } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-address',\n  templateUrl: './address.component.html',\n  styleUrl: './address.component.css',\n})\nexport class AddressComponent implements OnInit {\n  public zipCodeMask = [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/];\n  public showStates = true;\n  public usStates: string[] = [];\n  public countries: string[] = [];\n  public componentId = 'OepaAddressComponent';\n\n  \n  private originalAddress!: OEPAAddress;\n  private subscription!: Subscription;\n\n  @Input() group!: FormGroup;\n  @Input() showValidation = false;\n\n  @Input('addressOneLabel') public addressOneLabel: string = 'Address 1';\n  @Input('addressTwoLabel') public addressTwoLabel: string = 'Address 2';\n  @Input('cityLabel') public cityLabel: string = 'City';\n  @Input('stateLabel') public stateLabel: string = 'State';\n  @Input('zipCodeLabel') public zipCodeLabel: string = 'Zip Code';\n  @Input('disableState') public disableState:boolean = false;\n  @Input('isSearch') public isSearch: boolean = false;\n\n  @Input('hideLine2') public hideLine2 = false;\n\n  // max length values. override if needed\n  @Input('line1MaxLength') public line1MaxLength = 40;\n  @Input('line2MaxLength') public line2MaxLength = 40;\n  @Input('cityMaxLength') public cityMaxLength = 30;\n  \n  @Input('foreignStateLabel') public foreignStateLabel: string = 'Foreign State';\n  @Input('foreignZipLabel') public foreignZipLabel: string = 'Foreign Zip Code';\n  @Input('countryLabel') public countryLabel: string = 'Country';\n\n  // These values are only used if you want a \"same as\" checkbox for the address\n  // All three values must be provided if using the \"same as\" capability\n  @Input() sameAsGroup !: FormGroup;\n  @Input() sameAsLabel !: string;\n  @Input() sameAsChecked: boolean = false;\n\n  constructor(private addressService: OepaAddressService, private idService: OepaComponentIdService) {\n    this.addressService.getStates().subscribe({\n      next: (states) => {\n      this.usStates = states;\n    }, error: err => {\n      console.log('ERROR retrieving states for address: ' + err);\n    }});\n  }\n\n  ngOnInit() {\n    if (this.group) {\n      \n      if(this.group.controls['country']){\n         this.addressService.getCountries().subscribe({ \n          next: (countries: any) => {\n            let countryList:string[]=[];\n            //Remove \"Caymen Islands\"\n            countries.forEach((country: any) =>{\n              if(country !== \"Caymen Islands\")\n                countryList.push(country);\n            })\n            this.countries = countryList;\n          }, error: err => {\n            console.log('ERROR retrieving countries for address: ' + err);\n          }\n        });\n      }\n      this.componentId = this.idService.getComponentId(this.group);\n      this.originalAddress = this.addressFromFormGroup(this.group);\n      this.subscribeToChanges();\n    }\n  }\n\n  toggleCopyFromSelection() {\n    this.sameAsChecked = !this.sameAsChecked;\n    if (this.sameAsChecked) {\n      this.unsubscribeFromChanges();\n      this.group.patchValue(this.addressFromFormGroup(this.sameAsGroup));\n      this.group.disable();\n    } else {\n      this.subscribeToChanges();\n      this.group.patchValue(this.originalAddress);\n      this.group.enable();\n    }\n  }\n\n  private addressFromFormGroup(group: FormGroup): OEPAAddress {\n    let address: OEPAAddress = {};\n    if (group) {\n      address = {\n        line1: group.controls['line1'].value,\n        line2: group.controls['line2'].value,\n        city: group.controls['city'].value,\n        state: group.controls['state'].value,\n        postalCode: (group.controls['country'] && group.controls['country'].value !== 'USA') ? group.controls['foreignZip']:group.controls['postalCode'].value,\n        foreignState: group.controls['foreignState']? group.controls['foreignState'].value:null,\n        country: group.controls['country'] ? group.controls['country'].value:null\n      }\n    }\n    return address;\n  }\n\n  private subscribeToChanges() {\n    this.subscription = this.group.valueChanges.subscribe(address => {\n      this.originalAddress.line1 = address.line1;\n      this.originalAddress.line2 = address.line2;\n      this.originalAddress.city = address.city;\n      this.originalAddress.state = address.state;\n      this.originalAddress.postalCode = (address.country && address.country !== 'USA') ? address.foreignZip:address.postalCode;\n      this.originalAddress.foreignState = address.foreignState ? address.foreignState : null;\n      this.originalAddress.country = address.country ? address.country : null;\n      \n    });\n  }\n\n  private unsubscribeFromChanges() {\n    this.subscription.unsubscribe();\n  }\n}\n","<div *ngIf=\"sameAsGroup && sameAsChecked\">\n    <div class=\"row\">\n        <div class=\"col-md-12\">\n            <div class=\"form-group\">\n                <label [ngStyle]=\"{ 'font-weight': sameAsChecked && group.disabled ? 'bold' : '' }\">\n                    {{addressOneLabel}}\n                    <span *ngIf=\"sameAsGroup\">({{sameAsLabel}} \n                        <input type=\"checkbox\" [checked]=\"sameAsChecked\" (change)=\"toggleCopyFromSelection()\" [disabled]=\"group.parent?.disabled\"/>)\n                    </span>\n                </label>\n            </div>\n        </div>\n    </div>\n</div>\n<div *ngIf=\"!sameAsGroup || !sameAsChecked\" [formGroup]=\"group\">\n<div class=\"row\">\n  <div class=\"col-md-12\">\n      <div class=\"form-group\">\n          <label [ngStyle]=\"{ 'font-weight': sameAsChecked && group.disabled ? 'bold' : '' }\">\n              {{addressOneLabel}}\n              <span *ngIf=\"sameAsGroup\">\n                  ({{sameAsLabel}} \n                  <input type=\"checkbox\" [checked]=\"sameAsChecked\" (change)=\"toggleCopyFromSelection()\" [disabled]=\"group.parent?.disabled\"/>)\n              </span>\n          </label>\n          <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['line1'].status === 'INVALID'}\" \n            [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"line1\" [maxlength]=\"line1MaxLength\"\n            [id]=\"componentId+'_Line1Input'\">\n          <small class=\"invalid-feedback\" *ngIf=\"group.controls['line1'].hasError('required')\">{{addressOneLabel}} is required</small>\n          <small class=\"invalid-feedback\" *ngIf=\"group.controls['line1'].hasError('maxlength')\">{{addressOneLabel}} has exceeded its maximum length</small>\n      </div>\n  </div>\n</div>\n<div *ngIf=\"!hideLine2\" class=\"row\">\n  <div class=\"col-md-12\">\n      <div class=\"form-group\">\n          <label>{{addressTwoLabel}}</label>\n          <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['line2'].status === 'INVALID'}\"\n           [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"line2\" [maxlength]=\"line2MaxLength\"\n            [id]=\"componentId+'_Line2Input'\">\n          <small class=\"invalid-feedback\" *ngIf=\"group.controls['line2'].hasError('required')\">{{addressTwoLabel}} is required</small>\n          <small class=\"invalid-feedback\" *ngIf=\"group.controls['line2'].hasError('maxlength')\">{{addressTwoLabel}} has exceeded its maximum length</small>\n      </div>\n  </div>\n</div>\n<div class=\"row\">\n  <div class=\"col-md-6\">\n      <div class=\"form-group\">\n          <label>{{cityLabel}}</label>\n          <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['city'].status === 'INVALID'}\"\n            [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"City\" maxlength=\"30\" formControlName=\"city\" [maxlength]=\"cityMaxLength\"\n            [id]=\"componentId+'_CityInput'\">\n          <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('required')\">{{cityLabel}} is required</small>\n          <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('maxlength')\">{{cityLabel}} has exceeded its maximum length</small>\n      </div>\n  </div>\n  <div class=\"col-md-2\">\n      <div *ngIf=\"showStates && (!group.controls['country'] || group.get('country')?.value ==='USA')\" class=\"form-group\">\n          <label>{{stateLabel}}</label>\n          <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['state'].status === 'INVALID'}\" \n            name=\"AddressState\" formControlName=\"state\" [id]=\"componentId+'_StateSelect'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\">\n          <option *ngFor=\"let s of usStates\" [ngValue]=\"s\">{{s}}</option>\n      </select>\n      <small class=\"invalid-feedback\" *ngIf=\"group.controls['state'].hasError('required')\">State is required</small>\n      </div>\n  </div>\n  <div class=\"col-md-4\">\n      <div *ngIf=\"!group.controls['country']  || group.get('country')?.value ==='USA'\" class=\"form-group\">\n          <label>{{zipCodeLabel}}</label>\n          <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['postalCode'].status === 'INVALID'}\"\n            [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Zip Code\" formControlName=\"postalCode\" [id]=\"componentId+'_ZipInput'\" mask=\"00000\">\n          <small class=\"invalid-feedback\" *ngIf=\"group.controls['postalCode'].hasError('required')\">{{zipCodeLabel}} is required</small>\n          <small class=\"invalid-feedback\" *ngIf=\"group.controls['postalCode'].hasError('minlength')\">{{zipCodeLabel}} must contain exactly 5 digits</small>\n      </div>\n  </div>\n</div>\n<div *ngIf=\"group.controls['country'] && group.get('country')?.value !=='USA'\" class=\"row\">\n  <div class=\"col-md-6\">\n    <div class=\"form-group\">\n        <label>{{foreignStateLabel}}</label>\n        <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['foreignState'].status === 'INVALID'}\"\n          type=\"text\" placeholder=\"Foreign State\" formControlName=\"foreignState\" [id]=\"componentId+'_ForeignStateInput'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\" >\n        <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignState'].hasError('required')\">{{foreignStateLabel}} is required</small>\n        \n    </div>\n  </div>\n  <div class=\"col-md-6\">\n    <div class=\"form-group\">\n        <label>{{foreignZipLabel}}</label>\n        <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['foreignZip'].status === 'INVALID'}\"\n          type=\"text\" placeholder=\"Foreign Zip Code\" formControlName=\"foreignZip\" [id]=\"componentId+'_foreignZipInput'\"  >\n        <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignZip'].hasError('required')\">{{foreignZipLabel}} is required</small>\n        <small class=\"invalid-feedback\" *ngIf=\"group.controls['foreignZip'].hasError('minlength')\">{{foreignZipLabel}} must contain exactly ? digits</small>\n    </div> \n  </div>\n\n</div>\n<div *ngIf=\"group.controls['country']\" class=\"row\">\n<div class=\"col-md-6\">\n    <div class=\"form-group\">\n        <label>{{countryLabel}}</label>\n        <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['country'].status === 'INVALID'}\" \n          name=\"AddressCountry\" formControlName=\"country\" [id]=\"componentId+'_CountrySelect'\" [attr.disabled]=\"disableState || group.disabled ? '' : null\">\n        <option *ngFor=\"let c of countries\" [ngValue]=\"c\">{{c}}</option>\n    </select>\n    <small class=\"invalid-feedback\" *ngIf=\"group.controls['country'].hasError('required')\">Country{{countryLabel}} is required</small>\n    </div>\n</div>\n</div>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-contact',\n  templateUrl: './contact.component.html',\n  styleUrls: ['./contact.component.css']\n})\nexport class ContactComponent implements OnInit {\n\n  public componentId = 'OepaContactComponent';\n  /**  The form group for which this address is a member. */\n  @Input() group!: FormGroup;\n  /** Form validation will be displayed when showValidation is true. */\n  @Input() showValidation = false;\n\n  @Input('firstNameLabel') public firstNameLabel: string = 'First Name';\n  @Input('lastNameLabel') public lastNameLabel: string = 'Last Name';\n  @Input('showMiddleName') public showMiddleName: boolean = false;\n  @Input('middleNameLabel') public middleNameLabel: string = 'Middle Name';\n  @Input('emailLabel') public emailLabel: string = 'Email';\n  @Input('phoneLabel') public phoneLabel: string = 'Phone';\n  @Input('faxLabel') public faxLabel: string = 'Fax';\n  @Input('noFax') public noFax: boolean = false\n  @Input('showTitle') public showTitle: boolean = false;\n  @Input('noPhone') public noPhone: boolean = false;\n  @Input('noEmail') public noEmail: boolean = false;\n  @Input('isSearch') public isSearch: boolean = false;\n\n    // max length values. override if needed\n    @Input('firstNameMaxLength') public firstNameMaxLength = 50;\n    @Input('middleNameMaxLength') public middleNameMaxLength = 50;\n    @Input('lastNameMaxLength') public lastNameMaxLength = 50;\n    @Input('titleMaxLength') public titleMaxLength = 40;\n    @Input('emailMaxLength') public emailMaxLength = 80;\n\n  constructor(private idService: OepaComponentIdService) {\n  }\n\n  ngOnInit() {\n    if (this.group) {\n      this.componentId = this.idService.getComponentId(this.group);\n    }\n  }\n\n}\n","<div [formGroup]=\"group\">\n\t<div *ngIf=\"!showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\" [ngClass]=\"{'is-invalid':showValidation && group.controls['middleName'].status === 'INVALID'}\">\n\t\t\t\t<label>{{middleNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Middle Name\" formControlName=\"middleName\" [id]=\"componentId+'_MiddleNameInput'\" [maxlength]=\"middleNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls['middleName'].status === 'INVALID'\">Middle Name is required</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showTitle\" class=\"row\">\n\t\t<div class=\"col-md-12\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>Title</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Title\" \n\t\t\t\t[ngClass]=\"{'is-invalid':showValidation && group.controls['title'].status === 'INVALID'}\"\n\t\t\t\tformControlName=\"title\"  [id]=\"componentId+'_TitleInput'\" [maxlength]=\"titleMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['title'].hasError('required')\">Title is required</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"row\">\n\t\t<div *ngIf=\"!noEmail\" class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{emailLabel}}</label>\n\t\t\t\t<input type=\"email\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['emailAddress'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Email\" formControlName=\"emailAddress\"  [id]=\"componentId+'_EmailInput'\" [maxlength]=\"emailMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('required')\">{{emailLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('maxlength')\">{{emailLabel}} has exceeded its maximum length</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('email')\">Please enter a valid email address</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div [ngClass]=\"{ 'col-md-3': !noFax, 'col-md-6': noFax }\">\n\t\t\t<div *ngIf=\"!noPhone\" class=\"form-group\">\n\t\t\t\t<label>{{phoneLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['phoneNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"phoneNumber\" [id]=\"componentId+'_PhoneInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('required')\">{{phoneLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"!noFax\" class=\"col-md-3\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{faxLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['faxNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"faxNumber\" [id]=\"componentId+'_FaxInput'\"  mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('required')\">{{faxLabel}} is required</small>\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>","import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { BsDatepickerConfig } from 'ngx-bootstrap/datepicker';\n\nimport { OepaComponentIdService } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-datepicker',\n  templateUrl: './datepicker.component.html',\n  styleUrls: ['./datepicker.component.css']\n})\nexport class DatepickerComponent implements OnInit, OnChanges {\n  public componentId = 'OepaDatepickerComponent';\n  @Input() group!: FormGroup;\n  @Input() field!: string;\n  @Input() bsConfig!: Partial<BsDatepickerConfig>;\n  @Input() showValidation = false;\n  @Input() placement!: string;\n  @Input() tableIdx: number | undefined;\n  @Input() small = false;\n\n  public minDate!: Date | undefined;\n  public maxDate!: Date | undefined;\n  public isDisabled = false;\n\n  public getPlacement() : 'top' | 'bottom' | 'left' | 'right' {\n    switch (this.placement) {\n      case 'top':\n        return 'top';\n        break;\n      case 'left':\n        return 'left';\n        break;\n      case 'right':\n        return 'right';\n        break;\n      default:\n        return 'bottom';\n    }\n  }\n\n  constructor(private idService: OepaComponentIdService) { }\n\n  checkValidity() {\n    for (const key in this.group.controls) {\n      if (this.group.controls.hasOwnProperty(key) && key === this.field) {\n        return this.group.controls[key].status !== 'INVALID';\n      }\n    }\n    return null;\n  }\n\n  clearDate() {\n    for (const key in this.group.controls) {\n      if (this.group.controls.hasOwnProperty(key) && key === this.field) {\n        this.group.controls[key].setValue(null);\n      }\n    }\n  }\n\n  ngOnInit() {\n    if (this.bsConfig) {\n      if (this.bsConfig.minDate) {\n        this.minDate = this.bsConfig.minDate;\n      } else {\n        this.minDate = undefined;\n      }\n      if (this.bsConfig.maxDate) {\n        this.maxDate = this.bsConfig.maxDate;\n      } else {\n        this.maxDate = undefined;\n      }\n      if (this.bsConfig.isDisabled) {\n        this.isDisabled = this.bsConfig.isDisabled; // defaults to false\n      }\n    } else {\n      this.bsConfig = {};\n    }\n    this.bsConfig.showWeekNumbers = false;\n    if (this.group) {\n      this.componentId = this.idService.getComponentId(this.group);\n      this.componentId += (this.componentId.length > 0 ? '_' : '') + (this.field || '') + (this.tableIdx || '');\n    } else {\n      console.log('OOPS No datepickerForm yet');\n    }\n  }\n\n  // force value to null in case where user enters non-numeric values\n  // in the field. The \"normal\" behavior of the ngx-bootstrap datepicker\n  // is to set the input value to \"Invalid Date\". Unfortunately, this messes\n  // up validation. The method below will force the input value to null\n  // in this case which will ensure that validation works properly.\n  onValueChange(event:any) {\n    // timeout is needed to make this work properly\n    setTimeout(() => {\n      if (this.group && this.group.controls[this.field]) {\n        const value = this.group.controls[this.field].value;\n        if (value && value.toJSON() === null) {\n          this.group.controls[this.field].setValue(null);\n        }\n        this.group.controls[this.field].updateValueAndValidity();\n      }\n    }, 50);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['bsConfig']) {\n      if (changes['bsConfig'].currentValue.minDate || changes['bsConfig'].currentValue.minDate == null) {\n        this.minDate = changes['bsConfig'].currentValue.minDate;\n      }\n\n      if (changes['bsConfig'].currentValue.maxDate || changes['bsConfig'].currentValue.maxDate == null) {\n        this.maxDate = changes['bsConfig'].currentValue.maxDate;\n      }\n    }\n  }\n\n}\n","<div [formGroup]=\"group\">\n  <div>\n      <div class=\"input-group\">\n          <input  [id]=\"componentId+'_Input'\"\n                  class=\"form-control\"\n                  [minDate]=\"minDate\"\n                  [maxDate]=\"maxDate\"\n                  #dp=\"bsDatepicker\"\n                  bsDatepicker\n                  [formControlName]=\"field\"\n                  [bsConfig]=\"bsConfig\"\n                  [isDisabled]=\"group.get('field')?.disabled || false\"\n                  [placement]=\"getPlacement()  || 'bottom'\"\n                  [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\"\n                  (bsValueChange)=\"onValueChange($event)\"\n                  >\n          <div class=\"btn-group\" role=\"group\">\n              <button type=\"button\" class=\"btn btn-primary\" (click)=\"dp.toggle()\" [id]=\"componentId+'_ToggleBtn'\" [disabled]=\"group.get(field)?.disabled\">\n                <i class=\"bi bi-calendar3\"></i>\n              </button>\n              <button type=\"button\" class=\"btn btn-primary\" (click)=\"clearDate()\" [id]=\"componentId+'_ClearBtn'\" [disabled]=\"group.get(field)?.disabled\">\n                <i class=\"bi bi-x-lg\"></i>\n              </button>\n          </div>\n      </div>\n      <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && group.get(field)?.hasError('required')\">Date is required</small>\n      <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && group.get(field)?.invalid && !group.get(field)?.hasError('required')\">Date is out of range</small>\n  </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { OepaAction } from './oepa-action';\nimport { OepaActionEvent } from './oepa-action-event';\n\n/**\n * A dropdown button with a list of actions.\n */\n@Component({\n  selector: 'oepa-action-btn',\n  templateUrl: './action-btn.component.html',\n  styleUrls: ['./action-btn.component.css']\n})\nexport class ActionBtnComponent {\n  busy = false;\n\n  /** Button label */\n  @Input() label = 'Actions';\n  /** Unique id for this button */\n  @Input() btnId = '';\n  /** Data to be passed to emitter */\n  @Input() data: any;\n  /** List of actions for this button */\n  @Input() actions: Array<OepaAction> = [];\n  /** Make button \"normal\" size (default is btn-sm) */\n  @Input() normalSize = false;\n  /** dropup? */\n  @Input() dropup = false;\n\n  /** Event emitted when an action is selected */\n  @Output() actionClicked: EventEmitter<OepaActionEvent> = new EventEmitter();\n\n  constructor(private sanitizer: DomSanitizer) { }\n\n  public sanitize(html: string): SafeHtml {\n      return this.sanitizer.bypassSecurityTrustHtml(html);\n  }\n\n  public onActionClicked(action: OepaAction): void {\n      const data = this.data;\n      this.actionClicked.emit({ \n        action: action, \n        data: data,\n        buttonObj: this\n      });\n  }\n\n  public setBusy() {\n    this.busy = true;\n  }\n\n  public clearBusy() {\n    this.busy = false;\n  }\n\n  public getID(): string {\n    return this.btnId + '_ActionBtn';\n  }\n\n}\n","<div *ngIf=\"actions && actions.length > 0\" class=\"btn-group\" dropdown [dropup]=\"dropup\">\n  <button dropdownToggle type=\"button\" class=\"btn btn-primary dropdown-toggle\" [ngClass]=\"{ 'btn-sm' : !normalSize }\"\n    [id]=\"btnId+'_ActionBtn'\">\n    <span *ngIf=\"busy\" class=\"spinner-border text-primary\" role=\"status\"></span>\n    {{label}} \n    <span class=\"caret\"></span>\n  </button>\n\n  <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right\" role=\"menu\">\n      <li *ngFor=\"let action of actions; let i = index;\" role=\"menuitem\">\n          <a *ngIf=\"!busy\" class=\"dropdown-item\" (click)=\"onActionClicked(action)\" [id]=\"btnId+'_ActionLink_'+i\">\n            <i ngClass=\"{{action.className || ''}}\"></i> {{action.title}}\n          </a>\n      </li>\n  </ul>\n</div> \n<!-- display disabled button if no actions are available -->\n<div *ngIf=\"!actions || actions.length === 0\">\n  <button type=\"button\" class=\"btn btn-primary\" [ngClass]=\"{ 'btn-sm' : !normalSize }\" [id]=\"btnId+'_ActionBtn'\" disabled>\n    N/A \n  </button>\n</div>","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { OepaAction } from '../action-btn/oepa-action';\n\n@Component({\n  selector: 'oepa-action-btn-modal',\n  templateUrl: './action-btn-modal.component.html',\n  styleUrls: ['./action-btn-modal.component.css']\n})\nexport class ActionBtnModalComponent implements OnInit {\n  actions: Array<OepaAction> = [{title: 'Hello', className: 'bi bi-person-raised-hand'}, { title: 'Goodbye', className: 'bi bi-person-walking'}];\n\n  constructor(public bsModalRef: BsModalRef) { }\n\n  ngOnInit() {\n  }\n\n}\n","<div class=\"modal-header\">\n    <h4 class=\"modal-title pull-left\">Action Button Test</h4>\n    <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n    </button>\n</div>\n<div class=\"modal-body\">\n    <div class=\"row\">\n        <div class=\"col-sm-12 text-center\">\n            <oepa-action-btn [actions]=\"actions\"></oepa-action-btn>\n        </div>\n        <div class=\"row\">\n            <div class=\"col-sm-12 text-center\">\n                <div class=\"btn-group\" dropdown placement=\"bottom right\">\n                    <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn btn-primary dropdown-toggle\"\n                        aria-controls=\"dropdown-basic\">\n                        Button dropdown <span class=\"caret\"></span>\n                    </button>\n                    <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu\" role=\"menu\"\n                        aria-labelledby=\"button-basic\">\n                        <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\">Action</a></li>\n                        <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\">Another action</a></li>\n                        <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\">Something else here</a></li>\n                        <li class=\"divider dropdown-divider\"></li>\n                        <li role=\"menuitem\"><a class=\"dropdown-item\" href=\"#\">Separated link</a>\n                        </li>\n                    </ul>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n<div class=\"modal-footer\">\n    <button type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"bsModalRef.hide()\">Close</button>\n</div>","import { Component, OnInit, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { OepaComponentIdService } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-checkbox',\n  templateUrl: './checkbox.component.html',\n  styleUrls: ['./checkbox.component.css']\n})\nexport class CheckboxComponent implements OnInit {\n  @Input() group!: FormGroup;\n  @Input() field!: string;\n  @Input() label!: string;\n  public componentId = 'OepaCheckbox';\n\n  constructor(private idService: OepaComponentIdService) { \n  }\n\n  ngOnInit() {\n    if (this.group) {\n      this.componentId = this.idService.getComponentId(this.group);\n    }\n  }\n\n}\n","<span *ngIf=\"group.controls[field].value && group.disabled\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>\n<span [ngClass]=\"{ 'custom-checkbox': (group.controls[field].value && group.disabled) }\" [formGroup]=\"group\">\n    <input [ngClass]=\"{ 'custom-control-input': (group.controls[field].value && group.disabled) }\" type=\"checkbox\" [formControlName]=\"field\" [id]=\"componentId\">\n    <label [ngClass]=\"{ 'custom-control-label': (group.controls[field].value && group.disabled), 'label-bold': (group.controls[field].value && group.disabled) }\">\n        <span *ngIf=\"!group.controls[field].value || !group.disabled\">&nbsp;</span>\n        {{label}}\n    </label>\n</span>\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\n\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n  selector: 'oepa-comment-modal',\n  templateUrl: './comment-modal.component.html',\n  styleUrls: ['./comment-modal.component.css']\n})\nexport class CommentModalComponent implements OnInit {\n  public modalForm !:FormGroup;\n  public errorMessage: string | undefined  = undefined;\n  public commentText: string | undefined  = undefined;\n\n  @Input() modalTitle!: string;\n  @Input() commentsLabel = 'Comments';\n  @Input() processBtnLabel!: string;\n\n  @Output() onProcessComment: EventEmitter<string> = new EventEmitter<string>();\n  @Output() onCancel: EventEmitter<void> = new EventEmitter<void>();\n\n  constructor(private fb: FormBuilder, public bsModalRef: BsModalRef) { }\n\n  ngOnInit() {\n    if (this.modalForm === undefined) {\n      this.modalForm = this.fb.group({\n        commentText: ''\n      });\n      this.modalForm.controls['commentText']?.valueChanges.subscribe(comment => this.commentText = comment);\n    } else {\n      this.modalForm.reset();\n    }\n  }\n\n  processComment() {\n    this.onProcessComment.emit(this.commentText);\n    this.bsModalRef.hide();\n  }\n\n  cancel() {\n    this.onCancel.emit();\n    this.bsModalRef.hide();\n  }\n\n}\n","<div class=\"modal-header\">\n  <h3 class=\"modal-title\">{{modalTitle}}</h3>\n</div>\n\n<div class=\"modal-body\">\n  <div [formGroup]=\"modalForm\"  class=\"form-group\">\n    <label>{{commentsLabel}}</label>\n    <textarea class=\"form-control\" formControlName=\"commentText\" id=\"CommentInput\" rows=\"4\" maxlength=\"2000\"></textarea>\n  </div>\n</div>\n\n<div class=\"modal-footer\">\n  <button class=\"btn btn-primary mr-1\" type=\"button\" id=\"ProcessCommentBtn\" (click)=\"processComment()\">{{processBtnLabel}}</button>\n  <button class=\"btn btn-primary mr-1\" type=\"button\" id=\"CencelCommentBtn\" (click)=\"cancel()\">Cancel</button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { OepaTableColumn } from './oepa-table-column';\nimport { OepaTableRow } from './oepa-table-row';\nimport { OepaTableSortCriterion } from './oepa-table-sort-criterion';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TableService {\n  private filterInfo: any = {};\n  private sortInfo:any = {};\n  private idSuffix = 0;\n  private pageInfo: any = {};\n  private dataInfo: any = {};\n\n  public reset(tableId: string) {\n    this.clearFilterInfo(tableId);\n    this.clearSortInfo(tableId);\n    this.clearPageInfo(tableId);\n    this.clearDataInfo(tableId);\n  }\n\n  public nextIdSuffix() : number {\n    return this.idSuffix++;\n  }\n\n  public clearSortInfo(tableId: string) {\n    this.sortInfo[tableId] = undefined;\n  }\n\n  public clearFilterInfo(tableId: string) {\n    this.filterInfo[tableId] = undefined;\n  }\n\n  public clearPageInfo(tableId: string) {\n    this.pageInfo[tableId] = undefined;\n  }\n\n  public clearDataInfo(tableId: string) {\n    this.dataInfo[tableId] = undefined;\n  }\n\n  public setFilter(tableId: string, columnId: string, filter: string) {\n    if (!this.filterInfo[tableId]) {\n      this.filterInfo[tableId] = {};\n    }\n    this.filterInfo[tableId][columnId] = filter;\n  }\n\n  public getFilter(tableId: string, columnId: string): string {\n    let filter = undefined;\n    if (this.filterInfo[tableId]) {\n      filter = this.filterInfo[tableId][columnId];\n    }\n    return filter;\n  }\n\n  public setSort(tableId: string, column: OepaTableColumn) {\n    let sortCriteria = this.sortInfo[tableId] || [];\n    if (column && column.id) {\n      let found = false;\n      sortCriteria.forEach((criterion:any) => {\n        if (criterion.columnId === column.id) {\n          found = true;\n          criterion.sort = column.sort;\n        }\n      });\n      if (!found) {\n        sortCriteria.push({\n          columnId: column.id,\n          sort: column.sort\n        });\n      } else if (column.sort !== 'asc' && column.sort !== 'desc') {\n        column.sortIndex = undefined;\n        sortCriteria = sortCriteria.filter((criterion:any) => {\n          return criterion.columnId != column.id;\n        });\n      }\n    }\n    this.sortInfo[tableId] = sortCriteria;\n  }\n\n  public getSortCriterion(tableId: string, columnId: string): OepaTableSortCriterion | undefined {\n    let sort: OepaTableSortCriterion | undefined = undefined;\n    let sortCriteria = this.sortInfo[tableId] || [];\n    for (let i=0; i<sortCriteria.length; i++) {\n      if (sortCriteria[i].columnId == columnId) {\n        sortCriteria.sortIndex = i + 1;\n        sort = sortCriteria[i];\n      }\n    };\n    return sort;\n  }\n\n  public getSortCriteria(tableId: string) : OepaTableSortCriterion[] {\n    return this.sortInfo[tableId];\n  }\n\n  public setPage(tableId: string, pageNumber: number) {\n    this.pageInfo[tableId]= pageNumber;\n  }\n\n  public getPage(tableId: string): number {\n    let pageNumber = undefined;\n    if (this.pageInfo[tableId]) {\n      pageNumber = this.pageInfo[tableId];\n    }\n    return pageNumber;\n  }\n\n  public setData(tableId: string, data: Array<OepaTableRow>) {\n    this.dataInfo[tableId]= data;\n  }\n\n  public getData(tableId: string): Array<OepaTableRow> {\n    let data = undefined;\n    if (this.dataInfo[tableId]) {\n      data = this.dataInfo[tableId];\n    }\n    return data;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\n\nimport { OepaTable } from './oepa-table';\nimport { OepaTableConfig } from './oepa-table-config';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TableExportService {\n  private downloadHTMLUrl = '/ebiz/api/v1/fileutil/tableAsHTML';\n  private downloadExcelUrl = '/ebiz/api/v1/fileutil/tableAsExcel';\n  private downloadDummyHTMLUrl = '/ebiz/api/v1/fileutil/dummyTableHTML';\n  private downloadDummyExcelUrl = '/ebiz/api/v1/fileutil/dummyTableExcel';\n\n  constructor(private http: HttpClient) {\n  }\n\n  /**\n   * Return a string representing the contents of table as HTML.\n   * @param table\n   */\n  public downloadHTML(table: OepaTable, config: OepaTableConfig): Observable<string> {\n    const headers = new HttpHeaders();\n    headers.append('Content-type', 'application/json;odata=verbose');\n    let url = this.downloadHTMLUrl + (config.exportEmbedSubTable ? '' : '/sideBySide') + (config.exportShowHiddenColumns ? '?showHidden=true' : '');\n    return this.http.post(url, table, { headers: headers, responseType: 'text' });\n  }\n\n  /**\n   * Return a string representing the contents of table as an Excel file.\n   * @param table\n   */\n  public downloadExcel(table: OepaTable, config: OepaTableConfig): Observable<any> {\n    const headers = new HttpHeaders();\n    headers.append('Content-type', 'application/json;odata=verbose');\n    let url = this.downloadExcelUrl + (config.exportEmbedSubTable ? '' : '/sideBySide') + (config.exportShowHiddenColumns ? '?showHidden=true' : '');\n    return this.http.post(url, table, { headers: headers, responseType: 'blob' });\n  }\n\n  /**\n   * Dummy method for testing HTML download.\n   */\n  public downloadDummyHTML(): Observable<string> {\n    const headers = new HttpHeaders();\n    return this.http.get(this.downloadDummyHTMLUrl, { headers: headers, responseType: 'text' });\n  }\n\n  /**\n   * Dummy method for testing Excel download.\n   */\n  public downloadDummyExcel(): Observable<any> {\n    const headers = new HttpHeaders();\n    return this.http.get(this.downloadDummyExcelUrl, { headers: headers, responseType: 'blob' });\n  }\n\n}\n","import { Directive, EventEmitter, Input, Output, HostListener, OnInit } from '@angular/core';\nimport { OepaTableColumn } from './oepa-table-column';\nimport { TableService } from './table.service';\n\n@Directive({selector: '[oepaTableSorting]'})\nexport class OepaTableSortingDirective implements OnInit {\n  @Input() public tableId = '';\n  @Input() public oepaTableSorting!: boolean;\n  @Input() public column!: OepaTableColumn;\n  @Output() public sortChanged: EventEmitter<OepaTableColumn> = new EventEmitter();\n\n  @HostListener('click', ['$event'])\n  public onToggleSort(event: any): void {\n    if (event) {\n      event.preventDefault();\n    }\n\n    // toggle sort for selected column\n    if (this.oepaTableSorting && this.column && this.column.sort) {\n      switch (this.column.sort) {\n        case 'asc':\n          this.column.sort = 'desc';\n          break;\n        case 'desc':\n          this.column.sort = 'none';\n          break;\n        default:\n          this.column.sort = 'asc';\n          break;\n      }\n\n      this.sortChanged.emit(this.column);\n    }\n  }\n\n  constructor(private tableService: TableService) {\n  }\n\n  ngOnInit() {\n    let criterion = this.tableService.getSortCriterion(this.tableId, this.column.id);\n    if (criterion && criterion.sort && this.column.sort !== criterion.sort) {\n      this.column.sort = criterion.sort;\n    }\n  }\n}\n","import { Directive, EventEmitter, ElementRef, HostListener, Input, Output, OnInit, Renderer2 } from '@angular/core';\nimport { OepaTableFilter } from './oepa-table-filter';\nimport { TableService } from './table.service';\n\n// import {setProperty} from 'angular2/ts/src/core/forms/directives/shared';\nfunction setProperty(renderer: Renderer2, elementRef: ElementRef, propName: string, propValue: any): void {\n  renderer.setProperty(elementRef.nativeElement, propName, propValue);\n}\n\n@Directive({selector: '[oepaTableFiltering]'})\nexport class OepaTableFilteringDirective implements OnInit {\n  @Input() public oepaTableFiltering: OepaTableFilter = {\n    filterString: '',\n    columnId: ''\n  };\n\n  @Input() tableId = '';\n\n  @Output() public tableChanged: EventEmitter<OepaTableFilter> = new EventEmitter();\n\n  private element: ElementRef;\n  private renderer: Renderer2;\n\n  @HostListener('input', ['$event.target.value'])\n  public onChangeFilter(event: string): void {\n    this.oepaTableFiltering.filterString = event;\n    this.tableService.setFilter(this.tableId, this.oepaTableFiltering.columnId || '', this.oepaTableFiltering.filterString);\n    this.tableChanged.emit(this.oepaTableFiltering);\n  }\n\n  public constructor(element: ElementRef, renderer: Renderer2, private tableService: TableService) {\n    this.element = element;\n    this.renderer = renderer;\n  }\n\n  ngOnInit(): void {    \n    let storedFilterValue : string | undefined = this.tableService.getFilter(this.tableId, this.oepaTableFiltering.columnId || '');\n    if (!storedFilterValue) {\n      storedFilterValue = this.oepaTableFiltering.filterString;\n    }\n    if (storedFilterValue) {\n      this.oepaTableFiltering.filterString = storedFilterValue;\n      setTimeout(() => {\n        this.renderer.setProperty(this.element.nativeElement, 'value', this.oepaTableFiltering.filterString);\n        this.tableChanged.emit(this.oepaTableFiltering);\n      }, 100);\n    }\n  }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({ \n    name : 'cellInnerHTML'\n})\nexport class OepaTableCellInnerHtmlPipe implements PipeTransform {\n    transform(row: OepaTableRow, column: OepaTableColumn): string {\n        let result: string | undefined = '';\n        row.cells.forEach((cell: OepaTableCell) => {\n          if (cell.id === column.id) {\n            result = cell.innerHTML;\n          }\n        });\n        return result;\n      }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({ \n    name : 'cellColspan'\n})\nexport class OepaTableCellColSpanPipe implements PipeTransform {\n    transform(row: OepaTableRow, column: OepaTableColumn): number {\n        let result: number = 1;\n        row.cells.forEach((cell: OepaTableCell) => {\n          if (cell.id === column.id) {\n            result = cell.colSpan || 1;\n          }\n        });\n        return result;\n      }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({ \n    name : 'cellValue'\n})\nexport class OepaTableCellValuePipe implements PipeTransform {\n    transform(row: OepaTableRow, column: OepaTableColumn): string {\n        let result: string | undefined = '';\n        row.cells.forEach((cell: OepaTableCell) => {\n          if (cell.id === column.id) {\n            result = cell.value;\n          }\n        });\n        return result;\n      }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({\n  name: 'cellClassname'\n})\nexport class OepaTableCellClassnamePipe implements PipeTransform {\n  transform(row: OepaTableRow, column: OepaTableColumn): string {\n    let result: string | undefined = '';\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === column.id) {\n        result = cell.className;\n      }\n    });\n    return result;\n  }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({\n  name: 'cellIconClassname'\n})\nexport class OepaTableCellIconClassnamePipe implements PipeTransform {\n  transform(row: OepaTableRow, column: OepaTableColumn): string {\n    let result: string | undefined = '';\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === column.id) {\n        result = cell.iconClassName;\n      }\n    });\n    return result;\n  }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({\n  name: 'cellImgSrc'\n})\nexport class OepaTableCellImgSrcPipe implements PipeTransform {\n  transform(row: OepaTableRow, column: OepaTableColumn): string {\n    let result: string | undefined = '';\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === column.id) {\n        result = cell.imgSrc;\n      }\n    });\n    return result;\n  }\n}","import { Component, EventEmitter, Input, Output, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { OepaTable } from './oepa-table';\nimport { OepaTableConfig } from './oepa-table-config';\nimport { OepaTableHeader } from './oepa-table-header';\nimport { OepaTableColumn } from './oepa-table-column';\nimport { OepaTableRow } from './oepa-table-row';\nimport { OepaTableCell } from './oepa-table-cell';\nimport { OepaTableFilter } from './oepa-table-filter';\nimport { OepaTablePageInfo } from './oepa-table-page-info';\nimport { OepaTableCellClickEvent } from './oepa-table-cell-click-event';\n\nimport { OepaActionEvent } from '../action-btn/oepa-action-event';\n\nimport { TableExportService } from './table-export.service';\nimport { OepaFileUtilService } from 'oepa-common-lib';\nimport { OepaTemplateInfo } from 'oepa-common-lib';\nimport { TableService } from './table.service';\nimport { OepaTableSortCriterion } from './oepa-table-sort-criterion';\nimport { PageChangedEvent } from 'ngx-bootstrap/pagination';\n\n@Component({\n  selector: 'oepa-table',\n  templateUrl: './table.component.html',\n  styleUrls: ['./table.component.css']\n})\nexport class TableComponent implements OnInit {\n  public showFilterRow: Boolean = false;\n  public headerRows: Array<OepaTableHeader> = [];\n  public rows: Array<OepaTableRow> = [];\n  public visibleColumnCount = 0;\n  public allColumnCount = 0;\n  public exportVisibleOnly: boolean | undefined = false;\n\n  public dataColumns: Array<OepaTableColumn> = [];\n  public hiddenColumns: Array<OepaTableColumn> = [];\n  public columnHeaders: Array<string> = [];\n  public _data: Array<OepaTableRow> = [];\n  private _config: OepaTableConfig = {};\n  private currentFilters: Array<OepaTableFilter> = [{\n    filterString: '',\n    columnId: undefined\n  }];\n\n  public dataHasDetails = false;\n  public showAllDetails = false;\n\n  public allRowsSelected = false;\n\n  public pageInfo: OepaTablePageInfo = {\n    page: 1,\n    itemsPerPage: 10,\n    maxSize: 5,\n    numPages: 1,\n    length: 0\n  };\n  public currentPage = 1;\n  public paginationOn = true;\n\n  @Input() tableId = '';\n\n  @Input()\n  public set config(conf: OepaTableConfig) {\n    if (!conf.className) {\n      conf.className = 'table-striped table-bordered';\n    }\n    if (conf.classNames) {\n      conf.className = conf.classNames.join(' ');\n    }\n    if (conf.rowsPerPage) {\n      this.pageInfo.itemsPerPage = conf.rowsPerPage;\n    }\n    this.exportVisibleOnly = conf.exportVisibleOnly;\n    this._config = conf;\n  }\n\n  public get config(): OepaTableConfig {\n    return this._config;\n  }\n\n  @Input()\n  public set complexHeader(hdrs: Array<OepaTableHeader>) {\n    this.resetHeaders();\n    if (hdrs && hdrs.length) {\n      hdrs.forEach((hdr: OepaTableHeader) => {\n        this.headerRows.push(this.extractInnerColumns(hdr.columns));\n      });\n      this.columnHeaders = this.extractColumnHeaders(this.headerRows);\n      this.dataColumns = this.extractDataColumns(this.headerRows);\n      this.initializeHiddenColumns(true);\n    }\n  }\n\n  @Input()\n  public set header(hdr: OepaTableHeader) {\n    this.resetHeaders();\n    if (hdr.columns && hdr.columns.length > 0) {\n      this.headerRows.push(this.extractInnerColumns(hdr.columns));\n    }\n    this.columnHeaders = this.extractColumnHeaders(this.headerRows);\n    this.dataColumns = this.extractDataColumns(this.headerRows);\n    this.initializeHiddenColumns(false);\n  }\n\n  @Input() customBtnLabel: string | undefined = undefined;\n  @Input() customBtnVisible = false;\n  @Input() customBtnEnabled = false;\n\n  // Outputs (Events)\n  @Output() public cellClicked: EventEmitter<OepaTableCellClickEvent> = new EventEmitter();\n  @Output() public actionClicked: EventEmitter<OepaActionEvent> = new EventEmitter();\n  @Output() public rowSelected: EventEmitter<Array<OepaTableRow>> = new EventEmitter();\n  @Output() public customBtnClicked: EventEmitter<void> = new EventEmitter();\n\n  private resetHeaders() {\n    this.headerRows = [];\n    this.columnHeaders = [];\n    this.dataColumns = [];\n    this.hiddenColumns = [];\n  }\n\n  private initializeHiddenColumns(complexHeader: boolean) {\n    this.visibleColumnCount = 0;\n    this.allColumnCount = 0;\n    this.dataColumns.forEach((column) => {\n      if (complexHeader && (column?.hidden === true || column?.hidden === false)) {\n        console.error('disabling hidden attribute for column: ' + column.id +\n          '. Hidden columns are not supported for complex headers (yet).');\n        column.hidden = undefined;\n        this.visibleColumnCount++;\n      } else if (column?.hidden === true) {\n        this.hiddenColumns.push(column);\n      } else {\n        this.visibleColumnCount++;\n      }\n      this.allColumnCount++;\n    });\n    // console.log('visibleColumnCount = ' + this.visibleColumnCount);\n  }\n\n  @Input()\n  public set data(values: Array<OepaTableRow>) {\n    if (!this._data || this._data.length === 0) {\n      this._data = this.tableService.getData(this.tableId) || [];\n    }\n    if (values) {\n      for (let i = 0; i < values.length; i++) {\n        values[i].privateId = i;\n      }\n      if (this._data && this._data.length !== values.length) {\n        this.tableService.clearPageInfo(this.tableId);\n      }\n    }\n\n    this._data = values;\n    this.tableService.setData(this.tableId, this._data);\n    this.updateTable();\n  }\n\n  public get data(): Array<OepaTableRow> {\n    return this._data.map(x => Object.assign({}, x));\n  }\n\n  @Input() totalRow: OepaTableRow | undefined;\n\n  public constructor(private sanitizer: DomSanitizer,\n    private tableService: TableService,\n    private tableExportService: TableExportService,\n    private fileUtilService: OepaFileUtilService) {\n  }\n\n  ngOnInit() {\n    this.paginationOn = !this._config.disablePagination;\n  }\n\n  private extractInnerColumns(inner: Array<OepaTableColumn>): OepaTableHeader {\n    const header: OepaTableHeader = { columns: [] };\n    inner.forEach((value: OepaTableColumn) => {\n      const column = header.columns.find((col: OepaTableColumn) => col.id === value.id);\n      if (column) {\n        // overwrite repeated column\n        Object.assign(column, value);\n      }\n      if (!column) {\n        header.columns.push(value);\n      }\n    });\n    return header;\n  }\n\n  private extractColumnHeaders(headerRows: Array<OepaTableHeader>): Array<string> {\n    const headers: Array<string> = [];\n    let rowIndex = 0;\n    const childColumns: any = {};\n    headerRows.forEach((hdr: OepaTableHeader) => {\n      let colIndex = 0;\n      hdr.columns.forEach((column: OepaTableColumn) => {\n        // console.log('rowIndex=' + rowIndex + ', colIndex=' + colIndex + ', column=' + JSON.stringify(column));\n        if (rowIndex === 0) {\n          headers.push(column.title);\n          if (column.colspan) {\n            for (let count = 1; count < column.colspan; count++) {\n              headers.push('');\n            }\n          }\n          if (column.rowspan) {\n            childColumns[colIndex] = column.rowspan - 1;\n          }\n        } else {\n          while (childColumns[colIndex] && childColumns[colIndex] > 0) {\n            childColumns[colIndex]--;\n            colIndex++;\n          }\n          headers[colIndex] += ' ' + column.title;\n          if (column.colspan) {\n            for (let count = 1; count < column.colspan; count++) {\n              colIndex++;\n            }\n          }\n        }\n        colIndex++;\n      });\n      rowIndex++;\n    });\n    // console.log('headers = ' + JSON.stringify(headers));\n    return headers;\n  }\n\n\n  private extractDataColumns(headerRows: Array<OepaTableHeader>): Array<OepaTableColumn> {\n    const dataColumns: Array<OepaTableColumn> = [];\n    let rowIndex = 0;\n    const childColumns:any = {};\n    headerRows.forEach((hdr: OepaTableHeader) => {\n      let colIndex = 0;\n      hdr.columns.forEach((column: OepaTableColumn) => {\n        if (rowIndex === 0) {\n          if (column.colspan && column.colspan > 1) {\n            for (let count = 0; count < column.colspan; count++) {\n              dataColumns.push({\n                id: '',\n                title: ''\n              });\n            }\n            colIndex += (column.colspan - 1);\n          } else {\n            dataColumns.push(column);\n            if (column.rowspan) {\n              childColumns[colIndex] = column.rowspan - 1;\n            }\n          }\n        } else {\n          while (childColumns[colIndex] && childColumns[colIndex] > 0) {\n            childColumns[colIndex]--;\n            colIndex++;\n          }\n          if (column.colspan && column.colspan > 1) {\n            colIndex += (column.colspan - 1);\n          } else {\n            dataColumns[colIndex] = column;\n          }\n        }\n        colIndex++;\n      });\n      rowIndex++;\n    });\n    // console.log('dataColumns = ' + JSON.stringify(dataColumns));\n    return dataColumns;\n  }\n\n  public sanitize(html: string): SafeHtml {\n    return this.sanitizer.bypassSecurityTrustHtml(html);\n  }\n\n  /**\n   * Check to see if any filters are set\n   */\n  public noFilters(): boolean {\n    let noFilters = true;\n    this.currentFilters.forEach(filter => {\n      if (filter.filterString && filter.filterString.length > 0) {\n        noFilters = false;\n      }\n    });\n    return noFilters;\n  }\n\n  /**\n   * Retrieve the global filter string (if any) as a RegExp\n   */\n  private getGlobalFilter(): RegExp | undefined {\n    let regExp: RegExp | undefined;\n    this.currentFilters.forEach(filter => {\n      if (!filter.columnId && filter.filterString && filter.filterString.length > 0) {\n        regExp = new RegExp(filter.filterString, 'i');\n      }\n    });\n    return regExp;\n  }\n\n  /**\n   * Retrieve the filter for the specified column (if any) as a RegExp.\n   * @param columnId\n   */\n  private getFilterForColumn(columnId: string): RegExp | undefined {\n    let regExp: RegExp | undefined;\n    this.currentFilters.forEach(filter => {\n      if (filter.columnId === columnId && filter.filterString && filter.filterString.length > 0) {\n        regExp = new RegExp(filter.filterString, 'i');\n      }\n    });\n    return regExp;\n  }\n\n  /**\n   * Filter the table data provided by the global or column-specific\n   * filters set in the UI.\n   * @param data\n   */\n  private filterData(data: Array<OepaTableRow>): Array<OepaTableRow> {\n    // don't attempt filtering if there are no filters set\n    if (this.noFilters()) {\n      return data;\n    }\n    let filteredData: Array<OepaTableRow> = data;\n    const tempArray: Array<OepaTableRow> = [];\n    filteredData.forEach((row: OepaTableRow) => {\n      let flag = this.filterByColumnFilters(row);\n      if (flag) {\n        flag = this.filterByGlobalFilter(row);\n      }\n      if (flag || row.isDivider) {\n        tempArray.push(row);\n      }\n    });\n    filteredData = tempArray;\n    return filteredData;\n  }\n\n  /**\n   * Test if row matches any of the columnn filters that may be set.\n   * @param row\n   */\n  private filterByColumnFilters(row: OepaTableRow): boolean {\n    let flag = true;\n    row.cells.forEach((cell: OepaTableCell) => {\n      const regExp = this.getFilterForColumn(cell.id);\n      const filterValue = cell.filterValue || cell.value || '';\n      if (regExp && filterValue !== undefined && filterValue !== null) {\n        const result = filterValue.toString().match(regExp);\n        flag = flag && (result !== null);\n      }\n    });\n    return flag;\n  }\n\n  /**\n   * Test if row matches the global filter\n   * @param row\n   */\n  private filterByGlobalFilter(row: OepaTableRow): boolean {\n    let flag = true;\n    const regExp = this.getGlobalFilter();\n    if (regExp) {\n      flag = false;\n      row.cells.forEach((cell: OepaTableCell) => {\n        const filterValue = cell.filterValue || cell.value;\n        if (filterValue !== undefined && filterValue !== null) {\n          const result = filterValue.toString().match(regExp);\n          flag = flag || (result !== null);\n        }\n      });\n    }\n    return flag;\n  }\n\n  public hideColumn(column: OepaTableColumn) {\n    this.hiddenColumns.push(column);\n    column.hidden = true;\n    this.visibleColumnCount--;\n  }\n\n  public unhideColumn(columnId: string) {\n    const hiddenCols: Array<OepaTableColumn> = [];\n    this.hiddenColumns.forEach((col) => {\n      if (col.id !== columnId) {\n        hiddenCols.push(col);\n      } else {\n        col.hidden = false;\n      }\n    });\n    this.hiddenColumns = hiddenCols;\n    this.visibleColumnCount++;\n  }\n\n  private sortData(data: Array<OepaTableRow>): Array<OepaTableRow> {\n    let sortCriteria: any = this.tableService.getSortCriteria(this.tableId) || [];\n    if (sortCriteria.length == 0) {\n      return data;\n    }\n\n    this.resetColumnSortIndexes(sortCriteria);\n\n    return data.sort((previous: OepaTableRow, current: OepaTableRow) => {\n      let sortIndex = 0;\n      let sortResult = 0;\n      while (sortIndex < sortCriteria.length && sortResult === 0) {\n        let prev = this.getRowSortValue(previous, sortCriteria[sortIndex].columnId);\n        let curr = this.getRowSortValue(current, sortCriteria[sortIndex].columnId);\n        if (prev > curr) {\n          sortResult =  (sortCriteria[sortIndex].sort === 'desc' ? -1 : 1);\n        } else if (prev < curr) {\n          sortResult =  (sortCriteria[sortIndex].sort === 'asc' ? -1 : 1);\n        } else {\n          sortResult = 0;\n        }\n        sortIndex++;\n      }\n      return sortResult;\n    });\n  }\n\n  public resetColumnSortIndexes(sortCriteria: OepaTableSortCriterion[]) {\n    if (sortCriteria && sortCriteria.length > 0) {\n      for (let i=0; i<sortCriteria.length; i++) {\n        this.dataColumns.forEach(column => {\n          if (column?.id === sortCriteria[i].columnId) {\n            if (column) {\n              column.sortIndex = i + 1;\n            }\n          }\n        });\n      };\n    }\n  }\n\n  /**\n   * Retrieve the display value of the specified cell.\n   * @param row\n   * @param columnId\n   */\n  public getRowValue(row: OepaTableRow, columnId: string): any {\n    let value: any;\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === columnId) {\n        value = cell.value;\n      }\n    });\n    return value;\n  }\n\n  /**\n   *\n   * @param row Retrieve the sort value of the specified cell (will default to display value if sort\n   * value is not specified).\n   * @param columnId\n   */\n  public getRowSortValue(row: OepaTableRow, columnId: string): any {\n    let value: any;\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === columnId) {\n        if (cell.sortValue !== undefined && cell.sortValue !== null) {\n          value = cell.sortValue;\n        } else {\n          value = cell.value;\n        }\n      }\n    });\n    if (typeof value === 'string') {\n      value = value.toUpperCase();\n    }\n    return value;\n  }\n\n  public changePage(data: Array<OepaTableRow> = this.data): Array<OepaTableRow> {\n    if (!this.paginationOn) {\n      return data;\n    }\n    this.updatePage();\n    const start = (this.pageInfo.page - 1) * this.pageInfo.itemsPerPage;\n    const end = this.pageInfo.itemsPerPage > -1 ? (start + this.pageInfo.itemsPerPage) : data.length;\n    // not sure why, but maxSize was getting lost. Reset it here to prevent weirdness.\n    this.pageInfo.maxSize = 5;\n    return data.slice(start, end);\n  }\n\n  public togglePagingation() {\n    this.paginationOn = !this.paginationOn;\n    this.updateTable();\n  }\n\n  public onFilterChanged(filter: OepaTableFilter) {\n    const matchFilter = this.currentFilters.find((f) => {\n      return f.columnId === filter.columnId;\n    });\n    if (!matchFilter) {\n      this.currentFilters.push(filter);\n    } else {\n      matchFilter.filterString = filter.filterString;\n    }\n    this.updateTable(true);\n  }\n\n  public onSortChanged(column: OepaTableColumn) {\n    this.tableService.setSort(this.tableId, column);\n    this.updateTable();\n  }\n\n  public onPageChanged(pageEvent: PageChangedEvent) {\n    this.pageInfo = {\n      page: pageEvent.page,\n      itemsPerPage: pageEvent.itemsPerPage,\n      maxSize: this.pageInfo.maxSize,\n      length: this.pageInfo.length,\n      numPages: this.pageInfo.numPages\n    }\n    this.tableService.setPage(this.tableId, pageEvent.page);\n    this.updateTable();\n  }\n\n  private updateTable(clearSelctedRows: boolean = false) {\n    const filteredData = this.filterData(this.data);\n    const sortedData = this.sortData(filteredData);\n    this.rows = this.changePage(sortedData);\n    this.pageInfo.length = sortedData.length;\n    this.allRowsSelected = false;\n    if (clearSelctedRows) {\n      this.rowSelected.emit([]);\n    }\n    this.dataHasDetails = this.checkForDetails(this.rows);\n  }\n\n  private updatePage() {\n    const savedPageNumber = this.tableService.getPage(this.tableId);\n    if (savedPageNumber && this.pageInfo.page !== savedPageNumber) {\n      this.pageInfo.page = savedPageNumber;\n      this.currentPage = this.pageInfo.page;\n    }\n  }\n\n  private checkForDetails(data: Array<OepaTableRow>): boolean {\n    let hasDetails = false;\n    if (data && data.length) {\n      data.forEach((row: OepaTableRow) => {\n        if (row.showDetail === true || row.showDetail === false) {\n          hasDetails = true;\n        }\n      });\n    }\n    return hasDetails;\n  }\n\n  public toggleAllDetails() {\n    // console.log('toggleAllDetails...');\n    this.showAllDetails = !this.showAllDetails;\n    // console.log('showAllDetails = ' + this.showAllDetails);\n    if (this._data && this._data.length) {\n      this._data.forEach((row: OepaTableRow) => {\n        if (row.showDetail !== undefined) {\n          row.showDetail = this.showAllDetails;\n          // console.log('setting details for row to ' + this.showAllDetails);\n        }\n      });\n    }\n    this.updateTable();\n  }\n\n  public toggleRowDetail(toggleRow: OepaTableRow) {\n    if (toggleRow && this._data && this._data.length) {\n      this._data.forEach((row: OepaTableRow) => {\n        // console.log('TEST: ' + JSON.stringify(row.dataSource) + ' === ' + JSON.stringify(toggleRow.dataSource));\n        if (row.dataSource === toggleRow.dataSource) {\n          // console.log('!!! MATCH !!!');\n          row.showDetail = !toggleRow.showDetail;\n          toggleRow.showDetail = row.showDetail;\n          // console.log('show detail = ' + row.showDetail + ' for row: ' + JSON.stringify(row.dataSource));\n        }\n      });\n      // this._data = this._data.splice(0);\n    }\n    // console.log('toggleRowDetail...');\n    // this.dumpDetailRows();\n  }\n\n  public isActionColumn(columnId: string): boolean {\n    // console.log('isActionColumn ' + columnId);\n    let actionColumn = false;\n    this.headerRows.forEach((hdr: OepaTableHeader) => {\n      hdr.columns.forEach((column: OepaTableColumn) => {\n        if (column.id === columnId) {\n          // console.log('test action column: ' + column.id + ' - ' + column.actionColumn);\n          actionColumn = column.actionColumn || false;\n        }\n      });\n    });\n    return actionColumn;\n  }\n\n  public isColumnHidden(columnId: string): boolean {\n    // console.log('isColumnHidden ' + columnId);\n    let hidden = false;\n    this.headerRows.forEach((hdr: OepaTableHeader) => {\n      hdr.columns.forEach((column: OepaTableColumn) => {\n        if (column.id === columnId) {\n          // console.log('test hidden column: ' + column.id + ' - ' + column.hidden);\n          hidden = column.hidden || false;\n        }\n      });\n    });\n    return hidden;\n  }\n\n  public getHiddenColumns(): Array<OepaTableColumn> {\n    const columns: Array<OepaTableColumn> = [];\n    this.headerRows.forEach((hdr: OepaTableHeader) => {\n      hdr.columns.forEach((column: OepaTableColumn) => {\n        if (column.hidden) {\n          columns.push(column);\n        }\n      });\n    });\n    return columns;\n  }\n\n  public getCellClassName(row: OepaTableRow, columnId: string): string {\n    let result: string | undefined = '';\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === columnId) {\n        result = cell.className;\n      }\n    });\n    return result;\n  }\n\n  public getCellColSpan(row: OepaTableRow, columnId: string): number {\n    let result: number | undefined = 1;\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === columnId) {\n        result = cell.colSpan || 0 >=0 ? cell.colSpan : 1;\n      }\n    });\n    return result;\n  }\n\n  public getCellIconClassName(row: OepaTableRow, columnId: string): string {\n    let result: string | undefined = '';\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === columnId) {\n        result = cell.iconClassName;\n      }\n    });\n    return result;\n  }\n\n  public getCellImgSrc(row: OepaTableRow, columnId: string): string {\n    let result: string | undefined = '';\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === columnId) {\n        result = cell.imgSrc;\n      }\n    });\n    return result;\n  }\n\n  public getCellInnerHTML(row: OepaTableRow, columnId: string): string {\n    let result: string | undefined = '';\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === columnId) {\n        result = cell.innerHTML;\n      }\n    });\n    return result;\n  }\n\n  public cellClick(row: OepaTableRow, columnId: string): void {\n    const value = this.getRowValue(row, columnId);\n    this.cellClicked.emit({ row, columnId, value });\n  }\n\n  public onActionClick(event: OepaActionEvent): void {\n    this.actionClicked.emit(event);\n  }\n\n  public toggleAllRowsSelection(): void {\n    const selectedRows: Array<OepaTableRow> = [];\n    this.allRowsSelected = !this.allRowsSelected;\n    // deselect all rows\n    this._data.forEach((r: OepaTableRow) => {\n      r.selected = false;\n    });\n    // select only visible rows\n    this.rows.forEach((r: OepaTableRow) => {\n      if (r.selectable) {\n        r.selected = this.allRowsSelected;\n      }\n      if (r.selected) {\n        selectedRows.push(r);\n      }\n    });\n    this.rows.slice();\n    // this.updateTable();\n    this.rowSelected.emit(selectedRows);\n  }\n\n  public toggleRowSelection(row: OepaTableRow): void {\n    const selectedRows: Array<OepaTableRow> = [];\n    row.selected = !row.selected;\n    this._data.forEach((dr: OepaTableRow) => {\n      if (row.privateId === dr.privateId) {\n        dr.selected = row.selected;\n      }\n      if (dr.selected) {\n        selectedRows.push(dr);\n      } else {\n        this.allRowsSelected = false;\n      }\n    });\n    this.rows.slice();\n    // this.updateTable();\n    this.rowSelected.emit(selectedRows);\n  }\n\n  public singleRowSelection(row: OepaTableRow): void {\n    const selectedRows: Array<OepaTableRow> = [];\n    row.selected = !row.selected;\n    // add row to selected rows if it is selected\n    if (row.selected) {\n      selectedRows.push(row);\n    }\n    // unselect any other row that may be selected\n    this._data.forEach((dr: OepaTableRow) => {\n      if (row.privateId === dr.privateId) {\n        dr.selected = row.selected;\n      } else {\n        dr.selected = false;\n      }\n    });\n    this.updateTable();\n    this.rowSelected.emit(selectedRows);\n  }\n\n  private prepareRowsForExport(rows: Array<OepaTableRow>): Array<OepaTableRow> {\n    const result: Array<OepaTableRow> = [];\n    // console.log('prepareRowsForExport...');\n    // this.dumpDetailRows();\n    if (rows && rows.length) {\n      rows.forEach((row: OepaTableRow) => {\n        // console.log('showDetail = ' + row.showDetail + ' ' + JSON.stringify(row.cells));\n        result.push({\n          cells: row.cells,\n          actions: row.actions,\n          showDetail: row.showDetail,\n          subTable: row.detail ? this.convertToTable(row.detail) : undefined,\n          isDivider: row.isDivider,\n          dividerClassName: row.dividerClassName\n        });\n      });\n    }\n    return result;\n  }\n\n  public gatherTableData(rows: OepaTableRow[]): OepaTable {\n    // console.log('gatherTableData...');\n    // this.dumpDetailRows();\n    const oepaTable: OepaTable = {};\n    oepaTable.headerRows = this.headerRows;\n    oepaTable.allDataRows = this.prepareRowsForExport(rows);\n    oepaTable.showAllDetails = this.showAllDetails;\n    oepaTable.className = this._config.className;\n    oepaTable.visibleColumnCount = this.visibleColumnCount;\n    oepaTable.allColumnCount = this.allColumnCount;\n    return oepaTable;\n  }\n\n  private dumpDetailRows() {\n    console.log('dumpDetailRows - Total rows: ' + this._data.length);\n    this._data.forEach((row: OepaTableRow) => {\n      if (row.showDetail) {\n        console.log('SHOW DETAIL: ' + JSON.stringify(row.dataSource));\n      }\n    });\n  }\n\n  public convertToTable(template: OepaTemplateInfo): OepaTable | undefined {\n    let oepaTable: OepaTable | undefined = undefined;\n    if (template.component === TableComponent) {\n      const table: TableComponent = new TableComponent(this.sanitizer, this.tableService, this.tableExportService, this.fileUtilService);\n      if (template.inputs && template.inputs.length > 0) {\n        template.inputs.forEach((input) => {\n          if (input.name === 'config') {\n            table.config = input.value;\n          } else if (input.name === 'complexHeader') {\n            table.complexHeader = input.value;\n          } else if (input.name === 'header') {\n            table.header = input.value;\n          } else if (input.name === 'data') {\n            table.data = input.value;\n          }\n        });\n        oepaTable = table.gatherTableData(table.data);\n      }\n    }\n    return oepaTable;\n  }\n\n  public toggleExportVisibleOnly() {\n    this.exportVisibleOnly = !this.exportVisibleOnly;\n  }\n\n  public exportToExcel() {\n    const exportTable: OepaTable = this.gatherTableData(this.exportVisibleOnly ? this.rows : this._data);\n\n    this.tableExportService.downloadExcel(exportTable, this._config).subscribe(\n      data => {\n        this.fileUtilService.downloadFile(data, 'application/vnd.ms-excel');\n      },\n      error => console.log(error)\n    );\n  }\n\n  public exportToHTML() {\n    const exportTable: OepaTable = this.gatherTableData(this.exportVisibleOnly ? this.rows : this._data);\n\n    // for now, always embed sub-tables  in HTML view.\n    this.tableExportService.downloadHTML(exportTable, this._config).subscribe(\n      data => {\n        this.fileUtilService.downloadFile(data, 'text/html');\n      },\n      error => console.log(error)\n    );\n  }\n\n  public onCustomBtnClick() {\n    this.customBtnClicked.emit();\n  }\n\n}\n","<!-- Unhide select input - only visible if one or more columns are hidden -->\n\n<form *ngIf=\"hiddenColumns.length > 0\">\n  <div class=\"row mb-2\">\n    <label class=\"col-sm-2 col-form-label\">Show Hidden Columns:</label>\n    <div class=\"col-sm-4\">\n      <select class=\"form-select\" (change)=\"unhideColumn($any($event).target.value)\" [id]=\"tableId+'_UnhideColumnSelect'\">\n        <option value=\"\">Choose a column</option>\n        <option *ngFor=\"let col of hiddenColumns\" [value]=\"col.id\">{{col.title}}</option>\n      </select>\n    </div>\n  </div>\n</form>\n<!-- This is the table -->\n<div ngClass=\"{{config.divClassName || ''}}\" >\n<table *ngIf=\"!config.hideTable\" class=\"table dataTable\" ngClass=\"{{config.className || ''}}\" role=\"grid\" style=\"width: 100%;\">\n\n<!-- This is the table header -->\n<thead>\n  <!-- There may be multiple header rows -->\n  <tr *ngFor=\"let hdr of headerRows; let hr=index;\" role=\"row\">\n    <!-- Details indicator column (if data has details) -->\n    <th *ngIf=\"dataHasDetails && hr === 0\" [rowSpan]=\"headerRows.length\" class=\"detail-indicator-col\">\n      <span>\n        <i (click)=\"toggleAllDetails()\" [id]=\"tableId+'_ShowAllDetailsLink'\" class=\"bi\" [ngClass]=\"{'bi-chevron-down': showAllDetails, 'bi-chevron-right': !showAllDetails}\"\n          [tooltip]=\"(showAllDetails ? 'Hide' : 'Show') + ' details for all rows'\" placement=\"right\">\n        </i>\n      </span>\n    </th>\n    <ng-template ngFor let-column [ngForOf]=\"hdr.columns\" let-c=\"index\">\n      <!-- Header cell -->\n      <th *ngIf=\"!column.hidden\" ngClass=\"{{column.className || ''}}\" [colSpan]=\"column.colspan || 1\" [rowSpan]=\"column.rowspan || 1\">\n        <!-- Select all Rows Checkbox -->\n        <div class=\"text-center\">\n          <input *ngIf=\"column.selectColumn\" type=\"checkbox\" [checked]=\"allRowsSelected\" (change)=\"toggleAllRowsSelection()\">\n\n          <!-- Header cell text with sort capability (if specified) -->\n          <span [oepaTableSorting]=\"true\" [column]=\"column\" [tableId]=\"tableId\" (sortChanged)=\"onSortChanged($event)\" [id]=\"tableId+'_SortColumnLink_'+column.id\">\n            <span *ngIf=\"column.sort\"><i class=\"pull-left bi\" [ngClass]=\"{'bi-chevron-down': column.sort === 'desc', 'bi-chevron-up': column.sort === 'asc'}\"></i>\n            <sup *ngIf=\"column?.sortIndex || 0 > 1\">{{column.sortIndex}}</sup></span>\n            {{column.title}}\n          </span>\n          <!-- button to allow column to be hidden (if specified) -->\n          <button *ngIf=\"column.hidden === false\" type=\"button\" class=\"btn-close float-end\" aria-label=\"Hide\" (click)=\"hideColumn(column)\"\n            [id]=\"tableId+'_HideColumnLink'+'_'+column.id\">\n          </button>\n\n        </div>\n        <!-- column filter (if specified) -->\n        <div *ngIf=\"((rows && rows.length > 0) || !noFilters()) && column.filterable\" >\n          <input [oepaTableFiltering]=\"{ filterString: '', columnId: column.id }\" [tableId]=\"tableId\" class=\"form-control input-sm\" (tableChanged)=\"onFilterChanged($event)\"\n            [id]=\"tableId+'_FilterColumn_'+column.id\" />\n        </div>\n      </th>\n    </ng-template>\n  </tr>\n</thead>\n\n<!-- This is the table body -->\n<tbody>\n  <ng-template ngFor let-row [ngForOf]=\"rows\" let-r=\"index\">\n    <!-- Data Row -->\n    <tr>\n      <td *ngIf=\"dataHasDetails\">\n        <!-- Detail icon (if specified) -->\n        <span *ngIf=\"row.showDetail === true || row.showDetail === false\">\n          <i *ngIf=\"row.detailIconClassName\" [ngClass]=\"row.detailIconClassName\"></i>\n          <i (click)=\"toggleRowDetail(row)\" [id]=\"tableId+'_ShowDetailLink_'+r\" class=\"bi\" [ngClass]=\"{'bi-chevron-down': row.showDetail, 'bi-chevron-right': !row.showDetail}\"\n            [tooltip]=\"(row.showDetail ? 'Hide' : 'Show') + ' details for this row'\" placement=\"right\">\n          </i>\n        </span>\n      </td>\n      <!-- If row is a divider, it spans the whole table -->\n      <!-- <td *ngIf=\"row.isDivider\" [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\" [ngClass]=\"row.dividerClassName || 'oepa-table-gray'\">&nbsp;</td> -->\n      <!-- Data Rows -->\n      <ng-template *ngIf=\"!row.isDivider\" ngFor let-col [ngForOf]=\"dataColumns\" let-i=\"index\">\n        <td *ngIf=\"!col.hidden && (row|cellColspan:col) > 0\" ngClass=\"{{row|cellClassname:col || ''}}\" [colSpan]=\"row|cellColspan:col\">\n          <!-- Data Cell -->\n          <div *ngIf=\"!col.actionColumn && !col.selectColumn && !col.singleSelectColumn\">\n            <!-- Template for popover 1 -->\n            <ng-template #popoverTemplate>\n              <div *ngIf=\"row.popover\">\n                <cml-template [templateInfo]=\"row.popover.content\"></cml-template>\n              </div>\n            </ng-template>\n            <!-- Popover 1 icon (if specified) -->\n            <span *ngIf=\"row.popover && i === (row.popoverColumnIndex || 0) && row.popover\" tabindex=\"0\" [popoverTitle]=\"row.popover.title\" [popover]=\"popoverTemplate\"\n              [containerClass]=\"row.popover.containerClass\" placement=\"right\" [triggers]=\"row.popover.trigger || 'mouseenter:mouseleave'\">\n              <i [ngClass]=\"row.popover.className\" [id]=\"tableId+'_PopoverLink_'+r\"></i>\n            </span>\n\n            <!-- Template for popover 2 -->\n            <ng-template #popover2Template>\n              <div *ngIf=\"row.popover2\">\n                <cml-template [templateInfo]=\"row.popover2.content\"></cml-template>\n              </div>\n            </ng-template>\n            <!-- Popover 2 icon (if specified) -->\n            <span *ngIf=\"i === (row.popover2ColumnIndex || 0) && row.popover2\" tabindex=\"0\" [popoverTitle]=\"row.popover2.title\" [popover]=\"popover2Template\"\n              [containerClass]=\"row.popover2.containerClass\" placement=\"right\" [triggers]=\"row.popover2.trigger || 'mouseenter:mouseleave'\">\n              <i [ngClass]=\"row.popover2.className\" [id]=\"tableId+'_Popover2Link_'+r\"></i>\n            </span>\n\n            <!-- Template for popover 3 -->\n            <ng-template #popover3Template>\n              <div *ngIf=\"row.popover3\">\n                <cml-template [templateInfo]=\"row.popover3.content\"></cml-template>\n              </div>\n            </ng-template>\n            <!-- Popover 3 icon (if specified) -->\n            <span *ngIf=\"i === (row.popover3ColumnIndex || 0) && row.popover3\" tabindex=\"0\" [popoverTitle]=\"row.popover3.title\" [popover]=\"popover3Template\"\n              [containerClass]=\"row.popover3.containerClass\" placement=\"right\" [triggers]=\"row.popover3.trigger || 'mouseenter:mouseleave'\">\n              <i [ngClass]=\"row.popover3.className\" [id]=\"tableId+'_Popover3Link_'+r\"></i>\n            </span>\n\n            \n            <!-- <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n            <span *ngIf=\"!(row|cellInnerHTML:col)\">{{row|cellValue:col}}</span> -->\n\n            <!-- If col is hyperlink, display data as a hyperlink -->\n            <a *ngIf=\"col.hyperlink\"  href=\"javascript:void(0);\" (click)=\"cellClick(row, col.id)\" [id]=\"tableId+'_CellClick_'+r+'_'+i\">\n              <span *ngIf=\"!(row|cellInnerHTML:col)\">\n                <i [ngClass]=\"row|cellIconClassname:col\"></i>\n                <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\"/></span>\n                {{row|cellValue:col}}\n              </span>\n              <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n            </a>\n            <!-- If col is NOT hyperlink, just display data -->\n            <span *ngIf=\"!col.hyperlink\">\n              <span *ngIf=\"!(row|cellInnerHTML:col)\">\n                <i ngClass=\"{{row|cellIconClassname:col || ''}}\"></i>\n                <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\"/></span>\n                {{row|cellValue:col}}\n              </span>\n              <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n            </span>\n          </div>\n          <!-- Select Cell -->\n          <div *ngIf=\"col.selectColumn\" class=\"text-center\">\n            <input [id]=\"tableId+'_'+r\" type=\"checkbox\" [disabled]=\"!row.selectable\" [checked]=\"row.selected\" (change)=\"toggleRowSelection(row)\">\n          </div>\n          <!-- Single Select Cell -->\n          <div *ngIf=\"col.singleSelectColumn\" class=\"text-center\">\n            <input [id]=\"tableId+'_singleSelect_'+r\" type=\"radio\" [disabled]=\"!row.selectable\" [checked]=\"row.selected\" (change)=\"singleRowSelection(row)\">\n          </div>\n          <!-- Action Button Cell -->\n          <div *ngIf=\"col.actionColumn && row.actions\">\n            <oepa-action-btn [actions]=\"row.actions\" [data]=\"row.dataSource\"  (actionClicked)=\"onActionClick($event)\" [btnId]=\"tableId+'_'+r\"></oepa-action-btn>\n          </div>\n        </td>\n      </ng-template>\n    </tr>\n\n    <!-- Detail Row -->\n    <tr *ngIf=\"row.showDetail\" class=\"table-info\">\n      <td [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\">\n        <cml-template [templateInfo]=\"row.detail\"></cml-template>\n      </td>\n    </tr>\n  </ng-template>\n  <tr *ngIf=\"totalRow\">\n    <td *ngIf=\"dataHasDetails\">\n    </td>\n      <ng-template ngFor let-totalCol [ngForOf]=\"dataColumns\">\n          <td *ngIf=\"!totalCol.hidden\" ngClass=\"{{totalRow|cellClassname:totalCol || ''}}\">\n            <div>\n               <span><i ngClass=\"{{totalRow|cellIconClassname:totalCol || ''}}\"></i>{{totalRow|cellValue:totalCol}}</span>\n            </div>\n          </td>\n      </ng-template>\n  </tr>\n</tbody>\n</table>\n</div>\n<!-- Table footer -->\n<form *ngIf=\"!config.hideFooter || (data && pageInfo.itemsPerPage < data.length)\" class=\"form-horizontal\">\n<div class=\"form-group row text-right\">\n  <!-- Table-wide filter -->\n  <div class=\"col-sm-4\">\n    <div class=\"row\">\n      <div class=\"col-sm-6\">\n        <input *ngIf=\"!config.hideGlobalFilter\" placeholder=\"Filter all columns\" [oepaTableFiltering]=\"{ filterString: '' }\" [tableId]=\"tableId\" class=\"form-control input-sm\" (tableChanged)=\"onFilterChanged($event)\"\n          [id]=\"tableId+'_FilterAllColumnsInput'\" />\n      </div>\n      <div class=\"col-sm-6\">\n        <span *ngIf=\"config.showRowCountInFooter && _data && _data.length > 0\">\n          <span class=\"badge badge-secondary\" style=\"color: #999\">{{_data.length}}</span>&nbsp;total rows\n        </span>\n      </div>\n    </div>\n  </div>\n  <!-- Export Buttons -->\n  <div class=\"col-sm-4 d-flex justify-content-center\">\n    <div class=\"row\">\n      <div class=\"col-sm-12 text-center\">\n        <button type=\"button\" *ngIf=\"config.exportToExcel\" class=\"btn btn-primary mr-1\" (click)=\"exportToExcel()\" [id]=\"tableId+'_ExportToExcelBtn'\">Export to Excel</button>\n        <button type=\"button\" *ngIf=\"config.exportToHTML\" class=\"btn btn-primary mr-1\" (click)=\"exportToHTML()\" [id]=\"tableId+'_ExportToHTMLBtn'\">Export to HTML</button>\n        <button *ngIf=\"customBtnVisible\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"onCustomBtnClick()\" [id]=\"tableId+'_CustomBtn'\" [disabled]=\"!customBtnEnabled\">{{customBtnLabel}}</button>\n      </div>\n      <div *ngIf=\"config.exportToExcel || config.exportToHTML\" class=\"col-sm-12 text-center\">\n        <span>Export only visible data:&nbsp;\n          <input type=\"checkbox\" [checked]=\"exportVisibleOnly\" (click)=\"toggleExportVisibleOnly()\" id=\"exportVisibleOnlyCheckbox\"/>\n        </span>\n      </div>\n    </div>\n  </div>\n  <!-- Pagination -->\n  <div *ngIf=\"!config.disablePagination\" class=\"col-sm-4 d-flex justify-content-end\">\n    <pagination *ngIf=\"paginationOn\" class=\"pagination-sm\" [totalItems]=\"pageInfo.length\" [itemsPerPage]=\"pageInfo.itemsPerPage\" [maxSize]=\"pageInfo.maxSize\"\n      [(ngModel)]=\"currentPage\" name=\"currentTablePage\"\n      [boundaryLinks]=\"true\" [rotate]=\"false\" (pageChanged)=\"onPageChanged($event)\" (numPages)=\"pageInfo.numPages = $event\">\n    </pagination>\n    &nbsp;\n    <button (click)=\"togglePagingation()\" type=\"button\" class=\"btn btn-default btn-sm mr-1\">{{ paginationOn ? 'Show All Rows' : 'Restore Pagination'}}</button>\n  </div>\n</div>\n</form>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { ToastrService } from 'ngx-toastr';\nimport { Observable } from 'rxjs';\nimport { OepaTableConfig } from '../table/oepa-table-config';\nimport { OepaTableHeader } from '../table/oepa-table-header';\nimport { OepaTableRow } from '../table/oepa-table-row';\nimport { OepaTableCellClickEvent } from '../table/oepa-table-cell-click-event';\n\n@Component({\n  selector: 'oepa-confirmation-modal',\n  templateUrl: './confirmation-modal.component.html',\n  styleUrls: ['./confirmation-modal.component.css']\n})\nexport class ConfirmationModalComponent implements OnInit {\n  public tableConfig: OepaTableConfig = {\n    rowsPerPage: 5,\n    hideGlobalFilter: true,\n    disablePagination: true,\n    classNames: ['table-striped', 'table-bordered', 'table-sm']\n};\n\n  @Input() tableHeader: OepaTableHeader | undefined;\n  \n  /** To get table data in confirmation component */\n  @Input() tableData: OepaTableRow[] | undefined;\n\n  @Output() public onCellClick: EventEmitter<OepaTableCellClickEvent> = new EventEmitter();\n  \n\n  /** The modal header text */\n  @Input() headerText !:string;\n  /** The modal body text */\n  @Input() bodyText = '';\n  /** The confirm button label (defaults to 'Ok') */\n  @Input() confirmBtnLabel = 'Ok';\n  /** The cancel button label (defaults to 'Cancel') */\n  @Input() cancelBtnLabel = 'Cancel';\n\n  @Input() skipBtnLabel = '';\n  /** className to apply to body text (e.g. \"alert aler-warning\") */\n  @Input() bodyClassName !: string;\n\n  /** Support callback function in addition to confirmClicked event */\n  @Input() confirmationCallback!: () => Observable<any>;\n  @Input()  confirmationCallbackComponent: any;\n  public confirmationInProgress = false;\n\n  /** Event emitted when confirm is clicked */\n  @Output() confirmClicked: EventEmitter<void> = new EventEmitter<void>();\n  /** Event emitted when cancel is clicked */\n  @Output() cancelClicked: EventEmitter<void> = new EventEmitter<void>();\n  /** Event emitted when skip is clicked */\n  @Output() skipClicked: EventEmitter<void> = new EventEmitter<void>();\n  constructor(public bsModalRef: BsModalRef, private toastr: ToastrService) { }\n\n  ngOnInit() {\n  }\n\n  skip(){\n    this.skipClicked.emit();\n    this.bsModalRef.hide();\n  }\n\n  confirm() {\n    if (this.confirmationCallbackComponent && this.confirmationCallback && this.confirmationCallback instanceof Function) {\n      this.invokeConfirmationCallback();\n    }\n    this.confirmClicked.emit();\n    this.bsModalRef.hide();\n  }\n\n  cancel() {\n    this.cancelClicked.emit();\n    this.bsModalRef.hide();\n  }\n\n  public onCellClicked(event: OepaTableCellClickEvent) {\n    this.onCellClick.emit(event);\n    this.bsModalRef.hide();\n  }\n\n  public onCellSelect(event: any) {\n    //this.selectedAccount = event[0].dataSource;\n  }\n\n  private invokeConfirmationCallback() {\n    if (this.confirmationCallbackComponent && this.confirmationCallback && this.confirmationCallback instanceof Function) {\n      this.confirmationInProgress = true;\n      this.confirmationCallback.call(this.confirmationCallbackComponent).subscribe((result) => {\n        this.confirmationInProgress = false;\n        this.bsModalRef.hide();\n      }, (err) => {\n        this.confirmationInProgress = false;\n        console.error('Error processing submission: ' + JSON.stringify(err));\n        this.toastr.error('Operation failed: ' + err.message || err);\n      });\n    } else {\n      this.confirmationInProgress = false;\n    }\n  }\n\n}\n","<div *ngIf=\"headerText\" class=\"modal-header\">\n  <h4 class=\"modal-title pull-left\">{{headerText}}</h4>\n  <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"cancel()\">\n    </button>\n</div>\n<div class=\"modal-body\" [ngClass]=\"bodyClassName\">\n  <div *ngIf=\"tableData && tableHeader\">\n    <oepa-table id = \"permitDetail\" tableId=\"permitDetail\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onCellSelect($event)\" (cellClicked)=\"onCellClicked($event)\">\n    </oepa-table>\n  </div>\n  {{bodyText}}\n</div>\n<div class=\"modal-footer\">\n  <button *ngIf=\"confirmBtnLabel\" type=\"button\" class=\"btn btn-primary mr-1\" id=\"btnConfirm\" (click)=\"confirm()\">{{confirmBtnLabel}}</button>\n  <button *ngIf=\"cancelBtnLabel\" type=\"button\" class=\"btn btn-primary mr-1\" id=\"btnCancel\" (click)=\"cancel()\">{{cancelBtnLabel}}</button>\n  <button *ngIf=\"skipBtnLabel\" type=\"button\" class=\"btn btn-primary mr-1\" id=\"btnSkip\" (click)=\"skip()\">{{skipBtnLabel}}</button>\n</div>\n","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { OepaTableRow } from '../table/oepa-table-row';\nimport { OepaTableHeader } from '../table/oepa-table-header';\nimport { OepaTableConfig } from '../table/oepa-table-config';\nimport { Observable } from 'rxjs';\nimport { HttpHeaders, HttpClient } from '@angular/common/http';\nimport { Account } from 'oepa-ebiz-lib';\n\n@Component({\n  selector: 'oepa-account-search-modal',\n  templateUrl: './account-search-modal.component.html',\n  styleUrls: ['./account-search-modal.component.css']\n})\nexport class AccountSearchModalComponent implements OnInit {\n  public modalFormGroup!: FormGroup;\n  public errorMessage!: string | undefined;\n  public inProgressMsg!: string | undefined;\n  public filter!: Account;\n  public selectedAccount!: Account;\n  public openSearchCriteria = true;\n\n  public tableData: Array<OepaTableRow> = [];\n  public tableHeader: OepaTableHeader | undefined = undefined;\n  public tableConfig: OepaTableConfig = {\n    rowsPerPage: 5,\n    classNames: ['table-striped', 'table-bordered', 'table-sm']\n};\n\n@Input('searchURL') searchURL: string = '/ebiz/api/v1/accounts/revenuesSearch';\n\n@Output() onAccountSelected: EventEmitter<Account> = new EventEmitter<Account>();\n\n  constructor(private fb: FormBuilder, public bsModalRef: BsModalRef, private http: HttpClient) { \n  }\n\n  ngOnInit() {\n    this.createForm();\n  }\n  \n  private createForm() {\n    this.modalFormGroup = this.fb.group({\n      userID: '',\n      firstName: '',\n      lastName: ''\n    });\n  }\n\n  private getFilterFromForm(): Account {\n    let filter: Account = {\n      userID: this.modalFormGroup.get('userID')?.value,\n      firstName: this.modalFormGroup.get('firstName')?.value,\n      lastName: this.modalFormGroup.get('lastName')?.value \n    };\n    return filter;\n  }\n\n  private filterIsEmpty(filter: Account): boolean {\n    let empty = true;\n    if (filter.userID && filter.userID.length > 0) {\n      empty = false;\n    }\n    if (filter.firstName && filter.firstName.length > 0) {\n      empty = false;\n    }\n    if (filter.lastName && filter.lastName.length > 0) {\n      empty = false;\n    }\n    return empty;\n  }\n\n  public submitSearch() {\n    console.log(\"SEAARCH\")\n    this.errorMessage = undefined;\n    let filter = this.getFilterFromForm();\n    if (this.filterIsEmpty(filter)) {\n      this.errorMessage = 'Please specify search criteria';\n      return;\n    }\n    this.inProgressMsg = 'Searching...';\n    this.tableData = [];\n    this.buildTableHeader();\n    this.searchAccountsFromDB(filter).subscribe({\n      next: accounts => {\n      this.inProgressMsg = undefined;\n      if (accounts && accounts.length > 0) {\n        this.openSearchCriteria = false;\n        accounts.forEach(account => {\n          let row = this.convertAccountToTableRow(account);\n          this.tableData.push(row);\n          this.tableData = this.tableData.slice();\n        });\n      } else {\n        this.openSearchCriteria = true;\n        this.errorMessage = 'No ebiz accounts found matching search criteria.';\n      }\n    }, error:(error) => {\n      this.inProgressMsg = undefined;\n      this.errorMessage = 'Search Failed: ' + error;\n    }});\n  }\n\n  private buildTableHeader(){\n      this.tableHeader = {\n        columns: [\n            { title: '', id: 'select', sort: 'none', singleSelectColumn: true, className: 'select-col' },\n            { title: 'User ID', id: 'userID', sort: 'none', filterable: true },\n            { title: 'First Name', id: 'firstName', sort: 'none', filterable: true },\n            { title: 'Last Name', id: 'lastName', sort: 'none', filterable: true },\n            { title: 'Company', id: 'company', sort: 'none', filterable: true }  \n        ]\n    };\n  }\n\n  private convertAccountToTableRow(account: Account): OepaTableRow {\n      let cells:Array<any>= [\n        { id: 'userID', value: account.userID },\n        { id: 'firstName', value: account.firstName },\n        { id: 'lastName', value: account.lastName },\n        { id: 'company', value: account.company }\n      ];\n\n    return {\n      cells: cells,\n      dataSource: account,\n      selectable: true\n    }\n  }\n\n  public resetSearch() {\n    this.openSearchCriteria = true;\n    this.modalFormGroup.reset();\n    this.tableData = [];\n  }\n\n  public onRowSelect(event: any) {\n    this.selectedAccount = event[0].dataSource;\n  }\n\n  public save() {\n    this.onAccountSelected.emit(this.selectedAccount);\n    this.bsModalRef.hide();\n  }\n\n  public searchAccountsFromDB(filter: Account): Observable<Account[]> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.searchURL;\n    console.log('URL: ' + url);\n    return this.http.post<Account[]>(url, filter, { headers: headers, responseType: 'json' });\n  }\n}\n","<div class=\"modal-header\">\n    <h4 class=\"modal-title pull-left\">Advanced Ebiz Account Search</h4>\n    <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n    </button>\n</div>\n<div class=\"modal-body\">\n        <accordion>\n            <accordion-group panelClass=\"panel-info\" #searchGroup [isOpen]=\"openSearchCriteria\">\n                <div accordion-heading>\n                    <div class=\"row\">\n                        <div class=\"col-sm-6\">\n                            <i class=\"float-xs-right bi\" id=\"accountSearchCriteria\" name=\"accountSearchCriteria\" \n                            [ngClass]=\"{'bi-chevron-down': searchGroup?.isOpen, 'bi-chevron-right': !searchGroup?.isOpen}\"></i>\n                                <b>Ebiz Account Search Criteria</b>\n                        </div>\n                    </div>\n                </div>\n                <form [formGroup]=\"modalFormGroup\">\n                <div class=\"row\">\n                    <div class=\"col-md-12\">\n                        <div class=\"form-group\">\n                            <label>Ebiz User ID</label>\n                            <input type=\"search\" class=\"form-control\" id=\"userUIDInput\" formControlName=\"userID\">\n                        </div>\n                    </div>\n                    <div class=\"col-md-12\">\n                        <div class=\"form-group\">\n                            <label>First Name</label>\n                            <input type=\"search\" class=\"form-control\" id=\"firstNameInput\" formControlName=\"firstName\">\n                        </div>\n                    </div>\n                    <div class=\"col-md-12\">\n                        <div class=\"form-group\">\n                            <label>Last Name</label>\n                            <input type=\"search\" class=\"form-control\" id=\"lastNameInput\" formControlName=\"lastName\">\n                        </div>\n                    </div>\n                </div>\n                \n                <div class=\"row\">\n                    <div class=\"col-sm-12 text-center\">\n                        <span *ngIf=\"inProgressMsg\" class=\"spinner-border text-primary\" role=\"status\"></span>\n                        <button *ngIf=\"!inProgressMsg\" type=\"submit\" class=\"btn btn-primary mr-2\" id=\"submitSearchBtn\" (click)=\"submitSearch()\">Search</button>\n                        <button id=\"resetSearchBtn\" type=\"button\" class=\"btn btn-primary\" (click)=\"resetSearch()\">Reset</button>\n                    </div>\n                </div>\n            </form>\n            </accordion-group>\n        </accordion>\n    <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\">\n        <div class=\"card-header\">\n            <b>Ebiz Account List&nbsp;</b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n        </div>\n        <div class=\"card-body\" *ngIf=\"tableHeader\">\n            <oepa-table tableId=\"accountSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\">\n            </oepa-table>\n        </div>\n    </div>\n</div>\n<div class=\"modal-footer d-block\">\n    <div *ngIf=\"errorMessage\">\n        <div class=\"alert alert-danger\">\n            {{errorMessage}}\n        </div>\n    </div>\n    <div *ngIf=\"inProgressMsg\">\n        <div class=\"alert alert-info\">\n            {{inProgressMsg}}\n        </div>\n    </div>\n    <div class=\"row\">\n        <div class=\"col-sm-12 text-center\">\n            <button type=\"button\" class=\"btn btn-primary mr-2\"\n                id=\"SaveAccountBtn\"\n                [disabled]=\"!selectedAccount || inProgressMsg\"\n                (click)=\"save()\">Save</button>\n            <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n                (click)=\"bsModalRef.hide()\">Cancel</button>\n        </div>\n    </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport { TypeaheadMatch } from 'ngx-bootstrap/typeahead';\nimport { FormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { mergeMap, map } from 'rxjs/operators';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { OepaComponentIdService } from 'oepa-common-lib';\nimport { Account } from 'oepa-ebiz-lib';\nimport { AccountSearchModalComponent } from '../account-search-modal/account-search-modal.component';\n\n@Component({\n  selector: 'oepa-account-search-input',\n  templateUrl: './account-search-input.component.html',\n  styleUrls: ['./account-search-input.component.css']\n})\nexport class AccountSearchInputComponent implements OnInit {\n  nameSearch = '';\n  nameSource: Observable<Account[]>;\n  componentId!: string;\n  errorMessage!: string | undefined;\n  searching!: boolean;\n\n  @Input('group') group!: FormGroup;\n  @Input('userID') userID!: string;\n  @Input('field') field!: string;\n  @Input('title') title: string = 'Account';\n  @Input('searchURL') searchURL: string = '/ebiz/api/v1/accounts/revenuesSearch';\n  @Input('errorMessageAddendum') errorMessageAddendum = '';\n  @Input('rowLayout') rowLayout = false;\n\n  @Output('accountSelected') accountSelected: EventEmitter<Account> = new EventEmitter<Account>();\n\n  constructor(private idService: OepaComponentIdService,\n    private modalService: BsModalService,\n    private http: HttpClient) {\n      this.nameSource = new Observable((observer) => {\n        observer.next(this.group.get(this.field)?.value);\n      }).pipe(mergeMap((token: any) => this.searchAccounts(token)));\n     }\n\n  ngOnInit() {\n    this.componentId = this.idService.getComponentId(this.group);\n    if (this.userID) {\n      const filter: Account = {\n        userID: this.userID\n      }\n      this.searching = true;\n      \n      this.searchAccountsFromDB(filter).subscribe({\n        next: accountList => {\n        if (accountList && accountList.length == 1) {\n          this.loadAccountInForm(accountList[0]);\n        } else if (accountList.length > 1) {\n          accountList.forEach(account => {\n            if (account.userID === this.userID) {\n              this.loadAccountInForm(account);\n            }\n          });\n        } else {\n          this.errorMessage = 'An initialization error occurred: No accounts wih id: ' + this.userID;\n        }\n        this.searching = false;\n      }, error: err => {\n        this.searching = false;\n        this.errorMessage = 'An initialization error occurred: ' + err;\n      }});\n    }\n    this.group.get(this.field)?.valueChanges.subscribe(value => {\n      if (!value || value === '') {\n        this.accountSelected.emit(undefined);\n      }\n    });\n  }\n\n  public onAccountSelect(e: TypeaheadMatch) {\n    if (e.item) {\n      this.loadAccountInForm(e.item);\n      this.accountSelected.emit(e.item);\n    }\n  }\n\n  private loadAccountInForm(account: Account) {\n    let data:any = {};\n    data[this.field] = account ? (account.userID + ' - ' + account.firstName + ' ' + account.lastName || ''\n      + (account.company ? ' (' + account.company + ')' : '')) : '';\n    if (account) {\n      this.group.patchValue(data);\n    }\n  }\n\n  private searchAccounts(token: any): Observable<Account[]> {\n    this.errorMessage = undefined;\n    this.searching = true;\n    const filter: Account = {\n      userID: token\n    }\n    return this.searchAccountsFromDB(filter).pipe(\n      map((accounts) => {\n        this.searching = false;\n        return accounts;\n      })\n    );\n  }\n\n  public searchAccountsFromDB(filter: Account): Observable<Account[]> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.searchURL;\n    console.log('URL: ' + url);\n    return this.http.post<Account[]>(url, filter, { headers: headers, responseType: 'json' });\n  }\n\n  public advancedSearch() {\n    console.log('URL: ' + this.searchURL);\n    const initialState = {\n      searchURL: this.searchURL\n    };\n    let modal = this.modalService.show(AccountSearchModalComponent, {initialState, class: 'modal-lg',ignoreBackdropClick: true});\n    (<AccountSearchModalComponent>modal.content).onAccountSelected.subscribe(account => {\n      this.loadAccountInForm(account);\n      this.accountSelected.emit(account);\n    });\n  }\n\n}\n","<div [formGroup]=\"group\" class=\"form-group\" [ngClass]=\"{'row text-right': rowLayout}\">\n    <ng-template #accountTemplate let-model=\"item\" let-index=\"index\">\n        <h5>{{ (model.userID || '') +\n            (' - ' + model.firstName + ' ' + model.lastName + (model.company ? ' (' + model.company + ')' : '')) }}</h5>\n    </ng-template>\n    <label [ngClass]=\"{'col-sm-4 col-form-label': rowLayout}\">\n        {{title}}\n        <span *ngIf=\"searching\" class=\"spinner-border text-primary\" role=\"status\"></span>\n        <a id=\"AdvancedSearch\" href=\"javascript:void(0)\" (click)=\"advancedSearch()\">Advanced Search</a>\n    </label>\n    <div [ngClass]=\"{'col-sm-8': rowLayout}\">\n        <input class=\"form-control\" type=\"search\"\n            [ngClass]=\"{'is-invalid':group.controls[field].status === 'INVALID', 'col-sm-8': rowLayout}\"\n            [formControlName]=\"field\" [typeahead]=\"nameSource\" [typeaheadScrollable]=\"true\"\n            (typeaheadOnSelect)=\"onAccountSelect($event)\" [id]=\"componentId + '_AccountSearch'\"\n            [typeaheadItemTemplate]=\"accountTemplate\" [typeaheadMinLength]=\"3\" placeholder=\"Search Account\">\n        <small class=\"invalid-feedback\" *ngIf=\"group.controls[field]?.hasError('required')\">{{title}} is required\n            {{errorMessageAddendum}}</small>\n    </div>\n</div>\n<div *ngIf=\"errorMessage\" class=\"alert alert-danger\">\n    {{errorMessage}}\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { OepaActionEvent } from '../action-btn/oepa-action-event';\nimport { OepaAction } from '../action-btn/oepa-action';\nimport { OepaPAction } from './oepa-p-action';\nimport { on } from 'esri/core/reactiveUtils';\n\n\n/**\n * A dropdown button with a list of actions.\n */\n@Component({\n  selector: 'oepa-p-action-btn',\n  templateUrl: './p-action-btn.component.html',\n  styleUrls: ['./p-action-btn.component.css']\n})\nexport class PActionBtnComponent implements OnInit {\n  busy = false;\n\n  /** Button label */\n  @Input() label = 'Actions';\n  /** Unique id for this button */\n  @Input() btnId = '';\n  /** Data to be passed to emitter */\n  @Input() data: any;\n  /** List of actions for this button */\n  @Input() actions: Array<OepaAction> = [];\n  /** Make button \"normal\" size (default is btn-sm) */\n  @Input() normalSize = false;\n  /** dropup? */\n  @Input() dropup = false;\n\n  /** Event emitted when an action is selected */\n  @Output() actionClicked: EventEmitter<OepaActionEvent> = new EventEmitter();\n\n  public pActions: Array<OepaPAction> = [];\n\n  constructor(private sanitizer: DomSanitizer) { }\n\n  ngOnInit(): void {\n    this.pActions = this.actions.map((action) => {\n      return { label: action.title, icon: action.className, command: this.onActionClicked.bind(this, action) };\n    });\n  }\n\n  public sanitize(html: string): SafeHtml {\n      return this.sanitizer.bypassSecurityTrustHtml(html);\n  }\n\n  public onActionClicked(action: OepaAction): void {\n      const data = this.data;\n      this.actionClicked.emit({ \n        action: action, \n        data: data,\n        buttonObj: this\n      });\n  }\n\n  public setBusy() {\n    this.busy = true;\n  }\n\n  public clearBusy() {\n    this.busy = false;\n  }\n\n  public getID(): string {\n    return this.btnId + '_ActionBtn';\n  }\n\n}\n","<div *ngIf=\"actions && actions.length > 0\">\n  <p-menu #menu [model]=\"pActions\" [popup]=\"true\" [baseZIndex]=\"10000\" [appendTo]=\"'body'\" [autoZIndex]=\"true\" [id]=\"btnId+'_ActionBtn'\"/>\n  <button (click)=\"menu.toggle($event)\" type=\"button\" class=\"btn btn-primary dropdown-toggle\" [ngClass]=\"{ 'btn-sm' : !normalSize }\" [id]=\"btnId+'_ActionBtn'\">\n    <span *ngIf=\"busy\" class=\"spinner-border text-primary\" role=\"status\"></span>\n    {{label}} \n    <span class=\"caret\"></span>\n  </button>\n</div>\n<!-- display disabled button if no actions are available -->\n<div *ngIf=\"!actions || actions.length === 0\">\n  <button type=\"button\" class=\"btn btn-primary\" [ngClass]=\"{ 'btn-sm' : !normalSize }\" [id]=\"btnId+'_ActionBtn'\" disabled>\n    N/A \n  </button>\n</div>","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({\n  name: 'cellNotSelectable'\n})\nexport class OepaTableCellNotSelectablePipe implements PipeTransform {\n  transform(row: OepaTableRow, column: OepaTableColumn): boolean {\n    let result = false;\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === column.id) {\n        result = cell.notSelectable || false;\n      }\n    });\n    return result;\n  }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({\n  name: 'cellInputComponent'\n})\nexport class OepaTableCellInputComponentPipe implements PipeTransform {\n  transform(row: OepaTableRow, column: OepaTableColumn): any {\n    let result = undefined;\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === column.id) {\n        result = cell.inputComponent;\n      }\n    });\n    return result;\n  }\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { OepaTableColumn } from '../../oepa-table-column';\nimport { OepaTableRow } from '../../oepa-table-row';\nimport { OepaActionEvent } from '../../../action-btn/oepa-action-event';\nimport { TableDataCellClickEvent } from '../../table-data-cell/table-data-cell-click-event';\n\n@Component({\n  selector: 'oepa-p-table-data-cell',\n  templateUrl: './p-table-data-cell.component.html',\n  styleUrl: './p-table-data-cell.component.css'\n})\nexport class PTableDataCellComponent {\n  @Input() col!: OepaTableColumn;\n  @Input() row!: OepaTableRow;\n  @Input() i: number = 0;\n  @Input() r: number = 0;\n  @Input() tableId: string = '';\n\n  @Output() onCellClick: EventEmitter<TableDataCellClickEvent> = new EventEmitter<TableDataCellClickEvent>();\n  @Output() onToggleRowSelection: EventEmitter<OepaTableRow> = new EventEmitter<OepaTableRow>();\n  @Output() onSingleRowSelection: EventEmitter<OepaTableRow> = new EventEmitter<OepaTableRow>();\n  @Output() onActionClick: EventEmitter<OepaActionEvent> = new EventEmitter<OepaActionEvent>();\n\n  public cellClick(row: OepaTableRow, columnID: string) {\n    this.onCellClick.emit({row: row, columnID: columnID});\n  }\n\n  public toggleRowSelection(row: OepaTableRow) {\n    this.onToggleRowSelection.emit(row);\n  }\n\n  public singleRowSelection(row: OepaTableRow) {\n    this.onSingleRowSelection.emit(row);\n  }\n\n  public actionClick(event: OepaActionEvent) {\n    this.onActionClick.emit(event);\n  }\n}\n","                    <!-- Data Cell -->\n                    <div *ngIf=\"!col.actionColumn && !col.selectColumn && !col.singleSelectColumn && !col.inputColumn\">\n                        <!-- Template for popover 1 -->\n                        <ng-template #popoverTemplate>\n                          <div *ngIf=\"row.popover\">\n                            <cml-template [templateInfo]=\"row.popover.content\"></cml-template>\n                          </div>\n                        </ng-template>\n                        <!-- Popover 1 icon (if specified) -->\n                        <span *ngIf=\"row.popover && i === (row.popoverColumnIndex || 0) && row.popover\" tabindex=\"0\"\n                          [popoverTitle]=\"row.popover.title\" [popover]=\"popoverTemplate\"\n                          [containerClass]=\"row.popover.containerClass\" placement=\"right\"\n                          [triggers]=\"row.popover.trigger || 'mouseenter:mouseleave'\">\n                          <i [ngClass]=\"row.popover.className\" [id]=\"tableId+'_PopoverLink_'+r\"></i>\n                        </span>\n        \n                        <!-- Template for popover 2 -->\n                        <ng-template #popover2Template>\n                          <div *ngIf=\"row.popover2\">\n                            <cml-template [templateInfo]=\"row.popover2.content\"></cml-template>\n                          </div>\n                        </ng-template>\n                        <!-- Popover 2 icon (if specified) -->\n                        <span *ngIf=\"i === (row.popover2ColumnIndex || 0) && row.popover2\" tabindex=\"0\"\n                          [popoverTitle]=\"row.popover2.title\" [popover]=\"popover2Template\"\n                          [containerClass]=\"row.popover2.containerClass\" placement=\"right\"\n                          [triggers]=\"row.popover2.trigger || 'mouseenter:mouseleave'\">\n                          <i [ngClass]=\"row.popover2.className\" [id]=\"tableId+'_Popover2Link_'+r\"></i>\n                        </span>\n        \n                        <!-- Template for popover 3 -->\n                        <ng-template #popover3Template>\n                          <div *ngIf=\"row.popover3\">\n                            <cml-template [templateInfo]=\"row.popover3.content\"></cml-template>\n                          </div>\n                        </ng-template>\n                        <!-- Popover 3 icon (if specified) -->\n                        <span *ngIf=\"i === (row.popover3ColumnIndex || 0) && row.popover3\" tabindex=\"0\"\n                          [popoverTitle]=\"row.popover3.title\" [popover]=\"popover3Template\"\n                          [containerClass]=\"row.popover3.containerClass\" placement=\"right\"\n                          [triggers]=\"row.popover3.trigger || 'mouseenter:mouseleave'\">\n                          <i [ngClass]=\"row.popover3.className\" [id]=\"tableId+'_Popover3Link_'+r\"></i>\n                        </span>\n        \n        \n                        <!-- <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n                      <span *ngIf=\"!(row|cellInnerHTML:col)\">{{row|cellValue:col}}</span> -->\n        \n                        <!-- If col is hyperlink, display data as a hyperlink -->\n                        <a *ngIf=\"col.hyperlink && !(row|cellNotSelectable:col)\"  href=\"javascript:void(0);\"\n                          (click)=\"cellClick(row, col.id)\" [id]=\"tableId+'_CellClick_'+r+'_'+i\">\n                          <span *ngIf=\"!(row|cellInnerHTML:col)\">\n                            <i [ngClass]=\"row|cellIconClassname:col\"></i>\n                            <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" /></span>\n                            {{row|cellValue:col}}\n                          </span>\n                          <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n                        </a>\n                        <!-- If col is NOT hyperlink, just display data -->\n                        <span *ngIf=\"!col.hyperlink || (row|cellNotSelectable:col)\">\n                          <span *ngIf=\"!(row|cellInnerHTML:col)\">\n                            <i ngClass=\"{{row|cellIconClassname:col || ''}}\"></i>\n                            <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" /></span>\n                            {{row|cellValue:col}}\n                          </span>\n                          <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n                        </span>\n                      </div>\n                      <!-- Input Cell -->\n                      <div *ngIf=\"col.inputColumn\">\n                        <cml-template [templateInfo]=\"row|cellInputComponent:col\"></cml-template>\n                      </div>\n                      <!-- Select Cell -->\n                      <div *ngIf=\"col.selectColumn\" class=\"text-center\">\n                        <input [id]=\"tableId+'_'+r\" type=\"checkbox\" [disabled]=\"!row.selectable\" [checked]=\"row.selected\"\n                          (change)=\"toggleRowSelection(row)\">\n                      </div>\n                      <!-- Single Select Cell -->\n                      <div *ngIf=\"col.singleSelectColumn\" class=\"text-center\">\n                        <input [id]=\"tableId+'_singleSelect_'+r\" type=\"radio\" [disabled]=\"!row.selectable\"\n                          [checked]=\"row.selected\" (change)=\"singleRowSelection(row)\">\n                      </div>\n                      <!-- Action Button Cell -->\n                      <div *ngIf=\"col.actionColumn && row.actions\">\n                        <oepa-p-action-btn [actions]=\"row.actions || []\" [data]=\"row.dataSource\" (actionClicked)=\"actionClick($event)\"\n                          [btnId]=\"tableId+'_'+r\"></oepa-p-action-btn>\n                      </div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { OepaTableColumn } from '../oepa-table-column';\nimport { OepaTableFilter } from '../oepa-table-filter';\nimport { Subject } from 'rxjs';\n\n@Component({\n  selector: 'oepa-table-header-cell',\n  templateUrl: './table-header-cell.component.html',\n  styleUrl: './table-header-cell.component.css'\n})\nexport class TableHeaderCellComponent implements OnInit {\n  @Input() column!: OepaTableColumn;\n  @Input() tableId: string = '';\n  @Input() allRowsSelected: boolean = false;\n  @Input() rowCount: number = 0;\n  @Input() noFiltersSubject!: Subject<boolean>;\n  public noFilters: boolean = true;\n\n  @Output() onToggleAllRowsSelection: EventEmitter<void> = new EventEmitter<void>();\n  @Output() onSortChanged: EventEmitter<OepaTableColumn> = new EventEmitter<OepaTableColumn>();\n  @Output() onHideColumn: EventEmitter<OepaTableColumn> = new EventEmitter<OepaTableColumn>();\n  @Output() onFilterChanged: EventEmitter<OepaTableFilter> = new EventEmitter<OepaTableFilter>();\n\n  ngOnInit(): void {\n    if (this.noFiltersSubject) {\n      this.noFiltersSubject.subscribe(noFilters => {\n        this.noFilters = noFilters;\n      });\n    }\n  }\n  public toggleAllRowsSelection() {\n    this.onToggleAllRowsSelection.emit();\n  }\n\n  public sortChanged(column: OepaTableColumn) {\n    this.onSortChanged.emit(column);\n  }\n\n  public hideColumn(column: OepaTableColumn) {\n    this.onHideColumn.emit(column);\n  }\n\n  public filterChanged(filter: OepaTableFilter) {\n    this.onFilterChanged.emit(filter);\n  }\n}\n","<!-- Select all Rows Checkbox -->\n<div class=\"text-center\">\n  <input *ngIf=\"column.selectColumn\" type=\"checkbox\" [checked]=\"allRowsSelected\" (change)=\"toggleAllRowsSelection()\">\n\n  <!-- Header cell text with sort capability (if specified) -->\n  <span [oepaTableSorting]=\"true\" [column]=\"column\" [tableId]=\"tableId\" (sortChanged)=\"sortChanged($event)\"\n    [id]=\"tableId+'_SortColumnLink_'+column.id\">\n    <span *ngIf=\"column.sort\"><i class=\"pull-left bi\"\n        [ngClass]=\"{'bi-chevron-down': column.sort === 'desc', 'bi-chevron-up': column.sort === 'asc'}\"></i>\n      <sup *ngIf=\"column?.sortIndex || 0 > 1\">{{column.sortIndex}}</sup></span>\n    {{column.title}}\n  </span>\n  <!-- button to allow column to be hidden (if specified) -->\n  <button *ngIf=\"column.hidden === false\" type=\"button\" class=\"btn-close float-end\" aria-label=\"Hide\"\n    (click)=\"hideColumn(column)\" [id]=\"tableId+'_HideColumnLink'+'_'+column.id\">\n  </button>\n\n</div>\n<!-- column filter (if specified) -->\n<div *ngIf=\"column.filterable\">\n  <input [oepaTableFiltering]=\"{ filterString: '', columnId: column.id }\" [tableId]=\"tableId\"\n    class=\"form-control input-sm\" (tableChanged)=\"filterChanged($event)\" [id]=\"tableId+'_FilterColumn_'+column.id\" />\n</div>","import { Component, EventEmitter, Input, Output, OnInit, ElementRef, AfterViewChecked, OnDestroy } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { OepaTable } from '../oepa-table';\nimport { OepaTableConfig } from '../oepa-table-config';\nimport { OepaTableHeader } from '../oepa-table-header';\nimport { OepaTableColumn } from '../oepa-table-column';\nimport { OepaTableRow } from '../oepa-table-row';\nimport { OepaTableCell } from '../oepa-table-cell';\nimport { OepaTablePageInfo } from '../oepa-table-page-info';\nimport { OepaTableCellClickEvent } from '../oepa-table-cell-click-event';\n\nimport { OepaActionEvent } from '../../action-btn/oepa-action-event';\n\nimport { TableExportService } from '../table-export.service';\nimport { OepaFileUtilService, OepaTemplateInfo } from 'oepa-common-lib';\nimport { TableService } from '../table.service';\nimport { OepaTableSortCriterion } from '../oepa-table-sort-criterion';\nimport { PageChangedEvent } from 'ngx-bootstrap/pagination';\nimport { OepaPColumn } from '../oepa-p-column';\nimport { TableDataCellClickEvent } from '../table-data-cell/table-data-cell-click-event';\nimport { Subject } from 'rxjs';\nimport { OepaTableFilter } from '../oepa-table-filter';\n\n@Component({\n  selector: 'oepa-p-table',\n  templateUrl: './p-table.component.html',\n  styleUrls: ['./p-table.component.css']\n})\nexport class PTableComponent implements OnInit, AfterViewChecked, OnDestroy {\n  public showFilterRow: Boolean = false;\n  public headerRows: Array<OepaTableHeader> = [];\n  public rows: Array<OepaTableRow> = [];\n  public visibleColumnCount = 0;\n  public allColumnCount = 0;\n  public exportVisibleOnly: boolean | undefined = false;\n  public noFiltersSubject: Subject<boolean> = new Subject<boolean>();\n\n  public dataColumns: Array<OepaTableColumn> = [];\n  public visibleColumns: Array<OepaTableColumn> = [];\n  public hiddenColumns: Array<OepaTableColumn> = [];\n  public columnHeaders: Array<string> = [];\n  public _data: Array<OepaTableRow> = [];\n  private _config: OepaTableConfig = {};\n  private currentFilters: Array<OepaTableFilter> = [{\n    filterString: '',\n    columnId: undefined\n  }];\n\n  public dataHasDetails = false;\n  public showAllDetails = false;\n\n  public allRowsSelected = false;\n\n  public pageInfo: OepaTablePageInfo = {\n    page: 1,\n    itemsPerPage: 10,\n    maxSize: 5,\n    numPages: 1,\n    length: 0\n  };\n  public currentPage = 1;\n  public paginationOn = true;\n\n  @Input() tableId = '';\n  @Input() allowEdit = true;\n  @Input()\n  public set config(conf: OepaTableConfig) {\n    if (!conf.className) {\n      conf.className = 'table-striped table-bordered';\n    }\n    if (conf.classNames) {\n      conf.className = conf.classNames.join(' ');\n    }\n    if (conf.rowsPerPage) {\n      this.pageInfo.itemsPerPage = conf.rowsPerPage;\n    }\n    this.exportVisibleOnly = conf.exportVisibleOnly;\n    this._config = conf;\n  }\n\n  public get config(): OepaTableConfig {\n    return this._config;\n  }\n\n  @Input()\n  public set complexHeader(hdrs: Array<OepaTableHeader>) {\n    this.resetHeaders();\n    if (hdrs && hdrs.length) {\n      hdrs.forEach((hdr: OepaTableHeader) => {\n        this.headerRows.push(this.extractInnerColumns(hdr.columns));\n      });\n      this.columnHeaders = this.extractColumnHeaders(this.headerRows);\n      this.dataColumns = this.extractDataColumns(this.headerRows);\n      this.initializeHiddenColumns(true);\n    }\n  }\n\n  @Input()\n  public set header(hdr: OepaTableHeader) {\n    this.resetHeaders();\n    if (hdr.columns && hdr.columns.length > 0) {\n      this.headerRows.push(this.extractInnerColumns(hdr.columns));\n    }\n    this.columnHeaders = this.extractColumnHeaders(this.headerRows);\n    this.dataColumns = this.extractDataColumns(this.headerRows);\n    this.initializeHiddenColumns(false);\n  }\n\n  @Input() customBtnLabel: string | undefined = undefined;\n  @Input() customBtnVisible = false;\n  @Input() customBtnEnabled = false;\n\n  @Input() customBtnLabel2: string | undefined = undefined;\n  @Input() customBtnVisible2 = false;\n  @Input() customBtnEnabled2 = false;\n\n  @Input() small = false;\n\n  // Outputs (Events)\n  @Output() public cellClicked: EventEmitter<OepaTableCellClickEvent> = new EventEmitter();\n  @Output() public actionClicked: EventEmitter<OepaActionEvent> = new EventEmitter();\n  @Output() public rowSelected: EventEmitter<Array<OepaTableRow>> = new EventEmitter();\n  @Output() public customBtnClicked: EventEmitter<void> = new EventEmitter();\n  @Output() public customBtn2Clicked: EventEmitter<void> = new EventEmitter();\n\n  public pColumns: OepaPColumn[] = [];\n\n  private resetHeaders() {\n    this.headerRows = [];\n    this.columnHeaders = [];\n    this.dataColumns = [];\n    this.hiddenColumns = [];\n    this.visibleColumns = [];\n    this.pColumns = [];\n  }\n\n  private initializeHiddenColumns(complexHeader: boolean) {\n    this.visibleColumnCount = 0;\n    this.allColumnCount = 0;\n    this.dataColumns.forEach((column) => {\n      column.field = column.id;\n      column.header = column.title;\n      if (complexHeader && (column?.hidden === true || column?.hidden === false)) {\n        console.error('disabling hidden attribute for column: ' + column.id +\n          '. Hidden columns are not supported for complex headers (yet).');\n        column.hidden = undefined;\n        this.visibleColumnCount++;\n        this.visibleColumns.push(column);\n      } else if (column?.hidden === true) {\n        this.hiddenColumns.push(column);\n      } else {\n        this.visibleColumns.push(column);\n        this.visibleColumnCount++;\n      }\n      this.allColumnCount++;\n    });\n  }\n\n  @Input()\n  public set data(values: Array<OepaTableRow>) {\n    if (!this._data || this._data.length === 0) {\n      this._data = this.tableService.getData(this.tableId) || [];\n    }\n    if (values) {\n      for (let i = 0; i < values.length; i++) {\n        values[i].privateId = i;\n      }\n      if (this._data && this._data.length !== values.length) {\n        this.tableService.clearPageInfo(this.tableId);\n      }\n    }\n\n    this._data = values;\n    this.tableService.setData(this.tableId, this._data);\n    this.updateTable();\n  }\n\n  public get data(): Array<OepaTableRow> {\n    return this._data.map(x => Object.assign({}, x));\n  }\n\n  @Input() totalRow: OepaTableRow | undefined;\n\n  public constructor(private sanitizer: DomSanitizer,\n    private tableService: TableService,\n    private tableExportService: TableExportService,\n    private fileUtilService: OepaFileUtilService,\n    private elRef: ElementRef) {\n  }\n  ngOnDestroy(): void {\n    // Clean up subscriptions or other resources to prevent memory leaks\n    if (this.noFiltersSubject) {\n      this.noFiltersSubject.complete();\n    }\n  }\n\n  ngOnInit() {\n    this.paginationOn = !this._config.disablePagination;\n  }\n\n  ngAfterViewChecked(): void {\n    if (this.config.className !== '') {\n      $('table').addClass('table ' + this.config.className);\n    }\n  }\n\n  private extractInnerColumns(inner: Array<OepaTableColumn>): OepaTableHeader {\n    const header: OepaTableHeader = { columns: [] };\n    inner.forEach((value: OepaTableColumn) => {\n      const column = header.columns.find((col: OepaTableColumn) => col.id === value.id);\n      if (column) {\n        // overwrite repeated column\n        Object.assign(column, value);\n      }\n      if (!column) {\n        header.columns.push(value);\n      }\n    });\n    return header;\n  }\n\n  private extractColumnHeaders(headerRows: Array<OepaTableHeader>): Array<string> {\n    const headers: Array<string> = [];\n    let rowIndex = 0;\n    const childColumns: any = {};\n    headerRows.forEach((hdr: OepaTableHeader) => {\n      let colIndex = 0;\n      hdr.columns.forEach((column: OepaTableColumn) => {\n        if (rowIndex === 0) {\n          headers.push(column.title);\n          if (column.colspan) {\n            for (let count = 1; count < column.colspan; count++) {\n              headers.push('');\n            }\n          }\n          if (column.rowspan) {\n            childColumns[colIndex] = column.rowspan - 1;\n          }\n        } else {\n          while (childColumns[colIndex] && childColumns[colIndex] > 0) {\n            childColumns[colIndex]--;\n            colIndex++;\n          }\n          headers[colIndex] += ' ' + column.title;\n          if (column.colspan) {\n            for (let count = 1; count < column.colspan; count++) {\n              colIndex++;\n            }\n          }\n        }\n        colIndex++;\n      });\n      rowIndex++;\n    });\n    return headers;\n  }\n\n\n  private extractDataColumns(headerRows: Array<OepaTableHeader>): Array<OepaTableColumn> {\n    const dataColumns: Array<OepaTableColumn> = [];\n    let rowIndex = 0;\n    const childColumns:any = {};\n    headerRows.forEach((hdr: OepaTableHeader) => {\n      let colIndex = 0;\n      hdr.columns.forEach((column: OepaTableColumn) => {\n        if (rowIndex === 0) {\n          if (column.colspan && column.colspan > 1) {\n            for (let count = 0; count < column.colspan; count++) {\n              dataColumns.push({id: '',title: ''});\n            }\n            colIndex += (column.colspan - 1);\n          } else {\n            dataColumns.push(column);\n            if (column.rowspan) {\n              childColumns[colIndex] = column.rowspan - 1;\n            }\n          }\n        } else {\n          while (childColumns[colIndex] && childColumns[colIndex] > 0) {\n            childColumns[colIndex]--;\n            colIndex++;\n          }\n          if (column.colspan && column.colspan > 1) {\n            colIndex += (column.colspan - 1);\n          } else {\n            dataColumns[colIndex] = column;\n          }\n        }\n        colIndex++;\n      });\n      rowIndex++;\n    });\n    return dataColumns;\n  }\n\n  public sanitize(html: string): SafeHtml {\n    return this.sanitizer.bypassSecurityTrustHtml(html);\n  }\n\n  /**\n   * Check to see if any filters are set\n   */\n  public noFilters(): boolean {\n    let noFilters = true;\n    this.currentFilters.forEach(filter => {\n      if (filter.filterString && filter.filterString.length > 0) {\n        noFilters = false;\n      }\n    });\n    this.noFiltersSubject.next(noFilters);\n    return noFilters;\n  }\n\n  /**\n   * Retrieve the global filter string (if any) as a RegExp\n   */\n  private getGlobalFilter(): RegExp | undefined {\n    let regExp: RegExp | undefined;\n    this.currentFilters.forEach(filter => {\n      if (!filter.columnId && filter.filterString && filter.filterString.length > 0) {\n        regExp = new RegExp(filter.filterString, 'i');\n      }\n    });\n    return regExp;\n  }\n\n  /**\n   * Retrieve the filter for the specified column (if any) as a RegExp.\n   * @param columnId\n   */\n  private getFilterForColumn(columnId: string): RegExp | undefined {\n    let regExp: RegExp | undefined;\n    this.currentFilters.forEach(filter => {\n      if (filter.columnId === columnId && filter.filterString && filter.filterString.length > 0) {\n        regExp = new RegExp(filter.filterString, 'i');\n      }\n    });\n    return regExp;\n  }\n\n  /**\n   * Filter the table data provided by the global or column-specific\n   * filters set in the UI.\n   * @param data\n   */\n  private filterData(data: Array<OepaTableRow>): Array<OepaTableRow> {\n    // don't attempt filtering if there are no filters set\n    if (this.noFilters()) {\n      return data;\n    }\n    let filteredData: Array<OepaTableRow> = data;\n    const tempArray: Array<OepaTableRow> = [];\n    filteredData.forEach((row: OepaTableRow) => {\n      let flag = this.filterByColumnFilters(row);\n      if (flag) {\n        flag = this.filterByGlobalFilter(row);\n      }\n      if (flag || row.isDivider) {\n        tempArray.push(row);\n      }\n    });\n    filteredData = tempArray;\n    return filteredData;\n  }\n\n  /**\n   * Test if row matches any of the columnn filters that may be set.\n   * @param row\n   */\n  private filterByColumnFilters(row: OepaTableRow): boolean {\n    let flag = true;\n    row.cells.forEach((cell: OepaTableCell) => {\n      const regExp = this.getFilterForColumn(cell.id);\n      const filterValue = cell.filterValue || cell.value || '';\n      if (regExp && filterValue !== undefined && filterValue !== null) {\n        const result = filterValue.toString().match(regExp);\n        flag = flag && (result !== null);\n      }\n    });\n    return flag;\n  }\n\n  /**\n   * Test if row matches the global filter\n   * @param row\n   */\n  private filterByGlobalFilter(row: OepaTableRow): boolean {\n    let flag = true;\n    const regExp = this.getGlobalFilter();\n    if (regExp) {\n      flag = false;\n      row.cells.forEach((cell: OepaTableCell) => {\n        const filterValue = cell.filterValue || cell.value;\n        if (filterValue !== undefined && filterValue !== null) {\n          const result = filterValue.toString().match(regExp);\n          flag = flag || (result !== null);\n        }\n      });\n    }\n    return flag;\n  }\n\n  public hideColumn(column: OepaTableColumn) {\n    this.hiddenColumns.push(column);\n    this.visibleColumns = this.visibleColumns.filter(match => {\n      return match.id !== column.id;\n    });\n    column.hidden = true;\n    this.visibleColumnCount--;\n  }\n\n  public unhideColumn(columnId: string) {\n    const hiddenCols: Array<OepaTableColumn> = [];\n    this.hiddenColumns.forEach((col) => {\n      if (col.id !== columnId) {\n        hiddenCols.push(col);\n      } else {\n        col.hidden = false;\n      }\n    });\n    let visibleCols: Array<OepaTableColumn> = [];\n    this.dataColumns.forEach(dataColumn => {\n      let keep = true;\n      hiddenCols.forEach(hiddenColumn => {\n        if (dataColumn.id === hiddenColumn.id) {\n          keep = false;\n        }\n      });\n      if (keep) {\n        visibleCols.push(dataColumn);\n      }\n    });\n    this.hiddenColumns = hiddenCols;\n    this.visibleColumns = visibleCols;\n    this.visibleColumnCount++;\n  }\n\n  private sortData(data: Array<OepaTableRow>): Array<OepaTableRow> {\n    let sortCriteria: any = this.tableService.getSortCriteria(this.tableId) || [];\n    if (sortCriteria.length == 0) {\n      return data;\n    }\n\n    this.resetColumnSortIndexes(sortCriteria);\n\n    return data.sort((previous: OepaTableRow, current: OepaTableRow) => {\n      let sortIndex = 0;\n      let sortResult = 0;\n      while (sortIndex < sortCriteria.length && sortResult === 0) {\n        let prev = this.getRowSortValue(previous, sortCriteria[sortIndex].columnId);\n        let curr = this.getRowSortValue(current, sortCriteria[sortIndex].columnId);\n        if (prev > curr) {\n          sortResult =  (sortCriteria[sortIndex].sort === 'desc' ? -1 : 1);\n        } else if (prev < curr) {\n          sortResult =  (sortCriteria[sortIndex].sort === 'asc' ? -1 : 1);\n        } else {\n          sortResult = 0;\n        }\n        sortIndex++;\n      }\n      return sortResult;\n    });\n  }\n\n  public resetColumnSortIndexes(sortCriteria: OepaTableSortCriterion[]) {\n    if (sortCriteria && sortCriteria.length > 0) {\n      for (let i=0; i<sortCriteria.length; i++) {\n        this.dataColumns.forEach(column => {\n          if (column?.id === sortCriteria[i].columnId) {\n            column.sortIndex = i + 1;\n          }\n        });\n      };\n    }\n  }\n\n  /**\n   * Retrieve the display value of the specified cell.\n   * @param row\n   * @param columnId\n   */\n  public getRowValue(row: OepaTableRow, columnId: string): any {\n    let value: any;\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === columnId) {\n        value = cell.value;\n      }\n    });\n    return value;\n  }\n\n  public isCellValueHidden(row: OepaTableRow, columnId: string): boolean {\n    let hidden: boolean = false;\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === columnId) {\n        hidden = cell.hideValue || false;\n      }\n    });\n    return hidden;\n  }\n\n  /**\n   *\n   * @param row Retrieve the sort value of the specified cell (will default to display value if sort\n   * value is not specified).\n   * @param columnId\n   */\n  public getRowSortValue(row: OepaTableRow, columnId: string): any {\n    let value: any;\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === columnId) {\n        if (cell.sortValue !== undefined && cell.sortValue !== null) {\n          value = cell.sortValue;\n        } else {\n          value = cell.value;\n        }\n      }\n    });\n    if (typeof value === 'string') {\n      value = value.toUpperCase();\n    }\n    return value;\n  }\n\n  public changePage(data: Array<OepaTableRow> = this.data): Array<OepaTableRow> {\n    if (!this.paginationOn) {\n      return data;\n    }\n    this.updatePage();\n    const start = (this.pageInfo.page - 1) * this.pageInfo.itemsPerPage;\n    const end = this.pageInfo.itemsPerPage > -1 ? (start + this.pageInfo.itemsPerPage) : data.length;\n    // not sure why, but maxSize was getting lost. Reset it here to prevent weirdness.\n    this.pageInfo.maxSize = 5;\n    return data.slice(start, end);\n  }\n\n  public togglePagination() {\n    this.paginationOn = !this.paginationOn;\n    this.updateTable();\n  }\n\n  public onFilterChanged(filter: OepaTableFilter) {\n    const matchFilter = this.currentFilters.find((f) => {\n      return f.columnId === filter.columnId;\n    });\n    if (!matchFilter) {\n      this.currentFilters.push(filter);\n    } else {\n      matchFilter.filterString = filter.filterString;\n    }\n    // need to check for noFilters to send subject\n    this.noFilters();\n    this.updateTable(true);\n  }\n\n  public onSortChanged(column: OepaTableColumn) {\n    this.tableService.setSort(this.tableId, column);\n    this.updateTable();\n  }\n\n  public onPageChanged(pageEvent: PageChangedEvent) {\n    this.pageInfo = {\n      page: pageEvent.page,\n      itemsPerPage: pageEvent.itemsPerPage,\n      maxSize: this.pageInfo.maxSize,\n      length: this.pageInfo.length,\n      numPages: this.pageInfo.numPages\n    }\n    this.tableService.setPage(this.tableId, pageEvent.page);\n    this.updateTable();\n  }\n\n  private updateTable(clearSelctedRows: boolean = false) {\n    const filteredData = this.filterData(this.data);\n    const sortedData = this.sortData(filteredData);\n    this.rows = this.changePage(sortedData);\n    this.pageInfo.length = sortedData.length;\n    this.allRowsSelected = false;\n    if (clearSelctedRows) {\n      this.rowSelected.emit([]);\n    }\n    this.dataHasDetails = this.checkForDetails(this.rows);\n  }\n\n  private updatePage() {\n    const savedPageNumber = this.tableService.getPage(this.tableId);\n    if (savedPageNumber && this.pageInfo.page !== savedPageNumber) {\n      this.pageInfo.page = savedPageNumber;\n      this.currentPage = this.pageInfo.page;\n    }\n  }\n\n  private checkForDetails(data: Array<OepaTableRow>): boolean {\n    let hasDetails = false;\n    if (data && data.length) {\n      data.forEach((row: OepaTableRow) => {\n        if (row.showDetail === true || row.showDetail === false) {\n          hasDetails = true;\n        }\n      });\n    }\n    return hasDetails;\n  }\n\n  public toggleAllDetails() {\n    this.showAllDetails = !this.showAllDetails;\n    if (this._data && this._data.length) {\n      this._data.forEach((row: OepaTableRow) => {\n        if (row.showDetail !== undefined) {\n          row.showDetail = this.showAllDetails;\n        }\n      });\n    }\n    this.updateTable();\n  }\n\n  public toggleRowDetail(toggleRow: OepaTableRow) {\n    if (toggleRow && this._data && this._data.length) {\n      this._data.forEach((row: OepaTableRow) => {\n        if (row.dataSource === toggleRow.dataSource) {\n          row.showDetail = !toggleRow.showDetail;\n          toggleRow.showDetail = row.showDetail;\n        }\n      });\n    }\n  }\n\n  public isActionColumn(columnId: string): boolean {\n    let actionColumn = false;\n    this.headerRows.forEach((hdr: OepaTableHeader) => {\n      hdr.columns.forEach((column: OepaTableColumn) => {\n        if (column.id === columnId) {\n          actionColumn = column.actionColumn || false;\n        }\n      });\n    });\n    return actionColumn;\n  }\n\n  public isColumnHidden(columnId: string): boolean {\n    let hidden = false;\n    this.headerRows.forEach((hdr: OepaTableHeader) => {\n      hdr.columns.forEach((column: OepaTableColumn) => {\n        if (column.id === columnId) {\n          hidden = column.hidden || false;\n        }\n      });\n    });\n    return hidden;\n  }\n\n  public getHiddenColumns(): Array<OepaTableColumn> {\n    const columns: Array<OepaTableColumn> = [];\n    this.headerRows.forEach((hdr: OepaTableHeader) => {\n      hdr.columns.forEach((column: OepaTableColumn) => {\n        if (column.hidden) {\n          columns.push(column);\n        }\n      });\n    });\n    return columns;\n  }\n\n  public cellClick(event: TableDataCellClickEvent): void {\n    const row = event.row;\n    const columnId = event.columnID;\n    const value = this.getRowValue(row, columnId);\n    this.cellClicked.emit({ row, columnId, value });\n  }\n\n  public onActionClick(event: OepaActionEvent): void {\n    this.actionClicked.emit(event);\n  }\n\n  public toggleAllRowsSelection(): void {\n    const selectedRows: Array<OepaTableRow> = [];\n    this.allRowsSelected = !this.allRowsSelected;\n    // deselect all rows\n    this._data.forEach((r: OepaTableRow) => {\n      r.selected = false;\n    });\n    // select only visible rows\n    this.rows.forEach((r: OepaTableRow) => {\n      if (r.selectable) {\n        r.selected = this.allRowsSelected;\n      }\n      if (r.selected) {\n        selectedRows.push(r);\n      }\n    });\n    this.rows.slice();\n    // this.updateTable();\n    this.rowSelected.emit(selectedRows);\n  }\n\n  public toggleRowSelection(row: OepaTableRow): void {\n    const selectedRows: Array<OepaTableRow> = [];\n    row.selected = !row.selected;\n    this._data.forEach((dr: OepaTableRow) => {\n      if (row.privateId === dr.privateId) {\n        dr.selected = row.selected;\n      }\n      if (dr.selected) {\n        selectedRows.push(dr);\n      } else {\n        this.allRowsSelected = false;\n      }\n    });\n    // this.updateTable();\n    this.rowSelected.emit(selectedRows);\n  }\n\n  public singleRowSelection(row: OepaTableRow): void {\n    const selectedRows: Array<OepaTableRow> = [];\n    row.selected = !row.selected;\n    // add row to selected rows if it is selected\n    if (row.selected) {\n      selectedRows.push(row);\n    }\n    // unselect any other row that may be selected\n    this._data.forEach((dr: OepaTableRow) => {\n      if (row.privateId === dr.privateId) {\n        dr.selected = row.selected;\n      } else {\n        dr.selected = false;\n      }\n    });\n    this.updateTable();\n    this.rowSelected.emit(selectedRows);\n  }\n\n  private prepareRowsForExport(rows: Array<OepaTableRow>): Array<OepaTableRow> {\n    const result: Array<OepaTableRow> = [];\n    // this.dumpDetailRows();\n    if (rows && rows.length) {\n      rows.forEach((row: OepaTableRow) => {\n        result.push({\n          cells: this.simplifyCells(row.cells),\n          actions: row.actions,\n          showDetail: row.showDetail,\n          subTable: row.detail ? this.convertToTable(row.detail) : undefined,\n          isDivider: row.isDivider,\n          dividerClassName: row.dividerClassName\n        });\n      });\n    }\n    return result;\n  }\n\n  private simplifyCells(cells: OepaTableCell[]) {\n    let simpleCells: OepaTableCell[] = [];\n    if (cells && cells.length > 0) {\n      cells.forEach(cell => {\n        simpleCells.push({\n          id: cell.id,\n          value: cell.value,\n          hideValue: cell.hideValue,\n          iconClassName: cell.iconClassName,\n          className: cell.className,\n          imgSrc: cell.imgSrc,\n          innerHTML: cell.innerHTML,\n          colSpan: cell.colSpan,\n          excelDataFormat: cell.excelDataFormat\n        });\n      });\n    }\n    return simpleCells;\n  }\n\n  public gatherTableData(rows: OepaTableRow[]): OepaTable {\n    // this.dumpDetailRows();\n    const oepaTable: OepaTable = {};\n    oepaTable.headerRows = this.headerRows;\n    oepaTable.allDataRows = this.prepareRowsForExport(rows);\n    oepaTable.showAllDetails = this.showAllDetails;\n    oepaTable.className = this._config.className;\n    oepaTable.visibleColumnCount = this.visibleColumnCount;\n    oepaTable.allColumnCount = this.allColumnCount;\n    return oepaTable;\n  }\n\n  private dumpDetailRows() {\n    console.log('dumpDetailRows - Total rows: ' + this._data.length);\n    this._data.forEach((row: OepaTableRow) => {\n      if (row.showDetail) {\n        console.log('SHOW DETAIL: ' + JSON.stringify(row.dataSource));\n      }\n    });\n  }\n\n  public convertToTable(template: OepaTemplateInfo): OepaTable | undefined {\n    let oepaTable: OepaTable | undefined = undefined;\n    if (template.component === PTableComponent) {\n      const table: PTableComponent = new PTableComponent(this.sanitizer, this.tableService, this.tableExportService, this.fileUtilService, this.elRef);\n      if (template.inputs && template.inputs.length > 0) {\n        template.inputs.forEach((input: any) => {\n          if (input.name === 'config') {\n            table.config = input.value;\n          } else if (input.name === 'complexHeader') {\n            table.complexHeader = input.value;\n          } else if (input.name === 'header') {\n            table.header = input.value;\n          } else if (input.name === 'data') {\n            table.data = input.value;\n          }\n        });\n        oepaTable = table.gatherTableData(table.data);\n      }\n    }\n    return oepaTable;\n  }\n\n  public toggleExportVisibleOnly() {\n    this.exportVisibleOnly = !this.exportVisibleOnly;\n  }\n\n  public exportToExcel() {\n    const sortedData = this.sortData(this._data);\n    const exportTable: OepaTable = this.gatherTableData(this.exportVisibleOnly ? this.rows : sortedData);\n\n    if ((exportTable.allDataRows?.length || 0) > 0) {\n      this.tableExportService.downloadExcel(exportTable, this._config).subscribe({\n        next: data => {\n          this.fileUtilService.downloadFile(data, 'application/vnd.ms-excel');\n        },\n        error: error => console.log(error)\n      });\n    } else {\n      alert('No data in table available for export');\n    }\n  }\n\n  public exportToHTML() {\n    const sortedData = this.sortData(this._data);\n    const exportTable: OepaTable = this.gatherTableData(this.exportVisibleOnly ? this.rows : sortedData);\n\n    if ((exportTable.allDataRows?.length || 0) > 0) {\n      // for now, always embed sub-tables  in HTML view.\n      this.tableExportService.downloadHTML(exportTable, this._config).subscribe({\n        next: data => {\n          this.fileUtilService.downloadFile(data, 'text/html');\n        },\n        error: error => console.log(error)\n      });\n    } else {\n      alert('No data in table available for export');\n    }\n  }\n\n  public onCustomBtnClick() {\n    this.customBtnClicked.emit();\n  }\n\n  public onCustomBtn2Click() {\n    this.customBtn2Clicked.emit();\n  }\n\n}\n","<div *ngIf=\"!config.hideTable\">\n  <form *ngIf=\"hiddenColumns.length > 0\">\n    <div class=\"row mb-2\">\n      <label class=\"col-sm-2 col-form-label\">Show Hidden Columns:</label>\n      <div class=\"col-sm-4\">\n        <select class=\"form-select\" (change)=\"unhideColumn($any($event).target.value)\"\n          [id]=\"tableId+'_UnhideColumnSelect'\">\n          <option value=\"\">Choose a column</option>\n          <option *ngFor=\"let col of hiddenColumns\" [value]=\"col.id\">{{col.title}}</option>\n        </select>\n      </div>\n    </div>\n  </form>\n\n  <div ngClass=\"{{config.divClassName || ''}}\">\n    <p-table [columns]=\"visibleColumns\" [value]=\"rows\" \n      [scrollable]=\"config.verticalScroll\" [scrollHeight]=\"config.scrollHeight\"\n      [tableStyle]=\"{'min-width': '50rem'}\">\n      <ng-template pTemplate=\"header\" let-columns>\n        <tr *ngFor=\"let hdr of headerRows; let hr=index;\" role=\"row\">\n          <th *ngIf=\"dataHasDetails && hr === 0\" [rowSpan]=\"headerRows.length\" class=\"detail-indicator-col\">\n            <span>\n              <i (click)=\"toggleAllDetails()\" [id]=\"tableId+'_ShowAllDetailsLink'\" class=\"bi\"\n                [ngClass]=\"{'bi-chevron-down': showAllDetails, 'bi-chevron-right': !showAllDetails}\"\n                [tooltip]=\"(showAllDetails ? 'Hide' : 'Show') + ' details for all rows'\" placement=\"right\">\n              </i>\n            </span>\n          </th>\n          <ng-template ngFor let-col [ngForOf]=\"hdr.columns\" let-i=\"index\">\n            <th *ngIf=\"!col.hidden && col.frozenColumn\" pFrozenColumn ngClass=\"{{col.className || ''}}\"\n              [colSpan]=\"col.colspan || 1\" [rowSpan]=\"col.rowspan || 1\">\n              <oepa-table-header-cell [column]=\"col\" [tableId]=\"tableId\" [allRowsSelected]=\"allRowsSelected\"\n                [rowCount]=\"rows.length\" [noFiltersSubject]=\"noFiltersSubject\"\n                (onToggleAllRowsSelection)=\"toggleAllRowsSelection()\" (onSortChanged)=\"onSortChanged($event)\"\n                (onHideColumn)=\"hideColumn($event)\" (onFilterChanged)=\"onFilterChanged($event)\">\n              </oepa-table-header-cell>\n            </th>\n            <th *ngIf=\"!col.hidden && !col.frozenColumn\" ngClass=\"{{col.className || ''}}\"\n              [colSpan]=\"col.colspan || 1\" [rowSpan]=\"col.rowspan || 1\">\n              <oepa-table-header-cell [column]=\"col\" [tableId]=\"tableId\" [allRowsSelected]=\"allRowsSelected\"\n                [rowCount]=\"rows.length\" [noFiltersSubject]=\"noFiltersSubject\"\n                (onToggleAllRowsSelection)=\"toggleAllRowsSelection()\" (onSortChanged)=\"onSortChanged($event)\"\n                (onHideColumn)=\"hideColumn($event)\" (onFilterChanged)=\"onFilterChanged($event)\">\n              </oepa-table-header-cell>\n            </th>\n          </ng-template>\n        </tr>\n      </ng-template>\n      <ng-template pTemplate=\"body\" let-row let-r=\"rowIndex\" let-columns=\"columns\">\n        <!-- Data Row -->\n        <tr>\n          <td *ngIf=\"dataHasDetails\">\n            <!-- Detail icon (if specified) -->\n            <span *ngIf=\"row.showDetail === true || row.showDetail === false\">\n              <i *ngIf=\"row.detailIconClassName\" [ngClass]=\"row.detailIconClassName\"></i>\n              <i (click)=\"toggleRowDetail(row)\" [id]=\"tableId+'_ShowDetailLink_'+r\" class=\"bi\"\n                [ngClass]=\"{'bi-chevron-down': row.showDetail, 'bi-chevron-right': !row.showDetail}\"\n                [tooltip]=\"(row.showDetail ? 'Hide' : 'Show') + ' details for this row'\" placement=\"right\">\n              </i>\n            </span>\n          </td>\n          <!-- If row is a divider, it spans the whole table -->\n          <td *ngIf=\"row.isDivider\" [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\"\n            [ngClass]=\"row.dividerClassName || 'oepa-table-gray'\">&nbsp;</td>\n          <!-- Data Rows -->\n          <ng-template *ngIf=\"!row.isDivider\" ngFor let-col [ngForOf]=\"dataColumns\" let-i=\"index\">\n            <td *ngIf=\"!col.hidden && (row|cellColspan:col) > 0 &&!col.frozenColumn\"\n              ngClass=\"{{row|cellClassname:col || ''}}\" [colSpan]=\"row|cellColspan:col\">\n              <oepa-p-table-data-cell [col]=\"col\" [i]=\"i\" [row]=\"row\" [r]=\"r\" [tableId]=\"tableId\"\n                (onActionClick)=\"onActionClick($event)\" (onCellClick)=\"cellClick($event)\"\n                (onToggleRowSelection)=\"toggleRowSelection($event)\"\n                (onSingleRowSelection)=\"singleRowSelection($event)\"></oepa-p-table-data-cell>\n            </td>\n            <td *ngIf=\"!col.hidden && (row|cellColspan:col) > 0 &&col.frozenColumn\" pFrozenColumn\n              ngClass=\"{{row|cellClassname:col || ''}}\" [colSpan]=\"row|cellColspan:col\">\n              <oepa-p-table-data-cell [col]=\"col\" [i]=\"i\" [row]=\"row\" [r]=\"r\" [tableId]=\"tableId\"\n                (onActionClick)=\"onActionClick($event)\" (onCellClick)=\"cellClick($event)\"\n                (onToggleRowSelection)=\"toggleRowSelection($event)\"\n                (onSingleRowSelection)=\"singleRowSelection($event)\"></oepa-p-table-data-cell>\n            </td>\n          </ng-template>\n        </tr>\n\n        <!-- Detail Row -->\n        <tr *ngIf=\"row.showDetail\" class=\"table-info\">\n          <td [colSpan]=\"visibleColumnCount + (dataHasDetails ? 1 : 0)\">\n            <cml-template [templateInfo]=\"row.detail\"></cml-template>\n          </td>\n        </tr>\n      </ng-template>\n    </p-table>\n  </div>\n  <!-- Table footer -->\n  <form *ngIf=\"!config.hideFooter || (data && pageInfo.itemsPerPage < data.length)\" class=\"form-horizontal\">\n    <div class=\"form-group row\">\n      <!-- Table-wide filter -->\n      <div class=\"col-sm-5\">\n        <div class=\"row\">\n          <div class=\"col-sm-6\">\n            <input *ngIf=\"!config.hideGlobalFilter\" placeholder=\"Filter all columns\"\n              [oepaTableFiltering]=\"{ filterString: '' }\" [tableId]=\"tableId\" class=\"form-control input-sm\"\n              (tableChanged)=\"onFilterChanged($event)\" [id]=\"tableId+'_FilterAllColumnsInput'\" />\n          </div>\n          <div class=\"col-sm-6\">\n            <span *ngIf=\"config.showRowCountInFooter && _data && _data.length > 0\">\n              <span class=\"badge bg-secondary\">{{_data.length}}</span>&nbsp;total rows\n            </span>\n          </div>\n        </div>\n      </div>\n      <!-- Export Buttons -->\n      <div class=\"col-sm-2 d-flex justify-content-center\">\n        <div class=\"row\">\n          <div class=\"col-sm-12 text-center\" *ngIf=\"allowEdit\">\n            <div *ngIf=\"config.exportToExcel || config.exportToHTML\" class=\"btn-group\" dropdown>\n              <button id=\"exportBtn\" dropdownToggle type=\"button\" class=\"btn btn-primary dropdown-toggle\"\n                aria-controls=\"dropdown-basic\">\n                Export <span class=\"caret\"></span>\n                <ul id=\"export-dropdown\" *dropdownMenu class=\"dropdown-menu\">\n                  <li *ngIf=\"config.exportToExcel\" role=\"menuitem\"><a class=\"dropdown-item\"\n                      (click)=\"exportToExcel()\">Export to Excel</a></li>\n                  <li *ngIf=\"config.exportToHTML\" role=\"menuitem\"><a class=\"dropdown-item\"\n                      (click)=\"exportToHTML()\">Export\n                      to HTML</a></li>\n                </ul>\n              </button>\n            </div>\n            <button *ngIf=\"customBtnVisible\" type=\"button\"\n              ngClass=\"{{'btn btn-primary me-1' + (small ? ' btn-sm' : '')}}\" (click)=\"onCustomBtnClick()\"\n              [id]=\"tableId+'_CustomBtn'\" [disabled]=\"!customBtnEnabled\">{{customBtnLabel}}</button>\n            <button *ngIf=\"customBtnVisible2\" type=\"button\"\n              ngClass=\"{{'btn btn-primary me-1' + (small ? ' btn-sm' : '')}}\" (click)=\"onCustomBtn2Click()\"\n              [id]=\"tableId+'_CustomBtn'\" [disabled]=\"!customBtnEnabled2\">{{customBtnLabel2}}</button>\n          </div>\n        </div>\n      </div>\n      <!-- Pagination -->\n      <div *ngIf=\"!config.disablePagination\" class=\"col-sm-5\">\n        <div class=\"row\">\n          <div class=\"col-sm-9\">\n            <pagination *ngIf=\"paginationOn\" class=\"pagination-sm\" [totalItems]=\"pageInfo.length\"\n              [itemsPerPage]=\"pageInfo.itemsPerPage\" [maxSize]=\"pageInfo.maxSize\" [(ngModel)]=\"currentPage\"\n              name=\"currentTablePage\" [boundaryLinks]=\"true\" [rotate]=\"false\" (pageChanged)=\"onPageChanged($event)\"\n              (numPages)=\"pageInfo.numPages = $event\">\n            </pagination>\n          </div>\n          <div class=\"col-sm-3\">\n            <button (click)=\"togglePagination()\" type=\"button\" class=\"btn btn-default btn-sm me-1\">{{ paginationOn ?\n              'Show All Rows' : 'Restore Pagination'}}</button>\n          </div>\n        </div>\n      </div>\n      <div *ngIf=\"config.exportToExcel || config.exportToHTML\" class=\"col-sm-12 text-center\">\n        <span>Export only visible data:&nbsp;\n          <input type=\"checkbox\" [checked]=\"exportVisibleOnly\" (click)=\"toggleExportVisibleOnly()\"\n            id=\"exportVisibleOnlyCheckbox\" />\n        </span>\n      </div>\n    </div>\n  </form>\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TableDataCellClickEvent } from './table-data-cell-click-event';\nimport { OepaTableColumn } from '../oepa-table-column';\nimport { OepaTableRow } from '../oepa-table-row';\nimport { OepaActionEvent } from '../../action-btn/oepa-action-event';\n\n@Component({\n  selector: 'oepa-table-data-cell',\n  templateUrl: './table-data-cell.component.html',\n  styleUrl: './table-data-cell.component.css'\n})\nexport class TableDataCellComponent {\n  @Input() col!: OepaTableColumn;\n  @Input() row!: OepaTableRow;\n  @Input() i: number = 0;\n  @Input() r: number = 0;\n  @Input() tableId: string = '';\n\n  @Output() onCellClick: EventEmitter<TableDataCellClickEvent> = new EventEmitter<TableDataCellClickEvent>();\n  @Output() onToggleRowSelection: EventEmitter<OepaTableRow> = new EventEmitter<OepaTableRow>();\n  @Output() onSingleRowSelection: EventEmitter<OepaTableRow> = new EventEmitter<OepaTableRow>();\n  @Output() onActionClick: EventEmitter<OepaActionEvent> = new EventEmitter<OepaActionEvent>();\n\n  public cellClick(row: OepaTableRow, columnID: string) {\n    this.onCellClick.emit({row: row, columnID: columnID});\n  }\n\n  public toggleRowSelection(row: OepaTableRow) {\n    this.onToggleRowSelection.emit(row);\n  }\n\n  public singleRowSelection(row: OepaTableRow) {\n    this.onSingleRowSelection.emit(row);\n  }\n\n  public actionClick(event: OepaActionEvent) {\n    this.onActionClick.emit(event);\n  }\n}\n","                    <!-- Data Cell -->\n                    <div *ngIf=\"!col.actionColumn && !col.selectColumn && !col.singleSelectColumn && !col.inputColumn\">\n                        <!-- Template for popover 1 -->\n                        <ng-template #popoverTemplate>\n                          <div *ngIf=\"row.popover\">\n                            <cml-template [templateInfo]=\"row.popover.content\"></cml-template>\n                          </div>\n                        </ng-template>\n                        <!-- Popover 1 icon (if specified) -->\n                        <span *ngIf=\"row.popover && i === (row.popoverColumnIndex || 0) && row.popover\" tabindex=\"0\"\n                          [popoverTitle]=\"row.popover.title\" [popover]=\"popoverTemplate\"\n                          [containerClass]=\"row.popover.containerClass\" placement=\"right\"\n                          [triggers]=\"row.popover.trigger || 'mouseenter:mouseleave'\">\n                          <i [ngClass]=\"row.popover.className\" [id]=\"tableId+'_PopoverLink_'+r\"></i>\n                        </span>\n        \n                        <!-- Template for popover 2 -->\n                        <ng-template #popover2Template>\n                          <div *ngIf=\"row.popover2\">\n                            <cml-template [templateInfo]=\"row.popover2.content\"></cml-template>\n                          </div>\n                        </ng-template>\n                        <!-- Popover 2 icon (if specified) -->\n                        <span *ngIf=\"i === (row.popover2ColumnIndex || 0) && row.popover2\" tabindex=\"0\"\n                          [popoverTitle]=\"row.popover2.title\" [popover]=\"popover2Template\"\n                          [containerClass]=\"row.popover2.containerClass\" placement=\"right\"\n                          [triggers]=\"row.popover2.trigger || 'mouseenter:mouseleave'\">\n                          <i [ngClass]=\"row.popover2.className\" [id]=\"tableId+'_Popover2Link_'+r\"></i>\n                        </span>\n        \n                        <!-- Template for popover 3 -->\n                        <ng-template #popover3Template>\n                          <div *ngIf=\"row.popover3\">\n                            <cml-template [templateInfo]=\"row.popover3.content\"></cml-template>\n                          </div>\n                        </ng-template>\n                        <!-- Popover 3 icon (if specified) -->\n                        <span *ngIf=\"i === (row.popover3ColumnIndex || 0) && row.popover3\" tabindex=\"0\"\n                          [popoverTitle]=\"row.popover3.title\" [popover]=\"popover3Template\"\n                          [containerClass]=\"row.popover3.containerClass\" placement=\"right\"\n                          [triggers]=\"row.popover3.trigger || 'mouseenter:mouseleave'\">\n                          <i [ngClass]=\"row.popover3.className\" [id]=\"tableId+'_Popover3Link_'+r\"></i>\n                        </span>\n        \n        \n                        <!-- <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n                      <span *ngIf=\"!(row|cellInnerHTML:col)\">{{row|cellValue:col}}</span> -->\n        \n                        <!-- If col is hyperlink, display data as a hyperlink -->\n                        <a *ngIf=\"col.hyperlink && !(row|cellNotSelectable:col)\" href=\"javascript:void(0);\"\n                          (click)=\"cellClick(row, col.id)\" [id]=\"tableId+'_CellClick_'+r+'_'+i\">\n                          <span *ngIf=\"!(row|cellInnerHTML:col)\">\n                            <i [ngClass]=\"row|cellIconClassname:col\"></i>\n                            <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" /></span>\n                            {{row|cellValue:col}}\n                          </span>\n                          <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n                        </a>\n                        <!-- If col is NOT hyperlink, just display data -->\n                        <span *ngIf=\"!col.hyperlink || (row|cellNotSelectable:col)\">\n                          <span *ngIf=\"!(row|cellInnerHTML:col)\">\n                            <i ngClass=\"{{row|cellIconClassname:col || ''}}\"></i>\n                            <span *ngIf=\"row|cellImgSrc:col\"><img [src]=\"row|cellImgSrc:col\" /></span>\n                            {{row|cellValue:col}}\n                          </span>\n                          <div *ngIf=\"row|cellInnerHTML:col\" [innerHTML]=\"row|cellInnerHTML:col\"></div>\n                        </span>\n                      </div>\n                      <!-- Input Cell -->\n                      <div *ngIf=\"col.inputColumn\">\n                        <cml-template [templateInfo]=\"row|cellInputComponent:col\"></cml-template>\n                      </div>\n                      <!-- Select Cell -->\n                      <div *ngIf=\"col.selectColumn\" class=\"text-center\">\n                        <input [id]=\"tableId+'_'+r\" type=\"checkbox\" [disabled]=\"!row.selectable\" [checked]=\"row.selected\"\n                          (change)=\"toggleRowSelection(row)\">\n                      </div>\n                      <!-- Single Select Cell -->\n                      <div *ngIf=\"col.singleSelectColumn\" class=\"text-center\">\n                        <input [id]=\"tableId+'_singleSelect_'+r\" type=\"radio\" [disabled]=\"!row.selectable\"\n                          [checked]=\"row.selected\" (change)=\"singleRowSelection(row)\">\n                      </div>\n                      <!-- Action Button Cell -->\n                      <div *ngIf=\"col.actionColumn && row.actions\">\n                        <oepa-action-btn [actions]=\"row.actions\" [data]=\"row.dataSource\" (actionClicked)=\"actionClick($event)\"\n                          [btnId]=\"tableId+'_'+r\"></oepa-action-btn>\n                      </div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { BsDatepickerConfig } from 'ngx-bootstrap/datepicker';\n\nimport { OepaComponentIdService } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-daterangepicker',\n  templateUrl: './daterangepicker.component.html',\n  styleUrls: ['./daterangepicker.component.css']\n})\nexport class DaterangepickerComponent implements OnInit {\n  public componentId = 'OepaDaterangepickerComponent';\n  public minDate: Date | undefined;\n  public maxDate: Date | undefined;\n  public isDisabled = false;\n\n  @Input() group!: FormGroup;\n  @Input() field!: string;\n  @Input() bsConfig!: Partial<BsDatepickerConfig>;\n  @Input() showValidation = false;\n\n  constructor(private idService: OepaComponentIdService) { }\n\n  checkValidity() {\n    for (const key in this.group.controls) {\n      if (this.group.controls.hasOwnProperty(key) && key === this.field) {\n        return this.group.controls[key].status === 'VALID';\n      }\n    }\n    return null;\n  }\n\n  clearRange() {\n    for (const key in this.group.controls) {\n      if (this.group.controls.hasOwnProperty(key) && key === this.field) {\n        this.group.controls[key].setValue(null);\n      }\n    }\n  }\n\n  ngOnInit() {\n    if (this.bsConfig && this.bsConfig.minDate) {\n        this.minDate = this.bsConfig.minDate;\n    } else {\n        this.minDate = undefined;\n    }\n    if (this.bsConfig && this.bsConfig.maxDate) {\n        this.maxDate = this.bsConfig.maxDate;\n    } else {\n        this.maxDate = undefined;\n    }\n    if (this.bsConfig && this.bsConfig.isDisabled) {\n        this.isDisabled = this.bsConfig.isDisabled; // defaults to false\n    }\n    if (this.group) {\n        this.componentId = this.idService.getComponentId(this.group);\n    }\n  }\n\n}\n","<div [formGroup]=\"group\">\n  <div>\n      <div class=\"input-group\">\n          <input  [id]=\"componentId+'_Input'\"\n                  class=\"form-control\"\n                  [minDate]=\"minDate\"\n                  [maxDate]=\"maxDate\"\n                  #drp=\"bsDaterangepicker\"\n                  bsDaterangepicker\n                  [formControlName]=\"field\"\n                  [bsConfig]=\"bsConfig\"\n                  [isDisabled]=\"isDisabled\"\n                  [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\"\n                  >\n          <div *ngIf=\"!isDisabled\" class=\"input-group-btn\">\n            <button class=\"btn btn-primary\" (click)=\"drp.toggle()\" [id]=\"componentId+'_ToggleBtn'\">\n              <i class=\"bi bi-calendar3\"></i>\n            </button>\n            <button class=\"btn btn-primary\" (click)=\"clearRange()\" [id]=\"componentId+'_ClearBtn'\">\n              <i class=\"bi bi-x-lg\"></i>\n            </button>\n          </div>\n      </div>\n      <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && !checkValidity()\">Date is required</small>\n  </div>\n</div>","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n  selector: 'oepa-wait-message',\n  template: `\n    <div class=\"row\">\n      <div class=\"col-sm-12 text-center\">\n        <span class=\"spinner-border text-primary\" role=\"status\"></span>&nbsp;<em>{{message}}</em>\n      </div>\n    </div>\n  `,\n  styleUrls: ['./oepa-wait-message.component.css']\n})\nexport class OEPAWaitMessageComponent implements OnInit {\n\n  @Input()\n  message!: string;\n\n  constructor() { }\n\n  ngOnInit() {\n  }\n\n}\n","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n  selector: 'oepa-error-message',\n  template: `\n    <div class=\"card error-message\">\n      <div class=\"card-header\">\n        <div><i class=\"fa fa-exclamation-circle \"></i>&nbsp; <strong>ERROR</strong></div>\n      </div>\n      <div class=\"card-body\">\n        <div class=\"card-text\">\n          {{ errorMessage }}\n        </div>\n      </div>\n    </div>\n    `,\n  styleUrls: ['./oepa-error-message.component.css']\n})\nexport class OEPAErrorMessageComponent implements OnInit {\n\n  @Input()\n  errorMessage!: string;\n\n  constructor() { }\n\n  ngOnInit() {\n  }\n\n}","export enum OepaMessageType {\n    INFO,\n    WARNING,\n    ERROR\n}\n","import { OepaMessageType } from './oepa-message-type';\nexport class OepaMessage {\n    public message: string = '';\n    public messageClass: string = '';\n    public messageDate: Date;\n    constructor(msg: string, msgType: OepaMessageType | undefined, logMsg?: string) {\n        this.messageDate = new Date();\n        if (msgType === OepaMessageType.INFO) {\n            this.message = msg;\n            this.messageClass = 'alert alert-info';\n            if (logMsg) { console.log(logMsg); }\n          } else if (msgType === OepaMessageType.WARNING) {\n            this.message = msg;\n            this.messageClass = 'alert alert-warning';\n            if (logMsg) { console.warn(logMsg); }\n          } else if (msgType === OepaMessageType.ERROR) {\n            this.message = msg;\n            this.messageClass = 'alert alert-danger';\n            if (logMsg) { console.error(logMsg); }\n          }\n    }\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { OepaMessage } from './oepa-message';\n\n@Component({\n  selector: 'oepa-message',\n  templateUrl: './message.component.html',\n  styleUrls: ['./message.component.css']\n})\nexport class MessageComponent implements OnInit {\n  @Input() message: OepaMessage = new OepaMessage('', undefined);\n\n  constructor() { }\n\n  ngOnInit() {\n  }\n\n}\n","<div *ngIf=\"message.message\" class=\"row\" [ngClass]=\"message.messageClass\">\n  <div class=\"col-sm-12\">\n    <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"message.message=''\">\n    </button>\n    {{message.messageDate|date: 'shortTime'}}: {{message.message}}\n  </div>\n</div>","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n  selector: 'oepa-message-list',\n  templateUrl: './message-list.component.html',\n  styleUrls: ['./message-list.component.css']\n})\nexport class MessageListComponent implements OnInit {\n  @Input() messageList: Array<string> = [];\n  @Input() messageClass: string = '';\n  @Input() messageLabel: string = '';\n\n  constructor() { }\n\n  ngOnInit() {\n  }\n\n}\n","<div *ngIf=\"messageList && messageList.length > 0\" class=\"row\" [ngClass]=\"messageClass\">\n  <div class=\"col-sm-12\">\n    <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"messageList=[]\">\n    </button>\n    <label *ngIf=\"messageLabel\">{{messageLabel}}</label>\n    <ul>\n      <li *ngFor=\"let message of messageList\">{{message}}</li>\n    </ul>\n  </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\nimport { OepaAttachment, OepaParserReport, OepaFileUtilService, OepaComponentIdService } from 'oepa-common-lib';\nimport { ConfirmationModalComponent } from '../confirmation-modal/confirmation-modal.component';\n\n\n@Component({\n  selector: 'oepa-file-upload',\n  templateUrl: './file-upload.component.html',\n  styleUrls: ['./file-upload.component.css']\n})\nexport class FileUploadComponent implements OnInit {\n  public componentId = 'OepaFileUploadComponent';\n  public uploadError: string = '';\n\n  @Input() group!: FormGroup;\n  @Input() field: string = '';\n  @Input() label: string = '';\n  @Input() errorLabel: string = '';\n  @Input() blankForm: OepaAttachment | undefined;\n  @Input() blankFormUrl: string = '';\n  @Input() showValidation = false;\n  @Input() domain = 'application';\n  @Input() attachment: OepaAttachment| undefined;\n  @Input() accept: string = '';\n  @Input() removeAllowed = true;\n  @Input() parserName: string = '';\n  @Input() parserReport!: OepaParserReport;\n\n  @Output() fileUploaded: EventEmitter<OepaAttachment> = new EventEmitter();\n  @Output() fileRemoved: EventEmitter<OepaAttachment> = new EventEmitter();\n  @Output() download: EventEmitter<OepaAttachment> = new EventEmitter();\n\n  constructor(private idService: OepaComponentIdService, private fileUtilService: OepaFileUtilService,\n    private modalService: BsModalService) { }\n\n  ngOnInit() {\n    if (this.group) {\n      this.componentId = this.idService.getComponentId(this.group);\n      this.componentId += (this.componentId.length > 0 ? '_' : '') + this.field;\n    }\n  }\n\n  public fileChange(event: any) {\n    this.uploadError = '';\n    const fileList: FileList = event.target.files;\n    if (fileList.length > 0) {\n      const file: File = fileList[0];\n\n      if (this.fileTypeCanBeAccepted(file)) {\n        this.fileUtilService.uploadFile(file).subscribe({\n          next: (attachment: OepaAttachment) => {\n            this.group.controls[this.field].setValue(attachment.userFilename);\n            attachment.fileParser = this.parserName || '';\n            this.fileUploaded.emit(attachment);\n          }, error: err => {\n            this.uploadError = 'Error uploading file ' + err || '';\n          }\n        });\n      } else {\n        this.uploadError = 'Cannot accept this type of file. Please upload a file of type: ' + this.accept;\n      }\n    }\n  }\n\n\n  \n  private fileTypeCanBeAccepted(file:any): boolean {\n    let ok = true;\n    if (this.accept) {\n      const mimeType = this.fileUtilService.mimeTypeForFile(file.name);\n      if (this.accept.indexOf(mimeType) < 0) {\n        ok = false;\n      }\n    }\n    return ok;\n  }\n\n  public removeFile() {\n    const modal: BsModalRef = this.modalService.show(ConfirmationModalComponent, { ignoreBackdropClick: true });\n    (<ConfirmationModalComponent>modal.content).headerText = 'Remove Attachment';\n    (<ConfirmationModalComponent>modal.content).bodyText = 'Do you want to remove the attachment: ' + this.attachment?.userFilename || '<unknown>' + '?';\n    (<ConfirmationModalComponent>modal.content).confirmBtnLabel = 'Yes';\n    (<ConfirmationModalComponent>modal.content).cancelBtnLabel = 'No';\n    (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n      this.group.controls[this.field].setValue(undefined);\n      this.fileRemoved.emit(this.attachment);\n    });\n  }\n\n  public downloadFile(attachment: OepaAttachment) {\n    // let parent component handle download if system file name is not present or empty\n    if (!attachment.systemFilename || attachment.systemFilename.length === 0) {\n      console.log('downloadFile - no file name, deferring to parent');\n      this.download.emit(attachment);\n    } else {\n      console.log('downloading file: ' + attachment.systemFilename);\n      this.fileUtilService.downloadAttachment(attachment).subscribe(\n        data => {\n          const mimeType = this.fileUtilService.mimeTypeForFile(attachment.systemFilename || '');\n          if (mimeType) {\n            this.fileUtilService.downloadFile(data, mimeType);\n          } else {\n            this.uploadError = 'Unable to download file: ' + attachment.userFilename + '. Cannot determine mime type';\n          }\n        }, err => {\n          this.uploadError = 'Error downloading file: ' + attachment.userFilename + ': ' + err;\n        }\n      );\n    }\n  }\n\n  public downloadBlankForm() {\n    if (this.blankForm) {\n      this.downloadFile(this.blankForm);\n    }\n  }\n\n}\n","<form [formGroup]=\"group\">\n  <div *ngIf=\"!attachment || !attachment.userFilename\" class=\"form-group\">\n    <div>\n      <label *ngIf=\"label\">{{label}}</label>\n      <span *ngIf=\"blankFormUrl\">&nbsp;<a href=\"{{blankFormUrl}}\" target=\"_blank\">Blank Form</a></span>\n      <span *ngIf=\"blankForm\">&nbsp;<a href=\"javascript:void(0)\" (click)=\"downloadBlankForm()\">Blank Form</a></span>\n      <div class=\"form-group\">\n      <div class=\"input-group\">\n        <span class=\"input-group-btn\">\n          <label class=\"btn btn-primary btn-file\">\n            Browse&hellip; \n            <input type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\" \n              [id]=\"componentId+'_BrowseBtn'\" [name]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n              [attr.accept]=\"accept ? accept : null\"\n              [disabled]=\"group.controls[field].status === 'DISABLED'\">\n          </label>\n        </span>\n        <input [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\" \n          type=\"text\" class=\"form-control\" placeholder=\"No file chosen\" [id]=\"componentId+'_Input'\" [name]=\"componentId+'_Input'\" readonly>\n        <small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls[field].status === 'INVALID'\">{{errorLabel || label}} is required</small>\n      </div>\n      <!-- dummy input field for validation purposes -->\n      <input type=\"text\" [hidden]=\"true\" [formControlName]=\"field\"/>\n    </div>\n  </div>\n    <div *ngIf=\"uploadError\" class=\"alert alert-danger\" role=\"alert\">{{uploadError}}</div>\n    <div *ngIf=\"parserReport\">\n      <div *ngIf=\"parserReport.successful\" class=\"alert alert-info\" role=\"alert\">Spreadsheet was successfully parsed.</div>\n      <div *ngIf=\"!parserReport.successful\" class=\"alert alert-danger\" role=\"alert\">\n        There are errors in the uploaded spreadsheet:\n        <ul>\n          <li *ngFor=\"let error of parserReport.errors\">{{error.message}}</li>\n        </ul>\n      </div>\n    </div>\n  </div>\n  <div *ngIf=\"attachment && attachment.userFilename\">\n    <div>\n      <label *ngIf=\"label\">{{label}}</label>\n      <div class=\"input-group\">\n        <a (click)=\"downloadFile(attachment)\" [id]=\"componentId+'_DownloadFileLink'\" [name]=\"componentId+'_DownloadFileLink'\" \n          class=\"form-control\">{{attachment.userFilename}}</a>\n        <span *ngIf=\"removeAllowed\" class=\"input-group-btn\">\n        <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveFileBtn'\" [name]=\"componentId+'_RemoveFileBtn'\"\n          (click)=\"removeFile()\" [disabled]=\"group.controls[field].status === 'DISABLED'\">Remove Attachment</button>\n        \n\t\t\t</span>\n      </div>\n    </div>\n  </div>\n</form>","import { Component, OnInit, OnChanges, SimpleChanges, Input, Output, EventEmitter, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\nimport { OepaAttachment, OepaParserReport, OepaFileUtilService, OepaComponentIdService } from 'oepa-common-lib';\nimport { ConfirmationModalComponent } from '../confirmation-modal/confirmation-modal.component';\n\n\n\n@Component({\n  selector: 'oepa-multi-file-upload',\n  templateUrl: './multi-file-upload.component.html',\n  styleUrls: ['./multi-file-upload.component.css']\n})\nexport class MultiFileUploadComponent  implements OnInit, OnChanges {\n  @Input() group!: FormGroup;\n  @Input() field: string = '';\n  @Input() label: string = '';\n  @Input() errorLabel: string = '';\n  @Input() blankForm: OepaAttachment | undefined;\n  @Input() blankFormUrl: string = '';\n  @Input() showValidation = false;\n  @Input() domain = 'application';\n  @Input() attachments: Array<OepaAttachment> = [];\n  @Input() removeAllowed = true;\n\n  @Output() fileUploaded: EventEmitter<OepaAttachment> = new EventEmitter();\n  @Output() fileRemoved: EventEmitter<OepaAttachment> = new EventEmitter();\n  @Output() download: EventEmitter<OepaAttachment> = new EventEmitter();\n\n  @ViewChild('myFileInput', { static: true}) myFileInput: any;\n\n  componentId = 'OepaMultiFileUploadComponent';\n  uploadError: string = '';\n  parserReport!: OepaParserReport;\n\n  constructor(private idService: OepaComponentIdService, private fileUtilService: OepaFileUtilService,\n    private modalService: BsModalService) { }\n\n  ngOnInit() {\n    if (this.group) {\n      this.componentId = this.idService.getComponentId(this.group);\n      this.componentId += (this.componentId.length > 0 ? '_' : '') + this.field;\n    } else {\n      console.log('OOPS No group yet');\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['attachments'] && changes['attachments'] .currentValue) {\n      if (changes['attachments'] .currentValue.length > 0) {\n        // console.log('file changed to: ' + changes['attachments'] .currentValue[0].userFilename);\n        this.group.controls[this.field].setValue(changes['attachments'] .currentValue[0].userFilename);\n      } else {\n        this.group.controls[this.field].setValue('');\n        // console.log('file changed and is now empty');\n      }\n    }\n  }\n\n  public fileChange(event: any) {\n    const fileList: FileList = event.target.files;\n    if (fileList.length > 0) {\n      const file: File = fileList[0];\n      this.fileUtilService.uploadFile(file).subscribe((attachment: OepaAttachment) => {\n        this.fileUploaded.emit(attachment);\n        this.myFileInput.nativeElement.value = '';\n      }, err => {\n        this.uploadError = 'Error uploading file ' + err;\n      });\n    }\n  }\n\n  public removeFile(attachment: OepaAttachment) {\n    const modal: BsModalRef = this.modalService.show(ConfirmationModalComponent, { ignoreBackdropClick: true });\n    (<ConfirmationModalComponent>modal.content).headerText = 'Remove Attachment';\n    (<ConfirmationModalComponent>modal.content).bodyText = 'Do you want to remove the attachment: ' + attachment.userFilename + '?';\n    (<ConfirmationModalComponent>modal.content).confirmBtnLabel = 'Yes';\n    (<ConfirmationModalComponent>modal.content).cancelBtnLabel = 'No';\n    (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n      this.fileRemoved.emit(attachment);\n    });\n  }\n\n  public downloadFile(attachment: OepaAttachment) {\n    if (!attachment.systemFilename || attachment.systemFilename.length === 0) {\n      this.download.emit(attachment);\n    } else {\n      this.fileUtilService.downloadAttachment(attachment).subscribe(\n        data => {\n          // console.log('File download success');\n          const mimeType: string = this.fileUtilService.mimeTypeForFile(attachment.systemFilename || '');\n          if (mimeType) {\n            this.fileUtilService.downloadFile(data, mimeType);\n          } else {\n            this.uploadError = 'Unable to download file: ' + attachment.userFilename + '. Cannot determine mime type';\n          }\n        }, err => {\n          this.uploadError = 'Error downloading file: ' + attachment.userFilename + '. ' + err;\n        }\n      );\n    }\n  }\n\n  public downloadBlankForm() {\n    if (this.blankForm) {\n      this.downloadFile(this.blankForm);\n    }\n  }\n\n}\n","<form [formGroup]=\"group\">\n  <div class=\"form-group\">\n    <div>\n      <label *ngIf=\"label\">{{label}}</label>\n      <span *ngIf=\"blankFormUrl\">&nbsp;<a href=\"{{blankFormUrl}}\" target=\"_blank\">Blank Form</a></span>\n      <span *ngIf=\"blankForm\">&nbsp;<a href=\"\" (click)=\"downloadBlankForm()\">Blank Form</a></span>\n      <div class=\"form-group\">\n      <div class=\"input-group\">\n        <span class=\"input-group-btn\">\n          <label class=\"btn btn-primary btn-file\">\n            Browse&hellip; \n            <input #myFileInput type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\" \n              [id]=\"componentId+'_BrowseBtn'\" [name]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n              [disabled]=\"group.controls[field].status === 'DISABLED'\">\n          </label>\n        </span>\n        <input  [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\"\n          type=\"text\" class=\"form-control\" \n          [placeholder]=\"(!attachments || attachments.length === 0) ? 'No files uploaded' : (attachments.length + ' file(s) uploaded')\"\n          [id]=\"componentId+'_Input'\" [name]=\"componentId+'_Input'\" readonly>\n          <small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls[field].status === 'INVALID'\">{{errorLabel || label}} is required</small>\n      </div>\n      <!-- dummy input field for validation purposes -->\n      <input type=\"text\" [hidden]=\"true\" [formControlName]=\"field\"/>\n    </div>\n  </div>\n    <div *ngIf=\"uploadError\" class=\"alert alert-danger\" role=\"alert\">{{uploadError}}</div>\n    <div *ngIf=\"parserReport\">\n      <div *ngIf=\"!attachments[0] && parserReport.successful\" class=\"alert alert-info\" role=\"alert\">Spreadsheet was successfully parsed.</div>\n      <div [hidden]=\"parserReport.successful\" class=\"alert alert-danger\" role=\"alert\">\n        There are errors in the uploaded spreadsheet:\n        <ul>\n          <li *ngFor=\"let error of parserReport.errors\">{{error.message}}</li>\n        </ul>\n      </div>\n    </div>\n  </div>\n  <div *ngIf=\"attachments && attachments[0]\">\n    <div *ngFor=\"let attachment of attachments; let i=index;\">\n      <div class=\"form-group\">\n        <div class=\"input-group\">\n          <a (click)=\"downloadFile(attachment)\" [id]=\"componentId+'_DownloadFileLink_'+i\" [name]=\"componentId+'_DownloadFileLink_'+i\"\n            class=\"form-control\">{{attachment.userFilename}}</a>\n          <span *ngIf=\"removeAllowed\" class=\"input-group-btn\">\n            <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveFileBtn_'+i\" [name]=\"componentId+'_RemoveFileBtn_'+i\"\n              (click)=\"removeFile(attachment)\" [disabled]=\"group.controls[field].status === 'DISABLED'\">Remove Attachment</button>\n          </span>\n        </div>\n      </div>\n    </div>\n  </div>\n</form>","import { Injectable } from '@angular/core';\nimport { Validators } from '@angular/forms';\n\nimport { OepaFormAddress } from './address/oepa-form-address';\nimport { OepaFormContact } from './contact/oepa-form-contact';\n\n/**\n * Helper service for the OepaAddressComponent.\n */\n@Injectable({\n    providedIn: 'root'\n  })\nexport class OepaFormsService {\n\n    constructor() {\n    }\n\n    /**\n     * Method used by parents of OepaAddressComponent to create the address form.\n     * If an initial address value is available, it should be passed in as an argument,\n     * otherwise an empty object can be passed in.\n     * @param address\n     */\n    public buildAddressForm(address: OepaFormAddress): any {\n        return {\n            line1: [(address.line1 || ''), [Validators.required, Validators.maxLength(50)]],\n            line2: (address.line2 || ''),\n            city: [(address.city || ''), [Validators.required, Validators.maxLength(50)]],\n            state: [(address.state || 'OH'), Validators.required],\n            postalCode: [(address.postalCode || ''), [Validators.required, Validators.pattern('[0-9]{5}')]],\n        };\n    }\n    public buildAddressFormWithCountry(address: OepaFormAddress): any {\n        return {\n            line1: [(address.line1 || ''), [Validators.required, Validators.maxLength(40)]],\n            line2: (address.line2 || ''),\n            city: [(address.city || ''), [Validators.required, Validators.maxLength(25)]],\n            state: [(address.state || 'OH'),         (address.country && address.country === 'USA') ? [Validators.required, Validators.maxLength(2)]:null],\n            postalCode: [(address.postalCode || ''), (address.country && address.country === 'USA') ? [Validators.required, Validators.pattern('[0-9]{5}')]:[Validators.required,Validators.maxLength(10)]],\n            foreignState: [(address.foreignState),   (address.country && address.country !== 'USA') ? [Validators.required, Validators.maxLength(12)]:null],\n            foreignZip: [(address.foreignZip),       (address.country && address.country !== 'USA') ? [Validators.required, Validators.maxLength(10)]:null],\n            country: [(address.country || 'USA'),    (address.country && address.country !== 'USA') ? [Validators.required, Validators.maxLength(20)]:[Validators.maxLength(20)]],\n        };\n    }\n\n    /**\n     * Method used by parents of OepaContactComponent to create the contact form.\n     * If an initial contact value is available, it should be passed in as an argument,\n     * otherwise an empty object can be passed in.\n     * @param contact\n     */\n    public buildContact(contact: OepaFormContact, includeTitle?: boolean): any {\n        if (includeTitle) {\n            return {\n                firstName: [(contact.firstName || ''), [Validators.required, Validators.maxLength(50)]],\n                middleName: [(contact.middleName || '')],\n                lastName: [(contact.lastName || ''), [Validators.required, Validators.maxLength(50)]],\n                title: [(contact.title || ''), [Validators.maxLength(50)]],\n                phoneNumber: [(contact.phoneNumber || ''), [Validators.required]],\n                faxNumber: [(contact.faxNumber || ''), []],\n                emailAddress: [(contact.emailAddress || ''), [Validators.required, Validators.email, Validators.maxLength(254)]],\n            };\n        } else {\n            return {\n                firstName: [(contact.firstName || ''), [Validators.required, Validators.maxLength(50)]],\n                middleName: [(contact.middleName || '')],\n                lastName: [(contact.lastName || ''), [Validators.required, Validators.maxLength(50)]],\n                phoneNumber: [(contact.phoneNumber || ''), [Validators.required]],\n                faxNumber: [(contact.faxNumber || ''), []],\n                emailAddress: [(contact.emailAddress || ''), [Validators.required, Validators.email, Validators.maxLength(254)]],\n            };\n        }\n    }\n    public getCountryCode(countryName:string):string{\n        let country:string='';\n        switch (countryName){\n            case \"Finland\":\n                country = \"FIN\";\n                break;\n            case \"Mexico\":\n                country = 'MEXI';\n                break;\n            case 'Switzerland':\n                country = \"SWZ\";\n                break;\n            case 'USA' :\n                country = \"USA\";\n                break;\n            case 'Japan':\n                country = \"JPN\";\n                break;\n            case 'Canada':\n                country = \"CANA\";\n                break;\n            case 'England':\n                country = \"ENG\";\n                break;\n            case 'Spain':\n                country = \"SPN\";\n                break;\n            case 'South Korea':\n                country = \"SKOR\";\n                break;\n            case 'Germany':\n                country = \"GRMN\";\n                break;\n            case 'Italy':\n                country = \"ITLY\";\n                break;\n            case 'China':\n                country = \"CHN\";\n                break;\n            case 'Jordan':\n                country = \"JORD\";\n                break;\n            case 'Norway':\n                country = \"NRWY\";\n                break;\n            case 'Sweden':\n                country = \"SWD\";\n                break;\n            case 'Australia':\n                country = \"AUS\";\n                break;\n            case 'Austria':\n                country = \"AUST\";\n                break;\n            case 'France':\n                country = \"FRNC\";\n                break;\n            default:\n                break;\n        }\n        return country;\n    }\n    \n    public getCountryName(countryCode:string):string{\n        let country:string='';\n        switch (countryCode){\n            case 'FIN':\n                country = 'Finland' ;\n                break;\n            case 'MEXI':\n                country = \"Mexico\";\n                break;\n            case \"SWZ\":\n                country = 'Switzerland';\n                break;\n            case 'USA' :\n                country = \"USA\";\n                break;\n            case 'JPN':\n                country = 'Japan';\n                break;\n            case \"CANA\":\n                country = 'Canada';\n                break;\n            case \"ENG\":\n                country = 'England' ;\n                break;\n            case \"SPN\":\n                country = 'Spain';\n                break;\n            case \"SKOR\":\n                country = 'South Korea';\n                break;\n            case \"GRMN\":\n                country = 'Germany';\n                break;\n            case \"ITLY\":\n                country = 'Italy';\n                break;\n            case 'CHN':\n                country = \"China\";\n                break;\n            case 'JORD':\n                country = \"Jordan\";\n                break;\n            case 'NRWY':\n                country = \"Norway\";\n                break;\n            case 'SWD':\n                country = \"Sweden\";\n                break;\n            case 'AUS':\n                country = \"Australia\";\n                break;\n            case 'AUST':\n                country = \"Austria\";\n                break;\n            case 'FRNC':\n                country = \"France\";\n                break;\n            default:\n                break;\n        }\n        return country;\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient, HttpHeaders} from '@angular/common/http';\nimport { OEPAPersonFilter } from 'oepa-ebiz-lib';\nimport { OEPAPerson } from 'oepa-ebiz-lib';\nimport { OEPAReference, OEPAProgram } from 'oepa-common-lib';\nimport { OEPAOrganizationFilter } from 'oepa-ebiz-lib';\nimport { OEPAOrganization } from 'oepa-common-lib';\nimport { OEPAEntityFilter } from 'oepa-ebiz-lib';\nimport { OEPAPlace } from 'oepa-ebiz-lib';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class EntityService {\n  private entityURL = '/ebiz/api/v1/entities';\n\n  constructor(private http: HttpClient) { \n\n  }\n\n  public searchPersons(filter: OEPAPersonFilter): Observable<OEPAPerson[]> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.entityURL + '/persons/search'\n    return this.http.post<OEPAPerson[]>(url, filter, { headers: headers, responseType: 'json' });\n  }\n\n  public matchPersons(filter: OEPAPersonFilter): Observable<OEPAPerson[]> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.entityURL + '/persons/match'\n    return this.http.post<OEPAPerson[]>(url, filter, { headers: headers, responseType: 'json' });\n  }\n\n  public createPerson(person: OEPAPerson): Observable<string> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.entityURL + '/persons'\n    return this.http.post<string>(url, person, { headers: headers, responseType: 'json' });\n  }\n\n  public retrievePersonTypes(): Observable<OEPAReference[]> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.entityURL + '/persons/types'\n    return this.http.get<OEPAReference[]>(url, { headers: headers, responseType: 'json' });\n  }\n\n  public searchOrganizations(filter: OEPAOrganizationFilter): Observable<OEPAOrganization[]> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.entityURL + '/organizations/search'\n    return this.http.post<OEPAOrganization[]>(url, filter, { headers: headers, responseType: 'json' });\n  }\n\n  public matchOrganizations(filter: OEPAOrganizationFilter): Observable<OEPAOrganization[]> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.entityURL + '/organizations/match'\n    return this.http.post<OEPAOrganization[]>(url, filter, { headers: headers, responseType: 'json' });\n  }\n\n  public createOrganization(organization: OEPAOrganization): Observable<string> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.entityURL + '/organizations'\n    return this.http.post<string>(url, organization, { headers: headers, responseType: 'json' });\n  }\n\n  public retrieveOrganizationTypes(): Observable<OEPAReference[]> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.entityURL + '/organizations/types'\n    return this.http.get<OEPAReference[]>(url, { headers: headers, responseType: 'json' });\n  }\n\n  public searchPlaces(filter: OEPAEntityFilter): Observable<OEPAPlace[]> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.entityURL + '/places/search'\n    return this.http.post<OEPAPlace[]>(url, filter, { headers: headers, responseType: 'json' });\n  }\n\n  public matchPlaces(filter: OEPAEntityFilter): Observable<OEPAPlace[]> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.entityURL + '/places/match'\n    return this.http.post<OEPAPlace[]>(url, filter, { headers: headers, responseType: 'json' });\n  }\n\n  public createPlace(place: OEPAPlace): Observable<string> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.entityURL + '/places'\n    return this.http.post<string>(url, place, { headers: headers, responseType: 'json' });\n  }\n\n  public retrieveAddressTypes(): Observable<OEPAReference[]> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.entityURL + '/addresses/types'\n    return this.http.get<OEPAReference[]>(url, { headers: headers, responseType: 'json' });\n  }\n  \n  public retrieveTelephoneTypes(): Observable<OEPAReference[]> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.entityURL + '/telephones/types'\n    return this.http.get<OEPAReference[]>(url, { headers: headers, responseType: 'json' });\n  }\n  \n  public retrievePrograms(): Observable<OEPAProgram[]> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.entityURL + '/programs'\n    return this.http.get<OEPAProgram[]>(url, { headers: headers, responseType: 'json' });\n  }\n}\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { EMPTY, Observable, forkJoin } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { OEPAOrganization, OEPAAddress, OEPAPhoneNumber, OEPAProgram } from 'oepa-ebiz-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAOrganizationFilter } from 'oepa-ebiz-lib';\nimport { OEPAReference } from 'oepa-common-lib';\nimport { OepaTableRow } from '../../table/oepa-table-row';\nimport { OepaTableHeader } from '../../table/oepa-table-header';\nimport { OepaTableConfig } from '../../table/oepa-table-config';\nimport { OepaFormsService } from '../../oepa-forms.service';\n\n@Component({\n  selector: 'oepa-organization-create-modal',\n  templateUrl: './organization-create-modal.component.html',\n  styleUrls: ['./organization-create-modal.component.css']\n})\nexport class OrganizationCreateModalComponent implements OnInit {\npublic modalFormGroup!: FormGroup;\n  public errorMessage: string = '';\n  public infoMessage: string = '';\n  public inProgressMsg: string = '';\n  public filter!: OEPAOrganizationFilter;\n  public organizationTypes: OEPAReference[] = [];\n  public programs: OEPAProgram[] = [];\n  public addressTypes: OEPAReference[] = [];\n  public phoneNumberTypes: OEPAReference[] = [];\n  public selectedOrganization: OEPAOrganization | undefined;\n\npublic tableData: Array<OepaTableRow> = [];\n  public tableHeader!: OepaTableHeader;\n  public tableConfig: OepaTableConfig = {\n    rowsPerPage: 5,\n    classNames: ['table-striped', 'table-bordered', 'table-sm']\n  };\n\n\n  @Output() onOrganizationCreated: EventEmitter<OEPAOrganization> = new EventEmitter<OEPAOrganization>();\n  \n  constructor(private fb: FormBuilder, public bsModalRef: BsModalRef, \n    private formService: OepaFormsService,\n    private entityService: EntityService) { }\n\n  ngOnInit() {\n    this.loadReferenceData().subscribe({\n      next: results => {\n      this.createForm();    \n    }, error: err => {\n      this.errorMessage = 'An initialization error occurred: ' + err;\n    }});\n  }\n\n  private loadReferenceData(): Observable<any> {\n    let tasks = [];\n    tasks.push(this.retrieveOrganizationTypes());\n    tasks.push(this.retrievePrograms());\n    tasks.push(this.retrieveAddressTypes());\n    tasks.push(this.retrievePhoneNumberTypes());\n    return forkJoin(tasks);\n  }\n\n  private retrieveOrganizationTypes(): Observable<number> {\n    return this.entityService.retrieveOrganizationTypes().pipe(\n      map(types => {\n      this.organizationTypes = [];\n      if (types && types.length) {\n        types.forEach(type => {\n          this.organizationTypes.push(type);\n        });\n      }\n      return this.organizationTypes.length;\n    }), catchError(err => {\n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n\n  private retrievePrograms(): Observable<number> {\n    return this.entityService.retrievePrograms().pipe(\n      map(programs => {\n      this.programs = [];\n      if (programs && programs.length) {\n        programs.forEach(program => {\n          this.programs.push(program);\n        });\n      }\n      return this.programs.length;\n    }), catchError(err => {\n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n\n  private retrieveAddressTypes(): Observable<number> {\n    return this.entityService.retrieveAddressTypes().pipe(\n      map(types => {\n      this.addressTypes = [];\n      if (types && types.length) {\n        types.forEach(type => {\n          this.addressTypes.push(type);\n        });\n      }\n      return this.addressTypes.length;\n    }), catchError(err => {\n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n\n  private retrievePhoneNumberTypes(): Observable<number> {\n    return this.entityService.retrieveTelephoneTypes().pipe(\n      map(types => {\n      this.phoneNumberTypes = [];\n      if (types && types.length) {\n        types.forEach(type => {\n          this.phoneNumberTypes.push(type);\n        });\n      }\n      return this.phoneNumberTypes.length;\n    }), catchError(err => {\n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n\n    private createForm() {\n    this.modalFormGroup = this.fb.group({\n      orgType: ['RVORG', [Validators.required]],\n      program: [null, [Validators.required]],\n      organizationName: ['', [Validators.required, Validators.maxLength(50)]],\n      addressType: ['BILLI', [Validators.required]],\n      address: this.fb.group(this.formService.buildAddressFormWithCountry({})),\n      areaCode: '',\n      phoneNumberType: ['OFFIC', [Validators.required]],\n      phoneNumber: '',\n      extension: ''\n    });\n    this.modalFormGroup.controls['address'].get('state')?.setValue(undefined);\n    this.modalFormGroup.controls['address'].get('country')?.valueChanges.subscribe(country=>{\n      \n      if(country === 'USA'){\n        this.modalFormGroup.controls['address'].get('state')?.setValidators([Validators.required]);\n        this.modalFormGroup.controls['address'].get('state')?.updateValueAndValidity();\n        this.modalFormGroup.controls['address'].get('postalCode')?.setValidators([Validators.required, Validators.pattern('[0-9]{5}')]);\n        this.modalFormGroup.controls['address'].get('postalCode')?.updateValueAndValidity();\n        this.modalFormGroup.controls['address'].get('foreignState')?.clearValidators();\n        this.modalFormGroup.controls['address'].get('foreignState')?.updateValueAndValidity();\n        this.modalFormGroup.controls['address'].get('foreignZip')?.clearValidators();\n        this.modalFormGroup.controls['address'].get('foreignZip')?.updateValueAndValidity();\n      } else {\n        this.modalFormGroup.controls['address'].get('foreignState')?.setValidators([Validators.required]);\n        this.modalFormGroup.controls['address'].get('foreignState')?.updateValueAndValidity();\n        this.modalFormGroup.controls['address'].get('foreignZip')?.setValidators([Validators.required]);\n        this.modalFormGroup.controls['address'].get('foreignZip')?.updateValueAndValidity();\n        this.modalFormGroup.controls['address'].get('state')?.clearValidators();\n        this.modalFormGroup.controls['address'].get('state')?.updateValueAndValidity();\n        this.modalFormGroup.controls['address'].get('postalCode')?.clearValidators();\n        this.modalFormGroup.controls['address'].get('postalCode')?.updateValueAndValidity();\n      }\n      \n    })\n  }\n\n  private getFilterFromForm(): OEPAOrganizationFilter {\n    let filter: OEPAOrganizationFilter = {\n      name: this.modalFormGroup.get('organizationName')?.value,\n      phoneNumber:this.modalFormGroup.get('phoneNumber')?.value,\n      address: this.modalFormGroup.get('address')?.get('line1')?.value,\n      city: this.modalFormGroup.get('address')?.get('city')?.value,\n      state:this.modalFormGroup.get('address')?.get('country')?.value === 'USA' ? this.modalFormGroup.get('address')?.get('state')?.value:null,\n      zipCode: this.modalFormGroup.get('address')?.get('country')?.value === 'USA' ? this.modalFormGroup.get('address')?.get('postalCode')?.value : this.modalFormGroup.get('address')?.get('foreignZip')?.value,\n      foreignState: this.modalFormGroup.get('address')?.get('country')?.value !== 'USA' ? this.modalFormGroup.get('address')?.get('foreignState')?.value:null,\n      country:this.formService.getCountryCode(this.modalFormGroup.get('address')?.get('country')?.value),\n    };\n    return filter;\n  }\n\n  private getOrganizationFromForm(): OEPAOrganization {\n    let address: OEPAAddress = {\n      addressType: { code: this.modalFormGroup.get('addressType')?.value },\n      program: this.modalFormGroup.get('program')?.value,\n      address: {\n        type:this.modalFormGroup.get('address')?.get('country')?.value !=='USA'? 'FOREN':'' ,\n        addressLine1: this.modalFormGroup.get('address')?.get('line1')?.value,\n        addressLine2: this.modalFormGroup.get('address')?.get('line2')?.value,\n        city: this.modalFormGroup.get('address')?.get('city')?.value,\n        state: this.modalFormGroup.get('address')?.get('country')?.value === 'USA' ? this.modalFormGroup.get('address')?.get('state')?.value:null,\n        zip: this.modalFormGroup.get('address')?.get('country')?.value === 'USA' ? this.modalFormGroup.get('address')?.get('postalCode')?.value:this.modalFormGroup.get('address')?.get('foreignZip')?.value,\n        foreignState: this.modalFormGroup.get('address')?.get('country')?.value !== 'USA'?this.modalFormGroup.get('address')?.get('foreignState')?.value:null,\n        country:this.formService.getCountryCode(this.modalFormGroup.get('address')?.get('country')?.value),\n      }\n    }\n    let phone: OEPAPhoneNumber = {\n      phoneNumberType: { code: this.modalFormGroup.get('phoneNumberType')?.value },\n      program: this.modalFormGroup.get('program')?.value,\n      phoneNumber: {\n        phoneNumber: this.modalFormGroup.get('phoneNumber')?.value\n      }\n    };\n    let organization: OEPAOrganization = {\n      name: this.modalFormGroup.get('organizationName')?.value,\n      organizationType: { code: this.modalFormGroup.get('orgType')?.value },\n      addressList: [ address ],\n      phoneNumberList: [phone ]\n    };\n    return organization;\n  }\n\n  public saveOrganizationAfterSearch() {\n    this.errorMessage = '';\n    this.tableData = [];\n    this.buildTableHeader();\n    let filter = this.getFilterFromForm();\n    this.inProgressMsg = 'Checking to see if Organization exists...';\n    this.entityService.matchOrganizations(filter).subscribe({\n      next: matches => {\n      this.inProgressMsg = '';\n      if (!matches || matches.length === 0) {\n        this.saveOrganization();\n      } else {\n        matches.forEach(organization => {\n          let row = this.convertOrganizationToTableRow(organization);\n          this.tableData.push(row);\n          this.tableData = this.tableData.slice();\n        });\n        this.infoMessage = 'Please check the table above and select an organization from the table if it is the same as the Organization you are attempting to create.';\n      }\n    }, error: err => {\n      this.inProgressMsg = '';\n      this.errorMessage = 'Failed searching for existing organization: ' + err;\n    }});\n  }\n\nprivate buildTableHeader(){\n    this.tableHeader = {\n      columns: [\n          { title: '', id: 'select', sort: 'none', singleSelectColumn: true, className: 'select-col' },\n          { title: 'ID', id: 'id', sort: 'none', filterable: true },\n          { title: 'Type', id: 'type', sort: 'none', filterable: true },\n          { title: 'Name', id: 'name', sort: 'none', filterable: true },\n          { title: 'Address', id: 'address', sort: 'none', filterable: true },\n          { title: 'City', id: 'city', sort: 'none', filterable: true },\n          \n      ]\n  };\n  \n  if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n    this.tableHeader.columns.push({ title: 'State', id: 'state', sort: 'none', filterable: true })\n    this.tableHeader.columns.push({ title: 'Zip Code', id: 'zipCode', sort: 'none', filterable: true })\n  } else {\n    this.tableHeader.columns.push({ title: 'foreignState', id: 'foreignState', sort: 'none', filterable: true })\n    this.tableHeader.columns.push({ title: 'foreignZip', id: 'foreignZip', sort: 'none', filterable: true })\n    this.tableHeader.columns.push({ title: 'country', id: 'country', sort: 'none', filterable: true });\n  }\n\n  }\n    private convertOrganizationToTableRow(organization: OEPAOrganization): OepaTableRow {\n    let cells:Array<any>=[\n        { id: 'id', value: organization.id },\n        { id: 'type', value: organization.organizationType ? organization.organizationType.name : '' },\n        { id: 'name', value: organization.name },\n        { id: 'address', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.addressLine1  : '' },\n        { id: 'city', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.city  : '' }];\n        if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n          cells.push({ id: 'state', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.state  : '' })\n          cells.push({ id: 'zipCode', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.zip  : '' })\n        } else {\n          cells.push({ id: 'foreignState', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.foreignState  : '' })\n          cells.push({ id: 'foreignZip', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.foreignZip  : '' })\n          cells.push({ id: 'country', value: organization.addressList && organization.addressList.length > 0 ? this.formService.getCountryName(organization.addressList[0].address?.country || '')  : '' })\n        }\n\n    return {\n      cells: cells,\n      dataSource: organization,\n      selectable: true\n    }\n  }\n\n  public saveOrganization() {\n    this.errorMessage = '';\n    this.inProgressMsg = 'Creating record for new organization...';\n    let organization = this.getOrganizationFromForm();\n    //console.log(\"organization:\",JSON.stringify(organization))\n    this.entityService.createOrganization(organization).subscribe(organizationID => {\n      //console.log(\"organizationID:\",JSON.stringify(organizationID))\n      if (organizationID) {\n        this.inProgressMsg = '';\n        organization.id = organizationID;\n        this.onOrganizationCreated.emit(organization);\n      }\n    }, err => {\n      this.inProgressMsg = '';\n      this.errorMessage = 'Failed creating Organization: ' + err;\n    });\n  }\n\n  public onRowSelect(event: any) {\n    this.selectedOrganization = event[0].dataSource;\n  }\n\n  public saveSelectedOrganization() {\n    this.onOrganizationCreated.emit(this.selectedOrganization);\n  }\n\n  public getModalFormGroup(name: string) : FormGroup {\n    return this.modalFormGroup.controls[name] as FormGroup;\n  }\n\n  public getModalFormGroupInvalidClass(name: string) : any {\n    return {\n      'is-invalid' : this.modalFormGroup.controls[name].invalid\n    };\n  }\n\n  public getModalFormGroupHasError(name: string, field: string) : boolean {\n    return this.modalFormGroup.controls[name].hasError(field);\n  }\n  \n}\n","<div class=\"modal-header\">\n    <h4 class=\"modal-title pull-left\">Create Organization</h4>\n    <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n        \n    </button>\n</div>\n<div class=\"modal-body\">\n    <div *ngIf=\"!modalFormGroup\">\n        <div class=\"text-center\">Initializing...</div>\n        <div class=\"text-center\"><span class=\"spinner-border text-primary\" role=\"status\"></span></div>\n    </div>\n    <form *ngIf=\"modalFormGroup\" [formGroup]=\"modalFormGroup\">\n        <label>Organization Type</label>\n        <select id=\"orgTypeSelect\" formControlName=\"orgType\" class=\"form-control\"\n        [ngClass]=\"getModalFormGroupInvalidClass('orgType')\">\n            <option *ngFor=\"let t of organizationTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n        </select>\n        <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('orgType','required')\">Organization Type is required</small>\n\n        <label>Program</label>\n        <select id=\"programSelect\" formControlName=\"program\" class=\"form-control\"\n        [ngClass]=\"getModalFormGroupInvalidClass('program')\">\n            <option *ngFor=\"let t of programs\" [ngValue]=\"t\">{{t.name}}</option>\n        </select>\n        <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('program','required')\">Program is required</small>\n\n        <label>Organization Name</label>\n          <input type=\"text\" class=\"form-control\" formControlName=\"organizationName\" id=\"organizationName\" maxlength=\"40\"\n            [ngClass]=\"getModalFormGroupInvalidClass('organizationName')\">  \n          <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('organizationName','required')\">Organization is required</small>\n\n          <label>Phone Number</label>\n          <input type=\"text\" class=\"form-control\" [ngClass]=\"getModalFormGroupInvalidClass('phoneNumber')\"\n              placeholder=\"(xxx) xxx-xxxx\" formControlName=\"phoneNumber\" id=\"PhoneInput\" mask=\"(000) 000-0000\" minlength=\"10\">\n          <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('phoneNumber','required')\">Phone Number is required</small>\n          <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('phoneNumber','minlength')\">Please enter a valid phone number</small>\n          \n          <label>Phone Number Type</label>\n          <select id=\"phoneNumberTypeSelect\" formControlName=\"phoneNumberType\" class=\"form-control\"\n          [ngClass]=\"getModalFormGroupInvalidClass('phoneNumberType')\">\n              <option *ngFor=\"let t of phoneNumberTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n          </select>\n          <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('phoneNumberType','required')\">Phone Number Type is required</small>\n\n        <oepa-address [group]=\"getModalFormGroup('address')\" [showValidation]=\"true\" [cityMaxLength] = \"25\"></oepa-address>   \n\n        <label>Address Type</label>\n        <select id=\"addressTypeSelect\" formControlName=\"addressType\" class=\"form-control\"\n        [ngClass]=\"getModalFormGroupInvalidClass('addressType')\">\n            <option *ngFor=\"let t of addressTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n        </select>\n        <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('addressType','required')\">Address Type is required</small>\n        \n    </form>\n    <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\">\n        <div class=\"card-header\">\n            <b>Matching Organization List&nbsp;</b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n        </div>\n        <div class=\"card-body\">\n            <oepa-table tableId=\"organizationSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\">\n            </oepa-table>\n        </div>\n    </div>\n</div>\n<div class=\"modal-footer d-block\">\n    <div *ngIf=\"inProgressMsg\">\n        <div class=\"alert alert-info\">\n            {{inProgressMsg}}\n        </div>\n    </div>\n    <div *ngIf=\"infoMessage && !inProgressMsg\">\n        <div class=\"alert alert-info\">\n            {{infoMessage}}\n        </div>\n    </div>\n    <div *ngIf=\"errorMessage\">\n        <div class=\"alert alert-danger\">\n            {{errorMessage}}\n        </div>\n    </div>\n    <div class=\"row\">\n        <div class=\"col-sm-12 text-center\">\n            <span *ngIf=\"inProgressMsg\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n            <button *ngIf=\"(!tableData || tableData.length === 0) && !inProgressMsg\" type=\"button\" class=\"btn btn-primary mr-2\"\n                id=\"SaveOrganizationBtn\"\n                [disabled]=\"!modalFormGroup || modalFormGroup.invalid\"\n                (click)=\"saveOrganizationAfterSearch()\">Save</button>\n            <button *ngIf=\"tableData && tableData.length > 0 && !selectedOrganization && !inProgressMsg\" type=\"button\" class=\"btn btn-primary mr-2\"\n                id=\"SaveOrganizationWithoutSearchBtn\"\n                [disabled]=\"modalFormGroup?.invalid\"\n                (click)=\"saveOrganization()\">No Match, Save New Organization</button>\n            <button *ngIf=\"tableData && tableData.length > 0 && selectedOrganization && !inProgressMsg\" type=\"button\" class=\"btn btn-primary mr-2\"\n                id=\"SaveSelectedOrganizationBtn\"\n                [disabled]=\"modalFormGroup?.invalid\"\n                (click)=\"saveSelectedOrganization()\">Use Selected Organization</button>\n            <button id=\"CancelOrganizationBtn\" type=\"button\" class=\"btn btn-primary\"\n                (click)=\"bsModalRef.hide()\">Cancel</button>\n        </div>\n    </div>\n</div>","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { OEPAOrganization, OEPAProgram } from 'oepa-ebiz-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAOrganizationFilter } from 'oepa-ebiz-lib';\nimport { OEPAReference } from 'oepa-common-lib';\nimport { OrganizationCreateModalComponent} from '../organization-create-modal/organization-create-modal.component';\nimport { EMPTY, Observable, forkJoin } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { OepaTableRow } from '../../table/oepa-table-row';\nimport { OepaTableHeader } from '../../table/oepa-table-header';\nimport { OepaTableConfig } from '../../table/oepa-table-config';\nimport { OepaFormsService } from '../../oepa-forms.service';\n@Component({\n  selector: 'oepa-organization-search-modal',\n  templateUrl: './organization-search-modal.component.html',\n  styleUrls: ['./organization-search-modal.component.css']\n})\nexport class OrganizationSearchModalComponent implements OnInit {\n  public modalFormGroup!: FormGroup;\n  public errorMessage: string = '';\n  public inProgressMsg: string = '';\n  public filter!: OEPAOrganizationFilter;\n  public selectedOrganization: OEPAOrganization | undefined;\n  public organizationTypes: OEPAReference[] = [];\n  public openSearchCriteria = true;\n  public allowCreateNew = false;\n  public programs: OEPAProgram[] = [];\n  public addressTypes: OEPAReference[] = [];\n  public phoneNumberTypes: OEPAReference[] = [];\n  public initializing = false;\n\n  public tableData: Array<OepaTableRow> = [] = [];\n  public tableHeader!: OepaTableHeader;\n  public tableConfig: OepaTableConfig = {\n    rowsPerPage: 5,\n    classNames: ['table-striped', 'table-bordered', 'table-sm']\n  };\n\n@Output() onOrganizationSelected: EventEmitter<OEPAOrganization> = new EventEmitter<OEPAOrganization>();\n\n  constructor(private fb: FormBuilder, \n    public bsModalRef: BsModalRef,\n    private modalService: BsModalService,\n    private formService: OepaFormsService,\n    private entityService: EntityService) { \n\n    }\n\n  ngOnInit() {\n    this.initializing = true;\n    this.loadReferenceData().subscribe(results => {\n      this.createForm();\n      this.initializing = false;\n    });\n  }\n\n  private loadReferenceData(): Observable<any> {\n    let tasks = [];\n    tasks.push(this.retrieveOrganizationTypes());\n    tasks.push(this.retrievePrograms());\n    tasks.push(this.retrieveAddressTypes());\n    tasks.push(this.retrievePhoneNumberTypes());\n    return forkJoin(tasks);\n  }\n\n  private retrievePrograms(): Observable<number> {\n    return this.entityService.retrievePrograms().pipe(\n      map(programs => {\n      this.programs = [];\n      if (programs && programs.length) {\n        programs.forEach(program => {\n          this.programs.push(program);\n        });\n      }\n      return this.programs.length;\n    }), catchError(err => {\n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n\n  private retrieveOrganizationTypes(): Observable<number> {\n    return this.entityService.retrieveOrganizationTypes().pipe(map(subTypes => {\n      this.organizationTypes = subTypes;\n      return this.organizationTypes ? this.organizationTypes.length : 0;\n    }), catchError(err => {\n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n\n  private retrieveAddressTypes(): Observable<number> {\n    return this.entityService.retrieveAddressTypes().pipe(\n      map(types => {\n      this.addressTypes = [];\n      if (types && types.length) {\n        types.forEach(type => {\n          this.addressTypes.push(type);\n        });\n      }\n      return this.addressTypes.length;\n    }), catchError(err => {\n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n\n  private retrievePhoneNumberTypes(): Observable<number> {\n    return this.entityService.retrieveTelephoneTypes().pipe(\n      map(types => {\n      this.phoneNumberTypes = [];\n      if (types && types.length) {\n        types.forEach(type => {\n          this.phoneNumberTypes.push(type);\n        });\n      }\n      return this.phoneNumberTypes.length;\n    }), catchError(err => {\n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n  \n  private createForm() {\n    this.modalFormGroup = this.fb.group({\n      id: '',\n      secondaryID: '',\n      subType: null,\n      programID: '',\n      name: '',\n      addressType: '', \n      address: this.fb.group(this.formService.buildAddressFormWithCountry({})),\n      phoneNumberType: '',\n      areaCode: '',\n      phoneNumber: '',\n      extension: ''\n    });\n    this.modalFormGroup.controls['address'].get('state')?.setValue(undefined);\n  }\n\n  private getFilterFromForm(): OEPAOrganizationFilter {\n    let filter: OEPAOrganizationFilter = {\n      id: this.modalFormGroup.get('id')?.value,\n      programID: this.modalFormGroup.get('programID')?.value,\n      organizationType: this.modalFormGroup.get('subType')?.value,\n      secondaryID: this.modalFormGroup.get('secondaryID')?.value,\n      name: this.modalFormGroup.get('name')?.value,\n      addressTypeCode: this.modalFormGroup.get('addressType')?.value,\n      address: this.modalFormGroup.get('address')?.get('line1')?.value,\n      city: this.modalFormGroup.get('address')?.get('city')?.value,\n      state: this.modalFormGroup.get('address')?.get('country')?.value === 'USA' ? this.modalFormGroup.get('address')?.get('state')?.value:null,\n      zipCode: this.modalFormGroup.get('address')?.get('country')?.value === 'USA' ? this.modalFormGroup.get('address')?.get('postalCode')?.value : this.modalFormGroup.get('address')?.get('foreignZip')?.value,\n      foreignState:this.modalFormGroup.get('address')?.get('country')?.value !== 'USA' ? this.modalFormGroup.get('address')?.get('foreignState')?.value:null,\n      country: this.formService.getCountryCode(this.modalFormGroup.get('address')?.get('country')?.value),\n      phoneTypeCode: this.modalFormGroup.get('phoneNumberType')?.value,\n      phoneAreaCode: this.modalFormGroup.get('areaCode')?.value,\n      phoneNumber: this.modalFormGroup.get('phoneNumber')?.value,\n      phoneExtension: this.modalFormGroup.get('extension')?.value,\n    };\n    return filter;\n  }\n\n  \n\n  private filterIsEmpty(filter: OEPAOrganizationFilter): boolean {\n    let empty = true;\n    if (filter.id && filter.id.length > 0) {\n      empty = false;\n    }\n    if (filter.organizationType) {\n      empty = false;\n    }\n    if (filter.programID) {\n      empty = false;\n    }\n    if (filter.secondaryID && filter.secondaryID.length > 0) {\n      empty = false;\n    }\n    if (filter.name && filter.name.length > 0) {\n      empty = false;\n    }\n    if (filter.addressTypeCode) {\n      empty = false;\n    }\n    if (filter.address && filter.address.length > 0) {\n      empty = false;\n    }\n    if (filter.city && filter.city.length > 0) {\n      empty = false;\n    }\n    if (filter.zipCode && filter.zipCode.length > 0) {\n      empty = false;\n    }\n    \n    if ( filter.country && filter.country.length > 0) {\n      empty = false;\n    }\n    \n    if (filter.phoneTypeCode) {\n      empty = false;\n    }\n    if (filter.phoneAreaCode && filter.phoneAreaCode.length > 0) {\n      empty = false;\n    }\n    if (filter.phoneNumber && filter.phoneNumber.length > 0) {\n      empty = false;\n    }\n    if (filter.phoneExtension && filter.phoneExtension.length > 0) {\n      empty = false;\n    }\n    return empty;\n  }\n\n  public submitSearch() {\n    this.errorMessage = '';\n    let filter = this.getFilterFromForm();\n    if (this.filterIsEmpty(filter)) {\n      this.errorMessage = 'Please specify search criteria';\n      return;\n    }\n    this.inProgressMsg = 'Searching...';\n    this.tableData = [];\n    this.buildTableHeader();\n    this.entityService.searchOrganizations(filter).subscribe(organizations => {\n      this.inProgressMsg = '';\n      if (organizations && organizations.length > 0) {\n        this.openSearchCriteria = false;\n        organizations.forEach(organization => {\n          let row = this.convertOrganizationToTableRow(organization);\n          this.tableData.push(row);\n          this.tableData = this.tableData.slice();\n        });\n      } else {\n        this.openSearchCriteria = true;\n        this.errorMessage = 'No organizations found matching search criteria';\n      }\n      this.allowCreateNew = true;\n    }, err => {\n      this.inProgressMsg = '';\n      this.errorMessage = 'Search Failed: ' + err;\n    });\n  }\n  private buildTableHeader(){\n    this.tableHeader = {\n      columns: [\n          { title: '', id: 'select', sort: 'none', singleSelectColumn: true, className: 'select-col' },\n          { title: 'ID', id: 'id', sort: 'none', filterable: true },\n          { title: 'Type', id: 'type', sort: 'none', filterable: true },\n          { title: 'Name', id: 'name', sort: 'none', filterable: true },\n          { title: 'Address', id: 'address', sort: 'none', filterable: true },\n          { title: 'City', id: 'city', sort: 'none', filterable: true },\n          \n      ]\n  };\n  \n  if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n    this.tableHeader.columns.push({ title: 'State', id: 'state', sort: 'none', filterable: true })\n    this.tableHeader.columns.push({ title: 'Zip Code', id: 'zipCode', sort: 'none', filterable: true })\n  } else {\n    this.tableHeader.columns.push({ title: 'foreignState', id: 'foreignState', sort: 'none', filterable: true })\n    this.tableHeader.columns.push({ title: 'foreignZip', id: 'foreignZip', sort: 'none', filterable: true })\n    this.tableHeader.columns.push({ title: 'country', id: 'country', sort: 'none', filterable: true });\n  }\n  \n  this.tableHeader.columns.push({ title: 'Phone', id: 'phone', sort: 'none', filterable: true });\n\n  }\n  private convertOrganizationToTableRow(organization: OEPAOrganization): OepaTableRow {\n    \n      let cells:Array<any>=[\n        { id: 'id', value: organization.id },\n        { id: 'type', value: organization.organizationType ? organization.organizationType.name : '' },\n        { id: 'name', value: organization.name },\n        { id: 'address', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.addressLine1  : '' },\n        { id: 'city', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.city  : '' }];\n        if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n          cells.push({ id: 'state', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.state  : '' })\n          cells.push({ id: 'zipCode', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.zip  : '' })\n        } else {\n          cells.push({ id: 'foreignState', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.foreignState  : '' })\n          cells.push({ id: 'foreignZip', value: organization.addressList && organization.addressList.length > 0 ? organization.addressList[0].address?.foreignZip  : '' })\n          cells.push({ id: 'country', value: organization.addressList && organization.addressList.length > 0 ? this.formService.getCountryName(organization.addressList[0].address?.country || '')  : '' })\n        }\n        \n        cells.push({ id: 'phone', value: organization.phoneNumberList && organization.phoneNumberList.length > 0 ? organization.phoneNumberList[0].phoneNumber?.phoneNumber?.replace(/^(\\d{0,3})(\\d{0,3})(\\d{0,4})/, '($1) $2-$3') : '' })\n    return {\n      cells: cells,\n      dataSource: organization,\n      selectable: true\n    }\n  }\n\n  public resetSearch() {\n    this.openSearchCriteria = true;\n    this.modalFormGroup.reset();\n    this.modalFormGroup.controls['address'].get('country')?.setValue('USA');\n    this.tableData = [];\n  }\n\n  public onRowSelect(event: any) {\n    this.selectedOrganization = event[0].dataSource;\n  }\n\n  public save() {\n    this.onOrganizationSelected.emit(this.selectedOrganization);\n    //this.bsModalRef.hide();\n  }\n  public createNewOrganization() {\n    let modal = this.modalService.show(OrganizationCreateModalComponent, { class: 'modal-xl', ignoreBackdropClick: true });\n    (<OrganizationCreateModalComponent>modal.content).onOrganizationCreated.subscribe((organization: OEPAOrganization) => {\n      modal.hide();\n      this.onOrganizationSelected.emit(organization);\n    });\n  }\n\n  public getModalFormGroup(name: string) : FormGroup {\n    return this.modalFormGroup.controls[name] as FormGroup;\n  }\n}\n","<div class=\"modal-header\">\n    <h4 class=\"modal-title pull-left\">Advanced Organization Search</h4>\n    <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n        \n    </button>\n</div>\n<div class=\"modal-body\">\n        <accordion>\n            <accordion-group panelClass=\"panel-info\" #searchGroup [isOpen]=\"openSearchCriteria\">\n                <div accordion-heading>\n                    <div class=\"row\">\n                        <div class=\"col-sm-6\">\n                            <i class=\"float-xs-right bi\" id=\"organizationSearchCriteria\" name=\"organizationSearchCriteria\" \n                            [ngClass]=\"{'bi-chevron-down': searchGroup?.isOpen, 'bi-chevron-right': !searchGroup?.isOpen}\"></i>\n                                <b>Organization Search Criteria</b>\n                        </div>\n                    </div>\n                </div>\n                <div *ngIf=\"initializing\">\n                    <span class=\"spinner-border text-primary\" role=\"status\"></span>\n                    Initializing...\n                </div>\n                <form *ngIf=\"!initializing\" [formGroup]=\"modalFormGroup\">  \n                <div class=\"row\">\n                    <div class=\"col-md-12\">\n                        <div class=\"form-group\">      \n                             <label>Program</label>\n                             <select id=\"programSelect\" formControlName=\"programID\" class=\"form-control\">\n                                <option *ngFor=\"let t of programs\" [ngValue]=\"t.id\">{{t.name}}</option>\n                            </select>\n                        </div>\n                    </div>\n                        <div class=\"col-md-6\">\n                            <div class=\"form-group\">\n                                <label>Organization Type</label>\n                                <select id=\"subTypeSelect\" formControlName=\"subType\" class=\"form-control\">\n                                    <option *ngFor=\"let t of organizationTypes\" [ngValue]=\"t\">{{t.name}}</option>\n                                </select>\n                            </div>\n                        </div>\n                    <div class=\"col-md-6\">\n                        <div class=\"form-group\">\n                            <label>Organization ID</label>\n                            <input type=\"search\" mask=\"999999999\" class=\"form-control\" id=\"organizationIDInput\" formControlName=\"id\">\n                        </div>\n                    </div>\n                    <div class=\"col-md-6\">\n                        <div class=\"form-group\">\n                            <label>Organization Name</label>\n                            <input type=\"search\" class=\"form-control\" id=\"organizationNameInput\" formControlName=\"name\" maxlength=\"40\">\n                        </div>\n                    </div>\n                    <div class=\"col-md-6\">\n                        <div class=\"form-group\">\n                            <label>Secondary ID</label>\n                            <input type=\"search\" class=\"form-control\" id=\"secondaryIDInput\" formControlName=\"secondaryID\">\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row\">\n                    <div class=\"col-md-12\">\n                        <div class=\"form-group\">\n                            <label>Address Type</label>\n                            <select id=\"addressTypeSelect\" formControlName=\"addressType\" class=\"form-control\">\n                                <option *ngFor=\"let t of addressTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n                            </select>\n                        </div>\n                    </div>\n                </div>\n                <oepa-address [group]=\"getModalFormGroup('address')\" [isSearch]=\"true\"\n                    addressOneLabel=\"Address\" [hideLine2]=\"true\"></oepa-address>\n                <div class=\"row\">\n                    <div class=\"col-md-4\">\n                        <div class=\"form-group\">\n                            <label>Phone Number Type</label>\n                            <select id=\"phoneNumberTypeSelect\" formControlName=\"phoneNumberType\" class=\"form-control\">\n                                <option *ngFor=\"let t of phoneNumberTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n                            </select>\n                        </div>\n                    </div>\n                    <div class=\"col-md-2\">\n                        <div class=\"form-group\">\n                            <label>Area Code</label>\n                            <input type=\"search\" mask=\"999\" class=\"form-control\" id=\"areaCodeInput\" formControlName=\"areaCode\">\n                        </div>\n                    </div>\n                    <div class=\"col-md-4\">\n                        <div class=\"form-group\">\n                            <label>Phone Number</label>\n                            <input type=\"search\" mask=\"999-9999\" class=\"form-control\" id=\"phoneNumberInput\" formControlName=\"phoneNumber\">\n                        </div>\n                    </div>\n                    <div class=\"col-md-2\">\n                        <div class=\"form-group\">\n                            <label>Extension</label>\n                            <input type=\"search\" mask=\"9999\" class=\"form-control\" id=\"extensionInput\" formControlName=\"extension\">\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row\">\n                    <div class=\"col-sm-12 text-center\">\n                        <span *ngIf=\"inProgressMsg\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n                        <button  *ngIf=\"!inProgressMsg\" type=\"submit\" class=\"btn btn-primary mr-2\" id=\"submitSearchBtn\" (click)=\"submitSearch()\">Search</button>\n                        <button id=\"resetSearchBtn\" type=\"button\" class=\"btn btn-primary\" (click)=\"resetSearch()\">Reset</button>\n                    </div>\n                </div>\n            </form>\n            </accordion-group>\n        </accordion>\n    <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\">\n        <div class=\"card-header\">\n            <b>Organization List&nbsp;</b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n        </div>\n        <div class=\"card-body\">\n            <oepa-table tableId=\"organizationSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\">\n            </oepa-table>\n        </div>\n    </div>\n</div>\n<div class=\"modal-footer d-block\">\n    <div *ngIf=\"errorMessage\">\n        <div class=\"alert alert-danger\">\n            {{errorMessage}}\n        </div>\n    </div>\n    <div *ngIf=\"inProgressMsg\">\n        <div class=\"alert alert-info\">\n            {{inProgressMsg}}\n        </div>\n    </div>\n    <div class=\"row\">\n        <div class=\"col-sm-12 text-center\">\n            <button type=\"button\" class=\"btn btn-primary mr-2\"\n                id=\"SaveOrganizationBtn\"\n                [disabled]=\"!selectedOrganization || inProgressMsg\"\n                (click)=\"save()\">Save</button>\n\t\t\t<button *ngIf=\"allowCreateNew\" type=\"button\" class=\"btn btn-primary mr-2\"\n                id=\"CreateOrganizationButton\"\n                (click)=\"createNewOrganization()\">Create New Organization</button>\n            <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n                (click)=\"bsModalRef.hide()\">Cancel</button>\n        </div>\n    </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { TypeaheadMatch } from 'ngx-bootstrap/typeahead';\nimport { FormGroup } from '@angular/forms';\nimport { EMPTY, Observable } from 'rxjs';\nimport { mergeMap, map, catchError } from 'rxjs/operators';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { OepaComponentIdService } from 'oepa-common-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAOrganization } from 'oepa-ebiz-lib';\nimport { OEPAOrganizationFilter } from 'oepa-ebiz-lib';\nimport { OrganizationSearchModalComponent } from '../organization-search-modal/organization-search-modal.component';\n\n@Component({\n  selector: 'oepa-organization-search-input',\n  templateUrl: './organization-search-input.component.html',\n  styleUrls: ['./organization-search-input.component.css']\n})\nexport class OrganizationSearchInputComponent implements OnInit {\n  nameSearch = '';\n  nameSource: Observable<OEPAOrganization[]>;\n  componentId: string = '';\n  errorMessage: string = '';\n  searching: boolean = false;\n\n  @Input('group') group!: FormGroup;\n  @Input('organizationID') organizationID: string = '';\n  @Input('field') field: string = '';\n  @Input('title') title: string = 'Organization';\n  @Input('errorMessageAddendum') errorMessageAddendum = '';\n  @Input('rowLayout') rowLayout = false;\n\n  @Output('organizationSelected') organizationSelected: EventEmitter<OEPAOrganization> = new EventEmitter<OEPAOrganization>();\n\n  constructor(private idService: OepaComponentIdService,\n    private modalService: BsModalService,\n    private entityService: EntityService) {\n      this.nameSource = new Observable((observer) => {\n        observer.next(this.group.get(this.field)?.value);\n      }).pipe(mergeMap((token: any) => this.searchOrganizations(token)));\n     }\n\n  ngOnInit() {\n    this.componentId = this.idService.getComponentId(this.group);\n    if (this.organizationID) {\n      const filter: OEPAOrganizationFilter = {\n        id: this.organizationID\n      }\n      this.searching = true;\n      this.entityService.searchOrganizations(filter).subscribe(organizationList => {\n        if (organizationList && organizationList.length == 1) {\n          this.loadOrganizationInForm(organizationList[0]);\n        } else {\n          this.errorMessage = 'An initialization error occurred: Zero or multiple organizations wih id: ' + this.organizationID;\n        }\n        this.searching = false;\n      }, err => {\n        this.searching = false;\n        this.errorMessage = 'An initialization error occurred: ' + err;\n      });\n    }\n    this.group.get(this.field)?.valueChanges.subscribe(value => {\n      if (!value || value === '') {\n        this.organizationSelected.emit(undefined);\n      }\n    });\n  }\n\n  public onOrganizationSelect(e: TypeaheadMatch) {\n    if (e.item) {\n      this.loadOrganizationInForm(e.item);\n      this.organizationSelected.emit(e.item);\n    }\n  }\n\n  private loadOrganizationInForm(organization: OEPAOrganization) {\n    let data: any = {};\n    data[this.field] = organization.name ? (organization.name + ' (' + organization.id + ')') : '';\n    if (organization) {\n      this.group.patchValue(data);\n    }\n  }\n\n  private searchOrganizations(token: any): Observable<OEPAOrganization[]> {\n    this.errorMessage = '';\n    this.searching = true;\n    const filter: OEPAOrganizationFilter = {\n      name: isNaN(token) ? token : undefined,\n      id: isNaN(token) ? undefined : token\n    }\n    return this.entityService.searchOrganizations(filter).pipe(\n      map((organizations) => {\n        this.searching = false;\n        return organizations;\n      }), catchError(err => {\n        this.searching = false;\n        this.errorMessage = 'Search failed: ' + err;\n        return EMPTY;\n      })\n    );\n  }\n\n  public advancedSearch() {\n    let modal = this.modalService.show(OrganizationSearchModalComponent, {class: 'modal-xl',ignoreBackdropClick: true});\n    (<OrganizationSearchModalComponent>modal.content).onOrganizationSelected.subscribe(organization => {\n      this.loadOrganizationInForm(organization);\n      this.organizationSelected.emit(organization);\n      modal.hide();\n    });\n  }\n\n}\n","<div [formGroup]=\"group\" class=\"form-group\" [ngClass]=\"{'row text-right': rowLayout}\">\n    <ng-template #organizationTemplate let-model=\"item\" let-index=\"index\">\n        <h5>{{ (model.name || '') +\n            (model.addressList && model.addressList[0] ? (' - ' + model.addressList[0].address.addressLine1 + ', ' + model.addressList[0].address.city\n                                     + model.addressList[0].address.state) : '') + ' (' + model.id + ')' }}</h5>\n    </ng-template>\n    <label [ngClass]=\"{'col-sm-4 col-form-label': rowLayout}\">\n        {{title}}\n        <span *ngIf=\"searching\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n        <a href=\"javascript:void(0)\" (click)=\"advancedSearch()\">Advanced Search</a>\n    </label>\n    <div [ngClass]=\"{'col-sm-8': rowLayout}\">\n        <input class=\"form-control\" type=\"search\" [ngClass]=\"{'is-invalid':group.controls[field]?.status === 'INVALID'}\"\n            [formControlName]=\"field\" [typeahead]=\"nameSource\" [typeaheadScrollable]=\"true\"\n            (typeaheadOnSelect)=\"onOrganizationSelect($event)\" [id]=\"componentId + '_OrganizationSearch'\"\n            [typeaheadItemTemplate]=\"organizationTemplate\" [typeaheadMinLength]=\"3\" placeholder=\"Search Organization\">\n        <small class=\"invalid-feedback\" *ngIf=\"group.controls[field]?.hasError('required')\">{{title}} is required {{errorMessageAddendum}}</small>\n    </div>\n</div>\n<div *ngIf=\"errorMessage\" class=\"alert alert-danger\">\n    {{errorMessage}}\n</div>","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { EMPTY, Observable, forkJoin } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { OEPAPerson, OEPAAddress, OEPAPhoneNumber, OEPAProgram } from 'oepa-ebiz-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAPersonFilter } from 'oepa-ebiz-lib';\nimport { OEPAReference } from 'oepa-common-lib';\nimport { OepaTableRow } from '../../table/oepa-table-row';\nimport { OepaTableHeader } from '../../table/oepa-table-header';\nimport { OepaTableConfig } from '../../table/oepa-table-config';\nimport { OepaFormsService } from '../../oepa-forms.service';\n\n@Component({\n  selector: 'oepa-person-create-modal',\n  templateUrl: './person-create-modal.component.html',\n  styleUrls: ['./person-create-modal.component.css']\n})\nexport class PersonCreateModalComponent implements OnInit {\n  public modalFormGroup!: FormGroup;\n  public errorMessage: string = '';\n  public infoMessage: string = '';\n  public inProgressMsg: string = '';\n  public filter!: OEPAPersonFilter;\n  public selectedPerson: OEPAPerson | undefined;\n  public personSubTypes: OEPAReference[] = [];\n  public programs: OEPAProgram[] = [];;\n  public addressTypes: OEPAReference[] = [];;\n  public phoneNumberTypes: OEPAReference[] = [];;\n\n  public tableData: Array<OepaTableRow> = [];\n  public tableHeader!: OepaTableHeader;\n\n  public tableConfig: OepaTableConfig = {\n    rowsPerPage: 5,\n    classNames: ['table-striped', 'table-bordered', 'table-sm']\n  };\n\n\n  @Output() onPersonCreated: EventEmitter<OEPAPerson> = new EventEmitter<OEPAPerson>();\n\n  constructor(private fb: FormBuilder, public bsModalRef: BsModalRef, \n    private formService: OepaFormsService,\n    private entityService: EntityService) { }\n\n  ngOnInit() {\n    this.loadReferenceData().subscribe({\n      next: results => {\n      this.createForm();    \n    }, error: err => {\n      this.errorMessage = 'An initialization error occurred: ' + err;\n    }});\n  }\n\n  private loadReferenceData(): Observable<any> {\n    let tasks = [];\n    tasks.push(this.retrievePersonTypes());\n    tasks.push(this.retrievePrograms());\n    tasks.push(this.retrieveAddressTypes());\n    tasks.push(this.retrievePhoneNumberTypes());\n    return forkJoin(tasks);\n  }\n\n  private retrievePersonTypes(): Observable<number> {\n    return this.entityService.retrievePersonTypes().pipe(\n      map(types => {\n      this.personSubTypes = [];\n      if (types && types.length) {\n        types.forEach(type => {\n          this.personSubTypes.push(type);\n        });\n      }\n      return this.personSubTypes.length;\n    }), catchError(err => {\n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n\n  private retrievePrograms(): Observable<number> {\n    return this.entityService.retrievePrograms().pipe(\n      map(programs => {\n      this.programs = [];\n      if (programs && programs.length) {\n        programs.forEach(program => {\n          this.programs.push(program);\n        });\n      }\n      return this.programs.length;\n    }), catchError(err => {\n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n\n  private retrieveAddressTypes(): Observable<number> {\n    return this.entityService.retrieveAddressTypes().pipe(\n      map(types => {\n      this.addressTypes = [];\n      if (types && types.length) {\n        types.forEach(type => {\n          this.addressTypes.push(type);\n        });\n      }\n      return this.addressTypes.length;\n    }), catchError(err => {\n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n\n  private retrievePhoneNumberTypes(): Observable<number> {\n    return this.entityService.retrieveTelephoneTypes().pipe(\n      map(types => {\n      this.phoneNumberTypes = [];\n      if (types && types.length) {\n        types.forEach(type => {\n          this.phoneNumberTypes.push(type);\n        });\n      }\n      return this.phoneNumberTypes.length;\n    }), catchError(err => {\n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n\n    private createForm() {\n    this.modalFormGroup = this.fb.group({\n      personType: ['RVPER', [Validators.required]],\n      program: [null, [Validators.required]],\n      contact: this.fb.group({ \n          firstName: ['', [Validators.required, Validators.maxLength(50)]],\n          middleName: [''],\n          lastName: ['', [Validators.required, Validators.maxLength(50)]],\n          phoneNumber: [''],\n          faxNumber: ['', []],\n          emailAddress: ['', [Validators.email, Validators.maxLength(254)]]\n      }),\n      addressType: ['BILLI', [Validators.required]],\n      address: this.fb.group(this.formService.buildAddressFormWithCountry({})),\n      areaCode: '',\n      phoneNumberType: ['OFFIC', [Validators.required]],\n      phoneNumber: '',\n      extension: ''\n    });\n    this.modalFormGroup.controls['address'].get('state')?.setValue(undefined);\n   \n    this.modalFormGroup.controls['address'].get('country')?.valueChanges.subscribe(country=>{\n      \n      if(country === 'USA'){\n        this.modalFormGroup.controls['address'].get('state')?.setValidators([Validators.required]);\n        this.modalFormGroup.controls['address'].get('state')?.updateValueAndValidity();\n        this.modalFormGroup.controls['address'].get('postalCode')?.setValidators([Validators.required, Validators.pattern('[0-9]{5}')]);\n        this.modalFormGroup.controls['address'].get('postalCode')?.updateValueAndValidity();\n        this.modalFormGroup.controls['address'].get('foreignState')?.clearValidators();\n        this.modalFormGroup.controls['address'].get('foreignState')?.updateValueAndValidity();\n        this.modalFormGroup.controls['address'].get('foreignZip')?.clearValidators();\n        this.modalFormGroup.controls['address'].get('foreignZip')?.updateValueAndValidity();\n      } else {\n        this.modalFormGroup.controls['address'].get('foreignState')?.setValidators([Validators.required]);\n        this.modalFormGroup.controls['address'].get('foreignState')?.updateValueAndValidity();\n        this.modalFormGroup.controls['address'].get('foreignZip')?.setValidators([Validators.required]);\n        this.modalFormGroup.controls['address'].get('foreignZip')?.updateValueAndValidity();\n        this.modalFormGroup.controls['address'].get('state')?.clearValidators();\n        this.modalFormGroup.controls['address'].get('state')?.updateValueAndValidity();\n        this.modalFormGroup.controls['address'].get('postalCode')?.clearValidators();\n        this.modalFormGroup.controls['address'].get('postalCode')?.updateValueAndValidity();\n      }\n      \n    })\n    \n  }\n\n  private getFilterFromForm(): OEPAPersonFilter {\n    let filter: OEPAPersonFilter = {\n      firstName: this.modalFormGroup.get('contact')?.get('firstName')?.value,\n      middleName: this.modalFormGroup.get('contact')?.get('middleName')?.value,\n      lastName: this.modalFormGroup.get('contact')?.get('lastName')?.value,\n      address: this.modalFormGroup.get('address')?.get('line1')?.value,\n      city: this.modalFormGroup.get('address')?.get('city')?.value,\n      state: this.modalFormGroup.get('address')?.get('country')?.value ==='USA' ? this.modalFormGroup.get('address')?.get('state')?.value:null,\n      zipCode: this.modalFormGroup.get('address')?.get('country')?.value ==='USA' ? this.modalFormGroup.get('address')?.get('postalCode')?.value:this.modalFormGroup.get('address')?.get('foreignZip')?.value,\n      foreignState:this.modalFormGroup.get('address')?.get('country')?.value !=='USA' ? this.modalFormGroup.get('address')?.get('foreignState')?.value:null,\n      country:this.formService.getCountryCode(this.modalFormGroup.get('address')?.get('country')?.value),\n    };\n    return filter;\n  }\n\n  private getPersonFromForm(): OEPAPerson {\n    let address: OEPAAddress = {\n      addressType: {code: this.modalFormGroup.get('addressType')?.value },\n      program: this.modalFormGroup.get('program')?.value,\n      address: {\n        type:this.modalFormGroup.get('address')?.get('country')?.value !=='USA'? 'FOREN':'' ,\n        addressLine1: this.modalFormGroup.get('address')?.get('line1')?.value,\n        addressLine2: this.modalFormGroup.get('address')?.get('line2')?.value,\n        city: this.modalFormGroup.get('address')?.get('city')?.value,\n        state: this.modalFormGroup.get('address')?.get('country')?.value ==='USA' ? this.modalFormGroup.get('address')?.get('state')?.value:null,\n        zip: this.modalFormGroup.get('address')?.get('country')?.value ==='USA' ? this.modalFormGroup.get('address')?.get('postalCode')?.value:this.modalFormGroup.get('address')?.get('foreignZip')?.value,\n        foreignState: this.modalFormGroup.get('address')?.get('country')?.value !=='USA' ? this.modalFormGroup.get('address')?.get('foreignState')?.value:null,\n        country:this.formService.getCountryCode(this.modalFormGroup.get('address')?.get('country')?.value),\n      }\n    }\n    let phone: OEPAPhoneNumber = {\n      phoneNumberType: { code: this.modalFormGroup.get('phoneNumberType')?.value },\n      program: this.modalFormGroup.get('program')?.value,\n      phoneNumber: {\n        phoneNumber: this.modalFormGroup.get('contact')?.get('phoneNumber')?.value\n      }\n    };\n    let person: OEPAPerson = {\n      personType: {code: this.modalFormGroup.get('personType')?.value },\n      firstName: this.modalFormGroup.get('contact')?.get('firstName')?.value,\n      middleName: this.modalFormGroup.get('contact')?.get('middleName')?.value,\n      lastName: this.modalFormGroup.get('contact')?.get('lastName')?.value,\n      addressList: [ address ],\n      phoneNumberList: [phone ]\n    };\n    return person;\n  }\n\n  public savePersonAfterSearch() {\n    this.errorMessage = '';\n    this.tableData = [];\n    this.buildTableHeader();\n    let filter = this.getFilterFromForm();\n    this.inProgressMsg = 'Checking to see if person exists...';\n    this.entityService.matchPersons(filter).subscribe(matches => {\n      this.inProgressMsg = '';\n      if (!matches || matches.length === 0) {\n        this.savePerson();\n      } else {\n        matches.forEach(person => {\n          let row = this.convertPersonToTableRow(person);\n          this.tableData.push(row);\n          this.tableData = this.tableData.slice();\n        });\n        this.infoMessage = 'Please check the table above and select a person from the table if it is the same as the person you are attempting to create.';\n      }\n    }, err => {\n      this.inProgressMsg = '';\n      this.errorMessage = 'Failed searching for existing person: ' + err;\n    });\n  }\nprivate buildTableHeader(){\n    this.tableHeader = {\n      columns: [\n          { title: '', id: 'select', sort: 'none', singleSelectColumn: true, className: 'select-col' },\n          { title: 'ID', id: 'id', sort: 'none', filterable: true },\n          { title: 'Type', id: 'type', sort: 'none', filterable: true },\n          { title: 'Name', id: 'name', sort: 'none', filterable: true },\n          { title: 'Address', id: 'address', sort: 'none', filterable: true },\n          { title: 'City', id: 'city', sort: 'none', filterable: true },\n          \n      ]\n  };\n  \n  if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n    this.tableHeader.columns.push({ title: 'State', id: 'state', sort: 'none', filterable: true })\n    this.tableHeader.columns.push({ title: 'Zip Code', id: 'zipCode', sort: 'none', filterable: true })\n  } else {\n    this.tableHeader.columns.push({ title: 'foreignState', id: 'foreignState', sort: 'none', filterable: true })\n    this.tableHeader.columns.push({ title: 'foreignZip', id: 'foreignZip', sort: 'none', filterable: true })\n    this.tableHeader.columns.push({ title: 'country', id: 'country', sort: 'none', filterable: true });\n  }\n  \n\n  }\n\n    private convertPersonToTableRow(person: OEPAPerson): OepaTableRow {\n\n     let cells:Array<any>= [\n        { id: 'id', value: person.id },\n        { id: 'type', value: person.personType ? person.personType.name : '' },\n        { id: 'name', value: person.name },\n        { id: 'address', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.addressLine1  : '' },\n        { id: 'city', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.city  : '' },\n            ];\n    if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n        cells.push({ id: 'state', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.state  : '' })\n        cells.push({ id: 'zipCode', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.zip  : '' })\n    } else {\n        cells.push({ id: 'foreignState', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.foreignState  : '' })\n        cells.push({ id: 'foreignZip', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.foreignZip  : '' })\n        cells.push({ id: 'country', value: person.addressList && person.addressList.length > 0 ? this.formService.getCountryName(person.addressList[0].address?.country || '')  : '' })\n    }\n    return {\n      cells: cells,\n      dataSource: person,\n      selectable: true\n    }\n  }\n\n  public savePerson() {\n    this.errorMessage = '';\n    this.inProgressMsg = 'Creating record for new person...';\n    let person = this.getPersonFromForm();\n    this.entityService.createPerson(person).subscribe(personID => {\n      if (personID) {\n        this.inProgressMsg = '';\n        person.id = personID;\n        this.onPersonCreated.emit(person);\n      }\n    }, err => {\n      this.inProgressMsg = '';\n      this.errorMessage = 'Failed creating person: ' + err;\n    });\n  }\n\n  public onRowSelect(event: any) {\n    this.selectedPerson = event[0].dataSource;\n  }\n\n  public saveSelectedPerson() {\n    this.onPersonCreated.emit(this.selectedPerson);\n  }\n  \n  public getModalFormGroup(name: string) : FormGroup {\n    return this.modalFormGroup.controls[name] as FormGroup;\n  }\n\n  public getModalFormGroupInvalidClass(name: string) : any {\n    return {\n      'is-invalid' : this.modalFormGroup.controls[name].invalid\n    };\n  }\n\n  public getModalFormGroupHasError(name: string, field: string) : boolean {\n    return this.modalFormGroup.controls[name].hasError(field);\n  }\n}\n","<div class=\"modal-header\">\n    <h4 class=\"modal-title pull-left\">Create Person</h4>\n    <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n        \n    </button>\n</div>\n<div class=\"modal-body\">\n        <div *ngIf=\"!modalFormGroup\">\n            <div class=\"text-center\">Initializing...</div>\n            <div class=\"text-center\"><span class=\"spinner-border text-primary\" role=\"status\"></span></div>\n        </div>\n    <form *ngIf=\"modalFormGroup\" [formGroup]=\"modalFormGroup\">\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                <div class=\"form-group\">\n                    <label>Person Type</label>\n                    <select id=\"personTypeSelect\" formControlName=\"personType\" class=\"form-control\"\n                    [ngClass]=\"getModalFormGroupInvalidClass('personType')\">\n                        <option *ngFor=\"let t of personSubTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n                    </select>\n                    <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('personType','required')\">Person Type is required</small>\n                </div>\n            </div>\n        </div>\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                <div class=\"form-group\">\n                    <label>Program</label>\n                    <select id=\"programSelect\" formControlName=\"program\" class=\"form-control\"\n                    [ngClass]=\"getModalFormGroupInvalidClass('program')\">\n                        <option *ngFor=\"let t of programs\" [ngValue]=\"t\">{{t.name}}</option>\n                    </select>\n                    <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('program','required')\">Program is required</small>\n                </div>\n            </div>\n        </div>\n        <oepa-contact [group]=\"getModalFormGroup('contact')\"\n                [showMiddleName]=\"true\" [noFax]=\"true\" [noEmail]=\"true\" [showValidation]=\"true\"></oepa-contact>\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                <div class=\"form-group\">\n                    <label>Phone Number Type</label>\n                    <select id=\"phoneNumberTypeSelect\" formControlName=\"phoneNumberType\" class=\"form-control\"\n                    [ngClass]=\"getModalFormGroupInvalidClass('phoneNumberType')\">\n                        <option *ngFor=\"let t of phoneNumberTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n                    </select>\n                    <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('phoneNumberType','required')\">Phone Number Type is required</small>\n                </div>\n            </div>\n        </div>\n        <oepa-address [group]=\"getModalFormGroup('address')\" [showValidation]=\"true\"></oepa-address>\n        <div class=\"row\">\n            <div class=\"col-md-12\">\n                <div class=\"form-group\">\n                    <label>Address Type</label>\n                    <select id=\"addressTypeSelect\" formControlName=\"addressType\" class=\"form-control\"\n                    [ngClass]=\"getModalFormGroupInvalidClass('addressType')\">\n                        <option *ngFor=\"let t of addressTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n                    </select>\n                    <small class=\"invalid-feedback\" *ngIf=\"getModalFormGroupHasError('addressType','required')\">Address Type is required</small>\n                </div>\n            </div>\n        </div>\n    </form>\n    <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\">\n        <div class=\"card-header\">\n            <b>Matching Person List&nbsp;</b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n        </div>\n        <div class=\"card-body\">\n            <oepa-table tableId=\"personSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\">\n            </oepa-table>\n        </div>\n    </div>\n</div>\n<div class=\"modal-footer d-block\">\n    <div *ngIf=\"inProgressMsg\">           \n        <div class=\"alert alert-info\">\n           {{inProgressMsg}}\n         </div>\n    </div>\n    <div *ngIf=\"infoMessage && !inProgressMsg\">\n        <div class=\"alert alert-info\">\n            {{infoMessage}}\n        </div>\n    </div>\n    <div *ngIf=\"errorMessage\">\n        <div class=\"alert alert-danger\">\n            {{errorMessage}}\n        </div>\n    </div>\n    <div class=\"row\">\n        <div class=\"col-sm-12 text-center\">\n            <span *ngIf=\"inProgressMsg\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n            <button *ngIf=\"(!tableData || tableData.length === 0) && !inProgressMsg\" type=\"button\" class=\"btn btn-primary mr-2\"\n                id=\"SavePersonBtn\"\n                [disabled]=\"!modalFormGroup || modalFormGroup.invalid\"\n                (click)=\"savePersonAfterSearch()\">Save</button>\n            <button *ngIf=\"tableData && tableData.length > 0 && !selectedPerson && !inProgressMsg\" type=\"button\" class=\"btn btn-primary mr-2\"\n                id=\"SavePersonWithoutSearchBtn\"\n                [disabled]=\"modalFormGroup?.invalid\"\n                (click)=\"savePerson()\">No Match, Save New Person</button>\n            <button *ngIf=\"tableData && tableData.length > 0 && selectedPerson && !inProgressMsg\" type=\"button\" class=\"btn btn-primary mr-2\"\n                id=\"SaveSelectedPersonBtn\"\n                [disabled]=\"modalFormGroup?.invalid\"\n                (click)=\"saveSelectedPerson()\">Use Selected Person</button>\n            <button id=\"CancelPersonBtn\" type=\"button\" class=\"btn btn-primary\"\n                (click)=\"bsModalRef.hide()\">Cancel</button>\n        </div>\n    </div>\n</div>","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { OEPAPerson, OEPAProgram } from 'oepa-ebiz-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAPersonFilter } from 'oepa-ebiz-lib';\nimport { PersonCreateModalComponent } from '../person-create-modal/person-create-modal.component';\nimport { EMPTY, Observable, forkJoin } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { OEPAReference } from 'oepa-common-lib';\nimport { OepaTableRow } from '../../table/oepa-table-row';\nimport { OepaTableHeader } from '../../table/oepa-table-header';\nimport { OepaTableConfig } from '../../table/oepa-table-config';\nimport { OepaFormsService } from '../../oepa-forms.service';\n\n@Component({\n  selector: 'oepa-person-search-modal',\n  templateUrl: './person-search-modal.component.html',\n  styleUrls: ['./person-search-modal.component.css']\n})\nexport class PersonSearchModalComponent implements OnInit {\n  public modalFormGroup!: FormGroup;\n  public errorMessage: string = '';\n  public inProgressMsg: string = '';\n  public filter!: OEPAPersonFilter;\n  public selectedPerson: OEPAPerson | undefined;\n  public personTypes: OEPAReference[] = [];\n  public programs: OEPAProgram[] = [];\n  public addressTypes: OEPAReference[] = [];\n  public phoneNumberTypes: OEPAReference[] = [];\n  public openSearchCriteria = true;\n  public allowCreateNew = false;\n  public initializing = false;\n\n  public tableData: Array<OepaTableRow> = [];\n  public tableHeader!: OepaTableHeader;\n\npublic tableConfig: OepaTableConfig = {\n    rowsPerPage: 5,\n    classNames: ['table-striped', 'table-bordered', 'table-sm']\n};\n\n  @Output() onPersonSelected: EventEmitter<OEPAPerson> = new EventEmitter<OEPAPerson>();\n\n  constructor(private fb: FormBuilder, \n    public bsModalRef: BsModalRef,\n    private modalService: BsModalService,\n    private formService: OepaFormsService,\n    private entityService: EntityService) { \n\n    }\n\n  ngOnInit() {\n    this.initializing = true;\n    this.loadReferenceData().subscribe(results => {\n      this.createForm();\n      this.initializing = false;\n    });\n  }  \n  \n  private loadReferenceData(): Observable<any> {\n    let tasks = [];\n    tasks.push(this.retrievePersonTypes());\n    tasks.push(this.retrievePrograms());\n    tasks.push(this.retrieveAddressTypes());\n    tasks.push(this.retrievePhoneNumberTypes());\n    return forkJoin(tasks);\n  }\n\n  private retrievePersonTypes(): Observable<number> {\n    return this.entityService.retrievePersonTypes().pipe(map(subTypes => {\n      this.personTypes = subTypes;\n      return this.personTypes ? this.personTypes.length : 0;\n    }), catchError(err => { \n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n  \n\n  private retrievePrograms(): Observable<number> {\n    return this.entityService.retrievePrograms().pipe(\n      map(programs => {\n      this.programs = [];\n      if (programs && programs.length) {\n        programs.forEach(program => {\n          this.programs.push(program);\n        });\n      }\n      return this.programs.length;\n    }), catchError(err => { \n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n\n  private retrieveAddressTypes(): Observable<number> {\n    return this.entityService.retrieveAddressTypes().pipe(\n      map(types => {\n      this.addressTypes = [];\n      if (types && types.length) {\n        types.forEach(type => {\n          this.addressTypes.push(type);\n        });\n      }\n      return this.addressTypes.length;\n    }), catchError(err => { \n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n\n  private retrievePhoneNumberTypes(): Observable<number> {\n    return this.entityService.retrieveTelephoneTypes().pipe(\n      map(types => {\n      this.phoneNumberTypes = [];\n      if (types && types.length) {\n        types.forEach(type => {\n          this.phoneNumberTypes.push(type);\n        });\n      }\n      return this.phoneNumberTypes.length;\n    }), catchError(err => { \n      this.errorMessage = 'An initialization error occurred: ' + err;\n      return EMPTY;\n    }));\n  }\n  private createForm() {\n    this.modalFormGroup = this.fb.group({\n      id: '',\n      programID: '',\n      secondaryID: '',\n      personType: null,\n      contact: this.fb.group(this.formService.buildContact({})),\n      addressType: '', \n      address: this.fb.group(this.formService.buildAddressFormWithCountry({})),\n      phoneNumberType: '',\n      areaCode: '',\n      phoneNumber: '',\n      extension: ''\n    });\n    this.modalFormGroup.controls['address'].get('state')?.setValue(undefined);\n  }\n\n  private getFilterFromForm(): OEPAPersonFilter {\n    let filter: OEPAPersonFilter = {\n      id: this.modalFormGroup.get('id')?.value,\n      programID: this.modalFormGroup.get('programID')?.value,\n      personSubType: this.modalFormGroup.get('personType')?.value,\n      secondaryID: this.modalFormGroup.get('secondaryID')?.value,\n      firstName: this.modalFormGroup.get('contact')?.get('firstName')?.value,\n      middleName: this.modalFormGroup.get('contact')?.get('middleName')?.value,\n      lastName: this.modalFormGroup.get('contact')?.get('lastName')?.value,\n      addressTypeCode: this.modalFormGroup.get('addressType')?.value,\n      address: this.modalFormGroup.get('address')?.get('line1')?.value,\n      city: this.modalFormGroup.get('address')?.get('city')?.value,\n      state: this.modalFormGroup.get('address')?.get('country')?.value === 'USA' ? this.modalFormGroup.get('address')?.get('state')?.value:null,\n      zipCode: this.modalFormGroup.get('address')?.get('country')?.value ==='USA' ? this.modalFormGroup.get('address')?.get('postalCode')?.value :this.modalFormGroup.get('address')?.get('foreignZip')?.value,\n      foreignState: this.modalFormGroup.get('address')?.get('country')?.value !== 'USA' ? this.modalFormGroup.get('address')?.get('foreignState')?.value:null,\n      country: this.formService.getCountryCode(this.modalFormGroup.get('address')?.get('country')?.value),\n      phoneTypeCode: this.modalFormGroup.get('phoneNumberType')?.value,\n      phoneAreaCode: this.modalFormGroup.get('areaCode')?.value,\n      phoneNumber: this.modalFormGroup.get('phoneNumber')?.value,\n      phoneExtension: this.modalFormGroup.get('extension')?.value,\n    };\n    return filter;\n  }\n\n  \n\n  private filterIsEmpty(filter: OEPAPersonFilter): boolean {\n    let empty = true;\n    if (filter.id && filter.id.length > 0) {\n      empty = false;\n    }\n    if (filter.programID) {\n      empty = false;\n    }\n    if (filter.personSubType) {\n      empty = false;\n    }\n    if (filter.secondaryID && filter.secondaryID.length > 0) {\n      empty = false;\n    }\n    if (filter.firstName && filter.firstName.length > 0) {\n      empty = false;\n    }\n    if (filter.middleName && filter.middleName.length > 0) {\n      empty = false;\n    }\n    if (filter.lastName && filter.lastName.length > 0) {\n      empty = false;\n    }\n    if (filter.addressTypeCode) {\n      empty = false;\n    }\n    if (filter.address && filter.address.length > 0) {\n      empty = false;\n    }\n    if (filter.city && filter.city.length > 0) {\n      empty = false;\n    }\n    if (filter.zipCode && filter.zipCode.length > 0) {\n      empty = false;\n    }\n    if (filter.country && filter.country.length > 0) {\n      empty = false;\n    }\n    \n    if (filter.phoneTypeCode) {\n      empty = false;\n    }\n    if (filter.phoneAreaCode && filter.phoneAreaCode.length > 0) {\n      empty = false;\n    }\n    if (filter.phoneNumber && filter.phoneNumber.length > 0) {\n      empty = false;\n    }\n    if (filter.phoneExtension && filter.phoneExtension.length > 0) {\n      empty = false;\n    }\n    return empty;\n  }\n\n  public submitSearch() {\n    this.errorMessage = '';\n    this.allowCreateNew = false;\n    let filter = this.getFilterFromForm();\n    if (this.filterIsEmpty(filter)) {\n      this.errorMessage = 'Please specify search criteria';\n      return;\n    }\n    this.inProgressMsg = 'Searching...';\n    this.tableData = [];\n    this.buildTableHeader();\n    this.entityService.searchPersons(filter).subscribe(persons => {\n      this.inProgressMsg = '';\n      if (persons && persons.length > 0) {\n        this.openSearchCriteria = false;\n        persons.forEach(person => {\n          let row = this.convertPersonToTableRow(person);\n          this.tableData.push(row);\n          this.tableData = this.tableData.slice();\n        });\n      } else {\n        this.openSearchCriteria = true;\n        this.errorMessage = 'No persons found matching search criteria';\n      }\n      this.allowCreateNew = true;\n    }, err => {\n      this.inProgressMsg = '';\n      this.errorMessage = 'Search Failed: ' + err;\n    });\n  }\nprivate buildTableHeader(){\n    this.tableHeader = {\n      columns: [\n          { title: '', id: 'select', sort: 'none', singleSelectColumn: true, className: 'select-col' },\n          { title: 'ID', id: 'id', sort: 'none', filterable: true },\n          { title: 'Type', id: 'type', sort: 'none', filterable: true },\n          { title: 'Name', id: 'name', sort: 'none', filterable: true },\n          { title: 'Address', id: 'address', sort: 'none', filterable: true },\n          { title: 'City', id: 'city', sort: 'none', filterable: true },\n          \n      ]\n  };\n  \n  if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n    this.tableHeader.columns.push({ title: 'State', id: 'state', sort: 'none', filterable: true })\n    this.tableHeader.columns.push({ title: 'Zip Code', id: 'zipCode', sort: 'none', filterable: true })\n  } else {\n    this.tableHeader.columns.push({ title: 'foreignState', id: 'foreignState', sort: 'none', filterable: true })\n    this.tableHeader.columns.push({ title: 'foreignZip', id: 'foreignZip', sort: 'none', filterable: true })\n    this.tableHeader.columns.push({ title: 'country', id: 'country', sort: 'none', filterable: true });\n  }\n  \n\n  }\n\n  private convertPersonToTableRow(person: OEPAPerson): OepaTableRow {\n    \n     let cells:Array<any>= [\n        { id: 'id', value: person.id },\n        { id: 'type', value: person.personType ? person.personType.name : '' },\n        { id: 'name', value: person.name },\n        { id: 'address', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.addressLine1  : '' },\n        { id: 'city', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.city  : '' },\n            ];\n    if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n        cells.push({ id: 'state', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.state  : '' })\n        cells.push({ id: 'zipCode', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.zip  : '' })\n    } else {\n        cells.push({ id: 'foreignState', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.foreignState  : '' })\n        cells.push({ id: 'foreignZip', value: person.addressList && person.addressList.length > 0 ? person.addressList[0].address?.foreignZip  : '' })\n        cells.push({ id: 'country', value: person.addressList && person.addressList.length > 0 ? this.formService.getCountryName(person.addressList[0].address?.country || '')  : '' })\n    }\n    return {\n      cells: cells,\n      dataSource: person,\n      selectable: true\n    }\n  }\n\n  public resetSearch() {\n    this.openSearchCriteria = true;\n    this.modalFormGroup.reset();\n    this.modalFormGroup.controls['address'].get('country')?.setValue('USA');\n    this.tableData = [];\n  }\n\n  public onRowSelect(event: any) {\n    this.selectedPerson = event[0].dataSource;\n  }\n\n  public save() {\n    this.onPersonSelected.emit(this.selectedPerson);\n  }\n\n  public createNewPerson() {\n    let modal = this.modalService.show(PersonCreateModalComponent, { class: 'modal-xl', ignoreBackdropClick: true });\n    (<PersonCreateModalComponent>modal.content).onPersonCreated.subscribe((person: OEPAPerson) => {\n      modal.hide();\n      this.onPersonSelected.emit(person);\n    });\n  }\n  \n  public getModalFormGroup(name: string) : FormGroup {\n    return this.modalFormGroup.controls[name] as FormGroup;\n  }\n}\n","<div class=\"modal-header\">\n    <h4 class=\"modal-title pull-left\">Advanced Person Search</h4>\n    <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n        \n    </button>\n</div>\n<div class=\"modal-body\">\n    <accordion>\n        <accordion-group panelClass=\"panel-info\" #searchGroup [isOpen]=\"openSearchCriteria\">\n            <div accordion-heading>\n                <div class=\"row\">\n                    <div class=\"col-sm-6\">\n                        <i class=\"float-xs-right bi\" id=\"personSearchCriteria\" name=\"personSearchCriteria\" \n                        [ngClass]=\"{'bi-chevron-down': searchGroup?.isOpen, 'bi-chevron-right': !searchGroup?.isOpen}\"></i>\n                            <b>Person Search Criteria</b>\n                    </div>\n                </div>\n            </div>\n            <div *ngIf=\"initializing\">\n                <span class=\"spinner-border text-primary\" role=\"status\"></span>\n                Initializing...\n            </div>\n            <form *ngIf=\"!initializing\" [formGroup]=\"modalFormGroup\">\n                <div class=\"row\">\n                    <div class=\"col-md-12\">\n                        <div class=\"form-group\">      \n                             <label>Program</label>\n                             <select id=\"programSelect\" formControlName=\"programID\" class=\"form-control\">\n                                <option *ngFor=\"let t of programs\" [ngValue]=\"t.id\">{{t.name}}</option>\n                            </select>\n                        </div>\n                    </div>\n                    <div class=\"col-md-6\">\n                        <div class=\"form-group\">\n                            <label>Person Type</label>\n                            <select id=\"subTypeSelect\" formControlName=\"personType\" class=\"form-control\">\n                                <option *ngFor=\"let t of personTypes\" [ngValue]=\"t\">{{t.name}}</option>\n                            </select>\n                        </div>\n                    </div>\n                    <div class=\"col-md-6\">\n                        <div class=\"form-group\">\n                            <label>Person ID</label>\n                            <input type=\"search\" mask=\"999999999\" class=\"form-control\" id=\"personIDInput\" formControlName=\"id\">\n                        </div>\n                    </div>\n                </div>\n                <oepa-contact [group]=\"getModalFormGroup('contact')\" [isSearch]=\"true\"\n                [showMiddleName]=\"true\" [noPhone]=\"true\" [noFax]=\"true\" [noEmail]=\"true\"></oepa-contact>\n                <div class=\"row\">\n                        <div class=\"col-md-12\">\n                            <div class=\"form-group\">\n                                <label>Secondary ID</label>\n                                <input type=\"search\" class=\"form-control\" id=\"secondaryIDInput\" formControlName=\"secondaryID\">\n                            </div>\n                        </div>\n                    </div>\n                    \n                <div class=\"row\">\n                    <div class=\"col-md-12\">\n                        <div class=\"form-group\">\n                            <label>Address Type</label>\n                            <select id=\"addressTypeSelect\" formControlName=\"addressType\" class=\"form-control\">\n                                <option *ngFor=\"let t of addressTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n                            </select>\n                        </div>\n                    </div>\n                </div>\n                <oepa-address [group]=\"getModalFormGroup('address')\" [isSearch]=\"true\"\n                    addressOneLabel=\"Address\" [hideLine2]=\"true\"></oepa-address>\n                    <div class=\"row\">\n                        <div class=\"col-md-4\">\n                            <div class=\"form-group\">\n                                <label>Phone Number Type</label>\n                                <select id=\"phoneNumberTypeSelect\" formControlName=\"phoneNumberType\" class=\"form-control\">\n                                    <option *ngFor=\"let t of phoneNumberTypes\" [ngValue]=\"t.code\">{{t.name}}</option>\n                                </select>\n                            </div>\n                        </div>\n                        <div class=\"col-md-2\">\n                            <div class=\"form-group\">\n                                <label>Area Code</label>\n                                <input type=\"search\" mask=\"999\" class=\"form-control\" id=\"areaCodeInput\" formControlName=\"areaCode\">\n                            </div>\n                        </div>\n                        <div class=\"col-md-4\">\n                            <div class=\"form-group\">\n                                <label>Phone Number</label>\n                                <input type=\"search\" mask=\"999-9999\" class=\"form-control\" id=\"phoneNumberInput\" formControlName=\"phoneNumber\">\n                            </div>\n                        </div>\n                        <div class=\"col-md-2\">\n                            <div class=\"form-group\">\n                                <label>Extension</label>\n                                <input type=\"search\" mask=\"9999\" class=\"form-control\" id=\"extensionInput\" formControlName=\"extension\">\n                            </div>\n                        </div>\n                    </div>\n                <div class=\"row\">\n                    <div class=\"col-sm-12 text-center\">\n                        <span *ngIf=\"inProgressMsg\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n                        <button *ngIf=\"!inProgressMsg\" type=\"submit\" class=\"btn btn-primary mr-2\" id=\"submitSearchBtn\" (click)=\"submitSearch()\">Search</button>\n                        <button id=\"resetSearchBtn\" type=\"button\" class=\"btn btn-primary\" (click)=\"resetSearch()\">Reset</button>\n                    </div>\n                </div>\n            </form>\n        </accordion-group>\n    </accordion>\n    <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\">\n        <div class=\"card-header\">\n            <b>Person List&nbsp;</b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n        </div>\n        <div class=\"card-body\">\n            <oepa-table tableId=\"personSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\">\n            </oepa-table>\n        </div>\n    </div>\n</div>\n<div class=\"modal-footer d-block\">\n    <div *ngIf=\"errorMessage\">\n        <div class=\"alert alert-danger\">\n            {{errorMessage}}\n        </div>\n    </div>\n    <div class=\"row\">\n        <div class=\"col-sm-12 text-center\">\n            <button *ngIf=\"tableData && tableData.length > 0\" type=\"button\" class=\"btn btn-primary mr-2\"\n                id=\"SavePersonBtn\"\n                [disabled]=\"!selectedPerson\"\n                (click)=\"save()\">Select</button>\n            <button *ngIf=\"allowCreateNew\" type=\"button\" class=\"btn btn-primary mr-2\"\n                id=\"CreatePersonButton\"\n                (click)=\"createNewPerson()\">Create New Person</button>\n            <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n                (click)=\"bsModalRef.hide()\">Cancel</button>\n        </div>\n    </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { TypeaheadMatch } from 'ngx-bootstrap/typeahead';\nimport { FormGroup } from '@angular/forms';\nimport { EMPTY, Observable } from 'rxjs';\nimport { mergeMap, map, catchError } from 'rxjs/operators';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { OepaComponentIdService } from 'oepa-common-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAPerson } from 'oepa-ebiz-lib';\nimport { OEPAPersonFilter } from 'oepa-ebiz-lib';\nimport { PersonSearchModalComponent } from '../person-search-modal/person-search-modal.component';\n\n@Component({\n  selector: 'oepa-person-search-input',\n  templateUrl: './person-search-input.component.html',\n  styleUrls: ['./person-search-input.component.css']\n})\nexport class PersonSearchInputComponent implements OnInit {\n  nameSearch = '';\n  nameSource: Observable<OEPAPerson[]>;\n  componentId: string = '';\n  errorMessage: string = '';\n  searching: boolean = false;\n\n  @Input('group') group!: FormGroup;\n  @Input('personID') personID: string = '';\n  @Input('field') field: string = '';\n  @Input('title') title: string = 'Person';\n  @Input('errorMessageAddendum') errorMessageAddendum = '';\n  @Input('rowLayout') rowLayout = false;\n\n  @Output('personSelected') personSelected: EventEmitter<OEPAPerson> = new EventEmitter<OEPAPerson>();\n\n  constructor(private idService: OepaComponentIdService,\n    private modalService: BsModalService,\n    private entityService: EntityService) { \n      this.nameSource = new Observable((observer) => {\n        observer.next(this.group.get(this.field)?.value);\n      }).pipe(mergeMap((token: any) => this.searchPersons(token)));\n  }\n\n  ngOnInit() {\n    this.componentId = this.idService.getComponentId(this.group);\n    if (this.personID) {\n      const filter: OEPAPersonFilter = {\n        id: this.personID\n      }\n      this.searching = true;\n      this.entityService.searchPersons(filter).subscribe({\n        next: personList => {\n        if (personList && personList.length == 1) {\n          this.loadPersonInForm(personList[0]);\n        } else {\n          this.errorMessage = 'An initialization error occurred: Zero or multiple persons wih id: ' + this.personID;\n        }\n        this.searching = false;\n      }, error: err => {\n        this.searching = false;\n        this.errorMessage = 'An initialization error occurred: ' + err;\n      }});\n    }\n    this.group.get(this.field)?.valueChanges.subscribe(value => {\n      if (!value || value === '') {\n        this.personSelected.emit(undefined);\n      }\n    });\n  }\n\n  public onPersonSelect(e: TypeaheadMatch) {\n    if (e.item) {\n      this.loadPersonInForm(e.item);\n      this.personSelected.emit(e.item);\n    }\n  }\n\n  private loadPersonInForm(person: OEPAPerson) {\n    let data: any = {};\n    data[this.field] = (person.firstName || '') + ' ' + (person.middleName || '') + ' ' + person.lastName + ' (' + person.id + ')';\n    if (person) {\n      this.group.patchValue(data);\n    }\n  }\n\n  private searchPersons(token: any): Observable<OEPAPerson[]> {\n    this.errorMessage = '';\n    this.searching = true;\n    const filter: OEPAPersonFilter = {\n      name: isNaN(token) ? token : undefined,\n      id: isNaN(token) ? undefined : token\n    }\n    return this.entityService.searchPersons(filter).pipe(\n      map((persons) => {\n        this.searching = false;\n        return persons;\n      }), catchError(err => {\n        this.searching = false;\n        this.errorMessage = 'Search failed: ' + err;\n        return EMPTY;\n      })\n    );\n  }\n\n  public advancedSearch() {\n    let modal = this.modalService.show(PersonSearchModalComponent, {class: 'modal-xl',ignoreBackdropClick: true});\n    (<PersonSearchModalComponent>modal.content).onPersonSelected.subscribe(person => {\n      this.loadPersonInForm(person);\n      this.personSelected.emit(person);\n      modal.hide();\n    });\n  }\n\n}\n","<div [formGroup]=\"group\" class=\"form-group\" [ngClass]=\"{'row text-right': rowLayout}\">\n  <ng-template #personTemplate let-model=\"item\" let-index=\"index\">\n    <h5>{{ (model.firstName || '') + ' ' + (model.middleName || '') + ' ' + model.lastName +\n      (model.addressList && model.addressList[0] ? (' - ' + model.addressList[0].address.addressLine1 + ', ' +\n      model.addressList[0].address.city\n      + model.addressList[0].address.state) : '') + ' (' + model.id + ')' }}</h5>\n  </ng-template>\n  <label [ngClass]=\"{'col-sm-4 col-form-label': rowLayout}\">\n    {{title}}\n    <span *ngIf=\"searching\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n    <a href=\"javascript:void(0)\" (click)=\"advancedSearch()\">Advanced Search</a>\n  </label>\n  <div [ngClass]=\"{'col-sm-8': rowLayout}\">\n    <input class=\"form-control\" type=\"search\"\n      [ngClass]=\"{'is-invalid':group.controls[field].status === 'INVALID', 'col-sm-8': rowLayout}\"\n      [formControlName]=\"field\" [typeahead]=\"nameSource\" [typeaheadScrollable]=\"true\"\n      (typeaheadOnSelect)=\"onPersonSelect($event)\" [id]=\"componentId + '_PersonSearch'\"\n      [typeaheadItemTemplate]=\"personTemplate\" [typeaheadMinLength]=\"3\" placeholder=\"Search Person\">\n    <small class=\"invalid-feedback\" *ngIf=\"group.controls[field]?.hasError('required')\">{{title}} is required\n      {{errorMessageAddendum}}</small>\n  </div>\n</div>\n<div *ngIf=\"errorMessage\" class=\"alert alert-danger\">\n  {{errorMessage}}\n</div>","import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'oepa-place-create-modal',\n  templateUrl: './place-create-modal.component.html',\n  styleUrls: ['./place-create-modal.component.css']\n})\nexport class PlaceCreateModalComponent implements OnInit {\n\n  constructor() { }\n\n  ngOnInit() {\n  }\n\n}\n","<p>place-create-modal works!</p>\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { OEPAPlace } from 'oepa-ebiz-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAEntityFilter } from 'oepa-ebiz-lib';\nimport { OepaTableRow } from '../../table/oepa-table-row';\nimport { OepaTableHeader } from '../../table/oepa-table-header';\nimport { OepaTableConfig } from '../../table/oepa-table-config';\nimport { OepaFormsService } from '../../oepa-forms.service';\n\n@Component({\n  selector: 'oepa-place-search-modal',\n  templateUrl: './place-search-modal.component.html',\n  styleUrls: ['./place-search-modal.component.css']\n})\nexport class PlaceSearchModalComponent implements OnInit {\n  public modalFormGroup!: FormGroup;\n  public errorMessage: string = '';\n  public inProgressMsg: string = '';\n  public filter!: OEPAEntityFilter;\n  public selectedPlace: OEPAPlace | undefined;\n  public openSearchCriteria = true;\n\n  public tableData: Array<OepaTableRow> = [];\n  public tableHeader!: OepaTableHeader;\n  public tableConfig: OepaTableConfig = {\n    rowsPerPage: 5,\n    classNames: ['table-striped', 'table-bordered', 'table-sm']\n};\n\n@Output() onPlaceSelected: EventEmitter<OEPAPlace> = new EventEmitter<OEPAPlace>();\n\n  constructor(private fb: FormBuilder, public bsModalRef: BsModalRef,\n    private formService: OepaFormsService,\n    private entityService: EntityService) { \n\n    }\n\n  ngOnInit() {\n    this.createForm();\n  }\n  \n  private createForm() {\n    this.modalFormGroup = this.fb.group({\n      id: '',\n      secondaryID: '',\n      name: '',\n      address: this.fb.group(this.formService.buildAddressFormWithCountry({ state: 'OH'})),\n      areaCode: '',\n      phoneNumber: '',\n      extension: ''\n    });\n    this.modalFormGroup.controls['address'].get('state')?.setValue(undefined);\n  }\n\n  private getFilterFromForm(): OEPAEntityFilter {\n    let filter: OEPAEntityFilter = {\n      id: this.modalFormGroup.get('id')?.value,\n      secondaryID: this.modalFormGroup.get('secondaryID')?.value,\n      name: this.modalFormGroup.get('name')?.value,\n      address: this.modalFormGroup.get('address')?.get('line1')?.value,\n      city: this.modalFormGroup.get('address')?.get('city')?.value,\n      state: this.modalFormGroup.get('address')?.get('state')?.value,\n      zipCode: this.modalFormGroup.get('address')?.get('postalCode')?.value,\n      foreignState: this.modalFormGroup.get('address')?.get('foreignState')?.value,\n      country: this.formService.getCountryCode(this.modalFormGroup.get('address')?.get('country')?.value),\n      phoneAreaCode: this.modalFormGroup.get('areaCode')?.value,\n      phoneNumber: this.modalFormGroup.get('phoneNumber')?.value,\n      phoneExtension: this.modalFormGroup.get('extension')?.value,\n    };\n    return filter;\n  }\n\n  private filterIsEmpty(filter: OEPAEntityFilter): boolean {\n    let empty = true;\n    if (filter.id && filter.id.length > 0) {\n      empty = false;\n    }\n    if (filter.secondaryID && filter.secondaryID.length > 0) {\n      empty = false;\n    }\n    if (filter.name && filter.name.length > 0) {\n      empty = false;\n    }\n    if (filter.address && filter.address.length > 0) {\n      empty = false;\n    }\n    if (filter.city && filter.city.length > 0) {\n      empty = false;\n    }\n    if (filter.zipCode && filter.zipCode.length > 0) {\n      empty = false;\n    }\n    if (filter.country && filter.country.length > 0) {\n      empty = false;\n    }\n    \n    if (filter.phoneAreaCode && filter.phoneAreaCode.length > 0) {\n      empty = false;\n    }\n    if (filter.phoneNumber && filter.phoneNumber.length > 0) {\n      empty = false;\n    }\n    if (filter.phoneExtension && filter.phoneExtension.length > 0) {\n      empty = false;\n    }\n    return empty;\n  }\n\n  public submitSearch() {\n    this.errorMessage = '';\n    let filter = this.getFilterFromForm();\n    if (this.filterIsEmpty(filter)) {\n      this.errorMessage = 'Please specify search criteria';\n      return;\n    }\n    this.inProgressMsg = 'Searching...';\n    this.tableData = [];\n    this.buildTableHeader();\n    this.entityService.searchPlaces(filter).subscribe(places => {\n      this.inProgressMsg = '';\n      if (places && places.length > 0) {\n        this.openSearchCriteria = false;\n        places.forEach(place => {\n          let row = this.convertPlaceToTableRow(place);\n          this.tableData.push(row);\n          this.tableData = this.tableData.slice();\n        });\n      } else {\n        this.openSearchCriteria = true;\n        this.errorMessage = 'No places found matching search criteria. Please use the Places application to create a new place.';\n      }\n    }, err => {\n      this.inProgressMsg = '';\n      this.errorMessage = 'Search Failed: ' + err;\n    });\n  }\nprivate buildTableHeader(){\n    this.tableHeader = {\n      columns: [\n          { title: '', id: 'select', sort: 'none', singleSelectColumn: true, className: 'select-col' },\n          { title: 'ID', id: 'id', sort: 'none', filterable: true },\n          { title: 'Name', id: 'name', sort: 'none', filterable: true },\n          { title: 'Secondary ID', id: 'secondaryID', sort: 'none', filterable: true },\n          { title: 'Address', id: 'address', sort: 'none', filterable: true },\n          { title: 'City', id: 'city', sort: 'none', filterable: true },\n          \n      ]\n  };\n  \n  if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n    this.tableHeader.columns.push({ title: 'State', id: 'state', sort: 'none', filterable: true })\n    this.tableHeader.columns.push({ title: 'Zip Code', id: 'zipCode', sort: 'none', filterable: true })\n  } else {\n    this.tableHeader.columns.push({ title: 'foreignState', id: 'foreignState', sort: 'none', filterable: true })\n    this.tableHeader.columns.push({ title: 'foreignZip', id: 'foreignZip', sort: 'none', filterable: true })\n    this.tableHeader.columns.push({ title: 'country', id: 'country', sort: 'none', filterable: true });\n  }\n  this.tableHeader.columns.push({ title: 'Phone', id: 'phone', sort: 'none', filterable: true });\n}\n  private convertPlaceToTableRow(place: OEPAPlace): OepaTableRow {\n      let secondaryIDs:string='';\n      let secondaryIDDescList:Array<string>=[];\n      if(place.secondaryIDList && place.secondaryIDList.length > 0){\n        place.secondaryIDList.forEach(secondaryID=>{ \n          const matchDesc = secondaryIDDescList.find((desc) => {\n            return desc === secondaryID.description;\n          });\n          if(!matchDesc && secondaryID.endDate===null){\n              secondaryIDDescList.push(secondaryID.description || '');\n              secondaryIDs += secondaryID.description+', ';\n          }\n         \n        })\n        secondaryIDs = secondaryIDs.slice(0, secondaryIDs.length-2);\n      }\n      let cells:Array<any>= [\n        { id: 'id', value: place.id },\n        { id: 'name', value: place.name },\n        { id: 'secondaryID', value: secondaryIDs },\n        { id: 'address', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.addressLine1  : '' },\n        { id: 'city', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.city  : '' },\n       \n        \n      ];\n      if(this.modalFormGroup.get('address')?.get('country')?.value === 'USA'){\n        cells.push({ id: 'state', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.state  : '' })\n        cells.push({ id: 'zipCode', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.zip  : '' })\n      } else {\n        cells.push({ id: 'foreignState', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.foreignState  : '' })\n        cells.push({ id: 'foreignZip', value: place.addressList && place.addressList.length > 0 ? place.addressList[0].address?.foreignZip  : '' })\n        cells.push({ id: 'country', value: place.addressList && place.addressList.length > 0 ? this.formService.getCountryName(place.addressList[0].address?.country || '')  : '' })\n      }\n      cells.push({ id: 'phone', value: place.phoneNumberList && place.phoneNumberList.length > 0 && place.phoneNumberList[0].phoneNumber ? place.phoneNumberList[0].phoneNumber.phoneNumber?.replace(/^(\\d{0,3})(\\d{0,3})(\\d{0,4})/, '($1) $2-$3') : '' })\n      \n    return {\n      cells: cells,\n      dataSource: place,\n      selectable: true\n    }\n  }\n\n  public resetSearch() {\n    this.openSearchCriteria = true;\n    this.modalFormGroup.reset();\n    this.modalFormGroup.controls['address'].get('country')?.setValue('USA');\n    this.tableData = [];\n  }\n\n  public onRowSelect(event: any) {\n    this.selectedPlace = event[0].dataSource;\n  }\n\n  public save() {\n    this.onPlaceSelected.emit(this.selectedPlace);\n    this.bsModalRef.hide();\n  }\n\n  public getModalFormGroup(name: string) : FormGroup {\n    return this.modalFormGroup.controls[name] as FormGroup;\n  }\n}\n","<div class=\"modal-header\">\n    <h4 class=\"modal-title pull-left\">Advanced Place Search</h4>\n    <button type=\"button\" class=\"btn-close float-end\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n        \n    </button>\n</div>\n<div class=\"modal-body\">\n        <accordion>\n            <accordion-group panelClass=\"panel-info\" #searchGroup [isOpen]=\"openSearchCriteria\">\n                <div accordion-heading>\n                    <div class=\"row\">\n                        <div class=\"col-sm-6\">\n                            <i class=\"float-xs-right bi\" id=\"placeSearchCriteria\" name=\"placeSearchCriteria\" \n                            [ngClass]=\"{'bi-chevron-down': searchGroup?.isOpen, 'bi-chevron-right': !searchGroup?.isOpen}\"></i>\n                                <b>Place Search Criteria</b>\n                        </div>\n                    </div>\n                </div>\n                <form [formGroup]=\"modalFormGroup\">\n                <div class=\"row\">\n                    <div class=\"col-md-12\">\n                        <div class=\"form-group\">\n                            <label>Place ID</label>\n                            <input type=\"search\" mask=\"999999999\" class=\"form-control\" id=\"placeIDInput\" formControlName=\"id\">\n                        </div>\n                    </div>\n                    <div class=\"col-md-12\">\n                        <div class=\"form-group\">\n                            <label>Place Name</label>\n                            <input type=\"search\" class=\"form-control\" id=\"placeNameInput\" formControlName=\"name\">\n                        </div>\n                    </div>\n                    <div class=\"col-md-12\">\n                        <div class=\"form-group\">\n                            <label>Secondary ID</label>\n                            <input type=\"search\" class=\"form-control\" id=\"secondaryIDInput\" formControlName=\"secondaryID\">\n                        </div>\n                    </div>\n                </div>\n                <oepa-address [group]=\"getModalFormGroup('address')\" [isSearch]=\"true\"\n                    addressOneLabel=\"Address\" [hideLine2]=\"true\"></oepa-address>\n                \n                <div class=\"row\">\n                    <div class=\"col-md-3\">\n                        <div class=\"form-group\">\n                            <label>Area Code</label>\n                            <input type=\"search\" mask=\"999\" class=\"form-control\" id=\"areaCodeInput\" formControlName=\"areaCode\">\n                        </div>\n                    </div>\n                    <div class=\"col-md-6\">\n                        <div class=\"form-group\">\n                            <label>Phone Number</label>\n                            <input type=\"search\" mask=\"999-9999\" class=\"form-control\" id=\"phoneNumberInput\" formControlName=\"phoneNumber\">\n                        </div>\n                    </div>\n                    <div class=\"col-md-3\">\n                        <div class=\"form-group\">\n                            <label>Extension</label>\n                            <input type=\"search\" mask=\"9999\" class=\"form-control\" id=\"extensionInput\" formControlName=\"extension\">\n                        </div>\n                    </div>\n                </div>\n                <div class=\"row\">\n                    <div class=\"col-sm-12 text-center\">\n                        <span *ngIf=\"inProgressMsg\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n                        <button *ngIf=\"!inProgressMsg\" type=\"submit\" class=\"btn btn-primary mr-2\" id=\"submitSearchBtn\" (click)=\"submitSearch()\">Search</button>\n                        <button id=\"resetSearchBtn\" type=\"button\" class=\"btn btn-primary\" (click)=\"resetSearch()\">Reset</button>\n                    </div>\n                </div>\n            </form>\n            </accordion-group>\n        </accordion>\n    <div *ngIf=\"tableData && tableData.length > 0\" class=\"card\">\n        <div class=\"card-header\">\n            <b>Place List&nbsp;</b><span class=\"badge bg-secondary\">{{tableData.length}}</span>\n        </div>\n        <div class=\"card-body\">\n            <oepa-table tableId=\"placeSearchTable\" [config]=\"tableConfig\" [data]=\"tableData\" [header]=\"tableHeader\" (rowSelected)=\"onRowSelect($event)\">\n            </oepa-table>\n        </div>\n    </div>\n</div>\n<div class=\"modal-footer d-block\">\n    <div *ngIf=\"errorMessage\">\n        <div class=\"alert alert-danger\">\n            {{errorMessage}}\n        </div>\n    </div>\n    <div *ngIf=\"inProgressMsg\">\n        <div class=\"alert alert-info\">\n            {{inProgressMsg}}\n        </div>\n    </div>\n    <div class=\"row\">\n        <div class=\"col-sm-12 text-center\">\n            <button type=\"button\" class=\"btn btn-primary mr-2\"\n                id=\"SavePlaceBtn\"\n                [disabled]=\"!selectedPlace || inProgressMsg\"\n                (click)=\"save()\">Save</button>\n            <button id=\"CancelPaymentBtn\" type=\"button\" class=\"btn btn-primary\"\n                (click)=\"bsModalRef.hide()\">Cancel</button>\n        </div>\n    </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { TypeaheadMatch } from 'ngx-bootstrap/typeahead';\nimport { FormGroup } from '@angular/forms';\nimport { EMPTY, Observable } from 'rxjs';\nimport { catchError, mergeMap, map } from 'rxjs/operators';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { OepaComponentIdService } from 'oepa-common-lib';\nimport { EntityService } from '../entity.service';\nimport { OEPAPlace } from 'oepa-ebiz-lib';\nimport { OEPAEntityFilter } from 'oepa-ebiz-lib';\nimport { PlaceSearchModalComponent } from '../place-search-modal/place-search-modal.component';\n\n@Component({\n  selector: 'oepa-place-search-input',\n  templateUrl: './place-search-input.component.html',\n  styleUrls: ['./place-search-input.component.css']\n})\nexport class PlaceSearchInputComponent implements OnInit {\n  nameSearch = '';\n  nameSource: Observable<OEPAPlace[]>;\n  componentId: string = '';\n  errorMessage: string = '';\n  searching: boolean = false;\n\n  @Input('group') group!: FormGroup;\n  @Input('placeID') placeID: string = '';\n  @Input('field') field: string = '';\n  @Input('title') title: string = 'Place';\n  @Input('errorMessageAddendum') errorMessageAddendum = '';\n  @Input('rowLayout') rowLayout = false;\n\n  @Output('placeSelected') placeSelected: EventEmitter<OEPAPlace> = new EventEmitter<OEPAPlace>();\n\n  constructor(private idService: OepaComponentIdService,\n    private modalService: BsModalService,\n    private entityService: EntityService) {\n      this.nameSource = new Observable((observer) => {\n        observer.next(this.group.get(this.field)?.value);\n      }).pipe(mergeMap((token: any) => this.searchPlaces(token)));\n     }\n\n     ngOnInit() {\n      this.componentId = this.idService.getComponentId(this.group);\n      if (this.placeID) {\n        const filter: OEPAEntityFilter = {\n          id: this.placeID\n        }\n        this.searching = true;\n        this.entityService.searchPlaces(filter).subscribe(placeList => {\n          if (placeList && placeList.length == 1) {\n            this.loadPlaceInForm(placeList[0]);\n          } else {\n            this.errorMessage = 'An initialization error occurred: Zero or multiple places wih id: ' + this.placeID;\n          }\n          this.searching = false;\n        }, err => {\n          this.searching = false;\n          this.errorMessage = 'An initialization error occurred: ' + err;\n        });\n      }\n      this.group.get(this.field)?.valueChanges.subscribe(value => {\n        if (!value || value === '') {\n          this.placeSelected.emit(undefined);\n        }\n      });\n    }\n  \n    public onPlaceSelect(e: TypeaheadMatch) {\n      if (e.item) {\n        this.loadPlaceInForm(e.item);\n        this.placeSelected.emit(e.item);\n      }\n    }\n  \n    private loadPlaceInForm(place: OEPAPlace) {\n      let data: any = {};\n      data[this.field] = (place.name || '') + ' (' + place.id + ')';\n      if (place) {\n        this.group.patchValue(data);\n      }\n    }\n  \n    private searchPlaces(token: any): Observable<OEPAPlace[]> {\n      this.errorMessage = '';\n      this.searching = true;\n      const filter: OEPAEntityFilter = {\n        name: isNaN(token) ? token : undefined,\n        id: isNaN(token) ? undefined : token\n      }\n      return this.entityService.searchPlaces(filter).pipe(\n        map((places) => {\n          this.searching = false;\n          return places;\n        }), catchError(err => {\n          this.searching = false;\n          this.errorMessage = 'An initialization error occurred: ' + err;\n          return EMPTY;\n        })\n      );\n    }\n  \n    public advancedSearch() {\n      let modal = this.modalService.show(PlaceSearchModalComponent, {class: 'modal-xl',ignoreBackdropClick: true});\n      (<PlaceSearchModalComponent>modal.content).onPlaceSelected.subscribe(place => {\n        this.loadPlaceInForm(place);\n        this.placeSelected.emit(place);\n      });\n    }\n\n}\n","<div [formGroup]=\"group\" class=\"form-group\" [ngClass]=\"{'row text-right': rowLayout}\">\n    <ng-template #placeTemplate let-model=\"item\" let-index=\"index\">\n        <h5>{{ (model.name || '') +\n            (model.addressList && model.addressList[0] ? (' - ' + model.addressList[0].address.addressLine1 + ', ' +\n            model.addressList[0].address.city\n            + model.addressList[0].address.state) : '') + ' (' + model.id + ')' }}</h5>\n    </ng-template>\n    <label [ngClass]=\"{'col-sm-4 col-form-label': rowLayout}\">\n        {{title}}\n        <span *ngIf=\"searching\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n        <a href=\"javascript:void(0)\" (click)=\"advancedSearch()\">Advanced Search</a>\n    </label>\n    <div [ngClass]=\"{'col-sm-8': rowLayout}\">\n        <input class=\"form-control\" type=\"search\"\n            [ngClass]=\"{'is-invalid':group.controls[field]?.status === 'INVALID', 'col-sm-8': rowLayout}\"\n            [formControlName]=\"field\" [typeahead]=\"nameSource\" [typeaheadScrollable]=\"true\"\n            (typeaheadOnSelect)=\"onPlaceSelect($event)\" [id]=\"componentId + '_PlaceSearch'\"\n            [typeaheadItemTemplate]=\"placeTemplate\" [typeaheadMinLength]=\"3\" placeholder=\"Search Place\">\n        <small class=\"invalid-feedback\" *ngIf=\"group.controls[field]?.hasError('required')\">{{title}} is required\n            {{errorMessageAddendum}}</small>\n    </div>\n</div>\n<div *ngIf=\"errorMessage\" class=\"alert alert-danger\">\n    {{errorMessage}}\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-yes-no',\n  templateUrl: './yes-no.component.html',\n  styleUrls: ['./yes-no.component.css']\n})\nexport class YesNoComponent implements OnInit {\n  public componentId = 'OepaYesNoComponent';\n\n  /**  The form group of which this component is a member. */\n  @Input() group!: FormGroup;\n  /** The name of this component's field within the form group */\n  @Input() field: string = '';\n  /**  Form validation will be displayed when showValidation is true.*/\n  @Input() public showValidation = false;\n  @Input() disabled = false;\n\n  constructor(private idService: OepaComponentIdService) {}\n\n  ngOnInit() {\n      if (this.group) {\n        this.componentId = this.idService.getComponentId(this.group);\n        this.componentId += (this.componentId.length > 0 ? '_' : '') + this.field;\n      } else {\n        console.log('OOPS No group yet');\n      }\n    }\n\n}\n","<div [formGroup]=\"group\">\n    <div class=\"btn-group\" style=\"background-color: #e9f0f5;\" btnRadioGroup [formControlName]=\"field\" [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\">\n      <label class=\"btn\" [ngClass]=\"{'btn-primary': group.controls[field].value === 'yes'}\" [class.active]=\"group.controls[field].value === 'yes'\" \n        btnRadio=\"yes\" [uncheckable]=\"true\" [id]=\"componentId+'_YesBtn'\" [class.disabled]=\"group.disabled || disabled\" [disabled]=\"group.disabled || disabled\">Yes</label>\n      <label class=\"btn\" [ngClass]=\"{'btn-primary': group.controls[field].value === 'no'}\" [class.active]=\"group.controls[field].value === 'no'\" \n        btnRadio=\"no\" [uncheckable]=\"true\" [id]=\"componentId+'_NoBtn'\" [class.disabled]=\"group.disabled || disabled\" [disabled]=\"group.disabled || disabled\">No</label>\n    </div>\n  </div>\n  <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && group.controls[field].status === 'INVALID' && !group.controls[field].hasError('answeredYes')\">Response is required</small>","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-yes-no-boolean',\n  templateUrl: './yes-no.component.html',\n  styleUrls: ['./yes-no.component.css']\n})\nexport class YesNoBooleanComponent implements OnInit {\n  public componentId = 'OepaYesNoComponentBoolean';\n\n  /**  The form group of which this component is a member. */\n  @Input() group!: FormGroup;\n  /** The name of this component's field within the form group */\n  @Input() field: string = '';\n  /**  Form validation will be displayed when showValidation is true.*/\n  @Input() public showValidation = false;\n  @Input() disabled = false;\n\n  constructor(private idService: OepaComponentIdService) {}\n\n  ngOnInit() {\n      if (this.group) {\n        this.componentId = this.idService.getComponentId(this.group);\n        this.componentId += (this.componentId.length > 0 ? '_' : '') + this.field;\n      } else {\n        console.log('OOPS No group yet');\n      }\n    }\n\n}\n","<div [formGroup]=\"group\">\n    <div class=\"btn-group\" btnRadioGroup [formControlName]=\"field\" [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\">\n      <label class=\"btn btn-yes\" [ngClass]=\"{'btn-primary': group.controls[field].value === 'true'}\" [class.active]=\"group.controls[field].value === 'true'\" \n        btnRadio=\"yes\" [uncheckable]=\"true\" [id]=\"componentId+'_YesBtn'\" [class.disabled]=\"group.disabled || disabled\" [disabled]=\"group.disabled || disabled\">Yes</label>\n      <label class=\"btn btn-no\" [ngClass]=\"{'btn-primary': group.controls[field].value === 'false'}\" [class.active]=\"group.controls[field].value === 'false'\" \n        btnRadio=\"no\" [uncheckable]=\"true\" [id]=\"componentId+'_NoBtn'\" [class.disabled]=\"group.disabled || disabled\" [disabled]=\"group.disabled || disabled\">No</label>\n    </div>\n  </div>\n  <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && group.controls[field].status === 'INVALID' && !group.controls[field].hasError('answeredYes')\">Response is required</small>","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-yes-no-other-input',\n  templateUrl: './yes-no-other-input.component.html',\n  styleUrls: ['./yes-no-other-input.component.css']\n})\nexport class YesNoOtherInputComponent implements OnInit {\n\n  public componentId = 'OepaYesNoComponent';\n\n  /**  The form group of which this component is a member. */\n  @Input() group!: FormGroup;\n  /** The name of this component's field within the form group */\n  @Input() field: string = '';\n  /**  Form validation will be displayed when showValidation is true.*/\n  @Input() public showValidation = false;\n\n  constructor(private idService: OepaComponentIdService) {}\n\n  ngOnInit() {\n      if (this.group) {\n        this.componentId = this.idService.getComponentId(this.group);\n        this.componentId += (this.componentId.length > 0 ? '_' : '') + this.field;\n      } else {\n        console.log('OOPS No group yet');\n      }\n    }\n\n}","<div [formGroup]=\"group\">\n    <div class=\"btn-group\" btnRadioGroup [formControlName]=\"field\" [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\">\n      <label class=\"btn btn-yes\" [ngClass]=\"{'btn-primary': group.controls[field].value === 'yes'}\" [class.active]=\"group.controls[field].value === 'yes'\" \n        btnRadio=\"yes\" [uncheckable]=\"true\" [id]=\"componentId+'_YesBtn'\" [class.disabled]=\"group.disabled\" [disabled]=\"group.disabled\">Yes</label>\n      <label class=\"btn btn-no\" [ngClass]=\"{'btn-primary': group.controls[field].value === 'no'}\"[class.active]=\"group.controls[field].value === 'no'\" \n        btnRadio=\"no\" [uncheckable]=\"true\" [id]=\"componentId+'_NoBtn'\"[class.disabled]=\"group.disabled\" [disabled]=\"group.disabled\">No</label>\n        <label class=\"btn btn-no\" [ngClass]=\"{'btn-primary': group.controls[field].value === 'unknown'}\" [class.active]=\"group.controls[field].value === 'unknown'\" \n        btnRadio=\"unknown\" [uncheckable]=\"true\" [id]=\"componentId+'_UnknownBtn'\"[class.disabled]=\"group.disabled\" [disabled]=\"group.disabled\">Unknown</label>\n    </div>\n  </div>\n  <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && group.controls[field].status === 'INVALID' && !group.controls[field].hasError('answeredYes')\">Response is required</small>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n  selector: 'oepa-date-input-modal',\n  templateUrl: './date-input-modal.component.html',\n  styleUrls: ['./date-input-modal.component.css']\n})\nexport class DateInputModalComponent implements OnInit {\n  public errorMessage: string = '';\n  public dateForm!: FormGroup;\n  public date: Date | undefined;\n\n  @Input() title: string = '';\n  @Input() infoText: string = '';\n  @Input() dateLabel = 'Date';\n  @Input() submitBtnLabel = 'Submit';\n  @Input() cancelBtnLabel = 'Cancel';\n\n  @Output() onSubmit: EventEmitter<Date> = new EventEmitter<Date>();\n  @Output() onCancel: EventEmitter<void> = new EventEmitter<void>();\n\n  constructor(public bsModalRef: BsModalRef, private fb: FormBuilder) { }\n\n  ngOnInit() {\n    if (!this.date) {\n      this.date = new Date();\n    }\n    this.createForm();\n  }\n  \n  private createForm() {\n    this.dateForm = this.fb.group({\n      date: [ this.date, Validators.required]\n    });\n    this.dateForm.controls['date'].valueChanges.subscribe(date => {\n      this.date = date;\n    });\n  }\n\n  submit() {\n    this.onSubmit.emit(this.date);\n    this.bsModalRef.hide();\n  }\n\n  cancel() {\n    this.onCancel.emit();\n    this.bsModalRef.hide();\n  }\n\n}\n","<div class=\"modal-header\">\n  <h4 class=\"modal-title pull-left\">{{title}}</h4>\n  <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n    <span aria-hidden=\"true\">&times;</span>\n  </button>\n</div>\n<div class=\"modal-body\">\n  <div class=\"row\">\n    <div *ngIf=\"infoText\" class=\"col-sm-12\">\n      <div class=\"alert alert-info\">\n        {{infoText}}\n      </div>\n    </div>\n    <div class=\"col-sm-12\">\n      <div>\n        <label>{{dateLabel}}</label>\n        <oepa-datepicker [group]=\"dateForm\" field=\"date\" [showValidation]=\"true\"></oepa-datepicker>\n      </div>\n    </div>\n  </div>\n  <div *ngIf=\"errorMessage\" class=\"col-sm-12\">\n    <div class=\"alert alert-danger\">{{errorMessage}}</div>\n  </div>\n</div>\n<div class=\"modal-footer\">\n  <button type=\"submit\" class=\"btn btn-primary mr-1\" (click)=\"submit()\" \n          [id]=\"'submitDateBtn'\" [disabled]=\"dateForm.status === 'INVALID'\">{{submitBtnLabel}}</button>\n  <button [id]=\"'cancelDateInputBtn'\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"cancel()\">{{cancelBtnLabel}}</button>\n</div>\n","import { Component, OnInit, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from 'oepa-common-lib';\nimport { OepaAddressService } from '../address/oepa-address.service';\n\n\n@Component({\n  selector: 'oepa-ebiz-address',\n  templateUrl: './ebiz-address.component.html',\n  styleUrls: ['./ebiz-address.component.css']\n})\nexport class EbizAddressComponent implements OnInit {\n  public showStates = true;\n  public usStates: string[] = [];\n  public componentId = 'EbizAddressComponent';\n\n  @Input() group!: FormGroup;\n  @Input() showValidation = false;\n\n  @Input('addressOneLabel') public addressOneLabel: string = 'Address 1';\n  @Input('addressTwoLabel') public addressTwoLabel: string = 'Address 2';\n  @Input('cityLabel') public cityLabel: string = 'City';\n  @Input('stateLabel') public stateLabel: string = 'State';\n  @Input('zipCodeLabel') public zipCodeLabel: string = 'Zip Code';\n\n  constructor(private addressService: OepaAddressService, private idService: OepaComponentIdService) {\n    this.addressService.getStates().subscribe({\n      next: (states) => {\n      this.usStates = states;\n    }, error: err => {\n      console.log('ERROR retrieving states for address: ' + err);\n    }});\n  }\n\n  ngOnInit() {\n    if (this.group) {\n      this.componentId = this.idService.getComponentId(this.group);\n    }\n  }\n\n}\n","<div [formGroup]=\"group\">\n  <div class=\"row\">\n      <div class=\"col-md-12\">\n          <div class=\"form-group\">\n              <label>{{addressOneLabel}}</label>\n              <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['addressLine1'].status === 'INVALID'}\" \n                type=\"text\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"addressLine1\" \n                [id]=\"componentId+'_Line1Input'\">\n              <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine1'].hasError('required')\">{{addressOneLabel}} is required</small>\n              <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine1'].hasError('maxlength')\">{{addressOneLabel}} has exceeded its maximum length</small>\n          </div>\n      </div>\n  </div>\n  <div class=\"row\">\n      <div class=\"col-md-12\">\n          <div class=\"form-group\">\n              <label>{{addressTwoLabel}}</label>\n              <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['addressLine2'].status === 'INVALID'}\"\n                type=\"text\" placeholder=\"Address\" maxlength=\"40\" formControlName=\"addressLine2\" \n                [id]=\"componentId+'_Line2Input'\">\n              <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine2'].hasError('required')\">{{addressTwoLabel}} is required</small>\n              <small class=\"invalid-feedback\" *ngIf=\"group.controls['addressLine2'].hasError('maxlength')\">{{addressTwoLabel}} has exceeded its maximum length</small>\n          </div>\n      </div>\n  </div>\n  <div class=\"row\">\n      <div class=\"col-md-6\">\n          <div class=\"form-group\">\n              <label>{{cityLabel}}</label>\n              <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['city'].status === 'INVALID'}\"\n                type=\"text\" placeholder=\"City\" maxlength=\"30\" formControlName=\"city\" \n                [id]=\"componentId+'_CityInput'\">\n              <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('required')\">{{cityLabel}} is required</small>\n              <small class=\"invalid-feedback\" *ngIf=\"group.controls['city'].hasError('maxlength')\">{{cityLabel}} has exceeded its maximum length</small>\n          </div>\n      </div>\n      <div class=\"col-md-2\">\n          <div *ngIf=\"showStates\" class=\"form-group\">\n              <label>{{stateLabel}}</label>\n              <select class=\"form-select\" [ngClass]=\"{'is-invalid':showValidation && group.controls['state'].status === 'INVALID'}\" \n                name=\"AddressState\" formControlName=\"state\" [id]=\"componentId+'_StateSelect'\">\n              <option *ngFor=\"let s of usStates\" [ngValue]=\"s\">{{s}}</option>\n          </select>\n          <small class=\"invalid-feedback\" *ngIf=\"group.controls['state'].hasError('required')\">State is required</small>\n          </div>\n      </div>\n      <div class=\"col-md-4\">\n          <div class=\"form-group\">\n              <label>{{zipCodeLabel}}</label>\n              <input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['zip'].status === 'INVALID'}\"\n                type=\"text\" placeholder=\"Zip Code\" formControlName=\"zip\" [id]=\"componentId+'_ZipInput'\">\n              <small class=\"invalid-feedback\" *ngIf=\"group.controls['zip'].hasError('required')\">Zip code is required</small>\n              <small class=\"invalid-feedback\" *ngIf=\"group.controls['zip'].hasError('pattern')\">Zip code must contain exactly 5 digits</small>\n          </div>\n      </div>\n  </div>\n</div>","/*\n  Copyright 2018 Esri\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n    http://www.apache.org/licenses/LICENSE-2.0\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n*/\n\nimport { Component, OnInit, ViewChild, ElementRef, Input, Output, EventEmitter } from '@angular/core';\n\nimport { loadModules } from 'esri-loader';\nimport esri = __esri;\nimport { LatLong } from 'oepa-ebiz-lib';\n\n@Component({\n  selector: 'oepa-esri-map',\n  templateUrl: './esri-map.component.html',\n  styleUrls: ['./esri-map.component.css']\n})\nexport class EsriMapComponent implements OnInit {\n\n  @Output() mapLoaded = new EventEmitter<boolean>();\n  @Output() onNewCoordinates: EventEmitter<LatLong> = new EventEmitter<LatLong>();\n  @ViewChild('mapViewNode', { static: true }) private mapViewEl!: ElementRef;\n  @ViewChild('latLongSearchNode', { static: false }) latLongSearchEl!: ElementRef;\n\n  /**\n   * @private _zoom sets map zoom\n   * @private _center sets map center\n   * @private _basemap sets type of map\n   */\n  private _zoom: number = 10;\n  private _center: Array<number> = [0.1278, 51.5074];\n  private _basemap: string = 'streets-vector';\n\n  private currentMapView!: esri.MapView;\n  // private currentGraphic: esri.Graphic = null;\n  // private selectedPoint: esri.Point = null;\n  private _currentLatLong!: LatLong;\n\n  @Input()\n  set currentLatLong(currentLatLong: LatLong) {\n    this._currentLatLong = currentLatLong;\n  }\n\n  get currentLatLong(): LatLong {\n    return this._currentLatLong;\n  }\n\n  @Input()\n  set zoom(zoom: number) {\n    this._zoom = zoom;\n  }\n\n  get zoom(): number {\n    return this._zoom;\n  }\n\n  @Input()\n  set center(center: Array<number>) {\n    this._center = center;\n  }\n\n  get center(): Array<number> {\n    return this._center;\n  }\n\n  @Input()\n  set basemap(basemap: string) {\n    this._basemap = basemap;\n  }\n\n  get basemap(): string {\n    return this._basemap;\n  }\n\n  @Input() showSearch = false;\n\n  constructor() { }\n\n  async initializeMap() {\n    // var mapView;\n    const [EsriMap, EsriMapView, EsriBasemapToggle, locator , Search ] = await loadModules([\n      'esri/Map',\n      'esri/views/MapView',\n      \"esri/widgets/BasemapToggle\",\n      \"esri/rest/locator\",\n      \"esri/widgets/Search\"\n    ]);\n\n    const me = this;\n    // Set type of map\n    const mapProperties: esri.MapProperties = {\n      basemap: this._basemap,\n    };\n\n    const map: esri.Map = new EsriMap(mapProperties);\n\n    // Set type of map view\n    const mapViewProperties: esri.MapViewProperties = {\n      container: this.mapViewEl.nativeElement,\n      center: this._center,\n      zoom: this._zoom,\n      map: map,\n      popup: {\n        dockEnabled: false,\n        dockOptions: {\n          buttonEnabled: false,\n          breakpoint: false,\n        }\n      },\n    };\n\n    var mapView = new EsriMapView(mapViewProperties);\n    mapView.popup.actionsMenuEnabled = false;\n    mapView.popup._displayActionTextLimit = 0; // controls whether action button text is shown\n    this.currentMapView = mapView;\n\n    // All resources in the MapView and the map have loaded.\n    // Now execute additional processes\n    // this.currentMapView.when(() => {\n    //   this.mapLoaded.emit(true);\n    // });\n\n    // 1 - Create the widget\n    const toggle: esri.BasemapToggle = new EsriBasemapToggle({\n      // 2 - Set properties\n      view: mapView, // view that provides access to the map's 'topo' basemap\n      nextBasemap: \"hybrid\" // allows for toggling to the 'hybrid' basemap\n    });\n\n    // Add widget to the top right corner of the view\n    mapView.ui.add(toggle, \"bottom-right\");\n\n    var updateLatLongAction = {\n      title: \"Yes\",\n      id: \"update-lat-long\",\n      // image: \"Measure_Distance16.png\",\n      className: \"bi bi-hand-thumbs-up-fill\"\n    };\n\n    var cancelUpdateAction = {\n      title: \"No\",\n      id: \"cancel-update\",\n      // image: \"Measure_Distance16.png\",\n      className: \"bi bi-hand-thumbs-down-fill\"\n    };\n\n    //this.currentMapView.popup.content = '{facilityName}';\n\n    // this.currentMapView.on(\"click\", event => {\n    //   let clickSymbol: esri.SimpleMarkerSymbol = new SimpleMarkerSymbol({\n    //     type: 'simple-marker',\n    //     style: 'diamond',\n    //     color: 'red',\n    //     size: '20pt'\n    //   });\n    //   this.currentMapView.graphics.remove(this.currentGraphic);\n    //   this.currentGraphic = new Graphic({\n    //     geometry : event.mapPoint,\n    //     symbol : clickSymbol\n    //   })\n\n    //   this.addPoint(String(event.mapPoint.latitude), String(event.mapPoint.longitude));\n    // });\n\n    // var symbol = new SimpleMarkerSymbol(\n    //   SimpleMarkerSymbol.STYLE_CIRCLE,\n    //   12,\n    //   new SimpleLineSymbol(\n    //     SimpleLineSymbol.STYLE_NULL,\n    //     new Color([247, 34, 101, 0.9]),\n    //     1\n    //   ),\n    //   new Color([207, 34, 171, 0.5])\n    // );\n\n    // mapView.when(() => {\n    //   this.mapLoaded.emit(true);\n    //   mapView.on(\"click\", function(event) {\n    //     // you must overwrite default click-for-popup\n    //     // behavior to display your own popup\n    //     // me.currentMapView.popup.autoOpenEnabled = false;\n\n    //     // Get the coordinates of the click on the view\n    //     var lat = Math.round(event.mapPoint.latitude * 1000) / 1000;\n    //     var lon = Math.round(event.mapPoint.longitude * 1000) / 1000;\n    //     var info = lat + ', ' + lon;\n\n    //     mapView.graphics.clear();\n    //     mapView.graphics.add(new Graphic(event.mapPoint, symbol));\n    //     map.infoWindow.setContent(\"X: \" + event.mapPoint.x.toString() + \", <br>Y: \" + event.mapPoint.y.toString());\n    //     mapView.infoWindow.show(event.mapPoint)\n\n    //     const poptest = new Popup({\n    //       title: \"Reverse geocode: [\" + lon + \", \" + lat + \"]\",\n    //       location: event.mapPoint, // Set the location of the popup to the clicked location\n    //       content: \"This is a point of interest\"  // content displayed in the popup\n    //     })\n    //     mapView.popup.open({\n    //       // Set the popup's title to the coordinates of the location\n    //       title: \"Reverse geocode: [\" + lon + \", \" + lat + \"]\",\n    //       location: event.mapPoint, // Set the location of the popup to the clicked location\n    //       content: \"This is a point of interest\"  // content displayed in the popup\n    //     });\n    //     // me.showPopup(info, event);\n\n    //    });\n\n    //   //  mapView.popup.on(\"trigger-action\", function(evt){\n    //   //    if(evt.action.id === \"more-details\"){\n    //   //      // add graphic at view.popup.location\n    //   //    }\n    //   //  });\n\n    //   })\n\n    /*\n     * Create the Search Box widget used for address lookup. searchId is the id of the HTML tag (usually a DIV)\n     * that is the placeholder for the search box.\n     */\n    if (this.showSearch) {\n      var searchWidget = new Search({\n        view: mapView,\n        locationEnabled: false,\n        container: this.latLongSearchEl.nativeElement,\n        popupEnabled: false\n      });\n    }\n\n    mapView.when(function () {\n      if (me._currentLatLong &&\n          me._currentLatLong.latDecimal && me._currentLatLong.latDecimal !== '' &&\n          me._currentLatLong.longDecimal && me._currentLatLong.longDecimal !== '') {\n        me.addPoint(me._currentLatLong.latDecimal, me._currentLatLong.longDecimal, 'xxx');\n        me.zoomToFacility(me._currentLatLong.latDecimal, me._currentLatLong.longDecimal);\n      }\n    })\n\n    mapView.when(function () {\n      mapView.on(\"mouse-wheel\", function (event:any) {\n        // prevents zooming with the mouse-wheel event\n        event.stopPropagation();\n      });\n    })\n\n    mapView.when(function() {\n      if (searchWidget) {\n        searchWidget.on(\"select-result\", function (event:any) {\n          showPopup(\"xxx\", event.result.feature.geometry);\n  \n          // let newLatLong: LatLong = {\n          //   latDecimal: mapView.popup.location.latitude,\n          //   longDecimal: mapView.popup.location.longitude\n          // }\n          // me.onNewCoordinates.emit(newLatLong); // this updates lat/long fields as soon as you click selected address\n        });\n      }\n    })\n\n    mapView.when(function () {\n      mapView.popup.autoOpenEnabled = false;\n      mapView.on(\"click\", function (event:any) {\n        searchWidget.clear();\n        mapView.popup.clear();\n        // Get the coordinates of the click on the view around the decimals to 3 decimals\n        // var lat = Math.round(event.mapPoint.latitude * 1000) / 1000;\n        // var lon = Math.round(event.mapPoint.longitude * 1000) / 1000;\n        // this.selectedPoint = event.mapPoint;\n\n        // mapView.popup.open({   //define\n        //   title: \"<div style='font-size: 12px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;'>Update Latitude and Longitude</div>\",\n        //   content: \n        //    \"<div style='bold'>Address: </div>\" + \"<div>\" + address + \"</div>\" +\n        //   \"<input type='button' value=' Yes' id='\" + options.mapId + \"updateLatLong'>&nbsp;<input type='button' value='No' id='\" + options.mapId + \"cancelInfoWindow'>\" ,\n        //   location: event.mapPoint,\n        //   actions: [updateLatLongAction, cancelUpdateAction],\n        // });\n        // Display the popup\n        // Execute a reverse geocode using the clicked location\n        locator.locationToAddress(\"https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer\", { location: event.mapPoint })\n          .then(function (response:any) {\n            // If an address is successfully found, show it in the popup's content\n            mapView.popup.content = response.address;\n            var address = response.address;\n            showPopup(address, event.mapPoint);\n          })\n          .catch(function (error:any) {\n            // If the promise fails and no result is found, show a generic message\n            mapView.popup.content = \"No address was found for this location\";\n            showPopup(\"No address found.\", event.mapPoint);\n          });\n\n        mapView.popup.visible = true;\n      });\n    })\n\n    mapView.when(function () {\n      mapView.popup.on(\"trigger-action\", function (event:any) {\n        // Execute the measureThis() function if the measure-this action is clicked\n        if (event.action.id === \"update-lat-long\") {\n          updateLatLong();\n        } else if (event.action.id === \"cancel-update\") {\n          cancelUpdate();\n        }\n      });\n    })\n\n    function showPopup(address:any, pt:any) {\n      mapView.popup.open({\n        title: \"<div style='font-size: 12px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;'>Update Latitude and Longitude?</div>\",\n        content:\n          //  \"<div style='bold'>Address: </div>\" + \"<div>\" + address + \"</div>\" +\n          \"<div style='font-size: 12px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;'><div>Would you like to update the latitude and longitude values as shown below?</div>\" +\n          '<br/>' +\n          \"<div>Latitude: \" + Math.round(pt.latitude * 100000) / 100000 + \"</div>\" +\n          \"<div>Longitude: \" + Math.round(pt.longitude * 100000) / 100000 + \"</div></div>\",\n        // \"<input type='button' value=' Yes' id='\" + options.mapId + \"updateLatLong'>&nbsp;<input type='button' value='No' id='\" + options.mapId + \"cancelInfoWindow'>\" ,\n        location: pt,\n        actions: [updateLatLongAction, cancelUpdateAction],\n        collapsed: true\n      });\n      // mapView.popup._displayActionTextLimit = 3; // controls whether action button text is shown\n\n    }\n\n    function updateLatLong() {\n      mapView.graphics.removeAll();\n      // mapView.graphics.add(new Graphic(event.mapPoint, symbol));\n      me.addPoint(mapView.popup.location.latitude, mapView.popup.location.longitude, 'xxx');\n\n      let newLatLong: LatLong = {\n        latDecimal: mapView.popup.location.latitude,\n        longDecimal: mapView.popup.location.longitude\n      }\n      me.onNewCoordinates.emit(newLatLong);\n\n      cancelUpdate();\n      mapView.popup.close();\n      // console.log(\"updateLatLong called for lat: \" + mapView.popup.location.latitude + \", long: \" + mapView.popup.location.longitude);\n    }\n\n    function cancelUpdate() {\n      mapView.popup.close();\n      // console.log(\"cancelUpdate called\");\n    }\n\n    //*** Add div element to show coordates ***//\n    var coordsWidget = document.createElement(\"div\");\n    coordsWidget.id = \"coordsWidget\";\n    coordsWidget.className = \"esri-widget esri-component\";\n    coordsWidget.style.padding = \"7px 15px 5px\";\n    mapView.ui.add(coordsWidget, \"bottom-right\");\n\n    //*** Update lat, lon, zoom and scale ***//\n    function showCoordinates(pt:any) {\n      var coords = \"Lat/Lon \" + pt.latitude.toFixed(3) + \" \" + pt.longitude.toFixed(3) +\n        \" | Scale 1:\" + Math.round(mapView.scale * 1) / 1 +\n        \" | Zoom \" + mapView.zoom;\n      coordsWidget.innerHTML = coords;\n    }\n\n    //*** Add event and show center coordinates after the view is finished moving e.g. zoom, pan ***//\n    mapView.watch([\"stationary\"], function () {\n      showCoordinates(mapView.center);\n    });\n\n    //*** Add event to show mouse coordinates on click and move ***//\n    mapView.on([\"pointer-down\", \"pointer-move\"], function (evt:any) {\n      showCoordinates(mapView.toMap({ x: evt.x, y: evt.y }));\n    });\n\n  }\n\n  async resetMap() {\n    this.currentMapView.graphics.removeAll();\n    this.currentMapView.goTo({\n      target: this._center,\n      zoom: this._zoom\n    }\n    );\n    this.zoomToFacility\n  }\n\n  async zoomToFacility(lat: string, long: string) {\n    const [Point] = await loadModules([\n      'esri/geometry/Point'\n    ]);\n    let point: esri.Point = new Point({\n      latitude: lat, //39.957767,\n      longitude: long //-82.994939\n    });\n\n    this.currentMapView.goTo({\n      target: point,\n      zoom: 16\n    }\n    );\n  }\n\n  // async removeSelectedPoint() {\n  //   if (this.currentGraphic) {\n  //     this.currentMapView.map.\n  //   }\n  // }\n\n  /**\n   * Adds a new point to the current map with the given lat/long values.\n   * @param lat \n   * @param long \n   */\n  async addPoint(lat: string, long: string, name: string) {\n    const [Point, Graphic, SimpleMarkerSymbol, ActionButton] = await loadModules([\n      'esri/geometry/Point',\n      'esri/Graphic',\n      'esri/symbols/SimpleMarkerSymbol',\n      'esri/support/actions/ActionButton'\n    ]);\n\n    let point: esri.Point = new Point({\n      latitude: lat, //39.957767,\n      longitude: long //-82.994939\n    });\n\n    let symbol: esri.SimpleMarkerSymbol = new SimpleMarkerSymbol({\n      // type: 'simple-marker',\n      style: 'circle',\n      color: 'blue',\n      size: '12px'\n    });\n\n    let actionButton: esri.ActionButton = new ActionButton({\n      active: true,\n      visible: true,\n      disabled: false,\n      id: 'selectFacility',\n      title: 'Select Facility',\n      type: 'button'\n    });\n\n    let currentGraphic = new Graphic({\n      geometry: point,\n      symbol: symbol,\n      popupTemplate: {\n        title: name,\n        content: name,\n      },\n      actions: [actionButton]\n    });\n\n    this.currentMapView.graphics.add(currentGraphic);\n\n    this._currentLatLong = {\n      latDecimal: lat,\n      longDecimal: long\n    }\n    // console.log('Added point: ', lat, long);\n  }\n\n  ngOnInit() {\n    this.initializeMap();\n  }\n\n}","<!-- Here's the DIV that we inject the map into -->\n<div *ngIf=\"showSearch\" class=\"row\">\n  <div class=\"col-md-12\">\n    <div class=\"alert alert-success\">\n      <label>Search for Address:</label>\n      <div>Type an address in the input box below and select a match from the drop down list or select the\n        magnifying glass button to plot the address on the map.</div>\n      <div #latLongSearchNode></div>\n    </div>\n  </div>\n</div>\n<div #mapViewNode></div>","import { Component, OnInit, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { LatLong } from 'oepa-ebiz-lib';\nimport { Code } from 'oepa-ebiz-lib';\nimport { EsriMapComponent } from '../esri-map/esri-map.component';\n\n@Component({\n  selector: 'oepa-ohio-lat-long',\n  templateUrl: './ohio-lat-long.component.html',\n  styleUrls: ['./ohio-lat-long.component.css']\n})\nexport class OhioLatLongComponent implements OnInit {\n\n  @Input() group!: FormGroup;\n  /** Form validation will be displayed when showValidation is true. */\n  @Input() showValidation = false;\n  @Input() latLongCollectionMethods: Code[] = [];\n\n  public OHIO = { latMin: 38, latMax: 42, longMin: -85, longMax: -80 };\n\n  public collectionMethods = [];\n  public isSatelliteView = false;\n  public coordsOutsideOfOhio = false;\n\n  public customPatterns = { '9': { pattern: new RegExp('[-?0-9]') } ,\n                            '0': { pattern: new RegExp('[0-9]')}};\n\n  // Set our map properties\n  mapCenter = [-82.996822, 39.959011];\n  basemapType = 'streets-vector';\n  mapZoomLevel = 7;\n\n  // See app.component.html\n  mapLoadedEvent(status: boolean) {\n    console.log('The map loaded: ' + status);\n  }\n\n  public useDMS = false;\n  public dmsLat: {deg: number | undefined, min: number | undefined, sec: number | undefined} = {\n    deg: undefined,\n    min: undefined,\n    sec: undefined\n  };\n  public dmsLong: {deg: number | undefined, min: number | undefined, sec: number | undefined} = {\n    deg: undefined,\n    min: undefined,\n    sec: undefined\n  };\n\n  constructor() {}\n \n  ngOnInit() {\n    this.updateLatDMSValue(this.group.controls['latDecimal'].value);\n    this.updateLonDMSValue(this.group.controls['longDecimal'].value);\n\n    this.group.controls['latDecimal'].valueChanges.subscribe(latDecimal => {\n      this.updateLatDMSValue(latDecimal);\n    });\n    this.group.controls['longDecimal'].valueChanges.subscribe(longDecimal => {\n      this.updateLonDMSValue(longDecimal);\n    });\n\n  }\n\n  public updateLatDMSValue(latDecimal: string) {\n    if (this.isNum(latDecimal)) {\n      this.dmsLat = this.decimalToDMS(latDecimal);\n      this.group.controls['dmsLat'].get('deg')?.patchValue(this.dmsLat.deg);\n      this.group.controls['dmsLat'].get('min')?.patchValue(this.dmsLat.min);\n      this.group.controls['dmsLat'].get('sec')?.patchValue(this.dmsLat.sec);\n      this.coordsOutsideOfOhio = !this.checkCoordsInOhio(this.group.controls['latDecimal'].value, this.group.controls['longDecimal'].value);\n    }\n  }\n\n  public updateLonDMSValue(longDecimal: string) {\n    if (this.isNum(longDecimal)) {\n      this.dmsLong = this.decimalToDMS(longDecimal);\n      this.group.controls['dmsLong'].get('deg')?.patchValue(this.dmsLong.deg);\n      this.group.controls['dmsLong'].get('min')?.patchValue(this.dmsLong.min);\n      this.group.controls['dmsLong'].get('sec')?.patchValue(this.dmsLong.sec);\n      this.coordsOutsideOfOhio = !this.checkCoordsInOhio(this.group.controls['latDecimal'].value, this.group.controls['longDecimal'].value);\n    }\n  }\n\n  // default to required if oepaRequired is not specified\n  // public isRequired() {\n  // \t// return (this.oepaRequired() !== false);\n  // };\n\n  async zoomToCoordinates(latDecimal: string, longDecimal: string, facilityMap: EsriMapComponent) {\n    facilityMap.resetMap();\n    facilityMap.addPoint(latDecimal, longDecimal, 'xxx');\n    facilityMap.zoomToFacility(latDecimal, longDecimal);\n    console.log(this.group.value);\n  }\n\n  public convertCoordsToDMS(dmsLatitude: FormGroup, dmsLongitude: FormGroup) {\n    if (this.isNum(dmsLatitude.controls['deg'].value) &&\n        this.isNum(dmsLatitude.controls['min'].value) &&\n        this.isNum(dmsLatitude.controls['sec'].value) &&\n        this.isNum(dmsLongitude.controls['deg'].value) &&\n        this.isNum(dmsLongitude.controls['min'].value) &&\n        this.isNum(dmsLongitude.controls['sec'].value)) {\n      var decimalLat: string;\n      var decimalLong: string;\n      var dmsLat = {\n        deg: dmsLatitude.controls['deg'].value,\n        min: dmsLatitude.controls['min'].value,\n        sec: dmsLatitude.controls['sec'].value\n      }\n      var dmsLong = { // force lat/long to be in Western Hemisphere\n        deg: Number(dmsLongitude.controls['deg'].value) < 0 ? dmsLongitude.controls['deg'].value : -1 * Number(dmsLongitude.controls['deg'].value),\n        min: dmsLongitude.controls['min'].value,\n        sec: dmsLongitude.controls['sec'].value\n      }\n\n      decimalLat = this.dmsToDecimal(dmsLat);\n      decimalLong = this.dmsToDecimal(dmsLong);\n  \n      this.group.controls['latDecimal'].patchValue(decimalLat);\n      this.group.controls['longDecimal'].patchValue(decimalLong);\n    }\n  }\n\n  public dmsToDecimal(dms: any) {\n    if (null != dms.deg && null != dms.min && null != dms.sec) {\n      var decimal = undefined;\n      var decimalFraction = dms.min / 60.0 + dms.sec / 3600.0;\n      decimal = (dms.deg > 0) ? dms.deg + decimalFraction : dms.deg - decimalFraction;\n      return decimal.toFixed(6);\n    }\n    return null;\n  };\n\n  public decimalToDMS(decimal:any) {\n    var dms: {deg: number | undefined, min: number | undefined, sec: number | undefined} = {\n      deg: undefined,\n      min: undefined,\n      sec: undefined,\n    };\n    var absolute = Math.abs(decimal);\n    dms.deg = Math.floor(absolute);\n    var minsec = (absolute - dms.deg) * 60.0;\n    dms.min = Math.floor(minsec);\n    dms.sec = Number(((minsec - dms.min) * 60.0).toFixed(6));\n    if (dms.sec === 60) {\n      dms.min += 1;\n      dms.sec = 0;\n    }\n    if (dms.min === 60) {\n      dms.deg += 1;\n      dms.min = 0;\n    }\n    return dms;\n  };\n\n  public checkCoordsInOhio(latitude: any, longitude: any) {\n    var coordsInOhio = true;\n    try {\n      if ((Number(latitude) < this.OHIO.latMin || Number(latitude) > this.OHIO.latMax ||\n        Number(longitude) < this.OHIO.longMin || Number(longitude) > this.OHIO.longMax)) {\n        coordsInOhio = false;\n      }\n    } catch (e) {\n      console.log('ERROR: bad lat/long: ' + latitude + '/' + longitude);\n    }\n    return coordsInOhio;\n  }\n\n  updateCoordinates(coords: LatLong) {\n    this.group.controls['latDecimal'].patchValue(coords.latDecimal);\n    this.group.controls['longDecimal'].patchValue(coords.longDecimal);\n  }\n\n  isNum(value: any) {\n    if (value && null != value && undefined != value && value != '') {\n      return true;\n    }\n    return false;\n  }\n\n  public getDMSLatFormGroup() : FormGroup {\n    return this.group.controls['dmsLat'] as FormGroup;\n  }\n\n  public getDMSLongFormGroup() : FormGroup {\n    return this.group.controls['dmsLong'] as FormGroup;\n  }\n\n}\n","<div [style.pointer-events]=\"group.enabled ? null : 'none'\">\n\n<form [formGroup]=\"group\" novalidate>\n  <div class=\"oepa-workflow-component-50\">\n    <div class=\"oepa-section-component-body\">\n      <div class=\"form-group\">\n        <div class=\"alert alert-info\">\n          Use the map on the right to set the latitude and longitude values and verify they are correct.\n          You may click on the map to choose latitude and longitude coordinates or enter the latitude and longitude\n          values in the input fields below.\n          Alternately, you may enter an address in the input field at the top of the map to find coordinates by\n          address.\n        </div>\n      </div>\n      <div *ngIf=\"useDMS\">\n        <button class=\"btn btn-primary\" (click)=\"convertCoordsToDMS(getDMSLatFormGroup(), getDMSLongFormGroup()); useDMS = !useDMS\">Convert\n          Coordinates to Decimal Degrees</button>\n        <div class=\"row\" formGroupName=\"dmsLat\">\n          <div class=\"col-md-12\">\n            <label>Latitude</label>\n            <div class=\"row\">\n              <div class=\"col-md-4\">\n                <div class=\"form-group\">\n                  <input formControlName=\"deg\" name=\"latDegrees\" class=\"form-control\" type=\"number\" placeholder=\"Degrees\"\n                    min=\"-89\" max=\"89\" ng-blur=\"onLatDMSChange()\" maxlength=\"\"\n                    [ngClass]=\"{'is-invalid':showValidation && getDMSLatFormGroup()['controls']['deg'].status === 'INVALID'}\">\n                  <small class=\"invalid-feedback\" *ngIf=\"getDMSLatFormGroup()['controls']['deg'].hasError('required')\">xxx is required</small>\n                </div>\n              </div>\n              <div class=\"col-md-4\">\n                <div class=\"form-group\">\n                  <input formControlName=\"min\" name=\"latMinutes\" class=\"form-control\" type=\"number\" placeholder=\"Minutes\"\n                    min=\"0\" max=\"59\" ng-blur=\"onLatDMSChange()\"\n                    [ngClass]=\"{'is-invalid':showValidation && getDMSLatFormGroup()['controls']['min'].status === 'INVALID'}\">\n                  <small class=\"invalid-feedback\" *ngIf=\"getDMSLatFormGroup()['controls']['min'].hasError('required')\">Primary SIC Code is required</small>\n                </div>\n              </div>\n              <div class=\"col-md-4\">\n                <div class=\"form-group\">\n                  <input formControlName=\"sec\" name=\"latSeconds\" class=\"form-control\" type=\"number\" placeholder=\"Seconds\"\n                    min=\"0\" max=\"59.999999\" ng-blur=\"onLatDMSChange()\"\n                    [ngClass]=\"{'is-invalid':showValidation && getDMSLatFormGroup()['controls']['sec'].status === 'INVALID'}\">\n                  <small class=\"invalid-feedback\" *ngIf=\"getDMSLatFormGroup()['controls']['sec'].hasError('required')\">Primary SIC Code is required</small>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div class=\"row\" formGroupName=\"dmsLong\">\n          <div class=\"col-md-12\">\n            <label>Longitude</label>\n            <div class=\"row\">\n              <div class=\"col-md-4\">\n                <div class=\"form-group\">\n                  <input formControlName=\"deg\" name=\"longDegrees\" class=\"form-control\" type=\"number\" placeholder=\"Degrees\"\n                    min=\"-179\" max=\"179\" ng-blur=\"onLongDMSChange()\"\n                    [ngClass]=\"{'is-invalid':showValidation && getDMSLongFormGroup()['controls']['deg'].status === 'INVALID'}\">\n                  <small class=\"invalid-feedback\" *ngIf=\"getDMSLongFormGroup()['controls']['deg'].hasError('required')\">Primary SIC Code is required</small>\n                </div>\n              </div>\n              <div class=\"col-md-4\">\n                <div class=\"form-group\">\n                  <input formControlName=\"min\" name=\"longMinutes\" class=\"form-control\" type=\"number\" placeholder=\"Minutes\"\n                    min=\"0\" max=\"59\" ng-blur=\"onLongDMSChange()\"\n                    [ngClass]=\"{'is-invalid':showValidation && getDMSLongFormGroup()['controls']['min'].status === 'INVALID'}\">\n                  <small class=\"invalid-feedback\" *ngIf=\"getDMSLongFormGroup()['controls']['min'].hasError('required')\">Primary SIC Code is required</small>\n                </div>\n              </div>\n              <div class=\"col-md-4\">\n                <div class=\"form-group\">\n                  <input formControlName=\"sec\" name=\"longSeconds\" class=\"form-control\" type=\"number\" placeholder=\"Seconds\"\n                    min=\"0\" max=\"59.999999\" ng-blur=\"onLongDMSChange()\"\n                    [ngClass]=\"{'is-invalid':showValidation && getDMSLongFormGroup()['controls']['sec'].status === 'INVALID'}\">\n                  <small class=\"invalid-feedback\" *ngIf=\"getDMSLongFormGroup()['controls']['sec'].hasError('required')\">Primary SIC Code is required</small>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n      <div *ngIf=\"!useDMS\">\n        <button class=\"btn btn-primary\" (click)=\"useDMS = !useDMS\">Enter Coordinates in Degrees, Minutes, Seconds</button>\n        <div class=\"row\">\n          <div class=\"col-md-12\">\n            <div class=\"form-group\">\n              <label>Latitude</label>\n              <input formControlName=\"latDecimal\" name=\"Latitude\" class=\"form-control\" type=\"text\" placeholder=\"Latitude\"\n                ng-blur=\"onLatLongInputChange()\" mask=\"separator.6\" decimalMarker=\".\" [allowNegativeNumbers]=\"true\" [dropSpecialCharacters]=\"false\" \n                [ngClass]=\"{'is-invalid':showValidation && group['controls']['latDecimal'].status === 'INVALID'}\">\n              <small class=\"invalid-feedback\" *ngIf=\"group['controls']['latDecimal'].hasError('required')\">Latitude is required</small>\n            </div>\n            <div class=\"form-group\">\n              <label>Longitude</label>\n              <input formControlName=\"longDecimal\" name=\"Longitude\" class=\"form-control\" type=\"text\" placeholder=\"Longitude\"\n                ng-blur=\"onLatLongInputChange()\" mask=\"separator.6\" decimalMarker=\".\" [allowNegativeNumbers]=\"true\" [dropSpecialCharacters]=\"false\"\n                [ngClass]=\"{'is-invalid':showValidation && group['controls']['longDecimal'].status === 'INVALID'}\">\n              <small class=\"invalid-feedback\" *ngIf=\"group['controls']['longDecimal'].hasError('required')\">Longitude is required</small>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <div *ngIf=\"group['controls']['latDecimal'].value !== '' && group['controls']['longDecimal'].value !== ''\">\n        <button class=\"btn btn-primary\" (click)=\"zoomToCoordinates(group['controls']['latDecimal'].value,group['controls']['longDecimal'].value, facilityMap)\">Zoom To These Coordinates</button>\n      </div>\n\n      <div *ngIf=\"latLongCollectionMethods && latLongCollectionMethods.length > 0\" class=\"form-group\">\n        <label>Collection Method</label>\n        <select class=\"form-select\" id=\"collectionMethodType\" name=\"collectionMethodType\" formControlName=\"collectionMethodType\"\n          [ngClass]=\"{'is-invalid':showValidation && group['controls']['collectionMethodType'].status === 'INVALID'}\">\n          <option value=\"\">--Select Collection Method--</option>\n          <option *ngFor=\"let n of latLongCollectionMethods\" [ngValue]=\"n.codeValue\">{{n.description}}</option>\n        </select>\n        <small class=\"invalid-feedback\" *ngIf=\"group['controls']['collectionMethodType'].hasError('required')\">Collection Method is required</small>\n      </div>\n\n      <div *ngIf=\"coordsOutsideOfOhio\">\n        <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"group.get('allowOutsideOfOhio')?.value!=='yes'\">\n          The Latitude and Longitude values entered are not within the state of Ohio. Please enter a latitude value\n          between 38 and 42 and a\n          longitude value between -85 and -80 or indicate below that this location is outside of Ohio.\n        </div>\n        <div>\n          <oepa-yes-no [group]=\"group\" field=\"allowOutsideOfOhio\" id=\"allowOutsideOfOhio\" [showValidation]=\"showValidation\">Is\n            this location outside of Ohio?</oepa-yes-no>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"oepa-action-component-50\">\n    <div class=\"oepa-section-component-body\">\n      <oepa-esri-map\n       #facilityMap [center]=\"mapCenter\"\n       [basemap]=\"basemapType\"\n       [zoom]=\"mapZoomLevel\"\n       (mapLoaded)=\"mapLoadedEvent($event)\"\n       [currentLatLong]=\"group.value\"\n       (onNewCoordinates)=\"updateCoordinates($event)\"\n       [showSearch]=\"true\">\n      </oepa-esri-map>\n    </div>\n  </div>\n\n</form>\n\n</div>","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { EDocumentAttachment } from './edocument-attachment';\nimport { StringResponse } from 'oepa-ebiz-lib';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class EdocAttachmentService {\n  private fileUtilUrl = '/ebiz/api/v1/fileutil'\n\n  constructor(private http: HttpClient) { }\n\n  public createEDocAttachment(eDocAttachment: EDocumentAttachment) : Observable<StringResponse> {\n    let url = this.fileUtilUrl + '/eDocumentAttachments';\n    return this.http.post(url, eDocAttachment);\n  }\n  \n  public deleteEDocAttachment(eDocAttachmentID: string) : Observable<any> {\n    let url = this.fileUtilUrl + '/eDocumentAttachments/' + eDocAttachmentID;\n    return this.http.delete(url);\n  }\n\n  public retrieveEDocAttachment(eDocAttachmentID: string): Observable<EDocumentAttachment> {\n    let url = this.fileUtilUrl + '/eDocumentAttachments/' + eDocAttachmentID;\n    return this.http.get<EDocumentAttachment>(url);\n  }\n\n  public downloadEDocAttachment(eDocAttachmentID: string): Observable<any> {\n    let url = this.fileUtilUrl + '/eDocumentAttachments/' + eDocAttachmentID + '/download';\n    const headers = new HttpHeaders();\n    headers.append('Content-type', 'application/json;odata=verbose');\n    return this.http.get(url, { headers: headers, responseType: 'blob' });\n  }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { EDocumentAttachment } from './edocument-attachment';\nimport { OepaAttachment, OepaComponentIdService, OepaFileUtilService } from 'oepa-common-lib';\nimport { EdocAttachmentService } from './edoc-attachment.service';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { ConfirmationModalComponent } from '../confirmation-modal/confirmation-modal.component';\nimport { Subject, Subscription } from 'rxjs';\n\n@Component({\n  selector: 'oepa-edoc-attachment',\n  templateUrl: './edoc-attachment.component.html',\n  styleUrls: ['./edoc-attachment.component.css']\n})\nexport class EdocAttachmentComponent implements OnInit {\n  public componentId = 'EdocAttachmentComponent';\n  public errorMsg: string = '';\n  public busy = false;\n  private deleteSubscription: Subscription | undefined;\n\n  @Input() attachment: EDocumentAttachment = {};\n  @Input() group!: FormGroup;\n  @Input() field: string = '';\n  @Input() label: string = '';\n  @Input() errorLabel: string = '';\n  @Input() showValidation = false;\n  @Input() accept: string = '';\n  @Input() removeAllowed = true;\n  @Input() okToDelete: Subject<boolean> | undefined;\n\n  @Output() fileUploaded: EventEmitter<EDocumentAttachment> = new EventEmitter<EDocumentAttachment>();\n  @Output() fileRemoved: EventEmitter<EDocumentAttachment> = new EventEmitter<EDocumentAttachment>();\n  @Output() download: EventEmitter<EDocumentAttachment> = new EventEmitter<EDocumentAttachment>();\n  \n  constructor(private idService: OepaComponentIdService,\n    private fileUtilService: OepaFileUtilService,\n    private eDocAttachmentService: EdocAttachmentService,\n    private modalService: BsModalService\n    ) { }\n\n  ngOnInit(): void {\n    if (this.group) {\n      this.componentId = this.idService.getComponentId(this.group);\n      this.componentId += (this.componentId.length > 0 ? '_' : '') + this.field;\n    }\n  }\n\n  public fileChange(event: any) {\n    this.busy = true;\n    this.errorMsg = '';\n    const fileList: FileList = event.target.files;\n    if (fileList.length > 0) {\n      const file: File = fileList[0];\n      \n      if (this.fileTypeCanBeAccepted(file)) {\n        this.fileUtilService.uploadFile(file).subscribe({\n          next: (attachment: OepaAttachment) => {\n          this.group.controls[this.field].setValue(attachment.userFilename);\n          this.attachment = this.appendOepaAttachmentData(attachment);\n          this.eDocAttachmentService.createEDocAttachment(this.attachment).subscribe(id => {\n            this.attachment.id = id.response;\n            this.fileUploaded.emit(this.attachment);\n            this.busy = false;\n          }, err => {\n            this.errorMsg = 'Error uploading file: ' + err;\n            this.busy = false;\n          });\n        }, error: err => {\n          this.errorMsg = 'Error uploading file: ' + err || '';\n          this.busy = false;\n        }});\n      } else {\n        this.errorMsg = 'Cannot accept this type of file. Please upload a file of type: ' + this.accept;\n        this.busy = false;\n      }\n    }\n  }\n\n  private appendOepaAttachmentData(oepa: OepaAttachment) : EDocumentAttachment {\n    let result = this.attachment || {};\n    result.systemFilename = oepa.systemFilename;\n    result.userFilename = oepa.userFilename;\n    result.location = oepa.location;\n    return result;\n  }\n\n  private fileTypeCanBeAccepted(file:any): boolean {\n    let ok = true;\n    if (this.accept) {\n      const mimeType = this.fileUtilService.mimeTypeForFile(file.name);\n      if (this.accept.indexOf(mimeType) < 0) {\n        ok = false;\n      }\n    }\n    return ok;\n  }\n\n  public removeFile() {\n    this.errorMsg = '';\n    const modal: BsModalRef = this.modalService.show(ConfirmationModalComponent, { ignoreBackdropClick: true });\n    (<ConfirmationModalComponent>modal.content).headerText = 'Remove Attachment';\n    (<ConfirmationModalComponent>modal.content).bodyText = 'Do you want to remove the attachment: ' + this.attachment.userFilename + '?';\n    (<ConfirmationModalComponent>modal.content).confirmBtnLabel = 'Yes';\n    (<ConfirmationModalComponent>modal.content).cancelBtnLabel = 'No';\n    (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n      this.attemptDeleteAttachment();\n    });\n  }\n\n  private attemptDeleteAttachment() {\n    this.busy = true;\n    if (!this.okToDelete) {\n      this.deleteAttachment();\n    } else {\n      if (!this.deleteSubscription) {\n        this.deleteSubscription = this.okToDelete.subscribe(ok => {\n          if (ok) {\n            this.deleteAttachment();\n          } else {\n            this.errorMsg = 'Unable to delete attachment. Reference still active.';\n            this.busy = false;\n          }\n        });\n      }\n    }\n    this.fileRemoved.emit(this.attachment);\n  }\n\n  private deleteAttachment() {\n    this.group.controls[this.field].setValue(undefined);\n    if (this.attachment.id) {\n      this.eDocAttachmentService.deleteEDocAttachment(this.attachment.id).subscribe({\n        next: () => {\n        this.clearAttachment();\n        this.busy = false;\n      }, error: err => {\n        this.errorMsg = \"Error deleting file: \" + err;\n        this.busy = false;\n      }});\n    }\n  }\n\n  private clearAttachment() {\n    this.attachment.id = undefined;\n    this.attachment.userFilename = undefined;\n    this.attachment.location = undefined;\n    this.attachment.eDocHandleID = undefined;\n    this.attachment.systemFilename = undefined;\n    this.group.controls[this.field].setValue('');\n  }\n\n  public downloadFile(attachment: EDocumentAttachment) {\n    this.errorMsg = '';\n    if (!attachment.systemFilename || attachment.systemFilename.length === 0) {\n      this.downloadEDocFile(attachment);\n    } else {\n      this.downloadServerFile(attachment);\n    }\n  }\n\n  private downloadEDocFile(attachment: EDocumentAttachment) {\n    if (attachment.id) {\n      this.eDocAttachmentService.downloadEDocAttachment(attachment.id).subscribe({\n        next: data => {\n          const mimeType = this.fileUtilService.mimeTypeForFile(attachment.userFilename || '');\n          if (mimeType) {\n            this.fileUtilService.downloadFile(data, mimeType);\n            this.download.emit(attachment);\n          } else {\n            this.errorMsg = 'Unable to download file: ' + attachment.userFilename + '. Cannot determine mime type';\n          }\n        }, error: err => {\n          this.errorMsg = 'Error downloading file: ' + attachment.userFilename + ': ' + err;\n        }\n      });\n    }\n  }\n\n  private downloadServerFile(attachment: EDocumentAttachment) {\n    this.fileUtilService.downloadAttachment(attachment).subscribe({\n      next: data => {\n        const mimeType = this.fileUtilService.mimeTypeForFile(attachment.systemFilename || '');\n        if (mimeType) {\n          this.fileUtilService.downloadFile(data, mimeType);\n        } else {\n          this.errorMsg = 'Unable to download file: ' + attachment.userFilename + '. Cannot determine mime type';\n        }\n      }, error: err => {\n        this.errorMsg = 'Error downloading file: ' + attachment.userFilename + ': ' + err;\n      }\n    });\n  }\n\n}\n","<form [formGroup]=\"group\">\n    <div *ngIf=\"!attachment || !attachment.userFilename\" class=\"form-group\">\n        <div>\n            <label *ngIf=\"label\">{{label}}</label>\n            <div class=\"form-group\">\n                <div class=\"input-group\">\n                    <span *ngIf=\"!busy\" class=\"input-group-btn\">\n                        <label class=\"btn btn-primary btn-file\">\n                            Browse&hellip;\n                            <input type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\"\n                                [id]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n                                [attr.accept]=\"accept ? accept : null\"\n                                [disabled]=\"group.controls[field].status === 'DISABLED'\">\n                        </label>\n                    </span>\n                    <span *ngIf=\"busy\"> <span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n                    <input [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\"\n                        type=\"text\" class=\"form-control\" placeholder=\"No file chosen\" [id]=\"componentId+'_Input'\" readonly>\n                    <small class=\"invalid-feedback\"\n                        *ngIf=\"showValidation && group.controls[field].status === 'INVALID'\">{{errorLabel || label}} is\n                        required</small>\n                </div>\n                <!-- dummy input field for validation purposes -->\n                <input type=\"text\" [hidden]=\"true\" [formControlName]=\"field\" />\n            </div>\n        </div>\n    </div>\n    <div *ngIf=\"attachment && attachment.userFilename\">\n        <div>\n            <label *ngIf=\"label\">{{label}}</label>\n            <div class=\"input-group\">\n                <a (click)=\"downloadFile(attachment)\" [id]=\"componentId+'_DownloadFileLink'\" \n                    class=\"form-control\">{{attachment.userFilename}}</a>\n                <span *ngIf=\"removeAllowed && !busy\" class=\"input-group-btn\">\n                    <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveFileBtn'\"\n                        (click)=\"removeFile()\"\n                        [disabled]=\"group.controls[field].status === 'DISABLED'\">Remove Attachment</button>\n                </span>\n                <span *ngIf=\"busy\"> <span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n            </div>\n        </div>\n    </div>\n    <div *ngIf=\"errorMsg\" class=\"alert alert-danger\" role=\"alert\">{{errorMsg}}</div>\n</form>","import { Pipe, PipeTransform } from '@angular/core';\nimport orderBy from 'lodash/orderBy';\n\n/**\n * Utility class to not hardcode sort directions\n */\nexport class SortOptions {\n    /**\n     * Static property to defined ASC and DESC values\n     * to avoid hardcoding and repeating\n     * replaces string enums\n     */\n    static direction: {\n        ASC: string,\n        DESC: string\n    } = {\n        ASC: 'ASC',\n        DESC: 'DESC'\n    };\n}\n\n/**\n * Pipe used to sort arrays by using lodash\n * Takes array and array of 2 strings(parameters), key and direction\n * direction must be either ASC or DESC\n */\n@Pipe({\n    name: 'arraySort'\n})\nexport class ArraySortPipe implements PipeTransform {\n\n    transform(array: Array<any>, args: string[]): Array<string> | Array<any> {\n\n        array = array || [];\n\n        if (typeof args === 'undefined' || args.length !== 2) {\n            return array;\n        }\n\n        const [key, direction] = args;\n\n        if (direction !== SortOptions.direction.ASC && direction !== SortOptions.direction.DESC) {\n            return array;\n        }\n\n        // if there is no key we assume item is of string type\n        return orderBy(array, (item: any | string) => item.hasOwnProperty(key) ? item[key] : item, (direction === SortOptions.direction.DESC ? 'desc' : 'asc'));\n    }\n}\n\n/**\n * Pipe used to filter array, takes input array and\n * array of 2 arguments, key of object and search term\n * if key does not exist, pipe assumes the item is string\n */\n@Pipe({\n    name: 'arrayFilter'\n})\nexport class ArrayFilterPipe implements PipeTransform {\n\n    transform(array: Array<any>, args: string[]): Array<string> | Array<any> {\n\n        array = array || [];\n\n        if (typeof args === 'undefined' || args.length !== 2 ) {\n            return array;\n        }\n\n        const [key, searchTerm] = args;\n\n        if (!searchTerm || searchTerm.trim() === '') {\n            return array;\n        }\n\n        return array.filter((item: any) => item[key].toString().toLowerCase().search(searchTerm.toLowerCase().trim()) >= 0);\n    }\n}\n","declare var require: any;\nimport { Component, Input, Output, EventEmitter, OnInit, forwardRef } from '@angular/core';\nimport { FormGroup, FormBuilder, FormControl, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { debounceTime, map, distinctUntilChanged, tap } from 'rxjs/operators';\nimport { ToastrService } from 'ngx-toastr';\nimport { IItemsMovedEvent } from './items-moved-event';\nimport { IListBoxItem } from './list-box-item';\nimport intersectionWith from 'lodash/intersectionWith';\nimport differenceWith from 'lodash/differenceWith';\n\n/**\n * NOTE: This code is a modified version of the project: https://www.npmjs.com/package/ng2-dual-list-box\n * LICENSE: MIT © [Eldar Granulo](mailto:eldar32@gmail.com)\n */\n\n@Component({\n  selector: 'oepa-dual-list-box',\n  templateUrl: './dual-list-box.component.html',\n  styleUrls: ['./dual-list-box.component.css'],\n  providers: [{\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DualListBoxComponent),\n      multi: true\n  }]\n})\nexport class DualListBoxComponent implements OnInit, ControlValueAccessor {\n\n  // array of items to display in left box\n  @Input() set available(items: Array<any>) {\n      this.availableItems = [...(items || []).map((item: any, index: number) => ({\n          value: item[this.valueField].toString(),\n          text: item[this.textField]\n      }))];\n  };\n  // array of items to display in right box\n  @Input() set selected(items: Array<any>) {\n      this.selectedItems = [...(items || []).map((item: any, index: number) => ({\n          value: item[this.valueField].toString(),\n          text: item[this.textField]\n      }))];\n  };\n  // input to set search term for available list box from the outside\n  @Input() set availableSearch(searchTerm: string) {\n      this.searchTermAvailable = searchTerm;\n      this.availableSearchInputControl.setValue(searchTerm);\n  };\n  // input to set search term for selected list box from the outside\n  @Input() set selectedSearch(searchTerm: string) {\n      this.searchTermSelected = searchTerm;\n      this.selectedSearchInputControl.setValue(searchTerm);\n  };\n  // field to use for value of option\n  @Input() valueField = 'id';\n  // field to use for displaying option text\n  @Input() textField = 'name';\n  // text to display as title above component\n  @Input() title: string = '';\n  // time to debounce search output in ms\n  @Input() debounceTime = 500;\n  // show/hide button to move all items between boxes\n  @Input() moveAllButton = true;\n  // text displayed over the available items list box\n  @Input() availableText = 'Available items';\n  // text displayed over the selected items list box\n  @Input() selectedText = 'Selected items';\n  // set placeholder text in available items list box\n  @Input() availableFilterPlaceholder= 'Filter...';\n  // set placeholder text in selected items list box\n  @Input() selectedFilterPlaceholder = 'Filter...';\n  // field to use for html id\n  @Input() idField = 'id';\n  // disable component\n  @Input() set disabled(disabled: boolean) {\n      if (this.listBoxForm) {\n          if (disabled) {\n              this.listBoxForm.disable();\n          } else {\n              this.listBoxForm.enable();\n          }\n      }\n  }\n  @Input() listSize = 10;\n\n  @Input() sortBy = 'text';\n\n  @Input() maxSelectableItems: number | undefined = undefined;\n\n  // event called when item or items from available items(left box) is selected\n  @Output() onAvailableItemSelected: EventEmitter<{} | Array<{}>> = new EventEmitter<{} | Array<{}>>();\n  // event called when item or items from selected items(right box) is selected\n  @Output() onSelectedItemsSelected: EventEmitter<{} | Array<{}>> = new EventEmitter<{} | Array<{}>>();\n  // event called when items are moved between boxes, returns state of both boxes and item moved\n  @Output() onItemsMoved: EventEmitter<IItemsMovedEvent> = new EventEmitter<IItemsMovedEvent>();\n\n  // private variables to manage class\n  searchTermAvailable = '';\n  searchTermSelected = '';\n  availableItems: Array<IListBoxItem> = [];\n  selectedItems: Array<IListBoxItem> = [];\n  listBoxForm: FormGroup;\n  availableListBoxControl: FormControl = new FormControl();\n  selectedListBoxControl: FormControl = new FormControl();\n  availableSearchInputControl: FormControl = new FormControl();\n  selectedSearchInputControl: FormControl = new FormControl();\n\n  // control value accessors\n  _onChange = (_: any) => { };\n  _onTouched = () => { };\n\n  constructor(public fb: FormBuilder, private toastr: ToastrService) { \n    this.listBoxForm = this.fb.group({\n        availableListBox: this.availableListBoxControl,\n        selectedListBox: this.selectedListBoxControl,\n        availableSearchInput: this.availableSearchInputControl,\n        selectedSearchInput: this.selectedSearchInputControl\n    });\n  }\n\n  ngOnInit() {\n    this.availableListBoxControl\n        .valueChanges\n        .subscribe((items: Array<{}>) => this.onAvailableItemSelected.emit(items));\n    this.selectedListBoxControl\n        .valueChanges\n        .subscribe((items: Array<{}>) => this.onSelectedItemsSelected.emit(items));\n    this.availableSearchInputControl\n        .valueChanges.pipe(\n            debounceTime(this.debounceTime),\n            distinctUntilChanged(),\n            tap((search: string) => this.searchTermAvailable = search)\n        ).subscribe();\n    this.selectedSearchInputControl\n        .valueChanges.pipe(\n            debounceTime(this.debounceTime),\n            distinctUntilChanged(),\n            tap((search: string) => this.searchTermSelected = search)\n        ).subscribe();\n  }\n  /**\n   * Move all items from available to selected\n   */\n  moveAllItemsToSelected(): void {\n    this.toastr.clear();\n      if (!this.availableItems.length) {\n          return;\n      }\n      if (this.maxSelectableItems && (this.availableItems.length + this.selectedItems.length > this.maxSelectableItems)) {\n        this.toastr.info('Only ' + this.maxSelectableItems + ' items may be added to ' + this.selectedText, '', { disableTimeOut: false, timeOut: 5000 });\n        return;\n      }\n      this.selectedItems = [...this.selectedItems, ...this.availableItems];\n      this.availableItems = [];\n      this.onItemsMoved.emit({\n          available: this.availableItems,\n          selected: this.selectedItems,\n          movedItems: this.availableListBoxControl.value,\n          from: 'available',\n          to: 'selected'\n      });\n      this.availableListBoxControl.setValue([]);\n      this.writeValue(this.getValues());\n  }\n\n  /**\n   * Move all items from selected to available\n   */\n  moveAllItemsToAvailable(): void {\n    this.toastr.clear();\n\n      if (!this.selectedItems.length) {\n          return;\n      }\n      this.availableItems = [...this.availableItems, ...this.selectedItems];\n      this.selectedItems = [];\n      this.onItemsMoved.emit({\n          available: this.availableItems,\n          selected: this.selectedItems,\n          movedItems: this.selectedListBoxControl.value,\n          from: 'selected',\n          to: 'available'\n      });\n      this.selectedListBoxControl.setValue([]);\n      this.writeValue([]);\n  }\n\n  /**\n   * Move marked items from available items to selected items\n   */\n  moveMarkedAvailableItemsToSelected(): void {\n    this.toastr.clear();\n    let pendingItems = intersectionWith(this.availableItems, this.availableListBoxControl.value, (item: IListBoxItem, value: string) => item.value === value);\n    if (this.maxSelectableItems && (pendingItems.length + this.selectedItems.length > this.maxSelectableItems)) {\n        this.toastr.info('Only ' + this.maxSelectableItems + ' items may be added to ' + this.selectedText, '', { disableTimeOut: false, timeOut: 5000 });\n        return;\n      }\n      // first move items to selected\n      this.selectedItems = [...this.selectedItems,\n          ...intersectionWith(this.availableItems, this.availableListBoxControl.value,\n              (item: IListBoxItem, value: string) => item.value === value)];\n      // now filter available items to not include marked values\n      this.availableItems = [...differenceWith(this.availableItems, this.availableListBoxControl.value,\n          (item: IListBoxItem, value: string) => item.value === value)];\n      // clear marked available items and emit event\n      this.onItemsMoved.emit({\n          available: this.availableItems,\n          selected: this.selectedItems,\n          movedItems: this.availableListBoxControl.value,\n          from: 'available',\n          to: 'selected'\n      });\n      this.availableListBoxControl.setValue([]);\n      this.availableSearchInputControl.setValue('');\n      this.writeValue(this.getValues());\n  }\n\n  /**\n   * Move marked items from selected items to available items\n   */\n  moveMarkedSelectedItemsToAvailable(): void {\n    this.toastr.clear();\n\n      // first move items to available\n      this.availableItems = [...this.availableItems,\n          ...intersectionWith(this.selectedItems, this.selectedListBoxControl.value,\n              (item: IListBoxItem, value: string) => item.value === value)];\n      // now filter available items to not include marked values\n      this.selectedItems = [...differenceWith(this.selectedItems, this.selectedListBoxControl.value,\n          (item: IListBoxItem, value: string) => item.value === value)];\n      // clear marked available items and emit event\n      this.onItemsMoved.emit({\n          available: this.availableItems,\n          selected: this.selectedItems,\n          movedItems: this.selectedListBoxControl.value,\n          from: 'selected',\n          to: 'available'\n      });\n      this.selectedListBoxControl.setValue([]);\n      this.selectedSearchInputControl.setValue('');\n      this.writeValue(this.getValues());\n  }\n\n  /**\n   * Move single item from available to selected\n   * @param item\n   */\n  moveAvailableItemToSelected(item: IListBoxItem): void {\n\n      this.availableItems = this.availableItems.filter((listItem: IListBoxItem) => listItem.value !== item.value);\n      this.selectedItems = [...this.selectedItems, item];\n      this.onItemsMoved.emit({\n          available: this.availableItems,\n          selected: this.selectedItems,\n          movedItems: [item.value],\n          from: 'available',\n          to: 'selected'\n      });\n      this.availableSearchInputControl.setValue('');\n      this.availableListBoxControl.setValue([]);\n      this.writeValue(this.getValues());\n  }\n\n  /**\n   * Move single item from selected to available\n   * @param item\n   */\n  moveSelectedItemToAvailable(item: IListBoxItem): void {\n\n      this.selectedItems = this.selectedItems.filter((listItem: IListBoxItem) => listItem.value !== item.value);\n      this.availableItems = [...this.availableItems, item];\n      this.onItemsMoved.emit({\n          available: this.availableItems,\n          selected: this.selectedItems,\n          movedItems: [item.value],\n          from: 'selected',\n          to: 'available'\n      });\n      this.selectedSearchInputControl.setValue('');\n      this.selectedListBoxControl.setValue([]);\n      this.writeValue(this.getValues());\n  }\n\n  /**\n   * Function to pass to ngFor to improve performance, tracks items\n   * by the value field\n   * @param index\n   * @param item\n   */\n  trackByValue(index: number, item: any): string {\n      return item[this.valueField];\n  }\n\n  /* Methods from ControlValueAccessor interface, required for ngModel and formControlName - begin */\n  writeValue(value: any): void {\n      if (this.selectedItems && value && value.length > 0) {\n          this.selectedItems = [...this.selectedItems,\n              ...intersectionWith(this.availableItems, value, (item: IListBoxItem, val: string) => item.value === val)];\n          this.availableItems = [...differenceWith(this.availableItems, value,\n              (item: IListBoxItem, val: string) => item.value === val)];\n      }\n      this._onChange(value);\n  }\n\n  registerOnChange(fn: (_: any) => {}): void {\n      this._onChange = fn;\n  }\n\n  registerOnTouched(fn: () => {}): void {\n      this._onTouched = fn;\n  }\n  /* Methods from ControlValueAccessor interface, required for ngModel and formControlName - end */\n\n  /**\n   * Utility method to get values from\n   * selected items\n   */\n  private getValues(): string[] {\n      return (this.selectedItems || []).map((item: IListBoxItem) => item.value);\n  }\n\n}\n\n","<div class=\"row\" [formGroup]=\"listBoxForm\">\n    <div class=\"col-md-5 col-lg-5 col-sm-12\">\n        <h4 class=\"text-center vertical-spacing-5\">{{availableText}}</h4>\n        <input type=\"text\" class=\"form-control vertical-spacing-5\" placeholder=\"{{availableFilterPlaceholder}}\"\n               formControlName=\"availableSearchInput\" />\n        <select class=\"form-control list-box\" formControlName=\"availableListBox\" multiple [size]=\"listSize\">\n            <option *ngFor=\"let item of availableItems | arrayFilter:['text', searchTermAvailable] | arraySort:[sortBy, 'ASC'];trackBy:trackByValue\"\n                    [value]=\"item?.value\"\n                    [id]=\"item?.value+'Option'\"\n                    (dblclick)=\"moveAvailableItemToSelected(item)\">{{item?.text}}</option>\n        </select>\n    </div>\n    <div class=\"col-md-2 col-lg-2 col-sm-12 center-block text-center\">\n        <button type=\"button\"\n                class=\"btn btn-primary col-md-8 col-md-offset-2 atr top80 sm-spacing\"\n                [disabled]=\"listBoxForm.disabled\"\n                [id]=\"idField+'MoveAllBtn'\"\n                *ngIf=\"moveAllButton\" (click)=\"moveAllItemsToSelected()\">\n            <span class=\"bi bi-list-task\"></span>\n            <span class=\"bi bi-chevron-right\"></span>\n        </button>\n        <button type=\"button\"\n                class=\"btn btn-primary col-md-8 col-md-offset-2 str vertical-spacing-5 sm-spacing\"\n                [disabled]=\"listBoxForm.disabled || !availableListBoxControl.value?.length\"\n                [id]=\"idField+'MoveOneBtn'\"\n                (click)=\"moveMarkedAvailableItemsToSelected()\">\n            <span class=\"bi bi-chevron-right\"></span>\n        </button>\n        <button type=\"button\"\n                class=\"btn btn-primary col-md-8 col-md-offset-2 stl vertical-spacing-5 sm-spacing\"\n                [disabled]=\"listBoxForm.disabled || !selectedListBoxControl.value?.length\"\n                [id]=\"idField+'MoveOneLeftBtn'\"\n                (click)=\"moveMarkedSelectedItemsToAvailable()\">\n            <span class=\"bi bi-chevron-left\"></span>\n        </button>\n        <button type=\"button\"\n                class=\"btn btn-primary col-md-8 col-md-offset-2 atl bottom10 sm-spacing\"\n                [disabled]=\"listBoxForm.disabled\"\n                [id]=\"idField+'MoveAllLeftBtn'\"\n                *ngIf=\"moveAllButton\" (click)=\"moveAllItemsToAvailable()\">\n            <span class=\"bi bi-chevron-left\"></span>\n            <span class=\"bi bi-list-task\"></span>\n        </button>\n    </div>\n    <div class=\"col-md-5 col-lg-5 col-sm-12\">\n        <h4 class=\"text-center vertical-spacing-5\">{{selectedText}}</h4>\n        <input type=\"text\" class=\"form-control vertical-spacing-5\" placeholder=\"{{selectedFilterPlaceholder}}\"\n               formControlName=\"selectedSearchInput\" />\n        <select class=\"form-control list-box\" formControlName=\"selectedListBox\" multiple [size]=\"listSize\">\n            <option *ngFor=\"let item of selectedItems | arrayFilter:['text', searchTermSelected] | arraySort:[sortBy, 'ASC'];trackBy:trackByValue\"\n                    [value]=\"item?.value\"\n                    (dblclick)=\"moveSelectedItemToAvailable(item)\">{{item?.text}}</option>\n        </select>\n    </div>\n</div>\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { OepaFileUtilService, OepaComponentIdService } from 'oepa-common-lib';\nimport { LynxAttachment } from 'oepa-ebiz-lib';\nimport { ConfirmationModalComponent } from '../confirmation-modal/confirmation-modal.component';\n\n@Component({\n  selector: 'oepa-lynx-image-upload',\n  templateUrl: './lynx-image-upload.component.html',\n  styleUrls: ['./lynx-image-upload.component.css']\n})\nexport class LynxImageUploadComponent implements OnInit {  \n  componentId = 'LynxImageUploadComponent';\n  formDisabled: boolean = false;\n  errorMessage: string = '';\n  \n  @Input() group!: FormGroup;\n  @Input() field: string = '';;\n  @Input() projectID: string = '';;\n  @Input() label: string = 'Upload an image';\n  @Input() errorLabel: string = 'An image';\n  @Input() image: LynxAttachment = {};\n  @Input() showValidation = false;\n  @Input() required = true;\n  @Input() accept: string = '';;\n  @Input() imageBlobUrl: string | ArrayBuffer | null = null;\n\n  @Output() onImageUpload: EventEmitter<LynxAttachment> = new EventEmitter<LynxAttachment>();\n  @Output() onImageRemove: EventEmitter<LynxAttachment> = new EventEmitter<LynxAttachment>();\n  @Output() onImageDownload: EventEmitter<LynxAttachment> = new EventEmitter<LynxAttachment>();\n\n  constructor(private idService: OepaComponentIdService,\n    private modalService: BsModalService,\n    private fileUtil: OepaFileUtilService) { }\n\n  ngOnInit() {\n    if (this.group) {\n      this.componentId = this.idService.getComponentId(this.group);\n      this.componentId += (this.componentId.length > 0 ? '_' : '') + this.field;\n    }\n    if (this.image && this.image.id) {\n      this.downloadImage(this.image);\n    }\n  }\n\n  public fileChange(event: any) {\n    this.errorMessage = '';\n    const fileList: FileList = event.target.files;\n    if (fileList.length > 0) {\n      const file: File = fileList[0];\n      if (this.fileTypeCanBeAccepted(file)) {\n        this.fileUtil.uploadFile(file).subscribe((attachment: LynxAttachment) => {\n          this.group.controls[this.field].setValue(attachment.userFilename);\n          this.onImageUpload.emit(attachment);\n        }, err => {\n          this.errorMessage = 'Error uploading file ' + err || '';\n        });\n      } else {\n        this.errorMessage = 'Cannot accept this type of file. Please upload a file of type: ' + this.accept;\n      }\n    }\n  }\n  \n  private fileTypeCanBeAccepted(file:any): boolean {\n    let ok = true;\n    if (this.accept) {\n      const mimeType = this.fileUtil.mimeTypeForFile(file.name);\n      if (this.accept.indexOf(mimeType) < 0) {\n        ok = false;\n      }\n    }\n    return ok;\n  }\n  \n  downloadImage(image: LynxAttachment) {\n    if (!image.systemFilename || image.systemFilename.length === 0) {\n      this.onImageDownload.emit(image);\n    } else {\n      this.fileUtil.downloadAttachment(image).subscribe({\n        next: doc => {\n          const mimeType = this.fileUtil.mimeTypeForFile(image.userFilename || '');\n          const blob = new Blob([doc], { type: mimeType });\n          this.createImageFromBlob(blob);\n        }, error: err => {\n          this.errorMessage = 'Error downloading file: ' + image.userFilename + ': ' + err;\n        }\n    });\n    }\n  }\n\n  createImageFromBlob(image: Blob) {\n    let reader = new FileReader();\n    reader.addEventListener(\"load\", () => {\n      this.imageBlobUrl = reader.result;\n    }, false);\n    if (image) {\n      reader.readAsDataURL(image);\n    }\n  }\n\n  removeImage() {    \n    this.errorMessage = '';\n    const modal: BsModalRef = this.modalService.show(ConfirmationModalComponent, { ignoreBackdropClick: true });\n    (<ConfirmationModalComponent>modal.content).headerText = 'Remove Image';\n    (<ConfirmationModalComponent>modal.content).bodyText = 'Do you want to remove the image: ' + this.image.userFilename + '?';\n    (<ConfirmationModalComponent>modal.content).confirmBtnLabel = 'Yes';\n    (<ConfirmationModalComponent>modal.content).cancelBtnLabel = 'No';\n    (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n      this.group.controls[this.field].setValue(undefined);\n      this.onImageRemove.emit(this.image);\n    });\n  }\n}\n","<form [formGroup]=\"group\">\n    <div *ngIf=\"!imageBlobUrl\">\n            <label class=\"btn btn-primary btn-file\">\n                    Browse&hellip;\n                    <input type=\"file\" style=\"display: none;\" (change)=\"fileChange($event)\" \n                      [id]=\"componentId+'_BrowseBtn'\" [name]=\"componentId+'_BrowseBtn'\" class=\"form-control\"\n                      [attr.accept]=\"accept ? accept : null\"\n                      [disabled]=\"group.controls[field].status === 'DISABLED'\">\n                  </label>\n            <span>&nbsp;Click the button on the left to upload an image from your computer.</span>\n    </div>\n    <div *ngIf=\"imageBlobUrl\">\n        <div class=\"row\">\n            <div class=\"col-sm-12\">\n                <img [src]=\"imageBlobUrl\" [id]=\"componentId+'_Image'\" width=\"200\">\n            </div>\n            <br/>\n            <div class=\"col-sm-12\">\n                <label>{{image.userFilename}}</label>\n            </div>\n            <div class=\"col-sm-12\">\n                <button type=\"button\" class=\"btn btn-primary\" [id]=\"componentId+'_RemoveImageBtn'\" [name]=\"componentId+'_RemoveImageBtn'\"\n                    (click)=\"removeImage()\" [disabled]=\"group.controls[field].status === 'DISABLED'\">Remove Image</button>\n            </div>\n        </div>\n    </div>\n    <div *ngIf=\"errorMessage\" class=\"alert alert-danger\">{{errorMessage}}</div>\n</form>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\nimport { OepaMappingService, OEPAReference } from 'oepa-common-lib';\nimport { OepaTableColumn } from '../table/oepa-table-column';\nimport { OepaTableRow } from '../table/oepa-table-row';\nimport { OepaTableConfig } from '../table/oepa-table-config';\nimport { OepaTableHeader } from '../table/oepa-table-header';\nimport { OepaActionEvent } from '../action-btn/oepa-action-event';\nimport { ConfirmationModalComponent } from '../confirmation-modal/confirmation-modal.component';\nimport { Note } from './oepa-note';\n\n\n@Component({\n  selector: 'oepa-notes-modal',\n  templateUrl: './notes-modal.component.html',\n  styleUrls: ['./notes-modal.component.css']\n})\nexport class NotesModalComponent implements OnInit {\n  public newNoteForm!: FormGroup;\n  public newNoteType!: OEPAReference;\n  public newNoteText: string = '';\n  public isCreating = false;\n\n  private _defaultNoteType!: OEPAReference;\n  private _notes: Note[] = [];\n\n  @Input() loginName: string = '';\n  @Input() deleteAnyNoteAllowed = false;\n  @Input() deleteOwnNoteAllowed = false;\n  @Input() createNoteAllowed = false;\n  @Input() external = false;\n  @Input() errorMessage: string = '';\n\n  \n  @Input() \n  public set notes(notes: Note[]) {\n    this.isCreating = false;\n    this._notes = notes;\n    this.loadData(notes);\n  }\n\n  public get notes() {\n    return this._notes;\n  }\n\n\n  @Input()\n  public set defaultNoteType(type: OEPAReference) {\n    this._defaultNoteType = type;\n    this.newNoteType = type;\n  }\n\n  public get defaultNoteType() {\n    return this._defaultNoteType;\n  }\n\n  @Output() onAddNote: EventEmitter<Note> = new EventEmitter<Note>();\n  @Output() onDeleteNote: EventEmitter<Note> = new EventEmitter<Note>();\n\n    // Table elements\n    public data: Array<OepaTableRow> = [];\n\n    public tblConfig: OepaTableConfig = {\n    };\n  \n    public header: OepaTableHeader = {\n      columns: this.getColumns()\n    };\n\n  constructor(private fb: FormBuilder, public bsModalRef: BsModalRef, private modalService: BsModalService,\n              private mappingService: OepaMappingService) { \n  }\n\n  ngOnInit() {    \n    this.initializeTable();\n    this.createForm();\n  }\n\n  private initializeTable() {\n    this.header = {\n      columns: this.getColumns()\n    };\n    this.loadData(this.notes);\n  }\n\n  private getColumns(): Array<OepaTableColumn> {\n    const columns: Array<OepaTableColumn> = [\n      { title: 'Note', id: 'note' },\n    ];\n\n    if (!this.external) {\n      columns.push({ title: 'Type', id: 'type' });\n      columns.push({ title: 'Account', id: 'account' });\n    }\n\n    columns.push({ title: 'Date', id: 'date' });\n\n    if (this.deleteAnyNoteAllowed || this.deleteOwnNoteAllowed) {\n      columns.push({ title: 'Actions', id: 'actions', actionColumn: true, className: 'action-btn-col' });\n    }\n\n    return columns;\n  }\n\n  private loadData(notes: Array<Note>) {\n    this.data = [];\n    if (notes && notes.length) {\n      notes.forEach((note) => {\n        this.data.push(this.convertNoteToTableRow(note));\n      });\n      this.data = this.data.splice(0);\n    }\n  }\n\n  private convertNoteToTableRow(note: Note): OepaTableRow {\n    const row: OepaTableRow = {\n      cells: [\n        { id: 'note', value: note.comment },\n        { id: 'type', value: note.type ? note.type.name : '' },\n        { id: 'account', value: note.user },\n        { id: 'date', value: note.noteDate ? this.mappingService.mapDateToDateTimeString(new Date(note.noteDate)): null, \n                sortValue: note.noteDate }\n      ],\n      dataSource: note\n    };\n    // only display delete action if note can be deleted\n    if ((this.deleteAnyNoteAllowed || (this.deleteOwnNoteAllowed && this.loginName === note.user)) && note.type?.code !== 'System') {\n      row.actions = [\n        { title: 'Delete', className: 'fa fa-remove' }\n      ];\n    } else {\n      row.actions = [\n        { title: 'NA', className: undefined }\n      ];\n    }\n    return row;\n  }\n\n  private createForm() {\n    if (this.newNoteForm === undefined) {\n      this.newNoteForm = this.fb.group({\n        newNoteText: ['', [Validators.required]]\n      });\n\n      this.newNoteForm.controls['newNoteText'].valueChanges.subscribe(newNoteText => this.newNoteText = newNoteText);\n    } else {\n      this.newNoteForm.reset();\n    }\n  }\n\n  createNote() {\n    this.isCreating = true;\n    this.errorMessage = '';\n    const note: Note = {\n      type: this.newNoteType,\n      noteDate: new Date(),\n      comment: this.newNoteText,\n      user: this.loginName\n    };\n    this.onAddNote.emit(note);\n  }\n\n  noteActionClicked(event: OepaActionEvent) {\n    if (event.action.title === 'Delete') {\n      const modal: BsModalRef = this.modalService.show(ConfirmationModalComponent, { ignoreBackdropClick: true });\n      (<ConfirmationModalComponent>modal.content).headerText = 'Confirm delete';\n      (<ConfirmationModalComponent>modal.content).bodyText = 'Once a note is deleted it cannot be undone! Do you really want to do this?';\n      (<ConfirmationModalComponent>modal.content).confirmBtnLabel = 'Yes';\n      (<ConfirmationModalComponent>modal.content).cancelBtnLabel = 'No';\n      (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n        this.onDeleteNote.emit(event.data);\n      });\n    }\n  }\n\n  done() {\n    this.bsModalRef.hide();\n  }\n\n}\n","<div class=\"modal-header\">\n\t<h3 class=\"modal-title\">Notes</h3>\n</div>\n\n<div class=\"modal-body\">\n\t\n  <div *ngIf=\"errorMessage\">\n\t\t<div class=\"alert alert-danger\" role=\"alert\">{{ errorMessage }}</div>\n  </div>\n\n  <div *ngIf=\"data.length === 0\" class=\"alert alert-info text-center\"><em>There are no notes defined.</em></div>\n\n  <oepa-table [config]=\"tblConfig\" [data]=\"data\" [header]=\"header\" (actionClicked)=\"noteActionClicked($event)\"></oepa-table>\n\n   \t\n\t<form *ngIf=\"createNoteAllowed\" class=\"form-horizontal\">\n    \n    <hr>\n\t\n    <div [formGroup]=\"newNoteForm\" class=\"form-group\">\n\n      <div class=\"row\">\n          <label class=\"col-sm-2 control-label\">Type:</label>\n            <div class=\"col-sm-10\">\n                <span class=\"form-control\" id=\"NoteTypeText\">{{newNoteType.name}}</span>\n            </div>\n      </div>\n\n      <div class=\"row\">\n          <label class=\"col-sm-12 control-label\"></label>    \n      </div>\n\n      <div class=\"row\">\n          <label class=\"col-sm-2 control-label\">Note:</label>\n            <div class=\"col-sm-10\">\n                <input class=\"form-control\" type=\"input\" formControlName=\"newNoteText\" id=\"NoteInput\" maxlength=\"2000\"/>\n            </div>\n      </div>\n\n      <div class=\"row\">\n          <label class=\"col-sm-12 control-label\"></label>    \n      </div>\n\n      <div class=\"row\">\n          <label class=\"col-sm-2 control-label\"></label>\n          <div class=\"col-sm-10\">\n              <span *ngIf=\"isCreating\"><span class=\"spinner-border text-primary\" role=\"status\"></span></span>\n              <button *ngIf=\"!isCreating\" class=\"btn btn-primary mr-1\" id=\"AddNoteBtn\" (click)=\"createNote()\" [disabled]=\"newNoteForm.invalid\">\n                <span>Add Note</span>\n              </button>\n            </div>\n      </div>\n\n\n    </div>  \n  </form> <!-- form -->\n    \n</div>\n\t\n<div class=\"modal-footer\">\n\t<button class=\"btn btn-primary mr-1\" id=\"DoneBtn\" (click)=\"done()\">Done</button>\n</div>\n","import { Component, OnInit, Input } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { HttpClient } from '@angular/common/http';\n\n@Component({\n  selector: 'oepa-params-help-button',\n  templateUrl: './params-help-button.component.html',\n  styleUrls: ['./params-help-button.component.css']\n})\nexport class ParamsHelpButtonComponent implements OnInit {\n  public helpURL: string = '';\n\n  @Input() title = 'Click here for instructions or call (614) 466-0061';\n  @Input() anchorClass = '';\n\n  constructor(private router: Router, private http: HttpClient) { }\n\n  ngOnInit() {\n    const helpURLParamName = this.router.url.replace(new RegExp('/', 'g'), '.');\n    this.http.get('/ebiz/api/v1/gateway/helpURLs/' + helpURLParamName, { responseType: 'text' }).subscribe({\n      next: url => {\n      if (url && url.length > 0) {\n        this.helpURL = url;\n      } else {\n        console.log('Help URL was empty for: ' + helpURLParamName);\n      }\n    }, error: err => {\n      console.log('Failed retrieving Help URL for: ' + helpURLParamName + ' - ' + err);\n    }});\n  }\n\n}\n","<a *ngIf=\"helpURL\" [href]=\"helpURL\" [class]=\"anchorClass\" target=\"_blank\" [title]=\"title\">\n  <i class=\"bi bi-question-circle\"></i>\n</a>\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { OepaAttestation } from './oepa-attestation';\nimport { OepaSecurityQuestion } from './oepa-security-question';\nimport { OepaPin } from './oepa-pin';\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class OepaPinService {\n  private pinsUrl = '/ebiz/api/v1/pins';\n\n  constructor(private http: HttpClient) {\n  }\n\n  /**\n   * Retrieve an attestation by id.\n   * @param attestationID\n   */\n  public retrieveAttestationByID(attestationID: string): Observable<OepaAttestation> {\n    return this.http.get<OepaAttestation>(this.pinsUrl + '/attestationId/' + attestationID);\n  }\n\n  /**\n   * Retrieve an attestation of the specified type.\n   * @param attestationType\n   */\n  public retrieveAttestation(attestationType: string): Observable<OepaAttestation> {\n    return this.http.get<OepaAttestation>(this.pinsUrl + '/attestation/' + attestationType);\n  }\n\n  /**\n   * Retrieve a random security question for the current user.\n   */\n  public retrieveSecurityQuestion(): Observable<OepaSecurityQuestion> {\n    return this.http.get<OepaSecurityQuestion>(this.pinsUrl + '/securityQuestion');\n  }\n\n  /**\n   * Validate the pin entered by a user.\n   * @param pin\n   */\n  public validate(pin: OepaPin): Observable<boolean> {\n    return this.http.post<boolean>(this.pinsUrl + '/validate', pin);\n  }\n\n  /**\n   * \n   * @param userID Retrieve the Pin for the specified userID\n   * @returns OepaPin\n   */\n  public retrievePin(userID: string): Observable<OepaPin> {\n    return this.http.get<OepaPin>(this.pinsUrl + '/' + userID);\n  }\n\n}\n","import { Component, OnInit, Input, Output, Optional, Inject, EventEmitter  } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\nimport { OepaUserAccountService, OepaUserAccount } from 'oepa-common-lib';\nimport { OepaAttestation } from './oepa-attestation';\nimport { OepaSecurityQuestion } from './oepa-security-question';\nimport { OepaPinService } from './oepa-pin.service';\n\n@Component({\n  selector: 'oepa-pin-modal',\n  templateUrl: './pin-modal.component.html',\n  styleUrls: ['./pin-modal.component.css']\n})\nexport class PinModalComponent implements OnInit {\n  private _attestationID = '';\n\n  @Input()\n  set attestationID(id: string) {\n    this._attestationID = id;\n    this.retrieveAttestations(id);\n  }\n  get attestationID() {\n    return this._attestationID;\n  }\n\n  @Input() submitCallback!: () => Observable<any>;\n  @Input()  submittingComponent: any;\n\n  @Output() close: EventEmitter<void> = new EventEmitter<void>();\n\n  public imageRoot = '/AngularWebApp/assets/images';\n\n  public oepaSubmissionForm!: FormGroup;\n  public pinAttestation: OepaAttestation = {};\n  public serviceAttestation: OepaAttestation = {};\n  public securityQuestion: OepaSecurityQuestion = { question:  '' };\n  public noPin = false;\n  public loadingQuestion = false;\n  public submitInProgress = false;\n  public submitDisabled = false;\n  public errorMessage: string = '';\n  public showValidation = false;\n  public loadingAttestations = false;\n\n  public currentUserID: string | undefined = '';\n  public userAccount: OepaUserAccount | undefined;\n  // public parentURL: string = undefined;\n  // public parentSessionID: string = undefined;\n\n\n  constructor(private userAccountService: OepaUserAccountService, private fb: FormBuilder, private pinService: OepaPinService, public bsModalRef: BsModalRef) {\n  }\n\n  ngOnInit() {\n    this.retrieveNewSecurityQuestion();\n    this.createForm();\n    this.retrievePin();\n  }\n\n  private retrievePin() {\n    this.errorMessage = '';\n    this.userAccountService.retrieveAccountForCurrentUser().subscribe(account => {\n      if (account) {\n        this.userAccount = account;\n        this.currentUserID = account.loginName;\n        this.noPin = true;\n        if (this.currentUserID) {\n          this.pinService.retrievePin(this.currentUserID).subscribe({\n            next: (result) => {\n            if (result) {\n              if (result.status == 'ACTIVE') {\n                this.noPin = false;\n              }\n            } \n          }, error: (err) => {  \n            console.error('Could not retrieve pin:' + JSON.stringify(err));\n          }});\n        } else {\n          this.errorMessage = 'No current user';\n        }\n\n      } else {\n        console.log('No account found');\n      }\n    });\n\n  }\n\n  public submit() {\n    this.submitInProgress = true;\n    this.errorMessage = '';\n    this.showValidation = false;\n\n    // console.log('is form valid? ' + this.oepaSubmissionForm.valid);\n    const securityAnswer = this.oepaSubmissionForm.get('securityAnswer')?.value;\n    const securityPIN = this.oepaSubmissionForm.get('securityPIN')?.value;\n\n    // console.log('securityAnswer = ' + securityAnswer + ', correct answer is ' + this.securityQuestion.answer);\n    if (securityAnswer && this.securityQuestion.answer && this.securityQuestion.answer.toUpperCase() === securityAnswer.toUpperCase()) {\n      this.pinService.validate({ pin: securityPIN }).subscribe((isPINValid: boolean) => {\n        if (isPINValid) {\n          this.invokeSubmitCallback();\n        } else {\n          this.retrieveNewSecurityQuestion();\n          this.errorMessage = 'The PIN entered was incorrect. Please try again.';\n          this.submitInProgress = false;\n        }\n      }, (err) => {\n        console.error('Could not validate PIN:' + JSON.stringify(err));\n      });\n    } else {\n      this.errorMessage = 'The answer to the security question is incorrect. Please try again.';\n      this.submitInProgress = false;\n      this.showValidation = true;\n    }\n  }\n\n  public cancel() {\n    this.bsModalRef.hide();\n    this.close.emit();\n  }\n\n  private createForm() {\n    this.oepaSubmissionForm = this.fb.group({\n      securityAnswer: ['', Validators.required ],\n      securityPIN: ['', Validators.required ],\n    });\n  }\n\n  private invokeSubmitCallback() {\n    if (this.submittingComponent && this.submitCallback && this.submitCallback instanceof Function) {\n      this.submitCallback.call(this.submittingComponent).subscribe((result) => {\n        this.submitInProgress = false;\n        this.bsModalRef.hide();\n      }, (err) => {\n        this.submitInProgress = false;\n        console.error('Error processing submission: ' + JSON.stringify(err));\n        this.errorMessage = 'Submission failed: ' + err; \n      });\n    } else {\n      this.submitInProgress = false;\n      this.errorMessage = 'No submit callback defined';\n    }\n  }\n\n  private retrieveAttestations(attestationId: string) {\n    // console.log('retrieveAttestations: ' + attestationId);\n\n    this.loadingAttestations = true;\n\n    if (attestationId && attestationId.length > 0) {\n      this.pinService.retrieveAttestation('PIN').subscribe((attestation: OepaAttestation) => {\n        this.pinAttestation = attestation;\n      }, (err) => {\n        console.error('Could not retrieve PIN attestation: ' + JSON.stringify(err));\n      });\n      this.pinService.retrieveAttestationByID(attestationId).subscribe((attestation: OepaAttestation) => {\n        this.serviceAttestation = attestation;\n\n        this.loadingAttestations = false;\n\n      }, (err) => {\n        console.error('Could not retrieve attestation for service: \"' + attestationId + '\" :' + JSON.stringify(err));\n      });\n    } else {\n      console.error('ERROR: Attempt to retrieve invalid attestationId: ' + attestationId);\n    }\n  }\n\n  private retrieveNewSecurityQuestion() {\n\n    this.loadingQuestion = true;\n\n    this.pinService.retrieveSecurityQuestion().subscribe((question: OepaSecurityQuestion) => {\n      this.securityQuestion = question;\n      if (this.securityQuestion === null) {\n         this.securityQuestion = { questionID:'', question:'', answer:''  };\n      }\n      this.loadingQuestion = false;\n\n      if (!this.securityQuestion) {\n        this.errorMessage = 'There is no PIN enabled for your account. ' + \n        'To continue, you must first request a PIN by selecting the \"Request New PIN\" option from the eBusiness Center \"My Account\" menu.';\n      }\n    }, (err) => {\n      console.error('Could not retrieve security question:' + JSON.stringify(err));\n    });\n\n  }\n\n}\n","<form [formGroup]=\"oepaSubmissionForm\">\n  <div class=\"modal-body\">\n\n    <div [hidden]=\"noPin\">\n      <div class=\"card-header\">\n          <div class=\"row\" *ngIf=\"pinAttestation.text\">\n              <div class=\"col-md-12\">\n                <div class=\"well\" [innerHTML]=\"pinAttestation.text\"></div>\n              </div>\n            </div>\n      </div>\n      <br>\n      <div class=\"card-header\" *ngIf=\"serviceAttestation\">\n          <div class=\"row\" *ngIf=\"serviceAttestation.text\">\n              <div class=\"col-md-12\">\n                <div class=\"well\" [innerHTML]=\"serviceAttestation.text\">\"</div>\n              </div>\n            </div>\n      </div>\n    </div>\n    <br>\n\n    <div class=\"row\" *ngIf=\"loadingAttestations\">\n      <div class=\"col-md-12\">\n        <div class=\"alert alert-info\">\n          <span class=\"spinner-border text-primary\" role=\"status\"></span> Loading PIN information...\n        </div>\n      </div>\n    </div>\n\n    <div [hidden]=\"loadingAttestations || noPin\">\n      <div class=\"row\">\n        <div class=\"col-md-12\">\n          <div class=\"form-group\">\n            <label style=\"padding: 5px;\"><b>Security Question:</b></label>\n            <label>{{securityQuestion.question}}</label>\n            <div>\n              <input  [ngClass]=\"{'is-invalid':showValidation && !oepaSubmissionForm.controls['securityAnswer'].valid}\"\n                formControlName=\"securityAnswer\" type=\"password\" class=\"form-control\" name=\"securityAnswer\" placeholder=\"Answer\" required>\n              <small class=\"invalid-feedback\" *ngIf=\"showValidation && !oepaSubmissionForm.controls['securityAnswer'].valid\">Answer to security question is required</small>\n            </div>\n          </div>\n        </div>\n      </div>\n      <div class=\"row\">\n        <div class=\"col-md-12\">\n          <div class=\"form-group\">\n            <label><b>PIN: </b></label>\n            <div>\n              <input [ngClass]=\"{'is-invalid':showValidation && !oepaSubmissionForm.controls['securityPIN'].valid}\"\n                formControlName=\"securityPIN\" type=\"password\" class=\"form-control\" name=\"securityPIN\" placeholder=\"PIN\" required>\n              <small class=\"invalid-feedback\" *ngIf=\"showValidation && !oepaSubmissionForm.controls['securityPIN'].valid\">A valid PIN is required</small>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n    \n    <div >\n      <div class=\"row\">\n        <div class=\"col-md-12\">\n          <!-- toggle hasPin message -->\n          <div *ngIf=\"noPin\">\n            <b>Attention:</b> Before you can submit, you first must activate your PIN. Cancel this submission, save the application/report and go back to the main eBusiness Home Page. \n            Select <b>MY Account- Request New PIN</b> to get started. <br>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"row\" *ngIf=\"errorMessage\">\n      <div class=\"col-md-12\">\n        <div class=\"alert alert-danger\" role=\"alert\">{{ errorMessage }}</div>\n      </div>\n    </div>\n\n  </div>\n\n\n  <div class=\"modal-footer\">\n    <span *ngIf=\"submitInProgress === true\" id=\"wait\"><span class=\"spinner-border text-primary\" role=\"status\"></span>Please wait...&nbsp;&nbsp;</span>\n    <button class=\"btn btn-primary mr-1\" (click)=\"submit()\" [disabled]=\"submitInProgress || !oepaSubmissionForm.valid\">Submit</button>\n    <button class=\"btn btn-primary mr-1\" (click)=\"cancel()\" [disabled]=\"submitInProgress\">Cancel</button>\n  </div>\n\n</form>","import { Directive, ElementRef, HostListener, Input, AfterViewInit, Output, EventEmitter } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n  selector: '[oepaNumericInput]'\n})\nexport class NumericInputDirective implements AfterViewInit {\n\n  @Input() allowNegative = false;\n  @Input() digits: number = 6;\n  @Input() decimalDigits: number = 0;\n  @Input() isPercentage = false;\n  private lastValue = '';\n\n  constructor(private _el: ElementRef, private ngControl: NgControl) { \n  }\n\n  @Output() ngModelChange = new EventEmitter();\n\n  ngAfterViewInit() {\n    this.lastValue = this._el.nativeElement.value || '';\n  }\n\n  @HostListener('input', ['$event']) onInputChange(event: any) {\n    const initalValue = this._el.nativeElement.value;\n    if (initalValue != \"\") {\n      const regexp = this.buildRegexp();\n      const match = initalValue.match(regexp);\n      if (match === null || (this.isPercentage && parseFloat(initalValue) > 100)) {\n        this._el.nativeElement.value = this.lastValue;\n      } else {\n        this._el.nativeElement.value = match[0];\n        this.lastValue = this._el.nativeElement.value;\n      }\n    } else {\n      this._el.nativeElement.value = \"\";\n      this.lastValue = \"\";\n    }\n    this.ngControl.control?.patchValue(this._el.nativeElement.value);\n    this.ngModelChange.emit(this._el.nativeElement.value);\n  }\n\n  private buildRegexp() : RegExp {\n    let pattern = \"^\";\n    if (this.allowNegative) {\n      pattern += \"(-)?\";\n    }\n    if (this.digits > 0) {\n      pattern += \"([0-9]{0,\" + this.digits + \"})\";\n    }\n    if (this.decimalDigits > 0) {\n      pattern += \"(\\\\.[0-9]{0,\" + this.decimalDigits + \"})?\";\n    }\n    pattern += \"$\";\n    return new RegExp(pattern)\n  }\n\n}\n","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\nimport { OepaUserAccountService } from 'oepa-common-lib';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n  selector: 'oepa-server-timeout-modal',\n  templateUrl: './server-timeout-modal.component.html',\n  styleUrls: ['./server-timeout-modal.component.css']\n})\nexport class ServerTimeoutModalComponent implements OnInit {\n  public mm = '01';\n  public ss = '00';\n  public errorMessage = '';\n  public connectionLost = false;\n  private timeoutID: any;\n  \n  @Input() countdownSeconds = 60;\n\n  @Output() onKeepAlive: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  constructor(private userAccountService: OepaUserAccountService,\n    public bsModalRef: BsModalRef) { }\n\n  ngOnInit() {\n    this.setMMSS();\n    this.tick();\n  }\n\n  private setMMSS() {\n    let minutes = Math.floor(this.countdownSeconds/60);\n    let seconds = this.countdownSeconds % 60;\n    this.mm = (minutes < 10) ? ('0'+minutes) : (''+minutes);\n    this.ss = (seconds < 10) ? ('0'+seconds) : (''+seconds);\n  }\n\n  private tick() {\n    let me = this;\n    this.timeoutID = setTimeout(() => {\n      me.countdownSeconds--;\n      me.setMMSS();\n      if (this.countdownSeconds > 0) {\n        me.tick();\n      } else {\n        me.connectionLost = true;\n        me.userAccountService.redirectToLogout();\n      }\n    }, 1000);\n  }\n\n  public keepAlive() {\n    clearTimeout(this.timeoutID);\n    this.onKeepAlive.emit(true);\n    this.bsModalRef.hide();\n  }\n\n  public close() {\n    this.bsModalRef.hide();\n  }\n\n}\n","<div class=\"modal-header\">\n    <h4 class=\"modal-title pull-left\">\n        <span>Connection Timeout</span>\n        <span *ngIf=\"!connectionLost\">&nbsp;Pending</span>\n    </h4>\n    <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"close()\">\n        <span aria-hidden=\"true\">&times;</span>\n      </button>\n  </div>\n  <div class=\"modal-body\">\n    <div *ngIf=\"!connectionLost\">\n        Your connection is about to time out: {{mm}}:{{ss}}\n        <!-- : <countdown [config]=\"config\" (event)=\"handleEvent($event)\"></countdown> -->\n        <br/>\n        Click the button below to keep from being logged out.\n    </div>\n    <div *ngIf=\"connectionLost\">\n        Connection timeout.\n    </div>\n  </div>\n  <div class=\"modal-footer\">\n    <div class=\"row\">\n        <div *ngIf=\"errorMessage\" class=\"col-sm-12\">\n            <div  class=\"alert alert-danger\">\n                {{errorMessage}}\n            </div>\n        </div>\n    </div>\n    <div class=\"col-sm-12 text-right\">\n        <button *ngIf=\"!connectionLost\" type=\"button\" class=\"btn btn-primary mr-2\" (click)=\"keepAlive()\">Stay Logged In</button>\n        <button *ngIf=\"connectionLost\" type=\"button\" class=\"btn btn-primary mr-2\" (click)=\"close()\">Close</button>\n    </div>\n  </div>\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { ShoppingCart, ShoppingCartItem } from 'oepa-ebiz-lib';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ShoppingCartService {\n  private paymentUrl: string = '/ebiz/api/v1/payment/';\n\n  constructor(private http: HttpClient) { }\n\n  /**\n   * Retrieve a shopping cart for the current user for the provided serviceName.\n   * @param serviceName\n   * @returns Observable<ShoppingCart>\n   */\n  public retrieveShoppingCart(serviceName: string): Observable<ShoppingCart> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.paymentUrl + '/shoppingCart/' + serviceName;\n    return this.http.get<ShoppingCart>(url, { headers: headers, responseType: 'json' });\n  }\n\n  /**\n   * Store cart in the database\n   * @param cart\n   * @returns Observable<ShoppingCart>\n   */\n  public updateShoppingCart(cart: ShoppingCart): Observable<ShoppingCart> {\n    const headers = new HttpHeaders();\n    headers.append('Content-Type', 'application/json');\n    const url = this.paymentUrl + '/shoppingCart';\n    return this.http.post<ShoppingCart>(url, cart, { headers: headers, responseType: 'json' });\n  }\n\n  /**\n   * Remove the item with the type id, id, from cart and store it in the database\n   * @param id\n   * @param cart \n   * @returns Observable<ShoppingCart>\n   */\n  public removeShoppingCartItem(id: string, cart: ShoppingCart): Observable<ShoppingCart> {\n    if (id && cart && cart.cartItems) {\n      cart.cartItems = cart.cartItems.filter(item => {\n        return item.typeID !== id;\n      });\n      return this.updateShoppingCart(cart);\n    } else {\n      return of(cart);\n    }\n  }\n\n  /**\n   * Add item to cart and store it in the database\n   * @param item \n   * @param cart \n   * @returns Observable<ShoppingCart>\n   */\n  public addShoppingCartItem(item: ShoppingCartItem, cart: ShoppingCart): Observable<ShoppingCart> {\n    if (item && cart) {\n      if (!cart.cartItems) {\n        cart.cartItems = [];\n      }\n      cart.cartItems.push(item);\n      return this.updateShoppingCart(cart);\n    } else {\n      return of(cart);\n    }\n  }\n\n  /**\n   * Perform checkout for cart. This will create revenues for all items in the cart and return \n   * a transaction id for the shopping cart as a whole.\n   * @param cart\n   * @returns Observable<string>\n   */\n  public checkOut(cart: ShoppingCart): Observable<string> {\n    const headers = new HttpHeaders({ 'Content-Type': 'application/json; odata=verbose' });\n    const url = this.paymentUrl + '/shoppingCart/' + cart.serviceName + '/checkout';\n    return this.http.post<string>(url, cart, { headers: headers, responseType: 'json' });\n  }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { ShoppingCartService } from '../shopping-cart.service';\nimport { ShoppingCartItem, ShoppingCart } from 'oepa-ebiz-lib';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { ConfirmationModalComponent } from '../../confirmation-modal/confirmation-modal.component';\nimport { ShoppingCartViewParameters } from './shopping-cart-view-parameters';\nimport { OepaTableHeader } from '../../table/oepa-table-header';\nimport { OepaTableCellClickEvent } from '../../table/oepa-table-cell-click-event';\nimport { OepaTableConfig } from '../../table/oepa-table-config';\nimport { OepaTableRow } from '../../table/oepa-table-row';\n\n@Component({\n  selector: 'oepa-shopping-cart-view',\n  templateUrl: './shopping-cart-view.component.html',\n  styleUrls: ['./shopping-cart-view.component.css']\n})\nexport class ShoppingCartViewComponent implements OnInit {\n  serviceName: string;\n  title: string;\n  returnLabel: string;\n  returnUrl: string;\n  shoppingCart: ShoppingCart | undefined;\n  empty = true;\n  loading = true;\n  errorMessage: string = '';\n  imageRoot = '/AngularWebApp/assets/images';\n  checkOutInProgress = false;\n  totalColumn: string = 'itemDescription';\n  itemNumberLabel: string;\n  itemClassificationLabel: string;\n  itemNameLabel: string;\n  itemDescriptionLabel: string = '';\n\n  tblHeader: OepaTableHeader = {\n    columns: [\n      { title: 'Remove Item', id: 'deleteItem', sort: 'none', hyperlink: true, className: 'oepa-table-header-center' },\n      { title: 'Fee', id: 'fee', sort: 'none' },\n    ]\n  };\n\n  tblConfig: OepaTableConfig = {\n    classNames: ['table-bordered'],\n    hideFooter: true\n  };\n\n  tblData: Array<OepaTableRow> = [];\n\n  constructor(private router: Router,\n    private route: ActivatedRoute,\n    private modalService: BsModalService, \n    private shoppingCartService: ShoppingCartService) {\n      const params: ShoppingCartViewParameters = <ShoppingCartViewParameters>route.snapshot.data[0];\n      this.serviceName = params.serviceName;\n      this.title = params.title;\n      this.returnLabel = params.returnLabel;\n      this.returnUrl = params.returnUrl;\n      this.itemNumberLabel = params.itemNumberLabel;\n      this.itemClassificationLabel = params.itemClassificationLabel;\n      this.itemNameLabel = params.itemNameLabel;\n  }\n\n  ngOnInit() {\n    this.updateHeaders();\n    this.refresh();\n  }\n\n  /**\n   * Set headers based on the labels defined for this shopping cart\n   */\n  private updateHeaders() {\n    // process labels in reverse order since unshift places item at the beginning of the array\n    if (this.itemDescriptionLabel) {\n      this.tblHeader.columns.unshift({ title: this.itemDescriptionLabel, id: 'itemDescription', sort: 'none' });\n      this.totalColumn = 'itemDescription';\n    }\n    if (this.itemNameLabel) {\n      this.tblHeader.columns.unshift({ title: this.itemNameLabel, id: 'itemName', sort: 'none' });\n      this.totalColumn = 'itemName';\n    }\n    if (this.itemClassificationLabel) {\n      this.tblHeader.columns.unshift({ title: this.itemClassificationLabel, id: 'itemClassification', sort: 'none' });\n      this.totalColumn = 'itemClassification';\n    }\n    if (this.itemNumberLabel) {\n      this.tblHeader.columns.unshift({ title: this.itemNumberLabel, id: 'itemNumber', sort: 'none' });\n      this.totalColumn = 'itemNumber';\n    }\n  }\n\n  private refresh() {\n    this.loading = true;\n    this.errorMessage = '';\n    this.shoppingCartService.retrieveShoppingCart(this.serviceName).subscribe({\n      next: shoppingCart => {\n      this.shoppingCart = shoppingCart;\n      this.loadTable();\n      this.loading = false;\n    }, error: err => {\n      this.errorMessage = 'Failed retrieving shopping cart data: ' + err;\n      this.loading = false;\n    }});\n  }\n\n  private loadTable() {\n    this.tblData = [];\n    this.empty = true;\n    if (this.shoppingCart && this.shoppingCart.cartItems) {\n      this.shoppingCart.cartItems.forEach(cartItem => {\n        this.empty = false;\n        let row = this.convertCartItemToTableRow(cartItem);\n        this.tblData.push(row);\n      });\n      this.tblData.push({ cells : [ \n        {id: 'itemNumber', value: (this.totalColumn === 'itemNumber' ? 'Total Amount Due:' : ''), className:'oepa-table-gray oepa-table-bold' },\n        {id: 'itemClassification', value: (this.totalColumn === 'itemClassification' ? 'Total Amount Due:' : ''), className:'oepa-table-gray oepa-table-bold' },\n        {id: 'itemName', value: (this.totalColumn === 'itemName' ? 'Total Amount Due:' : ''), className:'oepa-table-gray oepa-table-bold' },\n        {id: 'itemDescription', value: (this.totalColumn === 'itemDescription' ? 'Total Amount Due:' : ''), className:'oepa-table-gray oepa-table-bold' },\n        {id:'deleteItem', value:'',className:'oepa-table-gray' },\n        {id: 'fee',  value: this.shoppingCart?.totalAmount?.formattedString, sortValue: this.shoppingCart?.totalAmount?.cents, iconClassName:'oepa-undeline-cell', className:'oepa-table-gray oepa-table-bold'}\n      ]});\n      this.tblData = this.tblData.slice();\n    }\n  }\n\n  private convertCartItemToTableRow(cartItem: ShoppingCartItem): OepaTableRow {\n    let row: OepaTableRow = {\n      cells: [\n        { id: 'itemNumber', value: cartItem.itemNumber },\n        { id: 'itemClassification', value: cartItem.itemClassification },\n        { id: 'itemName', value: cartItem.itemName },\n        { id: 'itemDescription', value: cartItem.description },\n        { id: 'deleteItem', value: '', iconClassName: 'fa fa-minus-circle', className: 'text-center' },\n        { id: 'fee', value: cartItem.unitPrice?.formattedString, sortValue: cartItem.unitPrice?.cents },\n      ],\n      dataSource: cartItem\n    }\n    return row;\n  }\n\n  onCellClick(event: OepaTableCellClickEvent) {\n    if (event.columnId === 'deleteItem') {\n      this.deleteFromCart(event.row.dataSource.typeID, event.row.dataSource.description, this.shoppingCart);\n    }\n  }\n\n  private deleteFromCart(id: string, description: string, cart: ShoppingCart | undefined) {\n    const modal: BsModalRef = this.modalService.show(ConfirmationModalComponent, { ignoreBackdropClick: true });\n    (<ConfirmationModalComponent>modal.content).headerText = 'Remove item from cart?';\n    (<ConfirmationModalComponent>modal.content).bodyText = 'Are you sure you want to remove ' + description +  ' from the shopping cart?';\n    (<ConfirmationModalComponent>modal.content).confirmBtnLabel = 'Yes';\n    (<ConfirmationModalComponent>modal.content).cancelBtnLabel = 'No';\n    (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n      this.deleteItemFromCart(id, cart);\n    });\n  }\n\n  private deleteItemFromCart(id: string, cart: ShoppingCart | undefined) {\n    if (cart) {\n      this.shoppingCartService.removeShoppingCartItem(id, cart).subscribe({\n        next: updatedCart => {\n        this.shoppingCart = updatedCart;\n        this.loadTable();\n      }, error: err => {\n        this.errorMessage = 'Failed removing item from cart: ' + err;\n      }});\n    }\n  }\n\n  goBack() {\n    this.router.navigate([this.returnUrl], { relativeTo: this.route.parent });\n  }\n\n  public onCheckout() {\n    const modal: BsModalRef = this.modalService.show(ConfirmationModalComponent, { ignoreBackdropClick: true });\n    (<ConfirmationModalComponent>modal.content).headerText = 'Checkout';\n    (<ConfirmationModalComponent>modal.content).bodyText = 'Do you want to submit all of the applications in the shopping cart?';\n    (<ConfirmationModalComponent>modal.content).confirmBtnLabel = 'Yes';\n    (<ConfirmationModalComponent>modal.content).cancelBtnLabel = 'No';\n    (<ConfirmationModalComponent>modal.content).confirmClicked.subscribe(() => {\n      this.checkout();\n    });\n  }\n\n  checkout() {\n    if (this.shoppingCart) {\n      this.errorMessage = '';\n      this.checkOutInProgress = true;\n      this.shoppingCartService.checkOut(this.shoppingCart).subscribe({\n        next: transactionID => {\n        // navigate to CBOSS payment screen\n        window.location.href = '/portal/paymentSubmissionAction.po?transactionID=' + transactionID;\n      }, error: err => {\n        this.checkOutInProgress = false;\n        this.errorMessage = 'Checkout failed: ' + err;\n      }});\n    }\n  }\n\n}\n","<div class=\"container-fluid\">\n  <div class=\"row\">\n      <div class=\" col-sm-12\">\n          <h2><b>{{title}}</b></h2>\n        </div>\n    <div *ngIf=\"loading || empty\" class=\"col-sm-12 text-center\">\n      <div class=\" alert alert-info \">\n        <h3><em>{{ loading ? 'Loading...' : 'Cart is empty' }}</em></h3>\n        <img *ngIf=\"loading\" class=\"oepa-icon\" src=\"{{imageRoot}}/blue-load.gif\" />\n      </div>\n    </div>\n    <div *ngIf=\"!loading && !empty\" class=\"col-sm-12\">\n      <oepa-table [config]=\"tblConfig\" [data]=\"tblData\" [header]=\"tblHeader\" tableId=\"ShoppingCartTable\" (cellClicked)=\"onCellClick($event)\"></oepa-table>\n    </div>\n    <div *ngIf=\"errorMessage\" class=\"col-sm-12\">\n      <div class=\"alert alert-danger\">{{errorMessage}}</div>\n    </div>\n    <div *ngIf=\"!checkOutInProgress\" class=\"col-12 text-center\">\n        <button class=\"btn btn-primary mr-2\" id=\"returnToPageButton\" (click)=\"goBack()\">\n          {{returnLabel}}</button>\n        <button *ngIf=\"!empty\" class=\"btn btn-primary mr-2\" id=\"checkoutBtn\" (click)=\"onCheckout()\">\n          Checkout</button>\n      </div>\n      <div *ngIf=\"checkOutInProgress\" class=\"col-12 text-center\">\n        <div class=\"alert alert-info\">\n          <span class=\"spinner-border text-primary\" role=\"status\"></span>\n          Checking out...\n        </div>\n      </div>\n  </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { ShoppingCart } from 'oepa-ebiz-lib'\nimport { ShoppingCartService } from '../shopping-cart.service';\nimport { ToastrService } from 'ngx-toastr';\n\n@Component({\n  selector: 'oepa-shopping-cart-summary',\n  templateUrl: './shopping-cart-summary.component.html',\n  styleUrls: ['./shopping-cart-summary.component.css']\n})\nexport class ShoppingCartSummaryComponent implements OnInit {\n\n  @Input() serviceName: string = '';\n  @Output() cartChange: EventEmitter<ShoppingCart> = new EventEmitter<ShoppingCart>();\n \n  itemsText: string = '';\n  totalCost: number | undefined = 0;\n\n  constructor(private shoppingCartService: ShoppingCartService, private toastr: ToastrService) { }\n\n  ngOnInit() {\n    this.loadCart();\n  }\n\n  private loadCart() {\n    this.itemsText = 'Loading...';\n    this.totalCost = 0;\n    this.shoppingCartService.retrieveShoppingCart(this.serviceName).subscribe({\n      next: shoppingCart => {\n      if (shoppingCart && shoppingCart.cartItems) {\n        if (shoppingCart.cartItems.length === 1) {\n          this.itemsText = 'One item';\n        } else if (shoppingCart.cartItems.length > 1) {\n          this.itemsText = shoppingCart.cartItems.length + ' items';\n        }\n      } else {\n        this.itemsText = 'No items';\n      }\n      this.cartChange.emit(shoppingCart);\n      this.totalCost = shoppingCart.totalAmount?.amount;\n    }, error: err => {\n      this.toastr.error('Failed retrieving shopping cart: ' + err);\n    }});\n  }\n\n}\n","<div class=\"cart-summary\">\n    <div class=\"cart-summary-icon\">\n      <svg version=\"1.1\" class=\"summary-icon\" xmlns=\"http://www.w3.org/2000/svg\"\n           xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 32 32\">\n        <path stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" fill=\"none\" stroke-linejoin=\"round\"\n              d=\"M2,4 L6,4 L10,20 L21,20 L25,10 L8,10 M13,10 L13,20 M18,20 L18,10 M10,15 L23,15\"/>\n        <circle fill=\"currentColor\" cx=\"11\" cy=\"24\" r=\"2\"/>\n        <circle fill=\"currentColor\" cx=\"21\" cy=\"24\" r=\"2\"/>\n      </svg>\n    </div>\n    <div class=\"cart-summary-contents\">\n      <div class=\"cart-summary-items\">\n        {{itemsText}}\n      </div>\n      <div class=\"cart-summary-cost\">\n        {{totalCost | currency}}\n      </div>\n    </div>\n  </div>\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { OepaComponentIdService } from 'oepa-common-lib';\nimport { TimeRange } from 'oepa-ebiz-lib';\nimport { FormBuilder, FormGroup } from '@angular/forms';\n\n@Component({\n  selector: 'oepa-start-end-timepicker',\n  templateUrl: './start-end-timepicker.component.html',\n  styleUrls: ['./start-end-timepicker.component.css']\n})\nexport class StartEndTimepickerComponent implements OnInit {\n  public startComponentId = 'OepaTimepickerComponent';\n  public endComponentId = 'OepaTimepickerComponent';\n\n  @Input() timeRangeInfo: TimeRange = {};\n  @Output() timeRangeInfoChange = new EventEmitter<TimeRange>();\n\n  @Input() showValidation = false;\n  @Input() isRequired = false;\n  @Input() isReadOnly = false;\n  @Input() isDisabled = false;\n  @Input() defaultTimeRange: TimeRange = {};\n\n  private offsetHours = 0;\n  public form: FormGroup;\n  validStart = true;\n  validEnd = true;\n\n  constructor(\n    private fb: FormBuilder,\n    private idService: OepaComponentIdService,\n  ) {\n    this.form = this.fb.group({\n      start: null,\n      end: null\n    });\n    \n    this.form.get(\"start\")?.valueChanges.subscribe(time => {\n      if(this.validStart) {\n        let tmpTime: Date = new Date(time);\n        tmpTime.setHours(time.getHours() - this.offsetHours);\n        this.timeRangeInfo.startHour = tmpTime.getHours();\n        this.timeRangeInfo.startMinute = tmpTime.getMinutes();\n        this.timeRangeInfo.startSecond = 0;\n      } else {\n        this.timeRangeInfo.startHour = undefined;\n        this.timeRangeInfo.startMinute = undefined;\n        this.timeRangeInfo.startSecond = undefined;\n      }\n      this.timeRangeInfoChange.emit(this.timeRangeInfo);\n    });\n    this.form.get(\"end\")?.valueChanges.subscribe(time => {\n      if(this.validEnd) {\n        let tmpTime: Date = new Date(time);\n        tmpTime.setHours(time.getHours() - this.offsetHours);\n        this.timeRangeInfo.endHour = tmpTime.getHours();\n        this.timeRangeInfo.endMinute = tmpTime.getMinutes();\n        this.timeRangeInfo.endSecond = 0;\n      } else {\n        this.timeRangeInfo.endHour = undefined;\n        this.timeRangeInfo.endMinute = undefined;\n        this.timeRangeInfo.endSecond = undefined;\n      }\n      this.timeRangeInfoChange.emit(this.timeRangeInfo);\n    });\n  }\n\n  isValidStart(event: boolean): void {\n    this.validStart = event;\n  }\n  isValidEnd(event: boolean): void {\n    this.validEnd = event;\n  }\n\n  ngOnInit() {\n    if (this.form) {\n      this.startComponentId = this.idService.getComponentId(this.form);\n      this.startComponentId += (this.startComponentId.length > 0 ? '_' : '') + ('StartTime');\n      this.endComponentId = this.idService.getComponentId(this.form);\n      this.endComponentId += (this.endComponentId.length > 0 ? '_' : '') + ('EndTime');\n    } else {\n      console.log('OOPS No datepickerForm yet');\n    }\n\n    if (!this.timeRangeInfo.startHour && this.defaultTimeRange && this.defaultTimeRange.startHour) {\n      this.timeRangeInfo.startHour = this.defaultTimeRange.startHour;\n      this.timeRangeInfo.startMinute = this.defaultTimeRange.startMinute;\n      this.timeRangeInfo.startSecond = this.defaultTimeRange.startSecond;\n    }\n    if (!this.timeRangeInfo.endHour && this.defaultTimeRange && this.defaultTimeRange.endHour) {\n      this.timeRangeInfo.endHour = this.defaultTimeRange.endHour;\n      this.timeRangeInfo.endMinute = this.defaultTimeRange.endMinute;\n      this.timeRangeInfo.endSecond = this.defaultTimeRange.endSecond;\n    }\n\n    if (this.timeRangeInfo.startHour) {\n      this.form.patchValue({\n        start: this.setTime(this.timeRangeInfo.startHour, this.timeRangeInfo.startMinute || 0),\n      });\n    }\n    if (this.timeRangeInfo.endHour) {\n      this.form.patchValue({\n        end: this.setTime(this.timeRangeInfo.endHour, this.timeRangeInfo.endMinute || 0),\n      });\n    }\n  }\n\n  setTime(hour: number, minute: number): Date {\n    let date = new Date();\n    date.setHours(hour);\n    date.setMinutes(minute);\n    date.setSeconds(0);\n    return date;\n  }\n\n}\n","<div [formGroup]=\"form\">\n  <div class=\"form-group row\">\n    <div class=\"col-sm-6\">\n      <div class=\"col-md-12 form-group\" [ngClass]=\"{'is-invalid':showValidation && isRequired && !validStart}\">\n        <div class=\"input-group\">\n          <timepicker formControlName=\"start\" [readonlyInput]=\"isReadOnly\" [id]=\"startComponentId+'_StartTime'\" [disabled]=\"isDisabled\" (isValid)=\"isValidStart($event)\"></timepicker>\n        </div>\n        <small class=\"help-block\" *ngIf=\"showValidation && isRequired && !validStart\">Time is invalid</small>\n      </div>\n    </div>\n    <div class=\"col-sm-6\">\n      <div class=\"col-md-12 form-group\" [ngClass]=\"{'is-invalid':showValidation && isRequired && !validEnd}\">\n        <div class=\"input-group\">\n          <timepicker formControlName=\"end\" [readonlyInput]=\"isReadOnly\" [id]=\"endComponentId+'_EndTime'\" [disabled]=\"isDisabled\" (isValid)=\"isValidEnd($event)\"></timepicker>\n        </div>\n        <small class=\"help-block\" *ngIf=\"showValidation && isRequired && !validEnd\">Time is invalid</small>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\nimport { OepaTemplateInfo } from 'oepa-common-lib';\n\n\n@Component({\n  selector: 'oepa-template-confirmation-modal',\n  templateUrl: './template-confirmation-modal.component.html',\n  styleUrls: ['./template-confirmation-modal.component.css']\n})\nexport class TemplateConfirmationModalComponent implements OnInit {\n  @Input() headerText: string = '';\n  @Input() content!: OepaTemplateInfo;\n  @Input() confirmBtnLabel = 'Ok';\n  @Input() cancelBtnLabel = 'Cancel';\n\n  @Output() confirmClicked: EventEmitter<void> = new EventEmitter<void>();\n  @Output() cancelClicked: EventEmitter<void> = new EventEmitter<void>();\n\n  constructor(public bsModalRef: BsModalRef) { }\n\n  ngOnInit() {\n  }\n\n  confirm() {\n    this.confirmClicked.emit();\n    this.bsModalRef.hide();\n  }\n\n  cancel() {\n    this.cancelClicked.emit();\n    this.bsModalRef.hide();\n  }\n\n}\n","<div *ngIf=\"headerText\" class=\"modal-header\">\n    <h4 class=\"modal-title pull-left\">{{headerText}}</h4>\n    <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n        <span aria-hidden=\"true\">&times;</span>\n      </button>\n  </div>\n  <div *ngIf=\"content\" class=\"modal-body\">\n    <cml-template [templateInfo]=\"content\"></cml-template>\n  </div>\n  <div class=\"modal-footer\">\n    <button *ngIf=\"confirmBtnLabel\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"confirm()\">{{confirmBtnLabel}}</button>\n    <button type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"cancel()\">{{cancelBtnLabel}}</button>\n  </div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { OepaComponentIdService } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-text-area-input',\n  templateUrl: './text-area-input.component.html',\n  styleUrls: ['./text-area-input.component.css']\n})\nexport class TextAreaInputComponent implements OnInit {\n  public componentId = 'TextAreaInputComponent';\n\n  @Input() group!: FormGroup;\n  @Input() field: string = '';\n  @Input() tableIdx: number = 0;\n  @Input() title = 'Input';\n  @Input() placeholder = '';\n  @Input() maxlength = 4000;\n\n  @Output() onValueChange: EventEmitter<string> = new EventEmitter<string>();\n\n  constructor(private idService: OepaComponentIdService) { \n  }\n\n  ngOnInit() {\n    if (this.group) {\n      this.componentId = this.idService.getComponentId(this.group) + (this.field || '') + (this.tableIdx || '');\n      this.group.get(this.field)?.valueChanges.subscribe(value => {\n        this.onValueChange.emit(value);\n      });\n    }\n  }\n}\n","<div [formGroup]=\"group\">\n<textarea class=\"form-control\" [ngClass]=\"{'is-invalid':group.controls[field].invalid}\" \ntype=\"text\" [placeholder]=\"placeholder\" [maxlength]=\"maxlength\" [formControlName]=\"field\"\n[id]=\"componentId\"></textarea>\n<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].invalid\">{{title}} is required</small>\n</div>","import { Component, OnInit, Input, Output, EventEmitter  } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\n@Component({\n  selector: 'oepa-timeout-modal',\n  templateUrl: './timeout-modal.component.html',\n  styleUrls: ['./timeout-modal.component.css']\n})\nexport class TimeoutModalComponent implements OnInit {\n  @Input() countdown = 0;\n\n  @Output() okClicked: EventEmitter<void> = new EventEmitter<void>();\n\n  constructor(public bsModalRef: BsModalRef) {} // , private idle: Idle) { }\n\n  ngOnInit() {\n    // this.idle.onTimeoutWarning.subscribe((countdown) => {\n    //   this.countdown = countdown;\n    // });\n  }\n\n  ok() {\n    this.okClicked.emit();\n    this.bsModalRef.hide();\n  }\n\n}\n","<div class=\"modal-header\">\n  <h3 class=\"modal-title\">Session Timeout Warning</h3>\n</div>\n\n<div class=\"modal-body\">\n  <div class=\"alert alert-info\">\n    Your session will timeout in {{ countdown }} seconds. If you wish to stay logged in click 'Continue'.\n  </div>\n</div>\n\n<div class=\"modal-footer\">\n  <button class=\"btn btn-primary mr-1\" id=\"continueSessionBtn\" (click)=\"ok()\">Continue</button>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-timepicker',\n  templateUrl: './timepicker.component.html',\n  styleUrls: ['./timepicker.component.css']\n})\nexport class TimepickerComponent implements OnInit {\n  public componentId = 'OepaTimepickerComponent';\n\n  @Input() group!: FormGroup;\n  @Input() field: string = '';\n  @Input() showValidation = false;\n  @Input() readonlyInput = false;\n\n  constructor(private idService: OepaComponentIdService) { }\n\n  checkValidity() {\n    for (const key in this.group.controls) {\n      if (this.group.controls.hasOwnProperty(key) && key === this.field) {\n        return this.group.controls[key].status === 'VALID';\n      }\n    }\n    return null;\n  }\n\n  ngOnInit() {\n    if (this.group) {\n      this.componentId = this.idService.getComponentId(this.group);\n    } else {\n      console.log('OOPS No group yet');\n    }\n  }\n\n}\n","<form [formGroup]=\"group\">\n  <div class=\"col-md-12 form-group\">\n    <div class=\"input-group\"  [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\">\n      <timepicker [formControlName]=\"field\" [readonlyInput]=\"readonlyInput\"></timepicker>\n    </div>\n    <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && !checkValidity()\">Time is required</small>\n  </div>\n</form>","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { OepaTableRow } from \"./oepa-table-row\";\nimport { OepaTableCell } from \"./oepa-table-cell\";\nimport { OepaTableColumn } from \"./oepa-table-column\";\n\n@Pipe({\n  name: 'cellHidden'\n})\nexport class OepaTableCellHiddenPipe implements PipeTransform {\n  transform(row: OepaTableRow, column: OepaTableColumn): boolean {\n    let hidden: boolean = false;\n    row.cells.forEach((cell: OepaTableCell) => {\n      if (cell.id === column.id) {\n        hidden = cell.hideValue || false;\n      }\n    });\n    return hidden;\n  }\n}","import { Component, OnInit, Input, Output, EventEmitter, OnChanges, SimpleChanges, ElementRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { OepaComponentIdService, OepaSmallService } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-select-input',\n  templateUrl: './select-input.component.html',\n  styleUrls: ['./select-input.component.css']\n})\nexport class SelectInputComponent implements OnInit, OnChanges {\n  public componentId = 'SelectInputComponent';\n  @Input() group!: FormGroup;\n  @Input() field: string = '';\n  @Input() tableIdx: number | undefined;\n  @Input() title = 'Select';\n  @Input() pickList: any[] = [];\n  @Input() fullList: any[] = [];\n  @Input() valueField: string = '';\n  @Input() displayField: string = '';\n  @Input() small = false;\n\n  @Output() onValueSelected: EventEmitter<string> = new EventEmitter<string>();\n\n  public internalPickList: any[] | undefined;\n\n  constructor(private idService: OepaComponentIdService, \n    private smallService: OepaSmallService,\n    private elRef: ElementRef) { \n  }\n\n  ngOnInit() {\n    this.small = this.smallService.isSmall(this.elRef.nativeElement);\n    if (this.group) {\n      this.componentId = (this.field || 'selectInput') + (this.tableIdx || this.tableIdx === 0 ? this.tableIdx : '');\n      this.group.get(this.field)?.valueChanges.subscribe(value => {\n        this.onValueSelected.emit(value);\n      });\n      this.addCurrentValueToListIfMissing();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    for (const propName in changes) {\n      if (changes.hasOwnProperty(propName)) {\n        switch (propName) {\n          case 'pickList':\n          case 'fullList':\n            this.addCurrentValueToListIfMissing();\n            break;\n        }\n      }\n    }\n  } \n\n  private addCurrentValueToListIfMissing() {\n    let currValue = this.group.get(this.field)?.value;\n    if (!this.internalPickList && this.pickList && this.pickList.length > 0) {\n      this.internalPickList = Object.assign([], this.pickList);\n    }\n    if (currValue && this.pickList && this.pickList.length > 0 && this.fullList && this.fullList.length > 0) {\n      this.internalPickList = Object.assign([], this.pickList);\n      let matches = this.pickList.filter(item => {\n        return (item[this.valueField] === currValue);\n      });\n      if (!matches || matches.length === 0 && this.fullList) {\n        let inactiveItems = this.fullList.filter(item => {\n          return (item[this.valueField] === currValue);\n        });\n        if (inactiveItems && inactiveItems.length > 0) {\n          this.internalPickList.push(inactiveItems[0]);\n        }\n      }\n    }\n  }\n\n}\n","<div [formGroup]=\"group\">\n<select class=\"form-select\" [formControlName]=\"field\" [ngClass]=\"{'is-invalid':group.controls[field].invalid, 'form-control-sm': small}\" \n [id]=\"componentId\">\n<option *ngFor=\"let item of internalPickList\" [ngValue]=\"item[valueField]\">{{item[displayField]}}</option>\n</select>\n<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].invalid\">{{title}} is required</small>\n</div>\n","import { Component, OnInit, Input, Output, EventEmitter, ElementRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { OepaComponentIdService, OepaSmallService } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-numeric-input',\n  templateUrl: './numeric-input.component.html',\n  styleUrls: ['./numeric-input.component.css']\n})\nexport class NumericInputComponent implements OnInit {\n  public componentId = 'NumericInputComponent';\n  @Input() group!: FormGroup;\n  @Input() field: string = '';\n  @Input() tableIdx: number | undefined;\n  @Input() title = 'Input';\n  @Input() small = false;\n\n  @Output() onValueChange: EventEmitter<string> = new EventEmitter<string>();\n\n  constructor(private idService: OepaComponentIdService,\n    private smallService: OepaSmallService,\n    private elRef: ElementRef) {\n  }\n\n  ngOnInit() {\n    this.small = this.smallService.isSmall(this.elRef.nativeElement);\n    if (this.group) {\n      this.componentId = this.idService.getComponentId(this.group) + (this.field || '') + (this.tableIdx || '');\n      const control = this.group.get(this.field);\n      if (control) {\n        control.valueChanges.subscribe(value => {\n          this.onValueChange.emit(value);\n          if (value < 0) {\n            control.setErrors({ negativeValue: true });\n          } else {\n            if (control.hasError('negativeValue')) {\n              const errors = { ...control.errors };\n              delete errors['negativeValue'];\n              control.setErrors(Object.keys(errors).length ? errors : null);\n            }\n          }\n        });\n      }\n    }\n  }\n}\n","<div [formGroup]=\"group\">\n    <input class=\"form-control\" [ngClass]=\"{'is-invalid':group.controls[field].invalid, 'form-control-sm': small}\" type=\"number\"\n        [formControlName]=\"field\" [id]=\"componentId\">\n    <small class=\"invalid-feedback\" *ngIf=\"group.controls[field].hasError('required')\">{{title}} is required</small>\n    <small class=\"invalid-feedback\" *ngIf=\"group.controls[field].hasError('negativeValue')\">{{title}} must not be a negative number</small>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { OepaComponentIdService } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-checkbox-input',\n  templateUrl: './checkbox-input.component.html',\n  styleUrls: ['./checkbox-input.component.css']\n})\nexport class CheckboxInputComponent implements OnInit {\n  public componentId = \"CheckboxInputComponent\";\n  @Input() group!: FormGroup;\n  @Input() field: string = '';\n  @Input() tableIdx: number | undefined;\n  @Input() title = 'Input';\n\n  @Output() onValueChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  constructor(private idService: OepaComponentIdService) { }\n\n  ngOnInit() {\n    if (this.group) {\n      this.componentId = this.idService.getComponentId(this.group) + (this.field || '') + (this.tableIdx || '');\n      this.group.get(this.field)?.valueChanges.subscribe(value => {\n        this.onValueChange.emit(value);\n      });\n    }\n  }\n\n}\n","<div [formGroup]=\"group\">\n    <input class=\"checkboxPlus\" type=\"checkbox\" [formControlName]=\"field\" [id]=\"componentId\">\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n  selector: 'oepa-date-input',\n  templateUrl: './date-input.component.html',\n  styleUrls: ['./date-input.component.css']\n})\nexport class DateInputComponent implements OnInit {\n  public componentId = 'DateInputComponent';\n  @Input() group!: FormGroup;\n  @Input() field: string = '';\n  @Input() tableIdx: number | undefined;\n  @Input() placement: string = '';\n  @Input() showValidation = true;\n  @Input() pauseChangeProcessing = false;\n\n  @Output() onValueChange: EventEmitter<Date> = new EventEmitter<Date>();\n\n  private currentDate = undefined;\n\n  constructor() { \n  }\n\n  ngOnInit() {\n    if (this.group) {\n      this.group.get(this.field)?.valueChanges.subscribe(value => {\n        if (!this.currentDate) {\n          this.currentDate = value;\n          this.onValueChange.emit(value);\n        } else if (this.currentDate !== value) {\n          this.currentDate = value;\n          this.onValueChange.emit(value);\n        }\n      });\n    }\n  }\n\n}\n","<div [formGroup]=\"group\">\n    <oepa-datepicker [group]=\"group\" [field]=\"field\" [tableIdx]=\"tableIdx\" \n    [placement]=\"placement\" [showValidation]=\"showValidation\"></oepa-datepicker>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { OepaComponentIdService } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-text-input',\n  templateUrl: './text-input.component.html',\n  styleUrls: ['./text-input.component.css']\n})\nexport class TextInputComponent implements OnInit {\n  public componentId = 'TextInputComponent';\n\n  @Input() group!: FormGroup;\n  @Input() field: string = '';\n  @Input() tableIdx: number | undefined;\n  @Input() title = 'Input';\n  @Input() placeholder = '';\n  @Input() maxlength = 4000;\n\n  @Output() onValueChange: EventEmitter<string> = new EventEmitter<string>();\n\n  constructor(private idService: OepaComponentIdService) { \n  }\n\n  ngOnInit() {\n    if (this.group) {\n      this.componentId = this.idService.getComponentId(this.group) + (this.field || '') + (this.tableIdx || '');\n      this.group.get(this.field)?.valueChanges.subscribe(value => {\n        this.onValueChange.emit(value);\n      });\n    }\n  }\n}\n","<div [formGroup]=\"group\">\n<input class=\"form-control\" [ngClass]=\"{'is-invalid':group.controls[field].invalid}\" \ntype=\"text\" [placeholder]=\"placeholder\" [maxlength]=\"maxlength\" [formControlName]=\"field\"\n[id]=\"componentId\">\n<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].invalid\">{{title}} is required</small>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-phone-number',\n  templateUrl: './phone-number.component.html',\n  styleUrls: ['./phone-number.component.css']\n})\nexport class PhoneNumberComponent implements OnInit {\n\n  public componentId = 'OepaPhoneNumberComponent';\n  /**  The form group for which this address is a member. */\n  @Input() group!: FormGroup;\n  @Input() field: string = 'phoneNumber';\n  /** Form validation will be displayed when showValidation is true. */\n  @Input() showValidation = false;\n  @Input('isSearch') public isSearch: boolean = false;\n\n  @Input('phoneLabel') public phoneLabel: string = 'Phone';\n\n  constructor(private idService: OepaComponentIdService) {\n  }\n\n  ngOnInit() {\n    if (this.group) {\n      this.componentId = this.idService.getComponentId(this.group);\n    }\n  }\n\n}\n","<div [formGroup]=\"group\">\n\t<label>{{phoneLabel}}</label>\n\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\"\n\t\tplaceholder=\"(xxx) xxx-xxxx\" [formControlName]=\"field\" [id]=\"componentId+'_PhoneInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].hasError('required')\">{{phoneLabel}} is required</small>\n\t<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].hasError('minlength')\">Please enter a valid phone number</small>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { OepaComponentIdService } from 'oepa-common-lib';\n\n@Component({\n  selector: 'oepa-zip-code',\n  templateUrl: './zip-code.component.html',\n  styleUrls: ['./zip-code.component.css']\n})\nexport class ZipCodeComponent implements OnInit {\n\n  public componentId = 'OepaZipCodeComponent';\n  /**  The form group for which this address is a member. */\n  @Input() group!: FormGroup;\n  @Input() field: string = 'postalCode';\n  /** Form validation will be displayed when showValidation is true. */\n  @Input() showValidation = false;\n  @Input() public isSearch: boolean = false;\n  @Input() public zipCodeLabel: string = 'Zip Code';\n\n  constructor(private idService: OepaComponentIdService) {\n  }\n\n  ngOnInit() {\n    if (this.group) {\n      this.componentId = this.idService.getComponentId(this.group);\n    }\n  }\n\n}\n","<div [formGroup]=\"group\">\n\t<label>{{zipCodeLabel}}</label>\n\t<input class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls[field].status === 'INVALID'}\"\n\t  [type]=\"isSearch ? 'search' : 'text'\" placeholder=\"Zip Code\" [formControlName]=\"field\" [id]=\"componentId+'_ZipInput'\" mask=\"00000\">\n\t<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].hasError('required')\">{{zipCodeLabel}} is required</small>\n\t<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].hasError('minlength')\">{{zipCodeLabel}} must contain exactly 5 digits</small>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AddressComponent } from './address/address.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ContactComponent } from './contact/contact.component';\nimport { NgxMaskDirective, NgxMaskPipe, provideNgxMask } from 'ngx-mask';\nimport { DatepickerComponent } from './datepicker/datepicker.component';\n\nimport { ButtonsModule } from 'ngx-bootstrap/buttons';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { PaginationModule } from 'ngx-bootstrap/pagination';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { TypeaheadModule } from 'ngx-bootstrap/typeahead';\nimport { AccordionModule} from 'ngx-bootstrap/accordion';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { TabsModule } from 'ngx-bootstrap/tabs';\n\nimport { ActionBtnComponent } from './action-btn/action-btn.component';\nimport { ActionBtnModalComponent } from './action-btn-modal/action-btn-modal.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { CommentModalComponent } from './comment-modal/comment-modal.component';\nimport { ConfirmationModalComponent } from './confirmation-modal/confirmation-modal.component';\nimport { AccountSearchInputComponent } from './account-search-input/account-search-input.component';\nimport { TableComponent } from './table/table.component';\nimport { PTableComponent } from './table/p-table/p-table.component';\nimport { TableHeaderCellComponent } from './table/table-header-cell/table-header-cell.component';\nimport { TableDataCellComponent } from './table/table-data-cell/table-data-cell.component';\nimport { PTableDataCellComponent } from './table/p-table/p-table-data-cell/p-table-data-cell.component';\nimport { OepaTableSortingDirective } from './table/oepa-table-sorting.directive';\nimport { OepaTableFilteringDirective } from './table/oepa-table-filtering.directive';\nimport { OepaTableCellInnerHtmlPipe } from './table/oepa-table-cell-inner-html.pipe';\nimport { CommonLibModule } from 'oepa-common-lib';\nimport { AccountSearchModalComponent } from './account-search-modal/account-search-modal.component';\nimport { OepaTableCellColSpanPipe } from './table/oepa-table-cell-colspan.pipe';\nimport { OepaTableCellValuePipe } from './table/oepa-table-cell-value.pipe';\nimport { OepaTableCellClassnamePipe } from './table/oepa-table-cell-classname.pipe';\nimport { OepaTableCellIconClassnamePipe } from './table/oepa-table-cell-icon-classname.pipe';\nimport { OepaTableCellImgSrcPipe } from './table/oepa-table-cell-img-src.pipe';\nimport { DaterangepickerComponent } from './daterangepicker/daterangepicker.component';\nimport { OEPAWaitMessageComponent } from './oepa-wait-message/oepa-wait-message.component';\nimport { OEPAErrorMessageComponent } from './oepa-error-message/oepa-error-message.component';\nimport { MessageComponent } from './message/message.component';\nimport { MessageListComponent } from './message-list/message-list.component';\nimport { FileUploadComponent } from './file-upload/file-upload.component';\nimport { MultiFileUploadComponent } from './multi-file-upload/multi-file-upload.component';\nimport { OrganizationCreateModalComponent } from './entity/organization-create-modal/organization-create-modal.component';\nimport { OrganizationSearchInputComponent } from './entity/organization-search-input/organization-search-input.component';\nimport { OrganizationSearchModalComponent } from './entity/organization-search-modal/organization-search-modal.component';\nimport { PersonCreateModalComponent } from './entity/person-create-modal/person-create-modal.component';\nimport { PersonSearchInputComponent } from './entity/person-search-input/person-search-input.component';\nimport { PersonSearchModalComponent } from './entity/person-search-modal/person-search-modal.component';\nimport { PlaceCreateModalComponent } from './entity/place-create-modal/place-create-modal.component';\nimport { PlaceSearchInputComponent } from './entity/place-search-input/place-search-input.component';\nimport { PlaceSearchModalComponent } from './entity/place-search-modal/place-search-modal.component';\nimport { YesNoComponent } from './yes-no/yes-no.component';\nimport { YesNoBooleanComponent } from './yes-no-boolean/yes-no.component';\nimport { YesNoOtherInputComponent } from './yes-no-other-input/yes-no-other-input.component';\nimport { DateInputModalComponent } from './date-input-modal/date-input-modal.component';\nimport { EbizAddressComponent } from './ebiz-address/ebiz-address.component';\nimport { EsriMapComponent } from './esri-map/esri-map.component';\nimport { OhioLatLongComponent } from './ohio-lat-long/ohio-lat-long.component';\nimport { EdocAttachmentComponent } from './edoc-attachment/edoc-attachment.component';\nimport { ArrayFilterPipe, ArraySortPipe } from './dual-list-box/array.pipes';\nimport { DualListBoxComponent } from './dual-list-box/dual-list-box.component';\nimport { LynxImageUploadComponent } from './lynx-image-upload/lynx-image-upload.component';\nimport { NotesModalComponent } from './notes-modal/notes-modal.component';\nimport { ParamsHelpButtonComponent } from './params-help-button/params-help-button.component';\nimport { PinModalComponent } from './pin-modal/pin-modal.component';\nimport { NumericInputDirective } from './numeric-input.directive';\nimport { ServerTimeoutModalComponent } from './server-timeout-modal/server-timeout-modal.component';\nimport { ShoppingCartViewComponent } from './shopping-cart/shopping-cart-view/shopping-cart-view.component';\nimport { ShoppingCartSummaryComponent } from './shopping-cart/shopping-cart-summary/shopping-cart-summary.component';\nimport { StartEndTimepickerComponent } from './start-end-timepicker/start-end-timepicker.component';\nimport { TemplateConfirmationModalComponent } from './template-confirmation-modal/template-confirmation-modal.component';\nimport { TextAreaInputComponent } from './text-area-input/text-area-input.component';\nimport { TimeoutModalComponent } from './timeout-modal/timeout-modal.component';\nimport { TimepickerComponent } from './timepicker/timepicker.component';\nimport { OepaTableCellNotSelectablePipe } from './table/oepa-table-cell-not-selectable.pipe';\nimport { OepaTableCellHiddenPipe } from './table/oepa-table-cell-hidden.pipe';\nimport { OepaTableCellInputComponentPipe } from './table/oepa-table-cell-input-component.pipe';\nimport { SelectInputComponent } from './select-input/select-input.component';\nimport { NumericInputComponent } from './numeric-input/numeric-input.component';\nimport { CheckboxInputComponent } from './checkbox-input/checkbox-input.component';\nimport { DateInputComponent } from './date-input/date-input.component';\nimport { TextInputComponent } from './text-input/text-input.component';\nimport { TableModule } from 'primeng/table';\nimport { MenuModule } from 'primeng/menu';\nimport { ButtonModule } from 'primeng/button';\nimport { PhoneNumberComponent } from './phone-number/phone-number.component';\nimport { ZipCodeComponent } from './zip-code/zip-code.component';\nimport { PActionBtnComponent } from './p-action-btn/p-action-btn.component';\n\n@NgModule({\n  declarations: [\n    AccountSearchInputComponent, AccountSearchModalComponent,\n    ActionBtnComponent, PActionBtnComponent, ActionBtnModalComponent, AddressComponent, ZipCodeComponent,\n    ArrayFilterPipe, ArraySortPipe,\n    CheckboxComponent, CheckboxInputComponent, CommentModalComponent, ConfirmationModalComponent, ContactComponent, PhoneNumberComponent,\n    DateInputComponent, DatepickerComponent, DaterangepickerComponent, DateInputModalComponent,\n    DualListBoxComponent,\n    EbizAddressComponent,\n    EdocAttachmentComponent,\n    EsriMapComponent, OhioLatLongComponent,\n    LynxImageUploadComponent,\n    FileUploadComponent, MultiFileUploadComponent,\n    MessageComponent, MessageListComponent,\n    TableComponent, PTableComponent, TableDataCellComponent, PTableDataCellComponent, TableHeaderCellComponent, OepaTableSortingDirective, OepaTableFilteringDirective, \n    NumericInputDirective,\n    OepaTableCellInnerHtmlPipe, OepaTableCellColSpanPipe, OepaTableCellValuePipe,\n    OepaTableCellClassnamePipe, OepaTableCellIconClassnamePipe, OepaTableCellImgSrcPipe,\n    OepaTableCellNotSelectablePipe, OepaTableCellHiddenPipe, OepaTableCellInputComponentPipe,\n    OEPAErrorMessageComponent, OEPAWaitMessageComponent,\n    OrganizationCreateModalComponent, OrganizationSearchInputComponent, OrganizationSearchModalComponent,\n    NotesModalComponent, NumericInputComponent, ParamsHelpButtonComponent,\n    PersonCreateModalComponent, PersonSearchInputComponent, PersonSearchModalComponent,\n    PinModalComponent,\n    PlaceCreateModalComponent, PlaceSearchInputComponent, PlaceSearchModalComponent,\n    SelectInputComponent, ServerTimeoutModalComponent,\n    ShoppingCartViewComponent, ShoppingCartSummaryComponent,\n    StartEndTimepickerComponent,\n    TemplateConfirmationModalComponent, TextAreaInputComponent, TextInputComponent, TimeoutModalComponent, TimepickerComponent,\n    YesNoComponent, YesNoBooleanComponent, YesNoOtherInputComponent\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    NgxMaskDirective, NgxMaskPipe,\n    ButtonsModule.forRoot(),\n    BsDatepickerModule.forRoot(),\n    TimepickerModule.forRoot(),\n    PaginationModule.forRoot(),\n    PopoverModule.forRoot(),\n    TooltipModule.forRoot(),\n    BsDropdownModule.forRoot(),\n    ModalModule.forRoot(),\n    TypeaheadModule.forRoot(),\n    AccordionModule.forRoot(),\n    CollapseModule.forRoot(),\n    TabsModule.forRoot(),\n    TableModule,\n    MenuModule,\n    ButtonModule,\n    CommonLibModule\n  ],\n  exports: [\n    AccountSearchInputComponent, AccountSearchModalComponent,\n    ActionBtnComponent, PActionBtnComponent, ActionBtnModalComponent, AddressComponent, ZipCodeComponent,\n    ArrayFilterPipe, ArraySortPipe,\n    CheckboxComponent, CommentModalComponent, ConfirmationModalComponent, ContactComponent, PhoneNumberComponent,\n    DatepickerComponent, DaterangepickerComponent, DateInputModalComponent,\n    DualListBoxComponent,\n    EbizAddressComponent,\n    EdocAttachmentComponent,\n    EsriMapComponent, OhioLatLongComponent,\n    LynxImageUploadComponent,\n    FileUploadComponent, MultiFileUploadComponent,\n    MessageComponent, MessageListComponent,\n    TableComponent, PTableComponent, OepaTableSortingDirective, OepaTableFilteringDirective, \n    NumericInputDirective,\n    OepaTableCellInnerHtmlPipe, OepaTableCellColSpanPipe, OepaTableCellValuePipe,\n    OepaTableCellClassnamePipe, OepaTableCellIconClassnamePipe, OepaTableCellImgSrcPipe,\n    OEPAErrorMessageComponent, OEPAWaitMessageComponent,\n    OrganizationCreateModalComponent, OrganizationSearchInputComponent, OrganizationSearchModalComponent,\n    NotesModalComponent, ParamsHelpButtonComponent,\n    PersonCreateModalComponent, PersonSearchInputComponent, PersonSearchModalComponent,\n    PinModalComponent,\n    PlaceCreateModalComponent, PlaceSearchInputComponent, PlaceSearchModalComponent,\n    ServerTimeoutModalComponent,\n    ShoppingCartViewComponent, ShoppingCartSummaryComponent,\n    StartEndTimepickerComponent,\n    TemplateConfirmationModalComponent, TextAreaInputComponent, TimeoutModalComponent, TimepickerComponent,\n    YesNoComponent, YesNoBooleanComponent, YesNoOtherInputComponent\n  ],\n  providers: [\n    provideNgxMask()\n  ]\n})\nexport class CommonFormsModule { }\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'oepa-blank',\n  templateUrl: './blank.component.html',\n  styleUrls: ['./blank.component.css']\n})\nexport class BlankComponent implements OnInit {\n\n  constructor() { }\n\n  ngOnInit() {\n  }\n\n}\n","\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { LynxProject, LynxUploadResult, LynxProjectMetadata, LynxImageMetadata, LynxAttachment } from 'oepa-ebiz-lib';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LynxService {\n  lynxUrl = '/ebiz/api/v1/lynx/';\n\n  constructor(private http: HttpClient) { }\n\n  public retrieveProjects(): Observable<Array<LynxProject>> {\n    const headers = new HttpHeaders();\n    headers.append('Content-type', 'application/json');\n    return this.http.get<Array<LynxProject>>(this.lynxUrl + 'projects', { headers: headers });\n  }\n\n  public retrieveProjectMetadata(projectID: string): Observable<LynxProjectMetadata> {\n    const headers = new HttpHeaders();\n    headers.append('Content-type', 'application/json');\n    return this.http.get<LynxProjectMetadata>(this.lynxUrl + 'metadata/' + projectID, { headers: headers });\n  }\n\n  public storeImage(attachment: LynxAttachment, projectID: string): Observable<LynxUploadResult> {\n    const headers = new HttpHeaders();\n    headers.append('Content-type', 'application/json');\n    let url = this.lynxUrl + 'project/' + projectID + '/' + 'image';\n    return this.http.post<LynxUploadResult>(url, attachment, { headers: headers });\n  }\n\n  public tagImage(imageMetadata: LynxImageMetadata, imageID: string, projectID: string): Observable<LynxUploadResult> {\n    const headers = new HttpHeaders();\n    headers.append('Content-type', 'application/json');\n    let url = this.lynxUrl + 'project/' + projectID + '/' + 'image/' + imageID + '/metadata';\n    return this.http.post<LynxUploadResult>(url, imageMetadata, { headers: headers });\n  }\n\n  public downloadImage(imageID: string): Observable<any> {\n    const headers = new HttpHeaders();\n    headers.append('Content-type', 'application/json;odata=verbose');\n    return this.http.get(this.lynxUrl + 'image' + '/' + imageID, { headers: headers, responseType: 'blob' });\n  }\n}\n","import { OepaIntegerMaskArgs } from './oepa-integer-mask-args';\n\nconst digitRegExp = /\\d/;\n\n/**\n * This function is for use with th TextMask directive and creates a mask for integers\n * of varying length. The maximum length, minimum value, and maximum value can be\n * specified using args.\n * @param args\n */\nexport function oepaCreateIntegerMask(args: OepaIntegerMaskArgs) {\n    function integerMask(rawValue = '') {\n\n        if (!rawValue || rawValue.length === 0) {\n            return [''];\n        }\n        // remove all non-integer characters\n        let integerValue = rawValue.replace(/\\D/g, '');\n\n        // ensure value does not exceed the maximum length\n        if (args.maxLength && integerValue.length > args.maxLength) {\n            integerValue = integerValue.substring(0, args.maxLength);\n        }\n\n        // ensure value is within specified min and max\n        if (args.minValue && integerValue.length >= args.minValue.toString().length && parseInt(integerValue, 10) < args.minValue) {\n            return [''];\n        }\n\n        if (args.maxValue && parseInt(integerValue, 10) > args.maxValue) {\n            return [''];\n        }\n\n        return convertToMask(integerValue);\n    }\n\n    return integerMask;\n}\n\n/**\n * Convert final value to a mask for use by the TextMask directive\n * @param strNumber\n */\nfunction convertToMask(strNumber: string) {\n    return strNumber\n        .split('')\n        .map((char) => digitRegExp);\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from \"@angular/common/http\";\nimport { Parameter } from './parameter';\n\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ParameterService {\n    protected baseUrl: string = '/ebiz/api/v1/parameters';\n\n    constructor(protected http: HttpClient) {  }\n\n    public retrieveParameterByName(parameterName: string) : Observable<Parameter> {\n        let url = this.baseUrl + '/names/' + parameterName;\n        return this.http.get<Parameter>(url);\n    }\n\n    public retrieveParameterByID(parameterID: string) : Observable<Parameter> {\n        let url = this.baseUrl + '/' + parameterID;\n        return this.http.get<Parameter>(url);\n    }\n\n    public createParameter(parameter: Parameter) : Observable<string> {\n        let url = this.baseUrl;\n        return this.http.post<string>(url, parameter);\n    }\n\n    public deleteParameter(parameterID: string) : Observable<any> {\n        let url = this.baseUrl + '/' + parameterID;\n        return this.http.delete(url);\n    }\n\n    public deleteParameterByName(parameterName: string) : Observable<any> {\n        let url = this.baseUrl + '/names/' + parameterName;\n        return this.http.delete(url);\n    }\n\n    public retrieveParameterByPrefix(prefix: string) : Observable<Parameter[]> {\n        let url = this.baseUrl + '/namePrefix/' + prefix;\n        return this.http.get<Parameter[]>(url);\n    }\n\n    public updateParameter(parameter: Parameter) : Observable<any> {\n        let url = this.baseUrl + '/' + parameter.id;\n        return this.http.put(url, parameter);\n    }\n}","import { Injectable } from '@angular/core';\nimport { FormValidator } from './form-validator';\nimport { AbstractControl, FormGroup, Validators, ValidatorFn } from '@angular/forms';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ValidationService {\n\n  constructor() { }\n\n  public processValidators(form: FormGroup, formValidators: FormValidator[]): any {\n    const fieldValidators: any = {};\n    // Need to remove all existing validators before adding new ones\n    this.removeValidators(form);\n    if (formValidators && formValidators.length > 0) {\n      formValidators.forEach(validator => {\n        this.addFormValidator(validator, fieldValidators);\n      });\n      this.addValidators(form, fieldValidators);\n      return fieldValidators;\n    }\n  }\n\n  private removeValidators(form: FormGroup) {\n    if (form && form.controls) {\n      for (const key in form.controls) {\n        form.get(key)?.clearValidators();\n        form.get(key)?.updateValueAndValidity();\n        if (form.get(key) instanceof FormGroup) {\n          this.removeValidators(<FormGroup>form.get(key));\n        }\n      }\n    }\n}\n\n  private addFormValidator(formValidator: FormValidator, fieldValidators: any) {\n    if (!fieldValidators[formValidator.field || '']) {\n      fieldValidators[formValidator.field || ''] = [];\n    }\n    fieldValidators[formValidator.field || ''].push(formValidator);\n    if (formValidator.message) {  \n      this.addFormMessage(formValidator, fieldValidators);\n    }\n  }\n\n  private addValidators(form: FormGroup, fieldValidators: any) {\n    Object.keys(fieldValidators).forEach(field => {\n      const validators = this.getValidatorsForFormValidators(fieldValidators[field]);\n      if (validators && validators.length > 0) {\n        const control = this.findFieldControl(form, field);\n        if (control) {\n          control.setValidators(validators);\n          control.updateValueAndValidity();\n        }\n      }\n    })\n  }\n\n  private getValidatorsForFormValidators(formValidators: FormValidator[]): ValidatorFn[] {\n    let validators:any[] = [];\n    if (formValidators) {\n      formValidators.forEach(formValidator => {\n        const validator = this.getValidatorForFormValidator(formValidator);\n        if (validator) {\n          validators.push(validator);\n        }\n      });\n    }\n    return validators;\n  }\n  \n  private getValidatorForFormValidator(formValidator: FormValidator): ValidatorFn | undefined {\n    let validator: ValidatorFn | undefined = undefined;\n    if (formValidator.error === 'required') {\n      validator = Validators.required;\n    } else if (formValidator.error === 'maxlength') {\n      validator = Validators.maxLength(formValidator.maxLength || 0);\n    } else if (formValidator.error === 'minlength') {\n      validator = Validators.minLength(formValidator.minLength || 0);\n    } else if (formValidator.error === 'pattern') {\n      validator = Validators.pattern(formValidator.pattern || '');\n    } else if (formValidator.error === 'email') {\n      validator = Validators.email;\n    } else if (formValidator.error === 'min') {\n      validator = Validators.min(formValidator.min || 0);\n    } else if (formValidator.error === 'max') {\n      validator = Validators.max(formValidator.max || 0);\n    }\n    return validator;\n  }\n\n  private addFormMessage(formValidator: FormValidator, fieldValidators: any) {\n    if (!fieldValidators['form']) {\n      fieldValidators['form'] = [];\n    }\n    let error = fieldValidators['form'].find((error:any) => {\n      return error.message === formValidator.message;\n    });\n    if (!error) {\n      fieldValidators['form'].push(formValidator);\n    }\n  }\n\n  public findFieldControl(form: FormGroup, field: string): AbstractControl | null {\n    let control: AbstractControl | null = null;\n    if (form.contains(field)) {\n      control = form.get(field);\n    } else if (field.match(/_id$/) && form.contains(field.substring(0, field.length - 3))) {\n      control = form.get(field.substring(0, field.length - 3));\n    } else if (field.indexOf('.') > 0) {\n      let group = form;\n      field.split('.').forEach((f) => {\n        if (group.contains(f)) {\n          control = group.get(f);\n          if (control instanceof FormGroup) group = control;\n        } else {\n          control = group;\n        }\n      })\n    } else {\n      // Field is not defined in form but there is a validation error for it, set it globally\n      control = form;\n    }\n    return control;\n  }\n}\n","/**\n * Base64 versions of image files used in OEPA code\n * Converted images to base64 using: https://base64.guru/converter/encode/image\n */\nconst BASE64_PREFIX         = 'data:image/jpeg;base64,';\n\nexport const CATALOG_IMG    = BASE64_PREFIX + 'R0lGODlhEAAQAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ywAAAAAEAAQAAAIZwAfCBz4oAAAgggJFjhg8GDCgQsLSGz4MOLEiQAcCrR4ESNEhh0xOuQYEsCBgyQ7mkSQsWFIgwcQIDC48CSAiytnojzw4IBNmDINClwp0GdOoQMzxiwaVCNBpQge6HyY1CRSqlUfBgQAOw==';\nexport const CAUTION_IMG    = BASE64_PREFIX + 'R0lGODlhEAAQALMAAAAAAP//AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAIALAAAAAAQABAAQAQ3UMgpAKC4hm13uJnWgRTgceZJllw4pd2Xpagq0WfeYrD72i5Yb+aJyVhFHAmnazE/z4tlSq0KIgA7';\nexport const CE_IMG         = BASE64_PREFIX + 'R0lGODlhFAAUAOcAAAAAAP///7OtrrOur6+qq7KsrpyYmqumqZiVl6Cdn5SQk6ikqJmXmVlYWVdWV6Gfo1dXWVVVV1paW1lZWlhYWVdXWIiJlZOUn1ZXXB0tVQEPLwEPLgZL5AZL4wZL4gZK4QZK4AZJ3wZK3wZL3wZJ3gZK3gZJ3QZK3QZJ3AVG1AIbUgZI2gQshAdK4AdK3AdI2AdI1wdI1AdI0whL2wUuhwlK2AlJ1QIRMgIQMQIQMAIQLwpM3glHzwpIzQpHywtM2AMTNw5S5QMSMwMSMhBU5RFU5gUaRw9JxQ5FuwUXPwQSMRJLzgcbSRRNyQcZQxgmRBwpRwITNwISMwMVOgMVOQMSMQs/rQYeTwQUNQUXOgUVNgkkXQ0yfwcbRBlc5wgdRwcZPgsjUQkbQAQMHAwhSg8nVRg7gg0gRQ4hSA0eQRAkTBIlSiowPFxdX1tcXlpbXQYZPREmThcyYhgzYxUrVRAgOwcOGRwxVSA4YFdgbwUPHiQ9YjdYijdYiTZWh2OZ50pvpBMbJwgQGxUiNGCPzWmb3GOMwTVPb16Hu1yEtnGi3mSMu3qo33mq43Gd0G+ayn2t4oGy536u44W27YS06Ii47IW37IW364a364Cv4Xqn1om78Im774e47Ia36oOz5YGw4Yy/84u98Ym67oa26YCu3pDD+Iy98Yu98Iu974q77oe36X6r2ZLG+pHE+ZHE+JDD95DD9o/C9Y7A842/8pXJ/ZTI/JTH+5TI+5PG+pLG+ZHE95DC9Y6/8oCs2pbK/pbJ/ZbK/ZXI/JXJ/JPG+Y+/8Ya045PF95DB8oev2FxfYrexsbawsLWvr7KtraqlpamkpFdWVlZVVVdXV1ZWVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAj+AAMIHBggGkGCGwZ24hMpwCQ8vipIOyhQBRaBUmzAmfPHihZpyyYqUYMowAZQoMgEABHFxAsaRIpsGCAgGsorN1CiHEInURkqHIJ4aQIlgQQdQFAyQQlGoKVMAYSk8FJlAbQJAQqpOUMIlBiKAVhskMasmUGBoBbtISXwkh9PASilwQUy5EGLAsMcmRLHkCMtGwoQoDay5MmUAWYkORGiyxcRIzJYwHAzp84haACZcSKDhIYNSy5AQKqUaYBPjCRBkrMlQIQnDyhk3dr1K8VKAd4gMNBmYNq1A/tgErgmwDRnzhwcTIixR5Y4inbkIMuM2t2LAVCMiQHDSAcOOA5EPGtQ2CRKlYMO3dFTggMHF2wUuKmsE9QQY6VYParzXVAeBhSQBspSoDRFUCM/2LFKMspYpxVXXoEViCYDTYSWWmwFEBAAOw==';\nexport const CHARGE_CO_IMG  = BASE64_PREFIX + 'R0lGODlhEwAQAPcAAAhzACGMEEqlMVLOMVqtrWNKIWO9vWutWmvWSmvW1nPW3nPe53vn53vv94Q5CJRrWpT395yta6XOc63OlM7nzta1jP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ywAAAAAEwAQAAAImwAtCBxIsKDBgwgFVpjA8EGFhwkWRGQAoWAACQMEDHAIUcECBQwoEARwAIEAjRwrJACpoMFIABgHZIzwMMICAwwWHBgIoGfMjA9VfmSgYKeFngECIBigNGWCBgwaVLRwAGnPqw6yOiDAlcDApAGu9tS6tevIsGLJdvU6kILYsVoJGDDAduCEt2rNFhQroECBBw8YThCZsLDhhAEBADs=';\nexport const CHECK_IMG      = BASE64_PREFIX + 'R0lGODlhEAAQAJH/AAAAAICAgADvAMDAwCH5BAEAAAMALAAAAAAQABAAQAIjnI95IQLTnJqmvRkv3UyrTEXWRpafUHbliKgHe4oeBpOSWRYAOw==';\n\nexport const DEFINITIONS_IMG = BASE64_PREFIX + 'R0lGODdhEQAQAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8EAgAGAgAIAgAKAgAMAgAOAgAABAACBAAEBAAGBAAIBAAKBAAMBAAOBAAABgACBgAEBgAGBgAIBgAKBgAMBgAOBgAACAACCAAECAAGCAAICAAKCAAMCAAOCAAACgACCgAECgAGCgAICgAKCgAMCgAOCgAADAACDAAEDAAGDAAIDAAKDAAMDAAODAAADgACDgAEDgAGDgAIDgAKDgAMDgAODgAAAAQCAAQEAAQGAAQIAAQKAAQMAAQOAAQAAgQCAgQEAgQGAgQIAgQKAgQMAgQOAgQABAQCBAQEBAQGBAQIBAQKBAQMBAQOBAQABgQCBgQEBgQGBgQIBgQKBgQMBgQOBgQACAQCCAQECAQGCAQICAQKCAQMCAQOCAQACgQCCgQECgQGCgQICgQKCgQMCgQOCgQADAQCDAQEDAQGDAQIDAQKDAQMDAQODAQADgQCDgQEDgQGDgQIDgQKDgQMDgQODgQAAAgCAAgEAAgGAAgIAAgKAAgMAAgOAAgAAggCAggEAggGAggIAggKAggMAggOAggABAgCBAgEBAgGBAgIBAgKBAgMBAgOBAgABggCBggEBggGBggIBggKBggMBggOBggACAgCCAgECAgGCAgICAgKCAgMCAgOCAgACggCCggECggGCggICggKCggMCggOCggADAgCDAgEDAgGDAgIDAgKDAgMDAgODAgADggCDggEDggGDggIDggKDggMDggODggAAAwCAAwEAAwGAAwIAAwKAAwMAAwOAAwAAgwCAgwEAgwGAgwIAgwKAgwMAgwOAgwABAwCBAwEBAwGBAwIBAwKBAwMBAwOBAwABgwCBgwEBgwGBgwIBgwKBgwMBgwOBgwACAwCCAwECAwGCAwICAwKCAwMCAwOCAwACgwCCgwECgwGCgwICgwKCgwMCgwOCgwADAwCDAwEDAwGDAwIDAwKDAwP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAAAALAAAAAARABAAAAhdAP8JBPCPoMGCAhMO/EeKocOGBBVCRHjwYMKGCjMeiCgQY8aEGyUOBGAwYsiLHxWe7DiSJEmBKx2mhMlRpkuXNEXO/BcT482XPGt6TNlzZ1CJB5IqXRqz4M+fCgMCADs=';\nexport const DELETE_IMG     = BASE64_PREFIX + 'R0lGODlhEAAQAPcAAEBAQMYAAP9AQICAgIaGhuf//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAUALAAAAAAQABAAAAhTAAsIHEiwoMGDAQQUFBDAYICHBBkGGEDw4cSIFikWsNhwoUUCHA8WkMhRoUiOEEVu5KgRIcqLHl8+bDkSJQCULW0K1FnzIYCKPjH+LBhgqEqRAQEAOw==';\nexport const DIALOG_IMG     = BASE64_PREFIX + 'R0lGODlhEwAXAPdPAP///7y/x6ywuqOps6mxuqy1vqe0u7C/xam8wYudoqi0svv+//X5//f8/+75+pKnr7TAy+7x//b5/+///4acp52rurC6yaG1yZupvoecqqCvwZ2ouoeSnu3z/qO3yZanvJakuYGMmwVBmqexy/P//8rY7pmltQZKsdPh+JCdrgZUyJKhvMva8IqWpwZTxgZe3wZi7AZe4d3s/5Ger9bk/ISPodvp/4yYqaO01dLe9cbS4pmhsd3n+cvU4peerODp/9HY9dTd+sfR6cnU5MHJ1qCns4KOk5KXqZSVr4yPqpmeuJKar42VpZWdp5KYowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANdoANAAEgATIfgqBgAAd8gAEwATIRMh0NdEAIgAEgATBhLX/B9VAEB3+Hf4Kv///9gM/x4AEnf8xxMTeCHQAAAAEwAAAPzGRAAAdwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAARLXAP//AJR//QAS2RMh0DGAAP93+P///xLZZAAAAAAAAABAAFfA4NWUfAAAEgK57f3sAAAAf0UAEwAAAP3sAAAIf5AACnf4fAAATgABACgAAHxXgxLXeAEBANwBAQAS2PgfVSUod/93+P///xLYiIM8AIh8VwAS2FeDZwAAfP8AAAK4/7qj+KP4AhgCugAAAAAAANhsAEAAEgAAAAAAANhQAAAAEgAAAAAAAAAAAAwAAAAAAAAAAgEBAF4AEnf4Nf3sAAAAfwIAAAAAABoAViHQAn8AE////wAAACHQAAUAEwAAAFc9wNisfI8AEnxXhgABTNjIANAAEgAS2AAACAAOAMAAAAK6owAAAAFMAJ4AAABAnrqj+AAAAgDAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAABLZAIlSAEx8VwAAARLY/CH5BAgyAE8ALAAAAAATABcAAAjTAAEIHEiwoMGDCBMqPBhAwAACBQwcQJBAoYIFDBo42OjgAYSEFyNI2DjBAYUKFhBevMDyAgYHGTRs4HDwYocIOCM48PABRIiCIgCsbDmCxMYSJgiKOCHi4oKcOR2gSKFUBdMFLVmu0MmihVIXVkU4gIrTQVelL8AyzbrVrNeBImC4iBGWrAMZM5TCkEt3LcuNNGronVs3qgMbN772FZEVR4QcOnYoXbygss6xPHr4UHriauUFP4AEETKESBHOIoyoNnIESRIlS5g0cQJ0oe3buAcGBAAh/gA7';\nexport const DOWNLOAD_IMG   = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAOAA4DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDQsLRPEkdzbRzOutiYyRGSUhJY+6j0I6/SmTX0Om6zJDo80jwRRCNpHckSuMbnA7DPT2p8OzR7m9sr20jvLWZw2FkKOpUnBDY475qW2spfEWs3N7IIoEZcLHGfugbQB09O9fNLXlt8V/6/rr+flKzSa3P/2Q==';\n\nexport const ERROR_IMG     = BASE64_PREFIX + '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';\nexport const EU_IMG         = BASE64_PREFIX + 'R0lGODlhGQAWAMZPAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEghhFkCFFeSBFfhhGkBlGkCdKfiJLkB1Mox9Noy1Ogh9PrB1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrClb5Cdb8y5hyydb/yte5DZkrChc/zNhyyth/y1j8yxi/y1k/zNq5EFuyzRr/zVt/zhz5EBy20Fy2zl5/zl7/z2A81uU5FuX7Eyj/1Cn/1un/16s/2qs82ux83C3+XfT/5vs/f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAEKAH8ALAAAAAAZABYAAAf+gE+Cg4SFTxsAABuGjIUnE08OKTMLTxcnjYYnBhEUBUROBBQNBpiZgxcNRkxKTU1FS0cRkIWIioQHMEg7GBg7SToHhI+Rk5UXGwsDQDUDFxcDNT8BDoubnZ+howAfNz0SF4IXEjwuGgCWqqyusEcAGSo0EOGWDzEvHOhPubu9vzobHADoAELAMwEhPAhYsCHZsmbPok1zcKCEDRIVLJjAIULYE27ewIkj52KCAhwoVgQRwkJGDgTh3sWbJ87eixMCEhwgMMQHgAMMBmAKOLDgwYQLT1xAsqDFCAdJJpgSVPFixo0iHDKztUEatUUmUapk6RLkN3rjyp17glMnT58+QGXKQ2sznyClT5o+fTKBKEGDFxAqZFgr0aJBVTFq5OjxlKCwKVe2fEnPcdudPX8GnWo5nF4HfDk7HsS1UCAAOw==';\nexport const EU_CAUTION_IMG = BASE64_PREFIX + 'R0lGODlhGQAWAMZRAAAAAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEghhFkCFFeSBFfhhGkBlGkCdKfiJLkB1Mox9Noy1Ogh9PrB1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrClb5Cdb8y5hyyte5Cdb/zZkrChc/zNhyyth/y1j8yxi/y1k/zNq5EFuyzRr/zVt/zhz5EBy20Fy2zl5/zl7/z2A81uU5FuX7Eyj/1Cn/1un/16s/2qs82ux83C3+XfT/5vs/f//AP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgB/ACwAAAAAGQAWAAAH/oBRgoOEhVEcAQEcAACGjoMoFFEPKjQAUAAoj4YoBxIVBkVPmJiam4MYDkdNS06Xr5KFiIqECDFJPBlQpJiQkpQ0DFEYHAwEQTYEl7u7ABxRnZ+hTwUVDgEgOD4TGMzLvamrrU5GTEgBGis1ERiM7owBgra4GRk8SjscDwEeIQMYGAaI+DCAAYdix5IBJGADiIAHCEzcKGHhwokcIxAIwqaNmyAME3q8oLAgRwoWQoa0kKEjAYYo6NSx+whhBgwUAxQgKEDkRwAEDQho0sfPH0CBBBmgwJCEgQsSD5RQMCVPIkWLGBEim8Wh4cNnJE2iVMmS47aXw0K+2BAPp06ePz6BxlyHFkNNGB3iQXvpFGoUCkT7/Qs4sOAzQlxrWa14MeMpQmFPplzZEu1jtzt7/gxK9TLfpw/+dn48KDGhQAA7';\nexport const EXCLUDED_EU    = BASE64_PREFIX + 'R0lGODlhGQAWAOcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOTk5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgD+ACwAAAAAGQAWAAAI/gABAPhHsKBBg0pQoFBSUKDDgwerAPm3w4oXHP+KPHwI8V8VFj6ArGBkbQUQjv8cDjxYRMekVKB48VI5saHDhQZZdNG0xohKFgYlphSIsYgSHCvefFnh8MsbFTsYfgzJVCAQHSicjGFzUmARIGu2JEGR0SXMmQIvoTiCxcvDIjy6cFlC9p9OnkZ8ClSyA4XDIkVUPGmiAoeSo0mXAq4KYIdDKkCCVBkDBei/rFuBFCH4VSUAK1nq2NHSpUyNzWvb8tickYdnFivyuEHBIseKKv/4omDiRAVgFQ5xBNcyZYcnILgLsqgiBnIQh4hvLnQKlSGQG2NA13FYBjObt2DFT5KtoqIGbIe1U3tx7TXu3LpVNjvc8Q+Ibt7ABQ4uzJCgSpzKMQfZTwapBNF12YVmh0qsoRRRebDJRttGAnVUUHz/4EAcfV05aCFBCQE4VEAAOw==';\n\nexport const FACILITY_IMG   = BASE64_PREFIX + 'R0lGODlhGQAZAOeqAP7+/vT75/7+/ff4+vX75PX84P79/vP63v37/fL0+/z8+/z8/fz7/fLz+fHz8unv0fn7+OHn4Hd8doGFhHh+eHqCd4OIgYmNi3Nxfn+EgXFvfgQCB/H18YiMiPHy8/n8+fDx+AYPDHZ6ddLT4Ly579TV5fD27uTrzQMCA/b4+nyDe/v8+tfY57m28QYFE/Ly+dzf5t/j5QMDA3mAdry+5PP46bGr9quk+KSb+ezx0ODl4vX5+6GX+ZqP+fj5+f39/fHy9vH36/H52ufuzOLpz/D18JeM+Z6U+Xtx8eDn2n5w+YV5+fr7+Yt/+JKI9eDn1NDU0dLU287TzMvTxwUED/z8/ISKg31u+bzIy+7z0cfTvT837sTRsZamkI+Xj25tf4CFg/3+/TpBx7rMvYKGgggSDNDU11hYmzc42CQf7Tg33vj4+SIe6yQh6wQDCr3Ps5qukiteLxUzGAwcD4aLh8DOsrzMt2OYZo2riAUKDrzC2CEd5iId1iMd4l6JcViTWHGkcwgXC3V0e3mBdnmme2OKg0J9RT13P0V8R1iNWj9sQn2mf2ygb2SZZmacaSxiMFyIZzFsNThzOyhUKzdePEZ1R1uHYoqphipYLVyUXliSV2CWYzdyOhxGHzNtNjBqNDt1PVqTWkFxQxk8HDtlPwMDBBAmEz1pQGmdbB9LI////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAsAAAAABkAGQAACP4AAQgcSLCgwYMJBChYACBAAAYIGjgwAOBBAQgHB0aQMIFCBQsXMGSYoGHChQsbMgrk0EGgAQ8DCigI8ODDBxAhVAJQIIIDiBEjPpAoYYIEiRMBUKhMAUDFihQsiLYgwWHqAQMuVH4AIIEAgBcwBAQoUQAEiAIxZKgUwGBGgQQkaNSwYSPCDRw5dGTNiEAAhgQ7pkbAwePDjR4gIqgt+ENgAAgdCgBhsSPIjh1CYCQYQmQvQQc+AAgoIKJAESNHDvRAkkTJEgIjPBtEQEADCANHmoBw4uSJkyUsGiwmqKOLSC9fQAR5QCTGkygRpMCAMkX2QDBVwmRxQVnMlRJbtv6MCf9EStYdWxkAqEIGgAcBZaKYOYMmwhYxD9KoMcNlww6BayCwxgpgAPBBDBsQEQEMUTxxAhQsZMGFGeYx8JIBGP6QwQoGQODCg2mkwQUbbWBBIglj5ASEAhh6AEAGKewQhhtcwLBFGk+00cYbbLAxBhxxyCHDHChEIAAAdABAAAIoEDFCHSfQoAUNUJiBBRx23IEHHHDIoIAAKbRngg55SFeCHmbswYcdfYjhxx+AALJlIFCMKcgPE0wgCB0iDCJDHWKIQcgdhRhyCCJ/JHKHIhWMQYgFJiAgKQw6TBEIHo0A8ocjjsTxCCR/HBLJI5JMAoklAhQBQAQmPHEJJkqZOKLJJpxEIkknmRxiSCSedOKHBCosYFMEEbxRCSKPJALIJ6D0GgoioogyCimJdEkkkaXIEIgppxgihymVhIvKsXJMkoopgcgQEAA7';\nexport const FOLDER_CLOSED_IMG = BASE64_PREFIX + 'R0lGODdhEQAQAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8EAgAGAgAIAgAKAgAMAgAOAgAABAACBAAEBAAGBAAIBAAKBAAMBAAOBAAABgACBgAEBgAGBgAIBgAKBgAMBgAOBgAACAACCAAECAAGCAAICAAKCAAMCAAOCAAACgACCgAECgAGCgAICgAKCgAMCgAOCgAADAACDAAEDAAGDAAIDAAKDAAMDAAODAAADgACDgAEDgAGDgAIDgAKDgAMDgAODgAAAAQCAAQEAAQGAAQIAAQKAAQMAAQOAAQAAgQCAgQEAgQGAgQIAgQKAgQMAgQOAgQABAQCBAQEBAQGBAQIBAQKBAQMBAQOBAQABgQCBgQEBgQGBgQIBgQKBgQMBgQOBgQACAQCCAQECAQGCAQICAQKCAQMCAQOCAQACgQCCgQECgQGCgQICgQKCgQMCgQOCgQADAQCDAQEDAQGDAQIDAQKDAQMDAQODAQADgQCDgQEDgQGDgQIDgQKDgQMDgQODgQAAAgCAAgEAAgGAAgIAAgKAAgMAAgOAAgAAggCAggEAggGAggIAggKAggMAggOAggABAgCBAgEBAgGBAgIBAgKBAgMBAgOBAgABggCBggEBggGBggIBggKBggMBggOBggACAgCCAgECAgGCAgICAgKCAgMCAgOCAgACggCCggECggGCggICggKCggMCggOCggADAgCDAgEDAgGDAgIDAgKDAgMDAgODAgADggCDggEDggGDggIDggKDggMDggODggAAAwCAAwEAAwGAAwIAAwKAAwMAAwOAAwAAgwCAgwEAgwGAgwIAgwKAgwMAgwOAgwABAwCBAwEBAwGBAwIBAwKBAwMBAwOBAwABgwCBgwEBgwGBgwIBgwKBgwMBgwOBgwACAwCCAwECAwGCAwICAwKCAwMCAwOCAwACgwCCgwECgwGCgwICgwKCgwMCgwOCgwADAwCDAwEDAwGDAwIDAwKDAwP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAAAALAAAAAARABAAAAhpAP8JHEiwoMGDCBMibMGQIQCFLexJ/PWrxcODLWxp3GirYcOBESWKHGnvl62LESmqXPnr1kmBKVm2nPnyX0yZt1rWvEkxp0+TKEuy/OkyqEqiLYvCtIfU5y2lNjlK5XjxH4CrWLNmFRgQADs=';\nexport const FOLDER_OPEN_IMG = BASE64_PREFIX + 'R0lGODdhEgAQAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8EAgAGAgAIAgAKAgAMAgAOAgAABAACBAAEBAAGBAAIBAAKBAAMBAAOBAAABgACBgAEBgAGBgAIBgAKBgAMBgAOBgAACAACCAAECAAGCAAICAAKCAAMCAAOCAAACgACCgAECgAGCgAICgAKCgAMCgAOCgAADAACDAAEDAAGDAAIDAAKDAAMDAAODAAADgACDgAEDgAGDgAIDgAKDgAMDgAODgAAAAQCAAQEAAQGAAQIAAQKAAQMAAQOAAQAAgQCAgQEAgQGAgQIAgQKAgQMAgQOAgQABAQCBAQEBAQGBAQIBAQKBAQMBAQOBAQABgQCBgQEBgQGBgQIBgQKBgQMBgQOBgQACAQCCAQECAQGCAQICAQKCAQMCAQOCAQACgQCCgQECgQGCgQICgQKCgQMCgQOCgQADAQCDAQEDAQGDAQIDAQKDAQMDAQODAQADgQCDgQEDgQGDgQIDgQKDgQMDgQODgQAAAgCAAgEAAgGAAgIAAgKAAgMAAgOAAgAAggCAggEAggGAggIAggKAggMAggOAggABAgCBAgEBAgGBAgIBAgKBAgMBAgOBAgABggCBggEBggGBggIBggKBggMBggOBggACAgCCAgECAgGCAgICAgKCAgMCAgOCAgACggCCggECggGCggICggKCggMCggOCggADAgCDAgEDAgGDAgIDAgKDAgMDAgODAgADggCDggEDggGDggIDggKDggMDggODggAAAwCAAwEAAwGAAwIAAwKAAwMAAwOAAwAAgwCAgwEAgwGAgwIAgwKAgwMAgwOAgwABAwCBAwEBAwGBAwIBAwKBAwMBAwOBAwABgwCBgwEBgwGBgwIBgwKBgwMBgwOBgwACAwCCAwECAwGCAwICAwKCAwMCAwOCAwACgwCCgwECgwGCgwICgwKCgwMCgwOCgwADAwCDAwEDAwGDAwIDAwKDAwP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAAAALAAAAAASABAAAAhvAP8JHEiwoMGDCBMqHNiiYcOF/1oUlJhQ4q+LFyM6fMjwH8aPBG0B6Pix5EWRAjeqdGjrF0pSFkve+nVLpC2UET1inEnTJYCbI1Pq3EnzVgsAR0n2nHmrqcikHZkWdXo0aMqVKgFYFai1q1ev/wICADs=';\n\nexport const GLOBAL_HELP_IMG = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD84QzQ5Ojf/2wBDAQoKCg0MDRoPDxo3JR8lNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzf/wAARCAARABEDASIAAhEBAxEB/8QAGQABAQADAQAAAAAAAAAAAAAAAAQDBQYH/8QAMBAAAQIGAAIFDQAAAAAAAAAAAQIEAAMFBhExEiEXNUGx0RMVMkJRU1RhcnORkuH/xAAYAQADAQEAAAAAAAAAAAAAAAACBAUDBv/EACURAAEDAQYHAAAAAAAAAAAAABEAAQIhAwQFEjFRIzM0QUJScf/aAAwDAQACEQMRAD8AqqV6N6pXnMyrhzPpUlKw0ZSVcKJih6JmHIyDvt37N2P6wq3WVFqtOb+bXLniU4pomEy5koHkopOsjR3zjm7ht5xblwJluUqlsjPCpLkoKklGc67SBseMZqkyd3VeDlFMnmo+UUnLoSihATwgZI9UDXzxy3CplXddu1hdnaDx5YL6gaDbuXNSy9L6RaB71f4HjCIOi6k/ETf1/sI14ih5cJ9pLq7i6ldfSO8RLaHVJ+6ruEIQfkp8elf6t5CEIJKL/9k=';\nexport const GREEN_DOT_IMG  = BASE64_PREFIX + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAfNJREFUeNqkk8FrE1EQxn9vu5tt2NpNUCuNidAepBavgiB6s3iSerCiWMWD4K3/gaL/QW4FDwFbFBURPHjxUFA81YOCKFKr0jSxtiEhJW0iSXd9b7svPrS3PJi37Mw33858MyvCMKSXY9Hj6ZnAVpcQwvQJLnKVBucJOBV/5i0DvOAp8/Kt27NqX0TXXwLLusCdIznr9vTZm+QOj0TOYuk7c6/us1IM7gXPuStdwV4EljfNteEhUbh1eYYTuTNk/dGIYLX+jcXia2Yf5fm5Ht7YmuOBIlG5drds2Y7TZvL4sVE6os7X2jsWyy+jYDo5FPlUrFJanpSuh9LaqgiTwHGTnNxJb/CltkCldRDH3g2sbcN6c4OddBWFUVhpHZNAHSfpIqrBJlnPxko0sOWM7D5IyOC2FbBc20RhYoJmdwpaQNfhvS+YSA9W8SQkIaGOpZSVDUvkvlVQGHP8JkHQb7Ew2GQik4KkjOx3M7i2R7W5RJ8LqRYojJ6CuUhqtu0PeZ41ShTKPyDjnWPMv8KYd53hgSnWVmCrTEFhtICReMYYVTW+tOxUnkupo5w+NJIbt12fX0sfP1U+8+bJDI/VVKXVlYj/7oEwSA7Ez/64wlacVNHJu3v0/yZqEjc2rZFK+B1bR5e/F4FJpE1rFJr/gSb4I8AAqDq2qYWWlrEAAAAASUVORK5CYII=';\nexport const GREEN_CHECK_IMG = BASE64_PREFIX + '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';\n\nexport const ICON_DOC_IMG = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAQABADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDpR4n0y4sItT1iS8fzXZHeO4dAhXyywC4xgCTII9Pxq5NqeoR6NLqdiiWE2lIkm2QF2njMSttkxtyTznI/iyAGANWdY0vw5oE76eLyKxhaBWSCaSN925iG5lV2wRGnA4+UcZ5rH1bWtJHh3WoU1iG6ubuMnJlQs5ChQPlRewFelOUanwLQ5NY7s//Z';\nexport const ICON_DWG_IMG = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAQABADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwC1Fr3iGbU1srKe6umjhSVv311IW/dxsQQjju+M8Dp9av3moeMNFb7dDcPdR2ymSQqZp4iVVhIjfvWUbGDKeQQVzXM6xp93o/iSa3v7dkZI9gcI7I+I0AZSBznbx6Hg1p38l5431gQRG7nuXt7eKOTyxHHH8pM2/K5PzHjGOp5wAK9LlpqCk0tjyXKtKo4Jta/I/9k=';\nexport const ICON_PDF_IMG = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAQABADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDVuU+K9w+JbJ5JlQZ3/YWAHPT9a6nwo/iC18PWt/qVtGbp2MkzI6KfL3YAKINp+UZyDnn610mta1Z6Pc/6TeWdtJOiLGbq4SJRy2W+YjIHHA55FY8Or6JBZyWdr4t0y6Vo3WOD7TG8jsQcAENknPOMHrgcYxjCHJLRt+p6NfFLEUvejGLvpZWvv2P/2Q==';\nexport const ICON_TXT_IMG = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAQABADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD1HVPtN3rN2TqV9bQW0kcQitI3fdlFbJC5/vMORjO3PTBs6Za3Gl61awtfTXCXcEjsJN2AUEYGASSOWb8MZyQSaWtRwxajeLfBliuLiORCIRKSoiCkhdj8546D6+tzSnW61TTzbW9ylvaW8sZeaERZLFCMAAD+E9hRKEebmSBSex//2Q==';\nexport const ICON_XLS_IMG = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAARABEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDrofEFhqWkLq161zczNK8TRxXDRsCqBvlQ9VG7nHT3qxqd/eWVm15pclvC2mRCXzAGkFynlRMVYjaHyXPPoc4BwatahBonhSSTTLa/TTrWSNZTbSTqQ5Yspb94rseEUY6cVz+r6vo6aBqkFtqlnM89uQoVk3E7EUKNqqMAJwB+VVhaFRO8tjjinDd6nr9FFFSdgUUUUAFFFFAH/9k=';\nexport const INACTIVE_USER_IMG = BASE64_PREFIX + 'R0lGODlhEwAQAPcAAAAAAP///wEBAaqqqry8vOrq6pSUlHh4eHR0dFxcXDAwMGNjYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAEwAQAAAIbAAPCARAMIBBgwUPClx4gKDDhwAMMmQI8WEAigAwAhhAgODEAA4pchyQkSHCkAxJfjyJcqLAgyxbUoQJsuLEhAdtuowI8+HNlSw/ejR5cmICBTVXGlXAVEECmRcXJpiaYMGCqQVdHqDZk+fCgAA7';\nexport const INSIGNIFICANT_EU_IMG = BASE64_PREFIX + 'R0lGODlhGQAXAPcAAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEghhFkCFFeSBFfhhGkBlGkCdKfiJLkB1Mox9Noy1Ogh9PrB1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrClb5Cdb8y5hyydb/yte5DZkrChc/zNhyyth/y1j8yxi/y1k/zNq5EFuyzRr/zVt/zhz5EBy20Fy2zl5/zl7/z2A81uU5FuX7Eyj/1Cn/1un/16s/2qs82ux83C3+XfT/5vs/f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAGQAXAAAIpQCfCBxIsKDBgwgTKlzIsKHDhCcAPDSI4ccOIj9qPASQQuADJBmRhGgIwIkDB0QAYKhRwEGGGhIX/kgBskYGHg86AuARM+FODA0A1Ahxk0cNHiMX7nzwxEGIGAAeYOggleGDEDkBdOiwIUWGDD96KgwhNAOGBzwwZHiyUyzCkhgczFAZ4uSDDm4T5vTIAymPDhMHYgixcmtgghEPK17MuLHjxwwDAgA7';\nexport const INSIGNIFICANT_EU_CAUTION_IMG = BASE64_PREFIX + 'R0lGODlhGQAWAMZCAAAAAA8PAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEgiFFeSBFfhhGkBlGkCdKfiJLkB1Moy1Ogh1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrCdb8y5hyydb/yhc/zNhyyth/y1j8yxi/y1k/0Fuyzhz5EBy20Fy2zl7/z2A81uU5Fun/16s/3C3+fz/CP//AP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAsAAAAABkAFgAAB86AQoKDhIWGh4iJiouMjY6KGwIBAI+DJggVAUABQZSVGA8/mpyeiCYUECgNQhsNBZpBsUEbiQgTBzwGFQIeM7CcnYkJLjYZNj4bEAIfBBgEHQS0hxsFOQUYBTEDEAkyIxclIQmJAikwGEIYES0mBAkGNwIOBYmRHM0EIAQNJj0NIhAomFCUgMQICyVotMoWaQOOAdIOEVhgYIeABAI0pJCADsOLFgISmcDQgAUEVsqYOYMWsREFBidU6FhRQ0ElIe3exZt3c1DDnkCDCiUUCAA7';\nexport const INSIGNIGICANT_EU_NO_APP_REQS_IMG = BASE64_PREFIX + 'R0lGODlhGQAXAPcAAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEghhFkCFFeSBFfhhGkBlGkCdKfiJLkB1Mox9Noy1Ogh9PrB1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrClb5Cdb8y5hyydb/yte5DZkrChc/zNhyyth/y1j8yxi/y1k/zNq5EFuyzRr/zVt/zhz5EBy20Fy2zl5/zl7/z2A81uU5FuX7Eyj/1Cn/1un/16s/2qs82ux83C3+XfT/5vs/f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAGQAXAAAIegCfCBxIsKDBgwgTKlzIsKFDgwBOPDRY4weRHT8wTBwYAklFJA82PgFQI4ODAjUwANgIgMfKFA94ZBAZgkcNHjJFPsHwoAPPlSIB/MiQIcWGoC6fZMDAI+REAB0eOHAQQqXIDjxqNtXZoUPKqjoFRgxLtqzZs2jTPgkIADs=';\nexport const INSIGNIGICANT_EU_NO_APP_REQS_CAUTION_IMG = BASE64_PREFIX + 'R0lGODlhGQAWAPcAAAAAAA8PAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEgiFFeSBFfhhGkBlGkCdKfiJLkB1Moy1Ogh1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrCdb8y5hyydb/yhc/zNhyyth/y1j8yxi/y1k/0Fuyzhz5EBy20Fy2zl7/z2A81uU5Fun/16s/3C3+fz/CP//AP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAGQAWAAAIlgCFCBxIsKDBgwgTKlzI0CCAAAI2NDwIIEgAIAEqIJhIsOLFAD8eYOAoZEOQk0EwFmhAsqLFlAFmeCC5gUAHAhgIfBAAgaSQBCFKXBghI4FPIQUcCLhhIAGBoyYoQBDRoIcJnxsG4NgQMcZKkgJavBiJQUIKDTRt4tTJ06eCGit0qDjBgILPpEubPj1aMiLfv4ADCz4YEAA7';\n\nexport const LOCK_ICON1_IMG = BASE64_PREFIX + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAMAAACXZR4WAAAAgVBMVEX/AABFRUXk4Ern5F2urq7////g3DCZlzutqjiwrTjo5GeSkpKioqK5tjfY1pzt64vv7aHw7qfx7qfx8LDR0dH499v5+eT7++u+uTbGwjXg2zDJxTTg3DLNylvk4EfRzjPm4lrS0tL19M3d2CPf2y/U0DP7+/D9/fT//v3a1jHb2DHJZOagAAAAAXRSTlMAQObYZgAAAGNJREFUeF5djEUShEAAA8kY7r7u9v8HAqOwfUq6UvEkbMFzsPbzajOsOgdQHGEFx6IvTvRSPJxopbgb0fiGxFy8u1udR0RAi3DYP39C0ArbxckugnQ8f3eClvj7OGhxhSGe2wQP8wWi7BaQfgAAAABJRU5ErkJggg==';\nexport const LOCK_ICON1_PARTIAL_IMG = BASE64_PREFIX + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAYAAACgu+4kAAAAs0lEQVR4nJ2SwQoCIRCGfbQI7Ll6hXwEO3STHqNDHfTadW9BuLBRi7iTk8zCmrm2Az+ozHzzzyBjmVBKQapcXjYw+fW8AgwenLPxvF0B53weMhaHwAISnHZ1EARQ8df7flMHcO6WBwQXVQAcYRFAaw3nNZuVlDIPofm976DvG3h0l7g8UthBcZEIwA6Y9BEV0j0A2vuhDEgdtPYYO5MWOSD7QfZfBymg6MAYM/l9vySEmADeU0lJRzUbTYUAAAAASUVORK5CYII=';\n\nexport const NOT_INCLUDEABLE_EU_IMG = BASE64_PREFIX + 'R0lGODlhGQAWAHAAACH5BAEAACYALAAAAAAZABYAhXp6ev///+Pj47W1tfPz89XV1c/Pz/T09P7+/svLy9zc3Lq6utPT07m5uc3Nzf39/d7e3re3t+np6fr6+uLi4t/f3/b29tDQ0Pz8/OXl5evr6+jo6PHx8dfX1+zs7Pj4+Pn5+cbGxszMzObm5vDw8MnJyQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbMQAAgQCwajYrFwlMUOo9QUUA6DSieT2jAsxAliYOrsJlFUslChdEJWBoXRbEQbpQ6pQqPiL7IDrxbXUl3IgNMU04KVF+Ka2NhTE+NVnxxcop9aUkeSSIeenwKg0IiTnp5gWCHgFZyQod1aguorIpsbXQDXYZWhZ+zCgN3d1t4sAFup4l7TgNhRF1MjYdPvAGSi3Bce5lthbTLRF9basSie3nCrx5/sGzPRcmudERsUVLuifVjWgF/SmDUDSmjhROyYojs9TvCDt41AEEAADs=';\n\n\nexport const PDF_IMG = BASE64_PREFIX + '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD84QzQ5Ojf/2wBDAQoKCg0MDRoPDxo3JR8lNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzf/wAARCABgAGADASIAAhEBAxEB/8QAGwAAAgIDAQAAAAAAAAAAAAAAAAUCBgMEBwH/xAA+EAABBAECAwMHCQYHAAAAAAABAAIDBBEFIRITMQZBURQiM2FxcrEVFjJDUoGTstE0Y5GSocEHI0JiZKLS/8QAGgEBAAMBAQEAAAAAAAAAAAAAAAECBAMFBv/EAC0RAAIBAgQEBAYDAAAAAAAAAAABAgMRBBIhQTFRYZEFFDLwEyNSU3HRgaHh/9oADAMBAAIRAxEAPwDuCEJZd1/S6Nh1e1cZHK3Bc0gkjIyOgUNpcS8Kc6jtBNvoM0JIe1mhDrqcI9oP6Kp6v21n+UZfINQjbWGAz6Hhudx4qvxIc0dfKYj7cuzOjoXLh20vbZ1OP+DP0WZvbWfv1SP/AKfopzw+pdx5TEfbl2Z0tC5oe28vdqsX8WfotzRu2z5LYjnsR2oyRxFuOJue/ZSpReiaKzw1aCzSg0uqZf0KEMrJo2yRuy1wyCpqTiCEIQAua9rbBi1+8ASMiP8AIF0orlXbuC27tHaMFO3KxzY8OjryOafNHeAQs+Jvk0PX8FyeYed2Vt/yiuWrJe8bnr4qy9oNLpRQagXUIq0ULWGtYY4gyPPVuM7+Cqb6GpF4PyZqG3/El/8AKlr9y1qmrPtuoWos8I5Rie7hwAPsjrjwWGN0neJ9RVdOVSGSokle+q5q2/55osduhpdjWLOjM06KBza/MisREhwdgHBHQhaWo0Y4OzNWetpFWXjpB81lzwHxuwNwO896hd16xLJYsUtCsw3bEfKdYeyR5a3/AGjhwCk2sOv6lX0+IaVcYadcQ55L3ceO/wCjsukktbL+v8M9GTvDNNJK17yT214S3f7sIZHfcnnY1vNnt43xG34lJPIL8znshp2XuZs4NheeH27K1/4f6ZbhnueVVZoQWMA5sbm53PiEw0GqidiPGsRCWEnFSV9N+qOuxcykyOePL4HtBkYO4kdR6/im0UjJWNfG4Oa4ZBC55K6+zZl20AOg5zsD7lt6DrNqlbbFaeZIJHYJPVp8V6dj4kvSEBCgAjCEIDwj1qm2arXajZ4WDHNcNh61ciq6W5s2D++f8SpQMUNVox5oW1HVYSPMHVZI25IytprQBt1S4Kz2bihlhDWxM5kcZDzjfPMk2/omz6zQDhoH3JN2TnqnXdfhgcc+UBzc9C3fOPY4uCs72Ahc6TvBGvHRy131s+6uI564GdktsQAHIGMKw2I+oSu2zZx9RXUyFwg9DH7o+CmoV/QR+4PgpqoBCEIDwpIxuZJjj65/5inZSiJuTMf30n5igMkbcYytLtFqPyXpE9hg4piAyFg6vkds0D71vZDRknAHUnuVbnll1jtE014OdU0p2xLw1jrBHed/ojwB3KrN2VlxNOFpqc80vStX+v5egO0SzpmnafZoDm6hRaeazP7QHHMjfbkkj2etPNL1KtqtYT05OMdHN6OYe8OHcVryVtVn9JqENVv2a0HEf5nn+yV2+yNWV00w1DUG25QA6wJRk48QAAfiqJOPpR3cqdZfPnrzSb4u7T4abqz77PbHfslVz6DvYUjOi3KbTzGushozzoL8sT/aWuJGfvW5QsGxpUMrpHyF7CQ6QYcRk4zsN+7ON1eE23ZqxxrYeMI54SzLh71fLexfK/oI/cHwU1Cv6CP3B8FNWMoIQhAeFLYW/wCXM4kAc6TJPd5xTIrUpNzFLt9fJ+coCkz6nPqkjPI3B09jelX6tgjz+0S+vvaD6sblWPTKUWl0YqkGS2Mbuccl7juXH1k7rdjoV6vH5LWih4zl/LjDeI+vAWOYOaCQwkgbDHVUhG2r4mqviFNZKatH377vcVV9aZLavxTBsUVU5EjnbOaMgk+GCCFrQ9oasjbMk08McEc3LjkyfPHCDn+p/glU+i6k2qwjMkkkDudEeEBruMScOR1yeId/XwWKapfbbmuGk88ySUiHjZkB8bWg9cdWkH2966GUZjWYX356kkkbHB7RCAd5MtDv7rCb9ew+SOGZkj2Z4w09O5I20LsQFZ0WW8yBxnDhgCNgzt16jAXul1pKxAnZMJGR8oOc9pYRxf6QNx47+KkHWa/oI/cHwU1CD0Mfuj4KaqAQhCAEtu6LVuSmSQzMJ68uQtCZIQCT5sUT9ZZ/GKPmvQ+3Z/FKdoQCP5raf9qx+KV581NO8Z/xCnqEAhPZPTD1E386nB2W0yGVsjY3kg5w52U7QgADHRCEID//2Q==';\nexport const PERMIT_IMG = BASE64_PREFIX + 'R0lGODdhEAAQAOcAAAAAAD6a3liZtEWb21ueyFOf1lSf1kae4Eig4FCk4lus5F+s5m+16qmLIrKZKaeiV7OhT76rcsSZDcaaDsqaC8uaC8ibD8eeItmsH8SiLcWjLcakLsuoL9+8NuG5M+K3R+m/QerGSOzYX/XYaYCvvr68jJC6wYLA7ofB8I7F8o/G8p3H4pHL8JzL85zM8p7M8p/Q86LP+KfQ5a/Q5qHR86XQ86XQ9K3b973Y6rHX9bTY97XY9rfZ97XZ+7XZ/Lnb97vd/L/e+rfi+bni+bvk+v/ogsDe+MDf/sjq68Pg/8Hl+cTg/sTh/8bh/MPo/MXq/Mbv+snj+cji/cjj/8nj/8nk/s3l/83m/M7l/8/n/crs/s3u/87v/8/v/8fw+szy+83z+87z+9Dn+9Dn/tHo/9Dv+9Lv+tXp/Nbp/9jr/tvs/Nzt/tHw/9L2/NTx/9Xy/9/3/tv5/9z6/937/9/7/+Hv/eDv/uTx/uH7/+b6/+nz/u32/u73/+n9/+r9/+z+//T5/zhHWMbi/Mbi/8bn/8Xp+sfs/Mnj+snj/8rj/8rk+8rk/Mrk/8vl/83l+8zl/83l/87m/8/m/8/n/8vp/srt/cvu/c3q/87r/8/r/8zu/c7u/s7v/s7v/8/v/8/w/tLo79Hn/dHn/9Ln/NPo/9Lt/9Pu/9Xp/9bq/9fr/9Tu/9Tv/9Xu/9bv/9jr/djr/tnr/tnr/9ns/9rs/dzt/93t/t3t/97u/9/u/t/v/9Dw/9Hy/tLx/9Pw/9Lz/tXx/dby/9jw/9nx/9jy/9vx/9rz/9zy/9z1/931/973/t/2/97//+Dv/+Hv/+Hw/uLw/+Pw/+Px/+H3/+Tx/+Xx/+Xy/+by/+bz/+fy/+fz/+L5/+P4/+X5/+X6/+b6/+b7/+jz/+nz/+n0/+r0/+v1/+z1/+32/+72/+/3/+j8/+j9/+r9/+v9/+v+/+z6/+3+//D3//L4//P5//T5//X6//f7/ywpICwpIP/f3//k5K4BAgAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAjPAAcEGEgwgAEACBMCCPCnTx44ZZS0MagQYQA/gPbUiZIjzAIGBSoGMMNHjxojNb4kOHGAwAUKERYiwHPnzI8XYKB4QeKgw4gKCwPQsSNmhwsaMGRw6FBEBNCBc9Zc4WGjxYoMTEVQsBhATposQXTM0MA0xFauctCMkYJjA1MQEhQOjEMGS5MSGIqAsCBAroI3VqoAgfDBwwQTAeS6oTJlSY9ADR6QYJE4YQA2TJIc8REjBQoVNypb7NKFyxYtToYIIfJENACBBWMPqEi7NsKAADs=';\nexport const PERMIT_EU_IMG = BASE64_PREFIX + 'R0lGODdhEAAQAOcAAAAAAAaH2QeG2AeH2QeI2QiI2QmJ2QqJ2QuK2QyI2A+K2D2f3iOb4yec4ymf5jCj5jel4zKm6zOn6zil40Gr5kOs5kOt60Ov60Sv60ym4E+790+891mt5Fyt4l2361G58FK991W68Fe98lS+92u15Hq85lnA91/B8l3E+mfH92jI92rJ92jJ+mvN/2zN/G3O/3PN93bK8HXO93DN+nXQ+nXS/3fT/33S93vU/HrV/4LN8IHR8ojS94/V8onZ+ova/43b/5nK6ZTf+pXi/5bj/53l/KXc96Te+aXe+bjw/77x/83s+s3t+83x/9Dy/9ny/Nrz/N30/eH4/+77/gCD12XK/2XL/2fL/2nE8GrE9WzF9m/G9WnL/GjK/2rL/GjM/2nM/2vM/GrN/2zO/23O/2/O/G/Q/3PE8HPJ8HLL9XPM9XPO/3rI83vP/HHQ/3LR/3XS/3bT/3fT/3zR93jQ/3rR/3rS/3rV/3vV/3/S+n3S/3/T/3zW/3/Y/4/F6IDI8YDL8oDS9YTU9YDR+4DT/4HT/4HV/4PU/4PV/4XV/4bV/4fV/4fX/4DY/4HY/4XY/4Ta/47S9I/S9IvV+YrW/47U+InZ+onY/IjY/4nc/4rd/4vd/47Z/I/b/47c+o3e/5nK6ZDb95DY/5Da/5Db/5Ha/5Hb/5LZ/5Pc/5Le/5Pf/5Xb+5Xa/5bb/5fb/5fc/5je/5re/57b+Jzd/Z3f/57f/5Dg/5Ti/5jj/5vl/53h/53i/57g/57h/5/j/53k/5zm/53m/57k/5/m/6nR66Xf+qjf+KPj/6Hl+qXk/6Tq/6fr/6ng+Kri+6nm/6nn/6zn/6jo/6np/6vs/Krs/6rt/6vt/6zo/63o/67p/67s/7Dj+bHj+bDq/7Dv/7Xs/7bs/7jv/7vv/73r/LTx/7bz/7vw/7n0/8Dv/8Hv/8Lu/cL4/8P5/wCD17Xy/7nw/7vy/7n0/7zw/7zy/77y/772/8Hz/8T1/8H4/8X6/wCD1wAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAi/AAEIHEiwoEEAJahQKXFQYJAOADLo6LEAAIkgBYMgqMAhwZIpBzhMQIBxIAkISaI8kSKFCRQlFCASVHCjiREPHow48aGAYIkFBZDwKECCRAEeRwRkYAiAygkcQCyQEEjCwo8ZIagIpPKBxQsJUy1GaOFChFaEGahoADGg6IARGwIsYCpQAYoaKS5gUGHDRE+CHRzYWAFjCBEZNHIwCOtwQAMFBooIoaLgAYGSA4NMXbAjRgYAHTAbTLiwoemCAQEAOw==';\nexport const PERMIT_EU_GROUP_IMG = BASE64_PREFIX + 'R0lGODlhEAAQANUAAO/v7+zqzOfn59/f39fX197aptvYkdzXkdzYkNvXkdvXkM/Pz9bRhNbRhdHMitHMe9HMfNDLe83HcsvGfsvFfr+/v8bCdcjDasbBdcO+bMO9bLe3t7+5Zb64Za+vr6enp5+fn5eXl5uZbHx8fIWBM398WH58WFhYWFFRUUFBQT8/Pz09PTw8PDs7Ozc3NzQ0NDMzM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUADEALAAAAAAQABAAAAZ+wJhwSCwaR6qW8mQcClypzQYFEzRjg9dnsfjABkUXbEwuj10xwaoQaLvfhZVgwOJc7vh8hzWgZyQkgYKBEhp8dBYPiouMGIcsFA2DgwwTjw4HmZqbDo8iJqChoiKHYmanLgMCHikhIK+wryEpHlYEFQt9uroLFQRDAFdCwTFBADs=';\nexport const PROCESS_IMG    = BASE64_PREFIX + 'R0lGODdhEAAQAOcAAAAAAAaH2QeG2AeH2QeI2QiI2QmJ2QqJ2QuK2QyI2A+K2D2f3iOb4yec4ymf5jCj5jel4zKm6zOn6zil40Gr5kOs5kOt60Ov60Sv60ym4E+790+891mt5Fyt4l2361G58FK991W68Fe98lS+92u15Hq85lnA91/B8l3E+mfH92jI92rJ92jJ+mvN/2zN/G3O/3PN93bK8HXO93DN+nXQ+nXS/3fT/33S93vU/HrV/4LN8IHR8ojS94/V8onZ+ova/43b/5nK6ZTf+pXi/5bj/53l/KXc96Te+aXe+bjw/77x/83s+s3t+83x/9Dy/9ny/Nrz/N30/eH4/+77/gCD12XK/2XL/2fL/2nE8GrE9WzF9m/G9WnL/GjK/2rL/GjM/2nM/2vM/GrN/2zO/23O/2/O/G/Q/3PE8HPJ8HLL9XPM9XPO/3rI83vP/HHQ/3LR/3XS/3bT/3fT/3zR93jQ/3rR/3rS/3rV/3vV/3/S+n3S/3/T/3zW/3/Y/4/F6IDI8YDL8oDS9YTU9YDR+4DT/4HT/4HV/4PU/4PV/4XV/4bV/4fV/4fX/4DY/4HY/4XY/4Ta/47S9I/S9IvV+YrW/47U+InZ+onY/IjY/4nc/4rd/4vd/47Z/I/b/47c+o3e/5nK6ZDb95DY/5Da/5Db/5Ha/5Hb/5LZ/5Pc/5Le/5Pf/5Xb+5Xa/5bb/5fb/5fc/5je/5re/57b+Jzd/Z3f/57f/5Dg/5Ti/5jj/5vl/53h/53i/57g/57h/5/j/53k/5zm/53m/57k/5/m/6nR66Xf+qjf+KPj/6Hl+qXk/6Tq/6fr/6ng+Kri+6nm/6nn/6zn/6jo/6np/6vs/Krs/6rt/6vt/6zo/63o/67p/67s/7Dj+bHj+bDq/7Dv/7Xs/7bs/7jv/7vv/73r/LTx/7bz/7vw/7n0/8Dv/8Hv/8Lu/cL4/8P5/wCD17Xy/7nw/7vy/7n0/7zw/7zy/77y/772/8Hz/8T1/8H4/8X6/wCD1wAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAi/AAEIHEiwoEEAJahQKXFQYJAOADLo6LEAAIkgBYMgqMAhwZIpBzhMQIBxIAkISaI8kSKFCRQlFCASVHCjiREPHow48aGAYIkFBZDwKECCRAEeRwRkYAiAygkcQCyQEEjCwo8ZIagIpPKBxQsJUy1GaOFChFaEGahoADGg6IARGwIsYCpQAYoaKS5gUGHDRE+CHRzYWAFjCBEZNHIwCOtwQAMFBooIoaLgAYGSA4NMXbAjRgYAHTAbTLiwoemCAQEAOw==';\n\nexport const RED_DOT_IMG = BASE64_PREFIX + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcVJREFUeNqkk88rw2Ecx9/P18YorRlh4zAHB25KKXNSO8rJCinKef8BcXdwVpT8iLKaOw4oF6VWbpqwTc3iO9bItq/P59n3mSd221Of79Pz+fF6Pj+er7AsC/UsA3WuugEO/gghdJ2YBmYLwAQVNyoVwGUzcLwH7NCxWjOXL+TnF2DMAMt+w1gaX1yELxCQylQigZONDSTL5dVdYIVU5VoAYwGY6xJiayoSgT8YhNsGmARIXlzgcH0dz5Y1vwlsM4RjHSptLoewk4N9fTBeX/F2dYV0LCYNrs5OqWNb6u5uklRUDb45CR3gbARGPJkMzNNTFL1eSWfDezyOj2wWHtME+7AvSVEH8HJSo0Qpl0MrldSSz0tAg+p2qQSTbM32ZSSF6hRUA2mmN7SHOio3VQEsfL6vzP1GH78OKJP2jJxDvt5egEqB212xUDYtbW1wPDxw5Jmagg7g2X6vAUdDQH/28XHeGwoB9hQY9haN4h3YYh/VQNk8bYwM4yt79oHwMDDm6+4ekO8gnb69Bs7DwAEdn3iy3MS/70BokHZ7d9kZftpBLyq48o7+v0QFabJFlcgBX7YUVfq1ADpIieqRpf8HCvAjwAA0E7DxN+mXlAAAAABJRU5ErkJggg==';\nexport const REPORT_IMG = BASE64_PREFIX + 'R0lGODdhEAAQAOcAAAAAAD6a3liZtEWb21ueyFOf1lSf1kae4Eig4FCk4lus5F+s5m+16qmLIrKZKaeiV7OhT76rcsSZDcaaDsqaC8uaC8ibD8eeItmsH8SiLcWjLcakLsuoL9+8NuG5M+K3R+m/QerGSOzYX/XYaYCvvr68jJC6wYLA7ofB8I7F8o/G8p3H4pHL8JzL85zM8p7M8p/Q86LP+KfQ5a/Q5qHR86XQ86XQ9K3b973Y6rHX9bTY97XY9rfZ97XZ+7XZ/Lnb97vd/L/e+rfi+bni+bvk+v/ogsDe+MDf/sjq68Pg/8Hl+cTg/sTh/8bh/MPo/MXq/Mbv+snj+cji/cjj/8nj/8nk/s3l/83m/M7l/8/n/crs/s3u/87v/8/v/8fw+szy+83z+87z+9Dn+9Dn/tHo/9Dv+9Lv+tXp/Nbp/9jr/tvs/Nzt/tHw/9L2/NTx/9Xy/9/3/tv5/9z6/937/9/7/+Hv/eDv/uTx/uH7/+b6/+nz/u32/u73/+n9/+r9/+z+//T5/zhHWMbi/Mbi/8bn/8Xp+sfs/Mnj+snj/8rj/8rk+8rk/Mrk/8vl/83l+8zl/83l/87m/8/m/8/n/8vp/srt/cvu/c3q/87r/8/r/8zu/c7u/s7v/s7v/8/v/8/w/tLo79Hn/dHn/9Ln/NPo/9Lt/9Pu/9Xp/9bq/9fr/9Tu/9Tv/9Xu/9bv/9jr/djr/tnr/tnr/9ns/9rs/dzt/93t/t3t/97u/9/u/t/v/9Dw/9Hy/tLx/9Pw/9Lz/tXx/dby/9jw/9nx/9jy/9vx/9rz/9zy/9z1/931/973/t/2/97//+Dv/+Hv/+Hw/uLw/+Pw/+Px/+H3/+Tx/+Xx/+Xy/+by/+bz/+fy/+fz/+L5/+P4/+X5/+X6/+b6/+b7/+jz/+nz/+n0/+r0/+v1/+z1/+32/+72/+/3/+j8/+j9/+r9/+v9/+v+/+z6/+3+//D3//L4//P5//T5//X6//f7/ywpICwpIP/f3//k5K4BAgAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAjPAAcEGEgwgAEACBMCCPCnTx44ZZS0MagQYQA/gPbUiZIjzAIGBSoGMMNHjxojNb4kOHGAwAUKERYiwHPnzI8XYKB4QeKgw4gKCwPQsSNmhwsaMGRw6FBEBNCBc9Zc4WGjxYoMTEVQsBhATposQXTM0MA0xFauctCMkYJjA1MQEhQOjEMGS5MSGIqAsCBAroI3VqoAgfDBwwQTAeS6oTJlSY9ADR6QYJE4YQA2TJIc8REjBQoVNypb7NKFyxYtToYIIfJENACBBWMPqEi7NsKAADs=';\nexport const REPORT_EU_GROUP_IMG = BASE64_PREFIX + 'R0lGODlhEAAQANUAAO/v7+zqzOfn59/f39fX197aptvYkdzXkdzYkNvXkdvXkM/Pz9bRhNbRhdHMitHMe9HMfNDLe83HcsvGfsvFfr+/v8bCdcjDasbBdcO+bMO9bLe3t7+5Zb64Za+vr6enp5+fn5eXl5uZbHx8fIWBM398WH58WFhYWFFRUUFBQT8/Pz09PTw8PDs7Ozc3NzQ0NDMzM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUADEALAAAAAAQABAAAAZ+wJhwSCwaR6qW8mQcClypzQYFEzRjg9dnsfjABkUXbEwuj10xwaoQaLvfhZVgwOJc7vh8hzWgZyQkgYKBEhp8dBYPiouMGIcsFA2DgwwTjw4HmZqbDo8iJqChoiKHYmanLgMCHikhIK+wryEpHlYEFQt9uroLFQRDAFdCwTFBADs=';\nexport const REPORT_EU_GROUP_CAUTION_IMG = BASE64_PREFIX + 'R0lGODlhEAAQAKUpAAAAADMzMzQ0NDc3Nzs7Ozw8PD09PT8/P0FBQVFRUX58WIWBM3x8fJuZbJeXl5+fn6enp6+vr7+5ZcO+bLe3t8bBdcjDasbCdcvFfr+/v83HcsvGftHMe9HMitbRhNbRhc/Pz9zXkd7aptfX19/f3///AOfn5+zqzO/v7////////////////////////////////////////////////////////////////////////////////////////////yH5BAEUAD8ALAAAAAAQABAAAAaEwJ9wSPwBAMUh40BoAkrIpGmAoFASUGiSJICAQM/wcBAomwOlrNZkEJ3e72d6DiAVJJZ8nk63TzQLgQtHhEckdhcciouMFQWHBRgfgpQLHhuPdh0hnJ2eHZkFDQqkpaYNmWRnq2UDJCYRCA4PtLW0DggRJj8jGSCHwMAgGSNDKElExz9BADs=';\nexport const REPORT_PERIOD_IMG = BASE64_PREFIX + 'R0lGODdhEQAQAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8EAgAGAgAIAgAKAgAMAgAOAgAABAACBAAEBAAGBAAIBAAKBAAMBAAOBAAABgACBgAEBgAGBgAIBgAKBgAMBgAOBgAACAACCAAECAAGCAAICAAKCAAMCAAOCAAACgACCgAECgAGCgAICgAKCgAMCgAOCgAADAACDAAEDAAGDAAIDAAKDAAMDAAODAAADgACDgAEDgAGDgAIDgAKDgAMDgAODgAAAAQCAAQEAAQGAAQIAAQKAAQMAAQOAAQAAgQCAgQEAgQGAgQIAgQKAgQMAgQOAgQABAQCBAQEBAQGBAQIBAQKBAQMBAQOBAQABgQCBgQEBgQGBgQIBgQKBgQMBgQOBgQACAQCCAQECAQGCAQICAQKCAQMCAQOCAQACgQCCgQECgQGCgQICgQKCgQMCgQOCgQADAQCDAQEDAQGDAQIDAQKDAQMDAQODAQADgQCDgQEDgQGDgQIDgQKDgQMDgQODgQAAAgCAAgEAAgGAAgIAAgKAAgMAAgOAAgAAggCAggEAggGAggIAggKAggMAggOAggABAgCBAgEBAgGBAgIBAgKBAgMBAgOBAgABggCBggEBggGBggIBggKBggMBggOBggACAgCCAgECAgGCAgICAgKCAgMCAgOCAgACggCCggECggGCggICggKCggMCggOCggADAgCDAgEDAgGDAgIDAgKDAgMDAgODAgADggCDggEDggGDggIDggKDggMDggODggAAAwCAAwEAAwGAAwIAAwKAAwMAAwOAAwAAgwCAgwEAgwGAgwIAgwKAgwMAgwOAgwABAwCBAwEBAwGBAwIBAwKBAwMBAwOBAwABgwCBgwEBgwGBgwIBgwKBgwMBgwOBgwACAwCCAwECAwGCAwICAwKCAwMCAwOCAwACgwCCgwECgwGCgwICgwKCgwMCgwOCgwADAwCDAwEDAwGDAwIDAwKDAwP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAAAALAAAAAARABAAAAhdAP8JBPCPoMGCAhMO/EeKocOGBBVCRHjwYMKGCjMeiCgQY8aEGyUOBGAwYsiLHxWe7DiSJEmBKx2mhMlRpkuXNEXO/BcT482XPGt6TNlzZ1CJB5IqXRqz4M+fCgMCADs=';\nexport const REPORT_PERIOD_CAUTION_IMG = BASE64_PREFIX + 'R0lGODlhEQAQAMIEAAAAAICAgMDAwP//AP///////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAsAAAAABEAEAAAA0VICsTegKlFQr0BDKnse9s2WVOpnWNZDqF4QY7GshKpyrJIRnzPdyqVgPPySYYlW5CATMF+TKIy2AQuFdWKYMvtZp9GYgIAOw==';\n\nexport const SCENARIO_IMG = BASE64_PREFIX + 'R0lGODdhEQAQAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8EAgAGAgAIAgAKAgAMAgAOAgAABAACBAAEBAAGBAAIBAAKBAAMBAAOBAAABgACBgAEBgAGBgAIBgAKBgAMBgAOBgAACAACCAAECAAGCAAICAAKCAAMCAAOCAAACgACCgAECgAGCgAICgAKCgAMCgAOCgAADAACDAAEDAAGDAAIDAAKDAAMDAAODAAADgACDgAEDgAGDgAIDgAKDgAMDgAODgAAAAQCAAQEAAQGAAQIAAQKAAQMAAQOAAQAAgQCAgQEAgQGAgQIAgQKAgQMAgQOAgQABAQCBAQEBAQGBAQIBAQKBAQMBAQOBAQABgQCBgQEBgQGBgQIBgQKBgQMBgQOBgQACAQCCAQECAQGCAQICAQKCAQMCAQOCAQACgQCCgQECgQGCgQICgQKCgQMCgQOCgQADAQCDAQEDAQGDAQIDAQKDAQMDAQODAQADgQCDgQEDgQGDgQIDgQKDgQMDgQODgQAAAgCAAgEAAgGAAgIAAgKAAgMAAgOAAgAAggCAggEAggGAggIAggKAggMAggOAggABAgCBAgEBAgGBAgIBAgKBAgMBAgOBAgABggCBggEBggGBggIBggKBggMBggOBggACAgCCAgECAgGCAgICAgKCAgMCAgOCAgACggCCggECggGCggICggKCggMCggOCggADAgCDAgEDAgGDAgIDAgKDAgMDAgODAgADggCDggEDggGDggIDggKDggMDggODggAAAwCAAwEAAwGAAwIAAwKAAwMAAwOAAwAAgwCAgwEAgwGAgwIAgwKAgwMAgwOAgwABAwCBAwEBAwGBAwIBAwKBAwMBAwOBAwABgwCBgwEBgwGBgwIBgwKBgwMBgwOBgwACAwCCAwECAwGCAwICAwKCAwMCAwOCAwACgwCCgwECgwGCgwICgwKCgwMCgwOCgwADAwCDAwEDAwGDAwIDAwKDAwP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAAAALAAAAAARABAAAAhdAP8JBPCPoMGCAhMO/EeKocOGBBVCRHjwYMKGCjMeiCgQY8aEGyUOBGAwYsiLHxWe7DiSJEmBKx2mhMlRpkuXNEXO/BcT482XPGt6TNlzZ1CJB5IqXRqz4M+fCgMCADs=';\nexport const SHUTDOWN_EU_IMG= BASE64_PREFIX + 'R0lGODlhGQAWAMZQAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEghhFkCFFeSBFfhhGkBlGkCdKfiJLkB1Mox9Noy1Ogh9PrB1Nyx1OyyJSrB5Pyx5QyyBRy/cHEytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrClb5Cdb8y5hyydb/yte5DZkrChc/zNhyyth/y1j8yxi/y1k/zNq5EFuyzRr/zVt/zhz5EBy20Fy2zl5/zl7/z2A81uU5FuX7Eyj/1Cn/1un/16s/2qs82ux83C3+XfT/5vs/f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgB/ACwAAAAAGQAWAAAH/oBQgoOEhVAbAAAbhoyFKBNQDio0C1AXKI2GKAYRFAVFTwQUDQaYmYMXDUdNS05ORkxIEZCEI7aKhAcxSTwYGDxKOweEj7YjlJYbCwNBNgMXFwM2QAEOi5sRxqGjAB84PhIXghcSPS8aAJaqxq+xABkrNRDilg8yMBzpULrGv8EbDgB0ACEAmoAQHgQs2KCMmbFo06odMHGjRAULJ3KIGAal2zdjlsq9mKAgRwoWQoa0mKEDgbh38UBesAcDhYAEBwgQ+QHgAIMBmAAKfHgw4QIUF5IscEHCgZIJpgRNNIZRY8NmiBRFtAaFZA5jKll6BEePnDl0UGwmMMbTJ0x5PGVp5jNGl67QgQUvFFW4qC7dQRMrXsy4sZbfQV5PplzZkp6gusRu5tzZ82fUx7Y0iVvatOvlU4SyLiIUCAA7';\nexport const SHUTDOWN_FACILITY_IMG = BASE64_PREFIX + 'R0lGODlhGQAZAOecAAMCAwMDAwMDBAQCBwYFEwYPDAgXCwwcDxAmExUzGBk8HCId1iEd5iMd4hxGHyIe6yQf7SQh6x9LIyhUKypYLTc42CteLzg33ixiMD837jpBx/cHEzBqNDtlPzFsNTNtNj1pQD9sQjdyOjhzOzt1PUFxQ1hYmz13P0Z1R0J9RUV8R3FvfnNxfluHYlyIZ1iNWnZ6dV6JcXd8dliSV1iTWHh+eFqTWlyUXmOKg3qCd3yDe2CWY31u+Xtx8X+EgWOYZn5w+YCFg2SZZoGFhIKGgoOIgWacaWmdbIaLh4iMiIV5+YmNi3Gkc4t/+Hmme5KI9ZeM+YqphpqP+Y2riJamkJ6U+aGX+ZqukqSb+auk+LGr9rm28by577y+5LzIy7zMt7rMvb3Ps8DOssTRscfTvcvTx87TzNDU0dDU19LT4NLU29TV5dfY59zf5t/j5eDn1ODl4uDn2uLpz+Hn4OTrzefuzOnv0ezx0O7z0fDx+PHy8/Hy9vHz8vLy+fD18PH52vD27vH18fLz+fH36/L0+/P63vP46fX75PT75/X84Pb4+vf4+vX5+/j4+fj5+fn7+Pn8+fv8+vz7/f37/fz8+/z8/Pz8/f39/f79/v3+/f7+/f7+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAsAAAAABkAGQAACP4ANwkcSLCgwYOENFGytAkRIkmTBPHBtMlOokcHB86RMaRGjiJLWPgYsmLIkiUDMgoMlEQgJj2LElFCZAcSpDwFVG6iBCNQnjRpIHFZA4gLFzqIAKhUtElHJEVsiG7hEmhqIUwEVELaJOPQpj5tNCFakyhPnkRuAqjUtKEtIS5dDGnRMicLljtwsmac1HYDo6lzsFiBlEVKnjlqC14SiKjvHjaMBjFi9KcNoTpy9BLk42gT27Z+oFQpJKVHHCBKDqXRbJBvW0xVmuR58uTNEyVsBCUmCIeKyL6D7Mhx80bNHDNtzpRhPTBIpUx9GWngsSZDBjDW35jJymirpE2ViP5s0tMXjYkKczJosAPhApoxAxgJbDSpUaQgmyD1ndNGzRs6Z7CBxxhobCfJS5gkeIkPkWDS1xkQQDDGAxF4QSEXYOS0ByUJ6rGJD4ow0lcbGUDwRgQRhPHAA2BcYUECARwAwByabILEJof0lYYYdHRBRhdnoOHFFV/8MMUVVwRAyWd9NdkWAwt80YAGMdDABBNHGnAGIHA42aQYGmjgxA84pHCCCjS88EMIOYDhRBFebmDAFEIwQYMRRliAgQs0nOABBiNM4EILTLYVBQU3GDHDDiJ4MIIDN5yQggcfOBCDDDpYol9bYaCgAgYvMMEBCZXaoEIJJSjQwQtJyiijABcBGIAACCkkgAAKuB7haQITSICAAQEEBAA7';\nexport const STACK_IMG      = BASE64_PREFIX + 'R0lGODlhEgAOALMNAICAgHBwcKCgoMDAwJCQkLCwsDAwMBAQEODg4PDw8NDQ0EBAQAAAAP///wAAAAAAACH5BAEAAA0ALAAAAAASAA4AAARMsEmUqJwpXxmYAJ5EMARIXIoySEKSqtKAKI1wJJvCMMiGMIoCYCMxLIiNQAEpSTGfyQCUuThOidUr1qqVZLteLnVHLpOHl4V5zUBHAAA7';\n\nexport const TOWER_IMG = BASE64_PREFIX + 'R0lGODlhGwAbAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///ywAAAAAGwAbAAAItgAfCBxIsKBBgwASKlzIsOFCgQBUSZxIkRoAahQzqgIAUWPFix4ncnwQMaQqixhNjizp0aIfkCFXmrRIMqVHmSEtJrSpcWSKmRxh3uyYMyjPjDhbKjxKMWlGi6kepBKKVOBPpQOpNiWqUefSmFyfjqwJlmTRrEwl+lQaVeDUtE4nel0IN6zcsRDrmu2Kl2xPuxLnfv27V2xBrWoBuyz4kmnckw53EmZ51w9jxCsja3Z4sLPnggEBADs=';\nexport const TRIVIAL_EU_IMG = BASE64_PREFIX + 'R0lGODlhGQAXAPcAAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEghhFkCFFeSBFfhhGkBlGkCdKfiJLkB1Mox9Noy1Ogh9PrB1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrClb5Cdb8y5hyydb/yte5DZkrChc/zNhyyth/y1j8yxi/y1k/zNq5EFuyzRr/zVt/zhz5EBy20Fy2zl5/zl7/z2A81uU5FuX7Eyj/1Cn/1un/16s/2qs82ux83C3+XfT/5vs/f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAGQAXAAAIYgCfCBxIsKDBgwgTKlzIsKHDhxAjIgSQQuJAAE4cOCACwOKPFEh+1MggEQAPDA0A1AhBEqLJB08chIjREeKDEA9SAOjQYYPEECozYIBZ0gkGBzNqWsxpsanTp1CjSp1KtWBAADs=';\nexport const TRIVIAL_EU_CAUTION_IMG = BASE64_PREFIX + 'R0lGODlhGQAWAPcAAAAAAA8PAAAxZwMyaAMyagMzagQzagUzaAU0agY0aA08ew88ew8+ghY+chJAghRBextBdRJBkBNCkBhEgiFFeSBFfhhGkBlGkCdKfiJLkB1Moy1Ogh1Nyx1OyyJSrB5Pyx5QyyBRyytZoyVWyyJU5CZXyztZiidYyzBboyZY5CpbyytcyzBgrCdb8y5hyydb/yhc/zNhyyth/y1j8yxi/y1k/0Fuyzhz5EBy20Fy2zl7/z2A81uU5Fun/16s/3C3+fz/CP//AP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAGQAWAAAIagCFCBxIsKDBgwgTKlzIsKHDhxAjHtwgIAAAiUIQVAgAJECQixAxPPjB0SPIhw0KcAzCMsgGiB5mrPT4ESIEAR8IYCDQgcBLiAlkjLhQIkQCiQQSGLghwEEBjEIaiIBAAarVq1izat2qNSAAOw==';\nexport const TV_APP_EU_GROUP_IMG = BASE64_PREFIX + 'R0lGODlhEAAQANUAAO/v7+zqzOfn59/f39fX197aptvYkdzXkdzYkNvXkdvXkM/Pz9bRhNbRhdHMitHMe9HMfNDLe83HcsvGfsvFfr+/v8bCdcjDasbBdcO+bMO9bLe3t7+5Zb64Za+vr6enp5+fn5eXl5uZbHx8fIWBM398WH58WFhYWFFRUUFBQT8/Pz09PTw8PDs7Ozc3NzQ0NDMzM////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUADEALAAAAAAQABAAAAZ+wJhwSCwaR6qW8mQcClypzQYFEzRjg9dnsfjABkUXbEwuj10xwaoQaLvfhZVgwOJc7vh8hzWgZyQkgYKBEhp8dBYPiouMGIcsFA2DgwwTjw4HmZqbDo8iJqChoiKHYmanLgMCHikhIK+wryEpHlYEFQt9uroLFQRDAFdCwTFBADs=';\n\nexport const USER_IMG = BASE64_PREFIX + 'R0lGODlhEwAQALMAAM6aMf///84AAAAEAK2qlO/r74SChAICbsbDxv/PYzFlnAAAAP///wAAAAAAAAAAACH5BAEAAAwALAAAAAATABAAAARbkMkZapXWTrm6X1i2fd0AMlkwfglypusytMkrTh1Cd6GGL7RCggCCrWjE3mXDWCAAOpsP9zR4lKqfE3DC4hSKwyLQRd2aYfCBTDkv1Ie4QrpEgxUCAbh4Tt1SEQA7';\n\nexport const V_ELLIPSIS_IMG = BASE64_PREFIX + 'R0lGODlhEAAbAKEDABERESIiIkRERP///yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgADACwAAAAAEAAbAAACIJyPqcvtrwAQcEgKQ8C1+w9+V6VxThmm6uqh0Jht7EwXADs=';\n","/*\n * Public API Surface of oepa-ui-lib\n */\n\nexport * from './lib/common-forms.module';\nexport * from './lib/account-search-input/account-search-input.component';\nexport * from './lib/account-search-modal/account-search-modal.component';\nexport * from './lib/action-btn/oepa-action';\nexport * from './lib/action-btn/oepa-action-event';\nexport * from './lib/action-btn/action-btn.component';\nexport * from './lib/p-action-btn/oepa-p-action';\nexport * from './lib/p-action-btn/p-action-btn.component';\nexport * from './lib/action-btn-modal/action-btn-modal.component';\nexport * from './lib/address/address.component';\nexport * from './lib/address/oepa-form-address';\nexport * from './lib/address/oepa-address.service';\nexport * from './lib/blank/blank.component';\nexport * from './lib/checkbox/checkbox.component';\nexport * from './lib/checkbox-input/checkbox-input.component';\nexport * from './lib/comment-modal/comment-modal.component';\nexport * from './lib/confirmation-modal/confirmation-modal.component';\nexport * from './lib/contact/contact.component';\nexport * from './lib/contact/oepa-form-contact';\nexport * from './lib/datepicker/datepicker.component';\nexport * from './lib/daterangepicker/daterangepicker.component';\nexport * from './lib/date-input/date-input.component';\nexport * from './lib/date-input-modal/date-input-modal.component';\nexport * from './lib/dual-list-box/dual-list-box.component';\nexport * from './lib/dual-list-box/array.pipes';\nexport * from './lib/dual-list-box/items-moved-event';\nexport * from './lib/dual-list-box/list-box-item';\nexport * from './lib/edoc-attachment/edoc-attachment.component';\nexport * from './lib/edoc-attachment/edocument-attachment';\nexport * from './lib/edoc-attachment/edocument-attachment-metadata';\nexport * from './lib/edoc-attachment/edocument-reference';\nexport * from './lib/edoc-attachment/edoc-attachment.service';\nexport * from './lib/ebiz-address/ebiz-address.component';\nexport * from './lib/entity/entity.service';\nexport * from './lib/entity/organization-create-modal/organization-create-modal.component';\nexport * from './lib/entity/organization-search-input/organization-search-input.component';\nexport * from './lib/entity/organization-search-modal/organization-search-modal.component';\nexport * from './lib/entity/person-create-modal/person-create-modal.component';\nexport * from './lib/entity/person-search-input/person-search-input.component';\nexport * from './lib/entity/person-search-modal/person-search-modal.component';\nexport * from './lib/entity/place-create-modal/place-create-modal.component';\nexport * from './lib/entity/place-search-input/place-search-input.component';\nexport * from './lib/entity/place-search-modal/place-search-modal.component';\nexport * from './lib/esri-map/esri-map.component';\nexport * from './lib/file-upload/file-upload.component';\nexport * from './lib/lynx-image-upload/lynx-image-upload.component';\nexport * from './lib/lynx-image-upload/lynx.service';\nexport * from './lib/masks/oepa-create-integer-mask';\nexport * from './lib/masks/oepa-integer-mask-args';\nexport * from './lib/numeric-input/numeric-input.component';\nexport * from './lib/parameter/parameter';\nexport * from './lib/parameter/parameter.service';\nexport * from './lib/oepa-error-message/oepa-error-message.component';\nexport * from './lib/oepa-wait-message/oepa-wait-message.component';\nexport * from './lib/ohio-lat-long/ohio-lat-long.component';\nexport * from './lib/message/oepa-message';\nexport * from './lib/message/oepa-message-type';\nexport * from './lib/message/message.component';\nexport * from './lib/message-list/message-list.component';\nexport * from './lib/multi-file-upload/multi-file-upload.component';\nexport * from './lib/notes-modal/notes-modal.component';\nexport * from './lib/notes-modal/oepa-note';\nexport * from './lib/notes-modal/oepa-note-result';\nexport * from './lib/params-help-button/params-help-button.component';\nexport * from './lib/phone-number/phone-number.component';\nexport * from './lib/pin-modal/oepa-attestation';\nexport * from './lib/pin-modal/oepa-pin';\nexport * from './lib/pin-modal/oepa-pin.service';\nexport * from './lib/pin-modal/oepa-security-question';\nexport * from './lib/pin-modal/pin-modal.component';\nexport * from './lib/validation/form-validator';\nexport * from './lib/validation/validation.service';\nexport * from './lib/yes-no/yes-no.component';\nexport * from './lib/yes-no-boolean/yes-no.component';\nexport * from './lib/yes-no-other-input/yes-no-other-input.component';\nexport * from './lib/numeric-input.directive';\nexport * from './lib/progress-indicator/progress-info';\nexport * from './lib/select-input/select-input.component';\nexport * from './lib/server-timeout-modal/server-timeout-modal.component';\nexport * from './lib/shopping-cart/shopping-cart.service';\nexport * from './lib/shopping-cart/shopping-cart-view/shopping-cart-view-parameters';\nexport * from './lib/shopping-cart/shopping-cart-view/shopping-cart-view.component';\nexport * from './lib/shopping-cart/shopping-cart-summary/shopping-cart-summary.component';\nexport * from './lib/start-end-timepicker/start-end-timepicker.component';\nexport * from './lib/template-confirmation-modal/template-confirmation-modal.component';\nexport * from './lib/text-area-input/text-area-input.component';\nexport * from './lib/text-input/text-input.component';\nexport * from './lib/timeout-modal/timeout-modal.component';\nexport * from './lib/timepicker/timepicker.component';\n\nexport * from './lib/table/oepa-table';\nexport * from './lib/table/oepa-table-cell';\nexport * from './lib/table/oepa-table-cell-click-event';\nexport * from './lib/table/oepa-table-column';\nexport * from './lib/table/oepa-table-config';\nexport * from './lib/table/oepa-table-filter';\nexport * from './lib/table/oepa-table-filtering.directive';\nexport * from './lib/table/oepa-table-header';\nexport * from './lib/table/oepa-table-page-info';\nexport * from './lib/table/oepa-table-popover';\nexport * from './lib/table/oepa-table-row';\nexport * from './lib/table/oepa-table-sort-criterion';\nexport * from './lib/table/oepa-table-sorting.directive';\nexport * from './lib/table/table-export.service';\nexport * from './lib/table/table.component';\nexport * from './lib/table/p-table/p-table.component';\nexport * from './lib/table/table.service';\nexport * from './lib/table/oepa-table-cell-inner-html.pipe';\nexport * from './lib/table/oepa-table-cell-colspan.pipe';\nexport * from './lib/table/oepa-table-cell-value.pipe';\nexport * from './lib/table/oepa-table-cell-classname.pipe';\nexport * from './lib/table/oepa-table-cell-icon-classname.pipe';\nexport * from './lib/table/oepa-table-cell-img-src.pipe';\n\nexport * from './lib/zip-code/zip-code.component';\n\nexport * from './lib/oepa-forms.service';\n\nexport * from './lib/oepa-images';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.OepaAddressService","i2","i3","i4","i5","i1","i3.ActionBtnComponent","i1.TableService","i2.TableService","i3.TableExportService","i6","i8","i10.ActionBtnComponent","i11.OepaTableSortingDirective","i12.OepaTableFilteringDirective","i13.OepaTableCellInnerHtmlPipe","i14.OepaTableCellColSpanPipe","i15.OepaTableCellValuePipe","i16.OepaTableCellClassnamePipe","i17.OepaTableCellIconClassnamePipe","i18.OepaTableCellImgSrcPipe","i4.TableComponent","i6.TableComponent","i4.PActionBtnComponent","i5.OepaTableCellInnerHtmlPipe","i6.OepaTableCellValuePipe","i7.OepaTableCellIconClassnamePipe","i8.OepaTableCellImgSrcPipe","i9.OepaTableCellNotSelectablePipe","i10.OepaTableCellInputComponentPipe","i2.OepaTableSortingDirective","i3.OepaTableFilteringDirective","i9","i12.PTableDataCellComponent","i13.TableHeaderCellComponent","i14.OepaTableFilteringDirective","i15.OepaTableCellColSpanPipe","i4.ActionBtnComponent","i3.OepaFormsService","i4.EntityService","i7.AddressComponent","i8.TableComponent","i7","i8.AddressComponent","i9.TableComponent","i3.EntityService","i6.AddressComponent","i7.ContactComponent","i9.ContactComponent","i10.TableComponent","i4.DatepickerComponent","i4.EsriMapComponent","i5.YesNoComponent","i2.EdocAttachmentService","i4.ArrayFilterPipe","i4.ArraySortPipe","i5.TableComponent","i3.OepaPinService","i3.ShoppingCartService","i1.ShoppingCartService","i2.DatepickerComponent","i10","i11"],"mappings":"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"}