{"version":3,"file":"novo-elements-elements-search.mjs","sources":["../../../projects/novo-elements/src/elements/search/SearchBox.ts","../../../projects/novo-elements/src/elements/search/SearchBox.module.ts","../../../projects/novo-elements/src/elements/search/novo-elements-elements-search.ts"],"sourcesContent":["// NG2\nimport { ENTER } from '@angular/cdk/keycodes';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Input,\n  NgZone,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Key } from 'novo-elements/utils';\nimport { NovoOverlayTemplateComponent } from 'novo-elements/elements/common';\n\n// Value accessor for the component (supports ngModel)\nconst SEARCH_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoSearchBoxElement),\n  multi: true,\n};\n\n@Component({\n    selector: 'novo-search',\n    providers: [SEARCH_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n    <!-- SEARCH ICON -->\n    <novo-icon (click)=\"showSearch($event)\" [tooltip]=\"hint\" tooltipPosition=\"bottom\">{{ icon }}</novo-icon>\n    <!-- SEARCH INPUT -->\n    <input\n      type=\"text\"\n      [attr.name]=\"name\"\n      [attr.value]=\"displayValue\"\n      [attr.placeholder]=\"placeholder\"\n      (focus)=\"onFocus()\"\n      (blur)=\"onBlur()\"\n      (keydown)=\"_handleKeydown($event)\"\n      (input)=\"_handleInput($event)\"\n      #input\n      data-automation-id=\"novo-search-input\"\n    />\n    <!-- SEARCH OVERLAY -->\n    <novo-overlay-template\n      [parent]=\"element\"\n      [closeOnSelect]=\"closeOnSelect\"\n      [position]=\"position\"\n      [hasBackdrop]=\"hasBackdrop\"\n      (select)=\"onSelect()\"\n      (closing)=\"onBlur()\"\n    >\n      <ng-content></ng-content>\n    </novo-overlay-template>\n  `,\n    styleUrls: ['./SearchBox.scss'],\n    standalone: false,\n})\nexport class NovoSearchBoxElement implements ControlValueAccessor, OnInit {\n  @Input()\n  public name: string;\n  @Input()\n  public icon: string = 'search';\n  @Input()\n  public position: string = 'bottom-left';\n  @Input()\n  public placeholder: string = 'Search...';\n  @Input()\n  @HostBinding('class.always-open')\n  public alwaysOpen: boolean = false;\n  @Input()\n  public theme: string;\n  @Input()\n  public color: string = 'positive';\n  @Input()\n  public closeOnSelect: boolean = true;\n  @Input()\n  public displayField: string;\n  @Input()\n  public displayValue: string;\n  @Input()\n  public hint: string;\n  @Input()\n  public keepOpen: boolean = false;\n  @Input()\n  public hasBackdrop: boolean = false;\n  @Input()\n  public allowPropagation: boolean = false;\n  @Input()\n  public overrideElement: ElementRef;\n  @Output()\n  public searchChanged: EventEmitter<string> = new EventEmitter<string>();\n  @Output()\n  public applySearch: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n  @HostBinding('class.focused')\n  focused: boolean = false;\n  public value: any;\n\n  /** View -> model callback called when value changes */\n  _onChange: (value: any) => void = () => {};\n  /** View -> model callback called when autocomplete has been touched */\n  _onTouched = () => {};\n\n  /** Element for the panel containing the autocomplete options. */\n  @ViewChild(NovoOverlayTemplateComponent)\n  overlay: any;\n  @ViewChild('input', { static: true })\n  input: any;\n\n  private debounceSearchChange: any;\n\n  constructor(\n    public element: ElementRef,\n    public labels: NovoLabelService,\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _zone: NgZone,\n  ) {}\n\n  ngOnInit() {\n    if (this.overrideElement) {\n      this.element = this.overrideElement;\n    }\n  }\n\n  /**\n   * @name showFasterFind\n   * @description This function shows the picker and adds the active class (for animation)\n   */\n  showSearch(event?: any, forceClose: boolean = false) {\n    if (!this.panelOpen) {\n      // Reset search\n      // Set focus on search\n      setTimeout(() => {\n        const element = this.input.nativeElement;\n        if (element) {\n          element.focus();\n        }\n      }, 10);\n    } else {\n      this.closePanel();\n    }\n  }\n  onFocus() {\n    this._zone.run(() => {\n      this.focused = true;\n      this.openPanel();\n    });\n  }\n  onBlur() {\n    if (!this.keepOpen || !this.panelOpen) {\n      this.focused = false;\n    }\n  }\n  onSelect() {\n    if (!this.keepOpen) {\n      this.closePanel();\n    }\n  }\n  /** BEGIN: Convenient Panel Methods. */\n  openPanel(): void {\n    this.overlay.openPanel();\n  }\n  closePanel(): void {\n    setTimeout(() => this.overlay.closePanel());\n    this.focused = false;\n  }\n  get panelOpen(): boolean {\n    return this.overlay && this.overlay.panelOpen;\n  }\n  @HostBinding('class.active')\n  get active(): boolean {\n    return this.panelOpen || this.alwaysOpen;\n  }\n  /** END: Convenient Panel Methods. */\n\n  _handleKeydown(event: KeyboardEvent): void {\n    if ((event.key === Key.Escape || event.key === Key.Enter || event.key === Key.Tab) && this.panelOpen) {\n      if (event.keyCode === ENTER) {\n        this.applySearch.emit(event);\n      }\n      this.closePanel();\n      if (!this.allowPropagation) {\n        event.stopPropagation();\n      }\n    }\n  }\n  _handleInput(event: KeyboardEvent): void {\n    if (document.activeElement === event.target) {\n      this.value = (event.target as HTMLInputElement).value;\n      this._onChange((event.target as HTMLInputElement).value);\n\n      if (this.debounceSearchChange) {\n        clearTimeout(this.debounceSearchChange);\n      }\n      this.debounceSearchChange = setTimeout(() => {\n        this.searchChanged.emit((event.target as HTMLInputElement).value);\n      }, 400);\n    }\n  }\n  writeValue(value: any): void {\n    this._setValue(value);\n  }\n  registerOnChange(fn: (value: any) => {}): void {\n    this._onChange = fn;\n  }\n  registerOnTouched(fn: () => {}) {\n    this._onTouched = fn;\n  }\n  private _setValue(value: any): void {\n    this.value = value;\n    let toDisplay = value;\n    if (value && this.displayField) {\n      toDisplay = value.hasOwnProperty(this.displayField) ? value[this.displayField] : value;\n    }\n    // Simply falling back to an empty string if the display value is falsy does not work properly.\n    // The display value can also be the number zero and shouldn't fall back to an empty string.\n    this.displayValue = toDisplay ? toDisplay : '';\n    this.input.nativeElement.value = this.displayValue;\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /**\n   * This method closes the panel, and if a value is specified, also sets the associated\n   * control to that value. It will also mark the control as dirty if this interaction\n   * stemmed from the user.\n   */\n  public setValueAndClose(event: any | null): void {\n    if (event && event.value) {\n      this._setValue(event.value);\n      this._onChange(event.value);\n    }\n    this.closePanel();\n  }\n\n  /**\n   * Clear any previous selected option and emit a selection change event for this option\n   */\n  public clearValue(skip: any) {\n    this.writeValue(null);\n    this._onChange(null);\n  }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n// APP\nimport { NovoOverlayModule } from 'novo-elements/elements/common';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoPickerModule } from 'novo-elements/elements/picker';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\nimport { NovoSearchBoxElement } from './SearchBox';\n@NgModule({\n  imports: [CommonModule, NovoIconModule, NovoPickerModule, NovoTooltipModule, NovoOverlayModule],\n  declarations: [NovoSearchBoxElement],\n  exports: [NovoSearchBoxElement],\n})\nexport class NovoSearchBoxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}