Badge#
Badge генерирует маленький значок в углу своего дочернего элемента.
Свойства компонента badge#
Свойства компонента badge представлены в таблице ниже.
№ |
Свойство |
Описание |
Значение по умолчанию |
|---|---|---|---|
1 |
classes |
JSS-классы для стилизации. |
- |
2 |
status |
Цветовая схема значка. Secondary — по-умолчанию, success — сообщение об успехе, error — сообщение об ошибке, processing — сообщение об выполняющемся действии, warning — предупреждение, а также: "disabled" "info" "error" "neutral" |
error |
3 |
disabled |
Состояние активности элемента (boolean) |
- |
4 |
content |
Контент, который отображается внутри значка. Если свойство имеет пустое значение — 0, undefined, null, '', false — то значок не будет отображаться. Это поведение можно изменить с помощью свойства showZero |
- |
5 |
position |
Положение значка относительно дочернего элемента: "top-left", "top-right", "bottom-left", "bottom-right" (BadgePositionProperties) |
|
6 |
max |
Верхняя граница для числового значения значка. Чтобы убрать верхнюю границу можно передать значение равное Infinity (number) |
99 |
7 |
dot |
Отображает значок как цветную точку без контента. В этом состоянии значок отображается только при НЕ пустом значении свойства content (boolean) |
- |
8 |
showZero |
Включает отображение значка при пустом значении — 0, undefined, null, '', false — свойства content (boolean) |
|
9 |
horizontalOffset |
Смещение положения значка по горизонтали (string, number) |
0 |
10 |
verticalOffset |
Смещение положения значка по вертикали (string, number) |
Автономный значок без дочерних компонентов (Standalone)#
Используется для отображения контента в одном из доступных цветовых состояний, например, для отображения информации о новых уведомлениях.
<Badge content={1} />
<Badge content={1} status="error" />
<Badge content={1} status="info" />
<Badge content={1} status="neutral" />
<Badge content={1} status="warning" />
<Badge content={1} status="success" />
<Badge disabled content={1} />
Простые значки для компонента кнопки#
На примере кнопки (целевой элемент, к которому применяется значок, может быть любым) показано отображение значков с использованием разных цветов.
<Badge content={10}>
<Button>Уведомления</Button>
</Badge>
<Badge content={10} status="success">
<Button variant="outlined">Уведомления</Button>
</Badge>
<Badge content={10} status="error">
<Button variant="ghost">Уведомления</Button>
</Badge>
<Badge content={10} status="info">
<Button>Уведомления</Button>
</Badge>
<Badge content={10} status="warning">
<Button variant="outlined">Уведомления</Button>
</Badge>
<Badge disabled content={10}>
<Button variant="ghost" disabled>
Уведомления
</Button>
</Badge>
Превышение максимального значения#
При превышении максимального значения компонента badge отрисовывается вспомогательный символ «+».
<Badge content={10} max={9}>
<Button>Уведомления</Button>
</Badge>
Видимость значка#
Когда свойство content имеет пустое значение — 0, undefined, null, '', false — значок исчезает.
import * as React from 'react'
import { Badge } from '@v-uik/badge'
import { Button } from '@v-uik/button'
import { InputNumber } from '@v-uik/input-number'
export const BadgeToggle = (): JSX.Element => {
const [value, setValue] = React.useState<number | null>(5)
const onChangeInput = (value: number | null) => {
setValue(value)
}
return (
<>
<Badge content={value}>
<div
style={{
height: '40px',
width: '40px',
backgroundColor: 'bisque',
}}
/>
</Badge>
<InputNumber
fullWidth
style={{
width: 65,
marginRight: '15px',
marginLeft: '15px',
}}
precision={0}
value={value}
onChange={onChangeInput}
/>
<Button
kind="outlined"
size="sm"
style={{
paddingLeft: 11,
paddingRight: 11,
minWidth: 32,
}}
onClick={() => setValue((value ?? 0) - 1)}
>
-
</Button>
<Button
kind="outlined"
size="sm"
style={{
marginLeft: 8,
paddingLeft: 11,
paddingRight: 11,
minWidth: 32,
}}
onClick={() => setValue((value ?? 0) + 1)}
>
+
</Button>
</>
)
}
Если необходимо, чтобы значок отображался всегда, можно использовать свойство showZero.
<Badge content={0} showZero>
<div
style={{
height: '40px',
width: '40px',
backgroundColor: 'bisque',
}}
></div>
</Badge>
Значок-точка#
Свойство dot превращает значок в точку. Это можно использовать как уведомление, что что-то изменилось без количества.
Обратите внимание, свойство
dotне отображает значок с пустым контентом. Убедитесь, чтоcontentне является пустым значением или указано свойствоshowZero
<Badge content={1} dot>
<div
style={{
height: '40px',
width: '40px',
backgroundColor: 'bisque',
}}
></div>
</Badge>
<Badge dot showZero>
<div
style={{
height: '40px',
width: '40px',
backgroundColor: 'bisque',
}}
></div>
</Badge>
Выравнивание компонента badge#
Когда значок отображается относительно дочернего элемента, можно управлять его позицией с помощью свойства position,
а также производить смещение по вертикали и горизонтали с помощью свойств horizontalOffset и verticalOffset соответственно.
<Badge content={1} position="top-right">
<div
style={{
height: '40px',
width: '40px',
backgroundColor: 'bisque',
}}
></div>
</Badge>
<Badge content={1} position="bottom-right">
<div
style={{
height: '40px',
width: '40px',
backgroundColor: 'bisque',
}}
></div>
</Badge>
<Badge content={1} position="top-left">
<div
style={{
height: '40px',
width: '40px',
backgroundColor: 'bisque',
}}
></div>
</Badge>
<Badge content={1} position="bottom-left">
<div
style={{
height: '40px',
width: '40px',
backgroundColor: 'bisque',
}}
></div>
</Badge>
Доступность#
Рекомендуется использовать дополнительное описание при использовании компонента badge с кнопкой. Например, атрибут aria-label.
<Badge content={10}>
<Button aria-label="10 уведомлений">Уведомления</Button>
</Badge>