UNPKG

24.6 kBJavaScriptView Raw
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/forms'), require('@angular/common'), require('@angular2-material/core'), require('rxjs/Observable')) :
3 typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@angular/forms', '@angular/common', '@angular2-material/core', 'rxjs/Observable'], factory) :
4 (factory((global.md = global.md || {}, global.md.input = global.md.input || {}),global.ng.core,global.ng.forms,global.ng.common,global.md.core,global.Rx));
5}(this, (function (exports,_angular_core,_angular_forms,_angular_common,_angular2Material_core,rxjs_Observable) { 'use strict';
6
7var __extends = (window && window.__extends) || function (d, b) {
8 for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
9 function __() { this.constructor = d; }
10 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
11};
12var __decorate = (window && window.__decorate) || function (decorators, target, key, desc) {
13 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
16 return c > 3 && r && Object.defineProperty(target, key, r), r;
17};
18var __metadata = (window && window.__metadata) || function (k, v) {
19 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
20};
21var noop = function () { };
22var MD_INPUT_CONTROL_VALUE_ACCESSOR = {
23 provide: _angular_forms.NG_VALUE_ACCESSOR,
24 useExisting: _angular_core.forwardRef(function () { return MdInput; }),
25 multi: true
26};
27// Invalid input type. Using one of these will throw an MdInputUnsupportedTypeError.
28var MD_INPUT_INVALID_INPUT_TYPE = [
29 'file',
30 'radio',
31 'checkbox',
32];
33var nextUniqueId = 0;
34var MdInputPlaceholderConflictError = (function (_super) {
35 __extends(MdInputPlaceholderConflictError, _super);
36 function MdInputPlaceholderConflictError() {
37 _super.call(this, 'Placeholder attribute and child element were both specified.');
38 }
39 return MdInputPlaceholderConflictError;
40}(_angular2Material_core.MdError));
41var MdInputUnsupportedTypeError = (function (_super) {
42 __extends(MdInputUnsupportedTypeError, _super);
43 function MdInputUnsupportedTypeError(type) {
44 _super.call(this, "Input type \"" + type + "\" isn't supported by md-input.");
45 }
46 return MdInputUnsupportedTypeError;
47}(_angular2Material_core.MdError));
48var MdInputDuplicatedHintError = (function (_super) {
49 __extends(MdInputDuplicatedHintError, _super);
50 function MdInputDuplicatedHintError(align) {
51 _super.call(this, "A hint was already declared for 'align=\"" + align + "\"'.");
52 }
53 return MdInputDuplicatedHintError;
54}(_angular2Material_core.MdError));
55/**
56 * The placeholder directive. The content can declare this to implement more
57 * complex placeholders.
58 */
59var MdPlaceholder = (function () {
60 function MdPlaceholder() {
61 }
62 MdPlaceholder = __decorate([
63 _angular_core.Directive({
64 selector: 'md-placeholder'
65 }),
66 __metadata('design:paramtypes', [])
67 ], MdPlaceholder);
68 return MdPlaceholder;
69}());
70/** The hint directive, used to tag content as hint labels (going under the input). */
71var MdHint = (function () {
72 function MdHint() {
73 // Whether to align the hint label at the start or end of the line.
74 this.align = 'start';
75 }
76 __decorate([
77 _angular_core.Input(),
78 __metadata('design:type', Object)
79 ], MdHint.prototype, "align", void 0);
80 MdHint = __decorate([
81 _angular_core.Directive({
82 selector: 'md-hint',
83 host: {
84 '[class.md-right]': 'align == "end"',
85 '[class.md-hint]': 'true'
86 }
87 }),
88 __metadata('design:paramtypes', [])
89 ], MdHint);
90 return MdHint;
91}());
92/**
93 * Component that represents a text input. It encapsulates the <input> HTMLElement and
94 * improve on its behaviour, along with styling it according to the Material Design.
95 */
96var MdInput = (function () {
97 function MdInput() {
98 this._focused = false;
99 this._value = '';
100 /** Callback registered via registerOnTouched (ControlValueAccessor) */
101 this._onTouchedCallback = noop;
102 /** Callback registered via registerOnChange (ControlValueAccessor) */
103 this._onChangeCallback = noop;
104 /**
105 * Bindings.
106 */
107 this.align = 'start';
108 this.dividerColor = 'primary';
109 this.floatingPlaceholder = true;
110 this.hintLabel = '';
111 this.autofocus = false;
112 this.disabled = false;
113 this.id = "md-input-" + nextUniqueId++;
114 this.list = null;
115 this.max = null;
116 this.maxlength = null;
117 this.min = null;
118 this.minlength = null;
119 this.placeholder = null;
120 this.readonly = false;
121 this.required = false;
122 this.spellcheck = false;
123 this.step = null;
124 this.tabindex = null;
125 this.type = 'text';
126 this.name = null;
127 this._blurEmitter = new _angular_core.EventEmitter();
128 this._focusEmitter = new _angular_core.EventEmitter();
129 }
130 Object.defineProperty(MdInput.prototype, "focused", {
131 /** Readonly properties. */
132 get: function () { return this._focused; },
133 enumerable: true,
134 configurable: true
135 });
136 Object.defineProperty(MdInput.prototype, "empty", {
137 get: function () { return this._value == null || this._value === ''; },
138 enumerable: true,
139 configurable: true
140 });
141 Object.defineProperty(MdInput.prototype, "characterCount", {
142 get: function () {
143 return this.empty ? 0 : ('' + this._value).length;
144 },
145 enumerable: true,
146 configurable: true
147 });
148 Object.defineProperty(MdInput.prototype, "inputId", {
149 get: function () { return this.id + "-input"; },
150 enumerable: true,
151 configurable: true
152 });
153 Object.defineProperty(MdInput.prototype, "onBlur", {
154 get: function () {
155 return this._blurEmitter.asObservable();
156 },
157 enumerable: true,
158 configurable: true
159 });
160 Object.defineProperty(MdInput.prototype, "onFocus", {
161 get: function () {
162 return this._focusEmitter.asObservable();
163 },
164 enumerable: true,
165 configurable: true
166 });
167 Object.defineProperty(MdInput.prototype, "value", {
168 get: function () { return this._value; },
169 set: function (v) {
170 v = this._convertValueForInputType(v);
171 if (v !== this._value) {
172 this._value = v;
173 this._onChangeCallback(v);
174 }
175 },
176 enumerable: true,
177 configurable: true
178 });
179 ;
180 Object.defineProperty(MdInput.prototype, "_align", {
181 // This is to remove the `align` property of the `md-input` itself. Otherwise HTML5
182 // might place it as RTL when we don't want to. We still want to use `align` as an
183 // Input though, so we use HostBinding.
184 get: function () { return null; },
185 enumerable: true,
186 configurable: true
187 });
188 /** Set focus on input */
189 MdInput.prototype.focus = function () {
190 this._inputElement.nativeElement.focus();
191 };
192 MdInput.prototype._handleFocus = function (event) {
193 this._focused = true;
194 this._focusEmitter.emit(event);
195 };
196 MdInput.prototype._handleBlur = function (event) {
197 this._focused = false;
198 this._onTouchedCallback();
199 this._blurEmitter.emit(event);
200 };
201 MdInput.prototype._handleChange = function (event) {
202 this.value = event.target.value;
203 this._onTouchedCallback();
204 };
205 MdInput.prototype._hasPlaceholder = function () {
206 return !!this.placeholder || this._placeholderChild != null;
207 };
208 /**
209 * Implemented as part of ControlValueAccessor.
210 * TODO: internal
211 */
212 MdInput.prototype.writeValue = function (value) {
213 this._value = value;
214 };
215 /**
216 * Implemented as part of ControlValueAccessor.
217 * TODO: internal
218 */
219 MdInput.prototype.registerOnChange = function (fn) {
220 this._onChangeCallback = fn;
221 };
222 /**
223 * Implemented as part of ControlValueAccessor.
224 * TODO: internal
225 */
226 MdInput.prototype.registerOnTouched = function (fn) {
227 this._onTouchedCallback = fn;
228 };
229 /** TODO: internal */
230 MdInput.prototype.ngAfterContentInit = function () {
231 var _this = this;
232 this._validateConstraints();
233 // Trigger validation when the hint children change.
234 this._hintChildren.changes.subscribe(function () {
235 _this._validateConstraints();
236 });
237 };
238 /** TODO: internal */
239 MdInput.prototype.ngOnChanges = function (changes) {
240 this._validateConstraints();
241 };
242 /**
243 * Convert the value passed in to a value that is expected from the type of the md-input.
244 * This is normally performed by the *_VALUE_ACCESSOR in forms, but since the type is bound
245 * on our internal input it won't work locally.
246 * @private
247 */
248 MdInput.prototype._convertValueForInputType = function (v) {
249 switch (this.type) {
250 case 'number': return parseFloat(v);
251 default: return v;
252 }
253 };
254 /**
255 * Ensure that all constraints defined by the API are validated, or throw errors otherwise.
256 * Constraints for now:
257 * - placeholder attribute and <md-placeholder> are mutually exclusive.
258 * - type attribute is not one of the forbidden types (see constant at the top).
259 * - Maximum one of each `<md-hint>` alignment specified, with the attribute being
260 * considered as align="start".
261 * @private
262 */
263 MdInput.prototype._validateConstraints = function () {
264 var _this = this;
265 if (this.placeholder != '' && this.placeholder != null && this._placeholderChild != null) {
266 throw new MdInputPlaceholderConflictError();
267 }
268 if (MD_INPUT_INVALID_INPUT_TYPE.indexOf(this.type) != -1) {
269 throw new MdInputUnsupportedTypeError(this.type);
270 }
271 if (this._hintChildren) {
272 // Validate the hint labels.
273 var startHint_1 = null;
274 var endHint_1 = null;
275 this._hintChildren.forEach(function (hint) {
276 if (hint.align == 'start') {
277 if (startHint_1 || _this.hintLabel) {
278 throw new MdInputDuplicatedHintError('start');
279 }
280 startHint_1 = hint;
281 }
282 else if (hint.align == 'end') {
283 if (endHint_1) {
284 throw new MdInputDuplicatedHintError('end');
285 }
286 endHint_1 = hint;
287 }
288 });
289 }
290 };
291 __decorate([
292 _angular_core.Input('aria-label'),
293 __metadata('design:type', String)
294 ], MdInput.prototype, "ariaLabel", void 0);
295 __decorate([
296 _angular_core.Input('aria-labelledby'),
297 __metadata('design:type', String)
298 ], MdInput.prototype, "ariaLabelledBy", void 0);
299 __decorate([
300 _angular_core.Input('aria-disabled'),
301 _angular2Material_core.BooleanFieldValue(),
302 __metadata('design:type', Boolean)
303 ], MdInput.prototype, "ariaDisabled", void 0);
304 __decorate([
305 _angular_core.Input('aria-required'),
306 _angular2Material_core.BooleanFieldValue(),
307 __metadata('design:type', Boolean)
308 ], MdInput.prototype, "ariaRequired", void 0);
309 __decorate([
310 _angular_core.Input('aria-invalid'),
311 _angular2Material_core.BooleanFieldValue(),
312 __metadata('design:type', Boolean)
313 ], MdInput.prototype, "ariaInvalid", void 0);
314 __decorate([
315 _angular_core.ContentChild(MdPlaceholder),
316 __metadata('design:type', MdPlaceholder)
317 ], MdInput.prototype, "_placeholderChild", void 0);
318 __decorate([
319 _angular_core.ContentChildren(MdHint),
320 __metadata('design:type', _angular_core.QueryList)
321 ], MdInput.prototype, "_hintChildren", void 0);
322 __decorate([
323 _angular_core.Input(),
324 __metadata('design:type', Object)
325 ], MdInput.prototype, "align", void 0);
326 __decorate([
327 _angular_core.Input(),
328 __metadata('design:type', Object)
329 ], MdInput.prototype, "dividerColor", void 0);
330 __decorate([
331 _angular_core.Input(),
332 _angular2Material_core.BooleanFieldValue(),
333 __metadata('design:type', Boolean)
334 ], MdInput.prototype, "floatingPlaceholder", void 0);
335 __decorate([
336 _angular_core.Input(),
337 __metadata('design:type', String)
338 ], MdInput.prototype, "hintLabel", void 0);
339 __decorate([
340 _angular_core.Input(),
341 __metadata('design:type', String)
342 ], MdInput.prototype, "autocomplete", void 0);
343 __decorate([
344 _angular_core.Input(),
345 __metadata('design:type', String)
346 ], MdInput.prototype, "autocorrect", void 0);
347 __decorate([
348 _angular_core.Input(),
349 __metadata('design:type', String)
350 ], MdInput.prototype, "autocapitalize", void 0);
351 __decorate([
352 _angular_core.Input(),
353 _angular2Material_core.BooleanFieldValue(),
354 __metadata('design:type', Boolean)
355 ], MdInput.prototype, "autofocus", void 0);
356 __decorate([
357 _angular_core.Input(),
358 _angular2Material_core.BooleanFieldValue(),
359 __metadata('design:type', Boolean)
360 ], MdInput.prototype, "disabled", void 0);
361 __decorate([
362 _angular_core.Input(),
363 __metadata('design:type', String)
364 ], MdInput.prototype, "id", void 0);
365 __decorate([
366 _angular_core.Input(),
367 __metadata('design:type', String)
368 ], MdInput.prototype, "list", void 0);
369 __decorate([
370 _angular_core.Input(),
371 __metadata('design:type', Object)
372 ], MdInput.prototype, "max", void 0);
373 __decorate([
374 _angular_core.Input(),
375 __metadata('design:type', Number)
376 ], MdInput.prototype, "maxlength", void 0);
377 __decorate([
378 _angular_core.Input(),
379 __metadata('design:type', Object)
380 ], MdInput.prototype, "min", void 0);
381 __decorate([
382 _angular_core.Input(),
383 __metadata('design:type', Number)
384 ], MdInput.prototype, "minlength", void 0);
385 __decorate([
386 _angular_core.Input(),
387 __metadata('design:type', String)
388 ], MdInput.prototype, "placeholder", void 0);
389 __decorate([
390 _angular_core.Input(),
391 _angular2Material_core.BooleanFieldValue(),
392 __metadata('design:type', Boolean)
393 ], MdInput.prototype, "readonly", void 0);
394 __decorate([
395 _angular_core.Input(),
396 _angular2Material_core.BooleanFieldValue(),
397 __metadata('design:type', Boolean)
398 ], MdInput.prototype, "required", void 0);
399 __decorate([
400 _angular_core.Input(),
401 _angular2Material_core.BooleanFieldValue(),
402 __metadata('design:type', Boolean)
403 ], MdInput.prototype, "spellcheck", void 0);
404 __decorate([
405 _angular_core.Input(),
406 __metadata('design:type', Number)
407 ], MdInput.prototype, "step", void 0);
408 __decorate([
409 _angular_core.Input(),
410 __metadata('design:type', Number)
411 ], MdInput.prototype, "tabindex", void 0);
412 __decorate([
413 _angular_core.Input(),
414 __metadata('design:type', String)
415 ], MdInput.prototype, "type", void 0);
416 __decorate([
417 _angular_core.Input(),
418 __metadata('design:type', String)
419 ], MdInput.prototype, "name", void 0);
420 __decorate([
421 _angular_core.Output('blur'),
422 __metadata('design:type', rxjs_Observable.Observable)
423 ], MdInput.prototype, "onBlur", null);
424 __decorate([
425 _angular_core.Output('focus'),
426 __metadata('design:type', rxjs_Observable.Observable)
427 ], MdInput.prototype, "onFocus", null);
428 __decorate([
429 _angular_core.Input(),
430 __metadata('design:type', Object)
431 ], MdInput.prototype, "value", null);
432 __decorate([
433 _angular_core.HostBinding('attr.align'),
434 __metadata('design:type', Object)
435 ], MdInput.prototype, "_align", null);
436 __decorate([
437 _angular_core.ViewChild('input'),
438 __metadata('design:type', _angular_core.ElementRef)
439 ], MdInput.prototype, "_inputElement", void 0);
440 MdInput = __decorate([
441 _angular_core.Component({selector: 'md-input',
442 template: "<div class=\"md-input-wrapper\"> <div class=\"md-input-table\"> <div class=\"md-input-prefix\"><ng-content select=\"[md-prefix]\"></ng-content></div> <div class=\"md-input-infix\"> <input #input aria-target class=\"md-input-element\" [class.md-end]=\"align == 'end'\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledBy\" [attr.aria-disabled]=\"ariaDisabled\" [attr.aria-required]=\"ariaRequired\" [attr.aria-invalid]=\"ariaInvalid\" [attr.autocomplete]=\"autocomplete\" [attr.autocorrect]=\"autocorrect\" [attr.autocapitalize]=\"autocapitalize\" [autofocus]=\"autofocus\" [disabled]=\"disabled\" [id]=\"inputId\" [attr.list]=\"list\" [attr.max]=\"max\" [attr.maxlength]=\"maxlength\" [attr.min]=\"min\" [attr.minlength]=\"minlength\" [readonly]=\"readonly\" [required]=\"required\" [spellcheck]=\"spellcheck\" [attr.step]=\"step\" [attr.tabindex]=\"tabindex\" [type]=\"type\" [attr.name]=\"name\" (focus)=\"_handleFocus($event)\" (blur)=\"_handleBlur($event)\" [(ngModel)]=\"value\" (change)=\"_handleChange($event)\"> <label class=\"md-input-placeholder\" [attr.for]=\"inputId\" [class.md-empty]=\"empty\" [class.md-focused]=\"focused\" [class.md-float]=\"floatingPlaceholder\" [class.md-accent]=\"dividerColor == 'accent'\" [class.md-warn]=\"dividerColor == 'warn'\" *ngIf=\"_hasPlaceholder()\"> <ng-content select=\"md-placeholder\"></ng-content> {{placeholder}} <span class=\"md-placeholder-required\" *ngIf=\"required\">*</span> </label> </div> <div class=\"md-input-suffix\"><ng-content select=\"[md-suffix]\"></ng-content></div> </div> <div class=\"md-input-underline\" [class.md-disabled]=\"disabled\"> <span class=\"md-input-ripple\" [class.md-focused]=\"focused\" [class.md-accent]=\"dividerColor == 'accent'\" [class.md-warn]=\"dividerColor == 'warn'\"></span> </div> <div *ngIf=\"hintLabel != ''\" class=\"md-hint\">{{hintLabel}}</div> <ng-content select=\"md-hint\"></ng-content> </div> ",
443 styles: ["/** * Mixin that creates a new stacking context. * see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context */ /** * This mixin hides an element visually. * That means it's still accessible for screen-readers but not visible in view. */ /** * Forces an element to grow to fit floated contents; used as as an alternative to * `overflow: hidden;` because it doesn't cut off contents. */ /** * A mixin, which generates temporary ink ripple on a given component. * When $bindToParent is set to true, it will check for the focused class on the same selector as you included * that mixin. * It is also possible to specify the color palette of the temporary ripple. By default it uses the * accent palette for its background. */ /** * Undo the red box-shadow glow added by Firefox on invalid inputs. * See https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-ui-invalid */ :-moz-ui-invalid { box-shadow: none; } /** * Applies a floating placeholder above the input itself. */ :host { display: inline-block; position: relative; font-family: Roboto, \"Helvetica Neue\", sans-serif; text-align: left; } :host .md-input-wrapper { margin: 16px 0; } :host .md-input-table { display: inline-table; flex-flow: column; vertical-align: bottom; width: 100%; } :host .md-input-table > * { display: table-cell; } :host .md-input-element { font: inherit; background: transparent; border: none; outline: none; padding: 0; width: 100%; } :host .md-input-element.md-end { text-align: right; } :host .md-input-infix { position: relative; } :host .md-input-placeholder { position: absolute; left: 0; top: 0; font-size: 100%; pointer-events: none; color: rgba(0, 0, 0, 0.38); z-index: 1; width: 100%; display: none; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; transform: translateY(0); transform-origin: bottom left; transition: transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1), scale 400ms cubic-bezier(0.25, 0.8, 0.25, 1), color 400ms cubic-bezier(0.25, 0.8, 0.25, 1), width 400ms cubic-bezier(0.25, 0.8, 0.25, 1); } :host .md-input-placeholder.md-empty { display: block; cursor: text; } :host .md-input-placeholder.md-float:not(.md-empty), :host .md-input-placeholder.md-float.md-focused { display: block; padding-bottom: 5px; transform: translateY(-100%) scale(0.75); width: 133.33333%; } :host .md-input-placeholder.md-float:not(.md-empty) .md-placeholder-required, :host .md-input-placeholder.md-float.md-focused .md-placeholder-required { color: #9c27b0; } :host .md-input-placeholder.md-focused { color: #009688; } :host .md-input-placeholder.md-focused.md-accent { color: #9c27b0; } :host .md-input-placeholder.md-focused.md-warn { color: #f44336; } :host input:-webkit-autofill + .md-input-placeholder { display: block; padding-bottom: 5px; transform: translateY(-100%) scale(0.75); width: 133.33333%; } :host input:-webkit-autofill + .md-input-placeholder .md-placeholder-required { color: #9c27b0; } :host .md-input-underline { position: absolute; height: 1px; width: 100%; margin-top: 4px; border-top: 1px solid rgba(0, 0, 0, 0.38); } :host .md-input-underline.md-disabled { border-top: 0; background-image: linear-gradient(to right, rgba(0, 0, 0, 0.26) 0%, rgba(0, 0, 0, 0.26) 33%, transparent 0%); background-position: 0; background-size: 4px 1px; background-repeat: repeat-x; } :host .md-input-underline .md-input-ripple { position: absolute; height: 2px; z-index: 1; background-color: #009688; top: -1px; width: 100%; transform-origin: top; opacity: 0; transform: scaleY(0); transition: transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1), opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1); } :host .md-input-underline .md-input-ripple.md-accent { background-color: #9c27b0; } :host .md-input-underline .md-input-ripple.md-warn { background-color: #f44336; } :host .md-input-underline .md-input-ripple.md-focused { opacity: 1; transform: scaleY(1); } :host .md-hint { position: absolute; font-size: 75%; bottom: -0.5em; } :host .md-hint.md-right { right: 0; } :host-context([dir='rtl']) { text-align: right; } :host-context([dir='rtl']) .md-input-placeholder { transform-origin: bottom right; } :host-context([dir='rtl']) .md-input-element.md-end { text-align: left; } :host-context([dir='rtl']) .md-hint { right: 0; left: auto; } :host-context([dir='rtl']) .md-hint.md-right { right: auto; left: 0; } /*# sourceMappingURL=input.css.map */ "],
444 providers: [MD_INPUT_CONTROL_VALUE_ACCESSOR],
445 host: { '(click)': 'focus()' }
446 }),
447 __metadata('design:paramtypes', [])
448 ], MdInput);
449 return MdInput;
450}());
451var MdInputModule = (function () {
452 function MdInputModule() {
453 }
454 MdInputModule.forRoot = function () {
455 return {
456 ngModule: MdInputModule,
457 providers: []
458 };
459 };
460 MdInputModule = __decorate([
461 _angular_core.NgModule({
462 declarations: [MdPlaceholder, MdInput, MdHint],
463 imports: [_angular_common.CommonModule, _angular_forms.FormsModule],
464 exports: [MdPlaceholder, MdInput, MdHint],
465 }),
466 __metadata('design:paramtypes', [])
467 ], MdInputModule);
468 return MdInputModule;
469}());
470
471exports.MD_INPUT_CONTROL_VALUE_ACCESSOR = MD_INPUT_CONTROL_VALUE_ACCESSOR;
472exports.MdInputPlaceholderConflictError = MdInputPlaceholderConflictError;
473exports.MdInputUnsupportedTypeError = MdInputUnsupportedTypeError;
474exports.MdInputDuplicatedHintError = MdInputDuplicatedHintError;
475exports.MdPlaceholder = MdPlaceholder;
476exports.MdHint = MdHint;
477exports.MdInput = MdInput;
478exports.MdInputModule = MdInputModule;
479
480Object.defineProperty(exports, '__esModule', { value: true });
481
482})));
\No newline at end of file