source: trip-planner-front/node_modules/@angular/material/bundles/material-input.umd.js@ 188ee53

Last change on this file since 188ee53 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 41.4 KB
Line 
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/cdk/text-field'), require('@angular/core'), require('@angular/cdk/coercion'), require('@angular/cdk/platform'), require('@angular/forms'), require('@angular/material/core'), require('@angular/material/form-field'), require('rxjs')) :
3 typeof define === 'function' && define.amd ? define('@angular/material/input', ['exports', '@angular/cdk/text-field', '@angular/core', '@angular/cdk/coercion', '@angular/cdk/platform', '@angular/forms', '@angular/material/core', '@angular/material/form-field', 'rxjs'], factory) :
4 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.ng = global.ng || {}, global.ng.material = global.ng.material || {}, global.ng.material.input = {}), global.ng.cdk.textField, global.ng.core, global.ng.cdk.coercion, global.ng.cdk.platform, global.ng.forms, global.ng.material.core, global.ng.material.formField, global.rxjs));
5}(this, (function (exports, textField, core, coercion, platform, forms, core$1, formField, rxjs) { 'use strict';
6
7 /*! *****************************************************************************
8 Copyright (c) Microsoft Corporation.
9
10 Permission to use, copy, modify, and/or distribute this software for any
11 purpose with or without fee is hereby granted.
12
13 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
14 REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
15 AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
16 INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
17 LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
18 OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 PERFORMANCE OF THIS SOFTWARE.
20 ***************************************************************************** */
21 /* global Reflect, Promise */
22 var extendStatics = function (d, b) {
23 extendStatics = Object.setPrototypeOf ||
24 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
25 function (d, b) { for (var p in b)
26 if (Object.prototype.hasOwnProperty.call(b, p))
27 d[p] = b[p]; };
28 return extendStatics(d, b);
29 };
30 function __extends(d, b) {
31 if (typeof b !== "function" && b !== null)
32 throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
33 extendStatics(d, b);
34 function __() { this.constructor = d; }
35 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
36 }
37 var __assign = function () {
38 __assign = Object.assign || function __assign(t) {
39 for (var s, i = 1, n = arguments.length; i < n; i++) {
40 s = arguments[i];
41 for (var p in s)
42 if (Object.prototype.hasOwnProperty.call(s, p))
43 t[p] = s[p];
44 }
45 return t;
46 };
47 return __assign.apply(this, arguments);
48 };
49 function __rest(s, e) {
50 var t = {};
51 for (var p in s)
52 if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
53 t[p] = s[p];
54 if (s != null && typeof Object.getOwnPropertySymbols === "function")
55 for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
56 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
57 t[p[i]] = s[p[i]];
58 }
59 return t;
60 }
61 function __decorate(decorators, target, key, desc) {
62 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
63 if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
64 r = Reflect.decorate(decorators, target, key, desc);
65 else
66 for (var i = decorators.length - 1; i >= 0; i--)
67 if (d = decorators[i])
68 r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
69 return c > 3 && r && Object.defineProperty(target, key, r), r;
70 }
71 function __param(paramIndex, decorator) {
72 return function (target, key) { decorator(target, key, paramIndex); };
73 }
74 function __metadata(metadataKey, metadataValue) {
75 if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
76 return Reflect.metadata(metadataKey, metadataValue);
77 }
78 function __awaiter(thisArg, _arguments, P, generator) {
79 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
80 return new (P || (P = Promise))(function (resolve, reject) {
81 function fulfilled(value) { try {
82 step(generator.next(value));
83 }
84 catch (e) {
85 reject(e);
86 } }
87 function rejected(value) { try {
88 step(generator["throw"](value));
89 }
90 catch (e) {
91 reject(e);
92 } }
93 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
94 step((generator = generator.apply(thisArg, _arguments || [])).next());
95 });
96 }
97 function __generator(thisArg, body) {
98 var _ = { label: 0, sent: function () { if (t[0] & 1)
99 throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
100 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
101 function verb(n) { return function (v) { return step([n, v]); }; }
102 function step(op) {
103 if (f)
104 throw new TypeError("Generator is already executing.");
105 while (_)
106 try {
107 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
108 return t;
109 if (y = 0, t)
110 op = [op[0] & 2, t.value];
111 switch (op[0]) {
112 case 0:
113 case 1:
114 t = op;
115 break;
116 case 4:
117 _.label++;
118 return { value: op[1], done: false };
119 case 5:
120 _.label++;
121 y = op[1];
122 op = [0];
123 continue;
124 case 7:
125 op = _.ops.pop();
126 _.trys.pop();
127 continue;
128 default:
129 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
130 _ = 0;
131 continue;
132 }
133 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
134 _.label = op[1];
135 break;
136 }
137 if (op[0] === 6 && _.label < t[1]) {
138 _.label = t[1];
139 t = op;
140 break;
141 }
142 if (t && _.label < t[2]) {
143 _.label = t[2];
144 _.ops.push(op);
145 break;
146 }
147 if (t[2])
148 _.ops.pop();
149 _.trys.pop();
150 continue;
151 }
152 op = body.call(thisArg, _);
153 }
154 catch (e) {
155 op = [6, e];
156 y = 0;
157 }
158 finally {
159 f = t = 0;
160 }
161 if (op[0] & 5)
162 throw op[1];
163 return { value: op[0] ? op[1] : void 0, done: true };
164 }
165 }
166 var __createBinding = Object.create ? (function (o, m, k, k2) {
167 if (k2 === undefined)
168 k2 = k;
169 Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
170 }) : (function (o, m, k, k2) {
171 if (k2 === undefined)
172 k2 = k;
173 o[k2] = m[k];
174 });
175 function __exportStar(m, o) {
176 for (var p in m)
177 if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
178 __createBinding(o, m, p);
179 }
180 function __values(o) {
181 var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
182 if (m)
183 return m.call(o);
184 if (o && typeof o.length === "number")
185 return {
186 next: function () {
187 if (o && i >= o.length)
188 o = void 0;
189 return { value: o && o[i++], done: !o };
190 }
191 };
192 throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
193 }
194 function __read(o, n) {
195 var m = typeof Symbol === "function" && o[Symbol.iterator];
196 if (!m)
197 return o;
198 var i = m.call(o), r, ar = [], e;
199 try {
200 while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
201 ar.push(r.value);
202 }
203 catch (error) {
204 e = { error: error };
205 }
206 finally {
207 try {
208 if (r && !r.done && (m = i["return"]))
209 m.call(i);
210 }
211 finally {
212 if (e)
213 throw e.error;
214 }
215 }
216 return ar;
217 }
218 /** @deprecated */
219 function __spread() {
220 for (var ar = [], i = 0; i < arguments.length; i++)
221 ar = ar.concat(__read(arguments[i]));
222 return ar;
223 }
224 /** @deprecated */
225 function __spreadArrays() {
226 for (var s = 0, i = 0, il = arguments.length; i < il; i++)
227 s += arguments[i].length;
228 for (var r = Array(s), k = 0, i = 0; i < il; i++)
229 for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
230 r[k] = a[j];
231 return r;
232 }
233 function __spreadArray(to, from, pack) {
234 if (pack || arguments.length === 2)
235 for (var i = 0, l = from.length, ar; i < l; i++) {
236 if (ar || !(i in from)) {
237 if (!ar)
238 ar = Array.prototype.slice.call(from, 0, i);
239 ar[i] = from[i];
240 }
241 }
242 return to.concat(ar || from);
243 }
244 function __await(v) {
245 return this instanceof __await ? (this.v = v, this) : new __await(v);
246 }
247 function __asyncGenerator(thisArg, _arguments, generator) {
248 if (!Symbol.asyncIterator)
249 throw new TypeError("Symbol.asyncIterator is not defined.");
250 var g = generator.apply(thisArg, _arguments || []), i, q = [];
251 return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
252 function verb(n) { if (g[n])
253 i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
254 function resume(n, v) { try {
255 step(g[n](v));
256 }
257 catch (e) {
258 settle(q[0][3], e);
259 } }
260 function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
261 function fulfill(value) { resume("next", value); }
262 function reject(value) { resume("throw", value); }
263 function settle(f, v) { if (f(v), q.shift(), q.length)
264 resume(q[0][0], q[0][1]); }
265 }
266 function __asyncDelegator(o) {
267 var i, p;
268 return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
269 function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
270 }
271 function __asyncValues(o) {
272 if (!Symbol.asyncIterator)
273 throw new TypeError("Symbol.asyncIterator is not defined.");
274 var m = o[Symbol.asyncIterator], i;
275 return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
276 function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
277 function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
278 }
279 function __makeTemplateObject(cooked, raw) {
280 if (Object.defineProperty) {
281 Object.defineProperty(cooked, "raw", { value: raw });
282 }
283 else {
284 cooked.raw = raw;
285 }
286 return cooked;
287 }
288 ;
289 var __setModuleDefault = Object.create ? (function (o, v) {
290 Object.defineProperty(o, "default", { enumerable: true, value: v });
291 }) : function (o, v) {
292 o["default"] = v;
293 };
294 function __importStar(mod) {
295 if (mod && mod.__esModule)
296 return mod;
297 var result = {};
298 if (mod != null)
299 for (var k in mod)
300 if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
301 __createBinding(result, mod, k);
302 __setModuleDefault(result, mod);
303 return result;
304 }
305 function __importDefault(mod) {
306 return (mod && mod.__esModule) ? mod : { default: mod };
307 }
308 function __classPrivateFieldGet(receiver, state, kind, f) {
309 if (kind === "a" && !f)
310 throw new TypeError("Private accessor was defined without a getter");
311 if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
312 throw new TypeError("Cannot read private member from an object whose class did not declare it");
313 return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
314 }
315 function __classPrivateFieldSet(receiver, state, value, kind, f) {
316 if (kind === "m")
317 throw new TypeError("Private method is not writable");
318 if (kind === "a" && !f)
319 throw new TypeError("Private accessor was defined without a setter");
320 if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
321 throw new TypeError("Cannot write private member to an object whose class did not declare it");
322 return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
323 }
324
325 /**
326 * Directive to automatically resize a textarea to fit its content.
327 * @deprecated Use `cdkTextareaAutosize` from `@angular/cdk/text-field` instead.
328 * @breaking-change 8.0.0
329 */
330 var MatTextareaAutosize = /** @class */ (function (_super) {
331 __extends(MatTextareaAutosize, _super);
332 function MatTextareaAutosize() {
333 return _super !== null && _super.apply(this, arguments) || this;
334 }
335 Object.defineProperty(MatTextareaAutosize.prototype, "matAutosizeMinRows", {
336 get: function () { return this.minRows; },
337 set: function (value) { this.minRows = value; },
338 enumerable: false,
339 configurable: true
340 });
341 Object.defineProperty(MatTextareaAutosize.prototype, "matAutosizeMaxRows", {
342 get: function () { return this.maxRows; },
343 set: function (value) { this.maxRows = value; },
344 enumerable: false,
345 configurable: true
346 });
347 Object.defineProperty(MatTextareaAutosize.prototype, "matAutosize", {
348 get: function () { return this.enabled; },
349 set: function (value) { this.enabled = value; },
350 enumerable: false,
351 configurable: true
352 });
353 Object.defineProperty(MatTextareaAutosize.prototype, "matTextareaAutosize", {
354 get: function () { return this.enabled; },
355 set: function (value) { this.enabled = value; },
356 enumerable: false,
357 configurable: true
358 });
359 return MatTextareaAutosize;
360 }(textField.CdkTextareaAutosize));
361 MatTextareaAutosize.decorators = [
362 { type: core.Directive, args: [{
363 selector: 'textarea[mat-autosize], textarea[matTextareaAutosize]',
364 exportAs: 'matTextareaAutosize',
365 inputs: ['cdkAutosizeMinRows', 'cdkAutosizeMaxRows'],
366 host: {
367 'class': 'cdk-textarea-autosize mat-autosize',
368 // Textarea elements that have the directive applied should have a single row by default.
369 // Browsers normally show two rows by default and therefore this limits the minRows binding.
370 'rows': '1',
371 },
372 },] }
373 ];
374 MatTextareaAutosize.propDecorators = {
375 matAutosizeMinRows: [{ type: core.Input }],
376 matAutosizeMaxRows: [{ type: core.Input }],
377 matAutosize: [{ type: core.Input, args: ['mat-autosize',] }],
378 matTextareaAutosize: [{ type: core.Input }]
379 };
380
381 /**
382 * @license
383 * Copyright Google LLC All Rights Reserved.
384 *
385 * Use of this source code is governed by an MIT-style license that can be
386 * found in the LICENSE file at https://angular.io/license
387 */
388 /** @docs-private */
389 function getMatInputUnsupportedTypeError(type) {
390 return Error("Input type \"" + type + "\" isn't supported by matInput.");
391 }
392
393 /**
394 * @license
395 * Copyright Google LLC All Rights Reserved.
396 *
397 * Use of this source code is governed by an MIT-style license that can be
398 * found in the LICENSE file at https://angular.io/license
399 */
400 /**
401 * This token is used to inject the object whose value should be set into `MatInput`. If none is
402 * provided, the native `HTMLInputElement` is used. Directives like `MatDatepickerInput` can provide
403 * themselves for this token, in order to make `MatInput` delegate the getting and setting of the
404 * value to them.
405 */
406 var MAT_INPUT_VALUE_ACCESSOR = new core.InjectionToken('MAT_INPUT_VALUE_ACCESSOR');
407
408 // Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.
409 var MAT_INPUT_INVALID_TYPES = [
410 'button',
411 'checkbox',
412 'file',
413 'hidden',
414 'image',
415 'radio',
416 'range',
417 'reset',
418 'submit'
419 ];
420 var nextUniqueId = 0;
421 // Boilerplate for applying mixins to MatInput.
422 /** @docs-private */
423 var _MatInputBase = core$1.mixinErrorState(/** @class */ (function () {
424 function class_1(_defaultErrorStateMatcher, _parentForm, _parentFormGroup,
425 /** @docs-private */
426 ngControl) {
427 this._defaultErrorStateMatcher = _defaultErrorStateMatcher;
428 this._parentForm = _parentForm;
429 this._parentFormGroup = _parentFormGroup;
430 this.ngControl = ngControl;
431 }
432 return class_1;
433 }()));
434 /** Directive that allows a native input to work inside a `MatFormField`. */
435 var MatInput = /** @class */ (function (_super) {
436 __extends(MatInput, _super);
437 function MatInput(_elementRef, _platform, ngControl, _parentForm, _parentFormGroup, _defaultErrorStateMatcher, inputValueAccessor, _autofillMonitor, ngZone,
438 // TODO: Remove this once the legacy appearance has been removed. We only need
439 // to inject the form-field for determining whether the placeholder has been promoted.
440 _formField) {
441 var _this = _super.call(this, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl) || this;
442 _this._elementRef = _elementRef;
443 _this._platform = _platform;
444 _this._autofillMonitor = _autofillMonitor;
445 _this._formField = _formField;
446 _this._uid = "mat-input-" + nextUniqueId++;
447 /**
448 * Implemented as part of MatFormFieldControl.
449 * @docs-private
450 */
451 _this.focused = false;
452 /**
453 * Implemented as part of MatFormFieldControl.
454 * @docs-private
455 */
456 _this.stateChanges = new rxjs.Subject();
457 /**
458 * Implemented as part of MatFormFieldControl.
459 * @docs-private
460 */
461 _this.controlType = 'mat-input';
462 /**
463 * Implemented as part of MatFormFieldControl.
464 * @docs-private
465 */
466 _this.autofilled = false;
467 _this._disabled = false;
468 _this._required = false;
469 _this._type = 'text';
470 _this._readonly = false;
471 _this._neverEmptyInputTypes = [
472 'date',
473 'datetime',
474 'datetime-local',
475 'month',
476 'time',
477 'week'
478 ].filter(function (t) { return platform.getSupportedInputTypes().has(t); });
479 var element = _this._elementRef.nativeElement;
480 var nodeName = element.nodeName.toLowerCase();
481 // If no input value accessor was explicitly specified, use the element as the input value
482 // accessor.
483 _this._inputValueAccessor = inputValueAccessor || element;
484 _this._previousNativeValue = _this.value;
485 // Force setter to be called in case id was not specified.
486 _this.id = _this.id;
487 // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete
488 // key. In order to get around this we need to "jiggle" the caret loose. Since this bug only
489 // exists on iOS, we only bother to install the listener on iOS.
490 if (_platform.IOS) {
491 ngZone.runOutsideAngular(function () {
492 _elementRef.nativeElement.addEventListener('keyup', function (event) {
493 var el = event.target;
494 // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two
495 // indicate different things. If the value is 0, it means that the caret is at the start
496 // of the input, whereas a value of `null` means that the input doesn't support
497 // manipulating the selection range. Inputs that don't support setting the selection range
498 // will throw an error so we want to avoid calling `setSelectionRange` on them. See:
499 // https://html.spec.whatwg.org/multipage/input.html#do-not-apply
500 if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {
501 // Note: Just setting `0, 0` doesn't fix the issue. Setting
502 // `1, 1` fixes it for the first time that you type text and
503 // then hold delete. Toggling to `1, 1` and then back to
504 // `0, 0` seems to completely fix it.
505 el.setSelectionRange(1, 1);
506 el.setSelectionRange(0, 0);
507 }
508 });
509 });
510 }
511 _this._isServer = !_this._platform.isBrowser;
512 _this._isNativeSelect = nodeName === 'select';
513 _this._isTextarea = nodeName === 'textarea';
514 _this._isInFormField = !!_formField;
515 if (_this._isNativeSelect) {
516 _this.controlType = element.multiple ? 'mat-native-select-multiple' :
517 'mat-native-select';
518 }
519 return _this;
520 }
521 Object.defineProperty(MatInput.prototype, "disabled", {
522 /**
523 * Implemented as part of MatFormFieldControl.
524 * @docs-private
525 */
526 get: function () {
527 if (this.ngControl && this.ngControl.disabled !== null) {
528 return this.ngControl.disabled;
529 }
530 return this._disabled;
531 },
532 set: function (value) {
533 this._disabled = coercion.coerceBooleanProperty(value);
534 // Browsers may not fire the blur event if the input is disabled too quickly.
535 // Reset from here to ensure that the element doesn't become stuck.
536 if (this.focused) {
537 this.focused = false;
538 this.stateChanges.next();
539 }
540 },
541 enumerable: false,
542 configurable: true
543 });
544 Object.defineProperty(MatInput.prototype, "id", {
545 /**
546 * Implemented as part of MatFormFieldControl.
547 * @docs-private
548 */
549 get: function () { return this._id; },
550 set: function (value) { this._id = value || this._uid; },
551 enumerable: false,
552 configurable: true
553 });
554 Object.defineProperty(MatInput.prototype, "required", {
555 /**
556 * Implemented as part of MatFormFieldControl.
557 * @docs-private
558 */
559 get: function () { return this._required; },
560 set: function (value) { this._required = coercion.coerceBooleanProperty(value); },
561 enumerable: false,
562 configurable: true
563 });
564 Object.defineProperty(MatInput.prototype, "type", {
565 /** Input type of the element. */
566 get: function () { return this._type; },
567 set: function (value) {
568 this._type = value || 'text';
569 this._validateType();
570 // When using Angular inputs, developers are no longer able to set the properties on the native
571 // input element. To ensure that bindings for `type` work, we need to sync the setter
572 // with the native property. Textarea elements don't support the type property or attribute.
573 if (!this._isTextarea && platform.getSupportedInputTypes().has(this._type)) {
574 this._elementRef.nativeElement.type = this._type;
575 }
576 },
577 enumerable: false,
578 configurable: true
579 });
580 Object.defineProperty(MatInput.prototype, "value", {
581 /**
582 * Implemented as part of MatFormFieldControl.
583 * @docs-private
584 */
585 get: function () { return this._inputValueAccessor.value; },
586 set: function (value) {
587 if (value !== this.value) {
588 this._inputValueAccessor.value = value;
589 this.stateChanges.next();
590 }
591 },
592 enumerable: false,
593 configurable: true
594 });
595 Object.defineProperty(MatInput.prototype, "readonly", {
596 /** Whether the element is readonly. */
597 get: function () { return this._readonly; },
598 set: function (value) { this._readonly = coercion.coerceBooleanProperty(value); },
599 enumerable: false,
600 configurable: true
601 });
602 MatInput.prototype.ngAfterViewInit = function () {
603 var _this = this;
604 if (this._platform.isBrowser) {
605 this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(function (event) {
606 _this.autofilled = event.isAutofilled;
607 _this.stateChanges.next();
608 });
609 }
610 };
611 MatInput.prototype.ngOnChanges = function () {
612 this.stateChanges.next();
613 };
614 MatInput.prototype.ngOnDestroy = function () {
615 this.stateChanges.complete();
616 if (this._platform.isBrowser) {
617 this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);
618 }
619 };
620 MatInput.prototype.ngDoCheck = function () {
621 if (this.ngControl) {
622 // We need to re-evaluate this on every change detection cycle, because there are some
623 // error triggers that we can't subscribe to (e.g. parent form submissions). This means
624 // that whatever logic is in here has to be super lean or we risk destroying the performance.
625 this.updateErrorState();
626 }
627 // We need to dirty-check the native element's value, because there are some cases where
628 // we won't be notified when it changes (e.g. the consumer isn't using forms or they're
629 // updating the value using `emitEvent: false`).
630 this._dirtyCheckNativeValue();
631 // We need to dirty-check and set the placeholder attribute ourselves, because whether it's
632 // present or not depends on a query which is prone to "changed after checked" errors.
633 this._dirtyCheckPlaceholder();
634 };
635 /** Focuses the input. */
636 MatInput.prototype.focus = function (options) {
637 this._elementRef.nativeElement.focus(options);
638 };
639 // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.
640 // In Ivy the `host` bindings will be merged when this class is extended, whereas in
641 // ViewEngine they're overwritten.
642 // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.
643 /** Callback for the cases where the focused state of the input changes. */
644 // tslint:disable:no-host-decorator-in-concrete
645 // tslint:enable:no-host-decorator-in-concrete
646 MatInput.prototype._focusChanged = function (isFocused) {
647 if (isFocused !== this.focused) {
648 this.focused = isFocused;
649 this.stateChanges.next();
650 }
651 };
652 // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.
653 // In Ivy the `host` bindings will be merged when this class is extended, whereas in
654 // ViewEngine they're overwritten.
655 // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.
656 // tslint:disable-next-line:no-host-decorator-in-concrete
657 MatInput.prototype._onInput = function () {
658 // This is a noop function and is used to let Angular know whenever the value changes.
659 // Angular will run a new change detection each time the `input` event has been dispatched.
660 // It's necessary that Angular recognizes the value change, because when floatingLabel
661 // is set to false and Angular forms aren't used, the placeholder won't recognize the
662 // value changes and will not disappear.
663 // Listening to the input event wouldn't be necessary when the input is using the
664 // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.
665 };
666 /** Does some manual dirty checking on the native input `placeholder` attribute. */
667 MatInput.prototype._dirtyCheckPlaceholder = function () {
668 var _a, _b;
669 // If we're hiding the native placeholder, it should also be cleared from the DOM, otherwise
670 // screen readers will read it out twice: once from the label and once from the attribute.
671 // TODO: can be removed once we get rid of the `legacy` style for the form field, because it's
672 // the only one that supports promoting the placeholder to a label.
673 var placeholder = ((_b = (_a = this._formField) === null || _a === void 0 ? void 0 : _a._hideControlPlaceholder) === null || _b === void 0 ? void 0 : _b.call(_a)) ? null : this.placeholder;
674 if (placeholder !== this._previousPlaceholder) {
675 var element = this._elementRef.nativeElement;
676 this._previousPlaceholder = placeholder;
677 placeholder ?
678 element.setAttribute('placeholder', placeholder) : element.removeAttribute('placeholder');
679 }
680 };
681 /** Does some manual dirty checking on the native input `value` property. */
682 MatInput.prototype._dirtyCheckNativeValue = function () {
683 var newValue = this._elementRef.nativeElement.value;
684 if (this._previousNativeValue !== newValue) {
685 this._previousNativeValue = newValue;
686 this.stateChanges.next();
687 }
688 };
689 /** Make sure the input is a supported type. */
690 MatInput.prototype._validateType = function () {
691 if (MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1 &&
692 (typeof ngDevMode === 'undefined' || ngDevMode)) {
693 throw getMatInputUnsupportedTypeError(this._type);
694 }
695 };
696 /** Checks whether the input type is one of the types that are never empty. */
697 MatInput.prototype._isNeverEmpty = function () {
698 return this._neverEmptyInputTypes.indexOf(this._type) > -1;
699 };
700 /** Checks whether the input is invalid based on the native validation. */
701 MatInput.prototype._isBadInput = function () {
702 // The `validity` property won't be present on platform-server.
703 var validity = this._elementRef.nativeElement.validity;
704 return validity && validity.badInput;
705 };
706 Object.defineProperty(MatInput.prototype, "empty", {
707 /**
708 * Implemented as part of MatFormFieldControl.
709 * @docs-private
710 */
711 get: function () {
712 return !this._isNeverEmpty() && !this._elementRef.nativeElement.value && !this._isBadInput() &&
713 !this.autofilled;
714 },
715 enumerable: false,
716 configurable: true
717 });
718 Object.defineProperty(MatInput.prototype, "shouldLabelFloat", {
719 /**
720 * Implemented as part of MatFormFieldControl.
721 * @docs-private
722 */
723 get: function () {
724 if (this._isNativeSelect) {
725 // For a single-selection `<select>`, the label should float when the selected option has
726 // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid
727 // overlapping the label with the options.
728 var selectElement = this._elementRef.nativeElement;
729 var firstOption = selectElement.options[0];
730 // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be
731 // -1 if the `value` is set to something, that isn't in the list of options, at a later point.
732 return this.focused || selectElement.multiple || !this.empty ||
733 !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label);
734 }
735 else {
736 return this.focused || !this.empty;
737 }
738 },
739 enumerable: false,
740 configurable: true
741 });
742 /**
743 * Implemented as part of MatFormFieldControl.
744 * @docs-private
745 */
746 MatInput.prototype.setDescribedByIds = function (ids) {
747 if (ids.length) {
748 this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));
749 }
750 else {
751 this._elementRef.nativeElement.removeAttribute('aria-describedby');
752 }
753 };
754 /**
755 * Implemented as part of MatFormFieldControl.
756 * @docs-private
757 */
758 MatInput.prototype.onContainerClick = function () {
759 // Do not re-focus the input element if the element is already focused. Otherwise it can happen
760 // that someone clicks on a time input and the cursor resets to the "hours" field while the
761 // "minutes" field was actually clicked. See: https://github.com/angular/components/issues/12849
762 if (!this.focused) {
763 this.focus();
764 }
765 };
766 return MatInput;
767 }(_MatInputBase));
768 MatInput.decorators = [
769 { type: core.Directive, args: [{
770 selector: "input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]",
771 exportAs: 'matInput',
772 host: {
773 /**
774 * @breaking-change 8.0.0 remove .mat-form-field-autofill-control in favor of AutofillMonitor.
775 */
776 'class': 'mat-input-element mat-form-field-autofill-control',
777 '[class.mat-input-server]': '_isServer',
778 // Native input properties that are overwritten by Angular inputs need to be synced with
779 // the native input element. Otherwise property bindings for those don't work.
780 '[attr.id]': 'id',
781 // At the time of writing, we have a lot of customer tests that look up the input based on its
782 // placeholder. Since we sometimes omit the placeholder attribute from the DOM to prevent screen
783 // readers from reading it twice, we have to keep it somewhere in the DOM for the lookup.
784 '[attr.data-placeholder]': 'placeholder',
785 '[disabled]': 'disabled',
786 '[required]': 'required',
787 '[attr.readonly]': 'readonly && !_isNativeSelect || null',
788 // Only mark the input as invalid for assistive technology if it has a value since the
789 // state usually overlaps with `aria-required` when the input is empty and can be redundant.
790 '[attr.aria-invalid]': '(empty && required) ? null : errorState',
791 '[attr.aria-required]': 'required',
792 },
793 providers: [{ provide: formField.MatFormFieldControl, useExisting: MatInput }],
794 },] }
795 ];
796 MatInput.ctorParameters = function () { return [
797 { type: core.ElementRef },
798 { type: platform.Platform },
799 { type: forms.NgControl, decorators: [{ type: core.Optional }, { type: core.Self }] },
800 { type: forms.NgForm, decorators: [{ type: core.Optional }] },
801 { type: forms.FormGroupDirective, decorators: [{ type: core.Optional }] },
802 { type: core$1.ErrorStateMatcher },
803 { type: undefined, decorators: [{ type: core.Optional }, { type: core.Self }, { type: core.Inject, args: [MAT_INPUT_VALUE_ACCESSOR,] }] },
804 { type: textField.AutofillMonitor },
805 { type: core.NgZone },
806 { type: formField.MatFormField, decorators: [{ type: core.Optional }, { type: core.Inject, args: [formField.MAT_FORM_FIELD,] }] }
807 ]; };
808 MatInput.propDecorators = {
809 disabled: [{ type: core.Input }],
810 id: [{ type: core.Input }],
811 placeholder: [{ type: core.Input }],
812 required: [{ type: core.Input }],
813 type: [{ type: core.Input }],
814 errorStateMatcher: [{ type: core.Input }],
815 userAriaDescribedBy: [{ type: core.Input, args: ['aria-describedby',] }],
816 value: [{ type: core.Input }],
817 readonly: [{ type: core.Input }],
818 _focusChanged: [{ type: core.HostListener, args: ['focus', ['true'],] }, { type: core.HostListener, args: ['blur', ['false'],] }],
819 _onInput: [{ type: core.HostListener, args: ['input',] }]
820 };
821
822 /**
823 * @license
824 * Copyright Google LLC All Rights Reserved.
825 *
826 * Use of this source code is governed by an MIT-style license that can be
827 * found in the LICENSE file at https://angular.io/license
828 */
829 var MatInputModule = /** @class */ (function () {
830 function MatInputModule() {
831 }
832 return MatInputModule;
833 }());
834 MatInputModule.decorators = [
835 { type: core.NgModule, args: [{
836 declarations: [MatInput, MatTextareaAutosize],
837 imports: [
838 textField.TextFieldModule,
839 formField.MatFormFieldModule,
840 core$1.MatCommonModule,
841 ],
842 exports: [
843 textField.TextFieldModule,
844 // We re-export the `MatFormFieldModule` since `MatInput` will almost always
845 // be used together with `MatFormField`.
846 formField.MatFormFieldModule,
847 MatInput,
848 MatTextareaAutosize,
849 ],
850 providers: [core$1.ErrorStateMatcher],
851 },] }
852 ];
853
854 /**
855 * @license
856 * Copyright Google LLC All Rights Reserved.
857 *
858 * Use of this source code is governed by an MIT-style license that can be
859 * found in the LICENSE file at https://angular.io/license
860 */
861
862 /**
863 * Generated bundle index. Do not edit.
864 */
865
866 exports.MAT_INPUT_VALUE_ACCESSOR = MAT_INPUT_VALUE_ACCESSOR;
867 exports.MatInput = MatInput;
868 exports.MatInputModule = MatInputModule;
869 exports.MatTextareaAutosize = MatTextareaAutosize;
870 exports.getMatInputUnsupportedTypeError = getMatInputUnsupportedTypeError;
871
872 Object.defineProperty(exports, '__esModule', { value: true });
873
874})));
875//# sourceMappingURL=material-input.umd.js.map
Note: See TracBrowser for help on using the repository browser.