:root { /* WIDTH AND SPACINGS */ --sidebar-width: min(90vw, 400px); --pad-m: 1.25rem; --pad-s: 0.75rem; --pad-xs: 0.5rem; --dropdown-links-indent: 10px; /* vertical & horizontal header padding */ --header-pad-y: clamp(1rem, 0.716rem + 1.211vw, 1.75rem); --header-pad-x: var(--pad-m); /* links vertical & horizontal padding */ --link-pad-y: 0.7rem; --link-pad-x: 0.5rem; /* panel top & bottom padding */ --panel-block-pad: clamp(0.5rem, -1.375rem + 5vh, 2rem); /* GAPS */ --link-gap: 1.125rem; --list-gap: 0; /* BACKGROUND COLORS */ --nav-bg: white; --cta-bg: dimgray; --link-bg: transparent; --header-bg: gray; --dropdown-content-bg: rgb(0 0 0 / 5%); --dropdown-links-bg: transparent; --skip-link-background: black; --hamburger-bg: transparent; --collapse-icon-bg:#3b3b3b; /* HOVER BACKGROUND */ --cta-hover-bg: black; --link-hover-bg: rgb(0 0 0 / 5%); --dropdown-links-hover-bg: rgb(0 0 0 / 8%); /* TEXT COLORS */ --panel-title-color: black; --panel-link-color: dimgray; --cta-color: white; --dropdown-links-color: dimgray; --label-color: orangered; --skip-link-color: white; --social-color: dimgray; /* HOVER TEXT COLORS */ --cta-hover-color: white; --link-hover-color: black; --dropdown-links-hover-color: black; --social-hover-color: black; /* ICON COLORS */ --panel-icon-color: dimgray; --social-icon-color: var(--social-color); --chevron-icon-color: var(--panel-icon-color); --mobile-menu-trigger-color: white; /* HOVER ICON COLORS */ --social-icon-hover-color: var(--social-hover-color); --link-icon-hover-color: black; /* FONT SIZES */ --panel-title-size: 1.125rem; --panel-back-size: 0.6rem; --link-txt-size: 0.875rem; --nav-icon-size: 1.2rem; --social-icon-size: var(--nav-icon-size); --chevron-size: 1rem; --collapse-icon-size: 30px; /* CSS TRANSITIONS */ --sidebar-transition: 500ms; --sidebar-ttf: cubic-bezier(1, 0, 0.25, 1); --collapse-ttf: cubic-bezier(0.1, 0.55, 0.35, 1); --opacity-transition: 500ms 200ms; --sidebar-link-transition: 500ms; /* BORDER */ --link-border-radius: 0; --horizontal-line: 1px solid rgb(0 0 0 / 10%); --link-underline: var(--horizontal-line); --dropdown-links-underline: none; --sidebar-shadow: 0px 0px 3px rgba(0, 0, 0, 0.75), 0px 5px 15px rgba(0, 0, 0, 0.3); /* OVERLAY */ --overlay-bg: black; --overlay-opacity: 0.5; /* FOCUS STYLES */ --focus-outline-color: black; --focus-outline-offset: 4px; --focus-outline-width: 2px; /* EXTRAS */ --current-link-bg: none; --current-link-underline: solid 3px #9f6aff; /* DROPDOWN LEVELS */ /* Indents */ --lvl-2-indent: var(--dropdown-links-indent); --lvl-3-indent: var(--dropdown-links-indent); /* Dropdown toggle background colors for expanded state */ --lvl-1-toggle-bg-active: var(--link-hover-bg); --lvl-2-toggle-bg-active: var(--link-hover-bg); --lvl-3-toggle-bg-active: var(--link-hover-bg); /* Dropdown content background */ --lvl-1-content-bg: var(--dropdown-content-bg); --lvl-2-content-bg: var(--dropdown-content-bg); --lvl-3-content-bg: var(--dropdown-content-bg); /* Text colors for expanded state */ --lvl-1-toggle-color-active: var(--panel-link-color); --lvl-2-toggle-color-active: var(--panel-link-color); --lvl-3-toggle-color-active: var(--panel-link-color); /* Icon colors (normal) */ --lvl-1-icon-color: var(--chevron-icon-color); --lvl-2-icon-color: var(--chevron-icon-color); --lvl-3-icon-color: var(--chevron-icon-color); /* Icon colors (hover) */ --lvl-1-icon-hover-color: var(--link-icon-hover-color); --lvl-2-icon-hover-color: var(--link-icon-hover-color); --lvl-3-icon-hover-color: var(--link-icon-hover-color); /* Icon size */ --lvl-1-icon-size: 1.8rem; --lvl-2-icon-size: var(--nav-icon-size); --lvl-3-icon-size: var(--nav-icon-size); } /* INSIDE BRICKS */ /* hide header/nav when not in main template */ [data-builder-mode].brx-header-left #brx-header:not(.postid-521 *), [data-builder-mode].brx-header-right #brx-header:not(.postid-521 *) { display: none; } /* site normal width when not in main template */ [data-builder-mode].brx-header-left #brx-content:not(.postid-521 *), [data-builder-mode].brx-header-right #brx-content:not(.postid-521 *), [data-builder-mode].brx-header-left #brx-footer:not(.postid-521 *), [data-builder-mode].brx-header-right #brx-footer:not(.postid-521 *) { margin: 0 !important; } .dwc-sidebar__nav:not(.show-nav .dwc-sidebar__nav, [data-builder-mode] .dwc-sidebar__nav){ display: none; }// Feature Toggles (1 = enabled, 0 = disabled) // Automatically rename the text on the back button to show the panel name // e.g., 'Back to Reviews' instead of the default 'Back' const updateBackText = 1; // Calculate header height for mobile menu top offset const calcHeaderHeight = 1; // Automatically open the current menu item's panel const autoCurrentPosition = 1; // Enable/disable the top bar and off-canvas menu const enableTopBar = 0; const enableOffCanvas = 0; // Mobile and off-canvas breakpoints const mq = window.matchMedia("(max-width: 1024px)"); const offCanvasBreakpoint = window.matchMedia("(max-width:10024px)"); // Off-canvas options const offCanvasPushContent = 0; // Enable off-canvas content push (requires off-canvas to be enabled) const fixedNavTrigger = 1; // Fix the toggle button when pushing content // Dropdown behavior options const openFirstDropDown = 0; // Open the first dropdown content on page load const autoCloseDropdown = 1; // Automatically close the dropdown when it loses focus // Sidebar and layout options const overlaySidebar = 0; // Overlay the sidebar on a fullwidth page (requires off-canvas to be disabled) const overlayTopBar = 0; // Overlay the top bar when using off-canvas // RTL (Right-to-Left) layout support const enableRTL = 0; // Scrolling header reveal/hide effect const enableHeadroom = 1; /* NOTES: - Off-canvas or top bar must be enabled for headroom to work - If you don't want off-canvas on desktop but want the headroom effect on mobile, enable off-canvas and set the off-canvas breakpoint to match `mq` (e.g., 1024px) */ // Padding and offset options const calcTopPadding = 1; // Adjust top padding of the first container when headroom is enabled const offsetHashLinkScroll = 0; // Add offset when scrolling to hash links (useful for sticky headers) // Offcanvas/Mobile menu behavior const mobileMenuAboveHeader = 0; // Offcanvas/Mobile menu will overlap the top bar instead of displaying underneath // COLLAPSE SIDEBAR OPTIONS const enableCollapsibleSidebar = 0; const collapseOnPageLoad = 0; const saveCollapseState = 1; // Toggle whether to save the collapse state const hoverToExpandSidebar = 1; const collapseAutoWidth = 1; const collapseWidth = 80; // manual width, when autowidth is off const collapsecenterScrub = 0.85; // controls icons position on manual width const offsetMultiplier = 3; //controls sidebar width on auto width if (enableOffCanvas && offCanvasBreakpoint.matches) { document.body.classList.add('dwc-offcanvas'); //console.log('offcanvas - 1') } /* OVERLAY SIDEBAR */ /*main and footer*/ .dwc-overlay-sidebar.brx-header-left #brx-content, .dwc-overlay-sidebar.brx-header-left #brx-footer, .dwc-overlay-sidebar.brx-header-right #brx-content, .dwc-overlay-sidebar.brx-header-right #brx-footer, .dwc-offcanvas.brx-header-left #brx-content, .dwc-offcanvas.brx-header-left #brx-footer, .dwc-offcanvas.brx-header-right #brx-content, .dwc-offcanvas.brx-header-right #brx-footer { margin-inline-start: 0; } .dwc-overlay-sidebar:not(.dwc-mobile) { --header-bg: transparent; --nav-bg: transparent; } .dwc-overlay-topbar { --header-bg: transparent; } .dwc-overlay-topbar #dwc_header.dwc-sidebar { background: var(--header-bg); margin-block-end: calc(var(--dwc-header-height) * -1); } .brx-header-left.dwc-overlay-sidebar:not(.dwc-mobile) .swiper-slide { padding-inline-start: var(--sidebar-width); } .brx-header-right.dwc-overlay-sidebar:not(.dwc-mobile) .swiper-slide { padding-inline-end: var(--sidebar-width); } .dwc-mobile-menu-over.dwc-offcanvas .dwc-sidebar__nav, .dwc-mobile-menu-over.dwc-topbar-enabled .dwc-sidebar__nav, .dwc-mobile-menu-over.dwc-mobile .dwc-sidebar__nav{ z-index: 9999; } .dwc-mobile-menu-over.dwc-mobile .dwc-sidebar__nav__panel { padding-block-start: 0 !important; } .dwc-offcanvas .dwc-sidebar__nav__panel:not(.dwc-mobile-menu-over *) { padding-block-start: var(--dwc-header-height); z-index: 0; } .dwc-offcanvas .dwc-header-inner-wrap:not(.dwc-mobile-menu-over *) { z-index:99999; } /* OFFCANVAS */ .dwc-offcanvas.brx-header-left #brx-header { bottom: auto; inline-size: 100%; } .dwc-offcanvas.brx-header-left #brx-header:not(.dwc-headroom *) { position: relative; } .dwc-push-content.dwc-slide-nav-open.dwc-nav-trigger-is-fixed .dwc-nav-trigger { transform: translateX(calc(var(--sidebar-width) * -1)); } .dwc-rtl.dwc-push-content.dwc-slide-nav-open.dwc-nav-trigger-is-fixed .dwc-nav-trigger { transform: translateX(calc(var(--sidebar-width) * 1)); } .dwc-nav-trigger { transition: transform var(--sidebar-transition) var(--sidebar-ttf), opacity var(--opacity-transition); } .dwc-offcanvas .dwc-sidebar__nav { transform: translateX(-100%); transition: transform var(--sidebar-transition) var(--sidebar-ttf), opacity var(--opacity-transition); } .dwc-offcanvas .dwc-sidebar__nav, .dwc-topbar-enabled .dwc-sidebar__nav { background: var(--nav-bg); inline-size: var(--sidebar-width); position: fixed !important; bottom: 0; inset-inline-start: 0; inset-block-start: 0; block-size: 100dvb; overflow: hidden; box-shadow: var(--sidebar-shadow); } .dwc-offcanvas.dwc-slide-nav-open .dwc-mobile-menu-overlay { pointer-events: auto; opacity: var(--overlay-opacity); } .dwc-offcanvas .dwc-mobile-menu-overlay { background: var(--overlay-bg); position: fixed !important; inset-block-start: 0; bottom: 0; inset-inline-start: 0; inset-inline-end: 0; pointer-events: none; opacity: 0; transition: 0.4s 0.2s; block-size: 100vh; } .dwc-slide-nav-open .dwc-sidebar__nav:not(.dwc-push-content *) { transform: translateX(0) !important; } .dwc-push-content .dwc-sidebar__nav__panel { padding-block: var(--panel-block-pad) !important; } .dwc-offcanvas .dwc-sidebar__nav:not(.dwc-mobile *), .dwc-topbar-enabled .dwc-sidebar__nav:not(.dwc-mobile *) { z-index: 1000; } .dwc-topbar-enabled .dwc-sidebar__nav__panel:not(.dwc-mobile *) { padding-block-start: calc(20px + var(--dwc-header-height)); } /* body */ body.dwc-no-scroll { overflow: hidden; block-size: 100vh; } body.dwc-offcanvas { --sidebar-transition: 700ms; transition: transform var(--sidebar-transition) var(--sidebar-ttf), opacity var(--opacity-transition); } /* OFFCANVAS ENDS */ /* push content */ .dwc-push-content.dwc-slide-nav-open .dwc-site-wrapper>header, .dwc-push-content.dwc-slide-nav-open .dwc-site-wrapper>footer, .dwc-push-content.dwc-slide-nav-open .dwc-site-wrapper>main { transform: translateX(var(--sidebar-width)); } .dwc-mobile.dwc-push-content.dwc-slide-nav-open .dwc-site-wrapper { overflow: hidden; block-size: 100dvb; } .dwc-site-wrapper { block-size: 100%; display: flex; flex-direction: column; } header, footer, main { --sidebar-transition: 700ms; transition: transform var(--sidebar-transition) var(--sidebar-ttf), opacity var(--opacity-transition); } /*RTL*/ .dwc-rtl .dwc-sidebar__nav__panel { direction: rtl; } .dwc-rtl #brx-footer:not(.dwc-mobile *, .dwc-overlay-sidebar *, .dwc-offcanvas *), .dwc-rtl #brx-content:not(.dwc-offcanvas *, .dwc-mobile *, .dwc-overlay-sidebar *, .dwc-offcanvas *) { margin-inline-start: unset; margin-inline-end: var(--sidebar-width); } .dwc-rtl header.dwc-sidebar { inset-inline-end: 0; } .dwc-rtl.dwc-mobile .dwc-sidebar__nav, .dwc-rtl.dwc-offcanvas .dwc-sidebar__nav, .dwc-rtl.dwc-topbar-enabled .dwc-sidebar__nav, .dwc-rtl #brx-header { inset-inline-start: auto; inset-inline-end: 0; } .dwc-rtl.dwc-mobile .dwc-sidebar__nav, .dwc-rtl.dwc-offcanvas .dwc-sidebar__nav { transform: translateX(100%); } .dwc-rtl.dwc-push-content.dwc-slide-nav-open header, .dwc-rtl.dwc-push-content.dwc-slide-nav-open main, .dwc-rtl.dwc-push-content.dwc-slide-nav-open footer { --rtl-translate: calc(var(--sidebar-width) * -1); transform: translateX(var(--rtl-translate)); } /* RTL + OVERLAY SIDEBAR */ .dwc-rtl.dwc-overlay-sidebar .brxe-section:not(.dwc-mobile *), .dwc-rtl.dwc-overlay-sidebar #brx-footer .brxe-section:not(.dwc-mobile *) { padding-inline-end: calc(var(--sidebar-width) + 20px); } .dwc-overlay-sidebar .brxe-section:not(.dwc-rtl *, .dwc-mobile *), .dwc-overlay-sidebar #brx-footer .brxe-section:not(.dwc-rtl *, .dwc-mobile *) { padding-inline-start: calc(var(--sidebar-width) + 20px) } /* TOP BAR*/ .dwc-topbar-enabled .dwc-header-inner-wrap, .dwc-offcanvas .dwc-header-inner-wrap { box-shadow: var(--sidebar-shadow); } .dwc-topbar-enabled .dwc-header-inner-wrap { z-index: 9999; } .dwc-topbar-enabled #brx-header { inline-size: 100%; block-size: var(--dwc-header-height); background: transparent !important; /* position: relative;*/ } .dwc-topbar-enabled .dwc-sidebar:not(.dwc-mobile *) { position: fixed; inline-size: 100%; max-inline-size: 100%; background: var(--header-bg); box-shadow: none; } /* TOP BAR ENDS */ .dwc-current-menu-item { background-color: var(--current-link-bg); border-bottom: var(--current-link-underline); } #brx-header { background-color: var(--header-bg); } .dwc-mobile.brx-header-left #brx-header:not(.dwc-headroom *), .dwc-mobile.brx-header-right #brx-header:not(.dwc-headroom *) { position: relative; inline-size: 100%; block-size: auto; } /* MEDIA QUERY - DESKTOP */ @media (min-width: 1025px) { .dwc-nav-trigger:not(.dwc-offcanvas *, .bricks-draggable-item), .dwc-mobile-menu-overlay:not(.dwc-offcanvas *), .mobile.dwc-nav__panel__header:not(.dwc-offcanvas *), .dwc-hamburger-wrap:not(.dwc-offcanvas *, .bricks-draggable-item){ display: none !important; } } /* MEDIA QUERY - DESKTOP ENDS */ html, body { block-size: 100% } main, footer { inline-size: 100%; } main { flex-grow: 1 } .dwc-sidebar { box-shadow: var(--sidebar-shadow) } .dwc-sidebar__nav { block-size: 100%; z-index: 1; inline-size: var(--sidebar-width); position: relative; background-color: var(--nav-bg); } .dwc-sidebar__nav:not([data-builder-mode] *) { overflow: hidden; } .dwc-sidebar__nav__panel { background: var(--nav-bg); position: absolute; inline-size: 100%; block-size: 100%; display: flex; flex-direction: column; transition: transform var(--sidebar-transition) var(--sidebar-ttf), opacity var(--opacity-transition); transform: translateX(0); box-shadow: -5px -5px 40px rgb(0 0 0/10%); z-index: 1000; padding-block: var(--panel-block-pad); padding-block-start: 0; flex-wrap: nowrap; } .dwc-mobile .dwc-sidebar__nav__panel { padding-block-start: var(--dwc-header-height); } .dwc-sidebar__nav__panel:not([data-builder-mode] *) { overflow: hidden; } .dwc-sidebar__nav__panel:not([data-builder-mode] *)::after { content: ''; position: absolute; bottom: 5px; inline-size: 100%; block-size: var(--panel-block-pad); background: var(--nav-bg); filter: blur(5px) } .dwc-nav__panel__header { inline-size: 100%; padding: 0.32rem var(--pad-m); gap: var(--list-gap); display: flex; flex-direction: row; justify-content: space-between; align-items: center; z-index: 2; flex-wrap: nowrap; } .dwc-header-inner-wrap { inline-size: 100%; padding-block: var(--header-pad-y); padding-inline: var(--header-pad-x); gap: var(--list-gap); display: flex; flex-direction: row; justify-content: space-between; align-items: center; z-index: 2; flex-wrap: nowrap; background: var(--header-bg); position: relative; } .dwc-nav__panel__inner { inline-size: 100%; flex-grow: 1; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; flex-wrap: nowrap; padding-inline: var(--pad-m); } .dwc-nav__panel__title-wrap { padding: var(--pad-s) var(--pad-xs); inline-size: 100%; box-shadow: 0 -6px 10px 15px var(--nav-bg); position: -webkit-sticky; position: sticky; inset-block-start: -3px; background-color: var(--nav-bg); z-index: 1; } .dwc-nav__panel__title { color: var(--panel-title-color); font-size: var(--panel-title-size); font-weight: 500; letter-spacing: 1px; } .dwc-sidebar__nav__ul { display: flex; flex-direction: column; inline-size: 100%; margin: 0; padding-inline-start: 0; /* padding-block: var(--pad-m); */ gap: var(--list-gap); flex-grow: 1; } .dwc-sidebar__nav__ul:not(.dwc-sidebar__dropdown-content .dwc-sidebar__nav__ul) { padding-block: var(--pad-m); } .dwc-sidebar__nav__li { list-style: none; inline-size: 100%; position: relative; border-radius: var(--link-border-radius) } .dwc-sidebar__nav__btn, .dwc-sidebar__nav__link { inline-size: 100%; display: flex !important; flex-direction: row; justify-content: flex-start; flex-wrap: nowrap; align-items: center; padding: var(--link-pad-y) var(--link-pad-x); gap: var(--link-gap); color: var(--panel-link-color); text-align: left; line-height: 1.3; transition: var(--sidebar-link-transition), outline 0s; border-radius: var(--link-border-radius); } .dwc-nav__back-btn { text-transform: uppercase; font-weight: bold; letter-spacing: 2px; font-size: var(--panel-back-size); } .dwc-nav__home-btn { inline-size: auto; padding: var(--pad-s); margin: auto; background: transparent; border: none; cursor: pointer; border-radius: var(--link-border-radius); position: relative; } .nav__home-btn__txt { position: absolute; clip: rect(0, 0, 0, 0); font-size: 12px; } .dwc-sidebar__nav__btn, .dwc-sidebar__dropdown-toggle button { outline-width: 0; outline: none; cursor: pointer; background: var(--link-bg); border: none; } /* mobile menu toggle button*/ .dwc-nav-trigger { cursor: pointer; position: relative; min-inline-size: 26px !important; min-block-size: 0 !important; } .dwc-nav-trigger::before { inset-inline-start: 0; inset-inline-end: 0; transform: translateY(-5px); } .dwc-nav-trigger::after { inset-inline-start: 10px; inset-inline-end: 0; transform: translateY(5px); } .dwc-nav-trigger::before, .dwc-nav-trigger:after { content: ''; position: absolute; transition: 0.4s 0.3s; block-size: 3px; background: var(--mobile-menu-trigger-color); inset-block-start: 50%; border-radius: 50vw } .dwc-slide-nav-open .dwc-nav-trigger::before { transform: translateY(0) rotate(45deg); } .dwc-slide-nav-open .dwc-nav-trigger::after { transform: translateY(0) rotate(-45deg); inset-inline-start: 0; } .dwc-sidebar__dropdown-toggle .dwc-nav__link__icon--chevron-right { transform: rotate(90deg); transition: 0.4s } .dwc-sidebar__dropdown-toggle [aria-expanded="true"] .dwc-nav__link__icon { transform: rotate(270deg) } .dwc-sidebar__dropdown-content { overflow: hidden; transition: var(--sidebar-transition) cubic-bezier(0.22, 0.61, 0.36, 1); padding-inline: var(--link-pad-x); padding-block: 0; background-color: var(--dropdown-content-bg) } /* .dwc-sidebar__dropdown-content .dwc-sidebar__nav__ul { padding-block: calc(var(--link-pad-y) * 0.8); } */ .dwc-sidebar__dropdown-content .dwc-sidebar__nav__li { border: var(--dropdown-links-underline); } .dwc-sidebar__dropdown-toggle { inline-size: 100%; display: flex !important; flex-direction: row; justify-content: flex-start; flex-wrap: nowrap; align-items: center; gap: var(--link-gap); text-align: left; line-height: 1.3; padding-inline-start: var(--link-pad-x); position: relative; transition: var(--sidebar-link-transition); } .dwc-sidebar__dropdown ul .dwc-nav__link__text, .dwc-sidebar__dropdown button { transition: var(--sidebar-link-transition), outline 0s; border-radius: var(--link-border-radius); inline-size: 100%; } .dwc-sidebar__dropdown button, .dwc-sidebar__dropdown-toggle .dwc-nav__link__text { padding: var(--link-pad-y) 0; } .dwc-sidebar__dropdown-content ul .dwc-nav__link__text { padding: var(--link-pad-y) var(--link-pad-x); } .dwc-sidebar__dropdown-content ul:not([class*="level-"]:not(.level-1) ul){ padding-inline-start: calc(var(--dropdown-links-indent) - var(--link-pad-x)); padding-block: var(--link-pad-y); } .dwc-sidebar__dropdown-toggle button { margin-inline-start: auto; flex-grow: 1; padding-inline-end: var(--link-pad-x); position: absolute; inset-block-start: 0; bottom: 0; inset-inline-start: 0; inset-inline-end: 0; } /* LEVEL 1 STYLES */ /* Normal icon color for Level 1 */ .dwc-sidebar__dropdown-toggle.level-1 .dwc-nav__link__icon:not(.dwc-nav__link__icon--chevron-right), .dwc-nav__link__icon:not(.dwc-nav__home-btn *, .dwc-nav__link__icon--chevron-right, .dwc-nav__link__icon--chevron-left) { color: var(--lvl-1-icon-color); font-size:var(--lvl-1-icon-size) } /* Expanded background color for Level 1 */ .dwc-sidebar__dropdown-toggle.level-1:has([aria-expanded='true']) { background-color: var(--lvl-1-toggle-bg-active); } /* Dropdown content background for Level 1 */ .dwc-sidebar__dropdown-content.level-1 { background-color: var(--lvl-1-content-bg); } /* LEVEL 2 STYLES */ /* Expanded background color for Level 2 */ .dwc-sidebar__dropdown-toggle.level-2:has([aria-expanded='true']) { background-color: var(--lvl-2-toggle-bg-active); } /* Expanded text color for Level 2 */ .dwc-sidebar__dropdown-toggle.level-2:has([aria-expanded='true']) .dwc-nav__link__text { color: var(--lvl-2-toggle-color-active); } /* Dropdown content background for Level 2 */ .dwc-sidebar__dropdown-content.level-2 { background-color: var(--lvl-2-content-bg); padding-inline-start: var(--lvl-2-indent); } /* Normal icon color and size for Level 2 */ .dwc-sidebar__dropdown-toggle.level-2 .dwc-nav__link__icon:not(.dwc-nav__link__icon--chevron-right) { font-size:var(--lvl-2-icon-size) } .dwc-sidebar__dropdown-toggle.level-2 .dwc-nav__link__icon { color: var(--lvl-2-icon-color); } /* Icon color for Level 2 when expanded */ .level-2:has([aria-expanded='true']) .dwc-nav__link__icon { color: var(--lvl-2-icon-color); } /* Hover icon color for Level 2 when expanded */ li>.level-2:has([aria-expanded='true']):hover .dwc-nav__link__icon { color: var(--lvl-2-icon-hover-color) !important; } /* LEVEL 3 STYLES */ /* Expanded background color for Level 3 */ .dwc-sidebar__dropdown-toggle.level-3:has([aria-expanded='true']) { background-color: var(--lvl-3-toggle-bg-active); } /* Expanded text color for Level 3 */ .dwc-sidebar__dropdown-toggle.level-3:has([aria-expanded='true']) .dwc-nav__link__text { color: var(--lvl-3-toggle-color-active); } /* Dropdown content background for Level 3 */ .dwc-sidebar__dropdown-content.level-3 { background-color: var(--lvl-3-content-bg); padding-inline-start: var(--lvl-3-indent); } /* Normal icon color and size for Level 3 */ .dwc-sidebar__dropdown-toggle.level-3 .dwc-nav__link__icon { color: var(--lvl-3-icon-color); } .dwc-sidebar__dropdown-toggle.level-3 .dwc-nav__link__icon:not(.dwc-nav__link__icon--chevron-right) { font-size:var(--lvl-3-icon-size) } /* Icon color for Level 3 when expanded */ .level-3:has([aria-expanded='true']) .dwc-nav__link__icon { color: var(--lvl-3-icon-color); } /* Hover icon color for Level 3 when expanded */ li>.level-3:has([aria-expanded='true']):hover .dwc-nav__link__icon { color: var(--lvl-3-icon-hover-color) !important; } .dwc-sidebar__nav__li { border-bottom: var(--link-underline); } .dwc-sidebar__nav__link:hover, .dwc-nav__home-btn:hover, button.dwc-sidebar__nav__btn:hover, .dwc-sidebar__dropdown-toggle:hover { background: var(--link-hover-bg); } .dwc-sidebar__dropdown-content a { background: var(--dropdown-links-bg); color: var(--dropdown-links-color) } .dwc-sidebar__dropdown-content a:hover { background: var(--dropdown-links-hover-bg); color: var(--dropdown-links-hover-color) } button:hover .dwc-nav__link__text, .dwc-sidebar__dropdown-toggle:hover .dwc-nav__link__text, button:hover .dwc-nav__back__text, .dwc-sidebar__dropdown-toggle:hover .dwc-nav__link__text { color: var(--link-hover-color); } .dwc-nav__link__text { color: var(--panel-link-color); font-size: var(--link-txt-size); } .dwc-sidebar__nav__link::before { content: ''; inset-block-start: 0; bottom: 0; inset-inline-start: 0; inset-inline-end: 0; position: absolute; } /* button:hover .dwc-nav__link__icon, li:hover .dwc-nav__link__icon { color: var(--link-icon-hover-color) !important; } */ button:hover .dwc-nav__link__icon:not(.level-2:has([aria-expanded='true']) *, .level-3 *), li:hover > .dwc-sidebar__dropdown-toggle .dwc-nav__link__icon:not(.level-2:has([aria-expanded='true']) *, .level-3:has([aria-expanded='true']) *), li:hover > a .dwc-nav__link__icon{ color: var(--link-icon-hover-color) !important; } .dwc-nav__link__icon { font-size: var(--nav-icon-size); color: var(--panel-icon-color) } .dwc-nav__link__icon--chevron-right { margin-inline-start: auto; } .dwc-nav__link__icon--chevron-right, .dwc-nav__link__icon--chevron-left { font-size: var(--chevron-size); color: var(--chevron-icon-color); } svg.dwc-nav__link__icon{ width: var(--nav-icon-size); height: auto; } svg.dwc-nav__link__icon path { stroke: var(--panel-icon-color); } .dwc-sidebar__nav__link:hover > svg.dwc-nav__link__icon path { stroke:var(--link-icon-hover-color) !important; } button:hover svg.dwc-nav__link__icon path:not(.level-2:has([aria-expanded='true']) *, .level-3 *), li:hover > .dwc-sidebar__dropdown-toggle svg.dwc-nav__link__icon path:not(.level-2:has([aria-expanded='true']) *, .level-3:has([aria-expanded='true']) *), li:hover > a svg.dwc-nav__link__icon path { color: var(--link-icon-hover-color) !important; } .dwc-sidebar__nav__list-img { inline-size: 100%; aspect-ratio: 16/9; object-fit: cover; object-position: top center; border-radius: var(--link-border-radius); } .dwc-sidebar__nav__panel-footer { inline-size: 100%; padding-block: var(--pad-m); gap: var(--link-gap); z-index: 5; padding-inline: var(--pad-m); border-top: var(--horizontal-line); } .dwc-sidebar__nav__panel-footer:not([data-builder-mode] *) { box-shadow: 0 6px 24px 32px var(--nav-bg); } .dwc-social-wrapper a { color: var(--social-color); } .dwc-social-wrapper a:hover { color: var(--social-hover-color) } .dwc-social-wrapper li { background: var(--social-bg); border-radius: var(--link-border-radius); } .dwc-social-wrapper li:hover { background: var(--social-hover-bg); } .dwc-social-wrapper i { color: var(--social-icon-color); font-size: var(--social-icon-size); } .dwc-social-wrapper li:hover i { color: var(--social-icon-hover-color) } .dwc-cta { justify-content: center; background: var(--cta-bg); inline-size: 100%; color: var(--cta-color); border-radius: var(--link-border-radius); } .dwc-cta:hover { background: var(--cta-hover-bg); } /*FOCUS STYLES*/ .dwc-sidebar *:not(.dwc-sidebar .dwc-sidebar__nav__panel):focus-visible { outline: solid var(--focus-outline-width) var(--focus-outline-color) !important; outline-offset: var(--focus-outline-offset); transition: 0s; } .dwc-sidebar li:not(.dwc-sidebar__dropdown):focus-within { outline: solid var(--focus-outline-width) var(--focus-outline-color) !important; } .dwc-sidebar li:focus-within:has(:focus:not(:focus-visible)), #brx-header .dwc-sidebar li a:not(.dwc-sidebar__dropdown-toggle *):focus-visible, #brx-header .dwc-sidebar__nav__btn:not(.dwc-nav__back-btn):focus-visible, .dwc-sidebar__nav__panel:focus, .dwc-sidebar__nav__panel:focus-visible, .dwc-sidebar *:focus:not(:focus-visible), header:focus-visible { outline: none !important; } /*FOCUS STYLES END*/ .dwc-slide-left { transform: translateX(-100%); z-index: 0; } .dwc-slide-right { transform: translateX(75%); z-index: 0; opacity: 0; } /* mobile menu toggle */ .dwc-nav-trigger { border: none; background: none; padding: var(--pad-m) } /*MEDIA QUERY - MOBILE*/ @media (max-width:1024px) { /*header and menu on mobile*/ .brx-header-left #brx-header:not([data-builder-mode] *, .dwc-headroom.dwc-mobile *), .brx-header-right #brx-header:not([data-builder-mode] *) { position: relative; inline-size: 100%; block-size: auto; } /*main and footer*/ .brx-header-left #brx-content, .brx-header-left #brx-footer, .brx-header-right #brx-content, .brx-header-right #brx-footer { margin: 0 !important; } .dwc-sidebar__nav { background: var(--nav-bg); inline-size: var(--sidebar-width); position: fixed; bottom: 0; inset-inline-start: 0; inset-block-start: 0; transform: translateX(-100%); transition: transform var(--sidebar-transition) var(--sidebar-ttf), opacity var(--opacity-transition); min-block-size: 100vh; min-block-size: 100dvb; } .dwc-sidebar__nav__panel:not([data-builder-mode] *) { background: transparent; } .dwc-sidebar__nav__panel>div { background: var(--nav-bg); } .dwc-slide-nav-open .dwc-sidebar__nav:not(.dwc-push-content *) { transform: translateX(0); } .dwc-nav__link__text { font-weight: 500; } .dwc-sidebar__logo-wrapper { inline-size: auto; } body.dwc-slide-nav-open { overflow: hidden; block-size: 100vh } .dwc-mobile-menu-overlay { background: var(--overlay-bg); position: fixed; inset-block-start: 0; bottom: 0; inset-inline-start: 0; inset-inline-end: 0; pointer-events: none; opacity: 0; transition: 0.4s 0.2s; } .dwc-slide-nav-open .dwc-mobile-menu-overlay { pointer-events: auto; opacity: var(--overlay-opacity); } /* RIGHT MENU ON MOBILE*/ .brx-header-right .dwc-sidebar__nav { transform: translateX(100%); inset-inline-start: auto; inset-inline-end: 0; } .dwc-slide-nav-open.brx-header-right .dwc-sidebar__nav { transform: translateX(0%); } /* inside Bricks start*/ [data-builder-mode] .dwc-sidebar__nav { inset-block-start: 120px; transform: translateX(0); border-top: dashed 1px gray; position: static; overflow: visible; } [data-builder-mode].brx-header-left #brx-header, [data-builder-mode].brx-header-right #brx-header { background: transparent; } /* inside Bricks end */ } /*MEDIA QUERY - MOBILE ENDS */ /* headroom*/ .dwc-headroom.dwc-offcanvas .dwc-sidebar, .dwc-headroom.dwc-topbar-enabled .dwc-sidebar, .dwc-headroom.dwc-offcanvas .dwc-header-inner-wrap, .dwc-headroom.dwc-topbar-enabled .dwc-header-inner-wrap { position: fixed; inset-block-start: 0; inset-inline-start: 0; inset-inline-end: 0; transition: transform 1s ease; } /*.dwc-headroom.scroll-down .dwc-sidebar:not(.dwc-topbar-enabled *),*/ .dwc-headroom.dwc-offcanvas.scroll-down .dwc-header-inner-wrap, .dwc-headroom.dwc-topbar-enabled.scroll-down .dwc-header-inner-wrap { transform: translateY(-100%); } @media (max-height: 667px) { .dwc-sidebar__nav__panel:not(.ng-scope .dwc-sidebar__nav__panel) { overflow-y:scroll; overscroll-behavior: contain; /* min-block-size: 100vh; min-block-size: 100dvb;*/ } .dwc-nav__panel__inner { overflow: hidden; flex-shrink: 0; } } /* MEDIA QUERY - MOBILE ENDS */ /*SCROLLBARS*/ .dwc-nav__panel__inner::-webkit-scrollbar-track { border-radius: 5px; background-color: transparent; } .dwc-nav__panel__inner::-webkit-scrollbar { inline-size: 0; background-color: transparent; } .dwc-nav__panel__inner::-webkit-scrollbar-thumb { border-radius: 5px; background-color: var(--nav-bg); } /* SCROLLBARS END */ /* FADE IN OFFCANVS */ .dwc-offcanvas-header{ animation: dwc-header-fade-in 0.25s cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.2s both; } .dwc-offcanvas-header nav{ animation: dwc-header-fade-in 0.25s cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.6s both; } body:has(.dwc-offcanvas-header) { animation: dwc-header-fade-in 0.25s cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.2s both; } @keyframes dwc-header-fade-in { 0% { opacity: 0; } 100% { opacity: 1; } } /* INSIDE BRICKS */ [data-builder-mode] .dwc-sidebar__nav__panel, [data-builder-mode].brx-header-left #brx-header, [data-builder-mode].brx-header-right #brx-header { position: static !important; outline: gray dashed 3px; padding-block-end: 20px; min-block-size: min(100vh, 600px); block-size: unset; } #brx-header.bricks-area { inline-size: 100% !important; min-block-size: unset !important; padding-block-end: 0 !important; } .bricks-draggable-item.dwc-sidebar { position: relative } .bricks-draggable-item.dwc-sidebar__nav { position: absolute; inset-block-start: 100%; flex-wrap: nowrap; } [data-builder-mode] .dwc-slide-right { opacity: 1 !important; transform: translateX(0) !important; } [data-builder-mode] .dwc-sidebar__nav { overflow: visible !important; } [data-builder-mode] .dwc-sidebar__nav__panel:hover { outline: yellow solid 3px; z-index: 100000 } [data-builder-mode] .dwc-slide-right { opacity: 1; transform: translateX(0); } [data-builder-mode] button.dwc-sidebar__nav__btn, [data-builder-mode] .dwc-sidebar__nav__link, [data-builder-mode] .dwc-sidebar__nav__panel { position: relative; } [data-builder-mode] button.dwc-sidebar__nav__btn::after { content: 'TO ' '"'attr(data-title)'"' ' PANEL'; position: absolute; bottom: 1px; left: 40px; font-size: 8px; font-weight: bold; color: var(--label-color); letter-spacing: 1px; font-family: poppins, roboto; } [data-builder-mode] button.dwc-nav__back-btn::after { content: 'To previous panel'; inset-inline-start: 32px; } [data-builder-mode] button.dwc-nav__home-btn::after { content: 'HOME'; position: absolute; top: 80%; left: 48%; right: auto; transform: translateX(-50%); white-space: nowrap; opacity: 0.8; font-size: 8px; font-weight: bold; color: var(--label-color); letter-spacing: 1px; font-family: poppins, roboto; } [data-builder-mode] .dwc-sidebar__nav__panel::after { content: '"'attr(data-title)'"' ' Panel'; position: absolute; top: 0; left: 100%; font-size: 18px; font-weight: bold; color: black; background: white; padding-inline: 2rem; letter-spacing: 1px; white-space: nowrap; writing-mode: vertical-lr; } [data-builder-mode] .dwc-sidebar__dropdown-toggle > button::before { position: absolute; right: 100%; color: var(--label-color); background-color: #ebebeb; text-transform: uppercase; font-size: 10px; font-weight: bold; font-family: poppins, roboto; padding: 4px; border-radius: 5px; } [data-builder-mode] .dwc-sidebar__dropdown-content{ overflow: visible; } [data-builder-mode] .dwc-nav__panel__inner > ul > .dwc-sidebar__dropdown > .dwc-sidebar__dropdown-toggle > button::before{ content: 'L1'; } [data-builder-mode] .dwc-sidebar__dropdown-toggle:not(.dwc-nav__panel__inner > ul > .dwc-sidebar__dropdown > *,.dwc-sidebar__dropdown .dwc-sidebar__dropdown .dwc-sidebar__dropdown > *) > button::before{ content: 'L2'; } [data-builder-mode] .dwc-sidebar__dropdown-toggle > button::before{ content: 'L3'; } /* [data-builder-mode] .dwc-sidebar__dropdown-content:not(.dwc-sidebar__nav__li.is-active-element *, .is-active-element, :has(.is-active-element), .is-active-element + .dwc-sidebar__dropdown-content, :has(.is-active-element) + .dwc-sidebar__dropdown-content) { height: 0; overflow: hidden; }*/ /* COLLAPSE SIDEBAR*/ .dwc-collapse-enabled #brx-header, .dwc-nav__link__icon, .dwc-social-wrapper li .icon, .dwc-nav__link__text, .dwc-nav__link__icon--chevron-right, .dwc-social__text, .dwc-show, .dwc-hide, .dwc-toggle-collapse .brxe-icon, footer:not(.dwc-offcanvas, .dwc-mobile *, .dwc-overlay-sidebar *, [data-builder-mode] *), .dwc-collapse-enabled .dwc-site-wrapper>:not(header, .dwc-offcanvas, .dwc-mobile *, .dwc-overlay-sidebar *), .dwc-collapse-enabled main:not(.dwc-mobile *) { --sidebar-transition: 700ms; transition: transform var(--sidebar-transition) var(--collapse-ttf), opacity var(--opacity-transition), inline-size var(--sidebar-transition) var(--collapse-ttf) !important; } .dwc-collapse-sidebar .dwc-nav__link__icon:not(.dwc-nav__link__icon--chevron-right, .dwc-rtl *), .dwc-collapse-sidebar .dwc-social-wrapper li .icon:not(.dwc-rtl *) { transform: translateX(calc(var(--sidebar-width) - var(--collapse-offset))); } .dwc-rtl.dwc-collapse-sidebar .dwc-nav__link__icon:not(.dwc-nav__link__icon--chevron-right), .dwc-rtl.dwc-collapse-sidebar .dwc-social-wrapper li .icon{ transform: translateX(calc((var(--sidebar-width) * -1) + var(--collapse-offset))); } .dwc-collapse-sidebar .dwc-show:not(.dwc-rtl *) { transform: translateX(calc(var(--sidebar-width) - (var(--collapse-offset) + var(--collapse-pad)))); } .dwc-collapse-sidebar .dwc-show { opacity: 1; } .dwc-collapse-sidebar .dwc-nav__link__text, .dwc-collapse-sidebar .dwc-nav__link__icon--chevron-right, .dwc-collapse-sidebar .dwc-social-wrapper li span, .dwc-collapse-sidebar .dwc-hide { opacity: 0; } .dwc-collapse-sidebar #brx-header:not(.dwc-rtl *) { transform: translateX(calc(-100% + var(--collapse-offset))) } .dwc-rtl.dwc-collapse-sidebar #brx-header { transform: translateX(calc(100% - var(--collapse-offset))) } .dwc-collapse-sidebar footer:not(.dwc-offcanvas, .dwc-mobile *, .dwc-overlay-sidebar *, [data-builder-mode] *), .dwc-collapse-sidebar .dwc-site-wrapper>:not(header, .dwc-offcanvas, .dwc-mobile *, .dwc-overlay-sidebar *, [data-builder-mode] *), .dwc-collapse-sidebar>main:not(.dwc-mobile *) { --sidebar-transition: 350ms; inline-size: calc(100% - var(--collapse-offset)) !important; margin-inline-start: auto !important; } .dwc-collapse-enabled.brx-header-left #brx-content:not(.dwc-collapse-sidebar *, .dwc-mobile *), .dwc-collapse-enabled.brx-header-left #brx-footer:not(.dwc-collapse-sidebar *, .dwc-mobile *) { margin-inline-start: auto; inline-size: calc((100% + 15px) - var(--sidebar-width)); } .dwc-toggle-collapse:not([data-builder-mode] *, .dwc-collapse-enabled .dwc-toggle-collapse) { display: none; } .dwc-collapse-sidebar .dwc-toggle-collapse .brxe-icon:not(.dwc-rtl *) { transform: rotate(180deg); } .dwc-rtl.dwc-collapse-sidebar .dwc-toggle-collapse .brxe-icon { transform: rotate(0deg) !important; } .dwc-rtl .dwc-toggle-collapse .brxe-icon { transform: rotate(180deg) !important; } .dwc-show:not(.dwc-collapse-sidebar *, [data-builder-mode] *), .dwc-collapse-sidebar .dwc-hide:not(.dwc-fade) { opacity: 0; position: absolute; } /* WITH TOBAR ENABLED */ .dwc-topbar-enabled .dwc-toggle-collapse { position: absolute; inset-inline-start: var(--sidebar-width); inset-block-start: 100%; block-size: 100%; transition: left var(--sidebar-transition) var(--collapse-ttf); display: flex; } .dwc-topbar-enabled.dwc-mobile .dwc-toggle-collapse{ display: none; } .dwc-topbar-enabled.dwc-collapse-sidebar .dwc-toggle-collapse { inset-inline-start: var(--collapse-offset); } .dwc-collapse-sidebar.dwc-topbar-enabled .dwc-header-inner-wrap.dwc-show { transform: translateX(0); } .dwc-collapse-sidebar.dwc-topbar-enabled .dwc-nav__link__icon:not(.dwc-nav__link__icon--chevron-right, .dwc-auto-width *), .dwc-collapse-sidebar.dwc-topbar-enabled .dwc-social-wrapper li .icon:not(.dwc-auto-width *) { transform: translateX(calc(var(--sidebar-width) - ((var(--center-scrub) * var(--collapse-w)) + var(--icon-width-offset)))); } .dwc-collapse-sidebar.dwc-topbar-enabled #brx-header { transform: unset !important; } .dwc-topbar-enabled.dwc-collapse-sidebar .dwc-sidebar__nav { transform: translateX(calc(-100% + var(--collapse-offset))); } .dwc-topbar-enabled .dwc-sidebar__nav { transition: transform var(--sidebar-transition) var(--collapse-ttf), opacity var(--opacity-transition), width var(--sidebar-transition) var(--collapse-ttf) !important; } /* MANUAL WIDTH*/ .dwc-collapse-sidebar #brx-header:not(.dwc-auto-width *, .dwc-rtl *) { transform: translateX(calc(-100% + var(--collapse-w))); } .dwc-rtl.dwc-collapse-sidebar #brx-header:not(.dwc-auto-width *) { transform: translateX(calc(100% - var(--collapse-w))); } .dwc-collapse-sidebar .dwc-nav__link__icon:not(.dwc-nav__link__icon--chevron-right, .dwc-auto-width *), .dwc-collapse-sidebar .dwc-social-wrapper li .icon:not(.dwc-auto-width *) { transform: translateX(calc(var(--sidebar-width) - ((var(--center-scrub) * var(--collapse-w)) + var(--icon-width-offset)))); } .dwc-collapse-sidebar .dwc-show:not(.dwc-auto-width *) { opacity: 1; transform: translateX(calc(var(--sidebar-width) - ((var(--center-scrub) * var(--collapse-w)) + var(--icon-width-offset)))); } .dwc-topbar-enabled.dwc-collapse-sidebar .dwc-sidebar__nav:not(.dwc-auto-width *) { transform: translateX(calc(-100% + var(--collapse-w))) ; } .dwc-topbar-enabled.dwc-collapse-sidebar .dwc-toggle-collapse:not(.dwc-auto-width *) { inset-inline-start: var(--collapse-w); }if (enableTopBar && !enableOffCanvas) { document.body.classList.add('dwc-topbar-enabled') } if (enableRTL) { document.body.classList.add('dwc-rtl') } // we can remove !enableOffCanvas if on mobile only to have overlay on desktop + headroom on mobile. if (overlaySidebar && !enableOffCanvas) { document.body.classList.add('dwc-overlay-sidebar') } if (overlayTopBar && enableOffCanvas) { document.body.classList.add('dwc-overlay-topbar') } if (mobileMenuAboveHeader == 1) { document.body.classList.add('dwc-mobile-menu-over') } document.body.classList.add('show-nav') //console.log('show nav') //document.addEventListener('DOMContentLoaded', () => { // COLLAPSE SIDEBAR startes if (enableCollapsibleSidebar && !enableOffCanvas && !mq.matches) { const collapseToggle = document.querySelector('.dwc-toggle-collapse'); const sidebarNav = document.querySelector('.dwc-sidebar__nav'); let removedByMouseEnter = false; // Track if class was removed by hover document.body.classList.add('dwc-collapse-enabled'); if (collapseAutoWidth) { document.body.classList.add('dwc-auto-width'); } else { document.body.style.setProperty('--collapse-w', `${collapseWidth}px`); document.body.style.setProperty('--center-scrub', `${collapsecenterScrub}`); } // Toggle collapse on button click collapseToggle.addEventListener('click', function () { document.body.classList.toggle('dwc-collapse-sidebar'); initCollapseContent(); goHome(); saveCollapseStatus(); // Save the updated state after toggling }); // Hover functionality if (hoverToExpandSidebar) { sidebarNav.addEventListener('mouseenter', function () { if (document.body.classList.contains('dwc-collapse-sidebar')) { document.body.classList.remove('dwc-collapse-sidebar'); removedByMouseEnter = true; // Mark that we explicitly removed it } }); sidebarNav.addEventListener('mouseleave', function () { if (removedByMouseEnter) { document.body.classList.add('dwc-collapse-sidebar'); initCollapseContent(); goHome() removedByMouseEnter = false; // Reset the flag after re-adding } }); } // expand when links are focused let removedByFocus = false; let keepOpenOnEnter = false; const focusableElements = sidebarNav.querySelectorAll('a, button, input, [tabindex]:not([tabindex="-1"])'); // Listen for 'keydown' on buttons within sidebarNav to detect Enter key presses sidebarNav.addEventListener('keydown', function (event) { if (event.key === 'Enter' && event.target.tagName === 'BUTTON') { keepOpenOnEnter = true; } }); sidebarNav.addEventListener('focusin', function (event) { if (document.body.classList.contains('dwc-collapse-sidebar')) { document.body.classList.remove('dwc-collapse-sidebar'); removedByFocus = true; // Mark that we explicitly removed it } }); sidebarNav.addEventListener('focusout', function () { setTimeout(function () { const isFocusOutsideSidebar = [...focusableElements].every(el => !el.contains(document.activeElement)); if (isFocusOutsideSidebar && removedByFocus && !keepOpenOnEnter) { document.body.classList.add('dwc-collapse-sidebar'); initCollapseContent(); goHome(); removedByFocus = false; // Reset the flag after re-adding } // Reset the Enter key flag after the check keepOpenOnEnter = false; }, 50); }); // Run once on page load to apply the saved state loadCollapseStatus(); //----- COLLAPSE ON PAGE LOAD if (collapseOnPageLoad) { document.body.classList.add('dwc-collapse-sidebar'); saveCollapseStatus(); // Save the updated state after toggling } // Call the function when needed setCollapseOffset(); } // COLLAPSE SIDEBAR FUNCTIONS // // set offset variable // function setCollapseOffset() { // // Get the padding values of .dwc-nav__panel__inner // const panelInner = document.querySelector('.dwc-nav__panel__inner'); // if (!panelInner) return; // Check if element exists // const panelStyles = getComputedStyle(panelInner); // const paddingLeft = parseFloat(panelStyles.paddingLeft); // // Get the width of .dwc-nav__link__icon // const iconElement = document.querySelector('.dwc-nav__link__icon'); // if (!iconElement) return; // Check if element exists // const iconWidth = iconElement.offsetWidth; // const iconWidthOffset = iconWidth / 2; // // Sum the paddings and icon width // const collapseOffset = (paddingLeft * offsetMultiplier) + iconWidth; // // Set the CSS variables on the body // document.body.style.setProperty('--collapse-offset', `${collapseOffset}px`); // document.body.style.setProperty('--icon-width-offset', `${iconWidthOffset}px`); // document.body.style.setProperty('--collapse-pad', `${paddingLeft}px`) // } // set offset variable function setCollapseOffset() { // Get the padding values of .dwc-nav__panel__inner const panelInner = document.querySelector('.dwc-nav__panel__inner'); if (!panelInner) return; // Check if element exists const panelStyles = getComputedStyle(panelInner); const paddingLeft = parseFloat(panelStyles.paddingLeft); // Get the width of .dwc-nav__link__icon const iconElement = document.querySelector('.dwc-nav__link__icon'); if (!iconElement) return; // Check if element exists // Use getBoundingClientRect() which works for both HTML and SVG elements const iconRect = iconElement.getBoundingClientRect(); const iconWidth = iconRect.width; const iconWidthOffset = iconWidth / 2; // Sum the paddings and icon width const collapseOffset = (paddingLeft * offsetMultiplier) + iconWidth; // Set the CSS variables on the body document.body.style.setProperty('--collapse-offset', `${collapseOffset}px`); document.body.style.setProperty('--icon-width-offset', `${iconWidthOffset}px`); document.body.style.setProperty('--collapse-pad', `${paddingLeft}px`); } //------ SAVE COLLAPASE STATE function saveCollapseStatus() { if (saveCollapseState === 1) { const isCollapsed = document.body.classList.contains('dwc-collapse-sidebar'); // Save the current state to localStorage localStorage.setItem('sidebarCollapsed', isCollapsed ? 'true' : 'false'); } } // RESTORE COLLAPSE STATE function loadCollapseStatus() { if (saveCollapseState === 1) { const savedState = localStorage.getItem('sidebarCollapsed'); // If the state exists, apply the correct class to the body if (savedState === 'true') { document.body.classList.add('dwc-collapse-sidebar'); // initCollapseContent(); } else if (savedState === 'false') { document.body.classList.remove('dwc-collapse-sidebar'); } } } // FUNCTIONS END // IF COLLAPSE SIDEBAR ENDS // COLLAPSE SIDEBAR ENDS // Select the element const listItem = document.querySelector('.dwc-sidebar__nav__li'); if (listItem) { // Get the computed height of the element const listItemHeight = listItem.offsetHeight; // Set the height as a CSS variable on the body document.body.style.setProperty('--list-item-height', `${listItemHeight}px`); } const header = document.querySelector("header"); const sidebar = document.querySelector('.dwc-sidebar'); const navTrigger = document.querySelector(".dwc-nav-trigger"); const closeBtn = document.querySelector(".dwc-sidebar__nav-close-btn"); const mobileMenuOverlay = document.querySelector(".dwc-mobile-menu-overlay"); const body = document.body; const nav = document.querySelector('.dwc-sidebar__nav'); const homePanel = document.querySelector('.dwc-sidebar__nav__panel--home'); const sidebarNavPanels = document.querySelectorAll(".dwc-sidebar__nav__panel"); const dropdownToggles = document.querySelectorAll('.dwc-sidebar__dropdown-toggle button'); const dropdownContents = document.querySelectorAll('.dwc-sidebar__dropdown-content'); const menuLinks = document.querySelectorAll('.dwc-sidebar__nav__li a'); const offCanvasMobileOnly = offCanvasBreakpoint.matches; const savedState = localStorage.getItem('sidebarCollapsed'); const select = selector => document.querySelectorAll(selector); const initInert = () => select('.dwc-sidebar__nav__panel').forEach(nPanel => { if (!nPanel.classList.contains('dwc-sidebar__nav__panel--home')) { nPanel.inert = true; } else if (enableOffCanvas && offCanvasMobileOnly) { nPanel.inert = true; } else { nPanel.inert = false; } }); //OPEN FIRST DROP DOWN if (openFirstDropDown) { setTimeout(function () { dropdownToggles[0].click(); }, 600); } // Get DROPWDOWN LEVELS if(dropdownContents){ dropdownContents.forEach(function (element) { let level = 1; let parent = element.parentElement.closest('.dwc-sidebar__dropdown-content'); // Calculate the level by checking the number of ancestors while (parent) { level++; parent = parent.parentElement.closest('.dwc-sidebar__dropdown-content'); } // Assign the appropriate level class to the dropdown content element.classList.add(`level-${level}`); // Find the previous sibling with the class .dwc-sidebar__dropdown-toggle const previousToggle = element.previousElementSibling; // Check if the previous sibling is a dropdown toggle and assign the level class if (previousToggle && previousToggle.classList.contains('dwc-sidebar__dropdown-toggle')) { previousToggle.classList.add(`level-${level}`); } }); } // CURRENT MENU ITEM **************** // Get the current page address without trailing slash var currentPage = window.location.pathname.replace(/\/$/, ''); for (var i = 0; i < menuLinks.length; i++) { var link = menuLinks[i]; // Extract the pathname from the link's href attribute without trailing slash var linkPathname = link.href.replace(window.location.origin, '').replace(/\/$/, ''); // Check if the pathname matches the current page if (linkPathname === currentPage) { // Add the class 'dwc-current-menu-item' to the matching link link.classList.add("dwc-current-menu-item"); // Break out of the loop since we found the matching link break; } else { // Skip to the next iteration if the link doesn't match continue; } } setTimeout(function () { if (enableCollapsibleSidebar && (collapseOnPageLoad || savedState === 'true')) { return } const currentDropDownLink = document.querySelector('.dwc-current-menu-item.dwc-nav__link__text'); if (currentDropDownLink) { const parent = currentDropDownLink.closest('.dwc-sidebar__dropdown-content'); if (parent) { const toggle = parent.previousElementSibling.querySelector('button'); if (toggle) { toggle.click(); } } setTimeout(function () { currentDropDownLink.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); //console.log(currentDropDownLink); }, 500); } }, 2000); // CURRENT MENU ENDS ********** // CURRENT MENU CHECK - we'll be using this to determine if to reset panels on navTrigger click or not var hasCurrentMenu = Array.from(document.querySelectorAll(".dwc-sidebar__nav__link.dwc-current-menu-item")).some(function (link) { var parentPanel = link.closest(".dwc-sidebar__nav__panel"); return !parentPanel || !parentPanel.classList.contains("dwc-sidebar__nav__panel--home"); }); // CURRENT CHECK ENDS ********************* const goHome = () => select('.dwc-sidebar__nav__panel').forEach(nPanel => { nPanel.classList.remove('dwc-slide-left'); if (!nPanel.classList.contains('dwc-sidebar__nav__panel--home')) { nPanel.classList.add('dwc-slide-right'); nPanel.inert = true; } else { nPanel.inert = false; if (header && !mq.matches) { header.setAttribute('tabindex', 0); header.focus() } } select('.dwc-sidebar__nav__btn:not(.dwc-nav__back-btn)').forEach(sbtn => { sbtn.setAttribute('aria-expanded', 'false'); }) mobileMenuIsClosed() window.addEventListener("resize", mobileMenuIsClosed); }); select('.dwc-nav__home-btn').forEach(hbtn => hbtn.addEventListener('click', goHome)); nav.addEventListener('keydown', event => { if (nav.contains(event.target)) { if (event.key === 'Escape') { if (body.classList.contains('dwc-slide-nav-open')) { if (navTrigger) { navTrigger.click() navTrigger.focus() } goHome(); } else { goHome(); } } } }); // for Bricks const offCanvasBackdrop = document.querySelector('.brx-offcanvas-backdrop'); isBricks = body.classList.contains('bricks-is-frontend') if (isBricks) { if (offCanvasBackdrop) { offCanvasBackdrop.addEventListener('click', event => { if (body.classList.contains('dwc-slide-nav-open')) { navTrigger.click() goHome(); if (navTrigger) { navTrigger.focus() } } else { goHome(); } }); } } // bricks end select('.dwc-sidebar__nav__btn:not(.dwc-nav__back-btn)').forEach(sbtn => { sbtn.setAttribute('aria-expanded', 'false'); sbtn.addEventListener('click', function (e) { initCollapseContent(); dropdownToggles.forEach((togglebtn) => { togglebtn.setAttribute('aria-expanded', 'false'); }); e.preventDefault(); e.stopPropagation(); const targetId = this.getAttribute('data-title'); const targetElement = document.querySelector(`.dwc-sidebar__nav__panel[data-title="${targetId}"]`); const parentPanel = this.closest('.dwc-sidebar__nav__panel'); targetElement.classList.remove('dwc-slide-right'); targetElement.inert = false; targetElement.setAttribute('tabindex', 0); targetElement.focus(); ariaExpanded = !targetElement.classList.contains('dwc-slide-right'); sbtn.setAttribute('aria-expanded', ariaExpanded); select('.dwc-nav__back-btn').forEach(bbtn => { bbtn.addEventListener('click', function (e) { ariaExpanded = !targetElement.classList.contains('dwc-slide-right'); sbtn.setAttribute('aria-expanded', ariaExpanded); }) }) if (!parentPanel.classList.contains('dwc-slide-right')) { parentPanel.classList.add('dwc-slide-left'); parentPanel.inert = true; } //handle back button data-title and back to feature let bbtn = targetElement.querySelector('.dwc-nav__back-btn'); bbtnTitle = parentPanel.getAttribute('data-title'); bbtn.setAttribute('data-title', bbtnTitle); bbtn.setAttribute('aria-label', 'Go back to ' + bbtnTitle + ' menu'); //console.log(bbtnTitle) if (updateBackText) { bbtn.querySelector('.dwc-nav__back__text').textContent = 'back to ' + bbtnTitle; } }); }) select('.dwc-nav__back-btn').forEach(bbtn => { const btnTitle = bbtn.getAttribute('data-title'); bbtn.addEventListener('click', function (e) { e.preventDefault(); e.stopPropagation(); const returnBtnAttr = this.getAttribute('data-title'); select('[data-title].dwc-sidebar__nav__panel').forEach(returnTarget => { if (returnTarget.getAttribute('data-title') === returnBtnAttr) { returnTarget.classList.remove('dwc-slide-left'); returnTarget.inert = false; if (returnTarget.classList.contains('dwc-sidebar__nav__panel--home')) { if (header) { header.setAttribute('tabindex', 0); header.focus() } } else { returnTarget.setAttribute('tabindex', 0); returnTarget.focus(); } if (returnTarget.classList.contains('dwc-slide-right')) { returnTarget.classList.remove('dwc-slide-right'); } } }); const parentPanel = this.closest('.dwc-sidebar__nav__panel'); parentPanel.classList.add('dwc-slide-right'); parentPanel.inert = true; }); }); select('.dwc-sidebar__nav__panel').forEach(panel => { const panelTitle = panel.getAttribute('data-title'); panel.setAttribute('aria-label', panelTitle + ' menu'); }); // mobile trigger function mobileMenuIsClosed() { const offCanvasMobileOnly = offCanvasBreakpoint.matches; if (mq.matches || enableOffCanvas) { const isNavOpen = body.classList.contains("dwc-slide-nav-open"); navTrigger.setAttribute("aria-expanded", isNavOpen); // console.log(isNavOpen); if (isNavOpen) { if (!homePanel.classList.contains('dwc-slide-left')) { homePanel.inert = false; } } else if (offCanvasMobileOnly && mq.matches) { homePanel.inert = true; // Direct assignment for closed state } else { homePanel.inert = false; } } else { homePanel.inert = false; } } function setNoScroll() { let noScrollTimeout; let clickCount = 1; let isNavOpen = body.classList.contains('dwc-slide-nav-open'); // Check if 'dwc-slide-nav-open' class is applied if (isNavOpen) { body.classList.add('dwc-no-scroll'); clickCount++; } else { clickCount = 0; } //console.log(clickCount) // Toggle 'dwc-no-scroll' class on the body if clickCount is odd if (clickCount == 0) { // Set a timer to remove 'dwc-no-scroll' class after 0.8 seconds noScrollTimeout = setTimeout(() => { isNavOpen = body.classList.contains('dwc-slide-nav-open'); // console.log(isNavOpen) if (!isNavOpen) { body.classList.remove('dwc-no-scroll'); } }, 900); } else { // If 'dwc-no-scroll' class is removed by clicking again, clear the timeout clearTimeout(noScrollTimeout); } } if (navTrigger) { navTrigger.addEventListener("click", function () { body.classList.toggle("dwc-slide-nav-open"); setNoScroll() mobileMenuIsClosed() if (!hasCurrentMenu && !autoCurrentPosition) { initCollapseContent() goHome();// watch out for this, could be problematic } dropdownToggles.forEach((togglebtn) => { // togglebtn.setAttribute('aria-expanded', 'false'); }); }); } if (mobileMenuOverlay) { mobileMenuOverlay.addEventListener("click", function () { body.classList.remove("dwc-slide-nav-open"); mobileMenuIsClosed() setNoScroll() if (!hasCurrentMenu && !autoCurrentPosition) { initCollapseContent() goHome() } }); } if (closeBtn) { closeBtn.addEventListener("click", function () { body.classList.remove("dwc-slide-nav-open"); mobileMenuIsClosed() setNoScroll() navTrigger.focus(); if (!hasCurrentMenu && !autoCurrentPosition) { initCollapseContent() goHome() } }); } //focus on mobile trigger when menu loses focus mobileMenuOverlay.addEventListener('focusin', (event) => { if (event.relatedTarget !== navTrigger) { navTrigger.focus(); } }); function updateSidebarPadding() { if (!enableOffCanvas) { // const headerHeight = header.clientHeight + 20; setTimeout(() => { const headerHeight = document.querySelector('.dwc-header-inner-wrap').clientHeight + 20; // Your code to use headerHeight goes here sidebarNavPanels.forEach(function (sidebarNavPanel) { sidebarNavPanel.style.paddingTop = headerHeight + "px"; }); mobileMenuOverlay.style.marginTop = headerHeight - 20 + "px"; }, 50); } } function resetPadding() { setTimeout(() => { sidebarNavPanels.forEach(function (sidebarNavPanel) { sidebarNavPanel.style.paddingTop = null; mobileMenuOverlay.style.marginTop = null; }); }, 50); } function checkScreenSize() { if (mq.matches) { body.classList.add('dwc-mobile'); updateSidebarPadding(); //updateTopPadding() } else { body.classList.remove('dwc-mobile'); resetPadding(); // resetTopPadding() } } // updateTopPadding() if (calcHeaderHeight) { checkScreenSize(); window.addEventListener("resize", function () { resetTopPadding(); // Reset the top padding on resize updateTopPadding() checkScreenSize(); mobileMenuIsClosed(); }); } initInert() // ********* DROPDOWN TOGGLE FUNCNTIONALITY ******************* function eCollapseContent(el, btn) { // Find the closest common ancestor, such as the <li> element const btnParentLi = btn.closest('li'); dropdownContents.forEach((content) => { // Find the closest <li> ancestor for the dropdown content const contentParentLi = content.closest('li'); // Check if the content and the button are at the same level const isSameLevel = btnParentLi && contentParentLi && btnParentLi.parentElement === contentParentLi.parentElement; // Check if the content is an ancestor of the dropdown toggle being clicked const isAncestor = btn && content.contains(btn); // Collapse the dropdown if it's not an ancestor of the toggle and is on the same level if (!isAncestor && isSameLevel) { content.style.maxHeight = '0'; content.setAttribute('inert', 'true'); // Update the aria-expanded attribute of the corresponding toggle button const correspondingToggle = content.previousElementSibling.querySelector('button'); if (correspondingToggle) { correspondingToggle.setAttribute('aria-expanded', 'false'); } } }); } function initCollapseContent(el, btn) { dropdownContents.forEach((content) => { content.style.maxHeight = '0'; content.setAttribute('inert', 'true'); }); dropdownToggles.forEach((toggle) => { toggle.setAttribute('aria-expanded', 'false'); }); } function collapseContent(el, btn) { // Find the closest common ancestor, such as the <li> element const btnParentLi = btn.closest('li'); dropdownContents.forEach((content) => { // Find the closest <li> ancestor for the dropdown content const contentParentLi = content.closest('li'); // Check if the content and the button are at the same level const isSameLevel = btnParentLi && contentParentLi && btnParentLi.parentElement === contentParentLi.parentElement; // Check if the content is an ancestor of the dropdown toggle being clicked const isAncestor = btn && content.contains(btn); // Collapse the dropdown if it's not an ancestor of the toggle and is on the same level if (!isAncestor && isSameLevel) { content.style.maxHeight = '0'; content.setAttribute('inert', 'true'); } }); } // Toggle the ARIA attributes for dropdown buttons function toggleAriaExpanded(activeToggle) { // If activeToggle is null, reset all buttons to 'false' if (activeToggle === null) { dropdownToggles.forEach((toggle) => { toggle.setAttribute('aria-expanded', 'false'); }); return; // Exit the function early since there's nothing else to do } dropdownToggles.forEach((toggle) => { if (toggle === activeToggle) { // Toggle the aria-expanded attribute for the clicked button const isOpen = toggle.getAttribute('aria-expanded') === 'true'; toggle.setAttribute('aria-expanded', isOpen ? 'false' : 'true'); } else { // Check if the toggle's parent is a sibling to the activeToggle's parent const toggleParent = toggle.closest('li'); const activeToggleParent = activeToggle.closest('li'); // console.log('toggle parent', toggleParent) // console.log('active toggle parent', activeToggleParent) if (toggleParent && activeToggleParent && toggleParent.parentElement === activeToggleParent.parentElement) { // Set all other buttons' aria-expanded to false if their parent is a sibling to the activeToggle's parent toggle.setAttribute('aria-expanded', 'false'); } } }); } // Function to adjust the max-height of parent dropdowns when a nested dropdown is opened function adjustDropdownHeight(dropdownContent) { // Start with the nearest ancestor that is a dropdown content let parent = dropdownContent.closest('.dwc-sidebar__dropdown-content'); while (parent) { // Calculate the cumulative height of all open children let totalHeight = Array.from(parent.children).reduce((total, child) => { // Add the child scrollHeight to the total if it's open total += child.scrollHeight; return total; }, 0); // Move to the next ancestor that is a dropdown content parent = parent.parentElement.closest('.dwc-sidebar__dropdown-content'); if (parent) { parentHeight = parent.scrollHeight; // Set the parent's max-height to the total calculated height parent.style.maxHeight = `${totalHeight + parentHeight}px`; // console.log('child: ', dropdownContent) // console.log('parent: ', parent) // console.log(`${totalHeight}px`) parent.inert = false; // console.log('parent new: ', parent) const parentParent = parent.closest('li') const toggle = parentParent.querySelector('.dwc-sidebar__dropdown-toggle button') toggle.setAttribute('aria-expanded', 'true'); } } } // Initialize dropdowns function initializeDropdowns() { if(dropdownToggles){ initCollapseContent(); dropdownToggles.forEach((toggle, index) => { toggle.setAttribute('aria-expanded', 'false'); const dropdownContent = dropdownContents[index]; const parentDropdown = toggle.closest('.dwc-sidebar__dropdown'); const dropdownLink = parentDropdown.querySelector('.dwc-nav__link__text'); if(dropdownLink){ toggle.setAttribute('aria-label', `Toggle ${dropdownLink.textContent} dropdown`); } toggle.addEventListener('click', function () { const isOpen = dropdownContent.style.maxHeight !== '0px'; collapseContent(dropdownContent, this); if (!isOpen) { dropdownContent.inert = false; } toggleAriaExpanded(this); if (parentDropdown.contains(this)) { dropdownContent.style.maxHeight = isOpen ? '0' : `${dropdownContent.scrollHeight}px`; // Only adjust if opening the dropdown if (!isOpen) { adjustDropdownHeight(dropdownContent); //console.log('other child', dropdownContent) } } }); toggle.addEventListener('keydown', (event) => { closeDropdownOnEscape(event, toggle); }); }); } } // Close dropdowns on Escape key press function closeDropdownOnEscape(event, el) { if (event.key === 'Escape' && el.contains(event.target)) { event.stopPropagation(); if (el.style.maxHeight !== '0px') { const button = el.previousElementSibling.querySelector('button'); if (button) { el.style.maxHeight = '0'; el.inert = true; button.focus(); } else { initCollapseContent(); el.focus(); } toggleAriaExpanded(null); // Reset all buttons to 'false' } } } // Initialize dropdowns initializeDropdowns(); dropdownContents.forEach((dropdownContent) => { // Add event listeners for closing dropdowns on Escape key press dropdownContent.addEventListener('keydown', (event) => { closeDropdownOnEscape(event, dropdownContent); }); // close dropdown on focus lost if (autoCloseDropdown) { const links = dropdownContent.querySelectorAll('a.dwc-nav__link__text'); links.forEach(link => { const linkParent = link.closest('.dwc-sidebar__dropdown-content'); const dropDownButton = linkParent.previousElementSibling.querySelector('button') link.addEventListener('blur', () => { setTimeout(function () { if ([...links].every(link => !document.activeElement.isSameNode(link))) { eCollapseContent(dropdownContent, dropDownButton) } }, 50); }); }); } }); // AUTOMATIC MENU POSITION function autoMenuPosition() { if (enableCollapsibleSidebar && (collapseOnPageLoad || savedState === 'true')) { return } // Select the current menu item const currentMenuItem = document.querySelector('.dwc-current-menu-item'); // Select the parent panel of the current menu item if (currentMenuItem) { const parentPanel = currentMenuItem.closest('.dwc-sidebar__nav__panel'); const parentIsHome = parentPanel.classList.contains('dwc-sidebar__nav__panel--home') // Check if the parent panel has the 'dwc-sidebar__nav__panel--home' class if (!parentIsHome) { // Select the back button in the current menu's parent panel const backButton = parentPanel.querySelector('.dwc-nav__back-btn'); // Remove the class 'dwc-slide-right' from the current menu's parent panel parentPanel.classList.remove('dwc-slide-right'); // Get the data-title attribute of the current menu's parent panel // Loop through all panels with class .dwc-sidebar__nav__panel const allPanels = document.querySelectorAll('.dwc-sidebar__nav__panel'); // Select all slide buttons .dwc-sidebar__nav__btn of each panel const slideButtons = document.querySelectorAll('.dwc-sidebar__nav__btn:not(.dwc-nav__back-btn)'); slideButtons.forEach((slideButton) => { allPanels.forEach((panel) => { // Get the data-title attribute of the panel const eachPanelTitle = panel.getAttribute('data-title'); // Get the back button in each of the panels const panelBackButton = panel.querySelector('.dwc-nav__back-btn'); const slideTitle = slideButton.getAttribute('data-title') if (slideTitle === eachPanelTitle) { //get slide button parent const slideParentPanel = slideButton.closest('.dwc-sidebar__nav__panel'); //get slide parent titlte attribute const slideParentTitle = slideParentPanel.getAttribute('data-title') // Set the back button data-title attribute to be equal to the data-title attribute of the slide parent panel panelBackButton.setAttribute('data-title', slideParentTitle); if(updateBackText){ panelBackButton.querySelector('.dwc-nav__back__text').textContent = 'back to ' + slideParentTitle } } }); }); homePanel.classList.add('dwc-slide-left'); } if (!parentIsHome) { parentPanel.inert = false; homePanel.inert = true; } repositionReturnTargets() } } if (autoCurrentPosition) { setTimeout(function () { autoMenuPosition() }, 1000); } //function to reposition the hidden slides after automatically moving to current menu item panel // to put them in the right position to slide back to function repositionReturnTargets() { const panels = document.querySelectorAll('.dwc-sidebar__nav__panel:not(.dwc-sidebar__nav__panel--home)'); let activePanel; // Find the first panel without 'dwc-slide-right' and 'dwc-slide-left' classes for (const panel of panels) { if (!panel.classList.contains('dwc-slide-right') && !panel.classList.contains('dwc-slide-left')) { activePanel = panel; break; } } let returnTarget; while (activePanel) { // Get the data-title attribute of each panel const panelTitles = Array.from(panels).map(panel => panel.getAttribute('data-title')); // Select the active back button in the active panel const activeBackButton = activePanel.querySelector('.dwc-nav__back-btn'); // Find the returnTarget panel returnTarget = Array.from(panels).find(panel => panel.getAttribute('data-title') === activeBackButton.getAttribute('data-title')); // Remove and add classes to the returnTarget if (returnTarget) { returnTarget.classList.remove('dwc-slide-right'); returnTarget.classList.add('dwc-slide-left'); } // Update activePanel for the next iteration activePanel = returnTarget; } } // *********AUTOMATIC ENDS************ // **************OFFCANVAS ***************** document.addEventListener('DOMContentLoaded', () => { if (offCanvasPushContent) { // Create a new div element with the class "site-wrapper" var siteWrapper = document.createElement('div'); siteWrapper.className = 'dwc-site-wrapper'; // Move everything within the body tag into the "site-wrapper" div while (document.body.firstChild) { siteWrapper.appendChild(document.body.firstChild); } // Add the "site-wrapper" div back to the body document.body.appendChild(siteWrapper); } }) function offCanvasInit() { if (enableOffCanvas && offCanvasBreakpoint.matches) { document.body.classList.add('dwc-offcanvas'); // console.log('offcanvas - 2') if (offCanvasPushContent) { document.body.classList.add('dwc-push-content'); if (fixedNavTrigger && !mq.matches) { document.body.classList.add('dwc-nav-trigger-is-fixed'); } else { document.body.classList.remove('dwc-nav-trigger-is-fixed'); } } // Function to check if header element is focusable function isFocusable(element) { const focusableTags = ['A', 'BUTTON', 'INPUT', 'SELECT', 'TEXTAREA', 'AREA']; return ( focusableTags.includes(element.tagName) || element.hasAttribute('tabindex') || element.hasAttribute('contenteditable') ); } // Function to set inert attribute for focusable elements function setInertForFocusableElements(inertValue) { const allElements = document.querySelectorAll('.dwc-header-inner-wrap *'); const focusableElements = Array.from(allElements).filter(element => { return isFocusable(element) && !element.classList.contains('dwc-nav-trigger'); }); focusableElements.forEach(element => { if (element) { element.inert = inertValue; } }); } // Click event listener for the 'nav-trigger' header.addEventListener('click', function () { const isNavOpen = document.body.classList.contains('dwc-slide-nav-open'); // Check if the body contains the class 'dwc-slide-nav-open' if (isNavOpen) { // Condition is true, set inert=true setInertForFocusableElements(isNavOpen); } else { // Condition is false, set inert=false setInertForFocusableElements(isNavOpen); } }); } else { document.body.classList.remove('dwc-push-content'); document.body.classList.remove('dwc-offcanvas'); } } offCanvasInit() window.addEventListener("resize", offCanvasInit); //close offcanvas when haslink is clicked if (enableOffCanvas) { const sidebarLinks = document.querySelectorAll('a.dwc-sidebar__nav__link'); // Filter links with hash in the href attribute const hashLinks = Array.from(sidebarLinks).filter(link => link.getAttribute('href').includes('#')); // Add click event listener to each hash link hashLinks.forEach(link => { link.addEventListener('click', function (event) { // event.preventDefault(); // Prevent the default behavior of the link (e.g., navigating to the hash) // Perform a click action on the navTrigger button if (navTrigger) { navTrigger.click(); } }); }); } // headroom: // headroom: function initializeHeadroom() { if (enableHeadroom && (enableOffCanvas || enableTopBar)) { if (offCanvasPushContent) return; // Early exit if offCanvasPushContent is true document.body.classList.add('dwc-headroom'); const scrollUp = "scroll-up"; const scrollDown = "scroll-down"; let lastScroll = 0; // Check for scroll action window.addEventListener('scroll', () => { // Hide and reveal header const currentScroll = window.pageYOffset; if (currentScroll <= 200) { document.body.classList.remove(scrollUp); return; } if (currentScroll > lastScroll && !document.body.classList.contains(scrollDown)) { // Down document.body.classList.remove(scrollUp); document.body.classList.add(scrollDown); } else if (currentScroll < lastScroll && document.body.classList.contains(scrollDown)) { // Up document.body.classList.remove(scrollDown); document.body.classList.add(scrollUp); } lastScroll = currentScroll; }); } } // Call the function to initialize headroom functionality initializeHeadroom(); // End scroll action //top Padding on first containers function updateTopPadding() { // Run the function if offCanvas is enabled or both topBar and headroom are enabled if (!enableOffCanvas && !(enableTopBar && enableHeadroom)) { return; // Exit early if neither condition is met } // Check if the media query strings for mq and offCanvasBreakpoint are the same if (mq.media === offCanvasBreakpoint.media) { // If the breakpoints are the same, run the function only if we're within the breakpoint if (mq.matches) { // Ensure the feature should run based on the configuration flags if (calcTopPadding && (enableHeadroom || enableTopBar)) { // Check if the sidebar exists if (sidebar) { const header = document.querySelector('.dwc-header-inner-wrap'); if (header) { const offsetPadding = header.clientHeight; // Update padding for each sidebar panel sidebarNavPanels.forEach(function (sidebarNavPanel) { sidebarNavPanel.style.paddingTop = offsetPadding + "px"; }); // Adjust the top padding for the first child of the main container const mainFirstChild = document.querySelector('main')?.firstElementChild; if (mainFirstChild) { const initialPadding = parseInt(window.getComputedStyle(mainFirstChild).paddingBottom) || 0; if(!offCanvasPushContent){ mainFirstChild.style.paddingTop = (offsetPadding + initialPadding) + 'px'; } } } else { console.warn('.dwc-header-inner-wrap not found.'); } } else { console.warn('Sidebar not found.'); } } } } else { // If the breakpoints are different, run the function as originally intended if (calcTopPadding && (enableHeadroom || enableTopBar)) { // Check if the sidebar exists if (sidebar) { const header = document.querySelector('.dwc-header-inner-wrap'); if (header) { const offsetPadding = header.clientHeight; // Update padding for each sidebar panel sidebarNavPanels.forEach(function (sidebarNavPanel) { sidebarNavPanel.style.paddingTop = offsetPadding + "px"; }); // Adjust the top padding for the first child of the main container const mainFirstChild = document.querySelector('main')?.firstElementChild; if (mainFirstChild) { const initialPadding = parseInt(window.getComputedStyle(mainFirstChild).paddingBottom) || 0; if(!offCanvasPushContent){ mainFirstChild.style.paddingTop = (offsetPadding + initialPadding) + 'px'; } } } else { console.warn('.dwc-header-inner-wrap not found.'); } } else { console.warn('Sidebar not found.'); } } } } function resetTopPadding() { if (calcTopPadding && enableHeadroom) { sidebarNavPanels.forEach(function (sidebarNavPanel) { sidebarNavPanel.style.paddingTop = null; }); const mainFirstChild = document.querySelector('main').firstElementChild; if (mainFirstChild) { mainFirstChild.style.paddingTop = null; // Reset the paddingTop using the stored initialPadding const initialPadding = parseInt(window.getComputedStyle(mainFirstChild).paddingBottom); mainFirstChild.style.paddingTop = null; } } } //---top padding end // Disable / Enable collapse on screen size change let removedByMQ = false; // Track if the class was removed by the media query function updateCollapseStatus() { const currentlyCollapsed = document.body.classList.contains('dwc-collapse-sidebar'); // Check the current state if (mq.matches) { // If media query matches (max-width: 1024px), remove the class if (currentlyCollapsed) { document.body.classList.remove('dwc-collapse-sidebar'); removedByMQ = true; // Remember that MQ logic removed the class saveCollapseStatus(); // Save the updated state after toggling } } else { // If media query doesn't match, only add back if it was removed by this MQ logic if (removedByMQ) { document.body.classList.add('dwc-collapse-sidebar'); removedByMQ = false; // Reset the flag after re-adding saveCollapseStatus(); // Save the updated state after toggling } } } //Document loaded end //}); // --- ADD HEADER HEIGHT VARIABLE TO BODY ---- function debounce(func, delay) { let timeoutId; return function (...args) { clearTimeout(timeoutId); timeoutId = setTimeout(() => { func.apply(this, args); }, delay); }; } // Your existing code for adding the 'hasHeaderHeight' class function addHeaderHeightClass() { if (!document.body) { // Body doesn't exist, keep checking setTimeout(addHeaderHeightClass, 0); return; } let hasHeaderHeight = document.body.classList.contains('hasHeaderHeight'); let header = document.querySelector('header'); if (!hasHeaderHeight && header) { // Header exists, add the 'hasHeaderHeight' class document.body.classList.add('hasHeaderHeight'); // Get the initial header height updateHeaderHeight(); } else if (!hasHeaderHeight && !header) { // Header doesn't exist, keep checking setTimeout(addHeaderHeightClass, 0); } } // Function to update header height and set the CSS variable function updateHeaderHeight() { let sidebar = document.querySelector('.dwc-header-inner-wrap'); if (document.body) { let headerHeight = sidebar.offsetHeight; document.body.style.setProperty('--dwc-header-height', `${headerHeight}px`); } } // Add the 'hasHeaderHeight' class and set initial header height addHeaderHeightClass(); // Attach the debounced update function to the window resize event function onResize() { updateHeaderHeight(); updateCollapseStatus(); // Add more functions here } window.addEventListener('resize', debounce(onResize, 50)); document.addEventListener('DOMContentLoaded', () => { updateHeaderHeight(); updateTopPadding() }) // -------HEADER HEIGHT ENDS ------------- // Smooth scroll to hashlink with an offset function smoothScroll(target, offset) { const targetElement = document.querySelector(target); if (targetElement) { const targetPosition = targetElement.getBoundingClientRect().top - document.body.getBoundingClientRect().top - offset; window.scrollTo({ top: targetPosition, behavior: 'smooth' }); } } // Listen for hash link clicks if (offsetHashLinkScroll) { document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function (e) { var headerElement = document.querySelector('.dwc-header-inner-wrap'); var offset = headerElement.offsetHeight; e.preventDefault(); event.stopPropagation(); const href = this.getAttribute('href'); smoothScroll(href, offset); }); }); } 
