ActionBar: leere ComboBoxen gar nicht anzeigen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 13 Jan 2017 09:29:47 +0000 (10:29 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 28 Feb 2017 09:43:59 +0000 (10:43 +0100)
SL/Layout/ActionBar/Action.pm
SL/Layout/ActionBar/ComboBox.pm
SL/Layout/ActionBar/Link.pm
SL/Layout/ActionBar/Submit.pm

index b72314b..3707dcf 100644 (file)
@@ -4,7 +4,7 @@ use strict;
 use parent qw(Rose::Object);
 
 use SL::Presenter;
-    require SL::Layout::ActionBar::Submit;
+require SL::Layout::ActionBar::Submit;
 
 use Rose::Object::MakeMethods::Generic (
   'scalar --get_set_init' => [ qw(id params text) ],
@@ -30,6 +30,8 @@ sub from_params {
   return SL::Layout::ActionBar::Submit->new(text => $text, params => \%params);
 }
 
+sub callable { 0 }
+
 # shortcut for presenter
 
 sub p {
index 555ae69..0ff0bc1 100644 (file)
@@ -4,6 +4,7 @@ use strict;
 use parent qw(SL::Layout::ActionBar::Action);
 
 use JSON;
+use List::MoreUtils qw(none);
 
 use Rose::Object::MakeMethods::Generic (
   'scalar --get_set_init' => [ qw(actions) ],
@@ -21,6 +22,7 @@ sub from_params {
 sub render {
   my ($first, @rest) = @{ $_[0]->actions };
 
+  return                if none { $_->callable } @{ $_[0]->actions };
   return $first->render if !@rest;
 
   $_[0]->p->html_tag('div',
index 8eb8906..31560c4 100644 (file)
@@ -20,4 +20,6 @@ sub render {
   );
 }
 
+sub callable { 1 }
+
 1;
index a277e3b..a130209 100644 (file)
@@ -10,4 +10,9 @@ sub render {
   );
 }
 
+sub callable {
+  my ($self) = @_;
+  return $self->params->{submit} || $self->params->{call} || $self->params->{link};
+}
+
 1;