X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fassets%2Fplayer%2Fvideojs-components%2Fsettings-menu-item.ts;h=24b7e0c70ddbdc51f1da207192aaf08e2578138a;hb=1f8ac02436237f0a4f2f10b8c37b28578cc5a411;hp=b9a4302900e2a13a032624ad0fe5c41251a50fba;hpb=2adfc7ea9a1f858db874df9fe322e7ae833db77c;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/assets/player/videojs-components/settings-menu-item.ts b/client/src/assets/player/videojs-components/settings-menu-item.ts index b9a430290..24b7e0c70 100644 --- a/client/src/assets/player/videojs-components/settings-menu-item.ts +++ b/client/src/assets/player/videojs-components/settings-menu-item.ts @@ -43,6 +43,9 @@ class SettingsMenuItem extends MenuItem { player.ready(() => { // Voodoo magic for IOS setTimeout(() => { + // Player was destroyed + if (!this.player_) return + this.build() // Update on rate change @@ -167,7 +170,7 @@ class SettingsMenuItem extends MenuItem { * @method PrefixedEvent */ PrefixedEvent (element: any, type: any, callback: any, action = 'addEvent') { - let prefix = ['webkit', 'moz', 'MS', 'o', ''] + const prefix = ['webkit', 'moz', 'MS', 'o', ''] for (let p = 0; p < prefix.length; p++) { if (!prefix[p]) { @@ -223,6 +226,11 @@ class SettingsMenuItem extends MenuItem { this.subMenu.on('updateLabel', () => { this.update() }) + this.subMenu.on('menuChanged', () => { + this.bindClickEvents() + this.setSize() + this.update() + }) this.settingsSubMenuTitleEl_.innerHTML = this.player_.localize(this.subMenu.controlText_) this.settingsSubMenuEl_.appendChild(this.subMenu.menu.el_) @@ -230,7 +238,7 @@ class SettingsMenuItem extends MenuItem { this.update() this.createBackButton() - this.getSize() + this.setSize() this.bindClickEvents() // prefixed event listeners for CSS TransitionEnd @@ -244,7 +252,7 @@ class SettingsMenuItem extends MenuItem { update (event?: any) { let target: HTMLElement = null - let subMenu = this.subMenu.name() + const subMenu = this.subMenu.name() if (event && event.type === 'tap') { target = event.target @@ -259,7 +267,7 @@ class SettingsMenuItem extends MenuItem { setTimeout(() => this.settingsSubMenuValueEl_.innerHTML = this.subMenu.labelEl_.innerHTML, 250) } else { // Loop trough the submenu items to find the selected child - for (let subMenuItem of this.subMenu.menu.children_) { + for (const subMenuItem of this.subMenu.menu.children_) { if (!(subMenuItem instanceof component)) { continue } @@ -282,7 +290,7 @@ class SettingsMenuItem extends MenuItem { } bindClickEvents () { - for (let item of this.subMenu.menu.children()) { + for (const item of this.subMenu.menu.children()) { if (!(item instanceof component)) { continue } @@ -292,8 +300,9 @@ class SettingsMenuItem extends MenuItem { // save size of submenus on first init // if number of submenu items change dynamically more logic will be needed - getSize () { + setSize () { this.dialog.removeClass('vjs-hidden') + videojsUntyped.dom.removeClass(this.settingsSubMenuEl_, 'vjs-hidden') this.size = this.settingsButton.getComponentSize(this.settingsSubMenuEl_) this.setMargin() this.dialog.addClass('vjs-hidden') @@ -301,7 +310,7 @@ class SettingsMenuItem extends MenuItem { } setMargin () { - let [width] = this.size + const [ width ] = this.size this.settingsSubMenuEl_.style.marginRight = `-${width}px` }