File Coverage

blib/lib/Moonshine/Bootstrap/Component/NavbarToggle.pm
Criterion Covered Total %
statement 11 11 100.0
branch n/a
condition 1 2 50.0
subroutine 2 2 100.0
pod n/a
total 14 15 93.3


line stmt bran cond sub pod time code
1             package Moonshine::Bootstrap::Component::NavbarToggle;
2              
3 7     7   310354 use Moonshine::Magic;
  7         157337  
  7         85  
4              
5             extends 'Moonshine::Bootstrap::Component';
6              
7             lazy_components('span');
8              
9             has(
10             navbar_toggle_spec => sub {
11             {
12             tag => { default => 'button' },
13             type => { default => 'button' },
14             class_base => { default => 'navbar-toggle collapsed' },
15             data_toggle => { default => 'collapse' },
16             aria_expanded => { default => 'false' },
17             i => { default => 'icon-bar' },
18             sr_text => { default => 'Toggle navigation' },
19             data_target => 1,
20             };
21             }
22             );
23              
24             sub navbar_toggle {
25 7     7   6264 my ($self) = shift;
26              
27 7   50     89 my ( $base_args, $build_args ) = $self->validate_build(
28             {
29             params => $_[0] // {},
30             spec => $self->navbar_toggle_spec,
31             }
32             );
33              
34 7         78 $base_args->{data_target} = sprintf "#%s", $base_args->{data_target};
35              
36 7         95 my $toggle = Moonshine::Element->new($base_args);
37              
38             $toggle->add_child(
39 7         18659 $self->span( { class => 'sr-only', data => $build_args->{sr_text} } ) );
40              
41 7         19094 for ( 1 .. 3 ) {
42 21         35894 $toggle->add_child( $self->span( { class => $build_args->{i} } ) );
43             }
44              
45 7         17534 return $toggle;
46             }
47              
48             1;
49              
50             __END__