Close settings menu after option selection

Update speed, quality, and subtitle change handlers to close the entire settings menu after a selection is made, instead of only closing submenus or overlays. This improves user experience by streamlining menu interactions.
This commit is contained in:
Yiannis Christodoulou 2025-10-19 11:12:08 +03:00
parent 1887c262d5
commit c21317dbb4

View File

@ -1079,8 +1079,8 @@ class CustomSettingsMenu extends Component {
const speedLabel = speed === 1 ? 'Normal' : `${speed}`; const speedLabel = speed === 1 ? 'Normal' : `${speed}`;
currentSpeedDisplay.textContent = speedLabel; currentSpeedDisplay.textContent = speedLabel;
// Close only the speed submenu (keep overlay open) // Close the entire settings menu after speed selection
this.speedSubmenu.style.display = 'none'; this.closeMenu();
} }
handleQualityChange(value, qualityOption) { handleQualityChange(value, qualityOption) {
@ -1257,6 +1257,9 @@ class CustomSettingsMenu extends Component {
} catch (e) {} } catch (e) {}
player.removeClass('vjs-changing-resolution'); player.removeClass('vjs-changing-resolution');
// Close the entire settings menu after quality change completes
this.closeMenu();
}; };
// Wait for metadata/data to be ready, then restore // Wait for metadata/data to be ready, then restore
@ -1266,10 +1269,10 @@ class CustomSettingsMenu extends Component {
player.one('loadeddata', finishRestore); player.one('loadeddata', finishRestore);
}; };
player.one('loadedmetadata', onLoadedMeta); player.one('loadedmetadata', onLoadedMeta);
} else {
// If no source switch needed, close menu immediately
this.closeMenu();
} }
// Close only the quality submenu (keep overlay open)
if (this.qualitySubmenu) this.qualitySubmenu.style.display = 'none';
} }
handleSubtitleChange(lang, optionEl) { handleSubtitleChange(lang, optionEl) {
@ -1310,16 +1313,8 @@ class CustomSettingsMenu extends Component {
const currentSubtitlesDisplay = this.settingsOverlay.querySelector('.current-subtitles'); const currentSubtitlesDisplay = this.settingsOverlay.querySelector('.current-subtitles');
if (currentSubtitlesDisplay) currentSubtitlesDisplay.textContent = label; if (currentSubtitlesDisplay) currentSubtitlesDisplay.textContent = label;
// Close the entire settings overlay after subtitle selection // Close the entire settings menu after subtitle selection
this.settingsOverlay.classList.remove('show'); this.closeMenu();
this.settingsOverlay.style.display = 'none';
this.subtitlesSubmenu.style.display = 'none';
// Remove active state from settings button
const btnEl = this.settingsButton?.el();
if (btnEl) {
btnEl.classList.remove('settings-clicked');
}
} }
restoreSubtitlePreference() { restoreSubtitlePreference() {