InputAdornment — это компонент библиотеки MUI,
предназначенный для добавления декоративных элементов к полям ввода
(TextField, OutlinedInput,
FilledInput). Он позволяет размещать текст или иконки
слева или справа от ввода, улучшая UX и визуальное
восприятие формы.
Компонент InputAdornment оборачивается вокруг элемента,
который нужно вставить в поле ввода, и подключается через свойства
startAdornment или endAdornment родительского
компонента ввода:
import TextField from '@mui/material/TextField';
import InputAdornment from '@mui/material/InputAdornment';
import AccountCircle from '@mui/icons-material/AccountCircle';
<TextField
label="Имя пользователя"
InputProps={{
startAdornment: (
<InputAdornment position="start">
<AccountCircle />
</InputAdornment>
),
}}
/>
Ключевые моменты:
position="start" — элемент отображается
слева.position="end" — элемент отображается
справа.InputProps передает обертку к внутреннему компоненту
ввода.Помимо иконок, InputAdornment поддерживает текстовые
вставки. Это полезно для единиц измерения, валют или подсказок:
<TextField
label="Цена"
InputProps={{
endAdornment: <InputAdornment position="end">₽</InputAdornment>,
}}
/>
В данном примере символ рубля появляется справа от поля, сохраняя корректное выравнивание текста.
В MUI разрешается комбинировать иконки и текст, например, добавлять иконку валюты слева и текст единицы измерения справа:
<TextField
label="Вес"
InputProps={{
startAdornment: (
<InputAdornment position="start">
<img src="/icons/weight.svg" alt="Вес" />
</InputAdornment>
),
endAdornment: <InputAdornment position="end">кг</InputAdornment>,
}}
/>
Такой подход позволяет создавать наглядные и удобные формы, особенно когда требуется указать контекст значения.
InputAdornment наследует стили от MUI, но их можно
переопределять через sx или styled:
<InputAdornment
position="start"
sx={{ color: 'blue', fontWeight: 'bold', fontSize: '1rem' }}
>
$
</InputAdornment>
Рекомендации по стилизации:
theme.palette).fontSize иконок и текста лучше согласовывать с
высотой поля ввода.SvgIcon или встроенные
компоненты Material Icons.InputAdornment
автоматически выравнивает содержимое по центру поля, но для сложных
случаев можно использовать flex внутри компонента.IconButton:import Visibility from '@mui/icons-material/Visibility';
import IconButton from '@mui/material/IconButton';
<TextField
label="Пароль"
type="password"
InputProps={{
endAdornment: (
<InputAdornment position="end">
<IconButton>
<Visibility />
</IconButton>
</InputAdornment>
),
}}
/>
TextField с
multiline InputAdornment работает только с
startAdornment, так как вертикальное выравнивание с
endAdornment ограничено.react-hook-form
InputAdornment не мешает привязке значений и обработке
событий ввода.InputAdornment корректно реагирует на тему MUI, наследуя
color, typography и spacing:
<InputAdornment
position="end"
sx={{
color: 'primary.main',
typography: 'subtitle2',
mr: 1
}}
>
см
</InputAdornment>
theme.palette обеспечивает единый стиль
приложения.typography помогает синхронизировать текст с другими
элементами интерфейса.InputAdornment не является самостоятельным
полем, его можно использовать только внутри компонентов ввода
(TextField, OutlinedInput,
FilledInput).<InputAdornment position="start">
<AccountCircle />
<span style={{ marginLeft: 4 }}>User</span>
</InputAdornment>
aria-label, role,
tabIndex).InputAdornment обеспечивает:
Правильное использование startAdornment и
endAdornment, а также стилизация через sx или
styled, позволяет создавать формы профессионального
уровня, которые выглядят современно и удобны в
использовании.