-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(tabs): add fallback values for element width values #479
Conversation
|
Pull Request Test Coverage Report for Build 4101906207
💛 - Coveralls |
@CrybabyDanChan посмотри плиз |
@CrybabyDanChan это Firefox? Есть кейс? |
Пытался записать скринкаст, сложно уловить кейс(хотя в первый раз попался мне сразу), это в firefox
Сейчас воспроизводится довольно редко, скорей всего особенности мозилы, в safari и chrome тестил, баг не воспроизвелся, скорей всего это не критично... |
@CrybabyDanChan я не смог это воспроизвести |
Использовал scrollWidth вместо offsetWidth, как посоветовал @Lacronts. С ним, вроде бы, всё работает как нужно, в т.ч. в Firefox 🥸 |
Собрана новая демка. |
Проверил демку. Вроде бы всё в порядке. |
Опишите проблему
При тестировании доработки collapsible вкладок на проекте (ссылка на ПР), обнаружили некорректное поведение вкладок в браузере Mozilla Firefox. Хук useCollapsibleTabs некорректно составлял список вкладок, котроые должны быть сколлапсированы. Кроме того, в некоторых случаях, при переключении между вкладками, размер элемента тайтла вкладки некорректно возвращался, из-за чего вкладки также переставали коллапсировать
Шаги для воспроизведения
Этот кейс появился из-за изменений в вышеуказанном ПРе, там переиспользовался тэг role="tablist", что создавало два элемента с такой ролью и мешало найти правильный элемент (почему-то в Safari и Chrome ничего такого не воспроизводится, что не дало отследить багу в процессе разработки).
Что происходит: в хуке useCollapsibleTabs некорректно определяется width элементов вкладок, браузер постоянно возвращает ширину 0, из-за этого ни одна вкладка не считается сколлапсированной и вкладки уходят за overflow элемента контейнера.
Решение, предложенное в ПР: использовать fallback магическое число 100, в случае, когда не получается определить ширину элемента.
Тестовый стенд
Десктоп (если данных нет оставте блок пустым):
--
--
Дополнительная информация
Решение, надо сказать такое себе. Буду рад услышать предложения и идеи, или увидеть Вашу реализацию фикса этой проблемы.
P.S. была идея кэшировать ширину элементов, пока она получается браузером и использовать кэшированные значения, когда браузер начинает возвращать 0.
P.S.S. Попытка засунуть функцию в которой происходит получение ширины в таймаут не сработала