{"version":3,"file":"covalent-core-search.js.map","sources":["ng://@covalent/core/search/search-input/search-input.component.ts","ng://@covalent/core/search/search-box/search-box.component.ts","ng://@covalent/core/search/search.module.ts"],"sourcesContent":["import { Component, ViewChild, OnInit, Input, Output, EventEmitter, Optional,\n         ChangeDetectionStrategy, ChangeDetectorRef, forwardRef } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Dir } from '@angular/cdk/bidi';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { debounceTime, skip } from 'rxjs/operators';\n\nimport { IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\nexport class TdSearchInputBase {\n  constructor(public _changeDetectorRef: ChangeDetectorRef) { }\n}\n\n/* tslint:disable-next-line */\nexport const _TdSearchInputMixinBase = mixinControlValueAccessor(TdSearchInputBase);\n\n@Component({\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => TdSearchInputComponent),\n    multi: true,\n  }],\n  selector: 'td-search-input',\n  templateUrl: './search-input.component.html',\n  styleUrls: ['./search-input.component.scss' ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['value'],\n  animations: [\n    trigger('searchState', [\n      state('hide-left', style({\n        transform: 'translateX(-150%)',\n        display: 'none',\n      })),\n      state('hide-right', style({\n        transform: 'translateX(150%)',\n        display: 'none',\n      })),\n      state('show',  style({\n        transform: 'translateX(0%)',\n        display: 'block',\n      })),\n      transition('* => show', animate('200ms ease-in')),\n      transition('show => *', animate('200ms ease-out')),\n    ]),\n  ],\n})\nexport class TdSearchInputComponent extends _TdSearchInputMixinBase implements IControlValueAccessor, OnInit {\n\n  @ViewChild(MatInput) _input: MatInput;\n\n  /**\n   * appearance?: MatFormFieldAppearance\n   * Appearance style for the underlying input component.\n   */\n  @Input('appearance') appearance: MatFormFieldAppearance;\n\n  /**\n   * showUnderline?: boolean\n   * Sets if the input underline should be visible. Defaults to 'false'.\n   */\n  @Input('showUnderline') showUnderline: boolean = false;\n\n  /**\n   * debounce?: number\n   * Debounce timeout between keypresses. Defaults to 400.\n   */\n  @Input('debounce') debounce: number = 400;\n\n  /**\n   * placeholder?: string\n   * Placeholder for the underlying input component.\n   */\n  @Input('placeholder') placeholder: string;\n\n  /**\n   * clearIcon?: string\n   * The icon used to clear the search input.\n   * Defaults to 'cancel' icon.\n   */\n  @Input('clearIcon') clearIcon: string = 'cancel';\n\n  /**\n   * searchDebounce: function($event)\n   * Event emitted after the [debounce] timeout.\n   */\n  @Output('searchDebounce') onSearchDebounce: EventEmitter<string> = new EventEmitter<string>();\n\n  /**\n   * search: function($event)\n   * Event emitted after the key enter has been pressed.\n   */\n  @Output('search') onSearch: EventEmitter<string> = new EventEmitter<string>();\n\n  /**\n   * clear: function()\n   * Event emitted after the clear icon has been clicked.\n   */\n  @Output('clear') onClear: EventEmitter<void> = new EventEmitter<void>();\n\n  /**\n   * blur: function()\n   * Event emitted after the blur event has been called in underlying input.\n   */\n  @Output('blur') onBlur: EventEmitter<void> = new EventEmitter<void>();\n\n  get isRTL(): boolean {\n    if (this._dir) {\n      return this._dir.dir === 'rtl';\n    }\n    return false;\n  }\n\n  constructor(@Optional() private _dir: Dir,\n              _changeDetectorRef: ChangeDetectorRef) {\n    super(_changeDetectorRef);\n  }\n\n  ngOnInit(): void {\n    this._input.ngControl.valueChanges.pipe(\n      debounceTime(this.debounce),\n      skip(1), // skip first change when value is set to undefined\n    ).subscribe((value: string) => {\n      this._searchTermChanged(value);\n    });\n  }\n\n  /**\n   * Method to focus to underlying input.\n   */\n  focus(): void {\n    this._input.focus();\n  }\n\n  handleBlur(): void {\n    this.onBlur.emit(undefined);\n  }\n\n  stopPropagation(event: Event): void {\n    event.stopPropagation();\n  }\n\n  handleSearch(event: Event): void {\n    this.stopPropagation(event);\n    this.onSearch.emit(this.value);\n  }\n\n  /**\n   * Method to clear the underlying input.\n   */\n  clearSearch(): void {\n    this.value = '';\n    this._changeDetectorRef.markForCheck();\n    this.onClear.emit(undefined);\n  }\n\n  private _searchTermChanged(value: string): void {\n    this.onSearchDebounce.emit(value);\n  }\n\n}\n","import { Component, ViewChild, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { trigger, state, style, transition, animate, AUTO_STYLE } from '@angular/animations';\n\nimport { TdSearchInputComponent } from '../search-input/search-input.component';\nimport { IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\nexport class TdSearchBoxBase {\n  constructor(public _changeDetectorRef: ChangeDetectorRef) { }\n}\n\n/* tslint:disable-next-line */\nexport const _TdSearchBoxMixinBase = mixinControlValueAccessor(TdSearchBoxBase);\n\n@Component({\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => TdSearchBoxComponent),\n    multi: true,\n  }],\n  selector: 'td-search-box',\n  templateUrl: './search-box.component.html',\n  styleUrls: ['./search-box.component.scss' ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['value'],\n  animations: [\n    trigger('inputState', [\n      state('0', style({\n        width: '0%',\n        margin: '0px',\n      })),\n      state('1',  style({\n        width: '100%',\n        margin: AUTO_STYLE,\n      })),\n      transition('0 => 1', animate('200ms ease-in')),\n      transition('1 => 0', animate('200ms ease-out')),\n    ]),\n  ],\n})\nexport class TdSearchBoxComponent extends _TdSearchBoxMixinBase implements IControlValueAccessor {\n\n  private _searchVisible: boolean = false;\n  @ViewChild(TdSearchInputComponent) _searchInput: TdSearchInputComponent;\n\n  get searchVisible(): boolean {\n    return this._searchVisible;\n  }\n\n  /**\n   * backIcon?: string\n   * The icon used to close the search toggle, only shown when [alwaysVisible] is false.\n   * Defaults to 'search' icon.\n   */\n  @Input('backIcon') backIcon: string = 'search';\n\n  /**\n   * searchIcon?: string\n   * The icon used to open/focus the search toggle.\n   * Defaults to 'search' icon.\n   */\n  @Input('searchIcon') searchIcon: string = 'search';\n\n  /**\n   * clearIcon?: string\n   * The icon used to clear the search input.\n   * Defaults to 'cancel' icon.\n   */\n  @Input('clearIcon') clearIcon: string = 'cancel';\n\n  /**\n   * showUnderline?: boolean\n   * Sets if the input underline should be visible. Defaults to 'false'.\n   */\n  @Input('showUnderline') showUnderline: boolean = false;\n\n  /**\n   * debounce?: number\n   * Debounce timeout between keypresses. Defaults to 400.\n   */\n  @Input('debounce') debounce: number = 400;\n\n  /**\n   * alwaysVisible?: boolean\n   * Sets if the input should always be visible. Defaults to 'false'.\n   */\n  @Input('alwaysVisible') alwaysVisible: boolean = false;\n\n  /**\n   * placeholder?: string\n   * Placeholder for the underlying input component.\n   */\n  @Input('placeholder') placeholder: string;\n\n  /**\n   * searchDebounce: function($event)\n   * Event emitted after the [debounce] timeout.\n   */\n  @Output('searchDebounce') onSearchDebounce: EventEmitter<string> = new EventEmitter<string>();\n\n  /**\n   * search: function($event)\n   * Event emitted after the key enter has been pressed.\n   */\n  @Output('search') onSearch: EventEmitter<string> = new EventEmitter<string>();\n\n  /**\n   * clear: function()\n   * Event emitted after the clear icon has been clicked.\n   */\n  @Output('clear') onClear: EventEmitter<void> = new EventEmitter<void>();\n\n  /**\n   * blur: function()\n   * Event emitted after the blur event has been called in underlying input.\n   */\n  @Output('blur') onBlur: EventEmitter<void> = new EventEmitter<void>();\n\n  constructor(_changeDetectorRef: ChangeDetectorRef) {\n    super(_changeDetectorRef);\n  }\n\n  /**\n   * Method executed when the search icon is clicked.\n   */\n  searchClicked(): void {\n    if (!this.alwaysVisible && this._searchVisible) {\n      this.value = '';\n      this.handleClear();\n    } else if (this.alwaysVisible || !this._searchVisible) {\n      this._searchInput.focus();\n    }\n    this.toggleVisibility();\n  }\n\n  toggleVisibility(): void {\n    this._searchVisible = !this._searchVisible;\n    this._changeDetectorRef.markForCheck();\n  }\n\n  handleSearchDebounce(value: string): void {\n    this.onSearchDebounce.emit(value);\n  }\n\n  handleSearch(value: string): void {\n    this.onSearch.emit(value);\n  }\n\n  handleClear(): void {\n    this.onClear.emit(undefined);\n  }\n\n  handleBlur(): void {\n    this.onBlur.emit(undefined);\n  }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TdSearchInputComponent } from './search-input/search-input.component';\nimport { TdSearchBoxComponent } from './search-box/search-box.component';\n\n@NgModule({\n  imports: [\n    FormsModule,\n    CommonModule,\n    MatInputModule,\n    MatIconModule,\n    MatButtonModule,\n  ],\n  declarations: [\n    TdSearchInputComponent,\n    TdSearchBoxComponent,\n  ],\n  exports: [\n    TdSearchInputComponent,\n    TdSearchBoxComponent,\n  ],\n})\nexport class CovalentSearchModule {\n\n}\n"],"names":[],"mappings":"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"}
