diff options
Diffstat (limited to 'templates/assets/bootstrap-material-design/scss/_dropdown.scss')
| -rw-r--r-- | templates/assets/bootstrap-material-design/scss/_dropdown.scss | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/templates/assets/bootstrap-material-design/scss/_dropdown.scss b/templates/assets/bootstrap-material-design/scss/_dropdown.scss new file mode 100644 index 0000000..e5dd23e --- /dev/null +++ b/templates/assets/bootstrap-material-design/scss/_dropdown.scss @@ -0,0 +1,126 @@ +// Menus https://www.google.com/design/spec/components/menus.html#menus-specs +// Dropdown buttons (mobile and desktop) https://www.google.com/design/spec/components/buttons.html#buttons-dropdown-buttons + +@mixin menu-bottom-left { + top: 100%; + left: 0; + transform-origin: 0 0; +} + +@mixin menu-bottom-right { + right: 0; + left: auto; + transform-origin: 100% 0; +} + +.dropdown-menu { + display: block; // utilize transition transform instead of flipping display + padding: .25rem 0; + border: 0; + opacity: 0; + transition: transform $bmd-menu-expand-duration $bmd-animation-curve-default, opacity $bmd-menu-fade-duration $bmd-animation-curve-default; + transform: scale(0); + transform-origin: 0 0; + will-change: transform; + + @include media-breakpoint-up(md) { + padding: .5rem 0; + } + + .open > & { + //z-index: 999; + opacity: 1; + transform: scale(1); + } + + // Default the alignment of the dropdown to originate on the bottom right of the button + @include menu-bottom-right(); + // FIXME: bootstrap alignment issue - https://github.com/twbs/bootstrap/issues/18852 + + &.dropdown-menu-left { + @include menu-bottom-left(); + } + + &.dropdown-menu-right { + @include menu-bottom-right(); + } + + //&.dropdown-menu-top-left { + // top: auto; + // bottom: 0; // needs to be overridden with the toggle-button height, see bmd-btn-icon above + // transform-origin: 0 100%; + //} + // + //&.dropdown-menu-top-right { + // top: auto; + // right: 0; + // bottom: 0; // needs to be overridden with the toggle-button height, see bmd-btn-icon above + // left: auto; + // transform-origin: 100% 100%; + //} + + // https://www.google.com/design/spec/components/menus.html#menus-specs + .dropdown-item { + // used to properly size the ripple container + position: relative; + + display: flex; + flex-flow: row wrap; + align-items: center; + + min-width: $bmd-menu-item-min-width; + max-width: $bmd-menu-item-max-width; + min-height: $bmd-menu-item-min-height; + + padding: $bmd-menu-item-padding-top $bmd-menu-item-padding-right $bmd-menu-item-padding-bottom $bmd-menu-item-padding-left; + + // FIXME: multi-line menu word wrapping doesn't work - see the maximum width example in menus.md + overflow: hidden; + line-height: $bmd-menu-line-height; + text-overflow: ellipsis; + word-wrap: break-word; + + + // Simple menus always maintain a 16dp margin (phone) or 24dp margin (tablet) to the left and right edges of the screen. + @include media-breakpoint-up(md) { + padding-right: $bmd-menu-item-padding-right-md; + padding-left: $bmd-menu-item-padding-left-md; + } + } +} + + +// this could be in a .btn-group or .dropdown +.dropdown-toggle { + + &.bmd-btn-icon, + &.bmd-btn-fab { + // remove the dropdown icon + &::after { + display: none; + } + + ~ .dropdown-menu { + &.dropdown-menu-top-left, + &.dropdown-menu-top-right { + bottom: $bmd-btn-icon-size; // push up the bottom of the menu the height of the button + } + } + } + + &.bmd-btn-fab-sm { + ~ .dropdown-menu { + &.dropdown-menu-top-left, + &.dropdown-menu-top-right { + bottom: $bmd-btn-fab-size-sm; // push up the bottom of the menu the height of the button + } + } + } + + &.bmd-btn-icon { + ~ .dropdown-menu { + // collapse some spacing + margin: 0; + } + } +} |
