diff options
author | Andrew Dolgov <[email protected]> | 2012-08-14 18:59:10 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2012-08-14 18:59:18 +0400 |
commit | 1354d17270961fff662d40f90521223f8fd0d73b (patch) | |
tree | e9266be71587e47c800303446e968a6d3565e2cf /lib/dijit/TitlePane.js | |
parent | d04f8c826f5283765f52cf6b98b42a1ed8f2d6bc (diff) |
update dojo to 1.7.3
Diffstat (limited to 'lib/dijit/TitlePane.js')
-rw-r--r-- | lib/dijit/TitlePane.js | 259 |
1 files changed, 2 insertions, 257 deletions
diff --git a/lib/dijit/TitlePane.js b/lib/dijit/TitlePane.js index c29ac02f2..917af039d 100644 --- a/lib/dijit/TitlePane.js +++ b/lib/dijit/TitlePane.js @@ -1,257 +1,2 @@ -/* - Copyright (c) 2004-2011, 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.TitlePane"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["dijit.TitlePane"] = true; -dojo.provide("dijit.TitlePane"); -dojo.require("dojo.fx"); -dojo.require("dijit._Templated"); -dojo.require("dijit.layout.ContentPane"); -dojo.require("dijit._CssStateMixin"); - - -dojo.declare( - "dijit.TitlePane", - [dijit.layout.ContentPane, dijit._Templated, dijit._CssStateMixin], -{ - // summary: - // A pane with a title on top, that can be expanded or collapsed. - // - // description: - // An accessible container with a title Heading, and a content - // section that slides open and closed. TitlePane is an extension to - // `dijit.layout.ContentPane`, providing all the useful content-control aspects from it. - // - // example: - // | // load a TitlePane from remote file: - // | var foo = new dijit.TitlePane({ href: "foobar.html", title:"Title" }); - // | foo.startup(); - // - // example: - // | <!-- markup href example: --> - // | <div dojoType="dijit.TitlePane" href="foobar.html" title="Title"></div> - // - // example: - // | <!-- markup with inline data --> - // | <div dojoType="dijit.TitlePane" title="Title"> - // | <p>I am content</p> - // | </div> - - // title: String - // Title of the pane - title: "", - - // open: Boolean - // Whether pane is opened or closed. - open: true, - - // toggleable: Boolean - // Whether pane can be opened or closed by clicking the title bar. - toggleable: true, - - // tabIndex: String - // Tabindex setting for the title (so users can tab to the title then - // use space/enter to open/close the title pane) - tabIndex: "0", - - // duration: Integer - // Time in milliseconds to fade in/fade out - duration: dijit.defaultDuration, - - // baseClass: [protected] String - // The root className to be placed on this widget's domNode. - baseClass: "dijitTitlePane", - - templateString: dojo.cache("dijit", "templates/TitlePane.html", "<div>\n\t<div dojoAttachEvent=\"onclick:_onTitleClick, onkeypress:_onTitleKey\"\n\t\t\tclass=\"dijitTitlePaneTitle\" dojoAttachPoint=\"titleBarNode\">\n\t\t<div class=\"dijitTitlePaneTitleFocus\" dojoAttachPoint=\"focusNode\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"arrowNode\" class=\"dijitArrowNode\" role=\"presentation\"\n\t\t\t/><span dojoAttachPoint=\"arrowNodeInner\" class=\"dijitArrowNodeInner\"></span\n\t\t\t><span dojoAttachPoint=\"titleNode\" class=\"dijitTitlePaneTextNode\"></span>\n\t\t</div>\n\t</div>\n\t<div class=\"dijitTitlePaneContentOuter\" dojoAttachPoint=\"hideNode\" role=\"presentation\">\n\t\t<div class=\"dijitReset\" dojoAttachPoint=\"wipeNode\" role=\"presentation\">\n\t\t\t<div class=\"dijitTitlePaneContentInner\" dojoAttachPoint=\"containerNode\" role=\"region\" id=\"${id}_pane\">\n\t\t\t\t<!-- nested divs because wipeIn()/wipeOut() doesn't work right on node w/padding etc. Put padding on inner div. -->\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n"), - - attributeMap: dojo.delegate(dijit.layout.ContentPane.prototype.attributeMap, { - title: { node: "titleNode", type: "innerHTML" }, - tooltip: {node: "focusNode", type: "attribute", attribute: "title"}, // focusNode spans the entire width, titleNode doesn't - id:"" - }), - - buildRendering: function(){ - this.inherited(arguments); - dojo.setSelectable(this.titleNode, false); - }, - - postCreate: function(){ - this.inherited(arguments); - - // Hover and focus effect on title bar, except for non-toggleable TitlePanes - // This should really be controlled from _setToggleableAttr() but _CssStateMixin - // doesn't provide a way to disconnect a previous _trackMouseState() call - if(this.toggleable){ - this._trackMouseState(this.titleBarNode, "dijitTitlePaneTitle"); - } - - // setup open/close animations - var hideNode = this.hideNode, wipeNode = this.wipeNode; - this._wipeIn = dojo.fx.wipeIn({ - node: this.wipeNode, - duration: this.duration, - beforeBegin: function(){ - hideNode.style.display=""; - } - }); - this._wipeOut = dojo.fx.wipeOut({ - node: this.wipeNode, - duration: this.duration, - onEnd: function(){ - hideNode.style.display="none"; - } - }); - }, - - _setOpenAttr: function(/*Boolean*/ open, /*Boolean*/ animate){ - // summary: - // Hook to make set("open", boolean) control the open/closed state of the pane. - // open: Boolean - // True if you want to open the pane, false if you want to close it. - - dojo.forEach([this._wipeIn, this._wipeOut], function(animation){ - if(animation && animation.status() == "playing"){ - animation.stop(); - } - }); - - if(animate){ - var anim = this[open ? "_wipeIn" : "_wipeOut"]; - anim.play(); - }else{ - this.hideNode.style.display = this.wipeNode.style.display = open ? "" : "none"; - } - - // load content (if this is the first time we are opening the TitlePane - // and content is specified as an href, or href was set when hidden) - if(this._started){ - if(open){ - this._onShow(); - }else{ - this.onHide(); - } - } - - this.arrowNodeInner.innerHTML = open ? "-" : "+"; - - dijit.setWaiState(this.containerNode,"hidden", open ? "false" : "true"); - dijit.setWaiState(this.focusNode, "pressed", open ? "true" : "false"); - - this._set("open", open); - - this._setCss(); - }, - - _setToggleableAttr: function(/*Boolean*/ canToggle){ - // summary: - // Hook to make set("toggleable", boolean) work. - // canToggle: Boolean - // True to allow user to open/close pane by clicking title bar. - - dijit.setWaiRole(this.focusNode, canToggle ? "button" : "heading"); - if(canToggle){ - // TODO: if canToggle is switched from true to false shouldn't we remove this setting? - dijit.setWaiState(this.focusNode, "controls", this.id+"_pane"); - dojo.attr(this.focusNode, "tabIndex", this.tabIndex); - }else{ - dojo.removeAttr(this.focusNode, "tabIndex"); - } - - this._set("toggleable", canToggle); - - this._setCss(); - }, - - _setContentAttr: function(/*String|DomNode|Nodelist*/ content){ - // summary: - // Hook to make set("content", ...) work. - // Typically called when an href is loaded. Our job is to make the animation smooth. - - if(!this.open || !this._wipeOut || this._wipeOut.status() == "playing"){ - // we are currently *closing* the pane (or the pane is closed), so just let that continue - this.inherited(arguments); - }else{ - if(this._wipeIn && this._wipeIn.status() == "playing"){ - this._wipeIn.stop(); - } - - // freeze container at current height so that adding new content doesn't make it jump - dojo.marginBox(this.wipeNode, { h: dojo.marginBox(this.wipeNode).h }); - - // add the new content (erasing the old content, if any) - this.inherited(arguments); - - // call _wipeIn.play() to animate from current height to new height - if(this._wipeIn){ - this._wipeIn.play(); - }else{ - this.hideNode.style.display = ""; - } - } - }, - - toggle: function(){ - // summary: - // Switches between opened and closed state - // tags: - // private - - this._setOpenAttr(!this.open, true); - }, - - _setCss: function(){ - // summary: - // Set the open/close css state for the TitlePane - // tags: - // private - - var node = this.titleBarNode || this.focusNode; - var oldCls = this._titleBarClass; - this._titleBarClass = "dijit" + (this.toggleable ? "" : "Fixed") + (this.open ? "Open" : "Closed"); - dojo.replaceClass(node, this._titleBarClass, oldCls || ""); - - this.arrowNodeInner.innerHTML = this.open ? "-" : "+"; - }, - - _onTitleKey: function(/*Event*/ e){ - // summary: - // Handler for when user hits a key - // tags: - // private - - if(e.charOrCode == dojo.keys.ENTER || e.charOrCode == ' '){ - if(this.toggleable){ - this.toggle(); - } - dojo.stopEvent(e); - }else if(e.charOrCode == dojo.keys.DOWN_ARROW && this.open){ - this.containerNode.focus(); - e.preventDefault(); - } - }, - - _onTitleClick: function(){ - // summary: - // Handler when user clicks the title bar - // tags: - // private - if(this.toggleable){ - this.toggle(); - } - }, - - setTitle: function(/*String*/ title){ - // summary: - // Deprecated. Use set('title', ...) instead. - // tags: - // deprecated - dojo.deprecated("dijit.TitlePane.setTitle() is deprecated. Use set('title', ...) instead.", "", "2.0"); - this.set("title", title); - } -}); - -} +//>>built +require({cache:{"url:dijit/templates/TitlePane.html":"<div>\n\t<div data-dojo-attach-event=\"onclick:_onTitleClick, onkeypress:_onTitleKey\"\n\t\t\tclass=\"dijitTitlePaneTitle\" data-dojo-attach-point=\"titleBarNode\">\n\t\t<div class=\"dijitTitlePaneTitleFocus\" data-dojo-attach-point=\"focusNode\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" data-dojo-attach-point=\"arrowNode\" class=\"dijitArrowNode\" role=\"presentation\"\n\t\t\t/><span data-dojo-attach-point=\"arrowNodeInner\" class=\"dijitArrowNodeInner\"></span\n\t\t\t><span data-dojo-attach-point=\"titleNode\" class=\"dijitTitlePaneTextNode\"></span>\n\t\t</div>\n\t</div>\n\t<div class=\"dijitTitlePaneContentOuter\" data-dojo-attach-point=\"hideNode\" role=\"presentation\">\n\t\t<div class=\"dijitReset\" data-dojo-attach-point=\"wipeNode\" role=\"presentation\">\n\t\t\t<div class=\"dijitTitlePaneContentInner\" data-dojo-attach-point=\"containerNode\" role=\"region\" id=\"${id}_pane\">\n\t\t\t\t<!-- nested divs because wipeIn()/wipeOut() doesn't work right on node w/padding etc. Put padding on inner div. -->\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n"}});define("dijit/TitlePane",["dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-geometry","dojo/_base/event","dojo/fx","dojo/_base/kernel","dojo/keys","./_CssStateMixin","./_TemplatedMixin","./layout/ContentPane","dojo/text!./templates/TitlePane.html","./_base/manager"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d,_e,_f){return _2("dijit.TitlePane",[_d,_c,_b],{title:"",_setTitleAttr:{node:"titleNode",type:"innerHTML"},open:true,toggleable:true,tabIndex:"0",duration:_f.defaultDuration,baseClass:"dijitTitlePane",templateString:_e,doLayout:false,_setTooltipAttr:{node:"focusNode",type:"attribute",attribute:"title"},buildRendering:function(){this.inherited(arguments);_3.setSelectable(this.titleNode,false);},postCreate:function(){this.inherited(arguments);if(this.toggleable){this._trackMouseState(this.titleBarNode,"dijitTitlePaneTitle");}var _10=this.hideNode,_11=this.wipeNode;this._wipeIn=_8.wipeIn({node:_11,duration:this.duration,beforeBegin:function(){_10.style.display="";}});this._wipeOut=_8.wipeOut({node:_11,duration:this.duration,onEnd:function(){_10.style.display="none";}});},_setOpenAttr:function(_12,_13){_1.forEach([this._wipeIn,this._wipeOut],function(_14){if(_14&&_14.status()=="playing"){_14.stop();}});if(_13){var _15=this[_12?"_wipeIn":"_wipeOut"];_15.play();}else{this.hideNode.style.display=this.wipeNode.style.display=_12?"":"none";}if(this._started){if(_12){this._onShow();}else{this.onHide();}}this.arrowNodeInner.innerHTML=_12?"-":"+";this.containerNode.setAttribute("aria-hidden",_12?"false":"true");this.focusNode.setAttribute("aria-pressed",_12?"true":"false");this._set("open",_12);this._setCss();},_setToggleableAttr:function(_16){this.focusNode.setAttribute("role",_16?"button":"heading");if(_16){this.focusNode.setAttribute("aria-controls",this.id+"_pane");_4.set(this.focusNode,"tabIndex",this.tabIndex);}else{_4.remove(this.focusNode,"tabIndex");}this._set("toggleable",_16);this._setCss();},_setContentAttr:function(_17){if(!this.open||!this._wipeOut||this._wipeOut.status()=="playing"){this.inherited(arguments);}else{if(this._wipeIn&&this._wipeIn.status()=="playing"){this._wipeIn.stop();}_6.setMarginBox(this.wipeNode,{h:_6.getMarginBox(this.wipeNode).h});this.inherited(arguments);if(this._wipeIn){this._wipeIn.play();}else{this.hideNode.style.display="";}}},toggle:function(){this._setOpenAttr(!this.open,true);},_setCss:function(){var _18=this.titleBarNode||this.focusNode;var _19=this._titleBarClass;this._titleBarClass="dijit"+(this.toggleable?"":"Fixed")+(this.open?"Open":"Closed");_5.replace(_18,this._titleBarClass,_19||"");this.arrowNodeInner.innerHTML=this.open?"-":"+";},_onTitleKey:function(e){if(e.charOrCode==_a.ENTER||e.charOrCode==" "){if(this.toggleable){this.toggle();}_7.stop(e);}else{if(e.charOrCode==_a.DOWN_ARROW&&this.open){this.containerNode.focus();e.preventDefault();}}},_onTitleClick:function(){if(this.toggleable){this.toggle();}},setTitle:function(_1a){_9.deprecated("dijit.TitlePane.setTitle() is deprecated. Use set('title', ...) instead.","","2.0");this.set("title",_1a);}});});
\ No newline at end of file |