v8.0.0
TL;DR
Документация по миграции с v7 на v8
BREAKING CHANGE
Tip
Чтобы упростить переход на новую мажорную версию, можно воспользоваться инструментом по автоматической миграции ваших компонентов
Подробную информацию можно найти на этой странице.
Улучшения
-
Обновлён список поддерживаемых браузеров
- ChromeAndroid >= 63 + ChromeAndroid >= 84 - iOS >= 12 + iOS >= 15 - Chrome >= 63 + Chrome >= 84 - Firefox >= 55 + Firefox >= 115 - Edge >= 79 + Edge >= 109 - Opera >= 50 + Opera >= 90 - Safari >= 12 + Safari >= 15 - Samsung >= 8.2 + Samsung >= 14
-
Поднята целевая версия
ECMAScriptдля компиляции сes2017доes2020(#9306) -
Для поддержки React Compiler изменен внутренний код ряда компонентов (#6919)
-
- Обработчик
onCloseпереименован вonClosed, самonCloseтеперь срабатывает перед началом анимации закрытия (#9285) - Параметр передаваемый в
onClosedпомечен как устаревший и будет удален вv10. Для получения причины закрытия используйтеreason, передаваемый вonClose(#9285) - Экспортируемый тип
ActionSheetOnCloseOptionsустарел и будет удален вv10– испозьуйте типActionSheetOnCloseReason(#9285)
- Обработчик
-
- Переключение между управляемым и неуправляемым состоянием компонента больше не обрабатывается (#9246)
- Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9063, прокидываются в корень компонента (#9186)
-
Banner: В свойстве
imageThemeдобавлено значениеautoдля того, чтобыimageThemeопределялось автоматически, в зависимости от цветовой схемы приложения –autoтеперь используется как значение по умолчанию (#9188) -
Calendar: Изменен тип свойства
onChangeна(value: Date) => void(#9195) -
CalendarRange: Изменен тип свойства
onChangeна(value: DateRangeType) => void. Теперьvalueможет бытьnullпри сбросе выбранного промежутка дат (#9195) -
PopoutWrapper: Свойство
fixedбыло удалено. Вместо него можно использовать свойствоstrategy(#9232)
Примеры правильной миграции:<PopoutWrapper closing={closing} onClick={close} - fixed={false} + strategy="none" > </PopoutWrapper><PopoutWrapper closing={closing} onClick={close} - fixed > </PopoutWrapper> -
ContentBadge: Изменены цвета компонента при
appearance="neutral"в режимахprimaryиsecondary(#9190) -
Snackbar: Переименовано свойство
onCloseвonClosed(#8839)
СвойствоonCloseпереименовано вonClosedдля улучшения семантики. ОбработчикonClosedвызывается после окончания анимации закрытия снекбара, а не в момент начала закрытия.
Пример миграции:- <Snackbar onClose={() => setSnackbar(null)}> + <Snackbar onClosed={() => setSnackbar(null)}> Message </Snackbar>
-
- Изменена структура рендеринга контента. Свойства
afterиafterCaptionтеперь рендерятся справа от основного блока, а новые свойстваmetaиsubmeta- внутри основного блока после основного контента (#9304) - Свойство
afterCaptionпомечено как deprecated и будет удалено вv10. ИспользуйтеsubmetaвместоafterCaption(#9304)
- Изменена структура рендеринга контента. Свойства
-
SegmentedControl: Улучшено выведение типов (#9160)
-
Свойства
baseClassNameиbaseStyleбыли удалены (#9214) -
Удален устаревший HOC
withModalRootContext, вместо него можно использовать хукuseModalRootContext. Также из контекста были удалены методыupdateModalHeight,registerModal(#9278)
Исправления
- RichCell: Минимальная высота
RichCellуменьшена до48px- compact и44px- regular (#9283) - File: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9044, прокидываются в корень компонента (#9181)
- Checkbox: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9043, прокидываются в корень компонента (#9180)
- Radio: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9043, прокидываются в корень компонента (#9180)
- Switch: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9043, прокидываются в корень компонента (#9180)
- WriteBar: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9086, прокидываются в корень компонента (#9184)
- Textarea:
- SplitLayout: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9069, прокидываются в корень компонента (#9182)
- Input: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9084, прокидываются в корень компонента (#9183)
- Search: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9084, прокидываются в корень компонента (#9183)
- CustomSelect:
- NativeSelect: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9045, прокидываются в корень компонента (#9185)
- ChipsInput: Раньше свойства в компонента прокидывались в скрытый инпут, но теперь все свойства, кроме описанных в #9063, прокидываются в корень компонента (#9186)
- Button:
- Исправлена потеря фокуса при
loading={true}(#9312)
Кнопки со свойствомloadingбольше не получают атрибутdisabled, что позволяет сохранять фокус во время загрузки. Добавлены ARIA-атрибуты (aria-busy,aria-disabled) для правильной работы со скринридерами. - Добавлено свойство
loadingLabelдля указания лейбла приloading={true}(#9312) - Улучшена доступность ссылок с
loadingиdisabledсогласно WAI-ARIA (#9312)
Для ссылок (href) с состояниемloadingилиdisabledтеперь корректно удаляется атрибутhref, добавляетсяrole="link"и устанавливаются необходимые ARIA-атрибуты для правильной работы с ассистивными технологиями.
- Исправлена потеря фокуса при
- HorizontalCell: Ширина для размеров теперь фиксированная (#9316)
- Из-за отказа от happy-css-modules, именование всех CSS классов переведёно в
camelCaseформат (#9355)
Не ломающие изменения
Улучшения
-
AdaptivityProvider: Свойства
sizeXиsizeYтеперь@deprecated, используйтеdensityвместоsizeY,viewWidth={ViewWidth.MOBILE}вместоsizeX="compact"иviewWidth={ViewWidth.SMALL_TABLET}вместоsizeX="regular"(#9334)Пример миграции
- <AdaptivityProvider sizeX="compact"> + <AdaptivityProvider viewWidth={ViewWidth.MOBILE}> - <AdaptivityProvider sizeX="regular"> + <AdaptivityProvider viewWidth={ViewWidth.SMALL_TABLET}> - <AdaptivityProvider sizeY="compact"> + <AdaptivityProvider density="compact"> - <AdaptivityProvider sizeY="regular"> + <AdaptivityProvider density="regular"> - <AdaptivityProvider sizeX="compact" sizeY="compact"> + <AdaptivityProvider viewWidth={ViewWidth.MOBILE} density="compact"> - <AdaptivityProvider sizeX="regular" sizeY="regular"> + <AdaptivityProvider viewWidth={ViewWidth.SMALL_TABLET} density="regular"> - <AppRootProvider sizeX="regular" sizeY="compact"> + <AppRootProvider viewWidth={ViewWidth.SMALL_TABLET} density="compact"> - <AppRootProvider sizeX="compact" sizeY="regular"> + <AppRootProvider viewWidth={ViewWidth.MOBILE} density="regular">
-
Box, Flex, SimpleGrid:
-
ActionSheet: Добавлена поддержка
slotProps.iosCloseItemдля упрощения локализации кнопки "Отмена" (#9307)
Теперь можно передавать пропсы напрямую вActionSheetDefaultIosCloseItemбез необходимости создавать обёртку:<ActionSheet slotProps={{ iosCloseItem: { children: i18n("cancel"), }, }} />
-
ActionSheetItem: Свойства
mode="cancel"иisCancelItemотмечены как устаревшие. Вместо этого используйте компонентActionSheetDefaultIosCloseItem(#9307) -
RichCell: Добавлены новые свойства
metaиsubmetaдля размещения дополнительного контента внутри основного блока (#9304) -
ModalRoot: Компонент помечен как устаревший. В
VKUI v10станет внутренним. Вместо него используйте хукuseModalManager(#8847) -
ModalRoot, ModalCard, ModalPage: Добавлены свойства
disableOpenAnimationиdisableCloseAnimationдля отключения анимаций открытия и закрытия модальных окон (#8847) -
Button: Добавлено свойство
elevationдля тени (#9379)
-
FormLayoutGroup: Добавлено свойство
noPadding(#9415) -
Удалены проверки типа
hasOwnProperty(#9581) -
Snackbar: Экспортирован тип компонента
Snackbar.Basic-SnackbarBasicProps(#9611) -
Search: В
slotPropsбыл добавлены слотыclearButton, свойствоclearButtonTestIdотмечено как@depracated(#9638)
Исправления
- Улучшена производительность компонентов связанных с датами и временем за счёт кеширования инициализации объекта Intl (#9340)
- FormField: Исправлена обработка
onMouseEnterиonMouseLeave(#9331) - Button: После завершения загрузки (
loading: true → false) кнопка больше не остаётся в визуальном состоянии hover (#9478) - Все токены с
--vkui--opacity_disable_accessibiltyзаменены на--vkui--opacity_disable, т.к. первый отмечен устаревшим VKCOM/vkui-tokens#1371 (#9473) - Calendar:
- DateInput: Корректное отображение и ввод даты/времени при заданном
timezone(и в календаре, и при ручном вводе в поля) (#9474) - CustomSelectOption: Добавлено свойство
textNoWrapдля предотвращения переноса текста (#9480) - Accordion: По интерактивным элементам можно было навигироваться внутри скрытого аккордиона (#9496)
- Tappable: active состояние у вложенных элементов всплывало на верх (#9573)
Новые компоненты
- useSnackbarManager: Хук для централизованного управления снекбарами в приложении (#8839)
Хук предоставляет удобный API для работы со снекбарами: открытие, закрытие, обновление, поддержка очереди с настраиваемым лимитом и стратегией переполнения. Также поддерживает создание кастомных снекбаров с произвольным компонентом. - useModalManager: Хук для централизованного управления модальными окнами в приложении (#8847)
Хук предоставляет удобный API для работы с модальными окнами (ModalPageиModalCard): открытие, закрытие, обновление, поддержка истории открытия. Также поддерживает создание кастомных модальных окон с произвольным компонентом. - FocusTrap: Компонент для управления фокусом, который зацикливает навигацию через Tab и Shift + Tab внутри определённой области. Используется для обеспечения доступности модальных окон, диалогов, всплывающих меню и других интерактивных элементов (#9330)
Документация
- Добавлена инструкция по переходу с
v7наv8(#9333) - Для раздела Компоненты в боковом меню добавлена клавиатурная навигация (#9354)
- Исправлена проблема моргания главной страницы (#9378)
- При навигации не раскрывалось боковое меню (#9448)
- Сбрасывался код в редакторе после скрытия и раскрытия блока (#9511)
- Storybook: Изменена иконка с обозначением направления текста (#9552)
- Badge: Обновлено описание компонента (#9551)
- Flex.Item: исправлен JSDoc c
@depracated– рекомендуется использоватьBox, а неFlex(#9615)
Зависимости
- @vkontakte/vkui-tokens обновлен с
4.71.0до4.75.2(#9657) - @vkontakte/vkui-floating-ui обновлен с
0.2.7до0.2.8(#9477) - @swc/helpers с
0.5.19до0.5.20(#9654)