X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/0494b8d9b9bb03ab6c22b34dae81261e3cd7e3e6..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/src/layout/container/Auto.js diff --git a/src/layout/container/Auto.js b/src/layout/container/Auto.js new file mode 100644 index 00000000..67807ce9 --- /dev/null +++ b/src/layout/container/Auto.js @@ -0,0 +1,72 @@ +/** + * @class Ext.layout.container.Auto + * @extends Ext.layout.container.Container + * + *

The AutoLayout is the default layout manager delegated by {@link Ext.container.Container} to + * render any child Components when no {@link Ext.container.Container#layout layout} is configured into + * a {@link Ext.container.Container Container}.. AutoLayout provides only a passthrough of any layout calls + * to any child containers.

+ * {@img Ext.layout.container.Auto/Ext.layout.container.Auto.png Ext.layout.container.Auto container layout} + * Example usage: + Ext.create('Ext.Panel', { + width: 500, + height: 280, + title: "AutoLayout Panel", + layout: 'auto', + renderTo: document.body, + items: [{ + xtype: 'panel', + title: 'Top Inner Panel', + width: '75%', + height: 90 + },{ + xtype: 'panel', + title: 'Bottom Inner Panel', + width: '75%', + height: 90 + }] + }); + */ + +Ext.define('Ext.layout.container.Auto', { + + /* Begin Definitions */ + + alias: ['layout.auto', 'layout.autocontainer'], + + extend: 'Ext.layout.container.Container', + + /* End Definitions */ + + type: 'autocontainer', + + fixedLayout: false, + + bindToOwnerCtComponent: true, + + // @private + onLayout : function(owner, target) { + var me = this, + items = me.getLayoutItems(), + ln = items.length, + i; + + // Ensure the Container is only primed with the clear element if there are child items. + if (ln) { + // Auto layout uses natural HTML flow to arrange the child items. + // To ensure that all browsers (I'm looking at you IE!) add the bottom margin of the last child to the + // containing element height, we create a zero-sized element with style clear:both to force a "new line" + if (!me.clearEl) { + me.clearEl = me.getRenderTarget().createChild({ + cls: Ext.baseCSSPrefix + 'clear', + role: 'presentation' + }); + } + + // Auto layout allows CSS to size its child items. + for (i = 0; i < ln; i++) { + me.setItemSize(items[i]); + } + } + } +}); \ No newline at end of file