Skip to content

Commit 53c62ac

Browse files
OwenEdwardsgkatsev
authored andcommitted
feat: Add an Audio Description icon to an audio track name in the track menu if it is "main-desc" kind. (videojs#4599)
1 parent 2370416 commit 53c62ac

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

src/css/components/_audio.scss

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
11
.video-js .vjs-audio-button .vjs-icon-placeholder {
22
@extend .vjs-icon-audio;
33
}
4+
5+
.video-js .vjs-audio-button + .vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder {
6+
vertical-align: middle;
7+
display: inline-block;
8+
margin-bottom: -0.1em;
9+
}
10+
11+
// Mark a main-desc-menu-item (main + description) item with a trailing Audio Description icon
12+
.video-js .vjs-audio-button + .vjs-menu .vjs-main-desc-menu-item .vjs-menu-item-text .vjs-icon-placeholder:before {
13+
font-family: VideoJS;
14+
content: " \f11d";
15+
font-size: 1.5em;
16+
line-height: inherit;
17+
}

src/js/control-bar/audio-track-controls/audio-track-menu-item.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*/
44
import MenuItem from '../../menu/menu-item.js';
55
import Component from '../../component.js';
6+
import {assign} from '../../utils/obj';
67

78
/**
89
* An {@link AudioTrack} {@link MenuItem}
@@ -32,6 +33,8 @@ class AudioTrackMenuItem extends MenuItem {
3233

3334
this.track = track;
3435

36+
this.addClass(`vjs-${track.kind}-menu-item`);
37+
3538
const changeHandler = (...args) => {
3639
this.handleTracksChange.apply(this, args);
3740
};
@@ -42,6 +45,25 @@ class AudioTrackMenuItem extends MenuItem {
4245
});
4346
}
4447

48+
createEl(type, props, attrs) {
49+
let innerHTML = `<span class="vjs-menu-item-text">${this.localize(this.options_.label)}`;
50+
51+
if (this.options_.track.kind === 'main-desc') {
52+
innerHTML += `
53+
<span aria-hidden="true" class="vjs-icon-placeholder"></span>
54+
<span class="vjs-control-text"> ${this.localize('Descriptions')}</span>
55+
`;
56+
}
57+
58+
innerHTML += '</span>';
59+
60+
const el = super.createEl(type, assign({
61+
innerHTML
62+
}, props), attrs);
63+
64+
return el;
65+
}
66+
4567
/**
4668
* This gets called when an `AudioTrackMenuItem is "clicked". See {@link ClickableComponent}
4769
* for more detailed information on what a click can be.

0 commit comments

Comments
 (0)