VKUI
VKUI copied to clipboard
fix(ImageBaseOverlay): fix nested Tappable
- close #7001
- [x] Unit-тесты
- [x] Документация фичи (?)
Описание
by design
вложенные Tappable
ресетят hover
/active
-состояние верхнеуровневого Tappable
, чтобы поддержать следующее поведение (актуально только для 2-х уровневой вложенности, это оке?):
https://github.com/VKCOM/VKUI/assets/7431217/8ee0028c-8a1c-4404-96ca-8cfd6aa7add3
В случае с ImageBaseOverlay
такое поведение нежелательно.
Изменения
Добавила DisableClickableLockStateContext
для отключения такого поведения (~принимаю в пожертвование лучшее название~).
Сначала думала сделать это через проп на Tappable
, но, кажется, что DX такого решения будет сомнительный. Например, в случае с ImageBaseOverlay
мы точно знаем, что дефолтное поведение не нужно, но будем заставлять пользователя в каждую кнопку прокидывать проп 🤔
Изменения v2
В текущей версии компонента некорректно передавать в overlay
интерактивные элементы, потому что получается кнопка в кнопке.
В новой реализации убрала использование Tappable
- кажется, это не breaking change
, потому что мы никакие пропы, специфичные для Tappable
не прокидывали - по сути он нам нужен только для hover
-эффекта (остальное мы либо отключаем, либо не можем отключить, но оно мешает - например, меняется вид поинтера). В итоге получился интерактивный и неинтерактивный компоненты, принимаем решение, какой из них рисовать, на основе нового пропа nonInteractive
- в таске предлагали завязываться на onClick
, но такое мы не можем провернуть - потому что сейчас поведение по-умолчанию - если onClick не передан, то мы подставляем noop
и hover
-эффект работает из коробки (кому-то можем сломать это поведение).