]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dijit/_base/popup.js
Replace Dojo with jQuery
[eow] / static / dojo-release-1.1.1 / dijit / _base / popup.js
diff --git a/static/dojo-release-1.1.1/dijit/_base/popup.js b/static/dojo-release-1.1.1/dijit/_base/popup.js
deleted file mode 100644 (file)
index 6cb4dfc..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-if(!dojo._hasResource["dijit._base.popup"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._base.popup"] = true;
-dojo.provide("dijit._base.popup");
-
-dojo.require("dijit._base.focus");
-dojo.require("dijit._base.place");
-dojo.require("dijit._base.window");
-
-dijit.popup = new function(){
-       // summary:
-       //              This class is used to show/hide widgets as popups.
-       //
-
-       var stack = [],
-               beginZIndex=1000,
-               idGen = 1;
-
-       this.prepare = function(/*DomNode*/ node){
-               // summary:
-               //              Prepares a node to be used as a popup
-               //
-               // description:
-               //              Attaches node to dojo.doc.body, and
-               //              positions it off screen, but not display:none, so that
-               //              the widget doesn't appear in the page flow and/or cause a blank
-               //              area at the bottom of the viewport (making scrollbar longer), but
-               //              initialization of contained widgets works correctly
-       
-               dojo.body().appendChild(node);
-               var s = node.style;
-               if(s.display == "none"){
-                       s.display="";
-               }
-               s.visibility = "hidden";        // not needed for hiding, but used as flag that node is off-screen
-               s.position = "absolute";
-               s.top = "-9999px";
-       };
-
-       this.open = function(/*Object*/ args){
-               // summary:
-               //              Popup the widget at the specified position
-               //
-               // args: Object
-               //              popup: Widget
-               //                      widget to display,
-               //              parent: Widget
-               //                      the button etc. that is displaying this popup
-               //              around: DomNode
-               //                      DOM node (typically a button); place popup relative to this node
-               //              orient: Object
-               //                      structure specifying possible positions of popup relative to "around" node
-               //              onCancel: Function
-               //                      callback when user has canceled the popup by
-               //                              1. hitting ESC or
-               //                              2. by using the popup widget's proprietary cancel mechanism (like a cancel button in a dialog);
-               //                                 ie: whenever popupWidget.onCancel() is called, args.onCancel is called
-               //              onClose: Function
-               //                      callback whenever this popup is closed
-               //              onExecute: Function
-               //                      callback when user "executed" on the popup/sub-popup by selecting a menu choice, etc. (top menu only)
-               //
-               // examples:
-               //              1. opening at the mouse position
-               //                      dijit.popup.open({popup: menuWidget, x: evt.pageX, y: evt.pageY});
-               //              2. opening the widget as a dropdown
-               //                      dijit.popup.open({parent: this, popup: menuWidget, around: this.domNode, onClose: function(){...}  });
-               //
-               //      Note that whatever widget called dijit.popup.open() should also listen to it's own _onBlur callback
-               //      (fired from _base/focus.js) to know that focus has moved somewhere else and thus the popup should be closed.
-
-               var widget = args.popup,
-                       orient = args.orient || {'BL':'TL', 'TL':'BL'},
-                       around = args.around,
-                       id = (args.around && args.around.id) ? (args.around.id+"_dropdown") : ("popup_"+idGen++);
-
-               // make wrapper div to hold widget and possibly hold iframe behind it.
-               // we can't attach the iframe as a child of the widget.domNode because
-               // widget.domNode might be a <table>, <ul>, etc.
-               var wrapper = dojo.doc.createElement("div");
-               dijit.setWaiRole(wrapper, "presentation");
-               wrapper.id = id;
-               wrapper.className="dijitPopup";
-               wrapper.style.zIndex = beginZIndex + stack.length;
-               wrapper.style.visibility = "hidden";
-               if(args.parent){
-                       wrapper.dijitPopupParent=args.parent.id;
-               }
-               dojo.body().appendChild(wrapper);
-
-               var s = widget.domNode.style;
-               s.display = "";
-               s.visibility = "";
-               s.position = "";
-               wrapper.appendChild(widget.domNode);
-
-               var iframe = new dijit.BackgroundIframe(wrapper);
-
-               // position the wrapper node
-               var best = around ?
-                       dijit.placeOnScreenAroundElement(wrapper, around, orient, widget.orient ? dojo.hitch(widget, "orient") : null) :
-                       dijit.placeOnScreen(wrapper, args, orient == 'R' ? ['TR','BR','TL','BL'] : ['TL','BL','TR','BR']);
-
-               wrapper.style.visibility = "visible";
-               // TODO: use effects to fade in wrapper
-
-               var handlers = [];
-
-               // Compute the closest ancestor popup that's *not* a child of another popup.
-               // Ex: For a TooltipDialog with a button that spawns a tree of menus, find the popup of the button.
-               var getTopPopup = function(){
-                       for(var pi=stack.length-1; pi > 0 && stack[pi].parent === stack[pi-1].widget; pi--){
-                               /* do nothing, just trying to get right value for pi */
-                       }
-                       return stack[pi];
-               }
-
-               // provide default escape and tab key handling
-               // (this will work for any widget, not just menu)
-               handlers.push(dojo.connect(wrapper, "onkeypress", this, function(evt){
-                       if(evt.keyCode == dojo.keys.ESCAPE && args.onCancel){
-                               dojo.stopEvent(evt);
-                               args.onCancel();
-                       }else if(evt.keyCode == dojo.keys.TAB){
-                               dojo.stopEvent(evt);
-                               var topPopup = getTopPopup();
-                               if(topPopup && topPopup.onCancel){
-                                       topPopup.onCancel();
-                               }
-                       }
-               }));
-
-               // watch for cancel/execute events on the popup and notify the caller
-               // (for a menu, "execute" means clicking an item)
-               if(widget.onCancel){
-                       handlers.push(dojo.connect(widget, "onCancel", null, args.onCancel));
-               }
-
-               handlers.push(dojo.connect(widget, widget.onExecute ? "onExecute" : "onChange", null, function(){
-                       var topPopup = getTopPopup();
-                       if(topPopup && topPopup.onExecute){
-                               topPopup.onExecute();
-                       }
-               }));
-
-               stack.push({
-                       wrapper: wrapper,
-                       iframe: iframe,
-                       widget: widget,
-                       parent: args.parent,
-                       onExecute: args.onExecute,
-                       onCancel: args.onCancel,
-                       onClose: args.onClose,
-                       handlers: handlers
-               });
-
-               if(widget.onOpen){
-                       widget.onOpen(best);
-               }
-
-               return best;
-       };
-
-       this.close = function(/*Widget*/ popup){
-               // summary:
-               //              Close specified popup and any popups that it parented
-               while(dojo.some(stack, function(elem){return elem.widget == popup;})){
-                       var top = stack.pop(),
-                               wrapper = top.wrapper,
-                               iframe = top.iframe,
-                               widget = top.widget,
-                               onClose = top.onClose;
-       
-                       if(widget.onClose){
-                               widget.onClose();
-                       }
-                       dojo.forEach(top.handlers, dojo.disconnect);
-       
-                       // #2685: check if the widget still has a domNode so ContentPane can change its URL without getting an error
-                       if(!widget||!widget.domNode){ return; }
-                       
-                       this.prepare(widget.domNode);
-
-                       iframe.destroy();
-                       dojo._destroyElement(wrapper);
-       
-                       if(onClose){
-                               onClose();
-                       }
-               }
-       };
-}();
-
-dijit._frames = new function(){
-       // summary: cache of iframes
-       var queue = [];
-
-       this.pop = function(){
-               var iframe;
-               if(queue.length){
-                       iframe = queue.pop();
-                       iframe.style.display="";
-               }else{
-                       if(dojo.isIE){
-                               var html="<iframe src='javascript:\"\"'"
-                                       + " style='position: absolute; left: 0px; top: 0px;"
-                                       + "z-index: -1; filter:Alpha(Opacity=\"0\");'>";
-                               iframe = dojo.doc.createElement(html);
-                       }else{
-                               iframe = dojo.doc.createElement("iframe");
-                               iframe.src = 'javascript:""';
-                               iframe.className = "dijitBackgroundIframe";
-                       }
-                       iframe.tabIndex = -1; // Magic to prevent iframe from getting focus on tab keypress - as style didnt work.
-                       dojo.body().appendChild(iframe);
-               }
-               return iframe;
-       };
-
-       this.push = function(iframe){
-               iframe.style.display="";
-               if(dojo.isIE){
-                       iframe.style.removeExpression("width");
-                       iframe.style.removeExpression("height");
-               }
-               queue.push(iframe);
-       }
-}();
-
-// fill the queue
-if(dojo.isIE && dojo.isIE < 7){
-       dojo.addOnLoad(function(){
-               var f = dijit._frames;
-               dojo.forEach([f.pop()], f.push);
-       });
-}
-
-
-dijit.BackgroundIframe = function(/* DomNode */node){
-       //      summary:
-       //              For IE z-index schenanigans. id attribute is required.
-       //
-       //      description:
-       //              new dijit.BackgroundIframe(node)
-       //                      Makes a background iframe as a child of node, that fills
-       //                      area (and position) of node
-
-       if(!node.id){ throw new Error("no id"); }
-       if((dojo.isIE && dojo.isIE < 7) || (dojo.isFF && dojo.isFF < 3 && dojo.hasClass(dojo.body(), "dijit_a11y"))){
-               var iframe = dijit._frames.pop();
-               node.appendChild(iframe);
-               if(dojo.isIE){
-                       iframe.style.setExpression("width", dojo._scopeName + ".doc.getElementById('" + node.id + "').offsetWidth");
-                       iframe.style.setExpression("height", dojo._scopeName + ".doc.getElementById('" + node.id + "').offsetHeight");
-               }
-               this.iframe = iframe;
-       }
-};
-
-dojo.extend(dijit.BackgroundIframe, {
-       destroy: function(){
-               //      summary: destroy the iframe
-               if(this.iframe){
-                       dijit._frames.push(this.iframe);
-                       delete this.iframe;
-               }
-       }
-});
-
-}