1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- /*
- Copyright (c) 2004-2012, 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["dojox.widget.TitleGroup"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
- dojo._hasResource["dojox.widget.TitleGroup"] = true;
- dojo.provide("dojox.widget.TitleGroup");
- dojo.require("dijit._Widget");
- dojo.require("dijit.TitlePane");
- (function(d){
-
- var tp = dijit.TitlePane.prototype,
- lookup = function(){
- // generic handler function for click and keypress
- var parent = this._dxfindParent && this._dxfindParent();
- parent && parent.selectChild(this);
- }
- ;
-
- // this might hide this uberprivate function from the docparser.
- tp._dxfindParent = function(){
- // summary: TitlePane's MUST be first-children of a TitleGroup. only used by
- // `dojox.widget.TitleGroup`. Find a possible parent TitleGroup of a TitlePane
- var n = this.domNode.parentNode;
- if(n){
- n = dijit.getEnclosingWidget(n);
- return n && n instanceof dojox.widget.TitleGroup && n;
- }
- return n;
- };
- // if we click our own title, hide everyone
- d.connect(tp, "_onTitleClick", lookup);
- d.connect(tp, "_onTitleKey", function(e){
- // if we're tabbing through the items in a group, don't do toggles.
- // if we hit enter, let it happen.
- if(!(e && e.type && e.type == "keypress" && e.charOrCode == d.keys.TAB)){
- lookup.apply(this, arguments);
- }
- });
-
- d.declare("dojox.widget.TitleGroup", dijit._Widget, {
- // summary: A container which controls a series of `dijit.TitlePane`s,
- // allowing one to be visible and hiding siblings
- //
- // description:
- // A container which controls a series of `dijit.TitlePane`s,
- // allowing one to be visible and hiding siblings. Behaves similarly
- // to a `dijit.layout.AccordionContainer` in that the children
- // are all stacked, though merges the TitlePane behavior of
- // variable height
- //
- // example:
- // | var group = new dojox.widget.TitleGroup().placeAt(dojo.body());
- // | new dijit.TitlePane({ title:"One" }, "fromsource").placeAt(group);
- // | new dijit.TitlePane({ title:"Remote", href:"foo.html" }).placeAt(group);
-
- "class":"dojoxTitleGroup",
- addChild: function(widget, position){
- // summary: Add a passed widget reference to this container at an optional
- // position index.
- //
- // widget: dijit.TitlePane
- // A widget reference to add
- // position: String?|Int?
- // An optional index or position to pass. defaults to "last"
- return widget.placeAt(this.domNode, position); // dijit.TitlePane
- },
-
- removeChild: function(widget){
- // summary: Remove the passed widget from this container. Does not destroy
- // child.
-
- this.domNode.removeChild(widget.domNode);
- return widget;
- },
-
- selectChild: function(widget){
- // summary: close all found titlePanes within this group, excluding
- // the one the we pass to select
- widget && dojo.query("> .dijitTitlePane", this.domNode).forEach(function(n){
- var tp = dijit.getEnclosingWidget(n);
- tp && tp !== widget && tp.open && tp.set("open", false);
- });
- return widget; // dijit.TitlePane
- }
-
- });
- })(dojo);
- }
|