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

Side by Side Diff: third_party/polymer/components-chromium/core-layout-trbl/core-slide-extracted.js

Issue 592593002: Inline scripts were extracted from Polymer elements. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: s/echo ""/echo/ Created 6 years, 2 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
3 Polymer('core-slide', {
4
5 closed: false,
6 open: true,
7 vertical: false,
8 targetId: '',
9 target: null,
10
11 ready: function() {
12 this.setAttribute('nolayout', '');
13 },
14
15 attached: function() {
16 this.target = this.parentNode;
17 },
18
19 targetIdChanged: function() {
20 var p = this.parentNode;
21 while (p.parentNode) {p = p.parentNode;};
22 this.target = p.querySelector('#' + this.targetId);
23 },
24
25 targetChanged: function() {
26 if (this.closed) {
27 this.asyncMethod(this.update);
28 }
29 },
30
31 toggle: function() {
32 this.open = !this.open;
33 },
34
35 closedChanged: function() {
36 this.open = !this.closed;
37 },
38
39 openChanged: function() {
40 this.asyncMethod(this.update);
41 },
42
43 update: function() {
44 this.closed = !this.open;
45 if (this.target) {
46 if (this.vertical) {
47 if (this.target.style.top !== '') {
48 this.updateTop();
49 } else {
50 this.updateBottom();
51 }
52 } else {
53 if (this.target.style.left !== '') {
54 this.updateLeft();
55 } else {
56 this.updateRight();
57 }
58 }
59 }
60 },
61
62 updateLeft: function() {
63 var w = this.target.offsetWidth;
64 var l = this.open ? 0 : -w;
65 this.target.style.left = l + 'px';
66 var s = this.target.nextElementSibling;
67 while (s) {
68 if (!s.hasAttribute('nolayout')) {
69 if (s.style.left === '' && s.style.right !== '') {
70 break;
71 }
72 l += w;
73 s.style.left = l + 'px';
74 w = s.offsetWidth;
75 }
76 s = s.nextElementSibling;
77 }
78 },
79
80 updateRight: function() {
81 var w = this.target.offsetWidth;
82 var r = this.open ? 0 : -w;
83 this.target.style.right = r + 'px';
84 //var s = this.target.previousElementSibling;
85 var s = previousElementSibling(this.target);
86 while (s) {
87 if (!s.hasAttribute('nolayout')) {
88 if (s.style.right === '' && s.style.left !== '') {
89 break;
90 }
91 r += w;
92 s.style.right = r + 'px';
93 w = s.offsetWidth;
94 }
95 //if (s == s.previousElementSibling) {
96 // console.error(s.localName + ' is its own sibling', s);
97 // break;
98 //}
99 //s = s.previousElementSibling;
100 s = previousElementSibling(s);
101 }
102 },
103
104 updateTop: function() {
105 var h = this.target.offsetHeight;
106 var t = this.open ? 0 : -h;
107 this.target.style.top = t + 'px';
108 var s = this.target.nextElementSibling;
109 while (s) {
110 if (!s.hasAttribute('nolayout')) {
111 if (s.style.top === '' && s.style.bottom !== '') {
112 break;
113 }
114 t += h;
115 s.style.top = t + 'px';
116 h = s.offsetHeight;
117 }
118 s = s.nextElementSibling;
119 }
120 },
121
122 updateBottom: function() {
123 var h = this.target.offsetHeight;
124 var b = this.open ? 0 : -h;
125 this.target.style.bottom = b + 'px';
126 //var s = this.target.previousElementSibling;
127 var s = previousElementSibling(this.target);
128 while (s) {
129 if (!s.hasAttribute('nolayout')) {
130 if (s.style.bottom === '' && s.style.top !== '') {
131 break;
132 }
133 b = b + h;
134 s.style.bottom = b + 'px';
135 h = s.offsetHeight;
136 }
137 //if (s == s.previousElementSibling) {
138 // console.error(s.localName + ' is its own sibling', s);
139 // break;
140 //}
141 //s = s.previousElementSibling;
142 s = previousElementSibling(s);
143 }
144 }
145
146 });
147
148 // TODO(sjmiles): temporary workaround for b0rked property in ShadowDOMPolyf ill
149 function previousElementSibling(e) {
150 do {
151 e = e.previousSibling;
152 } while (e && e.nodeType !== Node.ELEMENT_NODE);
153 return e;
154 };
155
156
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698