I am trying to build an app that has a collapsible side navbar that I can use template inheritance with (jinja2) instead of rebuilding it for every page in the app. However I have not been able to figure out how to build the side navbar without it sharing the same overall div as the main content which then make it incapable of using template inheritance properly. Does anyone have any solutions?
This is the code I have built in html. It works as is supposed to except the fact I cant use it in template inheritance. Any suggestions?
<!-- #Left Sidebar ==================== -->
<div id="main-wrap" class="wrapper">
<aside id="sidebar">
<!--content for sidebar-->
<div class="h-100">
<div class="sidebar-logo">
<a href="{{ url_for('home') }}">BusinessAssistant</a>
</div>
<ul class="sidebar-nav">
<li class="sidebar-header">
Admin Elements
</li>
<li class="sidebar-item">
<a href="{{ url_for('dashboard') }}" class="sidebar-link">
<i class="fa-solid fa-list pe-2"></i>
Dashboard
</a>
</li>
<li class="sidebar-item">
<a href="#" class="sidebar-link collapsed" data-bs-target="#documents" data- bs-toggle="collapse"
aria-expanded="false"><i class="fa-solid fa-file-lines pe-2"></i>
Documents
</a>
<ul id="documents" class="sidebar-dropdown list-unstyled collapse" data-bs-parent="#sidebar">
<li class="sidebar-item">
<a href="{{ url_for('upload_docs') }}" class="sidebar-link">Upload Documents</a>
</li>
<li class="sidebar-item">
<a href="{{ url_for('view_docs') }}" class="sidebar-link">View Documents</a>
</li>
</ul>
</li>
<li class="sidebar-item">
<a href="#" class="sidebar-link">
<i class="fa-solid fa-circle-info pe-2"></i>
Help
</a>
</li>
</ul>
</div>
</aside>
<div class="main">
<nav class="navbar navbar-expand px-3 border-bottom">
<button class="btn" id="sidebar-toggle" type="button">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse navbar">
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a href="#" data-bs-toggle="dropdown" class="nav-icon pe-md-0">
<i class="fa-regular fa-circle-user fa-2xl" style="color: #e9ecef;"></i>
</a>
<div class="dropdown-menu dropdown-menu-end">
<a href="#" class="dropdown-item">Account</a>
<a href="{{ url_for('logout') }}" class="dropdown-item">Logout</a>
</div>
</li>
</ul>
</div>
</nav>
<main class="content py-2">
<div class="response-bar">
<div class="ressi">
<div class="res">
</div>
</div>
</div>
<div class="sub-bar">
</div>
</main>
</div>
2
Answers
To solve this problem i created a main layout page that contained the sidebar and i was able to extend the main layout page to all other html pages that needed to use the sidebar.
use a grid display:
https://developer.mozilla.org/en-US/docs/Web/CSS/grid
assuming your question is CSS related; it seems to be.