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={{ + content: { + 'getRootRef': contentRef, + 'data-testid': 'content' + }, + }} />
- Добавлено свойство
Новые компоненты
- Box: Компонент, для создания раскладок с поддержкой отступов, размеров, позиционирования и flex-свойств (#8957)
Улучшения
- Snackbar: Добавлено свойство
slotProps.actionдля прокидывания пользовательских свойств, например,data-testid(#9062) - MiniInfoCell: Изменен цвет шеврона при
modeaccentиbase(#9089) - Gallery: Добавлены свойства
animationDurationиanimationEasingдля изменения длительности и функция анимации слайда соответственно (#9090)
Зависимости
- Пакет
@vkontakte/vkjsобвлен до версии 2.0.2