Uncommited changes synced
authorAlan Knowles <alan@roojs.com>
Tue, 2 Feb 2021 03:03:12 +0000 (11:03 +0800)
committerAlan Knowles <alan@roojs.com>
Tue, 2 Feb 2021 03:03:12 +0000 (11:03 +0800)
Roo/bootstrap/panel/Content.js
docs/json/roodata.json
docs/src/Roo_bootstrap_panel_Content.js.html
docs/symbols/Roo.bootstrap.panel.Content.json
docs/symbols/Roo.bootstrap.panel.Grid.json
docs/symbols/Roo.bootstrap.panel.Nest.json
roojs-bootstrap-debug.js
roojs-bootstrap.js

index 89b0eaa..ed26ba6 100644 (file)
@@ -65,11 +65,11 @@ Roo.bootstrap.panel.Content = function( config){
                     " roo-layout-inactive-content",
                 id: config.id||el
             };
-            if (this.iframe) {
+            if (config.iframe) {
                 elcfg.cn = [
                     {
                         tag : 'iframe',
-                        style : 'border 0px',
+                        style : 'border: 0px',
                         src : 'about:blank'
                     }
                 ];
@@ -81,7 +81,7 @@ Roo.bootstrap.panel.Content = function( config){
             }
                         
             this.el = Roo.DomHelper.append(document.body, elcfg , true);
-            if (this.iframe) {
+            if (config.iframe) {
                 this.iframeEl = this.el.select('iframe',true).first();
             }
             
@@ -220,6 +220,7 @@ Roo.extend(Roo.bootstrap.panel.Content, Roo.bootstrap.Component, {
     tabTip : '',
     
     iframe : false,
+    iframeEl : false,
     
     setRegion : function(region){
         this.region = region;
@@ -409,8 +410,14 @@ panel.load({
                 this.el.setSize(width, height);
             }
             var size = this.adjustForComponents(width, height);
+            if (this.iframe) {
+                this.iframeEl.setSize(width,height);
+            }
+            
             this.resizeEl.setSize(this.autoWidth ? "auto" : size.width, this.autoHeight ? "auto" : size.height);
             this.fireEvent('resize', this, size.width, size.height);
+            
+            
         }
     },
     
index 96837d3..c41e975 100644 (file)
         "desc" : "True for this panel to adjust its size to fit when the region resizes  (defaults to false)",
         "memberOf" : ""
       },
+      {
+        "name" : "iframe",
+        "type" : "Boolean",
+        "desc" : "contents are an iframe - makes showing remote sources/CSS feasible..",
+        "memberOf" : ""
+      },
       {
         "name" : "listeners",
         "type" : "Object",
       {
         "name" : "load",
         "type" : "function",
-        "desc" : "Loads this content panel immediately with content from XHR. Note: to delay loading until the panel is activated, use {@link #setUrl}.",
+        "desc" : "Loads this content panel immediately with content from XHR. Note: to delay loading until the panel is activated, use {@link #setUrl}.\nDoes not work with IFRAME contents",
         "sig" : "(url, params, callback, discardUrl)",
         "static" : false,
         "memberOf" : ""
       {
         "name" : "setContent",
         "type" : "function",
-        "desc" : "Updates this panel's element",
+        "desc" : "Updates this panel's element (not for iframe)",
         "sig" : "(content, loadScripts)",
         "static" : false,
         "memberOf" : ""
         "desc" : "The grid for this panel",
         "memberOf" : ""
       },
+      {
+        "name" : "iframe",
+        "type" : "Boolean",
+        "desc" : "contents are an iframe - makes showing remote sources/CSS feasible..",
+        "memberOf" : "Roo.bootstrap.panel.Content"
+      },
       {
         "name" : "listeners",
         "type" : "Object",
       {
         "name" : "load",
         "type" : "function",
-        "desc" : "Loads this content panel immediately with content from XHR. Note: to delay loading until the panel is activated, use {@link #setUrl}.",
+        "desc" : "Loads this content panel immediately with content from XHR. Note: to delay loading until the panel is activated, use {@link #setUrl}.\nDoes not work with IFRAME contents",
         "sig" : "(url, params, callback, discardUrl)",
         "static" : false,
         "memberOf" : "Roo.bootstrap.panel.Content"
       {
         "name" : "setContent",
         "type" : "function",
-        "desc" : "Updates this panel's element",
+        "desc" : "Updates this panel's element (not for iframe)",
         "sig" : "(content, loadScripts)",
         "static" : false,
         "memberOf" : "Roo.bootstrap.panel.Content"
         "desc" : "True for this panel to adjust its size to fit when the region resizes  (defaults to false)",
         "memberOf" : "Roo.bootstrap.panel.Content"
       },
+      {
+        "name" : "iframe",
+        "type" : "Boolean",
+        "desc" : "contents are an iframe - makes showing remote sources/CSS feasible..",
+        "memberOf" : "Roo.bootstrap.panel.Content"
+      },
       {
         "name" : "listeners",
         "type" : "Object",
       {
         "name" : "load",
         "type" : "function",
-        "desc" : "Loads this content panel immediately with content from XHR. Note: to delay loading until the panel is activated, use {@link #setUrl}.",
+        "desc" : "Loads this content panel immediately with content from XHR. Note: to delay loading until the panel is activated, use {@link #setUrl}.\nDoes not work with IFRAME contents",
         "sig" : "(url, params, callback, discardUrl)",
         "static" : false,
         "memberOf" : "Roo.bootstrap.panel.Content"
       {
         "name" : "setContent",
         "type" : "function",
-        "desc" : "Updates this panel's element",
+        "desc" : "Updates this panel's element (not for iframe)",
         "sig" : "(content, loadScripts)",
         "static" : false,
         "memberOf" : "Roo.bootstrap.panel.Content"
index 1f1d379..1fb9bd6 100644 (file)
@@ -27,6 +27,7 @@
  * @cfg {String/Object} params  When used with {@link #url}, calls {@link #setUrl} with this value
  * @cfg {Boolean} loadOnce      When used with {@link #url}, calls {@link #setUrl} with this value
  * @cfg {String}    content        Raw content to fill content panel with (uses setContent on construction.)
+ * @cfg {Boolean} iframe      contents are an iframe - makes showing remote sources/CSS feasible..
  * @cfg {Boolean} badges render the badges
  * @cfg {String} cls  extra classes to use  
  * @cfg {String} background (primary|secondary|success|info|warning|danger|light|dark)
                     </span><span class="jsdoc-string">&quot; roo-layout-inactive-content&quot;</span><span class="jsdoc-syntax">,
                 </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">config.id</span><span class="jsdoc-syntax">||</span><span class="jsdoc-var">el
             </span><span class="jsdoc-syntax">};
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.iframe</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-var">elcfg.cn </span><span class="jsdoc-syntax">= [
+                    {
+                        </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'iframe'</span><span class="jsdoc-syntax">,
+                        </span><span class="jsdoc-var">style </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'border 0px'</span><span class="jsdoc-syntax">,
+                        </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'about:blank'
+                    </span><span class="jsdoc-syntax">}
+                ];
+            }
+
             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config.html</span><span class="jsdoc-syntax">) {
                 </span><span class="jsdoc-var">elcfg.html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">config.html</span><span class="jsdoc-syntax">;
 
             }
 
             </span><span class="jsdoc-var">this.el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.DomHelper.append</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">elcfg </span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.iframe</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-var">this.iframeEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'iframe'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.first</span><span class="jsdoc-syntax">();
+            }
+
         }
     }
     </span><span class="jsdoc-var">this.closable </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
 
 
 
-    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.autoScroll</span><span class="jsdoc-syntax">){
+    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.autoScroll </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">this.iframe</span><span class="jsdoc-syntax">){
         </span><span class="jsdoc-var">this.resizeEl.setStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;overflow&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;auto&quot;</span><span class="jsdoc-syntax">);
     } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
         </span><span class="jsdoc-comment">// fix randome scrolling
 
     </span><span class="jsdoc-var">tabTip </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
 
+    </span><span class="jsdoc-var">iframe </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+
     </span><span class="jsdoc-var">setRegion </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">region</span><span class="jsdoc-syntax">){
         </span><span class="jsdoc-var">this.region </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">region</span><span class="jsdoc-syntax">;
         </span><span class="jsdoc-var">this.setActiveClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">region </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">this.background</span><span class="jsdoc-syntax">);
         </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
     },
     </span><span class="jsdoc-comment">/**
-     * Updates this panel's element
+     * Updates this panel's element (not for iframe)
      * @param {String} content The new content
      * @param {Boolean} loadScripts (optional) true to look for and process scripts
     */
     </span><span class="jsdoc-var">setContent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">content</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">loadScripts</span><span class="jsdoc-syntax">){
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.iframe</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        }
+
         </span><span class="jsdoc-var">this.el.update</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">content</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">loadScripts</span><span class="jsdoc-syntax">);
     },
 
      * @return {Roo.UpdateManager} The UpdateManager
      */
     </span><span class="jsdoc-var">getUpdateManager </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.iframe</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+        }
         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.el.getUpdateManager</span><span class="jsdoc-syntax">();
     },
      </span><span class="jsdoc-comment">/**
      * Loads this content panel immediately with content from XHR. Note: to delay loading until the panel is activated, use {@link #setUrl}.
+     * Does not work with IFRAME contents
      * @param {Object/String/Function} url The url for this request or a function to call to get the url or a config object containing any of the following options:
 &lt;pre&gt;&lt;code&gt;
 panel.load({
@@ -282,6 +307,7 @@ panel.load({
     scripts: false
 });
 &lt;/code&gt;&lt;/pre&gt;
+     
      * The only required property is &lt;i&gt;url&lt;/i&gt;. The optional properties &lt;i&gt;nocache&lt;/i&gt;, &lt;i&gt;text&lt;/i&gt; and &lt;i&gt;scripts&lt;/i&gt;
      * are shorthand for &lt;i&gt;disableCaching&lt;/i&gt;, &lt;i&gt;indicatorText&lt;/i&gt; and &lt;i&gt;loadScripts&lt;/i&gt; and are used to set their associated property on this panel UpdateManager instance.
      * @param {String/Object} params (optional) The parameters to pass as either a URL encoded string &quot;param1=1&amp;amp;param2=2&quot; or an object {param1: 1, param2: 2}
@@ -290,6 +316,11 @@ panel.load({
      * @return {Roo.ContentPanel} this
      */
     </span><span class="jsdoc-var">load </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.iframe</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
+        }
+
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">um </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.getUpdateManager</span><span class="jsdoc-syntax">();
         </span><span class="jsdoc-var">um.update.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">um</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">);
         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
@@ -301,9 +332,14 @@ panel.load({
      * @param {String/Function} url The URL to load the content from or a function to call to get the URL
      * @param {String/Object} params (optional) The string params for the update call or an object of the params. See {@link Roo.UpdateManager#update} for more details. (Defaults to null)
      * @param {Boolean} loadOnce (optional) Whether to only load the content once. If this is false it makes the Ajax call every time this panel is activated. (Defaults to false)
-     * @return {Roo.UpdateManager} The UpdateManager
+     * @return {Roo.UpdateManager|Boolean} The UpdateManager or false if IFRAME
      */
     </span><span class="jsdoc-var">setUrl </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">params</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">loadOnce</span><span class="jsdoc-syntax">){
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.iframe</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-var">this.iframeEl.dom.src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+        }
+
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.refreshDelegate</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-var">this.removeListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;activate&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.refreshDelegate</span><span class="jsdoc-syntax">);
         }
index 0eafbc3..21e7c7d 100644 (file)
       "memberOf" : "Roo.bootstrap.panel.Content",
       "optvals" : []
     },
+    {
+      "name" : "iframe",
+      "type" : "Boolean",
+      "desc" : "contents are an iframe - makes showing remote sources/CSS feasible..",
+      "memberOf" : "Roo.bootstrap.panel.Content",
+      "optvals" : []
+    },
     {
       "name" : "cls",
       "type" : "String",
       "returns" : [
         {
           "name" : "",
-          "type" : "Roo.UpdateManager",
-          "desc" : "The UpdateManager"
+          "type" : "Roo.UpdateManager|Boolean",
+          "desc" : "The UpdateManager or false if IFRAME"
         }
       ]
     },
     },
     {
       "name" : "load",
-      "desc" : "Loads this content panel immediately with content from XHR. Note: to delay loading until the panel is activated, use {@link #setUrl}.",
+      "desc" : "Loads this content panel immediately with content from XHR. Note: to delay loading until the panel is activated, use {@link #setUrl}.\nDoes not work with IFRAME contents",
       "isStatic" : false,
       "isConstructor" : false,
       "isPrivate" : false,
     },
     {
       "name" : "setContent",
-      "desc" : "Updates this panel's element",
+      "desc" : "Updates this panel's element (not for iframe)",
       "isStatic" : false,
       "isConstructor" : false,
       "isPrivate" : false,
index f61d967..c365f0b 100644 (file)
       "memberOf" : "Roo.bootstrap.panel.Content",
       "optvals" : []
     },
+    {
+      "name" : "iframe",
+      "type" : "Boolean",
+      "desc" : "contents are an iframe - makes showing remote sources/CSS feasible..",
+      "memberOf" : "Roo.bootstrap.panel.Content",
+      "optvals" : []
+    },
     {
       "name" : "cls",
       "type" : "String",
       "returns" : [
         {
           "name" : "",
-          "type" : "Roo.UpdateManager",
-          "desc" : "The UpdateManager"
+          "type" : "Roo.UpdateManager|Boolean",
+          "desc" : "The UpdateManager or false if IFRAME"
         }
       ]
     },
     },
     {
       "name" : "load",
-      "desc" : "Loads this content panel immediately with content from XHR. Note: to delay loading until the panel is activated, use {@link #setUrl}.",
+      "desc" : "Loads this content panel immediately with content from XHR. Note: to delay loading until the panel is activated, use {@link #setUrl}.\nDoes not work with IFRAME contents",
       "isStatic" : false,
       "isConstructor" : false,
       "isPrivate" : false,
     },
     {
       "name" : "setContent",
-      "desc" : "Updates this panel's element",
+      "desc" : "Updates this panel's element (not for iframe)",
       "isStatic" : false,
       "isConstructor" : false,
       "isPrivate" : false,
index b014780..90eeacb 100644 (file)
       "memberOf" : "Roo.bootstrap.panel.Content",
       "optvals" : []
     },
+    {
+      "name" : "iframe",
+      "type" : "Boolean",
+      "desc" : "contents are an iframe - makes showing remote sources/CSS feasible..",
+      "memberOf" : "Roo.bootstrap.panel.Content",
+      "optvals" : []
+    },
     {
       "name" : "cls",
       "type" : "String",
       "returns" : [
         {
           "name" : "",
-          "type" : "Roo.UpdateManager",
-          "desc" : "The UpdateManager"
+          "type" : "Roo.UpdateManager|Boolean",
+          "desc" : "The UpdateManager or false if IFRAME"
         }
       ]
     },
     },
     {
       "name" : "load",
-      "desc" : "Loads this content panel immediately with content from XHR. Note: to delay loading until the panel is activated, use {@link #setUrl}.",
+      "desc" : "Loads this content panel immediately with content from XHR. Note: to delay loading until the panel is activated, use {@link #setUrl}.\nDoes not work with IFRAME contents",
       "isStatic" : false,
       "isConstructor" : false,
       "isPrivate" : false,
     },
     {
       "name" : "setContent",
-      "desc" : "Updates this panel's element",
+      "desc" : "Updates this panel's element (not for iframe)",
       "isStatic" : false,
       "isConstructor" : false,
       "isPrivate" : false,
index 637d27a..8d35221 100644 (file)
@@ -39514,11 +39514,11 @@ Roo.bootstrap.panel.Content = function( config){
                     " roo-layout-inactive-content",
                 id: config.id||el
             };
-            if (this.iframe) {
+            if (config.iframe) {
                 elcfg.cn = [
                     {
                         tag : 'iframe',
-                        style : 'border 0px',
+                        style : 'border: 0px',
                         src : 'about:blank'
                     }
                 ];
@@ -39530,7 +39530,7 @@ Roo.bootstrap.panel.Content = function( config){
             }
                         
             this.el = Roo.DomHelper.append(document.body, elcfg , true);
-            if (this.iframe) {
+            if (config.iframe) {
                 this.iframeEl = this.el.select('iframe',true).first();
             }
             
@@ -39669,6 +39669,7 @@ Roo.extend(Roo.bootstrap.panel.Content, Roo.bootstrap.Component, {
     tabTip : '',
     
     iframe : false,
+    iframeEl : false,
     
     setRegion : function(region){
         this.region = region;
@@ -39858,8 +39859,14 @@ panel.load({
                 this.el.setSize(width, height);
             }
             var size = this.adjustForComponents(width, height);
+            if (this.iframe) {
+                this.iframeEl.setSize(width,height);
+            }
+            
             this.resizeEl.setSize(this.autoWidth ? "auto" : size.width, this.autoHeight ? "auto" : size.height);
             this.fireEvent('resize', this, size.width, size.height);
+            
+            
         }
     },
     
index 1735a81..a818a1c 100644 (file)
@@ -1699,12 +1699,12 @@ this.split.el.setLeft(A.x+A.width);this.split.el.setTop(A.y);this.split.el.setHe
 Roo.namespace("Roo.bootstrap.panel");
 // Roo/bootstrap/panel/Content.js
 Roo.bootstrap.panel.Content=function(A){this.tpl=A.tpl||false;var el=A.el;var B=A.content;if(A.autoCreate){el=Roo.id();}this.el=Roo.get(el);if(!this.el&&A&&A.autoCreate){if(typeof A.autoCreate=="object"){if(!A.autoCreate.id){A.autoCreate.id=A.id||el;}this.el=Roo.DomHelper.append(document.body,A.autoCreate,true);
-}else{var C={tag:"div",cls:(A.cls||'')+(A.background?' bg-'+A.background:'')+" roo-layout-inactive-content",id:A.id||el};if(this.iframe){C.cn=[{tag:'iframe',style:'border 0px',src:'about:blank'}];}if(A.html){C.html=A.html;}this.el=Roo.DomHelper.append(document.body,C,true);
-if(this.iframe){this.iframeEl=this.el.select('iframe',true).first();}}}this.closable=false;this.loaded=false;this.active=false;if(A.toolbar&&!A.toolbar.el&&A.toolbar.xtype){this.toolbar=new A.toolbar.xns[A.toolbar.xtype](A.toolbar);this.wrapEl=this.el;var ti=[];
+}else{var C={tag:"div",cls:(A.cls||'')+(A.background?' bg-'+A.background:'')+" roo-layout-inactive-content",id:A.id||el};if(A.iframe){C.cn=[{tag:'iframe',style:'border: 0px',src:'about:blank'}];}if(A.html){C.html=A.html;}this.el=Roo.DomHelper.append(document.body,C,true);
+if(A.iframe){this.iframeEl=this.el.select('iframe',true).first();}}}this.closable=false;this.loaded=false;this.active=false;if(A.toolbar&&!A.toolbar.el&&A.toolbar.xtype){this.toolbar=new A.toolbar.xns[A.toolbar.xtype](A.toolbar);this.wrapEl=this.el;var ti=[];
 if(A.toolbar.items){ti=A.toolbar.items;delete A.toolbar.items;}var D=[];this.toolbar.render(this.wrapEl,'before');for(var i=0;i<ti.length;i++){D.push(this.toolbar.addxtype(Roo.apply({},ti[i])));}this.toolbar.items=D;this.toolbar.el.insertBefore(this.wrapEl.dom.firstChild);
 delete A.toolbar;}if(typeof A=="string"){this.title=A;}else{Roo.apply(this,A);}if(this.resizeEl){this.resizeEl=Roo.get(this.resizeEl,true);}else{this.resizeEl=this.el;}this.addEvents({"activate":true,"deactivate":true,"resize":true,"render":true});if(this.autoScroll&&!this.iframe){this.resizeEl.setStyle("overflow","auto");
 }else{}B=B||this.content;if(B){this.setContent(B);}if(A&&A.url){this.setUrl(this.url,this.params,this.loadOnce);}Roo.bootstrap.panel.Content.superclass.constructor.call(this);if(this.view&&typeof(this.view.xtype)!='undefined'){this.view.el=this.el.appendChild(document.createElement("div"));
-this.view=Roo.factory(this.view);this.view.render&&this.view.render(false,'');}this.fireEvent('render',this);};Roo.extend(Roo.bootstrap.panel.Content,Roo.bootstrap.Component,{cls:'',background:'',tabTip:'',iframe:false,setRegion:function(A){this.region=A;
+this.view=Roo.factory(this.view);this.view.render&&this.view.render(false,'');}this.fireEvent('render',this);};Roo.extend(Roo.bootstrap.panel.Content,Roo.bootstrap.Component,{cls:'',background:'',tabTip:'',iframe:false,iframeEl:false,setRegion:function(A){this.region=A;
 this.setActiveClass(A&&!this.background);},setActiveClass:function(A){if(A){this.el.replaceClass("roo-layout-inactive-content","roo-layout-active-content");this.el.setStyle('position','relative');}else{this.el.replaceClass("roo-layout-active-content","roo-layout-inactive-content");
 this.el.setStyle('position','absolute');}},getToolbar:function(){return this.toolbar;},setActiveState:function(A){this.active=A;this.setActiveClass(A);if(!A){if(this.fireEvent("deactivate",this)===false){return false;}return true;}this.fireEvent("activate",this);
 return true;},setContent:function(A,B){if(this.iframe){return;}this.el.update(A,B);},ignoreResize:function(w,h){if(this.lastSize&&this.lastSize.width==w&&this.lastSize.height==h){return true;}else{this.lastSize={width:w,height:h};return false;}},getUpdateManager:function(){if(this.iframe){return false;
@@ -1712,10 +1712,11 @@ return true;},setContent:function(A,B){if(this.iframe){return;}this.el.update(A,
 }this.refreshDelegate=this._handleRefresh.createDelegate(this,[A,B,C]);this.on("activate",this.refreshDelegate);return this.el.getUpdateManager();},_handleRefresh:function(A,B,C){if(!C||!this.loaded){var D=this.el.getUpdateManager();D.update(A,B,this._setLoaded.createDelegate(this));
 }},_setLoaded:function(){this.loaded=true;},getId:function(){return this.el.id;},getEl:function(){return this.wrapEl||this.el;},adjustForComponents:function(A,B){if(this.resizeEl!=this.el){A-=this.el.getFrameWidth('lr');B-=this.el.getFrameWidth('tb');}if(this.toolbar){var te=this.toolbar.getEl();
 te.setWidth(A);B-=te.getHeight();}if(this.footer){var te=this.footer.getEl();te.setWidth(A);B-=te.getHeight();}if(this.adjustments){A+=this.adjustments[0];B+=this.adjustments[1];}return {"width":A,"height":B};},setSize:function(A,B){if(this.fitToFrame&&!this.ignoreResize(A,B)){if(this.fitContainer&&this.resizeEl!=this.el){this.el.setSize(A,B);
-}var C=this.adjustForComponents(A,B);this.resizeEl.setSize(this.autoWidth?"auto":C.width,this.autoHeight?"auto":C.height);this.fireEvent('resize',this,C.width,C.height);}},getTitle:function(){if(typeof(this.title)!='object'){return this.title;}var t='';for(var k in this.title){if(!this.title.hasOwnProperty(k)){continue;
-}if(k.indexOf('-')>=0){var s=k.split('-');for(var i=0;i<s.length;i++){t+="<span class='visible-"+s[i]+"'>"+this.title[k]+"</span>";}}else{t+="<span class='visible-"+k+"'>"+this.title[k]+"</span>";}}return t;},setTitle:function(A){this.title=A;if(this.region){this.region.updatePanelTitle(this,A);
-}},isClosable:function(){return this.closable;},beforeSlide:function(){this.el.clip();this.resizeEl.clip();},afterSlide:function(){this.el.unclip();this.resizeEl.unclip();},refresh:function(){if(this.refreshDelegate){this.loaded=false;this.refreshDelegate();
-}},destroy:function(){this.el.removeAllListeners();var A=document.createElement("span");A.appendChild(this.el.dom);A.innerHTML="";this.el.remove();this.el=null;},form:false,view:false,getChildContainer:function(){return this.getEl();}});
+}var C=this.adjustForComponents(A,B);if(this.iframe){this.iframeEl.setSize(A,B);}this.resizeEl.setSize(this.autoWidth?"auto":C.width,this.autoHeight?"auto":C.height);this.fireEvent('resize',this,C.width,C.height);}},getTitle:function(){if(typeof(this.title)!='object'){return this.title;
+}var t='';for(var k in this.title){if(!this.title.hasOwnProperty(k)){continue;}if(k.indexOf('-')>=0){var s=k.split('-');for(var i=0;i<s.length;i++){t+="<span class='visible-"+s[i]+"'>"+this.title[k]+"</span>";}}else{t+="<span class='visible-"+k+"'>"+this.title[k]+"</span>";
+}}return t;},setTitle:function(A){this.title=A;if(this.region){this.region.updatePanelTitle(this,A);}},isClosable:function(){return this.closable;},beforeSlide:function(){this.el.clip();this.resizeEl.clip();},afterSlide:function(){this.el.unclip();this.resizeEl.unclip();
+},refresh:function(){if(this.refreshDelegate){this.loaded=false;this.refreshDelegate();}},destroy:function(){this.el.removeAllListeners();var A=document.createElement("span");A.appendChild(this.el.dom);A.innerHTML="";this.el.remove();this.el=null;},form:false,view:false,getChildContainer:function(){return this.getEl();
+}});
 // Roo/bootstrap/panel/Grid.js
 Roo.bootstrap.panel.Grid=function(A){this.wrapper=Roo.DomHelper.append(document.body,{tag:"div",cls:"roo-layout-grid-wrapper roo-layout-inactive-content"},true);A.el=this.wrapper;if(A.container){this.wrapper.setStyle("overflow","hidden");this.wrapper.addClass('roo-grid-container');
 }if(A.toolbar){var B=this.wrapper.createChild();this.toolbar=Roo.factory(A.toolbar);var ti=[];if(A.toolbar.items){ti=A.toolbar.items;delete A.toolbar.items;}var C=[];this.toolbar.render(B);for(var i=0;i<ti.length;i++){C.push(this.toolbar.addxtype(Roo.apply({}