enyo.kind({ name: "onyx.Scrim", showing: false, classes: "onyx-scrim enyo-fit", floating: false, //* @protected create: function() { this.inherited(arguments); this.zStack = []; if (this.floating) { this.setParent(enyo.floatingLayer); } }, showingChanged: function() { // auto render when shown. if (this.floating && this.showing && !this.hasNode()) { this.render(); } this.inherited(arguments); //this.addRemoveClass(this.showingClassName, this.showing); }, //* @protected addZIndex: function(inZIndex) { if (enyo.indexOf(inZIndex, this.zStack) < 0) { this.zStack.push(inZIndex); } }, removeZIndex: function(inControl) { enyo.remove(inControl, this.zStack); }, //* @public //* Show Scrim at the specified ZIndex. Note: If you use showAtZIndex you //* must call hideAtZIndex to properly unwind the zIndex stack showAtZIndex: function(inZIndex) { this.addZIndex(inZIndex); if (inZIndex !== undefined) { this.setZIndex(inZIndex); } this.show(); }, //* Hide Scrim at the specified ZIndex hideAtZIndex: function(inZIndex) { this.removeZIndex(inZIndex); if (!this.zStack.length) { this.hide(); } else { var z = this.zStack[this.zStack.length-1]; this.setZIndex(z); } }, //* @protected // Set scrim to show at `inZIndex` setZIndex: function(inZIndex) { this.zIndex = inZIndex; this.applyStyle("z-index", inZIndex); }, make: function() { return this; } }); //* @protected // // Scrim singleton exposing a subset of Scrim API. // is replaced with a proper enyo.Scrim instance. // enyo.kind({ name: "onyx.scrimSingleton", kind: null, constructor: function(inName, inProps) { this.instanceName = inName; enyo.setObject(this.instanceName, this); this.props = inProps || {}; }, make: function() { var s = new onyx.Scrim(this.props); enyo.setObject(this.instanceName, s); return s; }, showAtZIndex: function(inZIndex) { var s = this.make(); s.showAtZIndex(inZIndex); }, // in case somebody does this out of order hideAtZIndex: enyo.nop, show: function() { var s = this.make(); s.show(); } }); new onyx.scrimSingleton("onyx.scrim", {floating: true, classes: "onyx-scrim-translucent"}); new onyx.scrimSingleton("onyx.scrimTransparent", {floating: true, classes: "onyx-scrim-transparent"});