Is it about Bulma or about the Docs?
This is about the Bulma CSS framework
In my opinion i think its time to give the menu component a makeover with dropdown support.
<!-- Menu -->
<aside class="menu">
<p class="menu-label">Label</p>
<ul class="menu-list">
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
</ul>
</aside>
<!-- Active -->
<aside class="menu">
<p class="menu-label">Label</p>
<ul class="menu-list">
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item is-active" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
</ul>
</aside>
<!-- Dropdown:Not Active -->
<aside class="menu">
<p class="menu-label">Label</p>
<ul class="menu-list">
<li>
<a class="menu-item has-dropdown" data-target="menuDropdown" href="#">
Link
<span class="icon is-small"><i class="fa fa-angle-down"></i></span>
</a>
<ul class="menu-dropdown" id="menuDropdown">
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
</ul>
</li>
</ul>
</aside>
<!-- Dropdown:Active -->
<aside class="menu">
<p class="menu-label">Label</p>
<ul class="menu-list">
<li>
<a class="menu-item has-dropdown is-active" data-target="menuDropdown" href="#">
Link
<span class="icon is-small"><i class="fa fa-angle-down"></i></span>
</a>
<ul class="menu-dropdown" id="menuDropdown">
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
</ul>
</li>
</ul>
</aside>
<!-- Dropdown:Hoverable -->
<aside class="menu">
<p class="menu-label">Label</p>
<ul class="menu-list">
<li>
<a class="menu-item has-dropdown is-hoverable" data-target="menuDropdown" href="#">
Link
<span class="icon is-small"><i class="fa fa-angle-down"></i></span>
</a>
<ul class="menu-dropdown" id="menuDropdown">
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
</ul>
</li>
</ul>
</aside>
<!-- Sizes -->
<aside class="menu is-small">
<p class="menu-label">Label</p>
<ul class="menu-list">
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
</ul>
</aside>
<aside class="menu is-medium">
<p class="menu-label">Label</p>
<ul class="menu-list">
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
</ul>
</aside>
<aside class="menu is-large">
<p class="menu-label">Label</p>
<ul class="menu-list">
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
</ul>
</aside>
<!-- Colors -->
<aside class="menu">
<p class="menu-label">Label</p>
<ul class="menu-list is-success">
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
</ul>
</aside>
<aside class="menu">
<p class="menu-label">Label</p>
<ul class="menu-list">
<li><a class="menu-item is-primary" href="#">Link</a></li>
<li><a class="menu-item is-success" href="#">Link</a></li>
<li><a class="menu-item is-danger" href="#">Link</a></li>
</ul>
</aside>
<!-- Alignment -->
<aside class="menu is-centered">
<p class="menu-label">Label</p>
<ul class="menu-list">
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
</ul>
</aside>
<aside class="menu is-right">
<p class="menu-label">Label</p>
<ul class="menu-list">
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
<li><a class="menu-item" href="#">Link</a></li>
</ul>
</aside>
Do you have any demo or screenshot?
@jgthms
no not at the moment i am currently working on the css this is just the dom layout portion
Hi @thecodechef ,
great initiative.
Do you mind including icon on menu-item and menu-label ?
I'll be glad to help you if you need for the SASS part.
Regards
@Wikiki
Something like this:
<!-- Menu -->
<aside class="menu">
<p class="menu-label">
<span class="icon"><i class="fa fa-folder"></i></span> General
</p>
<ul class="menu-list">
<li>
<a class="menu-item" href="#">
<span class="icon"><i class="fa fa-home"></i></span> Home
</a>
</li>
<li>
<a class="menu-item" href="#">
<span class="icon"><i class="fa fa-camera"></i></span> Pictures
</a>
</li>
<li>
<a class="menu-item" href="#">
<span class="icon"><i class="fa fa-video-camera"></i></span> Videos
</a>
</li>
</ul>
</aside>
@jgthms
here is the sass i cooked up so far
$menu-item-color: $text !default
$menu-item-radius: $radius-small !default
$menu-item-hover-color: $text-strong !default
$menu-item-hover-background-color: $background !default
$menu-item-active-color: $link-invert !default
$menu-item-active-background-color: $link !default
$menu-list-border-left: 1px solid $border !default
$menu-label-color: $text-light !default
$font-sizes: ['small', 'medium', 'large'] !default
=menu
font-size: $size-normal
// Sizes
@for $size in $font-sizes
&.is-#{$size}
font-size: $size-#{$size}
// Alignment
&.is-centered
text-align: center
&.is-right
text-align: right
@content
=menu-list
line-height: 1.25
&.has-dropdown
& a.menu-item.is-active,
.menu-dropdown
display: block
// Colors
@each $name, $pair in $colors
$color: nth($pair, 1)
$color-invert: nth($pair, 2)
&.is-#{$name}
a.menu-item
&:active,
&.is-active
background-color: $color
color: $color-invert
@content
=menu-item
border-radius: $menu-item-radius
color: $menu-item-color
display: block
padding: 0.5em 0.75em
&:hover
background-color: $menu-item-hover-background-color
color: $menu-item-hover-color
// Colors
@each $name, $pair in $colors
$color: nth($pair, 1)
$color-invert: nth($pair, 2)
&.is-#{$name}
&:active,
&.is-active
background-color: $color
color: $color-invert
// Modifiers
&:active,
&.is-active
background-color: $menu-item-active-background-color
color: $menu-item-active-color
@content
=menu-dropdown
display: none
border-left: $menu-list-border-left
margin: 0.75em
padding-left: 0.75em
@content
=menu-label
color: $menu-label-color
font-size: 0.75em
letter-spacing: 0.1em
text-transform: uppercase
&:not(:first-child)
margin-top: 1em
&:not(:last-child)
margin-bottom: 1em
@content
.menu
+menu
.menu-label
+menu-label
.menu-list
+menu-list
a.menu-item
+menu-item
li
ul.menu-dropdown
+menu-dropdown
@thecodechef compiler throws an error on the first @for loop.
@connectkushal
Sorry was away from my computer for a few days
this should fix it
$menu-item-hover-background-color: $background !default
$menu-item-active-color: $link-invert !default
$menu-item-active-background-color: $link !default
$menu-list-border-left: 1px solid $border !default
$menu-label-color: $text-light !default
$font-sizes: ('small': ($size-small),'medium': ($size-medium),'large': ($size-large)) !default
=menu
font-size: $size-normal
// Sizes
@each $size, $index in $font-sizes
$font: nth($index, 1)
&.is-#{$size}
font-size: $font
.menu
+menu
// Alignment
&.is-centered
text-align: center
&.is-right
text-align: right
@content
=menu-list
line-height: 1.25
&.has-dropdown
& a.menu-item.is-active,
&.is-hoverable:hover
.menu-dropdown
display: block
// Colors
@each $name, $pair in $colors
$color: nth($pair, 1)
$color-invert: nth($pair, 2)
&.is-#{$name}
a.menu-item
&:active,
&.is-active
background-color: $color
color: $color-invert
@content
=menu-item
border-radius: $menu-item-radius
color: $menu-item-color
display: block
padding: 0.5em 0.75em
&:hover
background-color: $menu-item-hover-background-color
color: $menu-item-hover-color
// Colors
@each $name, $pair in $colors
$color: nth($pair, 1)
$color-invert: nth($pair, 2)
&.is-#{$name}
&:active,
&.is-active
background-color: $color
color: $color-invert
// Modifiers
&:active,
&.is-active
background-color: $menu-item-active-background-color
color: $menu-item-active-color
@content
=menu-dropdown
display: none
border-left: $menu-list-border-left
margin: 0.75em
padding-left: 0.75em
@content
=menu-label
color: $menu-label-color
font-size: 0.75em
letter-spacing: 0.1em
text-transform: uppercase
&:not(:first-child)
margin-top: 1em
&:not(:last-child)
margin-bottom: 1em
@content
.menu
+menu
.menu-label
+menu-label
.menu-list
+menu-list
a.menu-item
+menu-item
li
ul.menu-dropdown
+menu-dropdown
@thecodechef I would suggest opening a pull request.
Hi,
Any news for a PR related to this improvment ?
Regards
Any news ? PR ? Demo ?
Hi @thecodechef ,
I've made some adjustement to your code to get it work:
$menu-background-color: transparent !default
$menu-list-border-left: 1px solid $border !default
$menu-label-color: $text-light !default
$menu-item-padding: 0.75em 1em !default
$menu-item-border-left: 2px solid transparent !default
$menu-item-background-color: transparent !default
$menu-item-hover-background-color: $grey !default
$menu-item-hover-border-color: transparent !default
$menu-item-active-color: transparent !default
$menu-item-active-background-color: transparent !default
$menu-item-active-border-color: $primary !default
$font-sizes: ('small': ($size-small),'medium': ($size-medium),'large': ($size-large)) !default
=menu
background-color: $menu-background-color
font-size: $size-normal
// Sizes
@each $size, $index in $font-sizes
$font: nth($index, 1)
&.is-#{$size}
font-size: $font
// Alignment
&.is-centered
text-align: center
&.is-right
text-align: right
@content
=menu-list
line-height: 1.25
@content
=menu-item
display: block
border-left: $menu-item-border-left
border-radius: $menu-item-radius
background-color: $menu-item-background-color
color: $menu-item-color
&.has-dropdown
.menu-title
display: flex
justify-content: space-between
&.is-active,
&.is-hoverable:hover
.menu-dropdown
display: block
&:not(.has-dropdown)
// Modifiers
&:hover
background-color: $menu-item-hover-background-color
border-color: $menu-item-hover-border-color
color: $menu-item-hover-color
&:active,
&.is-active
background-color: $menu-item-active-background-color
border-color: $menu-item-active-border-color
color: $menu-item-active-color
@content
=menu-dropdown
display: none
border-left: $menu-list-border-left
margin: 0
padding: 0
li
a
padding-left: 1.5em
@content
=menu-label
color: $menu-label-color
font-size: $size-7
letter-spacing: 0.1em
text-transform: uppercase
margin-top: 1em
&:not(:last-child)
margin-bottom: 1em
padding-left: 1em
@content
.menu
+menu
.menu-label
+menu-label
.menu-list
+menu-list
.menu-item
+menu-item
li
ul.menu-dropdown
+menu-dropdown
Please create a PR for it if you think it's ok.
regards
Hi @thecodechef, any news about a PR for it? Do you want me to create it ?
@Wikiki please do create it :) @thecodechef seems to be unavailable
any news on this? really looking forward to this new menu
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Most helpful comment
@thecodechef I would suggest opening a pull request.