VKUI – это набор React-компонентов, с помощью которых можно создавать интерфейсы, внешне неотличимые от наших iOS и Android приложений.
MIT License
Bot releases are visible (Hide)
useAppearance
(#1716, см. документацию по Themes)appearance
автоматически определяется по scheme
и при scheme="inherit"
для внешних тем vk.com / mvk (#1716)Tooltip
сам определяет положение, в котором ему нужно открыться и поддерживает alignX="center"
(#1686 + #1713 + #1722, спасибо @k-egor-smirnov)ChipsSelect
закрывается при навигации через Tab
(#1703, fixes #1702, спасибо @ilyapishchulin)Chip
внутри ChipsSelect
и ChipsInput
больше не растягивает контейнер, в котором находится (#1709, fixes #1708)ConfigProvider
сохраняет scheme="inherit"
при platform={VKCOM}
(#1715)Button
прячет текст за многоточие, а не переносит его (#1696, #1678)prop-types
, @babel/runtime
и @vkontakte/vkjs
удалены из peerDependencies
— ставить их руками необязательно (#1717)Button
: кнопки и ссылки на базе компонента теперь подсвечиваются при навигации с клавиатуры, а кастомные кнопки и ссылки обзавелись правильными role
и tabIndex
и активируются при нажатии на Enter
(и кнопки, и ссылки) и Space
(только кнопки) — прямо как нативные элементы (#1652)Header
(#1710), Banner
(#1718)DatePicker
(#1666), Slider / RangeSlider
(#1691)Published by thoughtspile over 3 years ago
HorizontalScroll
поддерживает getRef
(#1694)Alert
: actions
при нимают href
и Component
для ссылок (#1695)HorizontalCell
теперь поддерживает пропы disabled
, href
, target
и т.д. (#1692)DatePicker
прокидывает disabled
на селекты (#1668, спасибо @Fsss126)withModalRootContext
убирает updateModalHeight
из TS-пропов обернутого компонента (#1688, спасибо @wolframdeus)SubnavigationBar
: у стрелок в больше нет outline
при фокусе (#1685, fixes #1682)Slider
/ RangeSlider
при перетягивании не вызывают swipeback (#1690)Tooltip
без TooltipContainer
или с неподдерживаемым children
кидает осмысленную ошибку (#1693)Published by ArthurStam over 3 years ago
Button
: Tappable__hoverShadow
теперь накладывается на всю кнопку (#1663, fixes #1576)FormItem
: не рендерит bottom, если передана пустая строка (#1656)Search
: у input
по-дефолту type="search"
(#1650)Touch
с mouse-событиями отвязывает листенеры при анмаунте во время жеста (#1657)Touch
после свайпа не вызывает click
на внутренних элементах (#1658, fixes #1644)Slider
/ RangeSlider
: step
считается от min
, значения не вылезают из [min, max]
после округления (#1684)NavIdProps
(#1664, fixes #1276)Root
поддерживает проп nav
вместо id
(#1659, fixes #1655)Published by eugpoloz over 3 years ago
div
на более подходящие семантически теги, проставили aria
-метки и прописали в документации, где эти метки необходимы. (#1611)Cell
: поправлен баг с иконками для selected
(fixes #1654)PopoutRoot
: исправлен брейкпоинт переключения на десктопное поведение (#1647)Published by fedorov-xyz over 3 years ago
ActionSheet
: в свойстве popupDirection
появилась возможность указывать функцию для расчета позиции выпадающего окна (#1621)AppRoot
поддерживает mode="partial"
, чтобы включать noLegacyClasses
в partial-режиме. Использовать AppRoot
в partial-режиме всё ещё не обязательно. (#1474).Avatar
: исправлен цвет вложенных иконок в children
и z-index
тени (#1614, #1615)FormField
: исправлена минимальная ширина у after (#1619)unstable.css
: добавлены фолбеки для CSS custom properties (#1623)Textarea
: при grow
высота инпута учитывает паддинги и не скроллится (#1582)Select
: значения больше ширины поля больше не выходят за границы поля (#1613)ActionSheetItem
вызывает onChange
при autoclose
на десктопе (#1630, fixes #1491)Gallery
не вешает getRef
и getRootRef
на DOM-элемент (#1635, fixes #1622)SliderSwitch
: клик не вызывает submit формы (#1634, fixes #1602)Tooltip
: свойства onClose, isShown, mode
помечены как необязательные (#1633)ChipsSelect
: поправлен d.tsPanelHeader
: для платформы vkcom возможность фиксировать шапкуTextarea
(#1582), [internal] ActionSheetDropdown
(#1631), Tooltip (#1633)⚠️ Свойства popout
и modal
у View
и Root
помечены как устаревшие — используйте SplitLayout
(#1616)
⚠️ AppRoot embedded
помечен как устаревший — используйте AppRoot mode="embedded"
(#1474)
Published by thoughtspile over 3 years ago
View
, Panel
, ModalCard
, ModalPage
поддерживают не только id
, но и nav
, чтобы не вешать id
на DOM-элементы (#1595)Gallery
не ломается при ленивой инициализации слайдов (#1609)Gallery
: исправлено поведение стрелок когда видно сразу несколько слайдов целиком (#1608)ModalRoot
: исправлен баг при открытии ModalCard после ModalPage с динамической высотой (#1610)Panel
(#1547), PopoutRoot
(#1546)Published by ArthurStam over 3 years ago
ChipsInput
: добавилось новое свойство after
Input
: добавилось новое свойство after
CellButton
: Исправлен фон внутреннего Avatar
Cell
: в selectable
для отрисовки маркера используются готовые иконки вместо самописного дизайнаCell
: в removable
при отсутствии multiline
снова обрезаются children (#1527)IconButton
: свойство Component
теперь не игнорируется (#1535)DatePicker
: убрано свойство monthNames
из DOM (#1537)CustomSelect
: добавлено свойство defaultValue
(#1543)CustomSelectOption
: убрано свойство option
из DOM (#1557)ChipsInput
: уже существующее значение больше не удаляется при повторном вводе, а переносится в конец списка чипов (#1211)Switch
: вернулась возможность переопределить цвет подложки (#1077)Switch
: дизайн неактивного состояния для iOS приведен в соответствие с макетом (#1560)FixedLayout
: исправлен баг с прыгающим PanelHeader при переходах между панелями (#1575)PullToRefresh
: исправили положение спиннера в мультиколоночном дизайне (#1483)SplitCol
(#1533), Snackbar
(#1534), NativeSelect
(#1583), Search
(#1581), ConfigProvider
(#1580)Published by ArthurStam over 3 years ago
AppRoot
: добавлен режим scroll="contain"
для embedded
-приложений, скроллящихся внутри контейнера (#1503)ConfigProvider
: добавлен режим theme="inherit"
для приложений со своей темой (#1477)Textarea
: исправлен авторесайз при изменении программном value
извнеSelect
: поправлен z-index
у выпадающего списка (#1504)Panel
: исправлено центрирование (#1454)Button
: обновлена типографика (#1508)Cell
: disabled
selectable
ячейка теперь, во-первых, не выделяется, а во-вторых — корректно стилизуетсяSelect
: исправления controlled/uncontrolled состояний (#1505)⚠️ Всем CSS-анимациям добавлен префикс vkui
: rotator
-> vkui-rotator
(#1481)
⚠️ Переменные из styles/constants.css теперь установлены на .vkui__root
(#1477)
Published by fedorov-xyz over 3 years ago
TooltipContainer
: позволяет использовать тултипы вне Panel, PanelHeader, FixedLayout (#1460)FixedLayout
: поддержано свойство getRef
Banner
: исправлены размеры кнопок в документации.Banner
: исправлено отображение пустого массива actions.FixedLayout
, View
: исправлен баг со скачущим хедером при переходах на панель со скроллом (#1467)dist
(#1456)Header
: исправлен баг с переносом слов в multiline (#1470)ChipsSelect
: исправлена передача onClick
и onBlur
к ChipsInput
DatePicker
: исправлен баг с выходом компонента за пределы контейнера (#1486)ModalRoot
: исправлен баг с изменением высоты вьюпорта при открытой модалке на iOS (#1490)SplitLayout
: исправлен неправильный отступ сверху на iOS (#1499)Published by thoughtspile over 3 years ago
AppRoot
: режим noLegacyClasses
отключает глобальные css-классы (#1380)ModalRoot
: исправлена ошибка при установленном dynamicContentHeight
(#1451)Внутри vkui теперь используем проп vkuiClass
вместо className
— подробнее в contributing.md
Published by ewgenius over 3 years ago
Published by ewgenius over 3 years ago
ActionSheet
: добавлено свойство popupDirection
Spacing
: более гибкая альтернатива Separator
для отступов и разделителейModalRoot
: исправлены отступы для webviewType = "vkapps"
#1384Avatar
: исправлен цвет иконки-плейсхолдера.HorizontalScroll
: по умолчанию всегда показывает стрелки на десктопе #1394ModalPage
: новый проп для передачи рефа getModalContentRef
#1390Alert
: исправлена ширина на десктопе #1387ModalPageHeader
: исправлены внутренние отступы у кнопок и ширина заголовка #1407, #1417ActionSheet
: исправлены внутренние отступы и устранена ошибка с двойным срабатыванием onClose на десктопе #1416, #1388Из index.d.ts теперь экспортируются все интерфейсы, описывающие свойства компонент.
Было:
import { Snackbar } from '@vkontakte/vkui/';
import { SnackbarProps } from '@vkontakte/vkui/dist/components/Snackbar/Snackbar';
Стало:
import { Snackbar, SnackbarProps } from '@vkontakte/vkui';
⚠️ Подобные импорты доступны только с версии TypeScript >= 3.8
Published by ArthurStam over 3 years ago
FormItem
и FormLayoutGroup
теперь имеют removable
режим, сделанный по аналогии с Cell
SubnavigationBar
и SubnavigationButton
IconButton
: свойство icon
больше не обязательное. Вместо него рекомендуется использовать children
TabbarItem
: поправлена иконка Dropdown в соответствии с дизайномTabbarItem
: длинные названия прячутся за ...
#1360CustomSelectOption
: исправлен баг с длинным текстомGroup
: адаптированы отступы у вложенных групп для SizeY = CompactCounter
без контента скрывается #1357Tooltip
не перезаписывает ref
обернутого элемента #1359ModalCard
: адаптирована максимальная ширина карточки на мобильных устройствахModalPageHeader
: на Android длинный заголовок сокращается ...
#1365View
, Root
, PanelHeaderBack
: дополнительный className
не сносит базовые классы #1301, спасибо @daniil-kaverzin + #1363DatePicker
: изменение даты не приводит к изменению ширины селектовModalPageHeader
: адаптированы отступы для SizeX = RegularModalRoot
: исправлено закрытие и одновременный захват модалокBanner
: исправлен z-index границыPublished by ArthurStam over 3 years ago
Root
: исправлена анимация переходаHorizontalCell
: исправлен вывод props & methodsHorizontalScroll
: исправлено обновление состояния прокрутки после изменения children
ChipsSelect
: creatableText
теперь отвечает за отрисовку опции для создания тегов в режими creatable
CustomSelectOption
: убрано дублирование className
Gallery
: исправлено вычисление ширины слайдов, при использовании внутри SplitLayout
(#1315)Checkbox
: исправлен перенос длинного текста, вылезающего за отступыSliderSwitch
: поправлен баг с activeValue
(#1314)Snackbar
: исправлен баг анимации при использовании в мультиколоночном SplitLayoutModalRoot
: отменены исправления для горизонтального скрола #1321 и #1309Published by ArthurStam over 3 years ago
Badge
: новый компонент (#626)ModalDismissButton
: поправлено центрирование иконки (#1300)HorizontalScroll
скрывал ModalPage
(#1321)Published by ArthurStam over 3 years ago
ChipsSelect
: свойство closeAfterSelect
теперь опциональноPublished by ArthurStam over 3 years ago
⚠️ В этой версии обнаружены два недочёта, которые исправятся в следующей версии.
- У
ChipsSelect
новое свойствоcloseAfterSelect
помечено как обязательное. В следующей версии оно будет опциональным.- Сломался TreeShaking. В вашем приложении появится много неиспользуемых модулей, что повлияет на скорость загрузки. Так же будет исправлено в следующей версии.
ContentCard
: onClick
вешается на внутренний Tappable
(спасибо @gbowsky)Avatar
: убрано лишнее условие ломающее проверку размера (спасибо @gbowsky)FixedLayout
: поправлена демка (спасибо @gbowsky)ChipsSelect
: добавлены метод onChangeStart
и свойство closeAfterSelect
UsersStack
: добавлен размер xs
(16px) (#1179)IconButton
: поправлены размеры для sizeY="compact"
(#1287)Counter
: поправлен фон при использовании внутри TabsItem
(#1232)Slider
и RangeSlider
: стилизовано disabled
состояниеFormItem
по-умолчанию теперь div
(#1302)Component
), наследуются от AllHTMLAttributes
, чтобы дать возможность навешивать специфические для конкретной ноды свойства (типа htmlFor
, target
и т.д.)Text
, Caption
: добавлено свойство Component
ModalRoot
: поправлен вывод props & methodsHorizontalCell
: поправлен дизайн (#1173)Modal
: заработали скроллы внутренних компонент (#335)PanelHeaderContext
: адаптацияPublished by thoughtspile almost 4 years ago
Input
передаёт проп style
на корневой элемент, а не на <input>
useInsets
правильно реагирует на появление клавиатуры на iOSnoSlideClick
(fixes #1253)ModalPage
/ModalCard
исправлено адаптивное поведение на небольших экранахActionSheet
исправлено адаптивное поведение на небольших экранахRangeSlider
исправлена ошибка со значениями на краях диапазона (#600)Published by ewgenius almost 4 years ago
AppRoot
- исправлено применение стилей при первом маунте VKUI приложенияTooltip
- поправлены отступы в соответсвии с дизайномGallery
- исправлен баг с отсутствием анимации в первой смене слайдаDatePicker
- тип DateFormat
доступен для импорта@vkontakte/icon/dist
Published by ArthurStam almost 4 years ago
Обновление документации