web-apps/vendor/touch/src/ux/MenuButton.js
2016-09-14 15:04:28 +03:00

89 lines
1.8 KiB
JavaScript

/**
* User extention designed to be used on the BB10 platform.
*
* @private
*/
Ext.define('Ext.ux.MenuButton', {
extend: 'Ext.Button',
requires: ['Ext.ux.ContextMenu'],
config: {
/**
* @hide
*/
ui: 'tab',
/**
* @hide
*/
cls: 'menu',
menuConfig: {},
menuItems: [],
/**
* @hide
*/
menuSide: 'right',
/**
* @hide
*/
menuCover: false,
/**
* @hide
*/
menuCls: null,
/**
* @hide
*/
listeners: {
tap: 'onTap'
}
},
/**
* @private
* Used to show the menu associated with this button
*/
onTap: function(e) {
if (this.$menu) {
this.$menu.destroy();
}
this.element.addCls('x-open');
this.$menu = Ext.create('Ext.ux.ContextMenu', Ext.apply({}, this.getMenuConfig(), {
cls: this.getMenuCls(),
items: this.getMenuItems(),
listeners: {
scope: this,
hide: function() {
if (this.$menu) {
this.element.removeCls('x-open');
Ext.Viewport.removeMenu(this.getMenuSide());
this.$menu.destroy();
}
}
}
}));
this.$menu.on({
scope: this,
tap: this.onMenuButtonTap,
delegate: 'button'
});
Ext.Viewport.setMenu(this.$menu, {
side: this.getMenuSide(),
cover: this.getMenuCover()
});
Ext.Viewport.showMenu(this.getMenuSide());
},
onMenuButtonTap: Ext.emptyFn
});