-
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(ChipsSelect): mv to stable #6206
feat(ChipsSelect): mv to stable #6206
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. Latest deployment of this branch, based on commit 9f9ec08:
|
e2e tests |
👀 Docs deployed
Commit 9f9ec08 |
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## master #6206 +/- ##
==========================================
- Coverage 81.06% 80.49% -0.57%
==========================================
Files 316 319 +3
Lines 9916 9967 +51
Branches 3327 3365 +38
==========================================
- Hits 8038 8023 -15
- Misses 1878 1944 +66
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
поправил пустой дропдаун ⚡ eb01699 |
Record_2023-12-05-00-31-49.mp4На мобилке у меня вообще вот такое поведение (как будто всё вверх тормашками становится, если поменять местоположение выпадашки 😆 ) |
2023-12-05.00.36.50.movВоспроизводится сразу после перезагрузки страницы (если зазумить, то потом правильно рассчитывается 🤔 ) Консоль дебага можно попробовать закрыть тоже х) |
67ebd5c
to
57b758f
Compare
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.
У меня было некоторое количество фиксов по доступности внутри #6139, которые, как я вижу, не переехали сюда. Может, я сделаю к твоей ветке отдельный пулл, чтобы ты их забрал и мы не столкнулись? С переносом файлов как будто сложно будет тут разойтись по-другому с минимумом конфликтов.
Так, вижу о каких изменениях идёт речь:
Сейчас перенесу ;) Спасибо, что обратила внимание 🙏 |
try to avoid conflicts w/ #6206
try to avoid conflicts w/ #6206
Из-за проверки `focus !== focusWithin` была проблема, если в рамках `FormField` навигироваться через фокус между внутренними элементами. Также, избавился от `useGlobalEventListener` – тем самым теперь создаётся лишь 1 эффект вместо 4-х.
38e8f9b
to
b39c691
Compare
migration_v6.md h2. ChipsSelect ```diff <ChipsSelect - value={[]} + defaultValue={[]} - value={[]} + value={[]} + onChange={[]} - inputValue="" + defaultInputValue="" - inputAriaLabel="Введите название цвета" + inputLabel="Введите название цвета" - popupDirection="bottom" + placement="bottom" - options={[]} + presets={[]} - showSelected={true} + selectedBehavior="highlight" - showSelected={false} + selectedBehavior="hide" - creatableText="Lorem Ipsum" + creatable="Lorem Ipsum" /> ``` - Компонент теперь может быть контролируемым и неконтролируемым. - `creatable` – может быть всё ещё `boolean`, при этом теперь можно передать и текст, чтобы переопределить текст по умолчанию. - `getOptionValue`, `getOptionLabel`, `getNewOptionData` – все аргументы функции теперь обязательны. - `renderChip` – вторым аргументов приходит `option`.
b39c691
to
4965258
Compare
…#7276) В момент когда делали ChipsSelect стабильным (#6206), мы поменяли key на использование option.label вместо option.value. Это не совсем правильно, так как текстовое представление label может совпадать, в то время как value должно быть уникальным. Поменял key в ChipsInput при рендере Chips и в ChipsSelect при рендере options. Обновил key в CustomSelect для единообразия по аналогии с ChipsSelect.
…#7276) В момент когда делали ChipsSelect стабильным (#6206), мы поменяли key на использование option.label вместо option.value. Это не совсем правильно, так как текстовое представление label может совпадать, в то время как value должно быть уникальным. Поменял key в ChipsInput при рендере Chips и в ChipsSelect при рендере options. Обновил key в CustomSelect для единообразия по аналогии с ChipsSelect.
ChipsInput
иChipsSelect
#4143Описание
Немного отрефакторил.
Chip
перенеёс вChipInputBase
.useChipsInput
вChipsInput
.useChipsSelect
вChipsSelect
.types
.constants
.ChipsInput
иChipsSelect
могут быть неконтролируемыми.ChipsSelect
параметрыcreatable
иemptyText
унёс в хукuseChipsSelect
.Под катом изменения по `ChipsSelect`
ChipsSelect
creatable
– может быть всё ещёboolean
, при этом теперь можно передать и текст, чтобыпереопределить текст по умолчанию.
getOptionValue
,getOptionLabel
,getNewOptionData
– все аргументы функции теперь обязательны.renderChip
– вторым аргументов приходитoption
.Доступность
Обговорили с нашим специалистом по цифровой доступности следующие правила и поведение:
ChipsInput
иChipsSelect
имеют рольlistbox
иaria-orientation="horizontal"
, а выбранные опции имеют рольoption
, а также атрибуты:aria-selected
со значением true;aria-posinset
со значением текущего места в списке;aria-setsize
со значением общего количества выбранных опций.ChipsSelect
:combobox
и ссылаться на всплывающее окно черезaria-haspopup
,aria-controls
иaria-expanded
listbox
, а его опции рольoption
.ChipsInput
/ChipsSelect
. Другими словами опции не реагируют на Tab, на них можно сфокусироваться только кнопками-стрелками.Изменения
hooks/useEnsureControl
удалилundefined
из возвращаемого типа.value
не может бытьundefined
, потому чтоuseCustomEnsuredControl
возвращаетdefaultValue
.lib/select
немного отрефакторил, удалил легаси код связанный с флагомu
у RegExp.lib/appearance
Keys.BACKSPACE
.getHorizontalFocusGoTo
.lib/react/simulateReactInput
– так как теперь дляinput
используетсяuseEnsureControl
, то нужна возможность очистить поле через событие. Т.к. у в DOM API нет событияclear
, вызываем событие через API в React (см. Trigger simulated input value change for React 16 (after react-dom 15.6.0 updated)? facebook/react#11488 (comment)).components/Popper
– поправил проверку для вызоваonPlacementChange
из [BREAKING CHANGE] feat(Popper): mv to stable #6185.ChipsSelect
задаём значение по умолчанию дляplacement
.CustomSelectDropdown
задаём значение по умолчанию дляplacement
.