Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Side by Side Diff: third_party/polymer/v1_0/components-chromium/paper-input/paper-input-container-extracted.js

Issue 1162963002: Revert "Rename polymer and cr_elements v0_8 to v1_0" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1
2 (function() {
3
4 Polymer({
5
6 is: 'paper-input-container',
7
8 properties: {
9
10 /**
11 * Set to true to disable the floating label. The label disappears when th e input value is
12 * not null.
13 */
14 noLabelFloat: {
15 type: Boolean,
16 value: false
17 },
18
19 /**
20 * Set to true to always float the floating label.
21 */
22 alwaysFloatLabel: {
23 type: Boolean,
24 value: false
25 },
26
27 /**
28 * The attribute to listen for value changes on.
29 */
30 attrForValue: {
31 type: String,
32 value: 'bind-value'
33 },
34
35 /**
36 * Set to true to auto-validate the input value when it changes.
37 */
38 autoValidate: {
39 type: Boolean,
40 value: false
41 },
42
43 /**
44 * True if the input is invalid. This property is set automatically when t he input value
45 * changes if auto-validating, or when the `iron-input-valid` event is hea rd from a child.
46 */
47 invalid: {
48 observer: '_invalidChanged',
49 type: Boolean,
50 value: false
51 },
52
53 /**
54 * True if the input has focus.
55 */
56 focused: {
57 readOnly: true,
58 type: Boolean,
59 value: false
60 },
61
62 _addons: {
63 type: Array,
64 value: function() {
65 return [];
66 }
67 },
68
69 _inputHasContent: {
70 type: Boolean,
71 value: false
72 },
73
74 _inputSelector: {
75 type: String,
76 value: 'input,textarea,.paper-input-input'
77 },
78
79 _boundOnFocus: {
80 type: Function,
81 value: function() {
82 return this._onFocus.bind(this);
83 }
84 },
85
86 _boundOnBlur: {
87 type: Function,
88 value: function() {
89 return this._onBlur.bind(this);
90 }
91 },
92
93 _boundOnInput: {
94 type: Function,
95 value: function() {
96 this._onInput.bind(this)
97 }
98 },
99
100 _boundValueChanged: {
101 type: Function,
102 value: function() {
103 return this._onValueChanged.bind(this);
104 }
105 }
106
107 },
108
109 listeners: {
110 'addon-attached': '_onAddonAttached',
111 'iron-input-validate': '_onIronInputValidate'
112 },
113
114 get _valueChangedEvent() {
115 return this.attrForValue + '-changed';
116 },
117
118 get _propertyForValue() {
119 return Polymer.CaseMap.dashToCamelCase(this.attrForValue);
120 },
121
122 get _inputElement() {
123 return Polymer.dom(this).querySelector(this._inputSelector);
124 },
125
126 ready: function() {
127 this.addEventListener('focus', this._boundOnFocus, true);
128 this.addEventListener('blur', this._boundOnBlur, true);
129 if (this.attrForValue) {
130 this._inputElement.addEventListener(this._valueChangedEvent, this._bound ValueChanged);
131 } else {
132 this.addEventListener('input', this._onInput);
133 }
134 },
135
136 attached: function() {
137 this._handleValue(this._inputElement);
138 },
139
140 _onAddonAttached: function(event) {
141 this._addons.push(event.target);
142 this._handleValue(this._inputElement);
143 },
144
145 _onFocus: function() {
146 this._setFocused(true);
147 },
148
149 _onBlur: function() {
150 this._setFocused(false);
151 },
152
153 _onInput: function(event) {
154 this._handleValue(event.target);
155 },
156
157 _onValueChanged: function(event) {
158 this._handleValue(event.target);
159 },
160
161 _handleValue: function(inputElement) {
162 var value = inputElement[this._propertyForValue] || inputElement.value;
163
164 if (this.autoValidate) {
165 var valid;
166 if (inputElement.validate) {
167 valid = inputElement.validate(value);
168 } else {
169 valid = inputElement.checkValidity();
170 }
171 this.invalid = !valid;
172 }
173
174 // type="number" hack needed because this.value is empty until it's valid
175 if (value || (inputElement.type === 'number' && !inputElement.checkValidit y())) {
176 this._inputHasContent = true;
177 } else {
178 this._inputHasContent = false;
179 }
180
181 this.updateAddons({
182 inputElement: inputElement,
183 value: value,
184 invalid: this.invalid
185 });
186 },
187
188 _onIronInputValidate: function(event) {
189 this.invalid = this._inputElement.invalid;
190 },
191
192 _invalidChanged: function() {
193 if (this._addons) {
194 this.updateAddons({invalid: this.invalid});
195 }
196 },
197
198 /**
199 * Call this to update the state of add-ons.
200 * @param {Object} state Add-on state.
201 */
202 updateAddons: function(state) {
203 for (var addon, index = 0; addon = this._addons[index]; index++) {
204 addon.update(state);
205 }
206 },
207
208 _computeInputContentClass: function(noLabelFloat, alwaysFloatLabel, focused, invalid, _inputHasContent) {
209 var cls = 'input-content';
210 if (!noLabelFloat) {
211 if (alwaysFloatLabel || _inputHasContent) {
212 cls += ' label-is-floating';
213 if (invalid) {
214 cls += ' is-invalid';
215 } else if (focused) {
216 cls += " label-is-highlighted";
217 }
218 }
219 } else {
220 if (_inputHasContent) {
221 cls += ' label-is-hidden';
222 }
223 }
224 return cls;
225 },
226
227 _computeUnderlineClass: function(focused, invalid) {
228 var cls = 'underline';
229 if (invalid) {
230 cls += ' is-invalid';
231 } else if (focused) {
232 cls += ' is-highlighted'
233 }
234 return cls;
235 },
236
237 _computeAddOnContentClass: function(focused, invalid) {
238 var cls = 'add-on-content';
239 if (invalid) {
240 cls += ' is-invalid';
241 } else if (focused) {
242 cls += ' is-highlighted'
243 }
244 return cls;
245 }
246
247 });
248
249 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698