]>
git.wh0rd.org - tt-rss.git/blob - lib/dijit/_HasDropDown.js
2 define("dijit/_HasDropDown",["dojo/_base/declare","dojo/_base/Deferred","dojo/_base/event","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/has","dojo/keys","dojo/_base/lang","dojo/touch","dojo/_base/window","dojo/window","./registry","./focus","./popup","./_FocusMixin"],function(_1
,_2
,_3
,_4
,_5
,_6
,_7
,_8
,_9
,_a
,_b
,_c
,_d
,_e
,_f
,_10
,_11
,_12
){return _1("dijit._HasDropDown",_12
,{_buttonNode
:null,_arrowWrapperNode
:null,_popupStateNode
:null,_aroundNode
:null,dropDown
:null,autoWidth
:true,forceWidth
:false,maxHeight
:0,dropDownPosition
:["below","above"],_stopClickEvents
:true,_onDropDownMouseDown:function(e
){if(this.disabled
||this.readOnly
){return;}e
.preventDefault();this._docHandler
=this.connect(_d
.doc
,_c
.release
,"_onDropDownMouseUp");this.toggleDropDown();},_onDropDownMouseUp:function(e
){if(e
&&this._docHandler
){this.disconnect(this._docHandler
);}var _13
=this.dropDown
,_14
=false;if(e
&&this._opened
){var c
=_7
.position(this._buttonNode
,true);if(!(e
.pageX
>=c
.x
&&e
.pageX
<=c
.x
+c
.w
)||!(e
.pageY
>=c
.y
&&e
.pageY
<=c
.y
+c
.h
)){var t
=e
.target
;while(t
&&!_14
){if(_6
.contains(t
,"dijitPopup")){_14
=true;}else{t
=t
.parentNode
;}}if(_14
){t
=e
.target
;if(_13
.onItemClick
){var _15
;while(t
&&!(_15
=_f
.byNode(t
))){t
=t
.parentNode
;}if(_15
&&_15
.onClick
&&_15
.getParent
){_15
.getParent().onItemClick(_15
,e
);}}return;}}}if(this._opened
){if(_13
.focus
&&_13
.autoFocus
!==false){window
.setTimeout(_b
.hitch(_13
,"focus"),1);}}else{setTimeout(_b
.hitch(this,"focus"),0);}if(_9("ios")){this._justGotMouseUp
=true;setTimeout(_b
.hitch(this,function(){this._justGotMouseUp
=false;}),0);}},_onDropDownClick:function(e
){if(_9("ios")&&!this._justGotMouseUp
){this._onDropDownMouseDown(e
);this._onDropDownMouseUp(e
);}if(this._stopClickEvents
){_3
.stop(e
);}},buildRendering:function(){this.inherited(arguments
);this._buttonNode
=this._buttonNode
||this.focusNode
||this.domNode
;this._popupStateNode
=this._popupStateNode
||this.focusNode
||this._buttonNode
;var _16
={"after":this.isLeftToRight()?"Right":"Left","before":this.isLeftToRight()?"Left":"Right","above":"Up","below":"Down","left":"Left","right":"Right"}[this.dropDownPosition
[0]]||this.dropDownPosition
[0]||"Down";_6
.add(this._arrowWrapperNode
||this._buttonNode
,"dijit"+_16
+"ArrowButton");},postCreate:function(){this.inherited(arguments
);this.connect(this._buttonNode
,_c
.press
,"_onDropDownMouseDown");this.connect(this._buttonNode
,"onclick","_onDropDownClick");this.connect(this.focusNode
,"onkeypress","_onKey");this.connect(this.focusNode
,"onkeyup","_onKeyUp");},destroy:function(){if(this.dropDown
){if(!this.dropDown
._destroyed
){this.dropDown
.destroyRecursive();}delete this.dropDown
;}this.inherited(arguments
);},_onKey:function(e
){if(this.disabled
||this.readOnly
){return;}var d
=this.dropDown
,_17
=e
.target
;if(d
&&this._opened
&&d
.handleKey
){if(d
.handleKey(e
)===false){_3
.stop(e
);return;}}if(d
&&this._opened
&&e
.charOrCode
==_a
.ESCAPE
){this.closeDropDown();_3
.stop(e
);}else{if(!this._opened
&&(e
.charOrCode
==_a
.DOWN_ARROW
||((e
.charOrCode
==_a
.ENTER
||e
.charOrCode
==" ")&&((_17
.tagName
||"").toLowerCase()!=="input"||(_17
.type
&&_17
.type
.toLowerCase()!=="text"))))){this._toggleOnKeyUp
=true;_3
.stop(e
);}}},_onKeyUp:function(){if(this._toggleOnKeyUp
){delete this._toggleOnKeyUp
;this.toggleDropDown();var d
=this.dropDown
;if(d
&&d
.focus
){setTimeout(_b
.hitch(d
,"focus"),1);}}},_onBlur:function(){var _18
=_10
.curNode
&&this.dropDown
&&_4
.isDescendant(_10
.curNode
,this.dropDown
.domNode
);this.closeDropDown(_18
);this.inherited(arguments
);},isLoaded:function(){return true;},loadDropDown:function(_19
){_19();},loadAndOpenDropDown:function(){var d
=new _2(),_1a
=_b
.hitch(this,function(){this.openDropDown();d
.resolve(this.dropDown
);});if(!this.isLoaded()){this.loadDropDown(_1a
);}else{_1a();}return d
;},toggleDropDown:function(){if(this.disabled
||this.readOnly
){return;}if(!this._opened
){this.loadAndOpenDropDown();}else{this.closeDropDown();}},openDropDown:function(){var _1b
=this.dropDown
,_1c
=_1b
.domNode
,_1d
=this._aroundNode
||this.domNode
,_1e
=this;if(!this._preparedNode
){this._preparedNode
=true;if(_1c
.style
.width
){this._explicitDDWidth
=true;}if(_1c
.style
.height
){this._explicitDDHeight
=true;}}if(this.maxHeight
||this.forceWidth
||this.autoWidth
){var _1f
={display
:"",visibility
:"hidden"};if(!this._explicitDDWidth
){_1f
.width
="";}if(!this._explicitDDHeight
){_1f
.height
="";}_8
.set(_1c
,_1f
);var _20
=this.maxHeight
;if(_20
==-1){var _21
=_e
.getBox(),_22
=_7
.position(_1d
,false);_20
=Math
.floor(Math
.max(_22
.y
,_21
.h
-(_22
.y
+_22
.h
)));}_11
.moveOffScreen(_1b
);if(_1b
.startup
&&!_1b
._started
){_1b
.startup();}var mb
=_7
.getMarginSize(_1c
);var _23
=(_20
&&mb
.h
>_20
);_8
.set(_1c
,{overflowX
:"hidden",overflowY
:_23
?"auto":"hidden"});if(_23
){mb
.h
=_20
;if("w" in mb
){mb
.w
+=16;}}else{delete mb
.h
;}if(this.forceWidth
){mb
.w
=_1d
.offsetWidth
;}else{if(this.autoWidth
){mb
.w
=Math
.max(mb
.w
,_1d
.offsetWidth
);}else{delete mb
.w
;}}if(_b
.isFunction(_1b
.resize
)){_1b
.resize(mb
);}else{_7
.setMarginBox(_1c
,mb
);}}var _24
=_11
.open({parent
:this,popup
:_1b
,around
:_1d
,orient
:this.dropDownPosition
,onExecute:function(){_1e
.closeDropDown(true);},onCancel:function(){_1e
.closeDropDown(true);},onClose:function(){_5
.set(_1e
._popupStateNode
,"popupActive",false);_6
.remove(_1e
._popupStateNode
,"dijitHasDropDownOpen");_1e
._opened
=false;}});_5
.set(this._popupStateNode
,"popupActive","true");_6
.add(_1e
._popupStateNode
,"dijitHasDropDownOpen");this._opened
=true;return _24
;},closeDropDown:function(_25
){if(this._opened
){if(_25
){this.focus();}_11
.close(this.dropDown
);this._opened
=false;}}});});