Skip to content
This repository was archived by the owner on Mar 13, 2018. It is now read-only.

Commit 94288d1

Browse files
committed
:unresolved shimmed via unresolved attribute; support is experimental.
1 parent ee84586 commit 94288d1

3 files changed

Lines changed: 61 additions & 0 deletions

File tree

build.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
[
22
"../MutationObservers/build.json",
33
"src/scope.js",
4+
"src/unresolved.js",
45
"src/MutationObserver.js",
56
"src/Observer.js",
67
"src/CustomElements.js",

custom-elements.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ var thisFile = 'custom-elements.js';
1010
var scopeName = 'CustomElements';
1111
var modules = [
1212
'../MutationObservers/mutation-observers.js',
13+
'src/unresolved.js',
1314
'src/Observer.js',
1415
'src/CustomElements.js',
1516
'src/Parser.js',

src/unresolved.js

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
* Copyright 2013 The Polymer Authors. All rights reserved.
3+
* Use of this source code is governed by a BSD-style
4+
* license that can be found in the LICENSE file.
5+
*/
6+
(function(scope) {
7+
/*
8+
Shim :unresolved via an attribute unresolved.
9+
TODO(sorvell): This is currently done once when the first
10+
round of elements are upgraded. This is incorrect, and it will
11+
need to be done dynamically.
12+
The 'resolved' attribute is experimental and may be removed.
13+
*/
14+
var TRANSITION_TIME = 0.3;
15+
var UNRESOLVED = 'unresolved';
16+
var RESOLVED = 'resolved';
17+
var UNRESOLVED_SELECTOR = '[' + UNRESOLVED + ']';
18+
var RESOLVED_SELECTOR = '[' + RESOLVED + ']';
19+
var style = document.createElement('style');
20+
21+
style.textContent = UNRESOLVED_SELECTOR + ' { ' +
22+
'opacity: 0; display: block; overflow: hidden; } \n' +
23+
RESOLVED_SELECTOR + '{ display: block; overflow: hidden;\n' +
24+
'-webkit-transition: opacity ' + TRANSITION_TIME + 's; ' +
25+
'transition: opacity ' + TRANSITION_TIME +'s; }\n';
26+
var head = document.querySelector('head');
27+
head.insertBefore(style, head.firstChild);
28+
29+
// remove unresolved and apply resolved class
30+
function resolveElements() {
31+
requestAnimationFrame(function() {
32+
var nodes = document.querySelectorAll(UNRESOLVED_SELECTOR);
33+
for (var i=0, l=nodes.length, n; (i<l) && (n=nodes[i]); i++) {
34+
n.removeAttribute(UNRESOLVED);
35+
n.setAttribute(RESOLVED, '');
36+
}
37+
38+
// NOTE: depends on transition end event to remove 'resolved' class.
39+
if (nodes.length) {
40+
var removeResolved = function() {
41+
for (var i=0, l=nodes.length, n; (i<l) && (n=nodes[i]); i++) {
42+
n.removeAttribute(RESOLVED);
43+
}
44+
document.body.removeEventListener(endEvent, removeResolved, false);
45+
}
46+
document.body.addEventListener(endEvent, removeResolved, false);
47+
};
48+
49+
});
50+
}
51+
52+
// determine transition end event
53+
var endEvent = (document.documentElement.style.webkitTransition !== undefined) ?
54+
'webkitTransitionEnd' : 'transitionend';
55+
56+
// hookup auto-unveiling
57+
window.addEventListener('WebComponentsReady', resolveElements);
58+
59+
})(CustomElements);

0 commit comments

Comments
 (0)