File Coverage

blib/lib/Moonshine/Bootstrap/Component/NavbarHeader.pm
Criterion Covered Total %
statement 24 25 96.0
branch 5 6 83.3
condition 1 2 50.0
subroutine 4 4 100.0
pod n/a
total 34 37 91.8


line stmt bran cond sub pod time code
1             package Moonshine::Bootstrap::Component::NavbarHeader;
2              
3 6     6   132944 use Moonshine::Magic;
  6         93249  
  6         47  
4 6     6   3446 use Params::Validate qw/ARRAYREF/;
  6         16  
  6         512  
5              
6 6     6   625 use Switch::Back;
  6         1597905  
  6         76  
7              
8             extends(
9             'Moonshine::Bootstrap::Component',
10             'Moonshine::Bootstrap::Component::LinkImage',
11             'Moonshine::Bootstrap::Component::NavbarToggle',
12             'Moonshine::Bootstrap::Component::NavbarBrand',
13             );
14              
15             has(
16             navbar_header_spec => sub {
17             {
18             tag => { default => 'div' },
19             class_base => { default => 'navbar-header' },
20             headers => {
21             type => ARRAYREF,
22             build => 1,
23             },
24             mid => 0,
25             };
26             }
27             );
28              
29             sub navbar_header {
30 14     14   39354 my ($self) = shift;
31              
32 14   50     173 my ( $base_args, $build_args ) = $self->validate_build(
33             {
34             params => $_[0] // {},
35             spec => $self->navbar_header_spec,
36             }
37             );
38              
39 14         230 my $base_element = Moonshine::Element->new($base_args);
40              
41 14         33172 for my $header ( @{ $build_args->{headers} } ) {
  14         107  
  20         214  
42 20 100       48 given ( delete $header->{header_type} ) {
  20 100       117  
  20 50       147  
43 0         0 when ('link_image') {
44 12         2200 $header->{class} = 'navbar-brand';
45 12         257 $base_element->add_child( $self->link_image($header) );
46             }
47             when ('toggle') {
48 4         1087 $header->{data_target} = $build_args->{mid};
49 4         101 $base_element->add_child( $self->navbar_toggle($header) );
50             }
51             when ('brand') {
52 4         1514 $base_element->add_child( $self->navbar_brand($header) );
53             }
54             }
55             }
56              
57 14         11083 return $base_element;
58             }
59              
60             1;
61              
62             __END__