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

Side by Side Diff: third_party/polymer/v1_0/components/iron-autogrow-textarea/iron-autogrow-textarea.html

Issue 1221923003: Update bower.json for Polymer elements and add PRESUBMIT.py (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 5 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
1 <!-- 1 <!--
2 @license 2 @license
3 Copyright (c) 2015 The Polymer Project Authors. All rights reserved. 3 Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
4 This code may only be used under the BSD style license found at http://polymer.g ithub.io/LICENSE.txt 4 This code may only be used under the BSD style license found at http://polymer.g ithub.io/LICENSE.txt
5 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 5 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6 The complete set of contributors may be found at http://polymer.github.io/CONTRI BUTORS.txt 6 The complete set of contributors may be found at http://polymer.github.io/CONTRI BUTORS.txt
7 Code distributed by Google as part of the polymer project is also 7 Code distributed by Google as part of the polymer project is also
8 subject to an additional IP rights grant found at http://polymer.github.io/PATEN TS.txt 8 subject to an additional IP rights grant found at http://polymer.github.io/PATEN TS.txt
9 --> 9 -->
10 10
11 <link rel="import" href="../polymer/polymer.html"> 11 <link rel="import" href="../polymer/polymer.html">
12 <link rel="import" href="../iron-behaviors/iron-control-state.html">
12 <link rel="import" href="../iron-flex-layout/classes/iron-flex-layout.html"> 13 <link rel="import" href="../iron-flex-layout/classes/iron-flex-layout.html">
13 <link rel="import" href="../iron-validatable-behavior/iron-validatable-behavior. html"> 14 <link rel="import" href="../iron-validatable-behavior/iron-validatable-behavior. html">
15 <link rel="import" href="../iron-form-element-behavior/iron-form-element-behavio r.html">
14 16
15 <!-- 17 <!--
16 `iron-autogrow-textarea` is an element containing a textarea that grows in heigh t as more 18 `iron-autogrow-textarea` is an element containing a textarea that grows in heigh t as more
17 lines of input are entered. Unless an explicit height or the `maxRows` property is set, it will 19 lines of input are entered. Unless an explicit height or the `maxRows` property is set, it will
18 never scroll. 20 never scroll.
19 21
20 Example: 22 Example:
21 23
22 <iron-autogrow-textarea id="a1"> 24 <iron-autogrow-textarea id="a1">
23 <textarea id="t1"></textarea> 25 <textarea id="t1"></textarea>
(...skipping 24 matching lines...) Expand all
48 visibility: hidden; 50 visibility: hidden;
49 word-wrap: break-word; 51 word-wrap: break-word;
50 } 52 }
51 53
52 textarea { 54 textarea {
53 position: relative; 55 position: relative;
54 outline: none; 56 outline: none;
55 border: none; 57 border: none;
56 resize: none; 58 resize: none;
57 background: inherit; 59 background: inherit;
60 color: inherit;
58 /* see comments in template */ 61 /* see comments in template */
59 width: 100%; 62 width: 100%;
60 height: 100%; 63 height: 100%;
61 font-size: inherit; 64 font-size: inherit;
62 font-family: inherit; 65 font-family: inherit;
63 } 66 }
64 67
65 ::content textarea:invalid { 68 ::content textarea:invalid {
66 box-shadow: none; 69 box-shadow: none;
67 } 70 }
68 71
69 </style> 72 </style>
70 <template> 73 <template>
71 <!-- the mirror sizes the input/textarea so it grows with typing --> 74 <!-- the mirror sizes the input/textarea so it grows with typing -->
72 <div id="mirror" class="mirror-text" aria-hidden="true">&nbsp;</div> 75 <div id="mirror" class="mirror-text" aria-hidden="true">&nbsp;</div>
73 76
74 <!-- size the input/textarea with a div, because the textarea has intrinsic size in ff --> 77 <!-- size the input/textarea with a div, because the textarea has intrinsic size in ff -->
75 <div class="textarea-container fit"> 78 <div class="textarea-container fit">
76 <textarea id="textarea" 79 <textarea id="textarea"
77 autocomplete$="[[autocomplete]]" 80 autocomplete$="[[autocomplete]]"
78 autofocus$="[[autofocus]]" 81 autofocus$="[[autofocus]]"
79 inputmode$="[[inputmode]]" 82 inputmode$="[[inputmode]]"
80 name$="[[name]]"
81 placeholder$="[[placeholder]]" 83 placeholder$="[[placeholder]]"
82 readonly$="[[readonly]]" 84 readonly$="[[readonly]]"
83 required$="[[required]]" 85 required$="[[required]]"
84 rows$="[[rows]]" 86 rows$="[[rows]]"
85 maxlength$="[[maxlength]]"></textarea> 87 maxlength$="[[maxlength]]"></textarea>
86 </div> 88 </div>
87 </template> 89 </template>
90 </dom-module>
88 91
89 <script> 92 <script>
90 93
91 Polymer({ 94 Polymer({
92 95
93 is: 'iron-autogrow-textarea', 96 is: 'iron-autogrow-textarea',
94 97
95 behaviors: [ 98 behaviors: [
96 Polymer.IronValidatableBehavior 99 Polymer.IronFormElementBehavior,
100 Polymer.IronValidatableBehavior,
101 Polymer.IronControlState
97 ], 102 ],
98 103
99 properties: { 104 properties: {
100 105
101 /** 106 /**
102 * Use this property instead of `value` for two-way data binding. 107 * Use this property instead of `value` for two-way data binding.
103 */ 108 */
104 bindValue: { 109 bindValue: {
105 observer: '_bindValueChanged', 110 observer: '_bindValueChanged',
106 type: String 111 type: String
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 }, 162 },
158 163
159 /** 164 /**
160 * Bound to the textarea's `name` attribute. 165 * Bound to the textarea's `name` attribute.
161 */ 166 */
162 name: { 167 name: {
163 type: String 168 type: String
164 }, 169 },
165 170
166 /** 171 /**
172 * The value for this input, same as `bindValue`
173 */
174 value: {
175 notify: true,
176 type: String,
177 computed: '_computeValue(bindValue)'
178 },
179
180 /**
167 * Bound to the textarea's `placeholder` attribute. 181 * Bound to the textarea's `placeholder` attribute.
168 */ 182 */
169 placeholder: { 183 placeholder: {
170 type: String 184 type: String
171 }, 185 },
172 186
173 /** 187 /**
174 * Bound to the textarea's `readonly` attribute. 188 * Bound to the textarea's `readonly` attribute.
175 */ 189 */
176 readonly: { 190 readonly: {
(...skipping 15 matching lines...) Expand all
192 } 206 }
193 207
194 }, 208 },
195 209
196 listeners: { 210 listeners: {
197 'input': '_onInput' 211 'input': '_onInput'
198 }, 212 },
199 213
200 /** 214 /**
201 * Returns the underlying textarea. 215 * Returns the underlying textarea.
216 * @type HTMLTextAreaElement
202 */ 217 */
203 get textarea() { 218 get textarea() {
204 return this.$.textarea; 219 return this.$.textarea;
205 }, 220 },
206 221
222 /**
223 * Returns true if `value` is valid. The validator provided in `validator`
224 * will be used first, if it exists; otherwise, the `textarea`'s validity
225 * is used.
226 * @return {boolean} True if the value is valid.
227 */
228 validate: function() {
229 // Empty, non-required input is valid.
230 if (!this.required && this.value == '') {
231 this.invalid = false;
232 return true;
233 }
234
235 var valid;
236 if (this.hasValidator()) {
237 valid = Polymer.IronValidatableBehavior.validate.call(this, this.value);
238 } else {
239 valid = this.$.textarea.validity.valid;
240 this.invalid = !valid;
241 }
242 this.fire('iron-input-validate');
243 return valid;
244 },
245
207 _update: function() { 246 _update: function() {
208 this.$.mirror.innerHTML = this._valueForMirror(); 247 this.$.mirror.innerHTML = this._valueForMirror();
209 248
210 var textarea = this.textarea; 249 var textarea = this.textarea;
211 // If the value of the textarea was updated imperatively, then we 250 // If the value of the textarea was updated imperatively, then we
212 // need to manually update bindValue as well. 251 // need to manually update bindValue as well.
213 if (textarea && this.bindValue != textarea.value) { 252 if (textarea && this.bindValue != textarea.value) {
214 this.bindValue = textarea.value; 253 this.bindValue = textarea.value;
215 } 254 }
216 }, 255 },
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 var input = this.textarea; 290 var input = this.textarea;
252 if (!input) { 291 if (!input) {
253 return; 292 return;
254 } 293 }
255 this.tokens = (input && input.value) ? input.value.replace(/&/gm, '&amp;') .replace(/"/gm, '&quot;').replace(/'/gm, '&#39;').replace(/</gm, '&lt;').replace (/>/gm, '&gt;').split('\n') : ['']; 294 this.tokens = (input && input.value) ? input.value.replace(/&/gm, '&amp;') .replace(/"/gm, '&quot;').replace(/'/gm, '&#39;').replace(/</gm, '&lt;').replace (/>/gm, '&gt;').split('\n') : [''];
256 return this._constrain(this.tokens); 295 return this._constrain(this.tokens);
257 }, 296 },
258 297
259 _updateCached: function() { 298 _updateCached: function() {
260 this.$.mirror.innerHTML = this._constrain(this.tokens); 299 this.$.mirror.innerHTML = this._constrain(this.tokens);
300 },
301
302 _computeValue: function() {
303 return this.bindValue;
261 } 304 }
262 }) 305 })
263 </script> 306 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698