Navigation (secondary)
Installation
CDN Prerelease
We are currently working on our CDN, which will be soon moving into beta. This will be the preferred method of installation in the near future. If you are a Red Hat associate and have questions or comments about the CDN or installation process please join us in our Red Hat Design System Google chat.
In the meantime, install this component using npm
The recommended way to load RHDS is via the Red Hat Digital Experience CDN, and using an import map.
If you have full control over the page you are using, add an import map
to the <head>
, pointing to the CDN, or update any existing import map.
If you are not responsible for the page's <head>
, request that the
page owner makes the change on your behalf.
<script type="importmap">
{
"imports": {
"@rhds/elements/": "https://www.redhatstatic.com/dx/v1-alpha/@rhds/elements@1.1.0/elements/",
"@patternfly/elements/": "https://www.redhatstatic.com/dx/v1-alpha/@patternfly/elements@2.2.2/"
}
}
</script>
Once the import map is established, you can load the element with the following module, containing a bare module specifier:
<script type="module">
import '@rhds/elements/rh-navigation-secondary/rh-navigation-secondary.js';
</script>
Note that Modules may be placed in the <head>
: since they are deferred by default,
they will not block rendering.
Lightdom CSS
Lightdom CSS is required for this element to ensure a reduced Cumulative Layout Shift (CLS) experience before the element has fully initialized.
<link rel="stylesheet" href="https://www.redhatstatic.com/dx/v1-alpha/@rhds/elements@1.1.0/rh-navigation-secondary/rh-navigation-secondary-lightdom.css">
Install RHDS using your team's preferred NPM package manager, e.g.
npm install @rhds/elements
Once that's been accomplished, you will need to use a bundler to resolve the bare module specifiers and optionally optimize the package for your site's particular use case and needs. Comprehensive guides to bundling are beyond the scope of this page; read more about bundlers on their websites:
Lightdom CSS
Lightdom CSS is required for this element to ensure a reduced Cumulative Layout Shift (CLS) experience before the element has fully initialized.
<link rel="stylesheet" href="/path/to/@rhds/elements/elements/rh-navigation-secondary/rh-navigation-secondary-lightdom.css">
Replace /path/to
in the href
attribute with the installation path
to the rh-navigation-secondary
directory in your project.
Public CDNs
JSPM and other public CDNs should not be used on corporate domains. Use them for development purposes only!
Add an import map to the <head>
, pointing to the CDN,
or update any existing import map.
<script type="importmap">
{
"imports": {
"@rhds/elements/": "https://jspm.dev/@rhds/elements/",
"@patternfly/elements/": "https://jspm.dev/@patternfly/elements/"
}
}
</script>
Once the import map is established, you can load the element with the following module, containing a bare module specifier:
<script type="module">
import '@rhds/elements/rh-navigation-secondary/rh-navigation-secondary.js';
</script>
Note that Modules may be placed in the <head>
: since they are deferred by default,
they will not block rendering.
Lightdom CSS
Lightdom CSS is required for this element to ensure a reduced Cumulative Layout Shift (CLS) experience before the element has fully initialized.
<link rel="stylesheet" href="https://jspm.dev/@rhds/elements@1.1.0/elements/rh-navigation-secondary/rh-navigation-secondary-lightdom.css">
System Integration
Current page indicator
When a user is viewing a page that is part of the secondary navigation information architecture, a red top border is visible. If the current active page is part of a dropdown menu, that dropdown is highlighted with the same top border to indicate it contains the current page. For more details on how to use this current page indicator, refer to the design guidelines for current page indicator.
To enable this indicator style, implementation should apply the aria-current="page"
attribute to the current page link.
<a href="/" aria-current="page">Current page being viewed</a>
The rh-navigation-secondary
element does not apply the aria-current="page"
attribute itself. The responsibility for keeping track of which link is currently active falls on the content management system or application. The element checks for the presence of this attribute and applies the current page indicator style to nav links and dropdown menus when the active page is within a dropdown menu.
rh-navigation-secondary
Slot Name | Description |
---|---|
logo |
Logo added to the main nav bar, expects |
nav |
Navigation list added to the main nav bar, expects |
cta |
Nav bar level CTA, expects |
mobile-menu |
Text label for the mobile menu button, for l10n. Defaults to "Menu" |
None
None
Event Name | Description |
---|---|
overlay-change |
Fires when an dropdown is opened or closed in desktop view or when the mobile menu button is toggled in mobile view. |
Part Name | Description |
---|---|
nav |
container, |
container |
container, |
cta |
container, |
CSS Property | Description | Default |
---|---|---|
--rh-navigation-secondary-z-index |
z-index of the navigation-secondary |
102
|
--rh-navigation-secondary-overlay-z-index |
z-index of the navigation-secondary-overlay |
-1
|
None
rh-navigation-secondary-dropdown
Upgrades a top level nav link to include dropdown functionality
Slot Name | Description |
---|---|
link |
Link for dropdown, expects |
menu |
Menu for dropdown, expects |
None
None
Event Name | Description |
---|---|
change |
Fires when a dropdown is clicked |
None
None
None
rh-navigation-secondary-menu
Dropdown menu for secondary nav, available in full-width and fixed-with sizes
Slot Name | Description |
---|---|
|
Optional |
DOM Property | Description | Type | Default |
---|---|---|---|
colorPalette |
Color palette (default: lightest) Secondary nav menus are always represented on the lightest color palette. |
|
|
layout |
Layout (default: full-width) Secondary nav menus by default are always full-width, but can be set to fixed-width for special cases. |
|
|
visible |
|
|
|
None
None
Part Name | Description |
---|---|
container |
container - |
full-width |
container - |
fixed-width |
container - |
sections |
container - |
CSS Property | Description | Default |
---|---|---|
--rh-navigation-secondary-menu-section-grid |
grid-template-columns for menu sections |
repeat(auto-fit, minmax(15.5rem, 1fr))
|
--rh-navigation-secondary-menu-section-grid-gap |
grid-gap for menu sections |
32px
|
--rh-navigation-secondary-menu-content-max-width |
max-width for menu content |
1136px
|
None
rh-navigation-secondary-menu-section
A menu section which auto upgrades accessibility for headers and sibling list
Slot Name | Description |
---|---|
header |
Adds a header tag to section, expects |
links |
Adds a ul tag to section, expects |
cta |
Adds a section level CTA, expects |
None
None
None
Part Name | Description |
---|---|
container |
container, |
None
None
Other libraries
To learn more about our other libraries, visit this page.
Feedback
To give feedback about anything on this page, contact us.