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

Side by Side Diff: third_party/polymer/v0_8/components-chromium/iron-overlay-behavior/iron-overlay-manager-extracted.js

Issue 1162563004: Upgrade to 1.0 and switch clients to dom-repeat where needed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix a layout import and remove the gzipped webanimation in reproduce.sh Created 5 years, 6 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.IronOverlayManager = (function() {
4
5 var overlays = [];
6 var DEFAULT_Z = 10;
7 var backdrops = [];
8
9 // track overlays for z-index and focus managemant
10 function addOverlay(overlay) {
11 var z0 = currentOverlayZ();
12 overlays.push(overlay);
13 var z1 = currentOverlayZ();
14 if (z1 <= z0) {
15 applyOverlayZ(overlay, z0);
16 }
17 }
18
19 function removeOverlay(overlay) {
20 var i = overlays.indexOf(overlay);
21 if (i >= 0) {
22 overlays.splice(i, 1);
23 setZ(overlay, '');
24 }
25 }
26
27 function applyOverlayZ(overlay, aboveZ) {
28 setZ(overlay, aboveZ + 2);
29 }
30
31 function setZ(element, z) {
32 element.style.zIndex = z;
33 }
34
35 function currentOverlay() {
36 return overlays[overlays.length-1];
37 }
38
39 function currentOverlayZ() {
40 var z;
41 var current = currentOverlay();
42 if (current) {
43 var z1 = window.getComputedStyle(current).zIndex;
44 if (!isNaN(z1)) {
45 z = Number(z1);
46 }
47 }
48 return z || DEFAULT_Z;
49 }
50
51 function focusOverlay() {
52 var current = currentOverlay();
53 // We have to be careful to focus the next overlay _after_ any current
54 // transitions are complete (due to the state being toggled prior to the
55 // transition). Otherwise, we risk infinite recursion when a transitioning
56 // (closed) overlay becomes the current overlay.
57 //
58 // NOTE: We make the assumption that any overlay that completes a transiti on
59 // will call into focusOverlay to kick the process back off. Currently:
60 // transitionend -> _applyFocus -> focusOverlay.
61 if (current && !current.transitioning) {
62 current._applyFocus();
63 }
64 }
65
66 function trackBackdrop(element) {
67 // backdrops contains the overlays with a backdrop that are currently
68 // visible
69 if (element.opened) {
70 backdrops.push(element);
71 } else {
72 var index = backdrops.indexOf(element);
73 if (index >= 0) {
74 backdrops.splice(index, 1);
75 }
76 }
77 }
78
79 function getBackdrops() {
80 return backdrops;
81 }
82
83 return {
84 addOverlay: addOverlay,
85 removeOverlay: removeOverlay,
86 currentOverlay: currentOverlay,
87 currentOverlayZ: currentOverlayZ,
88 focusOverlay: focusOverlay,
89 trackBackdrop: trackBackdrop,
90 getBackdrops: getBackdrops
91 };
92
93 })();
94
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698