Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quarto-dev
GitHub Repository: quarto-dev/quarto-cli
Path: blob/main/src/resources/projects/website/templates/sidebar.ejs
12923 views
<nav id="quarto-sidebar" class="sidebar collapse collapse-horizontal quarto-sidebar-collapse-item sidebar-navigation <%- sidebarStyle || (toc ? "floating" : "") %> overflow-auto">

  <% if (sidebar) { %>
  <% 
    let borderColor = sidebar['border-color'] ? "border-" + sidebar['border-color'] : "";

    let alignCss = ""
    if (sidebar.alignment === "center") {
      alignCss = "text-center";
    } else if (sidebar.alignment === "right") {
      alignCss = "text-end";
    } else {
      alignCss = "text-left";
    }

    // Whether there are tools that should be displayed to the user
    let needsTools = !sidebar || !!(sidebar.tools.length > 0 || (sidebar.search && sidebar.search === 'overlay') || sidebar.darkToggle || sidebar.readerToggle);
    // Where the tools should be added (depending upon what elements are present, the tools)
    // may be displayed in different locations, so this will determine where to display the tools
    // "logo", "title", "search", "fallthrough"

    let toolsLocation;
    // Under the title if that will be displayed
    if (sidebar.title && !navbar) {
      toolsLocation = "title";
    } else if (sidebar.logo) {
      toolsLocation = "logo";
    } else if (sidebar.search && sidebar.search !== "overlay") {
      toolsLocation = "search";
    } else {
      toolsLocation = "fallthrough";
    }
  %>
    
  <% if (sidebar.logo || (sidebar.title && !navbar)) { %>
    <div class="pt-lg-2 mt-2 <%= alignCss %> sidebar-header<%= sidebar.logo && sidebar.title ? ' sidebar-header-stacked' : '' %>">
    <% if (sidebar.logo) { %>
      <a href="<%- sidebar['logo-href'] || '/index.html' %>" class="sidebar-logo-link">
      <% if (sidebar.logo.light) { %>
      <img src="<%- sidebar.logo.light.path %>" alt="<%- sidebar.logo.light.alt || '' %>" class="sidebar-logo light-content py-0 d-lg-inline d-none"/>
      <% } %>
      <% if (sidebar.logo.dark) { %>
      <img src="<%- sidebar.logo.dark.path %>" alt="<%- sidebar.logo.dark.alt || '' %>" class="sidebar-logo dark-content py-0 d-lg-inline d-none"/>
      <% } %>
      </a>
    <% } %>
    <% if (needsTools && toolsLocation === "logo") { %>
      <% partial('navtools.ejs', { align: 'start', tools: sidebar.tools, className: 'sidebar-tools-main', darkToggle: sidebar.darkToggle, search: sidebar.search, readerToggle: sidebar.readerToggle, language: language })%>
    <% } %> 
    
    <% if (!navbar) { %>
    <% if (sidebar.title) { %>
    <div class="sidebar-title mb-0 py-0">
      <% if (!navbar) { %>
      <a href="/">
      <%- sidebar.title %>
      </a> 
      <% } %>  
      <% if (needsTools && toolsLocation === "title") { %>
        <% partial('navtools.ejs', { align: 'start', tools: sidebar.tools, className: 'sidebar-tools-main', darkToggle: sidebar.darkToggle, search: sidebar.search, readerToggle: sidebar.readerToggle, language: language })%>
      <% } %>  
    </div>
    <% } %>
    <% } %>
      </div>
    <% } %>

    <% if (sidebar.search) { %>
        <% if (sidebar.search !== "overlay") { %>
        <div class="<%- sidebar.search === "overlay" ? "d-flex " : "" %>mt-2 flex-shrink-0 align-items-center">
        <div class="sidebar-search">
        <% partial('navsearch.ejs',  { classes: '', language: language }) %>
        </div>
        </div>
        <% } %>
        <% if (needsTools && toolsLocation === "search") { %>
        <% partial('navtools.ejs', { align: 'start', tools: sidebar.tools, className: 'sidebar-tools-collapse', darkToggle: sidebar.darkToggle, search: sidebar.search, readerToggle: sidebar.readerToggle, language: language })%>
        <% } %>  
    <% } %>
    <% if (needsTools && toolsLocation === "fallthrough") { %>
        <% partial('navtools.ejs', { align: 'start', tools: sidebar.tools, className: 'sidebar-tools-main', darkToggle: sidebar.darkToggle, search: sidebar.search, readerToggle: sidebar.readerToggle, language: language })%>
    <% } %>

    <% if (sidebar.contents.length > 0) { %> 
    <div class="sidebar-menu-container"> 
    <ul class="list-unstyled mt-1">
    <% sidebar.contents.forEach(item => { %>
        <% partial('sidebaritem.ejs', { item, depth: 1, collapse: sidebar['collapse-level'], borderColor: borderColor, language: language, draftMode }) %>
    <% }) %>
    </ul>
    </div>
    <% } %>
  <% } %>
   
  <% if (toc) { %>
    <div id="quarto-toc-target"></div>
  <% } %>

</nav>
<div id="quarto-sidebar-glass" class="quarto-sidebar-collapse-item" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item" ></div>