-
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(CustomSelect): Fix input borders when CustomSelectDropdown is opened #7419
fix(CustomSelect): Fix input borders when CustomSelectDropdown is opened #7419
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 0ac845a |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #7419 +/- ##
==========================================
- Coverage 94.47% 94.47% -0.01%
==========================================
Files 375 375
Lines 11123 11120 -3
Branches 3650 3651 +1
==========================================
- Hits 10509 10506 -3
Misses 614 614
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
packages/vkui/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx
Outdated
Show resolved
Hide resolved
Мы не отправляли внутреннее значение placement из CustomSelect в CustomSelectDropdown потому и в некоторых ситуациях onPlacementChange callback не вызывался Шаги для воспроизведения ситуации - Пролистать экран вверх, чтобы опции от CustomSelect не помещались снизу, и встали сверху - Свернуть опции от CustomSelect кликом по компоненту - Пролистать экран вниз, чтобы опции от CustomSelect начали помещаться снизу и открыть их нажатием на компонент
Since we can pass it directly to the Popper
2724914
to
58bf8d5
Compare
@SevereCloud отребейзил и поправил |
❌ PatchНе удалось автоматически применить исправление на ветке 6.5-stable.
Чтобы изменение попало в ветку 6.5-stable, выполните следующие действия:
git stash # опционально
git fetch origin 6.5-stable
git checkout -b patch/pr7419 origin/6.5-stable
git cherry-pick --no-commit 5c1a8d83ccefd6246b4afa6797cdf7c70a998860
git checkout HEAD **/__image_snapshots__/*.png
git diff --quiet HEAD || git commit --no-verify --no-edit
git push --set-upstream origin patch/pr7419
gh pr create --base 6.5-stable --title "patch: pr7419" --body "- patch #7419" |
…pdown is opened (#7419) Передаем внутренне состояние placement в CustomSelectDropdown, вместо popupDirection. Мы не отправляли внутреннее значение placement из CustomSelect в CustomSelectDropdown потому и в некоторых ситуациях onPlacementChange callback не вызывался, потому что при длительном взаимодейcтвии с CustomSelect, внутренее значение могло быть top, при этом в CustomSelectDropdown передавался постоянно prop placement="botton", в итоге usePlacementChangeCallback не вызывал onPlacementChange callback. Тут есть эффект того, что изменение пропа placement после первого рендера не поменяет направление дропдауна. Но это фича, которая не особо имеет смысл. Контролировать placement через проп в CustomSelect не очень получится, он принимает значения 'top' | 'bottom' и по умолчанию уже bottom, то есть изменить его можно будет только на top, причём, только если дропдаун направлен вниз. В то же время уже и сейчас, без этого фикса, если направление dropdown автоматически высчиталось как 'top', то сделать его bottom через prop popupDirection не получится. Думаю, это нормально, что через свойство placement мы задаём значение для первого рендера, ведь дальше направлением дропдауна, если места под него нету снизу, управляет floatin-ui. # Conflicts: # packages/vkui/src/components/ChipsSelect/ChipsSelect.test.tsx # packages/vkui/src/components/CustomSelect/CustomSelect.test.tsx
…pdown is opened (#7419) (#7433) Передаем внутренне состояние placement в CustomSelectDropdown, вместо popupDirection. Мы не отправляли внутреннее значение placement из CustomSelect в CustomSelectDropdown потому и в некоторых ситуациях onPlacementChange callback не вызывался, потому что при длительном взаимодейcтвии с CustomSelect, внутренее значение могло быть top, при этом в CustomSelectDropdown передавался постоянно prop placement="botton", в итоге usePlacementChangeCallback не вызывал onPlacementChange callback. Тут есть эффект того, что изменение пропа placement после первого рендера не поменяет направление дропдауна. Но это фича, которая не особо имеет смысл. Контролировать placement через проп в CustomSelect не очень получится, он принимает значения 'top' | 'bottom' и по умолчанию уже bottom, то есть изменить его можно будет только на top, причём, только если дропдаун направлен вниз. В то же время уже и сейчас, без этого фикса, если направление dropdown автоматически высчиталось как 'top', то сделать его bottom через prop popupDirection не получится. Думаю, это нормально, что через свойство placement мы задаём значение для первого рендера, ведь дальше направлением дропдауна, если места под него нету снизу, управляет floating-ui.
Описание
Мы не отправляли внутреннее значение
placement
изCustomSelect
вCustomSelectDropdown
потому и в некоторых ситуацияхonPlacementChange
callback
не вызывался, потому что при длительном взаимодейтсвии сCustomSelect
, внутренее значение могло бытьtop
, при этом вCustomSelectDropdown
передавался постоянно propplacement="button"
, в итогеusePlacementChangeCallback
не вызывалonPlacementChange
callback.Изменение
Передаем внутренне состояние
placement
вCustomSelectDropdown
, вместоpopupDirection
.Тут есть эффект того, что изменение пропа
placement
после первого рендера не поменяет направление дропдауна.Но это фича, которая не особо имеет смысл.
Контролировать
placement
через проп вCustomSelect
не очень получится, он принимает значения'top' | 'bottom'
и по умолчанию ужеbottom
, то есть изменить его можно будет только наtop
, причём, только если дропдаун направлен вниз.В то же время уже и сейчас, без этого фикса, если направление dropdown автоматически высчиталось как 'top', то сделать его
bottom
через proppopupDirection
не получится.Думаю, это нормально, что через свойство
placement
мы задаём значение для первого рендера, ведь дальше направлением дропдауна, если места под него нету снизу, управляет floatin-ui.