<!-- DROPDOWN Component -->
<div class="kx-dropdown kx-btngroup kx-btngroup--fit-tight kx-inline-flex kx-flex-nowrap" role="group" aria-label="">
    <button class="kx-btn kx-btn--skin-primary kx-btn--size-large">
        <span class="kx-btn__inner"><span class="kx-btn__txt">Save & Close</span>
        </span>
    </button>
    <button id="--97656" class="kx-dropdown__toggle kx-btn kx-btn--skin-primary kx-btn--size-large kx-btn--icon kx-js-dropdown__toggle" aria-haspopup="true" aria-expanded="false">
        <span class="kx-btn__inner">
            <span class="kx-btn__txt kx-is-vishidden">Toggle Dropdown</span>
            
            <!-- ICON Component -->
<i class="kx-icon kx-icon--size-small">
    <svg focusable="false">
        <use xlink:href="../../assets/img/icons/sprites/icons.svg#caret-down"></use>
    </svg>
</i>
            
        </span>
    </button>
    <div class="kx-dropdown__menu kx-dropdown__menu--align-left" aria-labelledby="--97656">
        <ul class="kx-dropdown__list">
            <li class="kx-dropdown__item">
                <a class="kx-dropdown__link" href="#">
                        <span class="kx-dropdown__item__txt">Action</span>
                        </a>
            </li>
            <li class="kx-dropdown__item">
                <a class="kx-dropdown__link" href="#">
                        <span class="kx-dropdown__item__txt">Another Action</span>
                        </a>
            </li>
            <li class="kx-divider kx-divider--size-mini" aria-hidden="true" tabindex="-1"></li>
            <li class="kx-dropdown__item">
                <a class="kx-dropdown__link" href="#">
                        <span class="kx-dropdown__item__txt">Action with subitems</span>
                        <!-- ICON Component -->
<i class="kx-icon kx-icon--size-base">
    <svg focusable="false">
        <use xlink:href="../../assets/img/icons/sprites/icons.svg#angle-right"></use>
    </svg>
</i>
                        </a>
                <div class="kx-dropdown__menu">
                    <ul class="kx-dropdown__list">
                        <li class="kx-dropdown__item">
                            <a class="kx-dropdown__link" href="#">
                                            Sub action
                                        </a>
                        </li>
                        <li class="kx-dropdown__item">
                            <a class="kx-dropdown__link" href="#">
                                            Another sub action
                                        </a>
                        </li>
                    </ul>
                </div>
            </li>
            <li class="kx-dropdown__item">
                <a class="kx-dropdown__link" href="#">
                        <span class="kx-dropdown__item__txt">Action with subitems</span>
                        <!-- ICON Component -->
<i class="kx-icon kx-icon--size-base">
    <svg focusable="false">
        <use xlink:href="../../assets/img/icons/sprites/icons.svg#angle-right"></use>
    </svg>
</i>
                        </a>
                <div class="kx-dropdown__menu">
                    <ul class="kx-dropdown__list">
                        <li class="kx-dropdown__item">
                            <a class="kx-dropdown__link" href="#">
                                            Sub action
                                        </a>
                        </li>
                        <li class="kx-dropdown__item">
                            <a class="kx-dropdown__link" href="#">
                                            Another sub action
                                        </a>
                        </li>
                    </ul>
                </div>
            </li>
            <li class="kx-dropdown__item">
                <a class="kx-dropdown__link" href="#">
                    <!-- ICON Component -->
                    <i class="kx-icon kx-icon--size-base">
    <svg focusable="false">
        <use xlink:href="../../assets/img/icons/sprites/icons.svg#box"></use>
    </svg>
</i><span class="kx-dropdown__item__txt">Action with icon</span>
                </a>
            </li>
            <li class="kx-dropdown__item">
                <a class="kx-dropdown__link" href="#">
                    <!-- ICON Component -->
                    <i class="kx-icon kx-icon--size-base">
    <svg focusable="false">
        <use xlink:href="../../assets/img/icons/sprites/icons.svg#box"></use>
    </svg>
</i><span class="kx-dropdown__item__txt">Action with icon and subitems</span>
                    <!-- ICON Component -->
                    <i class="kx-icon kx-icon--size-base">
    <svg focusable="false">
        <use xlink:href="../../assets/img/icons/sprites/icons.svg#angle-right"></use>
    </svg>
</i>
                </a>
                <div class="kx-dropdown__menu">
                    <ul class="kx-dropdown__list">
                        <li class="kx-dropdown__item">
                            <a class="kx-dropdown__link" href="#">
                                            Sub action
                                        </a>
                        </li>
                        <li class="kx-dropdown__item">
                            <a class="kx-dropdown__link" href="#">
                                            Another sub action
                                        </a>
                        </li>
                    </ul>
                </div>
            </li>
        </ul>
    </div>
</div>
        
    
        {%- if id -%}
    {-% set random_number = range(0, 100000) | random -%}
    {%- set id = id | replace(' ', '-') | lower + '--' + random_number -%}
{%- else -%}
    {%- set random_number = range(0, 100000) | random -%}
    {%- set id = label | replace(' ', '-') | lower + '--' + random_number -%}
{% endif -%}
<!-- DROPDOWN Component -->
{%- if split -%}
<div class="kx-dropdown kx-btngroup kx-btngroup--fit-tight kx-inline-flex kx-flex-nowrap" role="group" aria-label="{{ ariaLabel }}">
    <button class="kx-btn{% if skin %} kx-btn--skin-{{ skin }}{% endif %}{% if size %} kx-btn--size-{{ size }}{% endif %}">
        <span class="kx-btn__inner">
            {%- if icon %}
                {% if iconAfter -%}
                <span class="kx-btn__txt{% if hideText %} kx-is-vishidden{% endif %}">{{ text }}</span>
                {% render '@icon', icon, true %}
                {%- else -%}
                {% render '@icon', icon, true %}
                <span class="kx-btn__txt{% if hideText %} kx-is-vishidden{% endif %}">{{ text }}</span>
                {%- endif -%}
            {%- else -%}
            <span class="kx-btn__txt{% if hideText %} kx-is-vishidden{% endif %}">{{ text }}</span>
            {%- endif %}
        </span>
    </button>
    <button id="{{ id }}" class="kx-dropdown__toggle kx-btn{% if skin %} kx-btn--skin-{{ skin }}{% endif %}{% if size %} kx-btn--size-{{ size }}{% endif %}{% if show %} kx-dropdown--show{% endif %} kx-btn--icon kx-js-dropdown__toggle" aria-haspopup="true" aria-expanded="false">
        <span class="kx-btn__inner">
            <span class="kx-btn__txt kx-is-vishidden">Toggle Dropdown</span>
            {% if caret %}
            {% render '@icon', { symbol: 'caret-down', size: 'small' } %}
            {% endif %}
        </span>
    </button>
    <div class="kx-dropdown__menu{% if menuAlignment %} kx-dropdown__menu--align-{{ menuAlignment }}{% endif %}" aria-labelledby="{{ id }}">
        <ul class="kx-dropdown__list">
            {% for item in items -%}
                {% if item.divider -%}
                <li class="kx-divider kx-divider--size-mini" aria-hidden="true" tabindex="-1"></li>
                {% else -%}
                <li class="kx-dropdown__item">
                    <a class="kx-dropdown__link" href="{{ item.href }}">
                        {% if item.icon -%}
                        {%- render '@icon', item.icon -%}
                        {% endif -%}
                        <span class="kx-dropdown__item__txt">{{ item.text }}</span>
                        {% if item.subitems -%}
                        {%- render '@icon', { symbol: 'angle-right', size: 'base' } %}
                        {% endif -%}
                    </a>
                    {% if item.subitems -%}
                        <div class="kx-dropdown__menu">
                            <ul class="kx-dropdown__list">
                                {% for subitem in item.subitems -%}
                                    <li class="kx-dropdown__item">
                                        <a class="kx-dropdown__link" href="{{ subitem.href }}">
                                            {{ subitem.text }}
                                        </a>
                                    </li>
                                {% endfor -%}
                            </ul>
                        </div>
                    {% endif -%}
                </li>
                {% endif %}
            {%- endfor -%}
        </ul>
    </div>
</div>
{% else -%}
<div class="kx-dropdown{% if show %} kx-dropdown--show{% endif %}" role="group">
    <button id="{{ id }}" class="kx-dropdown__toggle kx-btn{% if skin %} kx-btn--skin-{{ skin }}{% endif %}{% if size %} kx-btn--size-{{ size }}{% endif %}{% if icon %}{% if hideText==true %} kx-btn--icon{% endif %}{% endif %}{% if show %} kx-dropdown--show{% endif %} kx-js-dropdown__toggle" aria-haspopup="true" aria-expanded="false">
        <span class="kx-btn__inner">
            {%- if icon %}
                {% if iconAfter -%}
                <span class="kx-btn__txt{% if hideText %} kx-is-vishidden{% endif %}">{{ text }}</span>
                {% render '@icon', icon, true -%}
                {% if caret %}
                    {% render '@icon', { symbol: 'caret-down', size: 'small', classes: ['kx-dropdown__caret'] } %}
                {% endif %}
                {%- else -%}
                {% render '@icon', icon, true %}
                <span class="kx-btn__txt{% if hideText %} kx-is-vishidden{% endif %}">{{ text }}</span>
                {% if caret -%}
                    {% render '@icon', { symbol: 'caret-down', size: 'small', classes: ['kx-dropdown__caret'] } %}
                {% endif -%}
                {%- endif -%}
            {%- else %}
                <span class="kx-btn__txt{% if hideText %} kx-is-vishidden{% endif %}">{{ text }}</span>
                {% if caret -%}
                {%- render '@icon', { symbol: 'caret-down', size: 'small', classes: ['kx-dropdown__caret'] } %}
                {% endif -%}
            {% endif -%}
        </span>
    </button>
    <div class="kx-dropdown__menu{% if menuAlignment %} kx-dropdown__menu--align-{{ menuAlignment }}{% endif %} kx-js-dropdown__menu" aria-labelledby="{{ id }}">
        <ul class="kx-dropdown__list">
            {% for item in items -%}
                {% if item.divider -%}
                    <li class="kx-divider kx-divider--size-mini" aria-hidden="true" tabindex="-1"></li>
                {% else -%}
                    <li class="kx-dropdown__item">
                        <a class="kx-dropdown__link" href="{{ item.href }}">
                            {% if item.icon -%}
                                {% render '@icon', item.icon -%}
                            {% endif -%}
                            <span class="kx-dropdown__item__txt">{{ item.text }}</span>
                            {% if item.subitems -%}
                                {% render '@icon', { symbol: 'angle-right', size: 'base' } %}
                            {% endif -%}
                        </a>
                        {% if item.subitems -%}
                            <div class="kx-dropdown__menu">
                                <ul class="kx-dropdown__list">
                                    {% for subitem in item.subitems -%}
                                        <li class="kx-dropdown__item">
                                            <a class="kx-dropdown__link" href="{{ subitem.href }}">
                                                {{ subitem.text }}
                                            </a>
                                        </li>
                                    {% endfor -%}
                                </ul>
                            </div>
                        {% endif -%}
                    </li>
                {% endif %}
            {%- endfor -%}
        </ul>
    </div>
</div>
{% endif %}
    
        
            
            {
  "classes": null,
  "text": "Save & Close",
  "skin": "primary",
  "size": "large",
  "split": true,
  "icon": null,
  "iconAfter": null,
  "hideText": null,
  "caret": true,
  "items": [
    {
      "text": "Action",
      "href": "#"
    },
    {
      "text": "Another Action",
      "href": "#"
    },
    {
      "divider": true
    },
    {
      "text": "Action with subitems",
      "href": "#",
      "subitems": [
        {
          "text": "Sub action",
          "href": "#"
        },
        {
          "text": "Another sub action",
          "href": "#"
        }
      ]
    },
    {
      "text": "Action with subitems",
      "href": "#",
      "subitems": [
        {
          "text": "Sub action",
          "href": "#"
        },
        {
          "text": "Another sub action",
          "href": "#"
        }
      ]
    },
    {
      "text": "Action with icon",
      "href": "#",
      "icon": {
        "symbol": "box",
        "size": "base"
      }
    },
    {
      "text": "Action with icon and subitems",
      "href": "#",
      "icon": {
        "symbol": "box",
        "size": "base"
      },
      "subitems": [
        {
          "text": "Sub action",
          "href": "#"
        },
        {
          "text": "Another sub action",
          "href": "#"
        }
      ]
    }
  ],
  "menuAlignment": "left"
}
            
        
    
- 
                    Content:
                    
                        // ========================================================================== // Component: dropdown // ========================================================================== // Elements (children) // ========================================================================== .kx-dropdown__toggle { position: relative; .kx-dropdown__caret { will-change: transform; transition: transform $duration-instant ease-in-out; transform-origin: center; } &.kx-dropdown--show, &[aria-expanded='true'] { + .kx-dropdown__menu { transition-property: visibility, opacity; transition-duration: 0s, $duration-instant; opacity: 1; visibility: visible; } &.kx-btn--skin-primary { background-color: $color-btn-primary-bg-active; color: $color-btn-primary-txt-active; } &.kx-btn--skin-secondary { background-color: $color-btn-secondary-bg-active; color: $color-btn-secondary-txt-active; } &.kx-btn--skin-flat { background-color: $color-btn-flat-bg-active; color: $color-btn-flat-txt-active; } } } .kx-dropdown__link { @include type-scale(small); @include p(tiny, moderate, tiny, moderate); @include flex; @include align-items-start; border: 0; text-decoration: none; color: $color-dropdownmenu-txt; &:focus { box-shadow: 0 0 0 rem-calc(2) $color-btn-secondary-border-focus; outline: 0; } &:hover, &:focus { text-decoration: none; background-color: $color-dropdownmenu-bg-hover; + .kx-dropdown__menu { opacity: 1; visibility: visible; } } &:hover { box-shadow: none; } &:active { background-color: $color-link-bg-focus; } .kx-icon { flex: 0 0 auto; transform: translateY(1px); + .kx-dropdown__item__txt { @include ml(tiny); } } .kx-dropdown__item__txt { flex: 1 1 auto; + .kx-icon { margin-left: auto; } } } .kx-dropdown__item { position: relative; .kx-dropdown__menu { position: absolute; top: -11px; left: 100%; } &:hover { > .kx-dropdown__item { background-color: $color-dropdownmenu-bg-hover; box-shadow: none; } > .kx-dropdown__menu { opacity: 1; visibility: visible; } } } .kx-dropdown__list { @include reset-list; @include p(mini, none, mini, none); @include mt(nano); @include shadow(3); min-width: rem-calc(200); border: rem-calc(1) solid $color-dropdownmenu-border; background-color: $color-dropdownmenu-bg; } .kx-dropdown__menu { position: absolute; top: 100%; left: 0; z-index: 1000; will-change: opacity, visibility; opacity: 0; visibility: hidden; transition-property: opacity, visibility; transition-duration: $duration-fast, 0s; transition-delay: 0s, $duration-fast; margin-left: -28%; padding-left: 28%; } // Block (parent) // ========================================================================== .kx-dropdown { display: inline-flex; position: relative; &.kx-btngroup--fit-tight { .kx-btn--skin-primary { + .kx-btn--skin-primary { border-left: rem-calc(1) solid $color-dropdownmenu-border-primary; } } } } // Modifiers // ========================================================================== .kx-dropdown__menu--align-left { left: 0; right: auto; } .kx-dropdown__menu--align-right { left: auto; right: 0; }
- URL: /components/raw/dropdown/_dropdown.scss
- Filesystem Path: src\components\01-dropdown\_dropdown.scss
- Size: 4 KB
- 
                    Content:
                    
                        //toggle dropdown menu open/close var toClose = false; function toggle(e) { e.stopPropagation(); var dropdownToggle = this; var dropdownMenu = dropdownToggle.nextSibling; while(dropdownMenu && dropdownMenu.nodeType !== 1) { dropdownMenu = dropdownMenu.nextSibling; } if(!dropdownMenu) { return; } if (!dropdownToggle.classList.contains('kx-dropdown--show')) { dropdownToggle.classList.add('kx-dropdown--show'); if(toClose) { toClose.classList.remove('kx-dropdown--show'); } toClose = dropdownToggle; } else { dropdownToggle.classList.remove('kx-dropdown--show'); toClose = false; console.log(toClose); } } function closeAll() { toClose.classList.remove('kx-dropdown--show'); toClose = false; } window.addEventListener('DOMContentLoaded',function(){ document.querySelectorAll('.kx-js-dropdown__toggle').forEach(function(btn){ btn.addEventListener('click', toggle, true); }); }); window.onclick = function(event){ if (toClose){ closeAll.call(event.target); } };
- URL: /components/raw/dropdown/dropdown.js
- Filesystem Path: src\components\01-dropdown\dropdown.js
- Size: 1.2 KB
- Handle: @dropdown--dropdown-primary-split
- Variants (4): Skin: Primary, Single , Skin: Secondary, Single , Skin: Primary, Split , Skin: Secondary, Split
- Preview:
- Filesystem Path: src\components\01-dropdown\dropdown.njk
- References (1): @icon
There are no notes for this item.