/**
 * This mixin is applied to {@link Ext.dataview.DataItem dataitem} and to
 * {@link Ext.dataview.SimpleListItem simplelistitem}.
 * @private
 * @since 6.5.0
 */
Ext.define('Ext.dataview.Disclosable', {
    mixinId: 'disclosable',
 
    isListItem: true,
 
    toolDefaults: {
        ui: 'listitem'
    },
 
    toolAnchorName: 'innerElement',
 
    getDisclosure: function () {
        return this.lookupTool('disclosure');
    },
 
    privates: {
        invokeDisclosure: function (tool, handler, e) {
            var parent = this.parent;
 
            if (tool.type === 'disclosure' && !handler) {
 
                if (parent && parent.onItemDisclosureTap) {
                    parent.onItemDisclosureTap(this, e);
                    return true;
                }
            }
        },
 
        syncDisclosure: function (record) {
            var me = this,
                disclosure = me.getDisclosure(),
                parent = me.parent;
 
            if (disclosure) {
                disclosure.setHidden(parent.shouldHideDisclosure(record));
            }
        }
    }
});