VKUI Versions Save

VKUI – это набор React-компонентов, с помощью которых можно создавать интерфейсы, внешне неотличимые от наших iOS и Android приложений.

v5.9.6

6 months ago

Исправления

  • ModalPage/ModalCard: при открытии фокусируемся на контейнер ModalPage/ModalCard, если внутри модалки нет элемента, на котором уже есть фокус (#6054)
  • Select/CustomSelect: исправили типы рендер-функции renderOption, чтобы можно было передавать опции с раширенным набором свойств (#6076)

v5.9.5

7 months ago

Исправления

  • Alert: кнопка закрытия съезжала вниз (#6035)
  • ConfigProvider: передача параметра platform={undefined} перебивала значение по умолчанию из контекста (#6044)

v5.9.4

7 months ago

Исправления

  • Исправили наведение, если устройство ввода не основное (#6009)
  • ModalPage: поправили поведение в мобильном iOS, раньше жестом, при закрытии модалки, можно было вызвать нативный pull-to-refresh ведущий к перезагрузке страницы. Используем overscroll-behavior: none на html при открытой модальной странице, чтобы исключить возможность появления нативного pull-to-refresh в браузерах, поддерживающих свойство overscroll-behavior. (#6004)
  • PullToRefresh: как и в ModalPage дополнительно используем overscroll-behavior: none на html, чтобы в браузерах, поддерживающий свойство overscroll-behavior, исключить вызов нативного pull-to-refresh. (#6004)
  • Уменьшили размер бандла (#6030)

[!IMPORTANT]
Мы приступаем к разработке v6, поэтому начиная с версии v5.10.0 будет отдаваться приоритет новой мажорной версии. По VKUI v5, по возможности, будем править только критические проблемы.

v5.9.3

7 months ago

Исправления

  • CustomSelect: исправлена типизация. option всегда передается в renderOption (#5973)
  • ActionSheet: убрали неверный тег header (#5966)
  • HorizontalScroll: убрали стрелки для скринридера (#5969 by @ntvsx193)
  • Header: убрали неверный тег header, поправили доступность (#5996 by @ntvsx193)
  • Alert: добавили word-break: break-word для header и text (#5966)
  • PullToRefresh: поправили поведение в мобильном iOS, раньше жестом довольно легко можно было вызвать нативный pull-to-refresh ведущий к перезагрузке страницы (#5967)

v5.9.2

7 months ago

Исправления

  • Добавлен getRootRef на недостающие элементы (#5916)
  • Исправлена проблема с поддержкой старых браузеров (указанных в нашем .browserslistrc) (#5913)
  • Snackbar: исправлено закругление (#5944)
  • CustomSelect: исправлена типизация свойства renderOption (#5950)
  • PanelHeaderButton: исправлены отступы на ios (#5878)
  • Button: убрали лишний отступ при параметрах before/after и stretched (#4049)
  • Gallery: исправлена работа looped в связке с timeout (#5951)

v5.9.1

7 months ago

Исправления

  • Group: Исправлены отступы заголовка для mode=plain (#5906)
  • HorizontalScroll: исправлена работа в RTL (#5837)

v5.9.0

7 months ago

Улучшения

  • Добавили хук useNavId для определения id панели (#5743)
  • ActionSheetItem: добавили свойство after (#5828)
  • ActionSheet: добавили свойство mode: 'sheet' | 'menu', позволяющее переключать режим отображения (#5829)
  • Alert: добавили возможность отрисовать кнопку закрытия внутри компонента (#5663)
  • Avatar, Image: теперь могут быть кликабельными (#5803)
  • Button: добавили свойство rounded (#5648)
  • Cell: добавили возможность обрабатывать клик по компоненту Cell в режиме removable (#5745)
  • FormLayoutGroup: поддержали режим segmented при mode="vertical" (#5802)
  • ModalPage: добавили возможность устанавливать фиксированную высоту модального окна с помощью свойства height (#5830)
  • Tappable: добавили свойство activated (#5826)
  • Добавили возможность передавать data-testid там, где это раньше было невозможно (#5792):
    • Alert: добавили возможность передаваться data-testid компонентам отечающим за действия внутри Alert через элементы actions.
    • ModalPageHeader/PanelHeader: добавили возможность передавать data-testid обертке вокруг основного текста ModalPageHeader через typographyProps.
    • ModalPage: новый проп modalContentTestId, устанавливающий data-testid на обёртку вокруг контента ModalPage, отвечающую за скролл внутри модального окна.
  • Gallery: добавили проп looped для возможности работы галереи в режиме карусели (#5744)
  • Header: доработали aside часть компонента для выравнивания контента (#5681)
  • Увеличили зону триггера SwipeBack (#5725)
  • ScrollArrow: добавили пропу direction возможность задать up и down (#5839)
  • Импортируем проп FloatingPlacement (#5809)

Исправления

  • Button: исправили токен шрифта в компоненте Button (#5885)
  • CellButton/SimpleCell: поправили селекторы отвечающие за цвет иконок в элементах before/after, за счёт понижения специфичности и избавления от привязки к .vkuiIcon классу. (#5873)
  • HorizontalCell: больше не рендерим обертку контента .HorizontalCell__content если внутри пусто (не переданы header/subtitle/extraSubtitle (#5884)
  • ModalPage: починили скролл при повторном открытии модалки на весь экран (#5845)
  • View: добавили затемнение следующей панели при свайпбеке в iOS (#5804)
  • Panel: исправлен фон при AppRoot layout="card" (#5804)
  • Link: добавили font-weight: inherit (#5902)
  • ⚠️ убрали overflow-x: hidden у body, так как это ломает библиотеки (react-virtualizer), реализующие виртуальные списки и вешающие обработчик события scroll на window. (#5890). Рекоммендуем пользователям библиотеки самим выставлять overflow-x: hidden на body, если это действительно нужно по какой-то причине.

Internal

  • Обновили @vkontakte/vkui-tokens до 4.38.1 и поддержали динамические токены --vkui--size_border--regular и --vkui--color_separator_primary (#5783, #5791)
  • Включили опцию declarationMap и добавили TypeScript исходники для пакета @vkontakte/vkui, что позволяет при переходе к определению (go to definition) направлять в .ts файл, а не .d.ts (#5748)

v5.8.2

8 months ago

Исправления

  • ActionSheet: исправлен отступ у тени на платформе iOS (#5797)
  • Banner: исправлен внутренний отступ (#5824)
  • CardScroll: исправлен тип кнопок навигации, чтобы не вызывать внутри формы при нажатии событие отправки (#5863)
  • Checkbox: компонент без текста растягивался на всю ширину (#5786)
  • Group: исправлено расположение элементов, которые находятся в header (#5799)
  • ModalCard: исправлено исчезновение overlay при достаточно быстром переключении между ModalCard (#5805)
  • Popper: исправлено позиционирование при первом рендере. Раньше появлялся по координатом (0,0), после чего перерисовывался правильно (#5822)
  • SimpleCell: исправлены отступы внутри компонента (#5794)
  • WriteBar: исправлено "прыгающее" поведение (смещение) иконок и кнопок во время ввода текста (#5836)

Исправления в документации

  • FixedLayout: зафиксировали PanelHeader в документации FixedLayout для всех платформ (#5843)
  • MiniInfoCell: убран лишний разделитель из документации (#5844)
  • PanelHeaderButton: исправлены ссылки на документацию из компонентов пресетов PanelHeader (#5851)

v5.8.1

8 months ago

Исправления

  • ⚠️ Неверное название переменной окружения ломало сборку в vite (#5766)
  • ModalDismissButton: поправлено исчезновение кнопки закрытия в примере из документации (#5764)
  • TabbarItem: применили токен для текста как в дизайн-системе (#5750)

Документация

  • ActionSheet: поправили ссылку на документацию Apple для разработчиков (#5768)

v5.8.0

8 months ago

Улучшения

  • Поддержали getRootRef на всех компонентах (#5651)
  • ActionSheet: добавили информацию об инициаторе закрытия ActionSheet в ActionSheet.onClose (#5597)
  • Slider: добавили возможность включения тултипа при наведении/фокусе показывающего значение слайдера (#5472)
  • FormItem: добавили возможность отключения внешних отступов с помощью пропа noPadding (#5600)
  • Tappable: добавили свойство borderRadiusMode для возможности унаследовать радиус скругления от родителя (#5619)
  • useNavDirection(): добавили хук для определение типа перехода (вперёд/назад), с которым была отрисована панель (#5567)
  • Typography: для тега <b> в типографических компонентах теперь выставляем font-weight: var(--vkui--font_weight_accent1); (#5622)
  • Placeholder: добавили подкомпоненты (#5629)
  • AppRoot:
    • добавили свойство layout, отвечающее за вид Group (#5642)
    • добавили свойство disableParentTransformForPositionFixedElements , отключающее создания нового слоя для position: fixed элементов при mode="embedded" (#5692)
  • Group: изменили вид карточек в мобильной версии (#5720)
  • Card: добавили режим отображения outline-tint (#5533)
  • Input: отключили нативные элементы для <input type="number" /> при передаче type="number" (#5607)
  • ChipsSelect/CustomSelect: экспортировали filterFnForSelect (defaultFilterFn из lib/select) (#5601)

Исправления

  • ConfigProvider: ConfigProvider больше не удаляет из body добавленные другими приложениями классы при размонтировании. (#5633)
  • ModalPage: скролл внутри модальной страницы теперь заканчивается на границе с ios env bottom inset. (#5715)
  • TextTooltip/Popper: добавили проп hideWhenReferenceHidden, чтобы тултип не прыгал, а сразу автоматически скрывался при исчезновении элемента, к которому тултип привязан. (#5690)
  • Checkbox, Root: исправили классы (https://github.com/VKCOM/VKUI/pull/5737)
  • ChipsInput/ChipsSelect: привели типографику к дизайн-системе (https://github.com/VKCOM/VKUI/pull/5695)
  • Удалили font-smoothing (#5739)

Документация

  • Добавили ссылки на Storybook для всех компонентов (#5694)
  • MiniInfoCell: убрали из документации свойство textLevel, которого нет в интерфейсе компонента (#5736)

Internal

Important

В связи с переносом @vkontakte/icons в прямые зависимости вы можете столкнуться с дублированием зависимостей. Если это случилось, не паникуйте: на помощь придет дедупликация.

Как ее сделать?

npm

Команда npm dedupe

npm dedupe

Yarn Classic

Утилита yarn-deduplicate

npx yarn-deduplicate --packages @vkontakte/icons

Yarn Modern

Команда yarn dedupe

yarn dedupe @vkontakte/icons

pnpm

Команда pnpm dedupe

pnpm dedupe

Подготовка к удалению интеграции с VK Bridge (#5496)

VKUI создавался как инструмент для создания клиентской части мини-приложений ВКонтакте. В связи с этим VKUI изначально интегрирован с библиотекой VK Bridge, которая реализует общение между VK Mini Apps и официальными клиентами ВКонтакте.

Сегодня разработчики используют VKUI, чтобы создавать полноценные независимые приложения, которые никак не связаны с VK Mini Apps, но наследие остается, и иметь с ним дело приходится всем. Поэтому мы приняли решение удалить интеграцию с VK Bridge, начиная со следующей мажорной версии (v6).

В рамках этого релиза в качестве подготовки к удалению интеграции мы:

  • добавили советы по подготовке к обновлению на v6 в документации и в предупреждениях в консоли разработчика (☝️ если вы не разработчик VK Mini Apps, просто игнорируйте эти советы);
  • создали страницу Интеграция с VK Mini Apps, которая содержит всю информацию об интеграции VKUI с VK Mini Apps в новых реалиях.