-
Notifications
You must be signed in to change notification settings - Fork 180
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(DatePicker, Popper, Popout): extend usePlacementChangeCallback logic #6906
fix(DatePicker, Popper, Popout): extend usePlacementChangeCallback logic #6906
Conversation
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 ad5ca26 |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #6906 +/- ##
==========================================
- Coverage 83.33% 83.32% -0.02%
==========================================
Files 350 350
Lines 10729 10452 -277
Branches 3575 3469 -106
==========================================
- Hits 8941 8709 -232
+ Misses 1788 1743 -45
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
❌ PatchНе удалось автоматически применить исправление на ветке 6.0-stable.
Чтобы изменение попало в ветку 6.0-stable, выполните следующие действия:
git stash # опционально
git fetch origin 6.0-stable
git checkout -b patch/pr6906 origin/6.0-stable
git cherry-pick --no-commit 2549300b40f8664cf93657b12846383b6b4ae2e5
git checkout HEAD **/__image_snapshots__/*.png
git diff --quiet HEAD || git commit --no-verify --no-edit
git push --set-upstream origin patch/pr6906
gh pr create --base 6.0-stable --title "patch: pr6906" --body "- patch #6906" |
…gic (#6906) Исправляем поведение хука `usePlacementChangeCallbace`, который вызывает `onPlacemenChange` коллбэк при автоматическом изменении свойства `placement`. Из-за того, что `onPlacementChange` не всегда вызывался когда это требовалось мы получали неправильно отрендеренные границы у `CustomSelect`, потому что `CustomSelect` мог считать что `placement = "bottom"` когда на самом деле дропдаун уже отрисовывался сверху. - Исправляем вызов коллбэка при первом рендере. Для этого учитываем значение пропа `placement` переданного библиотеке `floating-ui`. Раньше мы его игнорировали и могло быть так, что при первом рендере `CustomSelect` ожидает, что `placement="bottom"`, а `floating-ui` уже решил, что `resolvedPlacement="top"`, но так как это первый рендер, то коллбэк не вызывается и внутреннее состояние `CustomSelect` не меняется, от того границы рисуются будто `placement="bottom"`. - устанавливаем значение `popupDirection` у `CustomSelect` по умолчанию `bottom` и используем значение этого пропа как значение по умолчанию для внутреннего состояния `popperPlacement`, чтобы `CustomSelect` было известно куда будет рендерится по умолчанию dropdown. Он и так сейчас рендерится вниз, так как это значение по умолчанию у `CustomSelectDropdown`, но `CustomSelect` об этом не знает.
✅ v6.1.0 🎉 |
Описание
Исправляем поведение хука
usePlacementChangeCallbace
, который вызываетonPlacemenChange
коллбэк при автоматическом изменении свойстваplacement
.Из-за того, что
onPlacementChange
не всегда вызывался когда это требовалось мы получали неправильно отрендеренные границы уCustomSelect
, потому чтоCustomSelect
мог считать чтоplacement = "bottom"
когда на самом деле дропдаун уже отрисовывался сверху.Изменения
Исправляем вызов коллбэка при первом рендере.
Для этого учитываем значение пропа
placement
переданного библиотекеfloating-ui
. Раньше мы его игнорировали и могло быть так, что при первом рендереCustomSelect
ожидает, чтоplacement="bottom"
, аfloating-ui
уже решил, чтоresolvedPlacement="top"
, но так как это первый рендер, то коллбэк не вызывается и внутреннее состояниеCustomSelect
не меняется, от того границы рисуются будтоplacement="bottom"
.устанавливаем значение
popupDirection
уCustomSelect
по умолчаниюbottom
и используем значение этого пропа как значение по умолчанию для внутреннего состоянияpopperPlacement
, чтобыCustomSelect
было известно куда будет рендерится по умолчанию dropdown. Он и так сейчас рендерится вниз, так как это значение по умолчанию уCustomSelectDropdown
, ноCustomSelect
об этом не знает.