]> git.wh0rd.org - tt-rss.git/blob - lib/dijit/form/DropDownButton.js.uncompressed.js
update dojo to 1.7.3
[tt-rss.git] / lib / dijit / form / DropDownButton.js.uncompressed.js
1 require({cache:{
2 'url:dijit/form/templates/DropDownButton.html':"<span class=\"dijit dijitReset dijitInline\"\n\t><span class='dijitReset dijitInline dijitButtonNode'\n\t\tdata-dojo-attach-event=\"ondijitclick:_onClick\" data-dojo-attach-point=\"_buttonNode\"\n\t\t><span class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"focusNode,titleNode,_arrowWrapperNode\"\n\t\t\trole=\"button\" aria-haspopup=\"true\" aria-labelledby=\"${id}_label\"\n\t\t\t><span class=\"dijitReset dijitInline dijitIcon\"\n\t\t\t\tdata-dojo-attach-point=\"iconNode\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\tdata-dojo-attach-point=\"containerNode,_popupStateNode\"\n\t\t\t\tid=\"${id}_label\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonInner\"></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonChar\">&#9660;</span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" class=\"dijitOffScreen\" tabIndex=\"-1\"\n\t\tdata-dojo-attach-point=\"valueNode\"\n/></span>\n"}});
3 define("dijit/form/DropDownButton", [
4 "dojo/_base/declare", // declare
5 "dojo/_base/lang", // hitch
6 "dojo/query", // query
7 "../registry", // registry.byNode
8 "../popup", // dijit.popup2.hide
9 "./Button",
10 "../_Container",
11 "../_HasDropDown",
12 "dojo/text!./templates/DropDownButton.html"
13 ], function(declare, lang, query, registry, popup, Button, _Container, _HasDropDown, template){
14
15 /*=====
16 Button = dijit.form.Button;
17 _Container = dijit._Container;
18 _HasDropDown = dijit._HasDropDown;
19 =====*/
20
21 // module:
22 // dijit/form/DropDownButton
23 // summary:
24 // A button with a drop down
25
26
27 return declare("dijit.form.DropDownButton", [Button, _Container, _HasDropDown], {
28 // summary:
29 // A button with a drop down
30 //
31 // example:
32 // | <button data-dojo-type="dijit.form.DropDownButton">
33 // | Hello world
34 // | <div data-dojo-type="dijit.Menu">...</div>
35 // | </button>
36 //
37 // example:
38 // | var button1 = new dijit.form.DropDownButton({ label: "hi", dropDown: new dijit.Menu(...) });
39 // | win.body().appendChild(button1);
40 //
41
42 baseClass : "dijitDropDownButton",
43
44 templateString: template,
45
46 _fillContent: function(){
47 // Overrides Button._fillContent().
48 //
49 // My inner HTML contains both the button contents and a drop down widget, like
50 // <DropDownButton> <span>push me</span> <Menu> ... </Menu> </DropDownButton>
51 // The first node is assumed to be the button content. The widget is the popup.
52
53 if(this.srcNodeRef){ // programatically created buttons might not define srcNodeRef
54 //FIXME: figure out how to filter out the widget and use all remaining nodes as button
55 // content, not just nodes[0]
56 var nodes = query("*", this.srcNodeRef);
57 this.inherited(arguments, [nodes[0]]);
58
59 // save pointer to srcNode so we can grab the drop down widget after it's instantiated
60 this.dropDownContainer = this.srcNodeRef;
61 }
62 },
63
64 startup: function(){
65 if(this._started){ return; }
66
67 // the child widget from srcNodeRef is the dropdown widget. Insert it in the page DOM,
68 // make it invisible, and store a reference to pass to the popup code.
69 if(!this.dropDown && this.dropDownContainer){
70 var dropDownNode = query("[widgetId]", this.dropDownContainer)[0];
71 this.dropDown = registry.byNode(dropDownNode);
72 delete this.dropDownContainer;
73 }
74 if(this.dropDown){
75 popup.hide(this.dropDown);
76 }
77
78 this.inherited(arguments);
79 },
80
81 isLoaded: function(){
82 // Returns whether or not we are loaded - if our dropdown has an href,
83 // then we want to check that.
84 var dropDown = this.dropDown;
85 return (!!dropDown && (!dropDown.href || dropDown.isLoaded));
86 },
87
88 loadDropDown: function(/*Function*/ callback){
89 // Default implementation assumes that drop down already exists,
90 // but hasn't loaded it's data (ex: ContentPane w/href).
91 // App must override if the drop down is lazy-created.
92 var dropDown = this.dropDown;
93 var handler = dropDown.on("load", lang.hitch(this, function(){
94 handler.remove();
95 callback();
96 }));
97 dropDown.refresh(); // tell it to load
98 },
99
100 isFocusable: function(){
101 // Overridden so that focus is handled by the _HasDropDown mixin, not by
102 // the _FormWidget mixin.
103 return this.inherited(arguments) && !this._mouseDown;
104 }
105 });
106
107 });