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
Slots
-
logo
-
Logo added to the main nav bar, expects
<a>Text</a> | <a><svg/></a> | <a><img/></a>
element -
nav
-
Navigation list added to the main nav bar, expects
<ul>
element -
cta
-
Nav bar level CTA, expects
<rh-cta>
element -
mobile-menu
-
Text label for the mobile menu button, for l10n. Defaults to "Menu"
Attributes
color-palette
-
Color palette darker | lighter (default: lighter)
- DOM Property
colorPalette
- Type
-
NavPalette
- Default
-
'lighter'
Methods
open(index: number)
-
Opens a specific dropdown based on index. Closes all open dropdowns before opening specified. Toggles overlay to open
close()
-
Closes all open dropdowns
Events
overlay-change
-
Fires when an dropdown is opened or closed in desktop view or when the mobile menu button is toggled in mobile view.
Event Type:SecondaryNavOverlayChangeEvent
CSS Shadow Parts
nav
-
container,
<nav>
element container
-
container,
<div>
element cta
-
container,
<div>
element
CSS Custom Properties
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
|
Design Tokens
rh-navigation-secondary-dropdown
Upgrades a top level nav link to include dropdown functionality
Slots
-
link
-
Link for dropdown, expects
<a>
element -
menu
-
Menu for dropdown, expects
<rh-navigation-secondary-menu>
element
Attributes
None
Methods
None
Events
change
-
Fires when a dropdown is clicked
Event Type:SecondaryNavDropdownExpandEvent
CSS Shadow Parts
None
CSS Custom Properties
None
Design Tokens
rh-navigation-secondary-menu
Dropdown menu for secondary nav, available in full-width and fixed-with sizes
Slots
- Default Slot
-
Optional
<rh-navigation-secondary-menu-section>
elements or content following design guidelines
Attributes
color-palette
-
Color palette (default: lightest) Secondary nav menus are always represented on the lightest color palette.
- DOM Property
colorPalette
- Type
-
ColorPalette
- Default
-
'lightest'
layout
-
Layout (default: full-width) Secondary nav menus by default are always full-width, but can be set to fixed-width for special cases.
- DOM Property
layout
- Type
-
'fixed-width' | 'full-width'
- Default
-
'full-width'
visible
-
visible
toggles on click (default: false)- DOM Property
visible
- Type
-
boolean
- Default
-
false
Methods
None
Events
None
CSS Shadow Parts
container
-
container -
<div>
element, wrapper for menus full-width
-
container -
<div>
element, wrapper for full-width menus fixed-width
-
container -
<div>
element, wrapper for fixed-width menus sections
-
container -
<div>
element, wrapper for menu sections
CSS Custom Properties
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
|
Design Tokens
Token | Copy |
---|---|
--rh-box-shadow-sm
|
|
--rh-color-surface-lightest
|
|
--rh-color-text-primary-on-light
|
|
--rh-font-size-body-text-md
|
|
--rh-space-2xl
|
|
--rh-space-3xl
|
|
--rh-space-4xl
|
|
--rh-space-xl
|
|
rh-navigation-secondary-menu-section
A menu section which auto upgrades accessibility for headers and sibling list
Slots
-
header
-
Adds a header tag to section, expects
<h1> | <h2> | <h3> | <h4> | <h5> | <h6>
element -
links
-
Adds a ul tag to section, expects
<ul> | <ol>
element -
cta
-
Adds a section level CTA, expects
<rh-cta>
element
Attributes
None
Methods
None
Events
None
CSS Shadow Parts
container
-
container,
element
CSS Custom Properties
None
Design Tokens
Token | Copy |
---|---|
--rh-font-family-heading
|
|
--rh-font-size-body-text-md
|
|
--rh-space-xl
|
|
Related elements or patterns
Feedback
To give feedback about anything on this page, contact us.
Red Hat legal and privacy links
- About Red Hat
- Jobs
- Events
- Locations
- Contact Red Hat
- Red Hat Blog
- Diversity, equity, and inclusion
- Cool Stuff Store
- Red Hat Summit