8 lines
13 KiB
JavaScript
8 lines
13 KiB
JavaScript
|
|
/*
|
||
|
|
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
|
||
|
|
Code licensed under the BSD License:
|
||
|
|
http://developer.yahoo.net/yui/license.txt
|
||
|
|
version: 3.0.0
|
||
|
|
build: 1549
|
||
|
|
*/
|
||
|
|
YUI.add("node-menunav",function(D){var m=D.UA,t=D.later,AL=D.ClassNameManager.getClassName,R="menu",G="menuitem",AH="hidden",S="parentNode",V="children",z="offsetHeight",AC="offsetWidth",AN="px",g="id",I=".",E="handledMouseOut",r="handledMouseOver",a="active",AJ="label",d="a",w="mousedown",AO="keydown",AB="click",Q="",U="first-of-type",AP="role",N="presentation",AD="descendants",j="UI",u="activeDescendant",J="useARIA",x="aria-hidden",y="content",c="host",h=u+"Change",AM=">.yui-menu-content>ul>li>a",O=">.yui-menu-content>ul>li>.yui-menu-label>a:first-child",v="autoSubmenuDisplay",T="mouseOutHideDelay",l=AL(R),AF=AL(R,AH),Z=AL(R,"horizontal"),AI=AL(R,AJ),k=AL(R,AJ,a),X=AL(R,AJ,(R+"visible")),K=AL(G),A=AL(G,a),i=I+l,AG=(I+AL(R,"toggle"));var L=function(Y){var AR=Y.previous(),AQ;if(!AR){AQ=Y.get(S).get(V);AR=AQ.item(AQ.size()-1);}return AR;};var b=function(Y){var AQ=Y.next();if(!AQ){AQ=Y.get(S).get(V).item(0);}return AQ;};var F=function(Y){var AQ=false;if(Y){AQ=Y.get("nodeName").toLowerCase()===d;}return AQ;};var P=function(Y){return Y.hasClass(K);};var s=function(Y){return Y.hasClass(AI);};var q=function(Y){return Y.hasClass(Z);};var n=function(Y){return Y.hasClass(X);};var p=function(Y){return F(Y)?Y:Y.one(d);};var AA=function(AR,AQ,Y){var AS;if(AR){if(AR.hasClass(AQ)){AS=AR;}if(!AS&&Y){AS=AR.ancestor((I+AQ));}}return AS;};var M=function(Y){return Y.ancestor(i);};var W=function(AQ,Y){return AA(AQ,l,Y);};var AE=function(AQ,Y){var AR;if(AQ){AR=AA(AQ,K,Y);}return AR;};var o=function(AQ,Y){var AR;if(AQ){if(Y){AR=AA(AQ,AI,Y);}else{AR=AA(AQ,AI)||AQ.one((I+AI));}}return AR;};var B=function(AQ,Y){var AR;if(AQ){AR=AE(AQ,Y)||o(AQ,Y);}return AR;};var C=function(Y){return B(Y.one("li"));};var f=function(Y){return P(Y)?A:k;};var e=function(Y,AQ){return Y&&!Y[r]&&(Y.compareTo(AQ)||Y.contains(AQ));};var H=function(AQ,Y){return AQ&&!AQ[E]&&(!AQ.compareTo(Y)&&!AQ.contains(Y));};var AK=function(){AK.superclass.constructor.apply(this,arguments);};AK.NAME="nodeMenuNav";AK.NS="menuNav";AK.SHIM_TEMPLATE_TITLE="Menu Stacking Shim";AK.SHIM_TEMPLATE='<iframe frameborder="0" tabindex="-1" class="'+AL("shim")+'" title="'+AK.SHIM_TEMPLATE_TITLE+'" src="javascript:false;"></iframe>';AK.ATTRS={useARIA:{value:true,writeOnce:true,lazyAdd:false,setter:function(AT){var AQ=this.get(c),AU,Y,AS,AR;if(AT){AQ.set(AP,R);AQ.all("ul,li,."+AL(R,y)).set(AP,N);AQ.all((I+AL(G,y))).set(AP,G);AQ.all((I+AI)).each(function(AV){AU=AV;Y=AV.one(AG);if(Y){Y.set(AP,N);AU=Y.previous();}AU.set(AP,G);AU.set("aria-haspopup",true);AS=AV.next();if(AS){AS.set(AP,R);AU=AS.previous();Y=AU.one(AG);if(Y){AU=Y;}AR=D.stamp(AU);if(!AU.get(g)){AU.set(g,AR);}AS.set("aria-labelledby",AR);AS.set(x,true);}});}}},autoSubmenuDisplay:{value:true,writeOnce:true},submenuShowDelay:{value:250,writeOnce:true},submenuHideDelay:{value:250,writeOnce:true},mouseOutHideDelay:{value:750,writeOnce:true}};D.extend(AK,D.Plugin.Base,{_rootMenu:null,_activeItem:null,_activeMenu:null,_hasFocus:false,_blockMouseEvent:false,_currentMouseX:0,_movingToSubmenu:false,_showSubmenuTimer:null,_hideSubmenuTimer:null,_hideAllSubmenusTimer:null,_firstItem:null,initializer:function(AR){var AS=this,AT=this.get(c),AQ=[],Y;if(AT){AS._rootMenu=AT;AT.all("ul:first-child").addClass(U);AT.all(i).addClass(AF);AQ.push(AT.on("mouseover",AS._onMouseOver,AS));AQ.push(AT.on("mouseout",AS._onMouseOut,AS));AQ.push(AT.on("mousemove",AS._onMouseMove,AS));AQ.push(AT.on(w,AS._toggleSubmenuDisplay,AS));AQ.push(D.on("key",AS._toggleSubmenuDisplay,AT,"down:13",AS));AQ.push(AT.on(AB,AS._toggleSubmenuDisplay,AS));AQ.push(AT.on("keypress",AS._onKeyPress,AS));AQ.push(AT.on(AO,AS._onKeyDown,AS));Y=AT.get("ownerDocument");AQ.push(Y.on(w,AS._onDocMouseDown,AS));AQ.push(Y.on("focus",AS._onDocFocus,AS));this._eventHandlers=AQ;AS._initFocusManager();}},destructor:function(){var Y=this._eventHandlers;if(Y){D.Array.each(Y,function(AQ){AQ.detach();});this._eventHandlers=null;}this.get(c).unplug("focusManager");},_isRoot:function(Y){return this._rootMenu.compareTo(Y);},_getTopmostSubmenu:function(AS){var AR=this,Y=M(AS),AQ;if(!Y){AQ=AS;}else{if(AR._isRoot(Y)){AQ
|