summaryrefslogtreecommitdiff
path: root/lib/dijit/DialogUnderlay.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dijit/DialogUnderlay.js')
-rw-r--r--lib/dijit/DialogUnderlay.js132
1 files changed, 101 insertions, 31 deletions
diff --git a/lib/dijit/DialogUnderlay.js b/lib/dijit/DialogUnderlay.js
index 0056462a5..72557800d 100644
--- a/lib/dijit/DialogUnderlay.js
+++ b/lib/dijit/DialogUnderlay.js
@@ -1,42 +1,112 @@
/*
- Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
+ Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
-if(!dojo._hasResource["dijit.DialogUnderlay"]){
-dojo._hasResource["dijit.DialogUnderlay"]=true;
+if(!dojo._hasResource["dijit.DialogUnderlay"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.DialogUnderlay"] = true;
dojo.provide("dijit.DialogUnderlay");
dojo.require("dojo.window");
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
-dojo.declare("dijit.DialogUnderlay",[dijit._Widget,dijit._Templated],{templateString:"<div class='dijitDialogUnderlayWrapper'><div class='dijitDialogUnderlay' dojoAttachPoint='node'></div></div>",dialogId:"","class":"",attributeMap:{id:"domNode"},_setDialogIdAttr:function(id){
-dojo.attr(this.node,"id",id+"_underlay");
-},_setClassAttr:function(_1){
-this.node.className="dijitDialogUnderlay "+_1;
-},postCreate:function(){
-dojo.body().appendChild(this.domNode);
-},layout:function(){
-var is=this.node.style,os=this.domNode.style;
-os.display="none";
-var _2=dojo.window.getBox();
-os.top=_2.t+"px";
-os.left=_2.l+"px";
-is.width=_2.w+"px";
-is.height=_2.h+"px";
-os.display="block";
-},show:function(){
-this.domNode.style.display="block";
-this.layout();
-this.bgIframe=new dijit.BackgroundIframe(this.domNode);
-},hide:function(){
-this.bgIframe.destroy();
-this.domNode.style.display="none";
-},uninitialize:function(){
-if(this.bgIframe){
-this.bgIframe.destroy();
-}
-this.inherited(arguments);
-}});
+
+
+dojo.declare(
+ "dijit.DialogUnderlay",
+ [dijit._Widget, dijit._Templated],
+ {
+ // summary:
+ // The component that blocks the screen behind a `dijit.Dialog`
+ //
+ // description:
+ // A component used to block input behind a `dijit.Dialog`. Only a single
+ // instance of this widget is created by `dijit.Dialog`, and saved as
+ // a reference to be shared between all Dialogs as `dijit._underlay`
+ //
+ // The underlay itself can be styled based on and id:
+ // | #myDialog_underlay { background-color:red; }
+ //
+ // In the case of `dijit.Dialog`, this id is based on the id of the Dialog,
+ // suffixed with _underlay.
+
+ // Template has two divs; outer div is used for fade-in/fade-out, and also to hold background iframe.
+ // Inner div has opacity specified in CSS file.
+ templateString: "<div class='dijitDialogUnderlayWrapper'><div class='dijitDialogUnderlay' dojoAttachPoint='node'></div></div>",
+
+ // Parameters on creation or updatable later
+
+ // dialogId: String
+ // Id of the dialog.... DialogUnderlay's id is based on this id
+ dialogId: "",
+
+ // class: String
+ // This class name is used on the DialogUnderlay node, in addition to dijitDialogUnderlay
+ "class": "",
+
+ attributeMap: { id: "domNode" },
+
+ _setDialogIdAttr: function(id){
+ dojo.attr(this.node, "id", id + "_underlay");
+ this._set("dialogId", id);
+ },
+
+ _setClassAttr: function(clazz){
+ this.node.className = "dijitDialogUnderlay " + clazz;
+ this._set("class", clazz);
+ },
+
+ postCreate: function(){
+ // summary:
+ // Append the underlay to the body
+ dojo.body().appendChild(this.domNode);
+ },
+
+ layout: function(){
+ // summary:
+ // Sets the background to the size of the viewport
+ //
+ // description:
+ // Sets the background to the size of the viewport (rather than the size
+ // of the document) since we need to cover the whole browser window, even
+ // if the document is only a few lines long.
+ // tags:
+ // private
+
+ var is = this.node.style,
+ os = this.domNode.style;
+
+ // hide the background temporarily, so that the background itself isn't
+ // causing scrollbars to appear (might happen when user shrinks browser
+ // window and then we are called to resize)
+ os.display = "none";
+
+ // then resize and show
+ var viewport = dojo.window.getBox();
+ os.top = viewport.t + "px";
+ os.left = viewport.l + "px";
+ is.width = viewport.w + "px";
+ is.height = viewport.h + "px";
+ os.display = "block";
+ },
+
+ show: function(){
+ // summary:
+ // Show the dialog underlay
+ this.domNode.style.display = "block";
+ this.layout();
+ this.bgIframe = new dijit.BackgroundIframe(this.domNode);
+ },
+
+ hide: function(){
+ // summary:
+ // Hides the dialog underlay
+ this.bgIframe.destroy();
+ delete this.bgIframe;
+ this.domNode.style.display = "none";
+ }
+ }
+);
+
}