ActionBar: bei Click auf Combo ohne oberste Action Menü aufklappen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 9 Nov 2016 11:28:11 +0000 (12:28 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 28 Feb 2017 09:04:33 +0000 (10:04 +0100)
Manche Comboboxes wie z.B. »Workflow« oder »mehr« haben auf dem obersten
Button keine Action konfiguriert (weder »submit« noch »call«). Um die
Benutzer nicht zu sehr zu verwirren, werden diese nun nicht mehr als
deaktiviert dargestellt. Bei einem Klick auf den Button-Teil der
Combobox wird dann das Menü aufgeklappt, genau so, als hätte man auf den
Pfeil-Teil geklickt.

bin/mozilla/ir.pl
bin/mozilla/is.pl
bin/mozilla/oe.pl
js/kivi.ActionBar.js

index 69dd201..ecd2696 100644 (file)
@@ -267,9 +267,7 @@ sub setup_ir_action_bar {
     $bar->add_actions('separator');
 
     $bar->add_actions('combobox');
-    $bar->actions->[-1]->add_actions([ t8('more'),
-      disabled => 1,
-    ]);
+    $bar->actions->[-1]->add_actions([ t8('more') ]);
     $bar->actions->[-1]->add_actions([ t8('History'),
       call     => [ 'set_history_window', $::form->{id} * 1, 'id', 'glid' ],
       disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
index c2e6968..297a87d 100644 (file)
@@ -309,9 +309,7 @@ sub setup_is_action_bar {
     $bar->add_actions('separator');
 
     $bar->add_actions('combobox');
-    $bar->actions->[-1]->add_actions([ t8('Workflow'),
-      disabled => 1,
-    ]);
+    $bar->actions->[-1]->add_actions([ t8('Workflow') ]);
     $bar->actions->[-1]->add_actions([ t8('Use As New'),
       submit   => [ '#form', { action_use_as_new    => 1 } ],
       disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
@@ -329,9 +327,7 @@ sub setup_is_action_bar {
     ]);
 
     $bar->add_actions('combobox');
-    $bar->actions->[-1]->add_actions([ t8('Export'),
-      disabled => 1,
-    ]);
+    $bar->actions->[-1]->add_actions([ t8('Export') ]);
     $bar->actions->[-1]->add_actions([ ($form->{id} ? t8('Print') : t8('Preview')),
       submit   => [ '#form', { action_print => 1 } ],
       checks   => [ @req_trans_desc ],
@@ -343,9 +339,7 @@ sub setup_is_action_bar {
       disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
     ]);
     $bar->add_actions('combobox');
-    $bar->actions->[-1]->add_actions([ t8('more'),
-      disabled => 1,
-    ]);
+    $bar->actions->[-1]->add_actions([ t8('more') ]);
     $bar->actions->[-1]->add_actions([ t8('History'),
       call     => [ 'set_history_window', $form->{id} * 1, 'id' ],
       disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
index 16a27b6..4f28be8 100644 (file)
@@ -352,9 +352,7 @@ sub setup_oe_action_bar {
     $bar->add_actions('separator');
 
     $bar->add_actions('combobox');
-    $bar->actions->[-1]->add_actions([ t8('Workflow'),
-      disabled => 1,
-    ]);
+    $bar->actions->[-1]->add_actions([ t8('Workflow') ]);
     $bar->actions->[-1]->add_actions([ t8('Sales Order'),
       submit   => [ '#form', { action_sales_order => 1 } ],
       disabled => !$form->{id} ? t8('This record has not been saved yet.') : undef,
@@ -381,9 +379,7 @@ sub setup_oe_action_bar {
     ]);
 
     $bar->add_actions('combobox');
-    $bar->actions->[-1]->add_actions([ t8('Export'),
-      disabled => 1,
-    ]);
+    $bar->actions->[-1]->add_actions([ t8('Export') ]);
     $bar->actions->[-1]->add_actions([ t8('Print'),
       submit => [ '#form', { action_print => 1 } ],
       checks => [ @req_trans_desc ],
@@ -393,9 +389,7 @@ sub setup_oe_action_bar {
       checks => [ @req_trans_desc ],
     ]);
     $bar->add_actions('combobox');
-    $bar->actions->[-1]->add_actions([ t8('more'),
-      disabled => 1,
-    ]);
+    $bar->actions->[-1]->add_actions([ t8('more') ]);
     $bar->actions->[-1]->add_actions([ t8('History'),
       call     => [ 'set_history_window', $form->{id} * 1, 'id' ],
       disabled => !$form->{id} ? t8('This record has not been saved yet.') : undef,
index 0963d73..cda1935 100644 (file)
@@ -10,21 +10,28 @@ namespace('kivi', function(k){
   };
 
   k.ActionBarCombobox = function(e) {
-    this.combobox = e;
-    this.head     = e.childNodes[0];
-    this.toggle   = this.head.childNodes[1];
-    this.list     = e.childNodes[0];
+    this.combobox  = e;
+    this.head      = e.childNodes[0];
+    this.topAction = this.head.childNodes[0];
+    this.toggle    = this.head.childNodes[1];
+    this.list      = e.childNodes[0];
     this.init();
   };
 
   k.ActionBarCombobox.prototype = {
     init: function() {
-      var obj = this;
-      $(obj.toggle).on('click', function(event){
+      var obj     = this;
+      var toggler = function(event){
         $('div.' + CLASSES.combobox + '[id!=' + obj.combobox.id + ']').removeClass(CLASSES.active);
         $(obj.combobox).toggleClass(CLASSES.active);
         event.stopPropagation();
-      });
+      };
+
+      $(obj.toggle).on('click', toggler);
+
+      var data = $(this.topAction).data('action') || {};
+      if (!data.call && !data.submit)
+        $(this.topAction).on('click', toggler);
     }
   };