---
items:
  - menu_title: Getting Started
    items:
      - menu_title: QuickStart
        url: /startup/quick-start/version/
      - menu_title: Code Examples
        url: /startup/code-examples/version/
  - menu_title: Documentation
    has_sub: true
    has_sub_subs: true
    items_attributes: 'data-documentation="/learn/documentation/version/"'
  - menu_title: Releases
    items:
      - menu_title: 1.5.1
        url: '/releases/1.5.1'
      - menu_title: 1.5.0
        url: '/releases/1.5.0'
      - menu_title: 1.4.0
        url: '/releases/1.4.0'
      - menu_title: 1.3.1
        url: '/releases/1.3.1'
      - menu_title: 1.3.0
        url: '/releases/1.3.0'
      - menu_title: 1.2.0
        url: '/releases/1.2.0'
      - menu_title: 1.1.0
        url: '/releases/1.1.0'
      - menu_title: 1.0.0
        url: '/releases/1.0.0'
      - menu_title: 0.14
        url: '/releases/0.14'
      - menu_title: 0.13
        url: '/releases/0.13'
      - menu_title: 0.12
        url: '/releases/0.12'
      - menu_title: 0.11
        url: '/releases/0.11'
      - menu_title: '0.10'
        url: '/releases/0.10'

  - menu_title: Blog
    url: '/blog/'
  - menu_title: Community
    items:
      - menu_title: Contact Us
        url: '/community/contact-us.html'
      - menu_title: Contributor's Corner
        url: '/contribute/contributors-corner.html'
      - menu_title: Enhancement Proposal
        url: '/contribute/enhancement-proposal.html'
      - menu_title: PMC members & Committers
        url: '/community/committers.html'
      - menu_title: Talks and Meetups
        url: '/meetups/'

  - menu_title: Case Studies
    get_items: case-studies
    sort: 'priority'
    items:
      - menu_title: View All
        url: /case-studies/
        match_active: 'exact'
      - divider: true
---
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->


<div class="side-navigation">

  {% for item in page.items %}

    {% if item.has_sub_subs %}
      {% assign sub_class = 'side-navigation__group-has-submenus' %}
    {% else %}
      {% assign sub_class = '' %}
    {% endif %}

    {% if item.get_items or item.items or item.has_sub %}
      {% assign has_sub = true  %}
    {% else %}
      {% assign has_sub = false %}
    {% endif %}
    <!-- Start Group -->
    {% if has_sub %}
    <div class="side-navigation__group side-navigation__group--has-nested" data-plugin="sub-menu" data-sub-menu-show-class="side-navigation__group--has-nested-visible">
    {% else %}
    <div class="side-navigation__group">
    {% endif %}

    <!-- Make menu_title, and start items group if needed -->
    {% if has_sub %}
      <div class="side-navigation__group-title">
        <i class="side-navigation__group-title-icon icon ion-md-arrow-dropdown"></i>
        {{ item.menu_title }}
      </div>
      <div class="side-navigation__group-items {{ sub_class }}" data-sub-menu {{ item.items_attributes | replace: 'version', site.version }}>
    {% else %}
      <a class="side-navigation__group-title" data-plugin="top-menu" data-match-active="{{ item.match_active }}" href="{{ item.url | replace: 'version', site.version }}">
        {{ item.menu_title }}
      </a>
    {% endif %}

    <!-- Handle sub navigation items from data -->
    {% if item.items %}
      {% for subitem in item.items %}
        {% if subitem.divider %}
          <hr>
          {% continue %}
        {% endif %}
      <a class="side-navigation__group-item" data-match-active="{{ subitem.match_active }}" href="{{ subitem.url | replace: 'version', site.version }}">{{ subitem.menu_title }}</a>
      {% endfor %}

    {% endif %}

    <!-- Handle sub nagivation from site collections -->
    {% if item.get_items %}

      {% assign subnav = site[item.get_items] %}

      {% if item.sort %}

      {% assign subnav = subnav | sort: item.sort %}

      {% endif %}

      {% if item.reverse %}

      {% assign subnav = subnav | reverse %}

      {% endif %}

      {% for subitem in subnav %}
        {% if subitem.exclude_from_loop %}
          {% continue %}
        {% endif %}

        {% assign url = subitem.url %}
        {% assign menu_title = subitem.menu_title %}
        {% assign match_active = '' %}

        {% if item.map_title %}
          {% assign menu_title = subitem[item.map_title] %}
        {% endif %}

        {% if item.map_url %}
          {% assign url = subitem[item.map_url] %}
        {% endif %}

        {% if item.match_active %}
          {% assign match_active = subitem[item.match_active] %}
        {% endif %}

      <a class="side-navigation__group-item" href="{{ url }}" data-match-active="{{ match_active }}">{{ menu_title }}</a>
      {% endfor %}

    {% endif %}

    <!-- Close sub nav group -->
    {% if has_sub %}
      </div>
    {% endif %}

    <!-- Close menu group -->
    </div>

  {% endfor %}

</div>
