import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Optional, Output, Renderer, ViewChild, ViewEncapsulation } from '@angular/core'; import { NgControl } from '@angular/forms'; import { Subject } from 'rxjs/Subject'; import 'rxjs/add/operator/takeUntil'; import { App } from '../app/app'; import { Config } from '../../config/config'; import { Content } from '../content/content'; import { copyInputAttributes, hasPointerMoved, pointerCoord } from '../../util/dom'; import { DomController } from '../../platform/dom-controller'; import { Form } from '../../util/form'; import { BaseInput } from '../../util/base-input'; import { isTrueProperty } from '../../util/util'; import { Item } from '../item/item'; import { Platform } from '../../platform/platform'; /** * @name Input * @description * * `ion-input` is meant for text type inputs only, such as `text`, * `password`, `email`, `number`, `search`, `tel`, and `url`. Ionic * still uses an actual `` HTML element within the * component, however, with Ionic wrapping the native HTML input * element it's better able to handle the user experience and * interactivity. * * Similarly, `` should be used in place of `' + '' + '
', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['value'] },] }, ]; /** @nocollapse */ TextInput.ctorParameters = () => [ { type: Config, }, { type: Platform, }, { type: Form, }, { type: App, }, { type: ElementRef, }, { type: Renderer, }, { type: Content, decorators: [{ type: Optional },] }, { type: Item, decorators: [{ type: Optional },] }, { type: NgControl, decorators: [{ type: Optional },] }, { type: DomController, }, ]; TextInput.propDecorators = { 'clearInput': [{ type: Input },], 'type': [{ type: Input },], 'readonly': [{ type: Input },], 'clearOnEdit': [{ type: Input },], '_native': [{ type: ViewChild, args: ['textInput', { read: ElementRef },] },], 'autocomplete': [{ type: Input },], 'autocorrect': [{ type: Input },], 'placeholder': [{ type: Input },], 'min': [{ type: Input },], 'max': [{ type: Input },], 'step': [{ type: Input },], 'input': [{ type: Output },], 'blur': [{ type: Output },], 'focus': [{ type: Output },], }; /** * @name TextArea * @description * * `ion-textarea` is used for multi-line text inputs. Ionic still * uses an actual `