Moonshine-Bootstrap

 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',



( run in 2.857 seconds using v1.01-cache-2.11-cpan-364913b4093 )