{"version":3,"file":"grothar-mat-select-filter.mjs","sources":["../../src/lib/mat-select-filter.service.ts","../../src/lib/mat-select-filter.component.ts","../../src/lib/mat-select-filter.module.ts","../../src/public_api.ts","../../src/grothar-mat-select-filter.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class MatSelectFilterService {\r\n\r\n  constructor() { }\r\n}\r\n","import { Component, OnInit, Input, EventEmitter, Output, ViewChild, OnDestroy } from '@angular/core';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport {\r\n  A,\r\n  Z,\r\n  ZERO,\r\n  NINE,\r\n  SPACE, END, HOME,\r\n} from '@angular/cdk/keycodes';\r\nimport { Subscription } from 'rxjs';\r\n@Component({\r\n  selector: 'mat-select-filter',\r\n  template: `\r\n  <form [formGroup]=\"searchForm\" class=\"mat-filter\" [ngStyle]=\"{'background-color': color ? color : 'white'}\">\r\n  <div>\r\n  <input #input class=\"mat-filter-input\" matInput placeholder=\"{{placeholder}}\" formControlName=\"value\" (keydown)=\"handleKeydown($event)\">\r\n    <mat-spinner *ngIf=\"localSpinner\" class=\"spinner\" diameter=\"16\"></mat-spinner>\r\n  </div>\r\n  <div *ngIf=\"noResults\"\r\n     class=\"noResultsMessage\">\r\n  {{noResultsMessage}}\r\n</div>\r\n</form>\r\n  `,\r\n  styleUrls: ['./mat-select-filter.component.scss']\r\n})\r\nexport class MatSelectFilterComponent implements OnInit, OnDestroy {\r\n  private searchFormValueChangesSubscription: Subscription;\r\n  @ViewChild('input', { static: true }) input;\r\n\r\n  @Input('array') array: any;\r\n  @Input('placeholder') placeholder: string;\r\n  @Input('color') color: string;\r\n  @Input('displayMember') displayMember: string;\r\n  @Input('showSpinner') showSpinner = true;\r\n  @Input('noResultsMessage') noResultsMessage = 'No results';\r\n  @Input('hasGroup') hasGroup: boolean;\r\n  @Input('groupArrayName') groupArrayName: string;\r\n\r\n  noResults = false;\r\n\r\n  localSpinner = false;\r\n  @Output() filteredReturn = new EventEmitter<any>();\r\n\r\n  public filteredItems: any = [];\r\n  public searchForm: FormGroup;\r\n\r\n  constructor(fb: FormBuilder) {\r\n    this.searchForm = fb.group({\r\n      value: ''\r\n    });\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.searchFormValueChangesSubscription =  this.searchForm.valueChanges.subscribe(value => {\r\n      if (this.showSpinner) {\r\n        this.localSpinner = true;\r\n      }\r\n      if (value['value']) {\r\n        // IF THE DISPLAY MEMBER INPUT IS SET WE CHECK THE SPECIFIC PROPERTY\r\n        if (this.displayMember == null) {\r\n          this.filteredItems = this.array.filter(name => name.toLowerCase().includes(value['value'].toLowerCase()));\r\n          // OTHERWISE, WE CHECK THE ENTIRE STRING\r\n        } else if (this.hasGroup && this.groupArrayName && this.displayMember) {\r\n          this.filteredItems = this.array.map(a => {\r\n            const objCopy = Object.assign({}, a);\r\n            objCopy[this.groupArrayName] = objCopy[this.groupArrayName].filter(g => g[this.displayMember].toLowerCase().includes(value['value'].toLowerCase()));\r\n            return objCopy;\r\n          }).filter(x => x[this.groupArrayName].length > 0);\r\n        } else {\r\n          this.filteredItems = this.array.filter(name => name[this.displayMember].toLowerCase().includes(value['value'].toLowerCase()));\r\n        }\r\n        // NO RESULTS VALIDATION\r\n\r\n        this.noResults = this.filteredItems == null || this.filteredItems.length === 0;\r\n\r\n\r\n      } else {\r\n        this.filteredItems = this.array.slice();\r\n        this.noResults = false;\r\n      }\r\n      this.filteredReturn.emit(this.filteredItems);\r\n      setTimeout(() => {\r\n        if (this.showSpinner) {\r\n          this.localSpinner = false;\r\n        }\r\n      }, 2000);\r\n    });\r\n\r\n    setTimeout(() => {\r\n      this.input.nativeElement.focus();\r\n    }, 500);\r\n    if (!this.placeholder) {\r\n      this.placeholder = 'Search...';\r\n    }\r\n  }\r\n\r\n  handleKeydown(event: KeyboardEvent) {\r\n    // PREVENT PROPAGATION FOR ALL ALPHANUMERIC CHARACTERS IN ORDER TO AVOID SELECTION ISSUES\r\n    if ((event.key && event.key.length === 1) ||\r\n      (event.keyCode >= A && event.keyCode <= Z) ||\r\n      (event.keyCode >= ZERO && event.keyCode <= NINE) ||\r\n      (event.keyCode === SPACE)) {\r\n      event.stopPropagation();\r\n    }\r\n  }\r\n  ngOnDestroy() {\r\n    this.filteredReturn.emit(this.array);\r\n    this.searchFormValueChangesSubscription.unsubscribe();\r\n  }\r\n}\r\n","import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatSelectFilterComponent } from './mat-select-filter.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n@NgModule({\r\n  declarations: [MatSelectFilterComponent],\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    MatProgressSpinnerModule\r\n  ],\r\n  exports: [MatSelectFilterComponent]\r\n})\r\nexport class MatSelectFilterModule { }\r\n","/*\r\n * Public API Surface of mat-select-filter\r\n */\r\n\r\nexport * from './lib/mat-select-filter.service';\r\nexport * from './lib/mat-select-filter.component';\r\nexport * from './lib/mat-select-filter.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}