diff --git a/src/components/LanguageSelector.tsx b/src/components/LanguageSelector.tsx index c7c1ecfd..b43d3916 100644 --- a/src/components/LanguageSelector.tsx +++ b/src/components/LanguageSelector.tsx @@ -152,9 +152,13 @@ const LanguageSelector = () => { useEffect(() => { if (isOpen && focusedIndex >= 0) { - const element = document.querySelector( - `.selector__item:nth-child(${focusedIndex + 1})` - ) as HTMLElement; + const elements = Array.from( + document.querySelectorAll(".selector__item") + ) as HTMLElement[]; + const focusableElements = elements.filter( + (el) => el.getAttribute("tabIndex") !== "-1" + ); + const element = focusableElements[focusedIndex]; element?.focus(); } }, [isOpen, focusedIndex]); @@ -186,43 +190,41 @@ const LanguageSelector = () => { - {isOpen && ( - - )} + ); }; diff --git a/src/components/SubLanguageSelector.tsx b/src/components/SubLanguageSelector.tsx index 7b0d271c..db104afc 100644 --- a/src/components/SubLanguageSelector.tsx +++ b/src/components/SubLanguageSelector.tsx @@ -47,7 +47,7 @@ const SubLanguageSelector = ({ <>
  • - {opened && - parentLanguage.subLanguages.map((sl) => ( -
  • - -
  • - ))} + {parentLanguage.subLanguages.map((sl) => ( +
  • + +
  • + ))} ); }; diff --git a/src/styles/main.css b/src/styles/main.css index 843f8a88..42636d1e 100644 --- a/src/styles/main.css +++ b/src/styles/main.css @@ -400,7 +400,7 @@ abbr { border-left: 7px solid transparent; border-right: 7px solid transparent; border-top: 7px solid var(--clr-text-primary); /* [1] */ - transition: transform 100ms ease; + transition: transform 300ms ease; } .selector--open .selector__arrow { @@ -413,7 +413,7 @@ abbr { position: absolute; width: 100%; - max-height: 20rem; + height: 50vh; overflow-y: auto; background-color: var(--clr-bg-secondary); @@ -426,10 +426,28 @@ abbr { box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2); z-index: 1; + transition: all 300ms ease; } -.selector__dropdown:focus-within { - border-color: var(--clr-accent); +.selector__dropdown.hidden { + border: none; + padding: 0; + height: 0; + opacity: 0; + overflow: hidden; +} + +.selector__dropdown::-webkit-scrollbar { + width: 8px; +} + +.selector__dropdown::-webkit-scrollbar-thumb { + background: var(--scrollbar-thumb); + border-radius: 4px; +} + +.selector__dropdown::-webkit-scrollbar-thumb:hover { + background: var(--scrollbar-thumb); } .selector__item { @@ -439,10 +457,19 @@ abbr { gap: 1rem; align-items: center; border-radius: var(--br-md); + transition: all 300ms ease; } .sublanguage__item { + height: 3rem; margin-left: 1.5rem; + transition: all 300ms ease; +} + +.sublanguage__item.hidden { + height: 0; + opacity: 0; + overflow: hidden; } .sublanguage__button{ @@ -462,6 +489,11 @@ abbr { transform: rotate(-90deg); transition: transform 100ms ease; cursor: pointer; + transition: all 200ms ease; +} + +.sublanguage__arrow:hover { + border-top-color: var(--clr-accent); } [aria-expanded="true"] .sublanguage__arrow { @@ -472,6 +504,10 @@ abbr { border-top-color: var(--clr-text-tertiary); } +.selector__item.selected .sublanguage__arrow:hover { + border-top-color: var(--clr-text-primary); +} + .selector__item label { width: 100%; padding: 0.25em 0.75em; pFad - Phonifier reborn

    Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

    Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


    Alternative Proxies:

    Alternative Proxy

    pFad Proxy

    pFad v3 Proxy

    pFad v4 Proxy