@n8d/htwoo-patterns
Version:
hTWOo Patterns to setup custom style guide
100 lines (70 loc) • 3.4 kB
Markdown
---
title: Vertical Navigation
order: 10
---
# Vertical Navigation
The Vertical Navigation component provides a multi-level tree navigation system with expandable menu items.
## Overview
The Vertical Navigation supports hierarchical navigation structures up to five levels deep. It includes interactive functionality for expanding/collapsing menu items and highlighting the current page location.
## Features
- Multi-level navigation support (up to 5 levels)
- Expandable/collapsible menu items with smooth visual feedback
- Current page indication via `aria-current` attribute
- Interactive JavaScript behavior for state management
- Proper semantic HTML structure using `<nav>` and `<menu>` elements
- ARIA tree navigation pattern for accessibility
- Visual hierarchy with indented sub-navigation levels
- Hover states for improved user interaction
## CSS Classes
- `.hoo-nav` - Main navigation container with border styling
- `.hoo-nav-list` - Primary navigation list (role="tree")
- `.hoo-nav-listsub` - Sub-navigation lists (role="group")
- `.hoo-navitem` - Individual navigation items with expand/collapse state
- `.hoo-navitem-text` - Container for item content with flex layout
- `.hoo-navitem-link` - Navigation links with proper padding and hover states
- `.hoo-buttonicon` - Expandable menu icons that rotate when expanded
## JavaScript Functionality
The navigation component includes interactive JavaScript for:
### Current Item Management
### Expand/Collapse Behavior
### Event Handling
- Click events on `.hoo-navitem` for current page highlighting
- Click events on `.hoo-buttonicon` for expand/collapse functionality
- Proper event delegation to handle dynamically added items
## Multi-Level Structure
The navigation supports nested levels with automatic indentation:
- **Level 1**: Base padding and margin
- **Level 2**: Additional left margin via CSS custom properties
- **Level 3**: Further increased indentation
- **Level 4 & 5**: Progressive indentation up to maximum depth
### CSS Custom Properties for Levels
## States and Attributes
### ARIA Attributes
- `aria-expanded="true|false"` - Indicates if menu item is expanded
- `aria-current="page"` - Identifies the current page/location
- `role="tree"` - Main navigation semantic role
- `role="treeitem"` - Individual navigation items
- `role="group"` - Sub-navigation containers
### Visual States
- **Default**: Standard menu item appearance
- **Hover**: Background color change and link color change
- **Current**: Left border highlight and background color
- **Expanded**: Rotated arrow icon and visible sub-menu
- **Collapsed**: Standard arrow icon and hidden sub-menu
## Usage Guidelines
- Initialize JavaScript functionality using `initMenu()`
- Use meaningful link text for accessibility
- Provide proper href attributes for all navigation links
- Limit navigation depth to 5 levels maximum
- Include expand/collapse icons only for items with child navigation
- Test keyboard navigation and screen reader compatibility
## Integration
## SCSS
## Accessibility
- Uses semantic `<nav>` and `<menu>` elements
- Implements ARIA tree navigation pattern
- Supports keyboard navigation (Tab, Enter, Space)
- Provides clear focus indicators
- Uses proper ARIA attributes for state management
- Maintains logical tab order through navigation hierarchy
- Ensures sufficient color contrast for all states