//>>built 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/on","./registry","./focus","./popup","./_FocusMixin","./Viewport"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,on,_c,_d,_e,_f,_10){ return _1("dijit._HasDropDown",_f,{_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; } if(e.type!="MSPointerDown"){ e.preventDefault(); } this._docHandler=this.connect(this.ownerDocument,"mouseup","_onDropDownMouseUp"); this.toggleDropDown(); },_onDropDownMouseUp:function(e){ if(e&&this._docHandler){ this.disconnect(this._docHandler); } var _11=this.dropDown,_12=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&&!_12){ if(_6.contains(t,"dijitPopup")){ _12=true; }else{ t=t.parentNode; } } if(_12){ t=e.target; if(_11.onItemClick){ var _13; while(t&&!(_13=_c.byNode(t))){ t=t.parentNode; } if(_13&&_13.onClick&&_13.getParent){ _13.getParent().onItemClick(_13,e); } } return; } } } if(this._opened){ if(_11.focus&&(_11.autoFocus!==false||(e.type=="mouseup"&&!this.hovering))){ this._focusDropDownTimer=this.defer(function(){ _11.focus(); delete this._focusDropDownTimer; }); } }else{ if(this.focus){ this.defer("focus"); } } if(_9("touch")){ this._justGotMouseUp=true; this.defer(function(){ this._justGotMouseUp=false; }); } },_onDropDownClick:function(e){ if(_9("touch")&&!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 _14={"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"+_14+"ArrowButton"); },postCreate:function(){ this.inherited(arguments); var _15=this.focusNode||this.domNode; this.own(on(this._buttonNode,"mousedown",_b.hitch(this,"_onDropDownMouseDown")),on(this._buttonNode,"click",_b.hitch(this,"_onDropDownClick")),on(_15,"keydown",_b.hitch(this,"_onKey")),on(_15,"keyup",_b.hitch(this,"_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,_16=e.target; if(d&&this._opened&&d.handleKey){ if(d.handleKey(e)===false){ _3.stop(e); return; } } if(d&&this._opened&&e.keyCode==_a.ESCAPE){ this.closeDropDown(); _3.stop(e); }else{ if(!this._opened&&(e.keyCode==_a.DOWN_ARROW||((e.keyCode==_a.ENTER||e.keyCode==_a.SPACE)&&((_16.tagName||"").toLowerCase()!=="input"||(_16.type&&_16.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){ this.defer(_b.hitch(d,"focus"),1); } } },_onBlur:function(){ var _17=_d.curNode&&this.dropDown&&_4.isDescendant(_d.curNode,this.dropDown.domNode); this.closeDropDown(_17); this.inherited(arguments); },isLoaded:function(){ return true; },loadDropDown:function(_18){ _18(); },loadAndOpenDropDown:function(){ var d=new _2(),_19=_b.hitch(this,function(){ this.openDropDown(); d.resolve(this.dropDown); }); if(!this.isLoaded()){ this.loadDropDown(_19); }else{ _19(); } return d; },toggleDropDown:function(){ if(this.disabled||this.readOnly){ return; } if(!this._opened){ this.loadAndOpenDropDown(); }else{ this.closeDropDown(); } },openDropDown:function(){ var _1a=this.dropDown,_1b=_1a.domNode,_1c=this._aroundNode||this.domNode,_1d=this; if(!this._preparedNode){ this._preparedNode=true; if(_1b.style.width){ this._explicitDDWidth=true; } if(_1b.style.height){ this._explicitDDHeight=true; } } if(this.maxHeight||this.forceWidth||this.autoWidth){ var _1e={display:"",visibility:"hidden"}; if(!this._explicitDDWidth){ _1e.width=""; } if(!this._explicitDDHeight){ _1e.height=""; } _8.set(_1b,_1e); var _1f=this.maxHeight; if(_1f==-1){ var _20=_10.getEffectiveBox(this.ownerDocument),_21=_7.position(_1c,false); _1f=Math.floor(Math.max(_21.y,_20.h-(_21.y+_21.h))); } _e.moveOffScreen(_1a); if(_1a.startup&&!_1a._started){ _1a.startup(); } var mb=_7.getMarginSize(_1b); var _22=(_1f&&mb.h>_1f); _8.set(_1b,{overflow:_22?"auto":"visible"}); if(_22){ mb.h=_1f; if("w" in mb){ mb.w+=16; } }else{ delete mb.h; } if(this.forceWidth){ mb.w=_1c.offsetWidth; }else{ if(this.autoWidth){ mb.w=Math.max(mb.w,_1c.offsetWidth); }else{ delete mb.w; } } if(_b.isFunction(_1a.resize)){ _1a.resize(mb); }else{ _7.setMarginBox(_1b,mb); } } var _23=_e.open({parent:this,popup:_1a,around:_1c,orient:this.dropDownPosition,onExecute:function(){ _1d.closeDropDown(true); },onCancel:function(){ _1d.closeDropDown(true); },onClose:function(){ _5.set(_1d._popupStateNode,"popupActive",false); _6.remove(_1d._popupStateNode,"dijitHasDropDownOpen"); _1d._set("_opened",false); }}); _5.set(this._popupStateNode,"popupActive","true"); _6.add(this._popupStateNode,"dijitHasDropDownOpen"); this._set("_opened",true); this._popupStateNode.setAttribute("aria-expanded","true"); this._popupStateNode.setAttribute("aria-owns",_1a.id); if(_1b.getAttribute("role")!=="presentation"&&!_1b.getAttribute("aria-labelledby")){ _1b.setAttribute("aria-labelledby",this.id); } return _23; },closeDropDown:function(_24){ if(this._focusDropDownTimer){ this._focusDropDownTimer.remove(); delete this._focusDropDownTimer; } if(this._opened){ this._popupStateNode.setAttribute("aria-expanded","false"); if(_24){ this.focus(); } _e.close(this.dropDown); this._opened=false; } }}); });