pin sidebar btn

This commit is contained in:
Corban-Lee Jones 2024-10-10 16:37:21 +01:00
parent e07ea1f832
commit 9ff2cdd1f1
3 changed files with 38 additions and 10 deletions

View File

@ -195,6 +195,7 @@
.sidebar .sidebar-footer { .sidebar .sidebar-footer {
padding: 0 1rem 1rem 1rem; padding: 0 1rem 1rem 1rem;
display: flex;
} }
.sidebar .sidebar-footer .sidebar-menu-btn { .sidebar .sidebar-footer .sidebar-menu-btn {
@ -208,7 +209,8 @@
background-color: inherit; background-color: inherit;
} }
.sidebar .sidebar-footer .sidebar-menu-btn:hover { .sidebar .sidebar-footer .sidebar-menu-btn:hover,
.sidebar .sidebar-footer .sidebar-menu-btn.active {
background-color: var(--bs-body-bg); background-color: var(--bs-body-bg);
} }

View File

@ -260,27 +260,50 @@ function logError(error) {
// region Sidebar Visibility // region Sidebar Visibility
var _sidebarVisible = $(".sidebar").hasClass("visible"); // Applicable for smaller screens ONLY var _sidebarVisible = $(".sidebar").hasClass("visible"); // Applicable for smaller screens ONLY
const getSidebarVisibility = () => _sidebarVisible;
const setSidebarVisibility = show => {
// Must always show if the sidebar is pinned
show = getSidebarPinned() ? true : show;
function getSidebarVisibility() {
return _sidebarVisible;
}
function setSidebarVisibility(show) {
_sidebarVisible = show; _sidebarVisible = show;
if (show) { if (show) {
$(".sidebar").addClass("visible"); $(".sidebar").addClass("visible");
$(".sidebar-backdrop").show(); $(".sidebar-backdrop").show();
return; return;
} }
$(".sidebar").removeClass("visible"); $(".sidebar").removeClass("visible");
$(".sidebar-backdrop").hide(); $(".sidebar-backdrop").hide();
} }
const toggleSidebarVisibility = () => setSidebarVisibility(!getSidebarVisibility());
function toggleSidebarVisibility() { // Trigger an update to set the backdrop
setSidebarVisibility(!getSidebarVisibility()); $(document).ready(() => setSidebarVisibility(getSidebarVisibility()));
}
// User controls for sidebar visibility
$(".reveal-sidebar-btn").on("click", toggleSidebarVisibility); $(".reveal-sidebar-btn").on("click", toggleSidebarVisibility);
$(".sidebar .btn-close").on("click", () => setSidebarVisibility(false)); $(".sidebar .btn-close").on("click", () => setSidebarVisibility(false));
$(".sidebar-backdrop").on("click", () => setSidebarVisibility(false)); $(".sidebar-backdrop").on("click", () => setSidebarVisibility(false));
// Prevent sidebar from opening if the screen becomes larger then smaller again, while it's visible
$(window).on('resize', () => {
// Can't pass conditional directly, causes flickering effect
if (getSidebarVisibility() && $(window).width() > 992) {
setSidebarVisibility(false);
}
});
// region Sidebar Pin
var _sidebarPinned = $(".sidebar .pin-sidebar-btn").hasClass("active");
const getSidebarPinned = () => _sidebarPinned;
const setSidebarPinned = pin => {
_sidebarPinned = pin;
const btn = $(".sidebar .pin-sidebar-btn");
pin ? btn.addClass("active") : btn.removeClass("active");
}
const toggleSidebarPinned = () => setSidebarPinned(!getSidebarPinned());
// User controls for pinning the sidebar
$(".sidebar .pin-sidebar-btn").on("click", toggleSidebarPinned);

View File

@ -30,6 +30,9 @@
<img src="{{ request.user.avatar_url }}" alt="user icon" class="sidebar-avatar"> <img src="{{ request.user.avatar_url }}" alt="user icon" class="sidebar-avatar">
<strong>{{ request.user.global_name }}</strong> <strong>{{ request.user.global_name }}</strong>
</button> </button>
<button type="button" class="pin-sidebar-btn sidebar-menu-btn justify-content-center d-flex d-lg-none">
<i class="bi bi-pin-angle"></i>
</button>
<ul class="sidebar-menu dropdown-menu"> <ul class="sidebar-menu dropdown-menu">
<li class="dropend"> <li class="dropend">
<button type="button" class="dropdown-item dropdown-toggle" data-bs-toggle="dropdown" data-bs-auto-close="outside"> <button type="button" class="dropdown-item dropdown-toggle" data-bs-toggle="dropdown" data-bs-auto-close="outside">