List with Swipe effect

Always wanted to write a method to present options for a list item on a gesture handler, always thought that would be a cool feature.
Of course one could easily think of extending Ext.dataview.List or writing some item tpl to implement this.
My choise was to write a plugin that would enable this. 

  source

Ext.define('Extras.plugin.ListSwipeRenderer', {
	 extend: 'Ext.Component',
	alias: 'plugin.listswiperenderer',
	requires:['Ext.Anim'],
	config:{
		list:null,
		renderer:null,
		rendererTpl:'the swipe for {title}'
	},
	init:function(list) {
		this.setList(list);
		list.on('itemswipe',Ext.bind(this.onItemSwipe, this));
	},
	onItemSwipe:function( list, index, target, record, e, eOpts){
		var self = this;

		if(this.lastItem && this.lastRenderer)
		{ 
			Ext.Anim.run( this.lastRenderer, 'fade', {
                            out: true,
                            duration: 200,
                            after:function(){
                            	var flag = self.lastItem != target;
                            	self.lastItem.child('div').show();
                            	self.lastRenderer.hide();
                            	Ext.removeNode(self.lastRenderer);
                            	self.lastItem = self.lastRenderer = null;
                            	flag && self.onItemSwipe( list, index, target, record, e, eOpts);
                            }
                        });
			return;
		}

				var tpl =  Ext.DomHelper.createTemplate( {tag: 'div', class:'x-list-item-label', html: this.getRendererTpl() });
				this.lastRenderer = Ext.get( tpl.append(target, record.getData()) );
				this.lastItem = target;
				Ext.Anim.run( this.lastRenderer, 'fade', {
                            out: false,
                            duration: 400,
                            after:function(){
                            	
                            }
                        });
				target.child('div').hide();

		
	}

});

/**
 launch: function() {
        // Destroy the #appLoadingIndicator element
        Ext.fly('appLoadingIndicator').destroy();

        // Initialize the main view
        Ext.Viewport.add( {
            xtype:'list',
            fullscreen: true,
            itemTpl: '{title}',
            data: [
                { title: 'Item 1' },
                { title: 'Item 2' },
                { title: 'Item 3' },
                { title: 'Item 4' }
            ],
            plugins:[
                {
                 xclass: 'Extras.plugin.ListSwipeRenderer'
              }
            ]
        });
    },
**/