{"version":3,"file":"ng-super-select.mjs","sources":["../../../projects/ng-super-select/src/lib/ng-super-select.service.ts","../../../projects/ng-super-select/src/lib/click-outside.directive.ts","../../../projects/ng-super-select/src/lib/ng-super-select.component.ts","../../../projects/ng-super-select/src/lib/ng-super-select.component.html","../../../projects/ng-super-select/src/lib/ng-super-select.module.ts","../../../projects/ng-super-select/src/public-api.ts","../../../projects/ng-super-select/src/ng-super-select.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgSuperSelectService {\n\n  constructor(private http: HttpClient) { }\n\n  getOptions(url: string){\n    return this.http.get(url)\n  }\n\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\n\n@Directive({\n  selector: '[clickOutside]'\n})\nexport class ClickOutsideDirective {\n\n  constructor(private elementRef: ElementRef) { }\n\n  @Output() clickOutside = new EventEmitter<MouseEvent>();\n\n  @HostListener('document:click', ['$event.target'])\n  public onClick(target: any) {\n    const clickedInside = this.elementRef.nativeElement.contains(target);\n    if (!clickedInside) {\n      this.clickOutside.emit();\n    }\n  }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NgSuperSelectService } from './ng-super-select.service';\n\n@Component({\n  selector: 'ng-super-select',\n  templateUrl: './ng-super-select.component.html',\n  styleUrls: ['./ng-super-select.component.css'],\n})\nexport class NgSuperSelectComponent implements OnInit {\n  @Input() placeholder: string = '';\n  @Input() isSearchable: boolean = false;\n  @Input() isMultiSelectable: boolean = false;\n  @Input() optionArray: any[] = [];\n  @Input() bindName!: string;\n  @Input() bindValue!: string;\n  @Input() isDataObject: boolean = true;\n  @Input() noOptionMessage: string = '';\n  @Input() preSelectData!: any;\n  @Input() showDoneButton: boolean = true;\n  @Input() disable: boolean = false;\n  @Input() apiUrl: string = '';\n  @Input() responseKey!: string;\n  @Input() delay: number = 400;\n  @Input() apiOnSearch: boolean = false;\n  @Input() addNewRecordRequired: boolean = false;\n  @Input() addNewRecordLabel: string = 'Add new record: ';\n\n  @Output() changeSuperSelect: EventEmitter<any> = new EventEmitter();\n  @Output() addNewRecord: EventEmitter<any> = new EventEmitter();\n\n  isAddNewRecordInprogress: boolean = false;;\n  isOptionShown: boolean = false;\n  displayOptionArray: any[] = [];\n  selectedData!: any;\n  id = `ngSuperSelectSearchInput${Math.floor(100000 + Math.random() * 900000)}`;\n  containerId = `ngSuperSelectContainer${Math.floor(\n    100000 + Math.random() * 900000\n  )}`;\n  request: any;\n  debounce: any;\n  gettingNewData = false;\n  lastApiKeyTerm!: string;\n\n  constructor(private ngSuperSelectService: NgSuperSelectService) { }\n\n  ngOnInit(): void {\n    if (this.apiUrl) {\n      this.getOptions(true);\n    } else {\n      this.displayOptionArray = [...this.optionArray];\n      this.selectedData =\n        this.preSelectData ?? (this.isMultiSelectable ? [] : null);\n      if (\n        this.selectedData !== undefined &&\n        this.selectedData !== null &&\n        !this.isMultiSelectable\n      ) {\n        this.changeSelectedData(this.selectedData);\n      }\n    }\n  }\n\n  getOptions(isFirstTimeApiCall = false) {\n    if (this.gettingNewData) this.request.unsubscribe();\n    this.gettingNewData = true;\n    const element: any = this.getInputElement();\n    const searchKey = element?.value.toLowerCase() ?? '';\n    this.request = this.ngSuperSelectService\n      .getOptions(`${this.apiUrl}${this.apiOnSearch ? searchKey : ''}`)\n      .subscribe({\n        next: (response: any) => {\n          const data = !this.responseKey\n            ? response\n            : this.getDataFromResponse(response);\n          this.displayOptionArray = data;\n          this.optionArray = data;\n          this.gettingNewData = false;\n          this.selectedData =\n            this.preSelectData ?? (this.isMultiSelectable ? [] : null);\n          if (\n            this.selectedData !== undefined &&\n            this.selectedData !== null &&\n            !this.isMultiSelectable\n          ) {\n            this.changeSelectedData(this.selectedData);\n          }\n        },\n        error: () => {\n          this.gettingNewData = false;\n          this.displayOptionArray = [];\n        },\n      });\n  }\n\n  getDataFromResponse(response: any) {\n    this.responseKey.split('.').forEach((key) => {\n      response = response[key];\n    });\n    return response;\n  }\n\n  dropDownClicked() {\n    if (!this.isOptionShown && !this.disable) this.isOptionShown = true;\n  }\n\n  get getPlaceHolder() {\n    return (\n      this.placeholder ||\n      (this.isSearchable ? 'Type here to search' : 'Please select a option')\n    );\n  }\n\n  getSearchedValue() {\n    const element: any = this.getInputElement();\n    return element?.value;\n  }\n\n  search(): void {\n    try {\n      const element: any = this.getInputElement();\n      const searchKey = element.value.toLowerCase();\n      if (this.lastApiKeyTerm !== searchKey) {\n        this.lastApiKeyTerm = searchKey;\n        if (!this.apiUrl || !this.apiOnSearch) {\n          if (!this.isMultiSelectable) this.changeSelectedData(null);\n          if (this.isDataObject && (!this.bindName || !this.bindValue)) {\n            alert('Please pass bindName && bindValue key');\n          } else {\n            this.displayOptionArray = [...this.optionArray].filter((data) =>\n              this.isDataObject\n                ? (data[this.bindName] ?? '').toLowerCase().includes(searchKey)\n                : (data ?? '').toLowerCase().includes(searchKey)\n            );\n          }\n        } else if (this.apiOnSearch) {\n          clearTimeout(this.debounce);\n          this.debounce = setTimeout(() => {\n            this.getOptions();\n          }, this.delay);\n        }\n      }\n    } catch (error) {\n      alert('Something went wrong with super-select, check console');\n      console.log(error);\n    }\n  }\n\n  getBindName(value: any) {\n    this.isOptionShown = false;\n    return this.isDataObject\n      ? this.displayOptionArray.find((data) => data[this.bindValue] === value)[\n      this.bindName\n      ]\n      : value;\n  }\n\n  changeSelectedData(value: any) {\n    if (this.selectedData !== value) {\n      this.selectedData = value;\n      this.changeSuperSelect.emit(value);\n    }\n\n    if (value !== null) {\n      this.closeOption();\n      const element: any = this.getInputElement();\n      if (element) element.value = this.getSelectedDataName(value) ?? null;\n      else\n        setTimeout(() => {\n          this.changeSelectedData(value);\n        }, 0);\n    }\n  }\n\n  addDataInSelectedData(value: any) {\n    if (!this.selectedData?.find((data: any) => data === value)) {\n      this.changeSuperSelect.emit([...this.selectedData, value]);\n      this.selectedData.push(value);\n    }\n    this.clear();\n  }\n\n  closeOption() {\n    this.isOptionShown = false;\n  }\n\n  isDataSelected(value: any) {\n    return this.isMultiSelectable\n      ? this.selectedData.find((data: any) => data === value)\n      : this.selectedData === value;\n  }\n\n  optionClicked(value: any) {\n    this.isMultiSelectable\n      ? this.addDataInSelectedData(value)\n      : this.changeSelectedData(value);\n  }\n\n  clear(isClicked = false) {\n    const element: any = this.getInputElement();\n    element.value = '';\n    if (this.isMultiSelectable) element?.focus();\n    if (!this.isMultiSelectable) {\n      this.changeSelectedData(null);\n    }\n    this.search();\n    if (isClicked) {\n      setTimeout(() => {\n        this.isOptionShown = true;\n      }, 0);\n    }\n  }\n\n  getSelectedDataName(value: any) {\n    const record = this.optionArray.find((data: any) =>\n      this.isDataObject ? data[this.bindValue] === value : data === value\n    );\n    return this.isDataObject ? (record ? record[this.bindName] : null) : record;\n  }\n\n  canShowClearIcon() {\n    const element: any = this.getInputElement();\n    return element.value;\n  }\n\n  getInputElement() {\n    return document.getElementById(this.id);\n  }\n  removeValue(index: number) {\n    let newSelectedData = [...this.selectedData];\n    newSelectedData.splice(index, 1);\n    this.selectedData = newSelectedData;\n    this.changeSuperSelect.emit(newSelectedData);\n  }\n\n  clickOutside() {\n    if (this.isOptionShown) {\n      this.closeOption();\n      if (this.isSearchable) {\n        if (\n          this.isMultiSelectable ||\n          (!this.isMultiSelectable && !this.selectedData)\n        ) {\n          this.clear();\n        }\n      }\n    }\n  }\n\n  isActiveElement() {\n    const element: any = this.getInputElement();\n    return element === document.activeElement;\n  }\n\n  focusOut() {\n    const element: any = this.getInputElement();\n    element?.blur();\n  }\n\n  getOptionContainerWidth() {\n    const element: any = document.getElementById(this.containerId);\n    return {\n      width: `${element?.offsetWidth}px`,\n    };\n  }\n\n  emitAddNewRecord() {\n    if (!this.isAddNewRecordInprogress) {\n      this.isAddNewRecordInprogress = true;\n      if (!this.isMultiSelectable) {\n        this.closeOption();\n      }\n      const value = this.getSearchedValue();\n      const selectedValue = this.isDataObject ? '' : value;\n      this.optionArray = [\n        ...JSON.parse(JSON.stringify(this.optionArray)),\n        this.isDataObject ? { [this.bindName]: value, [this.bindValue]: selectedValue } : selectedValue,\n      ];\n      this.selectedData = this.isMultiSelectable ? [...JSON.parse(JSON.stringify(this.selectedData ?? [])), selectedValue] : selectedValue;\n      if (this.isDataObject) this.disable = true;\n      if (this.isMultiSelectable) {\n        const element: any = this.getInputElement();\n        element.value = '';\n      }\n      this.search();\n\n      this.addNewRecord.emit(value);\n    }\n\n  }\n\n  updateNewlyAddedRecord(value: any, array: any) {\n    if (this.isDataObject && this.isAddNewRecordInprogress) {\n      if (this.isMultiSelectable) {\n        if (this.selectedData?.length)\n          this.selectedData[this.selectedData.length - 1] = value;\n        else this.selectedData = [value];\n      }\n      this.optionArray = array;\n      this.displayOptionArray = [...this.optionArray];\n      this.disable = false;\n      this.isAddNewRecordInprogress = false;\n    }\n  }\n}\n","<div (clickOutside)=\"clickOutside();focusOut()\" [id]=\"containerId\" class=\"ng-super-select-container\">\n  <div (click)=\"dropDownClicked()\" class=\"ng-super-select-field\"\n    [ngClass]=\"{'ng-super-select-dropdown-field': !isSearchable, 'active': (isActiveElement() && !disable), 'ng-super-select-disable': disable}\">\n    <ng-container *ngIf=\"isMultiSelectable\">\n      <div class=\"ng-super-select-selected-data-options\" *ngFor=\"let item of selectedData; let i = index;\">\n        <span> {{getSelectedDataName(item)}} </span>\n        <button *ngIf=\"!disable\" (click)=\"removeValue(i)\" class=\"ng-super-select-remove-selected-data\"> x </button>\n      </div>\n    </ng-container>\n    <input type=\"search\" [readonly]=\"!isSearchable || disable\" [id]=\"id\" [placeholder]=\"getPlaceHolder\"\n      (input)=\"search()\" type=\"text\" class=\"ng-super-select-input\">\n    <span *ngIf=\"(isSearchable && canShowClearIcon()) && !disable\" class=\"ng-super-select-clear\"\n      (click)=\"clear(true)\">x</span>\n    <span *ngIf=\"!isSearchable\" class=\"ng-super-select-down-icon\"></span>\n  </div>\n  <div [ngStyle]=\"getOptionContainerWidth()\" class=\"ng-super-select-option-button-container\" *ngIf=\"isOptionShown\">\n    <div class=\"ng-super-select-option-container\">\n      <ng-container *ngIf=\"!isDataObject || (isDataObject && bindName && bindValue)\">\n        <!-- <ng-container *ngIf=\"!isMultiSelectable\"> -->\n        <option (click)=\"optionClicked(isDataObject ? item[bindValue] : item);\" class=\"ng-super-select-option\"\n          [ngClass]=\"{'active': isDataSelected(isDataObject ? item[bindValue] : item)}\"\n          *ngFor=\"let item of displayOptionArray\">\n          {{isDataObject ? item[bindName] : item}}\n        </option>\n        <li (click)=\"clear()\" class=\"ng-super-select-option\"\n          *ngIf=\"!addNewRecordRequired && displayOptionArray && !displayOptionArray.length\">\n          {{noOptionMessage ||\n          'No data available'}}</li>\n        <li (click)=\"emitAddNewRecord()\" class=\"ng-super-select-option\"\n          *ngIf=\"addNewRecordRequired && displayOptionArray && !displayOptionArray.length\">\n          <span class=\"ng-super-select-add-label\">\n            {{addNewRecordLabel}}\n          </span>\n          <span class=\"ng-super-select-add-label-value\">\n            {{getSearchedValue()}}\n          </span>\n        </li>\n      </ng-container>\n      <ng-container *ngIf=\"isDataObject && (!bindName || !bindValue) \">\n        <li class=\"ng-super-select-option\">Please pass bindName && bindValue key</li>\n      </ng-container>\n    </div>\n    <div class=\"ng-super-select-button-section\" *ngIf=\"isMultiSelectable && showDoneButton\">\n      <button (click)=\"closeOption(); clear();focusOut()\" class=\"ng-super-select-action-button\">Done</button>\n    </div>\n  </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from \"@angular/common/http\";\n\nimport { NgSuperSelectComponent } from './ng-super-select.component';\n\nimport { ClickOutsideDirective } from './click-outside.directive';\n\n@NgModule({\n  declarations: [\n    NgSuperSelectComponent,\n    ClickOutsideDirective\n  ],\n  imports: [\n    CommonModule,\n    HttpClientModule\n  ],\n  exports: [\n    NgSuperSelectComponent\n  ]\n})\nexport class NgSuperSelectModule { }\n","/*\n * Public API Surface of ng-super-select\n */\n\nexport * from './lib/ng-super-select.service';\nexport * from './lib/ng-super-select.component';\nexport * from './lib/ng-super-select.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgSuperSelectService","i2.ClickOutsideDirective"],"mappings":"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"}