Side Navigation
- Usage
- Styling
Side Navigation provides a vertical list of navigation links with support for collapsible, nested sections.
Important
|
Preview Feature
This is a preview release of the Side Navigation component. Its behavior, API, and look and feel might change. To use this component, it must be explicitly enabled with a feature flag. See the Feature Flag section to learn how to do this. |
Note
|
Navigation Disabled in Examples
For technical reasons, actual navigation is disabled in the examples on this page. |
new tab
<vaadin-side-nav style="width:100%" id="sideNav">
<vaadin-side-nav-item path="/dashboard">
<vaadin-icon icon="vaadin:dashboard" slot="prefix"></vaadin-icon>
Dashboard
</vaadin-side-nav-item>
<vaadin-side-nav-item path="/inbox">
<vaadin-icon icon="vaadin:envelope" slot="prefix"></vaadin-icon>
Inbox
</vaadin-side-nav-item>
<vaadin-side-nav-item path="/calendar">
<vaadin-icon icon="vaadin:calendar" slot="prefix"></vaadin-icon>
Calendar
</vaadin-side-nav-item>
<vaadin-side-nav-item path="/settings">
<vaadin-icon icon="vaadin:cog" slot="prefix"></vaadin-icon>
Settings
</vaadin-side-nav-item>
<vaadin-side-nav-item path="https://vaadin.com">
<vaadin-icon icon="vaadin:vaadin-h" slot="prefix"></vaadin-icon>
Vaadin website
</vaadin-side-nav-item>
</vaadin-side-nav>
The navigation item whose path matches the current URL is highlighted as active. The Side Navigation component can be used, for example, in the drawer of an App Layout.
Prefix & Suffix Elements
Navigation items have slots for prefix and suffix elements. The prefix slot is primarily intended for icons, while the suffix slot can be used, for example, for notification badges.
Interactive prefix and suffix elements aren’t recommended since the entire item row acts as a link.
new tab
<vaadin-side-nav style="width:100%">
<vaadin-side-nav-item path="/inbox">
<vaadin-icon icon="vaadin:envelope" slot="prefix"></vaadin-icon>
Inbox
<span theme="badge contrast pill" aria-label="12 unread messages" slot="suffix"
>12</span
>
</vaadin-side-nav-item>
<vaadin-side-nav-item path="/calendar">
<vaadin-icon icon="vaadin:calendar" slot="prefix"></vaadin-icon>
Calendar
<vaadin-icon
icon="vaadin:bell"
theme="badge error pill"
style="padding:var(--lumo-space-xs)"
aria-label="Upcoming appointment"
slot="suffix"
></vaadin-icon>
</vaadin-side-nav-item>
</vaadin-side-nav>
Hierarchy
Navigation items can contain sub-items, which are collapsed by default. There’s no technical limitation on the number of nesting levels, but a maximum of three levels is recommended for better usability.
Parent items can be links. Clicking them expands their sub-items in addition to navigating. Non-link parent items can be achieved by omitting the target path.
new tab
<vaadin-side-nav style="width:100%">
<vaadin-side-nav-item path="/messages">
<vaadin-icon icon="vaadin:envelope" slot="prefix"></vaadin-icon>
Messages
<vaadin-side-nav-item path="/inbox" slot="children">
<vaadin-icon icon="vaadin:inbox" slot="prefix"></vaadin-icon>
Inbox
</vaadin-side-nav-item>
<vaadin-side-nav-item path="/sent" slot="children">
<vaadin-icon icon="vaadin:paperplane" slot="prefix"></vaadin-icon>
Sent
</vaadin-side-nav-item>
<vaadin-side-nav-item path="/trash" slot="children">
<vaadin-icon icon="vaadin:trash" slot="prefix"></vaadin-icon>
Trash
</vaadin-side-nav-item>
</vaadin-side-nav-item>
<vaadin-side-nav-item>
<vaadin-icon icon="vaadin:cog" slot="prefix"></vaadin-icon>
Admin
<vaadin-side-nav-item path="/users" slot="children">
<vaadin-icon icon="vaadin:group" slot="prefix"></vaadin-icon>
Users
</vaadin-side-nav-item>
<vaadin-side-nav-item path="/permissions" slot="children">
<vaadin-icon icon="vaadin:key" slot="prefix"></vaadin-icon>
Permissions
</vaadin-side-nav-item>
</vaadin-side-nav-item>
</vaadin-side-nav>
Labelled Collapsible List
A label can be applied to the top of the navigation list. This can be useful for cases with multiple adjacent Side Navigation lists. A labeled Side Navigation list can be made collapsible.
new tab
<vaadin-vertical-layout theme="spacing">
<vaadin-side-nav style="width:100%">
<span slot="label">Messages</span>
<vaadin-side-nav-item path="/inbox">
<vaadin-icon icon="vaadin:inbox" slot="prefix"></vaadin-icon>
Inbox
</vaadin-side-nav-item>
<vaadin-side-nav-item path="/sent">
<vaadin-icon icon="vaadin:paperplane" slot="prefix"></vaadin-icon>
Sent
</vaadin-side-nav-item>
<vaadin-side-nav-item path="/trash">
<vaadin-icon icon="vaadin:trash" slot="prefix"></vaadin-icon>
Trash
</vaadin-side-nav-item>
</vaadin-side-nav>
<vaadin-side-nav collapsible style="width:100%">
<span slot="label">Admin</span>
<vaadin-side-nav-item path="/users">
<vaadin-icon icon="vaadin:group" slot="prefix"></vaadin-icon>
Users
</vaadin-side-nav-item>
<vaadin-side-nav-item path="/permissions">
<vaadin-icon icon="vaadin:key" slot="prefix"></vaadin-icon>
Permissions
</vaadin-side-nav-item>
</vaadin-side-nav>
</vaadin-vertical-layout>
Scrolling
The Side Navigation component doesn’t contain a scroll area. Instead, it can be made scrollable by wrapping it inside a Scroller.
Keyboard Usage
Shortcut | Function |
---|---|
Tab | Navigation between list items. |
Tab | Navigation between link and expand/collapse button. |
Enter / Space | Toggles expand/collapse. |
Enter | Trigger link. |
Styling Individual Items
Individual navigation items can be styled by applying a CSS class name to them.
new tab
<vaadin-side-nav style="width:100%">
<vaadin-side-nav-item path="/dashboard">
<vaadin-icon icon="vaadin:dashboard" slot="prefix"></vaadin-icon>
Dashboard
</vaadin-side-nav-item>
<vaadin-side-nav-item path="/inbox">
<vaadin-icon icon="vaadin:envelope" slot="prefix"></vaadin-icon>
Inbox
</vaadin-side-nav-item>
<vaadin-side-nav-item path="https://vaadin.com" class="external">
<vaadin-icon icon="vaadin:vaadin-h" slot="prefix"></vaadin-icon>
Vaadin website
</vaadin-side-nav-item>
</vaadin-side-nav>
Feature Flag
In order to use the Side Navigation component, it must be explicitly enabled with a feature flag. To do this, there are two methods: use Vaadin Developer Tools; or add a Feature Flags properties file.
To use Developer Tools, click its icon button in your running application. Then open the Feature Flags tab. Enable the SideNav component feature and restart the application.
To add a Feature Flags properties file, first create a src/main/resources/vaadin-featureflags.properties file in your application folder. Add to it com.vaadin.experimental.sideNavComponent=true
. Then restart the application.
10387B24-0DDF-4FC8-B5F9-B6319633D354