update components
This commit is contained in:
parent
8c9287d505
commit
aa272fb404
106 changed files with 1733 additions and 554 deletions
|
@ -12,60 +12,74 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
|
|||
|
||||
<script>
|
||||
|
||||
Polymer.IronOverlayManager = (function() {
|
||||
Polymer.IronOverlayManager = {
|
||||
|
||||
var overlays = [];
|
||||
var DEFAULT_Z = 10;
|
||||
var backdrops = [];
|
||||
_overlays: [],
|
||||
|
||||
// iframes have a default z-index of 100, so this default should be at least
|
||||
// that.
|
||||
_minimumZ: 101,
|
||||
|
||||
_backdrops: [],
|
||||
|
||||
_applyOverlayZ: function(overlay, aboveZ) {
|
||||
this._setZ(overlay, aboveZ + 2);
|
||||
},
|
||||
|
||||
_setZ: function(element, z) {
|
||||
element.style.zIndex = z;
|
||||
},
|
||||
|
||||
// track overlays for z-index and focus managemant
|
||||
function addOverlay(overlay) {
|
||||
var z0 = currentOverlayZ();
|
||||
overlays.push(overlay);
|
||||
var z1 = currentOverlayZ();
|
||||
if (z1 <= z0) {
|
||||
applyOverlayZ(overlay, z0);
|
||||
addOverlay: function(overlay) {
|
||||
var minimumZ = Math.max(this.currentOverlayZ(), this._minimumZ);
|
||||
this._overlays.push(overlay);
|
||||
var newZ = this.currentOverlayZ();
|
||||
if (newZ <= minimumZ) {
|
||||
this._applyOverlayZ(overlay, minimumZ);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
function removeOverlay(overlay) {
|
||||
var i = overlays.indexOf(overlay);
|
||||
removeOverlay: function(overlay) {
|
||||
var i = this._overlays.indexOf(overlay);
|
||||
if (i >= 0) {
|
||||
overlays.splice(i, 1);
|
||||
setZ(overlay, '');
|
||||
this._overlays.splice(i, 1);
|
||||
this._setZ(overlay, '');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
function applyOverlayZ(overlay, aboveZ) {
|
||||
setZ(overlay, aboveZ + 2);
|
||||
}
|
||||
|
||||
function setZ(element, z) {
|
||||
element.style.zIndex = z;
|
||||
}
|
||||
|
||||
function currentOverlay() {
|
||||
var i = overlays.length - 1;
|
||||
while (overlays[i] && !overlays[i].opened) {
|
||||
currentOverlay: function() {
|
||||
var i = this._overlays.length - 1;
|
||||
while (this._overlays[i] && !this._overlays[i].opened) {
|
||||
--i;
|
||||
}
|
||||
return overlays[i];
|
||||
}
|
||||
return this._overlays[i];
|
||||
},
|
||||
|
||||
function currentOverlayZ() {
|
||||
var z;
|
||||
var current = currentOverlay();
|
||||
currentOverlayZ: function() {
|
||||
var z = this._minimumZ;
|
||||
var current = this.currentOverlay();
|
||||
if (current) {
|
||||
var z1 = window.getComputedStyle(current).zIndex;
|
||||
if (!isNaN(z1)) {
|
||||
z = Number(z1);
|
||||
}
|
||||
}
|
||||
return z || DEFAULT_Z;
|
||||
}
|
||||
return z;
|
||||
},
|
||||
|
||||
function focusOverlay() {
|
||||
var current = currentOverlay();
|
||||
/**
|
||||
* Ensures that the minimum z-index of new overlays is at least `minimumZ`.
|
||||
* This does not effect the z-index of any existing overlays.
|
||||
*
|
||||
* @param {number} minimumZ
|
||||
*/
|
||||
ensureMinimumZ: function(minimumZ) {
|
||||
this._minimumZ = Math.max(this._minimumZ, minimumZ);
|
||||
},
|
||||
|
||||
focusOverlay: function() {
|
||||
var current = this.currentOverlay();
|
||||
// We have to be careful to focus the next overlay _after_ any current
|
||||
// transitions are complete (due to the state being toggled prior to the
|
||||
// transition). Otherwise, we risk infinite recursion when a transitioning
|
||||
|
@ -77,35 +91,25 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
|
|||
if (current && !current.transitioning) {
|
||||
current._applyFocus();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
function trackBackdrop(element) {
|
||||
trackBackdrop: function(element) {
|
||||
// backdrops contains the overlays with a backdrop that are currently
|
||||
// visible
|
||||
if (element.opened) {
|
||||
backdrops.push(element);
|
||||
this._backdrops.push(element);
|
||||
} else {
|
||||
var index = backdrops.indexOf(element);
|
||||
var index = this._backdrops.indexOf(element);
|
||||
if (index >= 0) {
|
||||
backdrops.splice(index, 1);
|
||||
this._backdrops.splice(index, 1);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
getBackdrops: function() {
|
||||
return this._backdrops;
|
||||
}
|
||||
|
||||
function getBackdrops() {
|
||||
return backdrops;
|
||||
}
|
||||
|
||||
return {
|
||||
addOverlay: addOverlay,
|
||||
removeOverlay: removeOverlay,
|
||||
currentOverlay: currentOverlay,
|
||||
currentOverlayZ: currentOverlayZ,
|
||||
focusOverlay: focusOverlay,
|
||||
trackBackdrop: trackBackdrop,
|
||||
getBackdrops: getBackdrops
|
||||
};
|
||||
|
||||
})();
|
||||
};
|
||||
|
||||
</script>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue