Show Folder Items As a Dropdown on Mobile Menu
What does this code do?
This code snippet will allow you to display the folder items underneath the folder title on mobile rather than on a separate page.
Note: I have provided two options. Option one has all the pages display right away and Option two has the folder pages slide down from the title when clicked.
Option #1: Static
This option will have all the pages display right away. The folder contents will display under the folder title.
Code Snippets
Copy and paste this code into Settings > Advanced > Code Injection > Footer
<!-- Folders in Mobile Menu --> <script> (function () { var headerNavFolders = document.querySelectorAll('.header-menu-nav-list .header-menu-nav-folder:not([data-folder="root"])'); for (let i = 0; i < headerNavFolders.length; i++) { var folderURL = headerNavFolders[i].getAttribute("data-folder"); var dropdownFolder = document.querySelector('[data-folder="'+ folderURL +'"] .header-menu-nav-folder-content'); var rootFolder = document.querySelector('[data-folder-id="'+ folderURL +'"]').closest(".header-menu-nav-item"); rootFolder.append(dropdownFolder); //pointer events on folder title document.querySelector('[data-folder-id="'+ folderURL +'"]').style.pointerEvents = "none"; //hide original folder document.querySelector('[data-folder="'+ folderURL +'"]').style.display = "none"; } })(); </script> <!-- End of Folders in Mobile Menu -->
Then copy and paste this into Design > Custom CSS.
/* Folders in Mobile Menu */ .header-menu-nav-folder { transform: unset; } .chevron--right { transform: rotate(135deg); /* Turns Arrow Down */ margin-left: 2vw; /* Space Between Arrow and Folder Title */ } .header-menu-controls { display: none; } .header-menu-nav-folder-content { margin-bottom: 2vw; /* space below the last folder item */ } a[data-folder-id] + .header-menu-nav-folder-content a{ font-size: 1.3rem !important; /* Font Size of Folder Items */ }
Then customize the spacing and font size.
Option #2: Animated
This option will have the pages in the folder slide down from the folder title when clicked.
Code Snippets
Copy and paste this code into Settings > Advanced > Code Injection > Footer
<!-- Folders in Mobile Menu --> <script> (function () { var headerNavFolders = document.querySelectorAll('.header-menu-nav-list .header-menu-nav-folder:not([data-folder="root"])'); for (let i = 0; i < headerNavFolders.length; i++) { var folderURL = headerNavFolders[i].getAttribute("data-folder"); var dropdownFolder = document.querySelector('[data-folder="' + folderURL + '"] .header-menu-nav-folder-content'); var rootFolder = document.querySelector('[data-folder-id="' + folderURL + '"]').closest(".header-menu-nav-item"); rootFolder.append(dropdownFolder); // hide folder to start dropdownFolder.style.opacity = "0"; dropdownFolder.style.visibility = "hidden"; dropdownFolder.style.transition = "all 2s"; dropdownFolder.style.maxHeight = "0"; //pointer events on folder title rootFolder.onclick = function () { var dropdownPages = this.querySelector('.header-menu-nav-folder-content'); if (dropdownPages.style.opacity == "0") { dropdownPages.style.opacity = "1"; dropdownPages.style.visibility = "visible"; dropdownPages.style.maxHeight = "100vh"; } else { dropdownPages.style.opacity = "0"; dropdownPages.style.visibility = "hidden"; dropdownPages.style.maxHeight = "0"; } }; //hide original folder document.querySelector('[data-folder="' + folderURL + '"]').style.display ="none"; } })(); </script> <!-- End of Folders in Mobile Menu -->
Then copy and paste this into Design > Custom CSS.
/* Folders in Mobile Menu */ .header-menu-nav-folder { transform: unset; } .header-menu-nav-folder--open { transform: translatex(0) !important; } .chevron--right { transform: rotate(135deg); /* Turns Arrow Down */ margin-left: 2vw; /* Space Between Arrow and Folder Title */ } .header-menu-controls { display: none; } .header-menu-nav-folder-content { margin-bottom: 2vw; /* space below the last folder item */ } a[data-folder-id] + .header-menu-nav-folder-content a{ font-size: 1.3rem !important; /* Font Size of Folder Items */ }
Then customize the spacing and font size.
How To Use It
Copy and paste the code as indicated above.
Customize the spacing and font size.