Moonshine-Bootstrap
view release on metacpan or search on metacpan
lib/Moonshine/Bootstrap/Component/NavItem.pm view on Meta::CPAN
package Moonshine::Bootstrap::Component::NavItem;
use Moonshine::Magic;
use Params::Validate qw/HASHREF/;
extends (
'Moonshine::Bootstrap::Component',
'Moonshine::Bootstrap::Component::LinkedLi',
'Moonshine::Bootstrap::Component::DropdownUl',
);
has(
nav_item_spec => sub {
{
role => { default => "presentation" },
link => { default => '#', base => 1 },
disable => { base => 1, optional => 1 },
dropdown => { build => 1, type => HASHREF, optional => 1 }
};
}
);
sub nav_item {
my ($self) = shift;
my ( $base_args, $build_args ) = $self->validate_build(
{
params => $_[0] // {},
spec => $self->nav_item_spec,
}
);
my $li = $self->linked_li($base_args);
if ( my $dropdown = $build_args->{dropdown} ) {
my $a = $li->children->[0];
$a->set(
{
class => 'dropdown-toggle',
role => 'button',
aria_haspopup => 'true',
aria_expanded => 'false',
data_toggle => 'dropdown'
}
);
$li->add_child( $self->dropdown_ul($dropdown) );
}
return $li;
}
1;
__END__
=head1 NAME
Moonshine::Bootstrap::Component::NavItem
=head1 SYNOPSIS
$self->nav_item;
=head3 options
=over
=item class
=item role
=item link
=item active
=item data
=item disable
=item dropdown
=back
=head3 renders
<li role="presentation" class="active"><a href="#">Home</a></li>
=cut
( run in 1.263 second using v1.01-cache-2.11-cpan-364913b4093 )