Audio player
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-audio-player/rh-audio-player.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-audio-player/rh-audio-player-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-audio-player/rh-audio-player-lightdom.css">
Replace /path/to
in the href
attribute with the installation path
to the rh-audio-player
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-audio-player/rh-audio-player.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-audio-player/rh-audio-player-lightdom.css">
Usage
rh-audio-player
Slot Name | Description |
---|---|
series |
optional, name of podcast series |
title |
optional, title of episode |
media |
html |
about |
optional |
subscribe |
optional |
transcript |
optional |
DOM Property | Description | Type | Default |
---|---|---|---|
mediaseries |
Audio's series name, e.g. Podcast series. |
|
|
mediatitle |
Audio's title, e.g. Podcast episode title. |
|
|
layout |
Layout:
|
|
|
poster |
URL to audio's artwork |
|
|
volume |
Playback volume |
|
|
playbackRate |
Playback rate |
|
|
expanded |
|
|
|
lang |
|
|
|
colorPalette |
Element's color palette |
|
|
Method Name | Description |
---|---|
mute() |
Mutes media volume |
unmute() |
Unmutes media volume |
incrementPlaybackrate() |
Increases media playback rate by playback rate step value |
decrementPlaybackrate() |
Decreases media playback rate by playback rate step value |
pause() |
Pauses playback |
play() |
Starts or resumes playback |
seek(seconds: number) |
Seeks media to a given point in seconds |
seekFromCurrentTime(seconds: unknown) |
Seeks media a given number of secons from current elapsed time |
rewind(by: unknown) |
Rewinds media by 15 seconds (default) |
forward(by: unknown) |
Advances media by 15 seconds (default) |
None
Part Name | Description |
---|---|
panel |
expandable panel |
toolbar |
main controls |
about |
about the episode panel |
subscribe |
subscribe panel |
transcript |
transcript panel |
CSS Property | Description | Default |
---|---|---|
--rh-audio-player-background-color |
color of player background - |
var(--rh-color-surface-lightest, #ffffff)
|
--rh-audio-player-icon-background-color |
var(--rh-audio-player-background-color)
|
|
--rh-audio-player-border-color |
color of player border - |
var(--rh-color-border-subtle-on-light, #d2d2d2)
|
--rh-audio-player-secondary-text-color |
player secondary text color - |
var(--rh-color-text-secondary-on-light, #6a6e73)
|
--rh-audio-player-secondary-opacity |
player secondary opacity used for partially faded elements - |
0.75
|
--rh-audio-player-range-thumb-color |
color of time and volume range slider thumb - |
var(--rh-color-accent-brand-on-light, #ee0000)
|
--rh-tooltip-content-padding-block-start |
padding top on tooltips - |
var(--rh-space-md, 8px)
|
--rh-tooltip-content-padding-block-end |
padding bottom on tooltips - |
var(--rh-space-md, 8px)
|
--rh-tooltip-content-padding-inline-start |
padding left on tooltips - |
var(--rh-space-md, 8px)
|
--rh-tooltip-content-padding-inline-end |
padding right on tooltips - |
var(--rh-space-md, 8px)
|
None
rh-audio-player-about
Audio Player About Panel
Slot Name | Description |
---|---|
heading |
custom heading for panel |
|
panel content |
profile |
|
DOM Property | Description | Type | Default |
---|---|---|---|
label |
Default label content |
|
|
mediaseries |
Series this track belongs to, if applicable |
|
|
mediatitle |
Title of audio track |
|
|
Method Name | Description |
---|---|
scrollText() |
None
Part Name | Description |
---|---|
heading |
panel heading |
body |
panel body |
profile |
panel profile / avatar |
None
None
rh-audio-player-subscribe
Audio Player Subscribe Panel
Slot Name | Description |
---|---|
heading |
custom heading for panel |
|
panel content |
link |
link to subscribe to podcast |
DOM Property | Description | Type | Default |
---|---|---|---|
heading |
|
|
|
label |
|
|
Method Name | Description |
---|---|
scrollText() |
None
Part Name | Description |
---|---|
heading |
scrolling text overflow |
body |
body content slot |
links |
subscribe links |
None
None
rh-transcript
Audio Player Transcript Panel
Slot Name | Description |
---|---|
heading |
custom heading for panel |
|
|
DOM Property | Description | Type | Default |
---|---|---|---|
heading |
|
|
|
label |
|
|
|
lang |
|
|
Method Name | Description |
---|---|
setActiveCues(currentTime: unknown) |
|
setDuration(mediaDuration: number) |
|
scrollText() |
Event Name | Description |
---|---|
transcriptdownload |
Part Name | Description |
---|---|
heading |
scrolling text overflow |
toolbar |
toolbar area above cues list |
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.