blob: 682405b53707f44ce7f95548d3a992a1e369fb7f [file] [log] [blame]
{"version":3,"file":"input.es5.js","sources":["../../../src/material/input/input-module.ts","../../../src/material/input/input.ts","../../../src/material/input/input-value-accessor.ts","../../../src/material/input/input-errors.ts","../../../src/material/input/autosize.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {TextFieldModule} from '@angular/cdk/text-field';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {ErrorStateMatcher} from '@angular/material/core';\nimport {MatFormFieldModule} from '@angular/material/form-field';\nimport {MatTextareaAutosize} from './autosize';\nimport {MatInput} from './input';\n\n\n@NgModule({\n declarations: [MatInput, MatTextareaAutosize],\n imports: [\n CommonModule,\n TextFieldModule,\n MatFormFieldModule,\n ],\n exports: [\n TextFieldModule,\n // We re-export the `MatFormFieldModule` since `MatInput` will almost always\n // be used together with `MatFormField`.\n MatFormFieldModule,\n MatInput,\n MatTextareaAutosize,\n ],\n providers: [ErrorStateMatcher],\n})\nexport class MatInputModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {getSupportedInputTypes, Platform} from '@angular/cdk/platform';\nimport {AutofillMonitor} from '@angular/cdk/text-field';\nimport {\n Directive,\n DoCheck,\n ElementRef,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Self,\n} from '@angular/core';\nimport {FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {\n CanUpdateErrorState,\n CanUpdateErrorStateCtor,\n ErrorStateMatcher,\n mixinErrorState,\n} from '@angular/material/core';\nimport {MatFormFieldControl} from '@angular/material/form-field';\nimport {Subject} from 'rxjs';\nimport {getMatInputUnsupportedTypeError} from './input-errors';\nimport {MAT_INPUT_VALUE_ACCESSOR} from './input-value-accessor';\n\n\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nconst MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit'\n];\n\nlet nextUniqueId = 0;\n\n// Boilerplate for applying mixins to MatInput.\n/** @docs-private */\nclass MatInputBase {\n constructor(public _defaultErrorStateMatcher: ErrorStateMatcher,\n public _parentForm: NgForm,\n public _parentFormGroup: FormGroupDirective,\n /** @docs-private */\n public ngControl: NgControl) {}\n}\nconst _MatInputMixinBase: CanUpdateErrorStateCtor & typeof MatInputBase =\n mixinErrorState(MatInputBase);\n\n/** Directive that allows a native input to work inside a `MatFormField`. */\n@Directive({\n selector: `input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]`,\n exportAs: 'matInput',\n host: {\n /**\n * @breaking-change 8.0.0 remove .mat-form-field-autofill-control in favor of AutofillMonitor.\n */\n 'class': 'mat-input-element mat-form-field-autofill-control',\n '[class.mat-input-server]': '_isServer',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '[attr.placeholder]': 'placeholder',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[attr.readonly]': 'readonly && !_isNativeSelect || null',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-required]': 'required.toString()',\n '(blur)': '_focusChanged(false)',\n '(focus)': '_focusChanged(true)',\n '(input)': '_onInput()',\n },\n providers: [{provide: MatFormFieldControl, useExisting: MatInput}],\n})\nexport class MatInput extends _MatInputMixinBase implements MatFormFieldControl<any>, OnChanges,\n OnDestroy, OnInit, DoCheck, CanUpdateErrorState {\n protected _uid = `mat-input-${nextUniqueId++}`;\n protected _previousNativeValue: any;\n private _inputValueAccessor: {value: any};\n /** The aria-describedby attribute on the input for improved a11y. */\n _ariaDescribedby: string;\n\n /** Whether the component is being rendered on the server. */\n _isServer = false;\n\n /** Whether the component is a native html select. */\n _isNativeSelect = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n controlType: string = 'mat-input';\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n autofilled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n protected _disabled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get id(): string { return this._id; }\n set id(value: string) { this._id = value || this._uid; }\n protected _id: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input() placeholder: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean { return this._required; }\n set required(value: boolean) { this._required = coerceBooleanProperty(value); }\n protected _required = false;\n\n /** Input type of the element. */\n @Input()\n get type(): string { return this._type; }\n set type(value: string) {\n this._type = value || 'text';\n this._validateType();\n\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (!this._isTextarea() && getSupportedInputTypes().has(this._type)) {\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\n }\n }\n protected _type = 'text';\n\n /** An object used to control when error messages are shown. */\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): string { return this._inputValueAccessor.value; }\n set value(value: string) {\n if (value !== this.value) {\n this._inputValueAccessor.value = value;\n this.stateChanges.next();\n }\n }\n\n /** Whether the element is readonly. */\n @Input()\n get readonly(): boolean { return this._readonly; }\n set readonly(value: boolean) { this._readonly = coerceBooleanProperty(value); }\n private _readonly = false;\n\n protected _neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week'\n ].filter(t => getSupportedInputTypes().has(t));\n\n constructor(\n protected _elementRef: ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>,\n protected _platform: Platform,\n /** @docs-private */\n @Optional() @Self() public ngControl: NgControl,\n @Optional() _parentForm: NgForm,\n @Optional() _parentFormGroup: FormGroupDirective,\n _defaultErrorStateMatcher: ErrorStateMatcher,\n @Optional() @Self() @Inject(MAT_INPUT_VALUE_ACCESSOR) inputValueAccessor: any,\n private _autofillMonitor: AutofillMonitor,\n ngZone: NgZone) {\n\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n\n const element = this._elementRef.nativeElement;\n\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = inputValueAccessor || element;\n\n this._previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n\n // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n // exists on iOS, we only bother to install the listener on iOS.\n if (_platform.IOS) {\n ngZone.runOutsideAngular(() => {\n _elementRef.nativeElement.addEventListener('keyup', (event: Event) => {\n let el = event.target as HTMLInputElement;\n if (!el.value && !el.selectionStart && !el.selectionEnd) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n });\n });\n }\n\n this._isServer = !this._platform.isBrowser;\n this._isNativeSelect = element.nodeName.toLowerCase() === 'select';\n\n if (this._isNativeSelect) {\n this.controlType = (element as HTMLSelectElement).multiple ? 'mat-native-select-multiple' :\n 'mat-native-select';\n }\n }\n\n ngOnInit() {\n if (this._platform.isBrowser) {\n this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {\n this.autofilled = event.isAutofilled;\n this.stateChanges.next();\n });\n }\n }\n\n ngOnChanges() {\n this.stateChanges.next();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n\n if (this._platform.isBrowser) {\n this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this._dirtyCheckNativeValue();\n }\n\n /** Focuses the input. */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n _focusChanged(isFocused: boolean) {\n if (isFocused !== this.focused && (!this.readonly || !isFocused)) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n\n _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n protected _dirtyCheckNativeValue() {\n const newValue = this._elementRef.nativeElement.value;\n\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n\n /** Make sure the input is a supported type. */\n protected _validateType() {\n if (MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1) {\n throw getMatInputUnsupportedTypeError(this._type);\n }\n }\n\n /** Checks whether the input type is one of the types that are never empty. */\n protected _isNeverEmpty() {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected _isBadInput() {\n // The `validity` property won't be present on platform-server.\n let validity = (this._elementRef.nativeElement as HTMLInputElement).validity;\n return validity && validity.badInput;\n }\n\n /** Determines if the component host is a textarea. */\n protected _isTextarea() {\n return this._elementRef.nativeElement.nodeName.toLowerCase() === 'textarea';\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return !this._isNeverEmpty() && !this._elementRef.nativeElement.value && !this._isBadInput() &&\n !this.autofilled;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n if (this._isNativeSelect) {\n // For a single-selection `<select>`, the label should float when the selected option has\n // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid\n // overlapping the label with the options.\n const selectElement = this._elementRef.nativeElement as HTMLSelectElement;\n const firstOption: HTMLOptionElement | undefined = selectElement.options[0];\n\n // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n return this.focused || selectElement.multiple || !this.empty ||\n !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label);\n } else {\n return this.focused || !this.empty;\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\n if (!this.focused) {\n this.focus();\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {InjectionToken} from '@angular/core';\n\n\n/**\n * This token is used to inject the object whose value should be set into `MatInput`. If none is\n * provided, the native `HTMLInputElement` is used. Directives like `MatDatepickerInput` can provide\n * themselves for this token, in order to make `MatInput` delegate the getting and setting of the\n * value to them.\n */\nexport const MAT_INPUT_VALUE_ACCESSOR =\n new InjectionToken<{value: any}>('MAT_INPUT_VALUE_ACCESSOR');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** @docs-private */\nexport function getMatInputUnsupportedTypeError(type: string): Error {\n return Error(`Input type \"${type}\" isn't supported by matInput.`);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CdkTextareaAutosize} from '@angular/cdk/text-field';\nimport {Directive, Input} from '@angular/core';\n\n/**\n * Directive to automatically resize a textarea to fit its content.\n * @deprecated Use `cdkTextareaAutosize` from `@angular/cdk/text-field` instead.\n * @breaking-change 8.0.0\n */\n@Directive({\n selector: 'textarea[mat-autosize], textarea[matTextareaAutosize]',\n exportAs: 'matTextareaAutosize',\n inputs: ['cdkAutosizeMinRows', 'cdkAutosizeMaxRows'],\n host: {\n 'class': 'cdk-textarea-autosize mat-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n '(input)': '_noopInputHandler()',\n },\n})\nexport class MatTextareaAutosize extends CdkTextareaAutosize {\n @Input()\n get matAutosizeMinRows(): number { return this.minRows; }\n set matAutosizeMinRows(value: number) { this.minRows = value; }\n\n @Input()\n get matAutosizeMaxRows(): number { return this.maxRows; }\n set matAutosizeMaxRows(value: number) { this.maxRows = value; }\n\n @Input('mat-autosize')\n get matAutosize(): boolean { return this.enabled; }\n set matAutosize(value: boolean) { this.enabled = value; }\n\n @Input()\n get matTextareaAutosize(): boolean { return this.enabled; }\n set matTextareaAutosize(value: boolean) { this.enabled = value; }\n}\n"],"names":["tslib_1.__extends"],"mappings":"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"}