Upgrade to ExtJS 4.0.2 - Released 06/09/2011
[extjs.git] / docs / source / Accordion.html
index 2b43997..0c3ce44 100644 (file)
@@ -1,4 +1,21 @@
-<!DOCTYPE html><html><head><title>Sencha Documentation Project</title><link rel="stylesheet" href="../reset.css" type="text/css"><link rel="stylesheet" href="../prettify.css" type="text/css"><link rel="stylesheet" href="../prettify_sa.css" type="text/css"><script type="text/javascript" src="../prettify.js"></script></head><body onload="prettyPrint()"><pre class="prettyprint"><pre><span id='Ext-layout.container.Accordion'>/**
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <title>The source code</title>
+  <link href="../prettify/prettify.css" type="text/css" rel="stylesheet" />
+  <script type="text/javascript" src="../prettify/prettify.js"></script>
+  <style type="text/css">
+    .highlight { display: block; background-color: #ddd; }
+  </style>
+  <script type="text/javascript">
+    function highlight() {
+      document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
+    }
+  </script>
+</head>
+<body onload="prettyPrint(); highlight();">
+  <pre class="prettyprint lang-js"><span id='Ext-layout-container-Accordion'>/**
 </span> * @class Ext.layout.container.Accordion
  * @extends Ext.layout.container.VBox
  * &lt;p&gt;This is a layout that manages multiple Panels in an expandable accordion style such that only
@@ -40,22 +57,22 @@ Ext.define('Ext.layout.container.Accordion', {
     extend: 'Ext.layout.container.VBox',
     alias: ['layout.accordion'],
     alternateClassName: 'Ext.layout.AccordionLayout',
-    
+
     align: 'stretch',
 
-<span id='Ext-layout.container.Accordion-cfg-fill'>    /**
+<span id='Ext-layout-container-Accordion-cfg-fill'>    /**
 </span>     * @cfg {Boolean} fill
      * True to adjust the active item's height to fill the available space in the container, false to use the
      * item's current height, or auto height if not explicitly set (defaults to true).
      */
     fill : true,
-<span id='Ext-layout.container.Accordion-cfg-autoWidth'>    /**
+<span id='Ext-layout-container-Accordion-cfg-autoWidth'>    /**
 </span>     * @cfg {Boolean} autoWidth
      * &lt;p&gt;&lt;b&gt;This config is ignored in ExtJS 4.x.&lt;/b&gt;&lt;/p&gt;
      * Child Panels have their width actively managed to fit within the accordion's width.
      */
     autoWidth : true,
-<span id='Ext-layout.container.Accordion-cfg-titleCollapse'>    /**
+<span id='Ext-layout-container-Accordion-cfg-titleCollapse'>    /**
 </span>     * @cfg {Boolean} titleCollapse
      * &lt;p&gt;&lt;b&gt;Not implemented in PR2.&lt;/b&gt;&lt;/p&gt;
      * True to allow expand/collapse of each contained panel by clicking anywhere on the title bar, false to allow
@@ -63,26 +80,26 @@ Ext.define('Ext.layout.container.Accordion', {
      * {@link #hideCollapseTool} should be false also.
      */
     titleCollapse : true,
-<span id='Ext-layout.container.Accordion-cfg-hideCollapseTool'>    /**
+<span id='Ext-layout-container-Accordion-cfg-hideCollapseTool'>    /**
 </span>     * @cfg {Boolean} hideCollapseTool
      * True to hide the contained Panels' collapse/expand toggle buttons, false to display them (defaults to false).
      * When set to true, {@link #titleCollapse} is automatically set to &lt;code&gt;true&lt;/code&gt;.
      */
     hideCollapseTool : false,
-<span id='Ext-layout.container.Accordion-cfg-collapseFirst'>    /**
+<span id='Ext-layout-container-Accordion-cfg-collapseFirst'>    /**
 </span>     * @cfg {Boolean} collapseFirst
      * True to make sure the collapse/expand toggle button always renders first (to the left of) any other tools
      * in the contained Panels' title bars, false to render it last (defaults to false).
      */
     collapseFirst : false,
-<span id='Ext-layout.container.Accordion-cfg-animate'>    /**
+<span id='Ext-layout-container-Accordion-cfg-animate'>    /**
 </span>     * @cfg {Boolean} animate
      * True to slide the contained panels open and closed during expand/collapse using animation, false to open and
      * close directly with no animation (defaults to &lt;code&gt;true&lt;/code&gt;). Note: The layout performs animated collapsing
      * and expanding, &lt;i&gt;not&lt;/i&gt; the child Panels.
      */
     animate : true,
-<span id='Ext-layout.container.Accordion-cfg-activeOnTop'>    /**
+<span id='Ext-layout-container-Accordion-cfg-activeOnTop'>    /**
 </span>     * @cfg {Boolean} activeOnTop
      * &lt;p&gt;&lt;b&gt;Not implemented in PR4.&lt;/b&gt;&lt;/p&gt;
      * &lt;p&gt;Only valid when {@link #multi&quot; is &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;
@@ -90,7 +107,7 @@ Ext.define('Ext.layout.container.Accordion', {
      * false to keep the panels in the rendered order. &lt;b&gt;This is NOT compatible with &quot;animate:true&quot;&lt;/b&gt; (defaults to false).
      */
     activeOnTop : false,
-<span id='Ext-layout.container.Accordion-cfg-multi'>    /**
+<span id='Ext-layout-container-Accordion-cfg-multi'>    /**
 </span>     * @cfg {Boolean} multi
      * Defaults to &lt;code&gt;false&lt;/code&gt;. Set to &lt;code&gt;true&lt;/code&gt; to enable multiple accordion items to be open at once.
      */
@@ -118,7 +135,7 @@ Ext.define('Ext.layout.container.Accordion', {
 
         me.callParent(arguments);
         if (me.fill) {
-            if (!me.owner.el.dom.style.height) {
+            if (!me.owner.el.dom.style.height || !me.getLayoutTargetSize().height) {
                 return false;
             }
         } else {
@@ -157,7 +174,6 @@ Ext.define('Ext.layout.container.Accordion', {
                 delete comp.hideHeader;
                 comp.collapsible = true;
                 comp.title = comp.title || '&amp;#160;';
-                comp.setBorder(false);
 
                 // Set initial sizes
                 comp.width = targetSize.width;
@@ -170,12 +186,19 @@ Ext.define('Ext.layout.container.Accordion', {
                         comp.collapsed = true;
                     }
                     // Otherwise expand the first item with collapsed explicitly configured as false
-                    else if (comp.collapsed === false) {
+                    else if (comp.hasOwnProperty('collapsed') &amp;&amp; comp.collapsed === false) {
                         comp.flex = 1;
                         me.expandedItem = i;
                     } else {
                         comp.collapsed = true;
                     }
+                    // If we are fitting, then intercept expand/collapse requests.
+                    me.owner.mon(comp, {
+                        show: me.onComponentShow,
+                        beforeexpand: me.onComponentExpand,
+                        beforecollapse: me.onComponentCollapse,
+                        scope: me
+                    });
                 } else {
                     delete comp.flex;
                     comp.animCollapse = me.initialAnimate;
@@ -194,10 +217,10 @@ Ext.define('Ext.layout.container.Accordion', {
                 comp.flex = 1;
             }
         }
-        
+
         // Render all Panels.
         me.callParent(arguments);
-                
+
         // Postprocess rendered Panels.
         ln = renderedPanels.length;
         for (i = 0; i &lt; ln; i++) {
@@ -208,24 +231,13 @@ Ext.define('Ext.layout.container.Accordion', {
 
             comp.header.addCls(Ext.baseCSSPrefix + 'accordion-hd');
             comp.body.addCls(Ext.baseCSSPrefix + 'accordion-body');
-            
-            // If we are fitting, then intercept expand/collapse requests. 
-            if (me.fill) {
-                me.owner.mon(comp, {
-                    show: me.onComponentShow,
-                    beforeexpand: me.onComponentExpand,
-                    beforecollapse: me.onComponentCollapse,
-                    scope: me
-                });
-            }
         }
     },
 
     onLayout: function() {
         var me = this;
-        
-        me.updatePanelClasses();
-                
+
+
         if (me.fill) {
             me.callParent(arguments);
         } else {
@@ -243,24 +255,27 @@ Ext.define('Ext.layout.container.Accordion', {
                 }
             }
         }
-        
+        me.updatePanelClasses();
+
         return me;
     },
-    
+
     updatePanelClasses: function() {
         var children = this.getLayoutItems(),
             ln = children.length,
             siblingCollapsed = true,
             i, child;
-            
+
         for (i = 0; i &lt; ln; i++) {
             child = children[i];
-            if (!siblingCollapsed) {
-                child.header.addCls(Ext.baseCSSPrefix + 'accordion-hd-sibling-expanded');
+
+            if (siblingCollapsed) {
+                child.header.removeCls(Ext.baseCSSPrefix + 'accordion-hd-sibling-expanded');
             }
             else {
-                child.header.removeCls(Ext.baseCSSPrefix + 'accordion-hd-sibling-expanded');
+                child.header.addCls(Ext.baseCSSPrefix + 'accordion-hd-sibling-expanded');
             }
+
             if (i + 1 == ln &amp;&amp; child.collapsed) {
                 child.header.addCls(Ext.baseCSSPrefix + 'accordion-hd-last-collapsed');
             }
@@ -289,7 +304,7 @@ Ext.define('Ext.layout.container.Accordion', {
                 me.setCollapsed(comp);
             }
         }
-        
+
         me.animate = me.initialAnimate;
         me.layout();
         me.animate = false;
@@ -311,7 +326,7 @@ Ext.define('Ext.layout.container.Accordion', {
             if (expanded.length === 1 &amp;&amp; expanded[0] === comp) {
                 me.setExpanded(toExpand);
             }
-            
+
             me.animate = me.initialAnimate;
             me.layout();
             me.animate = false;
@@ -362,7 +377,7 @@ Ext.define('Ext.layout.container.Accordion', {
 
         // Show temporarily hidden docked items
         for (; i &lt; len; i++) {
-            otherDocks[i].hidden = false;
+            otherDocks[i].show();
         }
 
         // If it was an initial native collapse which hides the body
@@ -382,4 +397,6 @@ Ext.define('Ext.layout.container.Accordion', {
         }
         comp.setAutoScroll(comp.initialConfig.autoScroll);
     }
-});</pre></pre></body></html>
\ No newline at end of file
+});</pre>
+</body>
+</html>