OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 | 4 |
5 cr.define('cr.ui', function() { | 5 cr.define('cr.ui', function() { |
6 | 6 |
7 /** | 7 /** |
8 * Decorates elements as an instance of a class. | 8 * Decorates elements as an instance of a class. |
9 * @param {string|!Element} source The way to find the element(s) to decorate. | 9 * @param {string|!Element} source The way to find the element(s) to decorate. |
10 * If this is a string then {@code querySeletorAll} is used to find the | 10 * If this is a string then {@code querySeletorAll} is used to find the |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 var win = doc.defaultView; | 116 var win = doc.defaultView; |
117 var computedStyle = win.getComputedStyle(el); | 117 var computedStyle = win.getComputedStyle(el); |
118 var parentComputedStyle = win.getComputedStyle(parentEl); | 118 var parentComputedStyle = win.getComputedStyle(parentEl); |
119 var rtl = computedStyle.direction == 'rtl'; | 119 var rtl = computedStyle.direction == 'rtl'; |
120 | 120 |
121 // To get the max width we get the width of the treeItem minus the position | 121 // To get the max width we get the width of the treeItem minus the position |
122 // of the input. | 122 // of the input. |
123 var inputRect = el.getBoundingClientRect(); // box-sizing | 123 var inputRect = el.getBoundingClientRect(); // box-sizing |
124 var parentRect = parentEl.getBoundingClientRect(); | 124 var parentRect = parentEl.getBoundingClientRect(); |
125 var startPos = rtl ? parentRect.right - inputRect.right : | 125 var startPos = rtl ? parentRect.right - inputRect.right : |
126 inputRect.left - parentRect.left; | 126 inputRect.left - parentRect.left; |
127 | 127 |
128 // Add up border and padding of the input. | 128 // Add up border and padding of the input. |
129 var inner = parseInt(computedStyle.borderLeftWidth, 10) + | 129 var inner = parseInt(computedStyle.borderLeftWidth, 10) + |
130 parseInt(computedStyle.paddingLeft, 10) + | 130 parseInt(computedStyle.paddingLeft, 10) + |
131 parseInt(computedStyle.paddingRight, 10) + | 131 parseInt(computedStyle.paddingRight, 10) + |
132 parseInt(computedStyle.borderRightWidth, 10); | 132 parseInt(computedStyle.borderRightWidth, 10); |
133 | 133 |
134 // We also need to subtract the padding of parent to prevent it to overflow. | 134 // We also need to subtract the padding of parent to prevent it to overflow. |
135 var parentPadding = rtl ? parseInt(parentComputedStyle.paddingLeft, 10) : | 135 var parentPadding = rtl ? parseInt(parentComputedStyle.paddingLeft, 10) : |
136 parseInt(parentComputedStyle.paddingRight, 10); | 136 parseInt(parentComputedStyle.paddingRight, 10); |
137 | 137 |
138 var max = parentEl.clientWidth - startPos - inner - parentPadding; | 138 var max = parentEl.clientWidth - startPos - inner - parentPadding; |
139 if (opt_scale) | 139 if (opt_scale) |
140 max *= opt_scale; | 140 max *= opt_scale; |
141 | 141 |
142 function limit() { | 142 function limit() { |
143 if (el.scrollWidth > max) { | 143 if (el.scrollWidth > max) { |
144 el.style.width = max + 'px'; | 144 el.style.width = max + 'px'; |
145 } else { | 145 } else { |
146 el.style.width = 0; | 146 el.style.width = 0; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 } | 203 } |
204 | 204 |
205 return { | 205 return { |
206 decorate: decorate, | 206 decorate: decorate, |
207 define: define, | 207 define: define, |
208 limitInputWidth: limitInputWidth, | 208 limitInputWidth: limitInputWidth, |
209 toCssPx: toCssPx, | 209 toCssPx: toCssPx, |
210 swallowDoubleClick: swallowDoubleClick | 210 swallowDoubleClick: swallowDoubleClick |
211 }; | 211 }; |
212 }); | 212 }); |
OLD | NEW |