How to fix sidebar collapse?

63 views Asked by At

I've make a sidebar on dashboard to handle the included items, succeed to build sidebar toggle, and sidebar collapse to show only icons without texts.

The error is menu icon is out of navigation bar and sidebar not working when minimize the screen after collapse like an empty space the screen like screenshot provided.

document.addEventListener("DOMContentLoaded", function() {
    const sidebar = document.querySelector(".dashboard-sidebar");
    const spacer = document.querySelector(".sidebar-spacer");
    const chevronIcon = document.querySelector("ion-icon[name='chevron-back-outline']");
    const sidebarLinks = document.querySelectorAll(".sidebar-link");
    const sidebarLinkTexts = document.querySelectorAll(".sidebar-link-text");
    const sidebarLogo = document.querySelector(".dashboard-logo");
    // Event listener for clicking on the chevron icon to toggle sidebar
    chevronIcon.addEventListener("click", function() {
        sidebar.classList.toggle("collapsed");
        if (sidebar.classList.contains("collapsed")) {
          spacer.style.width = "75px";
          sidebar.style.width = "75px";
          // Hide text labels
          sidebarLinkTexts.forEach(function(linkText) {
              linkText.style.display = "none";
          });
          // Hide sidebar logo when collapsed
          sidebarLogo.style.visibility = "hidden";
          chevronIcon.setAttribute("name", "chevron-forward-outline");
        } else {
          spacer.style.width = "220px";
          sidebar.style.width = "220px";
          // Show text labels
          sidebarLinkTexts.forEach(function(linkText) {
              linkText.style.display = "inline-block";
          });
          // Show sidebar logo when expanded
          sidebarLogo.style.visibility = "visible";
          // Change chevron icon to back when sidebar is expanded
          chevronIcon.setAttribute("name", "chevron-back-outline");
        }
    });
});
:root {
  --ff-inter: Inter, sans-serif;
  --background-color: hsl(0, 0%, 98%);  /* #f9f9f9 */
  --sec-color: hsl(240, 3%, 93%); /* #ededee */
  --input-background: hsl(0, 0%, 98%); /* #f9f9f9 */
  --default-color: hsl(240, 13%, 13%); /* #1d1d26 */
  --white-color:  hsl(0, 0%, 100%); /* WHITE */
  --gray-color: hsl(0, 0%, 50%); /* GRAY */
  --hover-color: hsl(240, 2%, 89%); /* #e3e3e4 */
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}

body {
  color: var(--default-color);
  font-family: var(--ff-inter);
  background-color: var(--background-color);
  -webkit-font-smoothing: antialiased;
  -moz-font-smoothing: antialiased;
  -o-font-smoothing: antialiased;
  letter-spacing: -0.28px;
  font-weight: 500;
  line-height: 140%;
  font-size: 14px;
}

.link:actie {
  outline: 0;
}
<nav role="navigation" class="dashboard-sidebar w-nav-menu">
  <div class="sidebar-logo-section">
    <a href="/" class="dashboard-logo w-nav-brand w--current">
      <img src="logo.png" alt="" class="sidebar-logo">
    </a>
    <div class="sidebar-collapse">
      <ion-icon name="chevron-back-outline" role="img" class="md hydrated"></ion-icon>
    </div>
  </div>
  <div class="sidebar-menu">
    <div class="sidebar-menu-section bottom-divider">
      <a href="/" aria-current="page" class="sidebar-link w-inline-block w--current">
        <ion-icon name="home-outline" class="sidebar-icon md hydrated" role="img"></ion-icon>
        <div class="sidebar-link-text">Dashboard</div>
      </a>
    </div>
    <!-- Legal Documents -->
    <div class="sidebar-menu-section">
      <!-- Terms of Service -->
      <a href="/" class="sidebar-link w-inline-block">
        <ion-icon name="document-text-outline" class="sidebar-icon md hydrated" role="img"></ion-icon>
        <div class="sidebar-link-text">Terms of Service</div>
      </a>
      <!-- Privacy Policy -->
      <a href="/" class="sidebar-link w-inline-block">
        <ion-icon name="layers-outline" class="sidebar-icon md hydrated" role="img"></ion-icon>
        <div class="sidebar-link-text">Privacy Policy</div>
      </a>
      <!-- Cookies Policy -->
      <a href="/" class="sidebar-link w-inline-block">
        <ion-icon name="swap-vertical-outline" class="sidebar-icon md hydrated" role="img"></ion-icon>
        <div class="sidebar-link-text">Cookies Policy</div>
      </a>
    </div>
  </div>
</nav>

0

There are 0 answers