dijit
Version:
Dijit provides a complete collection of user interface controls based on Dojo, giving you the power to create web applications that are highly optimized for usability, performance, internationalization, accessibility, but above all deliver an incredible u
59 lines (51 loc) • 1.79 kB
JavaScript
define([
"dojo/dom-class", // domClass.contains
"dojo/_base/window",
"../popup",
"../BackgroundIframe" // just loading for back-compat, in case client code is referencing it
], function(domClass, win, popup){
// module:
// dijit/_base/popup
/*=====
return {
// summary:
// Deprecated. Old module for popups, new code should use dijit/popup directly.
};
=====*/
// Hack support for old API passing in node instead of a widget (to various methods)
var origCreateWrapper = popup._createWrapper;
popup._createWrapper = function(widget){
if(!widget.declaredClass){
// make fake widget to pass to new API
widget = {
_popupWrapper: (widget.parentNode && domClass.contains(widget.parentNode, "dijitPopup")) ?
widget.parentNode : null,
domNode: widget,
destroy: function(){},
ownerDocument: widget.ownerDocument,
ownerDocumentBody: win.body(widget.ownerDocument)
};
}
return origCreateWrapper.call(this, widget);
};
// Support old format of orient parameter
var origOpen = popup.open;
popup.open = function(/*__OpenArgs*/ args){
// Convert old hash structure (ex: {"BL": "TL", ...}) of orient to format compatible w/new popup.open() API.
// Don't do conversion for:
// - null parameter (that means to use the default positioning)
// - "R" or "L" strings used to indicate positioning for context menus (when there is no around node)
// - new format, ex: ["below", "above"]
// - return value from deprecated dijit.getPopupAroundAlignment() method,
// ex: ["below", "above"]
if(args.orient && typeof args.orient != "string" && !("length" in args.orient)){
var ary = [];
for(var key in args.orient){
ary.push({aroundCorner: key, corner: args.orient[key]});
}
args.orient = ary;
}
return origOpen.call(this, args);
};
return popup;
});