-
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
fix(Snackbar/AppRootPortal): fix default shouldDisablePortalLogic in AppRootPortal #6389
fix(Snackbar/AppRootPortal): fix default shouldDisablePortalLogic in AppRootPortal #6389
Conversation
After refactoring in c7e4c41 We inversed the logic and forgot to inverse the mode condition too. If we want to disablePortal in fallback we should disable the portal when the mode='full' That issue affected Snackbar position when it is used together with Epic and tabbar.
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. Latest deployment of this branch, based on commit f5513f6:
|
e2e tests |
👀 Docs deployed
Commit f5513f6 |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #6389 +/- ##
==========================================
+ Coverage 81.29% 81.42% +0.13%
==========================================
Files 326 326
Lines 10127 10113 -14
Branches 3406 3401 -5
==========================================
+ Hits 8233 8235 +2
+ Misses 1894 1878 -16
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
Отдельное спасибо за подробное описание проблемы |
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.
🚀
…AppRootPortal (#6389) В рефакторинге AppRootPortal в c7e4c41 мы инверсировали логику использования портала и там закралась ошибка в значении по умолчанию. До рефакторинга мы использовали портал если `mode !== 'full'`, https://github.com/VKCOM/VKUI/blob/7f1888d54ca8fb08a0a8d8d3697f0a19ccab6d19/packages/vkui/src/components/AppRoot/AppRootPortal.tsx#L35-L42 а теперь выключаем портал если `mode !== 'full'`. https://github.com/VKCOM/VKUI/blob/959611e24e6168643ff409d8db08a585825d030f/packages/vkui/src/components/AppRoot/AppRootPortal.tsx#L38-L51 Эта ошибка повлекла за собой по крайней мере неверное позиционирование Snackbar, когда речь идёт о Snackbar + Tabbar у Epic в режиме миниапов (`mode="full"`). Snackbar рендерился используя портал, тем самым выпадая из селектора, задающего отступ. Возможно, что нам тут даже не стоит полагаться на селектор вовсе и читать информацию о наличии tabbar из контекста, определяя размер экрана в котором tabbar рендерится внизу. В то же время Epic это больше о мобильных экранах. Тем не менее ошибка в AppRootPortal есть. Изменения - Поправил условие для режима `full` по умолчанию. Покрыл тестами. - обернул children в React.Fragment чтобы ts не ругался на типы AppRootPortal. ``` 'AppRootPortal' cannot be used as a JSX component. Its return type 'ReactNode' is not a valid JSX element. (tsserver 2786) ```
✅ v6.0.1 🎉 |
Описание
В рефакторинге AppRootPortal в c7e4c41 мы инверсировали логику использования портала и там закралась ошибка в значении по умолчанию. До рефакторинга мы использовали портал если
mode !== 'full'
,VKUI/packages/vkui/src/components/AppRoot/AppRootPortal.tsx
Lines 35 to 42 in 7f1888d
а теперь выключаем портал если
mode !== 'full'
.VKUI/packages/vkui/src/components/AppRoot/AppRootPortal.tsx
Lines 38 to 51 in 959611e
Эта ошибка повлекла за собой по крайней мере неверное позиционирование Snackbar, когда речь идёт о Snackbar + Tabbar у Epic в режиме миниапов (
mode="full"
). Snackbar рендерился используя портал, тем самым выпадая из селектора, задающего отступ.Возможно, что нам тут даже не стоит полагаться на селектор вовсе и читать информацию о наличии tabbar из контекста, определяя размер экрана в котором tabbar рендерится внизу. В то же время Epic это больше о мобильных экранах.
Тем не менее ошибка в AppRootPortal есть.
Изменения
full
по умолчанию. Покрыл тестами.