Skip to content

fix(Touch): fix using mouse with touch device#8883

Merged
EldarMuhamethanov merged 6 commits intomasterfrom
e.muhamethanov/8882/fix-touch-events
Sep 3, 2025
Merged

fix(Touch): fix using mouse with touch device#8883
EldarMuhamethanov merged 6 commits intomasterfrom
e.muhamethanov/8882/fix-touch-events

Conversation

@EldarMuhamethanov
Copy link
Contributor

@EldarMuhamethanov EldarMuhamethanov commented Aug 20, 2025


  • Unit-тесты
  • Release notes

Описание

Сейчас есть проблема, что компонент Touch может обрабатывать либо touch-events(если они поддерживаются), либо mouse-events. Проблема заключается в том, что если , например на планшете попытаться воспользоваться блютуз мышью, она работать не будет. Это происходит потому что мышь тригерит mouse-events, а мы слушаем touch-events. Нужно доработать механизм подписки на события так, чтобы это работало.

Варианты решения

Использовать pointer-events.

Плюсы:

  • Для всех устройств будет общий механизм.

Минусы:

  • Браузерная поддержка не даст использовать pointer-events всегда
  • Для того, чтобы отключать браузерную прокрутку на touch-устройствах, нужно навешивать touch-action: none, так где нужно. Это breaking-change

Слушать mouse-events и touch-events в зависимости от того mousedown или touchstart сработал

Плюсы:

  • Изменение не ломающее обратную совместимость

Минусы:

  • на некоторых устройствах touchstart генерирует еще и событие mousedown для совместимости со старыми браузерами. Поэтому нужно сделать механизм, который будет игнорировать такое событие mousedown, чтобы не было дублирования срабатываний

Изменения

Было решено использовать второй вариант решения проблемы. Для этого сделал следующее:

  • Теперь на touch устройствах подписка происходит и на mousedown и touchstart
  • Добавлена проверка на то, создан ли gesture. Эта проверка нужна чтобы не дублировать вызов колбеков, когда после touchstart срабатывает mousedown

Release notes

Исправления

  • Touch: Исправлена проблема использования компонента Touch на планшетах с подключенной блютуз мышью

@EldarMuhamethanov EldarMuhamethanov requested a review from a team as a code owner August 20, 2025 08:34
@github-actions github-actions bot added the ci:cherry-pick:patch Автоматизация: PR продублируется в ветку последнего минорного релиза для выпуска патча label Aug 20, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Aug 20, 2025

size-limit report 📦

Path Size
JS 409.79 KB (+0.02% 🔺)
JS (gzip) 124.17 KB (+0.02% 🔺)
JS (brotli) 102.01 KB (-0.07% 🔽)
JS import Div (tree shaking) 1.55 KB (0%)
CSS 351.65 KB (0%)
CSS (gzip) 43.59 KB (0%)
CSS (brotli) 34.76 KB (0%)

@github-actions
Copy link
Contributor

github-actions bot commented Aug 20, 2025

e2e tests

Playwright Report

@github-actions
Copy link
Contributor

github-actions bot commented Aug 20, 2025

👀 Docs deployed

📦 Package ✅

yarn add @vkontakte/vkui@https://vkui-screenshot.hb.bizmrg.com/pull/8883/30e195e3aafd298db17ff81a378585a7af471522/pkg/@vkontakte/vkui/_pkg.tgz

Commit 30e195e

@codecov
Copy link

codecov bot commented Aug 20, 2025

Codecov Report

❌ Patch coverage is 87.50000% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 96.02%. Comparing base (b5fe8ca) to head (30e195e).
⚠️ Report is 1 commits behind head on master.

Files with missing lines Patch % Lines
packages/vkui/src/components/Touch/Touch.tsx 87.50% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #8883      +/-   ##
==========================================
- Coverage   96.03%   96.02%   -0.01%     
==========================================
  Files         428      428              
  Lines       12472    12476       +4     
  Branches     4113     4114       +1     
==========================================
+ Hits        11977    11980       +3     
- Misses        495      496       +1     
Flag Coverage Δ
unittests 96.02% <87.50%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@vkcom-publisher vkcom-publisher added the pr-needs-work Автоматизация: PR автоматически закроется через 14 дней при отсутствии активности label Aug 27, 2025
@EldarMuhamethanov EldarMuhamethanov removed the pr-needs-work Автоматизация: PR автоматически закроется через 14 дней при отсутствии активности label Sep 2, 2025
Copy link
Contributor

@inomdzhon inomdzhon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Откоментил как можно сделать иначе

@github-actions
Copy link
Contributor

github-actions bot commented Sep 3, 2025

📊 Найдены изменения в собранных файлах: Отчет

Commit 30e195e

Copy link
Contributor

@BlackySoul BlackySoul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Описание задачи теперь как-то не соответствует реализации 🤔

@EldarMuhamethanov EldarMuhamethanov merged commit 3e22f34 into master Sep 3, 2025
28 of 30 checks passed
@EldarMuhamethanov EldarMuhamethanov deleted the e.muhamethanov/8882/fix-touch-events branch September 3, 2025 14:23
vkcom-publisher pushed a commit that referenced this pull request Sep 3, 2025
* fix(Touch): fix using mouse with touch device

* fix(Touch): fix hook using

* fix(Touch): refactor logic

* fix(Touch): remove type

* test(Touch): add tests
SevereCloud added a commit that referenced this pull request Feb 9, 2026
@SevereCloud SevereCloud mentioned this pull request Feb 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:cherry-pick:patch Автоматизация: PR продублируется в ветку последнего минорного релиза для выпуска патча

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug][Touch]: при использовании блютуз мыши на планшете не работает взаимодействие

4 participants