From 2f01fe57a8d37767827d6db42850aef86a767c53 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 15 Nov 2010 10:39:52 +0300 Subject: add dijit/dojo stuff; initial ui mockup --- lib/dijit/layout/AccordionContainer.js | 220 +++++++++++++++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100644 lib/dijit/layout/AccordionContainer.js (limited to 'lib/dijit/layout/AccordionContainer.js') diff --git a/lib/dijit/layout/AccordionContainer.js b/lib/dijit/layout/AccordionContainer.js new file mode 100644 index 000000000..5bad370f5 --- /dev/null +++ b/lib/dijit/layout/AccordionContainer.js @@ -0,0 +1,220 @@ +/* + Copyright (c) 2004-2010, 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._CssStateMixin"); +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._wrapperWidget.set("selected",true); +} +},_getTargetHeight:function(_2){ +var cs=dojo.getComputedStyle(_2); +return Math.max(this._verticalSpace-dojo._getPadBorderExtents(_2,cs).h-dojo._getMarginExtents(_2,cs).h,0); +},layout:function(){ +var _3=this.selectedChildWidget; +if(!_3){ +return; +} +var _4=_3._wrapperWidget.domNode,_5=dojo._getMarginExtents(_4),_6=dojo._getPadBorderExtents(_4),_7=this._contentBox; +var _8=0; +dojo.forEach(this.getChildren(),function(_9){ +if(_9!=_3){ +_8+=dojo.marginBox(_9._wrapperWidget.domNode).h; +} +}); +this._verticalSpace=_7.h-_8-_5.h-_6.h-_3._buttonWidget.getTitleHeight(); +this._containerContentBox={h:this._verticalSpace,w:this._contentBox.w-_5.w-_6.w}; +if(_3){ +_3.resize(this._containerContentBox); +} +},_setupChild:function(_a){ +_a._wrapperWidget=new dijit.layout._AccordionInnerContainer({contentWidget:_a,buttonWidget:this.buttonWidget,id:_a.id+"_wrapper",dir:_a.dir,lang:_a.lang,parent:this}); +this.inherited(arguments); +},addChild:function(_b,_c){ +if(this._started){ +dojo.place(_b.domNode,this.containerNode,_c); +if(!_b._started){ +_b.startup(); +} +this._setupChild(_b); +dojo.publish(this.id+"-addChild",[_b,_c]); +this.layout(); +if(!this.selectedChildWidget){ +this.selectChild(_b); +} +}else{ +this.inherited(arguments); +} +},removeChild:function(_d){ +_d._wrapperWidget.destroy(); +delete _d._wrapperWidget; +dojo.removeClass(_d.domNode,"dijitHidden"); +this.inherited(arguments); +},getChildren:function(){ +return dojo.map(this.inherited(arguments),function(_e){ +return _e.declaredClass=="dijit.layout._AccordionInnerContainer"?_e.contentWidget:_e; +},this); +},destroy:function(){ +dojo.forEach(this.getChildren(),function(_f){ +_f._wrapperWidget.destroy(); +}); +this.inherited(arguments); +},_transition:function(_10,_11,_12){ +if(this._inTransition){ +return; +} +var _13=[]; +var _14=this._verticalSpace; +if(_10){ +_10._wrapperWidget.set("selected",true); +this._showChild(_10); +if(this.doLayout&&_10.resize){ +_10.resize(this._containerContentBox); +} +var _15=_10.domNode; +dojo.addClass(_15,"dijitVisible"); +dojo.removeClass(_15,"dijitHidden"); +if(_12){ +var _16=_15.style.overflow; +_15.style.overflow="hidden"; +_13.push(dojo.animateProperty({node:_15,duration:this.duration,properties:{height:{start:1,end:this._getTargetHeight(_15)}},onEnd:function(){ +_15.style.overflow=_16; +if(dojo.isIE){ +setTimeout(function(){ +dojo.removeClass(_15.parentNode,"dijitAccordionInnerContainerFocused"); +setTimeout(function(){ +dojo.addClass(_15.parentNode,"dijitAccordionInnerContainerFocused"); +},0); +},0); +} +}})); +} +} +if(_11){ +_11._wrapperWidget.set("selected",false); +var _17=_11.domNode; +if(_12){ +var _18=_17.style.overflow; +_17.style.overflow="hidden"; +_13.push(dojo.animateProperty({node:_17,duration:this.duration,properties:{height:{start:this._getTargetHeight(_17),end:1}},onEnd:function(){ +dojo.addClass(_17,"dijitHidden"); +dojo.removeClass(_17,"dijitVisible"); +_17.style.overflow=_18; +if(_11.onHide){ +_11.onHide(); +} +}})); +}else{ +dojo.addClass(_17,"dijitHidden"); +dojo.removeClass(_17,"dijitVisible"); +if(_11.onHide){ +_11.onHide(); +} +} +} +if(_12){ +this._inTransition=true; +var _19=dojo.fx.combine(_13); +_19.onEnd=dojo.hitch(this,function(){ +delete this._inTransition; +}); +_19.play(); +} +},_onKeyPress:function(e,_1a){ +if(this._inTransition||this.disabled||e.altKey||!(_1a||e.ctrlKey)){ +if(this._inTransition){ +dojo.stopEvent(e); +} +return; +} +var k=dojo.keys,c=e.charOrCode; +if((_1a&&(c==k.LEFT_ARROW||c==k.UP_ARROW))||(e.ctrlKey&&c==k.PAGE_UP)){ +this._adjacent(false)._buttonWidget._onTitleClick(); +dojo.stopEvent(e); +}else{ +if((_1a&&(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._AccordionInnerContainer",[dijit._Widget,dijit._CssStateMixin],{baseClass:"dijitAccordionInnerContainer",isContainer:true,isLayoutContainer:true,buildRendering:function(){ +this.domNode=dojo.place("
",this.contentWidget.domNode,"after"); +var _1b=this.contentWidget,cls=dojo.getObject(this.buttonWidget); +this.button=_1b._buttonWidget=(new cls({contentWidget:_1b,label:_1b.title,title:_1b.tooltip,dir:_1b.dir,lang:_1b.lang,iconClass:_1b.iconClass,id:_1b.id+"_button",parent:this.parent})).placeAt(this.domNode); +dojo.place(this.contentWidget.domNode,this.domNode); +},postCreate:function(){ +this.inherited(arguments); +this.connect(this.contentWidget,"set",function(_1c,_1d){ +var _1e={title:"label",tooltip:"title",iconClass:"iconClass"}[_1c]; +if(_1e){ +this.button.set(_1e,_1d); +} +},this); +},_setSelectedAttr:function(_1f){ +this.selected=_1f; +this.button.set("selected",_1f); +if(_1f){ +var cw=this.contentWidget; +if(cw.onSelected){ +cw.onSelected(); +} +} +},startup:function(){ +this.contentWidget.startup(); +},destroy:function(){ +this.button.destroyRecursive(); +delete this.contentWidget._buttonWidget; +delete this.contentWidget._wrapperWidget; +this.inherited(arguments); +},destroyDescendants:function(){ +this.contentWidget.destroyRecursive(); +}}); +dojo.declare("dijit.layout._AccordionButton",[dijit._Widget,dijit._Templated,dijit._CssStateMixin],{templateString:dojo.cache("dijit.layout","templates/AccordionButton.html","
\n\t
+-\"\"\n\t\t\n\t
\n
\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); +var _20=dojo.attr(this.domNode,"id").replace(" ","_"); +dojo.attr(this.titleTextNode,"id",_20+"_title"); +dijit.setWaiState(this.focusNode,"labelledby",dojo.attr(this.titleTextNode,"id")); +},getTitleHeight:function(){ +return dojo.marginBox(this.domNode).h; +},_onTitleClick:function(){ +var _21=this.getParent(); +if(!_21._inTransition){ +_21.selectChild(this.contentWidget,true); +dijit.focus(this.focusNode); +} +},_onTitleKeyPress:function(evt){ +return this.getParent()._onKeyPress(evt,this.contentWidget); +},_setSelectedAttr:function(_22){ +this.selected=_22; +dijit.setWaiState(this.focusNode,"expanded",_22); +dijit.setWaiState(this.focusNode,"selected",_22); +this.focusNode.setAttribute("tabIndex",_22?"0":"-1"); +}}); +} -- cgit v1.2.3