/**
* A SimpleListItem is a simplified list item that is used by {@link Ext.dataview.List} when
* useSimpleItems is set to true. It supports disclosure icons and headers and generates the
* slimmest markup possible to achieve this. It doesn't support container functionality like adding
* or docking items. If you require those features you should have your list use
* {@link Ext.dataview.component.ListItem} instances.
*/
Ext.define('Ext.dataview.component.SimpleListItem', {
extend: 'Ext.Component',
xtype : 'simplelistitem',
config: {
baseCls: Ext.baseCSSPrefix + 'list-item',
disclosure: {
xtype: 'component',
cls: 'x-list-disclosure',
hidden: true
},
xtype: 'component',
cls: 'x-list-header',
html: ' '
},
/*
* @private dataview
*/
dataview: null,
/**
* @cfg {Ext.data.Model} record The model instance of this ListTplItem. It is controlled by the List.
* @accessor
*/
record: null
},
initialize: function() {
this.element.addCls(this.getBaseCls() + '-tpl');
},
if (header && !header.isComponent) {
header = Ext.factory(header, Ext.Component, this.getHeader());
}
return header;
},
if (oldHeader) {
oldHeader.destroy();
}
},
applyDisclosure: function(disclosure) {
if (disclosure && !disclosure.isComponent) {
disclosure = Ext.factory(disclosure, Ext.Component, this.getDisclosure());
}
return disclosure;
},
updateDisclosure: function(disclosure, oldDisclosure) {
if (disclosure) {
this.element.appendChild(disclosure.renderElement);
} else if (oldDisclosure) {
oldDisclosure.destroy();
}
},
updateRecord: function(record) {
var me = this,
dataview = me.dataview || this.getDataview(),
data = record && dataview.prepareData(record.getData(true), dataview.getStore().indexOf(record), record),
disclosure = this.getDisclosure();
me.updateData(data || null);
if (disclosure && record && dataview.getOnItemDisclosure()) {
var disclosureProperty = dataview.getDisclosureProperty();
disclosure[(data.hasOwnProperty(disclosureProperty) && data[disclosureProperty] === false) ? 'hide' : 'show']();
}
},
destroy: function() {
Ext.destroy(this.getHeader(), this.getDisclosure());
this.callParent(arguments);
}
});