Files
Verso/services/web/app/views/layout/language-picker.pug
T
claudeandClaude Sonnet 4.6 0a5bd4e47d
Build and Deploy Verso / deploy (push) Has been cancelled
Fix mobile layout key, language picker close handler, and presentation download
- Mobile vertical layout: add key= based on direction so react-resizable-panels
  remounts cleanly when switching between horizontal and vertical; also use
  isVertical (not just pdfLayout) for the autoSaveId to avoid restoring a
  mismatched layout from localStorage
- Language picker: replace stopPropagation pattern with a containment check on
  the document click handler — more robust on React pages where Bootstrap JS or
  React's event delegation can interfere with stopPropagation
- Presentation download dropdown: use popperConfig strategy:'fixed' so the menu
  escapes overflow:hidden table cells; remove forced drop='up' and let Popper
  choose; defer URL.revokeObjectURL by 10 s to give the browser time to start
  the download before the blob URL is released

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 11:01:15 +00:00

57 lines
1.8 KiB
Plaintext

li.language-picker
.dropdown
button#language-picker-toggle.btn-inline-link(
type='button'
aria-haspopup='true'
aria-expanded='false'
aria-label=translate('select_a_language')
translate='no'
)
span.material-symbols translate
| &nbsp;
span.language-picker-text= settings.translatedLanguages[currentLngCode] || currentLngCode
ul.dropdown-menu.dropdown-menu-sm-width(
role='menu'
aria-labelledby='language-picker-toggle'
translate='no'
)
each lngCode in availableLanguages
if settings.translatedLanguages[lngCode]
li(role='none')
a.dropdown-item(
role='menuitem'
data-lng=lngCode
class=lngCode === currentLngCode ? 'active' : ''
)= settings.translatedLanguages[lngCode]
script.
(function () {
var toggle = document.getElementById('language-picker-toggle')
var menu = toggle && toggle.parentElement.querySelector('.dropdown-menu')
if (!toggle || !menu) return
// Build return_to at runtime so the href reflects the actual current path
menu.querySelectorAll('a[data-lng]').forEach(function (a) {
var lng = a.getAttribute('data-lng')
a.href =
'/set-language?lng=' +
encodeURIComponent(lng) +
'&return_to=' +
encodeURIComponent(window.location.pathname)
})
var picker = toggle.closest('.language-picker')
function close() {
menu.classList.remove('show')
toggle.setAttribute('aria-expanded', 'false')
}
toggle.addEventListener('click', function () {
var opening = !menu.classList.contains('show')
menu.classList.toggle('show', opening)
toggle.setAttribute('aria-expanded', String(opening))
})
document.addEventListener('click', function (e) {
if (!picker || !picker.contains(e.target)) close()
})
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape') { close(); toggle.focus() }
})
})()