require({cache:{
'url:dijit/form/templates/DropDownButton.html':"▼\n"}});
define("dijit/form/DropDownButton", [
"dojo/_base/declare", // declare
"dojo/_base/kernel",
"dojo/_base/lang", // hitch
"dojo/query", // query
"../registry", // registry.byNode
"../popup", // dijit.popup2.hide
"./Button",
"../_Container",
"../_HasDropDown",
"dojo/text!./templates/DropDownButton.html",
"../a11yclick" // template uses ondijitclick
], function(declare, kernel, lang, query, registry, popup, Button, _Container, _HasDropDown, template){
// module:
// dijit/form/DropDownButton
return declare("dijit.form.DropDownButton", [Button, _Container, _HasDropDown], {
// summary:
// A button with a drop down
//
// example:
// |
//
// example:
// | var button1 = new DropDownButton({ label: "hi", dropDown: new dijit.Menu(...) });
// | win.body().appendChild(button1);
//
baseClass: "dijitDropDownButton",
templateString: template,
_fillContent: function(){
// Overrides _TemplatedMixin#_fillContent().
// My inner HTML possibly contains both the button label and/or a drop down widget, like
// push me
var source = this.srcNodeRef;
var dest = this.containerNode;
if(source && dest){
while(source.hasChildNodes()){
var child = source.firstChild;
if(child.hasAttribute && (child.hasAttribute("data-dojo-type") || child.hasAttribute("dojoType") ||
child.hasAttribute("data-" + kernel._scopeName + "-type") ||
child.hasAttribute(kernel._scopeName + "Type"))){
// The parser hasn't gotten to this node yet, so save it in a wrapper
// and then grab the instantiated widget in startup().
this.dropDownContainer = this.ownerDocument.createElement("div");
this.dropDownContainer.appendChild(child);
}else{
dest.appendChild(child);
}
}
}
},
startup: function(){
if(this._started){
return;
}
// the child widget from srcNodeRef is the dropdown widget. Insert it in the page DOM,
// make it invisible, and store a reference to pass to the popup code.
if(!this.dropDown && this.dropDownContainer){
this.dropDown = registry.byNode(this.dropDownContainer.firstChild);
delete this.dropDownContainer;
}
if(this.dropDown){
popup.hide(this.dropDown);
}
this.inherited(arguments);
},
isLoaded: function(){
// Returns whether or not we are loaded - if our dropdown has an href,
// then we want to check that.
var dropDown = this.dropDown;
return (!!dropDown && (!dropDown.href || dropDown.isLoaded));
},
loadDropDown: function(/*Function*/ callback){
// Default implementation assumes that drop down already exists,
// but hasn't loaded it's data (ex: ContentPane w/href).
// App must override if the drop down is lazy-created.
var dropDown = this.dropDown;
var handler = dropDown.on("load", lang.hitch(this, function(){
handler.remove();
callback();
}));
dropDown.refresh(); // tell it to load
},
isFocusable: function(){
// Overridden so that focus is handled by the _HasDropDown mixin, not by
// the _FormWidget mixin.
return this.inherited(arguments) && !this._mouseDown;
}
});
});