Просмотр исходного кода

panel: open panel menu by click on header

Alexander Zobnin 8 лет назад
Родитель
Сommit
0c7bf42dd6
1 измененных файлов с 26 добавлено и 5 удалено
  1. 26 5
      public/app/features/panel/panel_header.ts

+ 26 - 5
public/app/features/panel/panel_header.ts

@@ -86,9 +86,10 @@ function panelHeader($compile) {
 
       let menuElem = elem.find('.panel-menu');
       let menuScope;
+      let isDragged;
 
       elem.click(function(evt) {
-        //const targetClass = evt.target.className;
+        const targetClass = evt.target.className;
 
         // remove existing scope
         if (menuScope) {
@@ -100,10 +101,30 @@ function panelHeader($compile) {
         menuElem.html(menuHtml);
         $compile(menuElem)(menuScope);
 
-        // if (targetClass === 'panel-title-text' || targetClass === 'panel-title') {
-        //   evt.stopPropagation();
-        //   elem.find('[data-toggle=dropdown]').dropdown('toggle');
-        // }
+        if (targetClass.indexOf('panel-title-text') >= 0 || targetClass.indexOf('panel-title') >= 0) {
+          togglePanelMenu(evt);
+        }
+      });
+
+      function togglePanelMenu(e) {
+        if (!isDragged) {
+          e.stopPropagation();
+          elem.find('[data-toggle=dropdown]').dropdown('toggle');
+        }
+      }
+
+      let mouseX, mouseY;
+      elem.mousedown((e) => {
+        mouseX = e.pageX;
+        mouseY = e.pageY;
+      });
+
+      elem.mouseup((e) => {
+        if (mouseX === e.pageX && mouseY === e.pageY) {
+          isDragged = false;
+        } else {
+          isDragged = true;
+        }
       });
     }
   };