OLD | NEW |
1 /* Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 * Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 * found in the LICENSE file. | 3 // found in the LICENSE file. |
4 */ | |
5 | 4 |
6 Polymer('gaia-input', (function() { | 5 Polymer((function() { |
7 var INPUT_EMAIL_PATTERN = "^[a-zA-Z0-9.!#$%&'*+=?^_`{|}~-]+(@[^\\s@]+)?$"; | 6 var INPUT_EMAIL_PATTERN = "^[a-zA-Z0-9.!#$%&'*+=?^_`{|}~-]+(@[^\\s@]+)?$"; |
8 | 7 |
9 return { | 8 return { |
10 required: false, | 9 is: 'gaia-input', |
11 | 10 |
12 ready: function() { | 11 properties: { |
13 this.typeChanged(); | 12 label: String, |
| 13 value: { |
| 14 notify: true, |
| 15 observer: 'updateDomainVisibility_', |
| 16 type: String |
| 17 }, |
| 18 |
| 19 type: { |
| 20 observer: 'typeChanged_', |
| 21 type: String |
| 22 }, |
| 23 |
| 24 domain: { |
| 25 observer: 'updateDomainVisibility_', |
| 26 type: String |
| 27 }, |
| 28 |
| 29 disabled: Boolean, |
| 30 |
| 31 required: Boolean, |
| 32 |
| 33 error: String, |
| 34 |
| 35 isInvalid: Boolean |
| 36 }, |
| 37 |
| 38 attached: function() { |
| 39 this.typeChanged_(); |
14 }, | 40 }, |
15 | 41 |
16 onKeyDown: function(e) { | 42 onKeyDown: function(e) { |
17 this.isInvalid = false; | 43 this.isInvalid = false; |
18 }, | 44 }, |
19 | 45 |
20 setDomainVisibility: function() { | 46 updateDomainVisibility_: function() { |
21 this.$.domainLabel.hidden = (this.type !== 'email') || !this.domain || | 47 this.$.domainLabel.hidden = (this.type !== 'email') || !this.domain || |
22 (this.value && this.value.indexOf('@') !== -1); | 48 (this.value && this.value.indexOf('@') !== -1); |
23 }, | 49 }, |
24 | 50 |
25 onTap: function() { | 51 onTap: function() { |
26 this.isInvalid = false; | 52 this.isInvalid = false; |
27 }, | 53 }, |
28 | 54 |
29 focus: function() { | 55 focus: function() { |
30 this.$.input.focus(); | 56 this.$.input.focus(); |
31 }, | 57 }, |
32 | 58 |
33 checkValidity: function() { | 59 checkValidity: function() { |
34 var isValid = this.$.input.validity.valid; | 60 var valid = this.$.input.validate(); |
35 this.isInvalid = !isValid; | 61 this.isInvalid = !valid; |
36 return isValid; | 62 return valid; |
37 }, | 63 }, |
38 | 64 |
39 typeChanged: function() { | 65 typeChanged_: function() { |
40 if (this.type == 'email') { | 66 if (this.type == 'email') { |
41 this.$.input.pattern = INPUT_EMAIL_PATTERN; | 67 this.$.input.pattern = INPUT_EMAIL_PATTERN; |
42 this.$.input.type = 'text'; | 68 this.$.input.type = 'text'; |
43 } else { | 69 } else { |
44 this.$.input.removeAttribute('pattern'); | 70 this.$.input.removeAttribute('pattern'); |
45 this.$.input.type = this.type; | 71 this.$.input.type = this.type; |
46 } | 72 } |
47 this.setDomainVisibility(); | 73 this.updateDomainVisibility_(); |
48 }, | 74 } |
49 | |
50 valueChanged: function() { | |
51 this.setDomainVisibility(); | |
52 }, | |
53 | |
54 domainChanged: function() { | |
55 this.setDomainVisibility(); | |
56 }, | |
57 }; | 75 }; |
58 })()); | 76 })()); |
59 | 77 |
OLD | NEW |