Skip to content

feat: fix close floating elements and modals when esc keydown#9670

Open
EldarMuhamethanov wants to merge 7 commits into
masterfrom
e.muhamethanov/fix-close-overlay-by-escr
Open

feat: fix close floating elements and modals when esc keydown#9670
EldarMuhamethanov wants to merge 7 commits into
masterfrom
e.muhamethanov/fix-close-overlay-by-escr

Conversation

@EldarMuhamethanov
Copy link
Copy Markdown
Contributor

@EldarMuhamethanov EldarMuhamethanov commented Apr 3, 2026

  • Unit-тесты
  • Release notes

Описание

Раньше несколько слоёв (модальные окна, выпадающие списки, поповеры и т.п.) могли одновременно подписываться на закрытие по Escape, из-за чего одно нажатие закрывало сразу несколько уровней UI. В этой доработке вводится единый диспетчер на уровне документа: все активные обработчики Escape регистрируются в общий стек, и на одно нажатие обрабатывается только верхний (последний зарегистрированный) слой.

Закрытие модальных карточек/страниц по Escape переведено на тот же механизм, что и у остальных компонентов, чтобы поведение было согласованным. Для селектов и связанных контролов закрытие по Escape вынесено в глобальный слой (чтобы оно участвовало в общем порядке «снаружи внутрь»), убраны точечные stopPropagation/local обходы, которые маскировали проблему.

В общем теперь логика закрытия такая: кто последний открылся, то первый закроется при нажатии ESC

Release notes

Исправления

  • Модальные окна и вложенные выпадающие/оверлей-компоненты: одно нажатие Escape закрывает только верхний активный слой вместо каскадного закрытия нескольких уровней сразу.

@EldarMuhamethanov EldarMuhamethanov force-pushed the e.muhamethanov/fix-close-overlay-by-escr branch from fa405b7 to 3aff587 Compare April 3, 2026 11:23
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 3, 2026

size-limit report 📦

Path Size
JS 412.87 KB (+0.02% 🔺)
JS (gzip) 126.33 KB (+0.04% 🔺)
JS (brotli) 104.55 KB (+0.06% 🔺)
JS import Div (tree shaking) 811 B (0%)
CSS 382.98 KB (0%)
CSS (gzip) 46.92 KB (0%)
CSS (brotli) 37.02 KB (0%)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 3, 2026

e2e tests

Playwright Report

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 3, 2026

👀 Docs deployed

📦 Package ✅

yarn add @vkontakte/vkui@https://development.s3.prodcloud.vk.team/pull/9670/954eabffaf317232ee336b328ad06a1ad5f47fd4/pkg/@vkontakte/vkui/_pkg.tgz

Commit 954eabf

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 3, 2026

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

Commit 954eabf

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 3, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.25%. Comparing base (52a9ad5) to head (954eabf).
⚠️ Report is 52 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #9670   +/-   ##
=======================================
  Coverage   95.25%   95.25%           
=======================================
  Files         442      442           
  Lines       12236    12244    +8     
  Branches     4442     4443    +1     
=======================================
+ Hits        11655    11663    +8     
  Misses        581      581           
Flag Coverage Δ
unittests 95.25% <100.00%> (+<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.

@inomdzhon inomdzhon moved this to 🗃 Backlog in VKUI Apr 6, 2026
@inomdzhon inomdzhon modified the milestones: v8.1.0, v8.2.0 Apr 13, 2026
@vkcom-publisher vkcom-publisher added the pr-needs-work Автоматизация: PR автоматически закроется через 14 дней при отсутствии активности label Apr 20, 2026
@vkcom-publisher vkcom-publisher removed the pr-needs-work Автоматизация: PR автоматически закроется через 14 дней при отсутствии активности label Apr 21, 2026
@vkcom-publisher vkcom-publisher added pr-needs-work Автоматизация: PR автоматически закроется через 14 дней при отсутствии активности and removed pr-needs-work Автоматизация: PR автоматически закроется через 14 дней при отсутствии активности labels Apr 28, 2026
# Conflicts:
#	packages/vkui/src/components/CalendarTime/CalendarTime.tsx
#	packages/vkui/src/components/DateInput/DateInput.test.tsx
#	packages/vkui/src/hooks/useGlobalEscKeyDown.ts
@vkcom-publisher vkcom-publisher added pr-needs-work Автоматизация: PR автоматически закроется через 14 дней при отсутствии активности and removed pr-needs-work Автоматизация: PR автоматически закроется через 14 дней при отсутствии активности labels May 7, 2026
@vkcom-publisher vkcom-publisher added the pr-needs-work Автоматизация: PR автоматически закроется через 14 дней при отсутствии активности label May 15, 2026
@inomdzhon inomdzhon modified the milestones: v8.2.0, v8.3.0 May 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cmp:action-sheet cmp:chips-select cmp:custom-select cmp:date-input cmp:date-range-input cmp:modal-card cmp:modal-page cmp:popover в бывшем cmp:dropdown cmp:snackbar pr-needs-work Автоматизация: PR автоматически закроется через 14 дней при отсутствии активности type:bug

Projects

Status: 🗃 Backlog

Development

Successfully merging this pull request may close these issues.

3 participants