- {languages &&
- languages.length &&
- languages.map((language) => (
-
setSelectedLanguage(language)}
- onKeyDown={(e) => {
- if (e.key === 'Tab' || (e.shiftKey && e.key === 'Tab')) {
- e.preventDefault();
- const currentIndex = languages.findIndex((lang) => lang.name === selectedLanguage.name);
- const nextIndex = e.shiftKey
- ? (currentIndex - 1 + languages.length) % languages.length
- : (currentIndex + 1) % languages.length;
- setSelectedLanguage(languages[nextIndex]);
+
+
- // Explicitly focus on the new active element
- const nextElement = document.querySelector(`[data-language="${languages[nextIndex].name}"]`);
- nextElement?.focus();
- }
-
- }}
- data-language={language.name}
- aria-pressed={language.name === selectedLanguage.name}
- >
- {language.name}
-
- ))}
-