2 lines
4.1 KiB
JavaScript
2 lines
4.1 KiB
JavaScript
//>>built
|
|
define("dijit/focus",["dojo/aspect","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-construct","dojo/Evented","dojo/_base/lang","dojo/on","dojo/ready","dojo/_base/sniff","dojo/Stateful","dojo/_base/unload","dojo/_base/window","dojo/window","./a11y","./registry","."],function(_1,_2,_3,_4,_5,_6,_7,on,_8,_9,_a,_b,_c,_d,_e,_f,_10){var _11=_2([_a,_6],{curNode:null,activeStack:[],constructor:function(){var _12=_7.hitch(this,function(_13){if(_3.isDescendant(this.curNode,_13)){this.set("curNode",null);}if(_3.isDescendant(this.prevNode,_13)){this.set("prevNode",null);}});_1.before(_5,"empty",_12);_1.before(_5,"destroy",_12);},registerIframe:function(_14){return this.registerWin(_14.contentWindow,_14);},registerWin:function(_15,_16){var _17=this;var _18=function(evt){_17._justMouseDowned=true;setTimeout(function(){_17._justMouseDowned=false;},0);if(_9("ie")&&evt&&evt.srcElement&&evt.srcElement.parentNode==null){return;}_17._onTouchNode(_16||evt.target||evt.srcElement,"mouse");};var doc=_9("ie")?_15.document.documentElement:_15.document;if(doc){if(_9("ie")){_15.document.body.attachEvent("onmousedown",_18);var _19=function(evt){var tag=evt.srcElement.tagName.toLowerCase();if(tag=="#document"||tag=="body"){return;}if(_e.isTabNavigable(evt.srcElement)){_17._onFocusNode(_16||evt.srcElement);}else{_17._onTouchNode(_16||evt.srcElement);}};doc.attachEvent("onactivate",_19);var _1a=function(evt){_17._onBlurNode(_16||evt.srcElement);};doc.attachEvent("ondeactivate",_1a);return {remove:function(){_15.document.detachEvent("onmousedown",_18);doc.detachEvent("onactivate",_19);doc.detachEvent("ondeactivate",_1a);doc=null;}};}else{doc.body.addEventListener("mousedown",_18,true);doc.body.addEventListener("touchstart",_18,true);var _1b=function(evt){_17._onFocusNode(_16||evt.target);};doc.addEventListener("focus",_1b,true);var _1c=function(evt){_17._onBlurNode(_16||evt.target);};doc.addEventListener("blur",_1c,true);return {remove:function(){doc.body.removeEventListener("mousedown",_18,true);doc.body.removeEventListener("touchstart",_18,true);doc.removeEventListener("focus",_1b,true);doc.removeEventListener("blur",_1c,true);doc=null;}};}}},_onBlurNode:function(){this.set("prevNode",this.curNode);this.set("curNode",null);if(this._justMouseDowned){return;}if(this._clearActiveWidgetsTimer){clearTimeout(this._clearActiveWidgetsTimer);}this._clearActiveWidgetsTimer=setTimeout(_7.hitch(this,function(){delete this._clearActiveWidgetsTimer;this._setStack([]);this.prevNode=null;}),100);},_onTouchNode:function(_1d,by){if(this._clearActiveWidgetsTimer){clearTimeout(this._clearActiveWidgetsTimer);delete this._clearActiveWidgetsTimer;}var _1e=[];try{while(_1d){var _1f=_4.get(_1d,"dijitPopupParent");if(_1f){_1d=_f.byId(_1f).domNode;}else{if(_1d.tagName&&_1d.tagName.toLowerCase()=="body"){if(_1d===_c.body()){break;}_1d=_d.get(_1d.ownerDocument).frameElement;}else{var id=_1d.getAttribute&&_1d.getAttribute("widgetId"),_20=id&&_f.byId(id);if(_20&&!(by=="mouse"&&_20.get("disabled"))){_1e.unshift(id);}_1d=_1d.parentNode;}}}}catch(e){}this._setStack(_1e,by);},_onFocusNode:function(_21){if(!_21){return;}if(_21.nodeType==9){return;}this._onTouchNode(_21);if(_21==this.curNode){return;}this.set("curNode",_21);},_setStack:function(_22,by){var _23=this.activeStack;this.set("activeStack",_22);for(var _24=0;_24<Math.min(_23.length,_22.length);_24++){if(_23[_24]!=_22[_24]){break;}}var _25;for(var i=_23.length-1;i>=_24;i--){_25=_f.byId(_23[i]);if(_25){_25._hasBeenBlurred=true;_25.set("focused",false);if(_25._focusManager==this){_25._onBlur(by);}this.emit("widget-blur",_25,by);}}for(i=_24;i<_22.length;i++){_25=_f.byId(_22[i]);if(_25){_25.set("focused",true);if(_25._focusManager==this){_25._onFocus(by);}this.emit("widget-focus",_25,by);}}},focus:function(_26){if(_26){try{_26.focus();}catch(e){}}}});var _27=new _11();_8(function(){var _28=_27.registerWin(_c.doc.parentWindow||_c.doc.defaultView);if(_9("ie")){_b.addOnWindowUnload(function(){_28.remove();_28=null;});}});_10.focus=function(_29){_27.focus(_29);};for(var _2a in _27){if(!/^_/.test(_2a)){_10.focus[_2a]=typeof _27[_2a]=="function"?_7.hitch(_27,_2a):_27[_2a];}}_27.watch(function(_2b,_2c,_2d){_10.focus[_2b]=_2d;});return _27;}); |