12345678 |
- /*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dijit.layout.AccordionContainer"]){dojo._hasResource["dijit.layout.AccordionContainer"]=true;dojo.provide("dijit.layout.AccordionContainer");dojo.require("dojo.fx");dojo.require("dijit._Container");dojo.require("dijit._Templated");dojo.require("dijit.layout.StackContainer");dojo.require("dijit.layout.ContentPane");dojo.require("dijit.layout.AccordionPane");dojo.declare("dijit.layout.AccordionContainer",dijit.layout.StackContainer,{duration:dijit.defaultDuration,buttonWidget:"dijit.layout._AccordionButton",_verticalSpace:0,baseClass:"dijitAccordionContainer",postCreate:function(){this.domNode.style.overflow="hidden";this.inherited(arguments);dijit.setWaiRole(this.domNode,"tablist");},startup:function(){if(this._started){return;}this.inherited(arguments);if(this.selectedChildWidget){var _1=this.selectedChildWidget.containerNode.style;_1.display="";_1.overflow="auto";this.selectedChildWidget._buttonWidget._setSelectedState(true);}},_getTargetHeight:function(_2){var cs=dojo.getComputedStyle(_2);return Math.max(this._verticalSpace-dojo._getPadBorderExtents(_2,cs).h,0);},layout:function(){var _3=this.selectedChildWidget;var _4=0;dojo.forEach(this.getChildren(),function(_5){_4+=_5._buttonWidget.getTitleHeight();});var _6=this._contentBox;this._verticalSpace=_6.h-_4;this._containerContentBox={h:this._verticalSpace,w:_6.w};if(_3){_3.resize(this._containerContentBox);}},_setupChild:function(_7){var _8=dojo.getObject(this.buttonWidget);var _9=(_7._buttonWidget=new _8({contentWidget:_7,label:_7.title,title:_7.tooltip,iconClass:_7.iconClass,id:_7.id+"_button",parent:this}));_7._accordionConnectHandle=this.connect(_7,"attr",function(_a,_b){if(arguments.length==2){switch(_a){case "title":case "iconClass":_9.attr(_a,_b);}}});dojo.place(_7._buttonWidget.domNode,_7.domNode,"before");this.inherited(arguments);},removeChild:function(_c){this.disconnect(_c._accordionConnectHandle);delete _c._accordionConnectHandle;_c._buttonWidget.destroy();delete _c._buttonWidget;this.inherited(arguments);},getChildren:function(){return dojo.filter(this.inherited(arguments),function(_d){return _d.declaredClass!=this.buttonWidget;},this);},destroy:function(){dojo.forEach(this.getChildren(),function(_e){_e._buttonWidget.destroy();});this.inherited(arguments);},_transition:function(_f,_10){if(this._inTransition){return;}this._inTransition=true;var _11=[];var _12=this._verticalSpace;if(_f){_f._buttonWidget.setSelected(true);this._showChild(_f);if(this.doLayout&&_f.resize){_f.resize(this._containerContentBox);}var _13=_f.domNode;dojo.addClass(_13,"dijitVisible");dojo.removeClass(_13,"dijitHidden");var _14=_13.style.overflow;_13.style.overflow="hidden";_11.push(dojo.animateProperty({node:_13,duration:this.duration,properties:{height:{start:1,end:this._getTargetHeight(_13)}},onEnd:dojo.hitch(this,function(){_13.style.overflow=_14;delete this._inTransition;})}));}if(_10){_10._buttonWidget.setSelected(false);var _15=_10.domNode,_16=_15.style.overflow;_15.style.overflow="hidden";_11.push(dojo.animateProperty({node:_15,duration:this.duration,properties:{height:{start:this._getTargetHeight(_15),end:1}},onEnd:function(){dojo.addClass(_15,"dijitHidden");dojo.removeClass(_15,"dijitVisible");_15.style.overflow=_16;if(_10.onHide){_10.onHide();}}}));}dojo.fx.combine(_11).play();},_onKeyPress:function(e,_17){if(this._inTransition||this.disabled||e.altKey||!(_17||e.ctrlKey)){if(this._inTransition){dojo.stopEvent(e);}return;}var k=dojo.keys,c=e.charOrCode;if((_17&&(c==k.LEFT_ARROW||c==k.UP_ARROW))||(e.ctrlKey&&c==k.PAGE_UP)){this._adjacent(false)._buttonWidget._onTitleClick();dojo.stopEvent(e);}else{if((_17&&(c==k.RIGHT_ARROW||c==k.DOWN_ARROW))||(e.ctrlKey&&(c==k.PAGE_DOWN||c==k.TAB))){this._adjacent(true)._buttonWidget._onTitleClick();dojo.stopEvent(e);}}}});dojo.declare("dijit.layout._AccordionButton",[dijit._Widget,dijit._Templated],{templateString:dojo.cache("dijit.layout","templates/AccordionButton.html","<div dojoAttachPoint='titleNode,focusNode' dojoAttachEvent='ondijitclick:_onTitleClick,onkeypress:_onTitleKeyPress,onfocus:_handleFocus,onblur:_handleFocus,onmouseenter:_onTitleEnter,onmouseleave:_onTitleLeave'\n\t\tclass='dijitAccordionTitle' wairole=\"tab\" waiState=\"expanded-false\"\n\t\t><span class='dijitInline dijitAccordionArrow' waiRole=\"presentation\"></span\n\t\t><span class='arrowTextUp' waiRole=\"presentation\">+</span\n\t\t><span class='arrowTextDown' waiRole=\"presentation\">-</span\n\t\t><img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint='iconNode' style=\"vertical-align: middle\" waiRole=\"presentation\"/>\n\t\t<span waiRole=\"presentation\" dojoAttachPoint='titleTextNode' class='dijitAccordionText'></span>\n</div>\n"),attributeMap:dojo.mixin(dojo.clone(dijit.layout.ContentPane.prototype.attributeMap),{label:{node:"titleTextNode",type:"innerHTML"},title:{node:"titleTextNode",type:"attribute",attribute:"title"},iconClass:{node:"iconNode",type:"class"}}),baseClass:"dijitAccordionTitle",getParent:function(){return this.parent;},postCreate:function(){this.inherited(arguments);dojo.setSelectable(this.domNode,false);this.setSelected(this.selected);var _18=dojo.attr(this.domNode,"id").replace(" ","_");dojo.attr(this.titleTextNode,"id",_18+"_title");dijit.setWaiState(this.focusNode,"labelledby",dojo.attr(this.titleTextNode,"id"));},getTitleHeight:function(){return dojo.marginBox(this.titleNode).h;},_onTitleClick:function(){var _19=this.getParent();if(!_19._inTransition){_19.selectChild(this.contentWidget);dijit.focus(this.focusNode);}},_onTitleEnter:function(){dojo.addClass(this.focusNode,"dijitAccordionTitle-hover");},_onTitleLeave:function(){dojo.removeClass(this.focusNode,"dijitAccordionTitle-hover");},_onTitleKeyPress:function(evt){return this.getParent()._onKeyPress(evt,this.contentWidget);},_setSelectedState:function(_1a){this.selected=_1a;dojo[(_1a?"addClass":"removeClass")](this.titleNode,"dijitAccordionTitle-selected");dijit.setWaiState(this.focusNode,"expanded",_1a);dijit.setWaiState(this.focusNode,"selected",_1a);this.focusNode.setAttribute("tabIndex",_1a?"0":"-1");},_handleFocus:function(e){dojo.toggleClass(this.titleTextNode,"dijitAccordionFocused",e.type=="focus");},setSelected:function(_1b){this._setSelectedState(_1b);if(_1b){var cw=this.contentWidget;if(cw.onSelected){cw.onSelected();}}}});}
|