|
|
@@ -5,8 +5,6 @@ Ext.define('saas.view.core.form.MultiCombo', {
|
|
|
extend: 'Ext.form.field.Trigger',
|
|
|
alias: 'widget.multicombo',
|
|
|
editable : false,
|
|
|
- displayField:'display',
|
|
|
- valueField:'value',
|
|
|
matchFieldWidth: true,
|
|
|
cachedConfig: {
|
|
|
menuAlign: 'tl-bl?',
|
|
|
@@ -16,7 +14,26 @@ Ext.define('saas.view.core.form.MultiCombo', {
|
|
|
var me = this;
|
|
|
me.callParent(arguments);
|
|
|
},
|
|
|
- onTriggerClick:function(f){
|
|
|
+ listeners:{
|
|
|
+ afterrender:function(f){
|
|
|
+ this.mon(f.el,{
|
|
|
+ mouseover: this.onMouseOver,
|
|
|
+ mouseleave:this.onMouseLeave,
|
|
|
+ scope:this
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ onMouseOver:function(){
|
|
|
+ this.showMenu();
|
|
|
+ },
|
|
|
+ onMouseLeave:function(a,b,c){
|
|
|
+ console.log(a);
|
|
|
+ console.log(b);
|
|
|
+ console.log(c);
|
|
|
+ this.hideMenu(a.parentEvent?a:b);//el光标离开第二个参数为Event对象
|
|
|
+ },
|
|
|
+ onTriggerClick:function(){
|
|
|
this.showMenu();
|
|
|
},
|
|
|
getMenu: function() {
|
|
|
@@ -26,10 +43,12 @@ Ext.define('saas.view.core.form.MultiCombo', {
|
|
|
|
|
|
me.menu = Ext.create('Ext.menu.Menu',{
|
|
|
hideOnParentHide: false,
|
|
|
- items: me.getMenuItems()
|
|
|
- //listners
|
|
|
+ items: me.getMenuItems(),
|
|
|
+ listeners:{
|
|
|
+ mouseleave:me.onMouseLeave,
|
|
|
+ scope:me
|
|
|
+ }
|
|
|
});
|
|
|
- me.fireEvent('menucreate', me, me.menu);
|
|
|
}
|
|
|
return me.menu;
|
|
|
},
|
|
|
@@ -37,8 +56,8 @@ Ext.define('saas.view.core.form.MultiCombo', {
|
|
|
var me = this,
|
|
|
i = 0,
|
|
|
item,
|
|
|
- items = me.datas;
|
|
|
- itemsLn = me.datas.length,
|
|
|
+ items = me.datas,
|
|
|
+ itemsLn = me.datas.length,
|
|
|
menuItems = [];
|
|
|
for (; i < itemsLn; i++) {
|
|
|
item = items[i];
|
|
|
@@ -68,22 +87,15 @@ Ext.define('saas.view.core.form.MultiCombo', {
|
|
|
},
|
|
|
|
|
|
showMenu: function (e, menu) {
|
|
|
- var isPointerEvent = !e || e.pointerType;
|
|
|
-
|
|
|
menu = menu || this.getMenu();
|
|
|
/**
|
|
|
* menu上边框样式待处理
|
|
|
* */
|
|
|
if (menu) {
|
|
|
if (menu.isVisible()) {
|
|
|
- // Click/tap toggles the menu visibility.
|
|
|
- if (isPointerEvent) {
|
|
|
- menu.hide();
|
|
|
- } else {
|
|
|
menu.focus();
|
|
|
- }
|
|
|
} else {
|
|
|
- menu.autoFocus = !isPointerEvent;
|
|
|
+ menu.autoFocus = true;
|
|
|
if(this.matchFieldWidth){
|
|
|
menu.setWidth(this.bodyEl.getWidth());
|
|
|
}
|
|
|
@@ -96,5 +108,19 @@ Ext.define('saas.view.core.form.MultiCombo', {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ },
|
|
|
+ hideMenu: function(b) {
|
|
|
+ console.log(b);
|
|
|
+ if (this.hasVisibleMenu()) {
|
|
|
+ var target=b.parentEvent.relatedTarget;
|
|
|
+ if(!((target.className && target.className.indexOf('x-menu')!=-1) || (target.name && target.name.indexOf(this.name)!=-1))){
|
|
|
+ this.menu.hide();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return this;
|
|
|
+ },
|
|
|
+ hasVisibleMenu: function() {
|
|
|
+ var menu = this.menu;
|
|
|
+ return menu && menu.rendered && menu.isVisible();
|
|
|
}
|
|
|
});
|