-
Notifications
You must be signed in to change notification settings - Fork 185
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(View): increase swipe back zone (#5725)
Увеличил зону срабатывания свайпа назад, тем самым приблизив поведение к нативным приложениям. В частности, как в приложении ВКонтакте на iOS. > **Note** > > Для `ViewInfitnite` повторил всё, что для `View`. h.2 Побочные изменения > Спасибо @shevchux и @mendrew за замечания ❤️ Иначе пропустил бы эти кейсы) Во-первых, немного пошатал тесты. Во-вторых, оптимизировал код: убрал из зависимостей `useEffect` лишнее; состояние `swipeBackPrevented` теперь храню в `useRef` вместо `useState`. Во-третьих, поправил следующие кейсы: h.3 Кейс 1. Элементы с горизонтальным скроллом. Добавил обнаружение смещения горизонтального скролла (в частности необходимо для `HorizontallScroll`), чтобы предотвращать свайп бек если пользователей взаимодействует с элементами, у которых есть горизонтальный скролл. Свайп бек включается: - либо если положение скролла находится в начале, иначе свайп бэк игнорируется. Если мы проскролили к началу, то нам необходимо отжать палец и заново синицировать свайп бэк, чтобы он сработал; - либо если потянули за край экрана слева (спасибо, @shevchux за предложение). > Вдохновился поведением у приложения ВКонтакте на iOS. > Использую состояние `swipeBackPrevented`, чтобы вызывать функцию обнаружения только один раз во время начала жеста. Чтобы получить родителей со скроллом, применяю утилиту [getOverflowAncestors()](https://github.com/floating-ui/floating-ui/blob/%40floating-ui/react-dom%402.0.2/packages/utils/test/getOverflowAncestors.test.ts) из бибилотеки Floating UI. h.3 Кейс 2. Компонент [Gallery](https://vkcom.github.io/VKUI/5.7.2/#/Gallery). Добавил `stopPropagation()` на `onDragStart` для `Gallery`, чтобы предотвращать свайп бэк. --- Добавил в доки `View` (стайлгайд и сторибук) примеры с кейсами 1 и 2. По замечанию @shevchux, в доке у `CellButton`'ов выставил `stopPropagation={false}`, чтобы не путало пользователей. Иначе свайп бэк блокируется.
- Loading branch information
Showing
9 changed files
with
620 additions
and
198 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.