Releases: VKCOM/VKUI
v7.9.0
Миграция на slotProps
В рамках подготовки к исправлению проблемы, что у некоторых компонентов пользовательские свойства передаются не в корневой элемент, а во внутренний (#2342), добавлено новое API slotProps для прокидывания свойств во внутренние элементы компонента (спасибо за идею библиотеке компонентов MUI ❤️). Пока что свойство добавлено только для проблемных компонентов, где это возможно, за исключением Snackbar. В будущем будем рассматривать идею перехода на такое API и в других компонентах где есть свойства по типу inputProps, arrowProps и т.п.
Рекомендуем заранее мигрировать на новое API, чтобы упростить обновление до VKUI v8.
Ниже список компонентов, у которых появилось свойство slotProps в рамках текущего релиза.
- Input:
- Добавлено свойство
slotPropsдля прокидывания свойств во внутренние элементы компонента (#9037) - Свойство
getRefустарело. Если вы передаётеdata-*иaria-*атрибуты, то рекомендуем перенести их вslotProps.<name>для сохранения обратной совместимости при миграции на v8 (#9037)<Input value="value" - data-testid="input" - aria-label="some label" - getRef={handleRef} + slotProps={{ + input: { + 'getRootRef': handleRef, + 'aria-label': "some label" + 'data-testid': "input" + } + }}; />
- Добавлено свойство
- TextArea:
- Добавлено свойство
slotPropsдля прокидывания свойств во внутренние элементы компонента (#9037) - Свойство
getRefустарело. Если вы передаётеdata-*иaria-*атрибуты, то рекомендуем перенести их вslotProps.<name>для сохранения обратной совместимости при миграции на v8 (#9037)<TextArea value="value" - data-testid="textArea" - aria-label="some label" - getRef={handleRef} + slotProps={{ + textArea: { + 'getRootRef': handleRef, + 'aria-label': "some label" + 'data-testid': "textArea" + } + }}; />
- Добавлено свойство
- WriteBar:
- Добавлено свойство
slotPropsдля прокидывания свойств во внутренние элементы компонента (#9037) - Свойство
getRefустарело. Если вы передаётеdata-*иaria-*атрибуты, то рекомендуем перенести их вslotProps.<name>для сохранения обратной совместимости при миграции на v8 (#9037)<WriteBar value="value" - data-testid="textArea" - aria-label="some label" - getRef={handleRef} + slotProps={{ + textArea: { + 'getRootRef': handleRef, + 'aria-label': "some label" + 'data-testid': "textArea" + } + }}; />
- Добавлено свойство
- Search:
- Добавлено свойство
slotPropsдля прокидывания свойств во внутренние элементы компонента (#9037) - Свойство
getRefустарело. Если вы передаётеdata-*иaria-*атрибуты, то рекомендуем перенести их вslotProps.<name>для сохранения обратной совместимости при миграции на v8 (#9037)<Search value="value" onChange={onChange} - data-testid="input" - aria-label="some label" - getRef={handleRef} + slotProps={{ + input: { + 'getRootRef': handleRef, + 'aria-label': "some label" + 'data-testid': "input" + } + }}; />
- Добавлено свойство
- Switch:
- Добавлено свойство
slotPropsдля прокидывания свойств во внутренние элементы компонента (#9036) - Свойство
getRefустарело. Если вы передаётеdata-*иaria-*атрибуты, то рекомендуем перенести их вslotProps.<name>для сохранения обратной совместимости при миграции на v8 (#9036)<Switch defaultChecked - data-testid="input" - aria-label="some label" - getRef={handleRef} + slotProps={{ + input: { + 'getRootRef': handleRef, + 'aria-label': "some label" + 'data-testid': "input" + } + }}; />
- Добавлено свойство
- Radio:
- Добавлено свойство
slotPropsдля прокидывания свойств во внутренние элементы компонента (#9036) - Устарели свойства
labelPropsиgetRef. Если вы передаётеdata-*иaria-*атрибуты, то рекомендуем перенести их вslotProps.<name>для сохранения обратной совместимости при миграции на v8 (#9036)<Radio - labelProps={{ - 'aria-label': 'some label', - }} - data-testid="input" - aria-label="some label" - getRef={handleRef} + slotProps={{ + root: { + 'aria-label': 'some label', + }, + input: { + getRootRef: handleRef, + 'data-testid': 'input', + 'aria-label': 'some label' + } + }} />
- Добавлено свойство
- Checkbox:
- Добавлено свойство
slotPropsдля прокидывания свойств во внутренние элементы компонента (#9036) - Свойство
getRefустарело. Если вы передаётеdata-*иaria-*атрибуты, то рекомендуем перенести их вslotProps.<name>для сохранения обратной совместимости при миграции на v8 (#9036)<Checkbox defaultChecked - data-testid="input" - aria-label="some label" - getRef={handleRef} + slotProps={{ + input: { + 'getRootRef': handleRef, + 'aria-label': "some label" + 'data-testid': "input" + } + }}; />
- Добавлено свойство
- File:
- Добавлено свойство
slotPropsдля прокидывания свойств во внутренние элементы компонента (#9036) - Свойство
getRefустарели. Если вы передаётеdata-*иaria-*атрибуты, то рекомендуем перенести их вslotProps.<name>для сохранения обратной совместимости при миграции на v8 (#9036)<File mode="secondary" - data-testid="input" - aria-label="some label" - getRef={handleRef} + slotProps={{ + input: { + 'getRootRef': handleRef, + 'aria-label': "some label" + 'data-testid': "input" + } + }}; />
- Добавлено свойство
- NativeSelect:
- Добавлено свойство
slotPropsдля прокидывания свойств во внутренние элементы компонента (#9036) - Свойство
getRefустарело. Если вы передаётеdata-*иaria-*атрибуты, то рекомендуем перенести их вslotProps.<name>для сохранения обратной совместимости при миграции на v8 (#9036)<NativeSelect value={selectedOption} onChange={(_, newValue) => setSelectedOption(newValue)} - data-testid="input" - aria-label="some label" - getRef={handleRef} + slotProps={{ + select: { + 'getRootRef': handleRef, + 'aria-label': "some label" + 'data-testid': "input" + } + }}; > ... </NativeSelect>
- Добавлено свойство
- CustomSelect:
- Добавлено свойство
slotPropsдля прокидывания свойств во внутренние элементы компонента (#9036) - Свойства
getRef,getSelectInputRef,nativeSelectTestIdустарели. Если вы передаётеdata-*иaria-*атрибуты, то рекомендуем перенести их вslotProps.<name>для сохранения обратной совместимости при миграции на v8 (#9036)<CustomSelect value={selectedOption} options={options onChange={(_, newValue) => setSelectedOption(newValue)} - data-testid="input" - aria-label="some label" - getRef={selectRef} - getSelectInputRef={inputRef} - nativeSelectTestId="select-id" + slotProps={{ + select: { + getRootRef: selectRef, + 'data-testid': 'select-id', + }, + input: { + getRootRef: inputRef, + 'aria-label': "some label" + 'data-testid': "input", + } + }}; />
- Добавлено свойство
- ChipsSelect:
- Добавлено свойство
slotPropsдля прокидывания свойств во внутренние элементы компонента (#9059) - Свойство
getRefустарело. Если вы передаётеdata-*иaria-*атрибуты, то рекомендуем перенести их вslotProps.<name>для сохранения обратной совместимости при миграции на v8 (#9059)<ChipsSelect id="favoriteGroups" - data-testid="input" - getRef={inputRef} + slotProps={{ + input: { + getRootRef: inputRef, + 'data-testid': "input" + } + }} />
- Добавлено свойство
- ChipsInput:
- Добавлено свойство
slotPropsдля прокидывания свойств во внутренние элементы компонента (#9059) - Свойство
getRefустарело. Если вы передаётеdata-*иaria-*атрибуты, то рекомендуем перенести их вslotProps.<name>для сохранения обратной совместимости при миграции на v8 (#9059)<ChipsInput id="favoriteGroups" - data-testid="input" - getRef={inputRef} + slotProps={{ + input: { + getRootRef: inputRef, + 'data-testid': "input" + } + }} />
- Добавлено свойство
- SplitLayout:
- Добавлено свойство
slotPropsдля прокидывания свойств во внутренние элементы компонента (#9059) - Свойство
getRefустарело. Если вы передаётеdata-*иaria-*атрибуты, то рекомендуем перенести их вslotProps.<name>для сохранения обратной совместимости при миграции на v8 (#9059)<SplitLayout center={title} - data-testid="content" - getRef={contentRef} + slotProps={{ + ...
- Добавлено свойство
v7.8.2
v7.8.1
Исправления
- usePatchChildren: По типам нельзя было передавать DOM-события, хотя по факту можно (#9064)
v7.8.0
Улучшения
- ModalCard, ModalPage: добавлены свойства
disableOpenAnimationиdisableCloseAnimation, которые позволяют отключить анимации открытия/закрытия модалки (#8980) - Popper: Добавлено свойство
autoUpdateOnAnimationFrameдля автоматического обновления позиции на каждом кадре анимации (#9001)
Зависимости
@vkontakte/vkui-tokensобновлен с 4.69.0 до 4.70.0 (#8964)
v7.7.2
v7.7.1
Исправления
Документация
v7.7.0
Улучшения
- Cell: Добавлено свойство
draggerTestIdдля прокидывания test-id для кнопки перетаскивания (#8923) - Gallery:
- ModalPage:
sizeтеперь принимает все другие допустимые для CSS свойстваwidthзначения (#8949) - Search: Добавлено свойство
hideClearButton, чтобы скрывать кнопку очистки (#8948)
Зависимости
- date-fns заменён на внутреннее решение (#8870)
- @vkontakte/vkui-floating-ui обновлён с 0.2.6 до 0.2.7 (#8909)
Документация
- На https://vkui.io добавлена поддержка системной темы (#8869)
- Добавлен просмотр API хука связанного с компонентом, например,
usePaginationуPagination(#8891)