-
Notifications
You must be signed in to change notification settings - Fork 185
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
feat(Popover): add keepMount props #7058
Conversation
Добавил пропс с помощью которого поповер не удаляется из DOM дерева при скрытии
size-limit report 📦
|
This pull request is automatically built and testable in CodeSandbox. To see build info of the built libraries, click here or the icon next to each commit SHA. |
e2e tests |
👀 Docs deployed
Commit 928527c |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #7058 +/- ##
==========================================
+ Coverage 83.57% 83.61% +0.03%
==========================================
Files 352 352
Lines 10547 10569 +22
Branches 3489 3497 +8
==========================================
+ Hits 8815 8837 +22
Misses 1732 1732
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
Co-authored-by: Daniil Suvorov <severecloud@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Гляжу FocusTrap
глючит если неаманутить его...
Через мышку:
- передаём
keepMounted
; - вызываем
Popover
– он показывается и есть фокус на него; - скрываем
Popover
; - вызываем
Popover
– он показывается, но нет фокуса на него;
Через клавиатуру:
- передаём
keepMounted
; - через Tab + Click вызываем
Popover
– он показывается и есть фокус на него; - скрываем
Popover
; - снова через Tab + Click пытаемся сфокусироваться
Popover
– но уже не получается.
Поправил данную проблему путем добавления пропса disableTrap, для того, чтобы вырубать эффект захвата фокуса когда поповер визуально скрыт, а также чтобы при появлении поповера происходил автофокус |
🔥🔥🔥 Токо надо поправить момент с возвращением фокуса на целевой элемент – сейчас начал теряться До
2024-06-24.22.16.40.movПосле
2024-06-24.22.17.04.movЕщё можешь |
Поправил восстановление фокуса, когда disabled = true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👏 💪
Note
Если будет желание, то можешь ещё сразу домучить тесты – где надо добавить /* istanbul ignore if: <reason> */
, а где-то дописать. Сейчас покрытие 92% у FocusTrap
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Очень круто!
Но меня смущает новый проп disabled
у FocusTrap
. У него уже есть restoreFocus
, autoFocus
, а теперь ещё и disabled
который вернёт фокус если true.
Правда, не получается получше придумать. Есть желание разделить disabled
и какой-то режим по умолчанию - restoreFocusOnDisabled
.
Хотя выглядит ещё больше как нагромождение. Забудьте.
Я бы тогда пристальнее обратил внимание на то как поведёт себя FocusTrap
при изменении disabled
с true
на false
, если превый рендер был с disabled
true
.
И как поведёт себя если компонент размаунтится с disabled=true
.
Чтобы не было ситуации, когда Popovera не видно, потом его совсем размаунтили из DOM и вдруг фокус раз и прыгнул куда-то в старое место, которое FocusTrap
когда-то давно запомнил.
Да, и чтобы restoreFocusTo
не оказался внезапно устаревшим при возврате фокуса.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔥 🔥 🔥
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Отличная работа! 💯 🥇
Описание
Добавил пропс keepMount, при выставлении которого, поповер не будет удаляться из DOM-дерева, а будет скрываться только визуально.
Добавил тест для компонента Popover, в котором проверил, новый функционал