Files
Verso/services/web/app/views/layout/language-picker.pug
T
claude b461343b23
Build and Deploy Verso / deploy (push) Successful in 14m3s
fix: project list phone layout and language picker
- Search bar overflow: min-width:0 on form prevents input min-content
  from overflowing flex container on narrow screens
- Remove duplicate New Project button from header row (tableTopArea
  already provides it for mobile)
- Simplify tableTopArea: single button+search layout regardless of
  isLibraryEnabled flag
- 2-line project rows on mobile: merge dash-cell-date-owner +
  dash-cell-tag into a single dash-cell-meta so date/owner/tags flow
  inline on line 2 below the project name
- Footer mobile: hide language-picker-text on mobile (icon only) to
  prevent 3rd line in 2-row footer
- Language picker: use mousedown instead of click for outside-close
  handler — click bubbling is unreliable on iOS for non-interactive
  elements; mousedown fires for all taps

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

57 lines
1.9 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('mousedown', function (e) {
if (!picker || !picker.contains(e.target)) close()
})
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape') { close(); toggle.focus() }
})
})()