import { OnInit, OnChanges, ElementRef, EventEmitter, SimpleChanges } from '@angular/core'; import { DomSanitizer, SafeHtml } from '@angular/platform-browser'; import { Observable } from 'rxjs/Observable'; import 'rxjs/add/observable/fromEvent'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/filter'; import 'rxjs/add/operator/debounceTime'; import { AutoCompleteItem, AutocompleteStyle } from './model'; declare class Ng2SimpleAutocomplete implements OnInit, OnChanges { sanitizer: DomSanitizer; search: string; searchChange: EventEmitter<{}>; searchResults: AutoCompleteItem[]; onChangeInput: EventEmitter<{}>; onSelect: EventEmitter<{}>; onReset: EventEmitter<{}>; /** * apply 3rd-party/custom class(es) for input */ classNames: any; /** * if searchResult is static list, list will be filtered when input changes * @memberof Ng2SimpleAutocomplete */ isStatic: boolean; /** * input placeholder * * @memberof Ng2SimpleAutocomplete */ placeholder: string; /** * shows loading spinner when this is true value. * * @type {Boolean} * @memberof Ng2SimpleAutocomplete */ isLoading: Boolean; /** * When valid historyId is given, then component stores selected item. * History result is visible at least 1 history item is stored. * * @type {String} * @memberof Ng2SimpleAutocomplete */ historyId: String; /** * heading text of history result. * if it is null then history heading will be hide. * * @memberof Ng2SimpleAutocomplete */ historyHeading: string; maxHistory: number; autoFocusOnFirst: boolean; resetOnDelete: boolean; resetOnFocusOut: boolean; noResultText: string; /** * style object. it overwrites basic style of input element by [ngStyle] binding. * * ex) * const inputStyle = { * 'width': '300px', * 'font-size': '20px', * 'padding': '0 20px' * } * @memberof Ng2SimpleAutocomplete */ style: AutocompleteStyle; _search: string; _searchResults: AutoCompleteItem[]; filteredResults: AutoCompleteItem[]; searchInput: ElementRef; searchResultsEl: ElementRef; searchHistoryEl: ElementRef; inputKeyUp$: Observable; inputKeyDown$: Observable; isFocusIn: Boolean; searchHistory: AutoCompleteItem[]; isNoResults: boolean; isResultSelected: boolean; maintainFocus: boolean; fontSize: any; maxHeight: string; readonly containerClassName: any; readonly inputClassName: string; readonly isResetButtonVisible: Boolean; readonly isInputExist: boolean; readonly isResultExists: boolean; readonly isResultVisible: Boolean; /** * check if history list is visible * * @readonly * @type {Boolean} * @memberof Ng2SimpleAutocomplete */ readonly isSearchHistoryVisible: Boolean; readonly searchResultsOnVisble: AutoCompleteItem[]; readonly isNoResultsVisible: boolean; constructor(sanitizer: DomSanitizer); ngOnInit(): void; ngOnChanges(changes: SimpleChanges): void; extractStyle(style?: {}): void; initSearchHistory(): void; initEventStream(): void; listenEventStream(): void; /** * on keyup == when input changed * @param e event */ onKeyUp(e: any): void; filterStaticResult(search: any): void; /** * 키보드 상하 입력 */ onFocusNextResult(e: any): void; /** * 포커스된 아이템으로 스크롤한다. * * @param {any} index 결과 아이템 인덱스 * * @memberOf AutocompleteComponent */ scrollToFocusedItem(index: any): void; /** * 검색 결과에 마우스오버 * @param {[number]} index [searchResults 배열의 인덱스] */ onMouseOverResultItem(index: number): void; /** * 하이라이트된 입력을 수정한다. * @param {[number]} focusIdx [searchResults 배열에서 하이라이트할 인덱스] */ setFocusedResult(focusIdx: number): void; /** * 검색 결과를 마우스로 직접 선택 */ onClickResult(index: any): void; /** * 자동완성 결과 엔터키 선택 */ onEnterResult(e: any): void; onEsc(): void; /** * onSelect 콜백 호출 * @param selected */ emitResult(selected: AutoCompleteItem): void; /** * 키보드 화살표 위 입력일때 텍스트 인풋에서 커서가 맨 앞으로 이동하는 기본 동작 방지 * @param {[type]} e [description] */ preventCursorPosition(e: any): void; onFocusout(e: any): void; onFocusin(): void; /** * 검색 입력 텍스트 초기화(우측 x버튼 클릭) */ onResetSearchText(): void; onDeleteSearchText(): void; /** * 검색 기록을 local storage에 저장 */ saveHistory(selected: AutoCompleteItem): void; onClickResetHistory(): void; onDeleteHistoryItem(index: number): void; saveHistoryToLocalStorage(history: any): void; sanitize(markup: string): SafeHtml; } export { Ng2SimpleAutocomplete, AutocompleteStyle, AutoCompleteItem };