浏览代码

Merge branch 'dev' of ssh://10.10.100.21/source/saas-platform into dev

zhuth 7 年之前
父节点
当前提交
00980251e1
共有 1 个文件被更改,包括 42 次插入16 次删除
  1. 42 16
      frontend/saas-web/app/view/core/form/MultiCombo.js

+ 42 - 16
frontend/saas-web/app/view/core/form/MultiCombo.js

@@ -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();
     }
 });