|
156 | 156 | </script>
|
157 | 157 | </dom-module>
|
158 | 158 |
|
| 159 | + <dom-module id="x-late"> |
| 160 | + <style> |
| 161 | + :host { |
| 162 | + border: var(--late); |
| 163 | + display: block; |
| 164 | + } |
| 165 | + </style> |
| 166 | + |
| 167 | + <template> |
| 168 | + late |
| 169 | + </template> |
| 170 | + <script> |
| 171 | + HTMLImports.whenReady(function() { |
| 172 | + Polymer({is: 'x-late'}); |
| 173 | + }); |
| 174 | + </script> |
| 175 | + </dom-module> |
| 176 | + |
| 177 | + <dom-module id="x-overrides3"> |
| 178 | + <style> |
| 179 | + :host { |
| 180 | + border: 1px dashed gray; |
| 181 | + margin: 8px; |
| 182 | + padding: 8px; |
| 183 | + display: block; |
| 184 | + } |
| 185 | + |
| 186 | + :root { |
| 187 | + --fillin: 16px; |
| 188 | + } |
| 189 | + </style> |
| 190 | + |
| 191 | + <template> |
| 192 | + overrides: |
| 193 | + <x-late id="late"></x-late> |
| 194 | + </template> |
| 195 | + <script> |
| 196 | + HTMLImports.whenReady(function() { |
| 197 | + Polymer({is: 'x-overrides3'}); |
| 198 | + }); |
| 199 | + </script> |
| 200 | + </dom-module> |
| 201 | + |
159 | 202 | <dom-module id="x-has-if">
|
160 | 203 | <style>
|
161 | 204 | .iffy {
|
|
194 | 237 | --a: 10px;
|
195 | 238 | --b: 5px;
|
196 | 239 | --primary-color: rgb(128, 128, 128);
|
| 240 | + --late: var(--fillin); |
197 | 241 | }
|
198 | 242 |
|
199 | 243 | #me {
|
|
230 | 274 | background-color: var(--default3);
|
231 | 275 | }
|
232 | 276 |
|
233 |
| - #overrides1, #overrides2, #overrides3 { |
| 277 | + #overrides1a, #overrides1b, #overrides2 { |
234 | 278 | --rename: 8px solid navy;
|
235 | 279 | }
|
236 | 280 |
|
237 |
| - #overrides2, #overrides3 { |
| 281 | + #overrides1b, #overrides2 { |
238 | 282 | --grand-child-scope-var: 9px solid orange;
|
239 | 283 | }
|
240 | 284 |
|
|
261 | 305 | <div id="me">x-scope</div>
|
262 | 306 | <x-child-scope id="child"></x-child-scope>
|
263 | 307 | <x-child-scope id="child2"></x-child-scope>
|
264 |
| - <x-overrides id="overrides1"></x-overrides> |
265 |
| - <x-overrides id="overrides2"></x-overrides> |
266 |
| - <x-overrides2 id="overrides3"></x-overrides2> |
| 308 | + <x-overrides id="overrides1a"></x-overrides> |
| 309 | + <x-overrides id="overrides1b"></x-overrides> |
| 310 | + <x-overrides2 id="overrides2"></x-overrides2> |
| 311 | + <x-overrides3 id="overrides3"></x-overrides3> |
267 | 312 | <div id="default1">default</div>
|
268 | 313 | <div id="default2">var default</div>
|
269 | 314 | <div id="default3">tricky property rgb(...) default</div>
|
|
398 | 443 |
|
399 | 444 | test('variable precedence and overrides', function() {
|
400 | 445 | // renamed property applied
|
401 |
| - var o1 = styled.$.overrides1; |
402 |
| - assertStylePropertyValue(o1._styleProperties, '--rename', '8px'); |
403 |
| - assertStylePropertyValue(o1._styleProperties, '--grand-child-scope-var', '8px'); |
404 |
| - assertComputed(o1.$.gc1.$.me, '8px'); |
| 446 | + var o1a = styled.$.overrides1a; |
| 447 | + assertStylePropertyValue(o1a._styleProperties, '--rename', '8px'); |
| 448 | + assertStylePropertyValue(o1a._styleProperties, '--grand-child-scope-var', '8px'); |
| 449 | + assertComputed(o1a.$.gc1.$.me, '8px'); |
405 | 450 | // :host property overridden by outer scope
|
| 451 | + var o1b = styled.$.overrides1b; |
| 452 | + assertStylePropertyValue(o1b._styleProperties, '--rename', '8px'); |
| 453 | + assertStylePropertyValue(o1b._styleProperties, '--grand-child-scope-var', '9px'); |
| 454 | + assertComputed(o1b.$.gc1.$.me, '9px'); |
| 455 | + // own scope property overrides outer scope |
406 | 456 | var o2 = styled.$.overrides2;
|
407 | 457 | assertStylePropertyValue(o2._styleProperties, '--rename', '8px');
|
408 |
| - assertStylePropertyValue(o2._styleProperties, '--grand-child-scope-var', '9px'); |
409 |
| - assertComputed(o2.$.gc1.$.me, '9px'); |
410 |
| - // own scope property overrides outer scope |
| 458 | + assertStylePropertyValue(o2._styleProperties, '--grand-child-scope-var', '8px'); |
| 459 | + assertComputed(o2.$.gc1.$.me, '8px'); |
| 460 | + |
| 461 | + // late bound property does *not* resolve using inherited value |
411 | 462 | var o3 = styled.$.overrides3;
|
412 |
| - assertStylePropertyValue(o3._styleProperties, '--rename', '8px'); |
413 |
| - assertStylePropertyValue(o3._styleProperties, '--grand-child-scope-var', '8px'); |
414 |
| - assertComputed(o3.$.gc1.$.me, '8px'); |
| 463 | + assert.equal(o3._styleProperties['--late'], '', 'property should not be late bound'); |
| 464 | + assertStylePropertyValue(o3._styleProperties, '--fillin', '16px'); |
| 465 | + assertComputed(o3.$.late, '0px'); |
415 | 466 |
|
416 | 467 | });
|
417 | 468 |
|
|
0 commit comments