123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- {% comment %}
- Partial for the textbook sidebar. Renders each chapter and its sections from
- _data/toc.yml .
- Much of the logic here is to add active classes to the currently active
- section. The currently active section / chapter should be highlighted in the
- sidebar.
- If a chapter or any of its sections are the current page, we should display the
- chapter's sections. Otherwise, we hide the sections to keep the sidebar short.
- We also prefix the sidebar entries with the chapter/section number. We assume
- a 1-level nesting; we will label 1.2, but not 1.2.1.
- {% endcomment %}
- {% assign chapter_num = 1 %}
- <nav id="js-sidebar" class="c-textbook__sidebar">
- {% if site.textbook_logo %}<a href="{{ site.textbook_logo_link }}"><img src="{{ site.textbook_logo | relative_url }}" class="textbook_logo" id="sidebar-logo" alt="textbook logo" data-turbolinks-permanent/></a>{% endif %}
- <h2 class="c-sidebar__title">{{ site.title }}</h2>
- <ul class="c-sidebar__chapters">
- {% for chapter in site.data.toc %}
- {% comment %}
- If the entry is a divider, render a divider and move to next entry.
- {% endcomment %}
- {% if chapter.divider %}
- <li class="c-sidebar__divider"></li>
- {% continue %}
- {% elsif chapter.header %}
- <li><h2 class="c-sidebar__title">{{ chapter.header }}</li>
- {% continue %}
- {% endif %}
- {% comment %}
- If the entry is the current page, assign a CSS class to highlight it.
- {% endcomment %}
- {% if page.url contains chapter.url %}
- {% assign active_class = "c-sidebar__entry--active" %}
- {% else %}
- {% assign active_class = "" %}
- {% endif %}
- {% assign topUrl = chapter.url | relative_url %}
- {% unless chapter.external == true %}
- {% assign topUrl = topUrl | append: '.html' %}
- {% endunless %}
- <li class="c-sidebar__chapter">
- <a class="c-sidebar__entry {{ active_class }}"
- href="{{ topUrl }}"
- >
- {% unless chapter.not_numbered or site.number_toc_chapters != true %}
- {{ chapter_num }}.
- {% endunless %}
- {{ chapter.title }}
- </a>
- {% if chapter.sections %}
- {% comment %}
- By default, all sections are hidden. We show a chapter's sections
- if the chapter or any of its sections are the current page.
- {% endcomment %}
- {% assign any_section_active = 0 %}
- {% for section in chapter.sections %}
- {% if page.url contains section.url or chapter.expand_sections %}
- {% assign any_section_active = 1 %}
- {% elsif section.subsections %}
- {% for subsection in section.subsections %}
- {% if page.url contains subsection.url %}
- {% assign any_section_active = 1 %}
- {% endif %}
- {% endfor %}
- {% elsif page.url contains chapter.url %}
- {% assign any_section_active = 1 %}
- {% endif %}
- {% endfor %}
- {% if any_section_active > 0 or site.collapse_inactive_chapters == false %}
- {% assign hide_section_class = "" %}
- {% else %}
- {% assign hide_section_class = "u-hidden-visually" %}
- {% endif %}
- {% assign section_num = 1 %}
- <ul class="c-sidebar__sections {{ hide_section_class }}">
- {% for section in chapter.sections %}
- {% comment %}
- If the entry is the current page, assign a CSS class to highlight
- it.
- {% endcomment %}
- {% if page.url contains section.url %}
- {% assign active_class = "c-sidebar__entry--active" %}
- {% else %}
- {% assign active_class = "" %}
- {% endif %}
- <li class="c-sidebar__section">
- <a class="c-sidebar__entry {{ active_class }}"
- href="{{ section.url | relative_url | append: '.html'}}"
- >
- {% unless chapter.not_numbered or section.not_numbered or site.number_toc_chapters != true %}
- {{ chapter_num }}.{{ section_num }}
- {% endunless %}
- {{ section.title }}
- </a>
- {% assign subsection_num = 1 %}
- {% for subsection in section.subsections %}
- {% comment %}
- Now add sub-sections. These will always be shown if they exist.
- {% endcomment %}
- {% if page.url contains subsection.url %}
- {% assign active_class = "c-sidebar__entry--active" %}
- {% else %}
- {% assign active_class = "" %}
- {% endif %}
- <li class="c-sidebar__subsection">
- <a class="c-sidebar__entry {{ active_class }}"
- href="{{ subsection.url | relative_url | append: '.html'}}"
- >
- {% unless chapter.not_numbered or section.not_numbered or subsection.not_numbered or site.number_toc_chapters != true %}
- {{ chapter_num }}.{{ section_num }}.{{ subsection_num }}
- {% assign subsection_num = subsection_num | plus: 1 %}
- {% endunless %}
- {{ subsection.title }}
- </a>
- {% endfor %}
- </li>
- {% unless chapter.not_numbered or section.not_numbered %}
- {% assign section_num = section_num | plus: 1 %}
- {% endunless %}
- {% endfor %}
- </ul>
- {% endif %}
- </li>
- {% unless chapter.not_numbered %}
- {% assign chapter_num = chapter_num | plus: 1 %}
- {% endunless %}
- {% endfor %}
- </ul>
- <p class="sidebar_footer">{{ site.sidebar_footer_text }}</p>
- </nav>
|