✨ Enhanced Navigation Bar with Dropdown Menus and Mobile Submenu Navigation#10
Conversation
There was a problem hiding this comment.
Pull Request Overview
This PR introduces an enhanced navigation system with dropdown menus for desktop and full-screen mobile navigation, along with support pages for youth programs. The implementation includes hover-triggered dropdowns on desktop, native app-style mobile navigation, and data-driven configuration through YAML.
- Enhanced mobile navigation with full-screen overlay and smooth animations
- Added comprehensive JavaScript handling for mobile menu toggling and interaction
- Created new program pages for Youth Group and Confirmation with detailed content
Reviewed Changes
Copilot reviewed 8 out of 9 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| pages/youthgroup.md | New Youth Group program page with meeting details and description |
| pages/confirmation.md | New Confirmation program page with faith-focused content and class information |
| assets/js/main.js | Added extensive mobile navigation handling with menu toggling and event management |
| assets/js/healthcheck.js | Enhanced health status checking with response time logging and cache headers |
| _sass/_navigation.scss | Comprehensive mobile navigation styling with full-screen overlay and animations |
| _layouts/post.html | Added conditional author bio section and post tags display |
| _includes/header.html | Removed Bootstrap data attributes for custom navigation handling |
| _data/experiments.yaml | New configuration file for experimental site features |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| navbarToggler.setAttribute('aria-expanded', 'false'); | ||
|
|
||
| // Toggle mobile menu | ||
| navbarToggler.addEventListener('click', function(e) { |
There was a problem hiding this comment.
The variable responseMilliseconds is declared without let, const, or var on line 37 in healthcheck.js, making it an implicit global variable. This creates a potential conflict since main.js is loaded after healthcheck.js and both files may interact with global scope.
| throw new Error(`HTTP error! status: ${response.status}`); | ||
| } | ||
|
|
||
| responseMilliseconds = Date.now() - startTime; |
There was a problem hiding this comment.
The variable responseMilliseconds is declared without let, const, or var, making it an implicit global variable. This should be declared with let or const to avoid polluting the global scope.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
🎯 Overview
This PR introduces a completely enhanced navigation system with dropdown menus, hover functionality, and a beautiful mobile submenu experience that feels like a native app!
✨ Features Added
🖱️ Desktop Dropdown Functionality
📱 Mobile Submenu Navigation
🛠️ Data-Driven Configuration
_data/header.yaml📁 Files Modified
Core Navigation Files
_includes/navbar-item.html- Enhanced to support dropdown arrays_includes/header.html- Updated to use data-driven structure with fallback_data/header.yaml- Added example dropdown configurationStyling & Scripts
_sass/_navigation.scss- Enhanced dropdown styling and mobile submenu stylesassets/js/dropdown-hover.js- New hover functionality and mobile submenu navigation_layouts/default.html- Added new script inclusion🎨 Example Configuration
💡 How It Works
Desktop Experience
Mobile Experience
🔧 Technical Implementation
✅ Browser Support
🎉 Result
The navigation now provides a premium user experience with:
Perfect for the St. Anthony Youth website! wags tail ✨