view release on metacpan or search on metacpan
lib/Moonshine/Bootstrap/Component/ButtonGroup.pm view on Meta::CPAN
ArrayRef of Hashes, that can build nested button_groups
nested => [
{
index => 3,
dropdown => 1,
},
...
],
<div class="btn-group" role="group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="#">Dropdown link</a></li>
<li><a href="#">Dropdown link</a></li>
</ul>
</div>
=item vertical
lib/Moonshine/Bootstrap/Component/Dropdown.pm view on Meta::CPAN
=item dropup
Change position of dropdown menu via base_element div class - dropdown, dropup,
=back
=head3 Sample Output
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Dropdown
<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">Separated link</a></li>
</ul>
lib/Moonshine/Bootstrap/Component/DropdownButton.pm view on Meta::CPAN
);
has(
dropdown_button_spec => sub {
{
switch => { default => 'default', base => 1 },
class_base => { default => 'dropdown-toggle' },
id => 1,
split => 0,
data_toggle => { default => 'dropdown' },
aria_haspopup => { default => 'true' },
aria_expanded => { default => 'true' },
data => 1,
};
}
);
sub dropdown_button {
my ($self) = shift;
my ( $base_args, $build_args ) = $self->validate_build(
lib/Moonshine/Bootstrap/Component/DropdownButton.pm view on Meta::CPAN
defaults to 'default',
=item id
dropdown_button **requires** an Id
=item data_toggle
defaults to dropdown
=item aria_haspopup
defaults to true
=item aria_expanded
defaults to true
=item data
is **required**
=item split
Create split dropdown button
$self->dropdown_button({ split => 1 });
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Dropdown
<span class="caret"></span>
</button>
=back
=head3 Sample Output
<button class="btn btn-default">Dropdown</button>
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
<span class="caret"></span>
</button>
=cut
lib/Moonshine/Bootstrap/Component/NavItem.pm view on Meta::CPAN
);
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;
}
t/113-dropdown_button.t view on Meta::CPAN
test => 'obj',
func => 'dropdown_button',
args => {
id => 'dropdownMenu1',
data => 'Dropdown',
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected =>'<button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown">Dropdown<span class="caret"></span></button>'
}
],
},
{
test => 'obj',
func => 'dropdown_button',
args => {
split => 1,
id => 'dropdownMenu1',
data => 'Dropdown',
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<button class="btn btn-default" type="button">Dropdown</button><button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown"><span cl...
}
],
},
],
);
moon_test(
name => 'dropdown_button v3 component',
build => {
class => 'Moonshine::Bootstrap::v3::DropdownButton',
t/113-dropdown_button.t view on Meta::CPAN
test => 'obj',
func => 'dropdown_button',
args => {
id => 'dropdownMenu1',
data => 'Dropdown',
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected =>'<button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown">Dropdown<span class="caret"></span></button>'
}
],
},
{
test => 'obj',
func => 'dropdown_button',
args => {
split => 1,
id => 'dropdownMenu1',
data => 'Dropdown',
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<button class="btn btn-default" type="button">Dropdown</button><button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown"><span cl...
}
],
},
],
);
sunrise();
t/119-dropdown.t view on Meta::CPAN
},
button => {
id => 'dropdownMenu1',
data => 'Dropdown',
},
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<div class="dropdown"><button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown">Dropdown<span class="caret"></span></button><ul c...
}
],
},
{
test => 'obj',
func => 'dropdown',
args => {
mid => 'dropdownMenu1',
ul => {
separators => [ 1, 3, 5 ],
t/119-dropdown.t view on Meta::CPAN
},
button => {
id => 'dropdownMenu1',
data => 'Dropdown',
},
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<div class="dropdown"><button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown">Dropdown<span class="caret"></span></button><ul c...
}
],
},
{
test => 'obj',
func => 'dropdown',
args => {
mid => 'dropdownMenu1',
ul => {
separators => [ 1, 3, 5 ],
t/119-dropdown.t view on Meta::CPAN
},
button => {
id => 'dropdownMenu1',
data => 'Dropdown',
},
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<div class="dropdown"><button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown">Dropdown<span class="caret"></span></button><ul c...
}
],
},
{
test => 'obj',
func => 'dropdown',
args => {
mid => 'dropdownMenu1',
dropup => 1,
ul => {
t/119-dropdown.t view on Meta::CPAN
},
button => {
id => 'dropdownMenu1',
data => 'Dropdown',
},
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<div class="dropup"><button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown">Dropdown<span class="caret"></span></button><ul cla...
}
],
}
],
);
moon_test(
name => 'caret',
build => {
class => 'Moonshine::Bootstrap::v3::Dropdown',
t/119-dropdown.t view on Meta::CPAN
},
button => {
id => 'dropdownMenu1',
data => 'Dropdown',
},
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<div class="dropdown"><button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown">Dropdown<span class="caret"></span></button><ul c...
}
],
},
{
test => 'obj',
func => 'dropdown',
args => {
mid => 'dropdownMenu1',
ul => {
separators => [ 1, 3, 5 ],
t/119-dropdown.t view on Meta::CPAN
},
button => {
id => 'dropdownMenu1',
data => 'Dropdown',
},
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<div class="dropdown"><button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown">Dropdown<span class="caret"></span></button><ul c...
}
],
},
{
test => 'obj',
func => 'dropdown',
args => {
mid => 'dropdownMenu1',
ul => {
separators => [ 1, 3, 5 ],
t/119-dropdown.t view on Meta::CPAN
},
button => {
id => 'dropdownMenu1',
data => 'Dropdown',
},
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<div class="dropdown"><button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown">Dropdown<span class="caret"></span></button><ul c...
}
],
},
{
test => 'obj',
func => 'dropdown',
args => {
mid => 'dropdownMenu1',
dropup => 1,
ul => {
t/119-dropdown.t view on Meta::CPAN
},
button => {
id => 'dropdownMenu1',
data => 'Dropdown',
},
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<div class="dropup"><button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown">Dropdown<span class="caret"></span></button><ul cla...
}
],
}
],
);
sunrise();
t/133-input_group_addon.t view on Meta::CPAN
button => {
id => 'dropdownMenu1',
data => 'Dropdown',
},
}
},
subtest => [
{
test => 'render',
expected =>
'<div class="input-group-btn" id="basic-addon1"><button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown">Dropdown<span class="caret"></span></button><ul class="d...
}
],
},
]
);
my $v3Instance = Moonshine::Bootstrap::v3::InputGroupAddon->new;
moon_test(
name => 'Input - v3',
t/133-input_group_addon.t view on Meta::CPAN
button => {
id => 'dropdownMenu1',
data => 'Dropdown',
},
}
},
subtest => [
{
test => 'render',
expected =>
'<div class="input-group-btn" id="basic-addon1"><button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown">Dropdown<span class="caret"></span></button><ul class="d...
}
],
},
]
);
t/135-nav_item.t view on Meta::CPAN
link => 'http://second.url',
data => 'Second',
}
],
},
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<li class="disabled" role="presentation"><a class="dropdown-toggle" href="http://some.url" aria-expanded="false" aria-haspopup="true" role="button" data-toggle="dropdown">URL</a><ul class="dropdown-menu" aria-labelled...
}
],
},
],
);
moon_test(
name => 'nav_item',
build => {
class => 'Moonshine::Bootstrap::v3::NavItem',
t/135-nav_item.t view on Meta::CPAN
link => 'http://second.url',
data => 'Second',
}
],
},
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<li class="disabled" role="presentation"><a class="dropdown-toggle" href="http://some.url" aria-expanded="false" aria-haspopup="true" role="button" data-toggle="dropdown">URL</a><ul class="dropdown-menu" aria-labelled...
}
],
},
],
);
sunrise();
t/136-nav.t view on Meta::CPAN
}
],
},
}
],
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<ul class="nav nav-pills nav-justified"><li class="active" role="presentation"><a href="#">Home</a></li><li class="disabled" role="presentation"><a href="#">Profile</a></li><li role="presentation"><a class="dropdown-t...
}
],
},
],
);
moon_test(
name => 'nav',
build => {
class => 'Moonshine::Bootstrap::v3::Nav',
t/136-nav.t view on Meta::CPAN
}
],
},
}
],
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<ul class="nav nav-pills nav-justified"><li class="active" role="presentation"><a href="#">Home</a></li><li class="disabled" role="presentation"><a href="#">Profile</a></li><li role="presentation"><a class="dropdown-t...
}
],
},
],
);
t/800-component-v3.t view on Meta::CPAN
func => 'dropdown_button',
args => {
split => 1,
id => 'dropdownMenu1',
data => 'Dropdown',
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<button class="btn btn-default" type="button">Dropdown</button><button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown"><span cl...
}
],
},
{
test => 'obj',
func => 'separator_li',
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
t/800-component-v3.t view on Meta::CPAN
},
button => {
id => 'dropdownMenu1',
data => 'Dropdown',
},
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<div class="dropup"><button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown">Dropdown<span class="caret"></span></button><ul cla...
}
],
},
{
test => 'obj',
func => 'button_group',
args => {
sizing => 'lg',
group => [
{
t/800-component-v3.t view on Meta::CPAN
button => {
id => 'dropdownMenu1',
data => 'Dropdown',
},
}
},
subtest => [
{
test => 'render',
expected =>
'<div class="input-group-btn" id="basic-addon1"><button class="dropdown-toggle btn btn-default" id="dropdownMenu1" type="button" aria-expanded="true" aria-haspopup="true" data-toggle="dropdown">Dropdown<span class="caret"></span></button><ul class="d...
}
],
},
{
test => 'obj',
func => 'input_group',
args => {
mid => 'basic-addon1',
lid => 'basic-username',
label => {
t/800-component-v3.t view on Meta::CPAN
}
],
},
}
],
},
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',
expected => '<ul class="nav nav-pills nav-justified"><li class="active" role="presentation"><a href="#">Home</a></li><li class="disabled" role="presentation"><a href="#">Profile</a></li><li role="presentation"><a class="dropdown-t...
}
],
},
{
test => 'obj',
func => 'navbar_brand',
expected => 'Moonshine::Element',
subtest => [
{
test => 'render',