File Coverage

blib/lib/Moonshine/Bootstrap/Component/NavbarCollapse.pm
Criterion Covered Total %
statement 21 25 84.0
branch 4 10 40.0
condition 1 2 50.0
subroutine 4 4 100.0
pod n/a
total 30 41 73.1


line stmt bran cond sub pod time code
1             package Moonshine::Bootstrap::Component::NavbarCollapse;
2              
3 6     6   158573 use Moonshine::Magic;
  6         90974  
  6         52  
4 6     6   3698 use Params::Validate qw/ARRAYREF/;
  6         18  
  6         484  
5              
6 6     6   697 use Switch::Back;
  6         1458106  
  6         83  
7              
8             extends(
9             'Moonshine::Bootstrap::Component',
10             'Moonshine::Bootstrap::Component::NavbarNav',
11             'Moonshine::Bootstrap::Component::NavbarButton',
12             'Moonshine::Bootstrap::Component::NavbarForm',
13             'Moonshine::Bootstrap::Component::NavbarText',
14             'Moonshine::Bootstrap::Component::NavbarTextLink',
15             );
16              
17             has(
18             navbar_collapse_spec => sub {
19             {
20             tag => { default => 'div' },
21             id => 1,
22             class_base => { default => 'collapse navbar-collapse' },
23             navs => {
24             type => ARRAYREF,
25             }
26             };
27             }
28             );
29              
30             sub navbar_collapse {
31 7     7   65272 my ($self) = shift;
32              
33 7   50     92 my ( $base_args, $build_args ) = $self->validate_build(
34             {
35             params => $_[0] // {},
36             spec => $self->navbar_collapse_spec,
37             }
38             );
39              
40 7         162 my $base_element = Moonshine::Element->new($base_args);
41              
42 7         19623 for my $nav ( @{ $build_args->{navs} } ) {
  7         41  
  15         253  
43 15 100       34 given ( delete $nav->{nav_type} ) {
  15 50       83  
  15 50       103  
    0          
    0          
44 0         0 when ('nav') {
45 11         2027 $base_element->add_child( $self->navbar_nav($nav) );
46             }
47             when ('button') {
48 0         0 $base_element->add_child( $self->navbar_button($nav) );
49             }
50             when ('form') {
51 4         1958 $base_element->add_child( $self->navbar_form($nav) );
52             }
53             when ('text') {
54 0         0 $base_element->add_child( $self->navbar_text($nav) );
55             }
56             when ('text_link') {
57 0         0 $base_element->add_child( $self->navbar_text_link($nav) );
58             }
59             }
60             }
61              
62 7         282 return $base_element;
63             }
64              
65             1;
66              
67             __END__