<div class="c-dropdown c-dropdown--centered-list">
<button class="c-dropdown__button" aria-expanded="false" aria-controls="sample-id">
<span class="c-dropdown__button-text">All case studies</span>
<span class="c-dropdown__button-icon"><svg class="u-elevation-level-600 c-icon c-icon--20" aria-hidden="true" focusable="false">
<use xlink:href="#icn-arrow-bottom-24px"></use>
</svg></span>
</button>
<ul class="c-dropdown__list" id="sample-id">
<li class="c-dropdown__list-item">
<a class="c-dropdown__link" href="#foo">Foo</a>
</li>
<li class="c-dropdown__list-item">
<a class="c-dropdown__link" href="#bar">Bar</a>
</li>
<li class="c-dropdown__list-item">
<a class="c-dropdown__link" href="#lorem">Lorem</a>
</li>
<li class="c-dropdown__list-item">
<a class="c-dropdown__link" href="#ipsum">Ipsum</a>
</li>
<li class="c-dropdown__list-item">
<a class="c-dropdown__link" href="#foo">Foo</a>
</li>
<li class="c-dropdown__list-item">
<a class="c-dropdown__link" href="#bar">Bar</a>
</li>
<li class="c-dropdown__list-item">
<a class="c-dropdown__link" href="#lorem">Lorem</a>
</li>
<li class="c-dropdown__list-item">
<a class="c-dropdown__link" href="#ipsum">Ipsum</a>
</li>
<li class="c-dropdown__list-item">
<a class="c-dropdown__link" href="#foo">Foo</a>
</li>
<li class="c-dropdown__list-item">
<a class="c-dropdown__link" href="#bar">Bar</a>
</li>
<li class="c-dropdown__list-item">
<a class="c-dropdown__link" href="#lorem">Lorem</a>
</li>
<li class="c-dropdown__list-item">
<a class="c-dropdown__link" href="#ipsum">Ipsum</a>
</li>
</ul>
</div>
{% import "@macros" as macroNav %}
<div class="c-dropdown{% if modifier is defined %} {{ modifier }}{% endif %}">
<button class="c-dropdown__button" aria-expanded="false" aria-controls="{{ id }}">
<span class="c-dropdown__button-text">{{- buttonText|t|raw-}}</span>
<span class="c-dropdown__button-icon">
{%- include "@icon" with { modifier: "c-icon--20", symbol: "icn-arrow-bottom-24px" } -%}
</span>
</button>
<ul class="c-dropdown__list" id="{{ id }}">
{% for item in items %}
<li class="c-dropdown__list-item">
{# <a class="c-dropdown__link {{ macroNav.is_active_dropdown(item.url) }}" href="{{ item.url }}">{{ item.title|t }}</a> #}
<a class="c-dropdown__link" href="{{ siteUrl }}{{ item.url }}">{{ item.title|t }}</a>
</li>
{% endfor %}
</ul>
</div>
{
"buttonText": "All case studies",
"id": "sample-id",
"items": [
{
"title": "Foo",
"url": "#foo"
},
{
"title": "Bar",
"url": "#bar"
},
{
"title": "Lorem",
"url": "#lorem"
},
{
"title": "Ipsum",
"url": "#ipsum"
},
{
"title": "Foo",
"url": "#foo"
},
{
"title": "Bar",
"url": "#bar"
},
{
"title": "Lorem",
"url": "#lorem"
},
{
"title": "Ipsum",
"url": "#ipsum"
},
{
"title": "Foo",
"url": "#foo"
},
{
"title": "Bar",
"url": "#bar"
},
{
"title": "Lorem",
"url": "#lorem"
},
{
"title": "Ipsum",
"url": "#ipsum"
}
],
"modifier": "c-dropdown--centered-list"
}
$dropdown-raw-gap: spacing(space-16); // gap used to separate button to dropdown list
.c-dropdown {
position: relative;
max-width: remify(340px);
display: inline-block;
}
.c-dropdown__label {
@include font-scale(level-3, $font-secondary, regular);
}
.c-dropdown__button {
@include font-scale(level-3, $font-secondary, regular);
display: inline-flex;
align-items: center;
justify-content: space-between;
background-color: useHSL(--base-100);
width: 100%;
border: 0;
box-sizing: border-box;
padding: spacing(space-16) spacing(space-24);
overflow: hidden;
color: useHSL(--primary-100);
cursor: pointer;
box-shadow: inset 0px 0 0px remify(1px) useHSL(--primary-100);
}
.c-dropdown__button:focus,
.c-dropdown__button:focus-within,
.c-dropdown__button:active {
outline: 0px solid transparent;
box-shadow: inset 0px 0 0px remify(1px) useHSL(--highlight-100);
.c-dropdown__list {
opacity: 1;
visibility: visible;
}
}
.c-dropdown__button-icon {
margin-left: spacing(space-8);
}
.c-dropdown__button:hover {
.c-dropdown__button-icon {
color: useHSL(--accent-100);
}
}
.c-dropdown__list {
position: absolute;
top: 100%;
left: 0;
background-color: useHSL(--base-100);
width: remify(340px);
@include shadow(level-500);
text-align: left;
display: none;
list-style: none;
// max-height: remify(230px);
overflow-y: scroll;
z-index: $zIndex-dropdown-list;
// Styles when dropdown opens in off-canvas nav
.c-nav--off-canvas & {
position: relative;
top: 0;
left: 0;
width: 100vw;
box-shadow: none;
text-align: left;
max-height: initial;
overflow-y: initial;
margin-left: -#{spacing(space-16)};
}
}
.c-dropdown.is-open {
.c-dropdown__list {
display: block;
}
.c-dropdown__button-icon {
transform: rotate(180deg);
color: useHSL(--accent-100);
}
}
.c-dropdown__list-item {
z-index: 1;
position: relative;
color: useHSL(--primary-100);
}
.c-dropdown__link {
display: block;
padding: spacing(space-16) spacing(space-24);
color: inherit;
text-decoration: none;
background-color: useHSL(--base-100);
@include font-scale(level-3, $font-secondary, regular);
// Styles when dropdown opens in off-canvas nav
.c-nav--off-canvas & {
background-color: useHSL(--grey);
padding: spacing(space-16);
}
}
.c-dropdown__link:hover {
background-color: useHSL(--geyser-blue);
}
.c-dropdown__link:focus,
.c-dropdown__link.is-active {
background-color: useHSL(--primary-100);
color: useHSL(--base-100);
// Styles when dropdown opens in off-canvas nav
.c-nav--off-canvas & {
background-color: useHSL(--accent-100);
}
}
/*------------------------------------*
Raw modifier
*------------------------------------*/
.c-dropdown--raw {
.c-dropdown__button {
justify-content: initial;
background-color: transparent;
box-shadow: none;
padding: 0;
font-family: inherit;
}
.c-dropdown__button:focus,
.c-dropdown__button:focus-within,
.c-dropdown__button:active {
@include outline;
}
.c-dropdown__list {
margin-top: $dropdown-raw-gap;
}
}
/*------------------------------------*
Centered-list modifier
*------------------------------------*/
.c-dropdown--centered-list {
.c-dropdown__list {
left: 50%;
transform: translateX(-50%);
// Styles when dropdown opens in off-canvas nav
.c-nav--off-canvas & {
left: 0;
transform: initial;
}
}
}
/*------------------------------------*
Nav modifier
*------------------------------------*/
.c-dropdown--nav {
.c-dropdown__button {
@extend .c-nav__link;
}
}
/*------------------------------------*
No-js version for progressive enhancement
*------------------------------------*/
.no-js {
.c-dropdown:hover .c-dropdown__list,
.c-dropdown__button:focus ~ .c-dropdown__list,
.c-dropdown__button:active ~ .c-dropdown__list {
display: block;
}
.c-dropdown--raw {
.c-dropdown__button::after {
content: '';
display: block;
width: 100%;
height: calc(100% + $dropdown-raw-gap);
background-color: transparent;
position: absolute;
top: 0;
left: 0;
}
}
}
No notes defined.