import { EventEmitter, Renderer2, OnInit, TemplateRef, QueryList, AfterViewInit } from '@angular/core'; import { AsyncValidatorFn, ValidatorFn } from '@angular/forms'; import { Observable } from 'rxjs/Observable'; import 'rxjs/add/observable/of'; import 'rxjs/add/operator/debounceTime'; import 'rxjs/add/operator/filter'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/first'; import { TagInputAccessor, TagModel } from '../../core/accessor'; import { DragProvider } from '../../core/providers/drag-provider'; import { TagInputForm } from '../tag-input-form/tag-input-form.component'; import { TagInputDropdown } from '../dropdown/tag-input-dropdown.component'; import { TagComponent } from '../tag/tag.component'; export declare class TagInputComponent extends TagInputAccessor implements OnInit, AfterViewInit { private readonly renderer; readonly dragProvider: DragProvider; /** * @name separatorKeys * @desc keyboard keys with which a user can separate items * @type {Array} */ separatorKeys: string[]; /** * @name separatorKeyCodes * @desc keyboard key codes with which a user can separate items * @type {Array} */ separatorKeyCodes: number[]; /** * @name placeholder * @desc the placeholder of the input text * @type {string} */ placeholder: string; /** * @name secondaryPlaceholder * @desc placeholder to appear when the input is empty * @type {string} */ secondaryPlaceholder: string; /** * @name maxItems * @desc maximum number of items that can be added * @type {number} */ maxItems: number; /** * @name validators * @desc array of Validators that are used to validate the tag before it gets appended to the list * @type {Validators[]} */ validators: ValidatorFn[]; /** * @name asyncValidators * @desc array of AsyncValidator that are used to validate the tag before it gets appended to the list * @type {Array} */ asyncValidators: AsyncValidatorFn[]; /** * - if set to true, it will only possible to add items from the autocomplete * @name onlyFromAutocomplete * @type {Boolean} */ onlyFromAutocomplete: boolean; /** * @name errorMessages * @type {Map} */ errorMessages: { [key: string]: string; }; /** * @name theme * @type {string} */ theme: string; /** * @name onTextChangeDebounce * @type {number} */ onTextChangeDebounce: number; /** * - custom id assigned to the input * @name id */ inputId: string; /** * - custom class assigned to the input */ inputClass: string; /** * - option to clear text input when the form is blurred * @name clearOnBlur */ clearOnBlur: boolean; /** * - hideForm * @name clearOnBlur */ hideForm: boolean; /** * @name addOnBlur */ addOnBlur: boolean; /** * @name addOnPaste */ addOnPaste: boolean; /** * - pattern used with the native method split() to separate patterns in the string pasted * @name pasteSplitPattern */ pasteSplitPattern: string; /** * @name blinkIfDupe * @type {boolean} */ blinkIfDupe: boolean; /** * @name removable * @type {boolean} */ removable: boolean; /** * @name editable * @type {boolean} */ editable: boolean; /** * @name allowDupes * @type {boolean} */ allowDupes: boolean; /** * @description if set to true, the newly added tags will be added as strings, and not objects * @name modelAsStrings * @type {boolean} */ modelAsStrings: boolean; /** * @name trimTags * @type {boolean} */ trimTags: boolean; /** * @name inputText */ /** * @name inputText * @param text */ inputText: string; /** * @name ripple * @type {boolean} */ ripple: boolean; /** * @name tabindex * @desc pass through the specified tabindex to the input * @type {string} */ tabindex: string; /** * @name disable * @type {boolean} */ disable: boolean; /** * @name dragZone * @type {string} */ dragZone: string; /** * @name onRemoving * @type {() => Observable} */ onRemoving: (tag: TagModel) => Observable; /** * @name onAdding * @type {() => Observable} */ onAdding: (tag: TagModel) => Observable; /** * @name animationDuration */ animationDuration: { enter: string; leave: string; }; /** * @name onAdd * @desc event emitted when adding a new item * @type {EventEmitter} */ onAdd: EventEmitter; /** * @name onRemove * @desc event emitted when removing an existing item * @type {EventEmitter} */ onRemove: EventEmitter; /** * @name onSelect * @desc event emitted when selecting an item * @type {EventEmitter} */ onSelect: EventEmitter; /** * @name onFocus * @desc event emitted when the input is focused * @type {EventEmitter} */ onFocus: EventEmitter; /** * @name onFocus * @desc event emitted when the input is blurred * @type {EventEmitter} */ onBlur: EventEmitter; /** * @name onTextChange * @desc event emitted when the input value changes * @type {EventEmitter} */ onTextChange: EventEmitter; /** * - output triggered when text is pasted in the form * @name onPaste * @type {EventEmitter} */ onPaste: EventEmitter; /** * - output triggered when tag entered is not valid * @name onValidationError * @type {EventEmitter} */ onValidationError: EventEmitter; /** * - output triggered when tag is edited * @name onTagEdited * @type {EventEmitter} */ onTagEdited: EventEmitter; /** * @name dropdown */ dropdown: TagInputDropdown; /** * @name template * @desc reference to the template if provided by the user * @type {TemplateRef} */ templates: QueryList>; /** * @name inputForm * @type {TagInputForm} */ inputForm: TagInputForm; /** * @name selectedTag * @desc reference to the current selected tag * @type {String} */ selectedTag: TagModel | undefined; /** * @name isLoading * @type {boolean} */ isLoading: boolean; /** * @name tags * @desc list of Element items */ tags: QueryList; /** * @name listeners * @desc array of events that get fired using @fireEvents * @type [] */ private listeners; /** * @description emitter for the 2-way data binding inputText value * @name inputTextChange * @type {EventEmitter} */ inputTextChange: EventEmitter; /** * @description private variable to bind get/set * @name inputTextValue * @type {string} */ inputTextValue: string; /** * @desc removes the tab index if it is set - it will be passed through to the input * @name tabindexAttr * @type {string} */ readonly tabindexAttr: string; /** * @name animationMetadata */ animationMetadata: { value: string; params: object; }; constructor(renderer: Renderer2, dragProvider: DragProvider); /** * @name ngAfterViewInit */ ngAfterViewInit(): void; /** * @name ngOnInit */ ngOnInit(): void; /** * @name onRemoveRequested * @param tag * @param index */ onRemoveRequested(tag: TagModel, index: number): void; /** * @name onAddingRequested * @param fromAutocomplete {boolean} * @param tag {TagModel} */ onAddingRequested(fromAutocomplete: boolean, tag: TagModel, index?: number): void; /** * @name appendTag * @param tag {TagModel} */ appendTag: (tag: TagModel, index?: number) => void; /** * @name createTag * @param model * @returns {{}} */ createTag: (model: TagModel) => TagModel; /** * @name selectItem * @desc selects item passed as parameter as the selected tag * @param item * @param emit */ selectItem(item: TagModel | undefined, emit?: boolean): void; /** * @name fireEvents * @desc goes through the list of the events for a given eventName, and fires each of them * @param eventName * @param $event */ fireEvents(eventName: string, $event?: any): void; /** * @name handleKeydown * @desc handles action when the user hits a keyboard key * @param data */ handleKeydown(data: any): void; /** * @name setInputValue * @param value * @returns {string} */ setInputValue(value: string): void; /** * @name getControl * @returns {FormControl} */ private getControl(); /** * @name focus * @param applyFocus * @param displayAutocomplete */ focus(applyFocus?: boolean, displayAutocomplete?: boolean): void; /** * @name blur */ blur(): void; /** * @name hasErrors * @returns {boolean} */ hasErrors(): boolean; /** * @name isInputFocused * @returns {boolean} */ isInputFocused(): boolean; /** * - this is the one way I found to tell if the template has been passed and it is not * the template for the menu item * @name hasCustomTemplate */ hasCustomTemplate(): boolean; /** * @name maxItemsReached * @returns {boolean} */ readonly maxItemsReached: boolean; /** * @name formValue * @return {any} */ readonly formValue: string; /**3 * @name onDragStarted * @param event * @param index */ onDragStarted(event: DragEvent, tag: TagModel, index: number): void; /** * @name onDragOver * @param event */ onDragOver(event: DragEvent, index?: number): void; /** * @name onTagDropped * @param event * @param index */ onTagDropped(event: DragEvent, index: number): void; /** * @name isDropping */ isDropping(): boolean; /** * @name onTagBlurred * @param changedElement {TagModel} * @param index {number} */ onTagBlurred(changedElement: TagModel, index: number): void; /** * @name trackBy * @param item * @returns {string} */ trackBy(item: TagModel): string; /** * * @param tag * @param isFromAutocomplete */ private isTagValid(tag, fromAutocomplete?); /** * @name moveToTag * @param item * @param direction */ private moveToTag(item, direction); /** * @name getTagIndex * @param item */ private getTagIndex(item); /** * @name getTagAtIndex * @param index */ private getTagAtIndex(index); /** * @name removeItem * @desc removes an item from the array of the model * @param tag {TagModel} * @param index {number} */ private removeItem(tag, index); /** * @name addItem * @desc adds the current text model to the items array * @param fromAutocomplete * @param item */ private addItem(fromAutocomplete, item, index?); /** * @name setupSeparatorKeysListener */ private setupSeparatorKeysListener(); /** * @name setUpKeypressListeners */ private setUpKeypressListeners(); /** * @name setUpKeydownListeners */ private setUpInputKeydownListeners(); /** * @name setUpOnPasteListener */ private setUpOnPasteListener(); /** * @name setUpTextChangeSubscriber */ private setUpTextChangeSubscriber(); /** * @name setUpOnBlurSubscriber */ private setUpOnBlurSubscriber(); /** * @name findDupe * @param tag * @param isFromAutocomplete * @return {undefined|TagModel} */ private findDupe(tag, isFromAutocomplete); /** * @name onPasteCallback * @param data */ private onPasteCallback; /** * @name setAnimationMetadata */ private setAnimationMetadata(); }