*/
Ext.define('Ext.ux.RowExpander', {
extend: 'Ext.AbstractPlugin',
+
+ requires: [
+ 'Ext.grid.feature.RowBody',
+ 'Ext.grid.feature.RowWrap'
+ ],
+
alias: 'plugin.rowexpander',
rowBodyTpl: null,
grid.features = features;
}
- grid.columns.unshift(this.getHeaderConfig());
- grid.on('afterlayout', this.onGridAfterLayout, this, {single: true});
+ // NOTE: features have to be added before init (before Table.initComponent)
+ },
+
+ init: function(grid) {
+ this.callParent(arguments);
+
+ // Columns have to be added in init (after columns has been used to create the
+ // headerCt). Otherwise, shared column configs get corrupted, e.g., if put in the
+ // prototype.
+ grid.headerCt.insert(0, this.getHeaderConfig());
+ grid.on('render', this.bindView, this, {single: true});
},
getHeaderId: function() {
return o;
},
- onGridAfterLayout: function() {
- var grid = this.getCmp(),
- view, viewEl;
+ bindView: function() {
+ var view = this.getCmp().getView(),
+ viewEl;
- if (!grid.hasView) {
- this.getCmp().on('afterlayout', this.onGridAfterLayout, this, {single: true});
+ if (!view.rendered) {
+ view.on('render', this.bindView, this, {single: true});
} else {
- view = grid.down('gridview');
viewEl = view.getEl();
-
if (this.expandOnEnter) {
this.keyNav = Ext.create('Ext.KeyNav', viewEl, {
'enter' : this.onEnter,
var rowNode = this.view.getNode(rowIdx),
row = Ext.get(rowNode),
nextBd = Ext.get(row).down(this.rowBodyTrSelector),
- record = this.view.getRecord(rowNode);
+ record = this.view.getRecord(rowNode),
+ grid = this.getCmp();
if (row.hasCls(this.rowCollapsedCls)) {
row.removeCls(this.rowCollapsedCls);
this.recordsExpanded[record.internalId] = false;
this.view.fireEvent('collapsebody', rowNode, record, nextBd.dom);
}
+
+
+ // If Grid is auto-heighting itself, then perform a component layhout to accommodate the new height
+ if (!grid.isFixedHeight()) {
+ grid.doComponentLayout();
+ }
this.view.up('gridpanel').invalidateScroller();
},
id: this.getHeaderId(),
width: 24,
sortable: false,
- fixed: true,
+ resizable: false,
draggable: false,
hideable: false,
menuDisabled: true,