Spinner (вращающийся индикатор)
Базовый вращающийся индикатор, обозначающий выполняющееся состояние. Внутри маски загрузки (LhLoading) отображается именно он.
Базовое использование
Три размера
vue
<script setup lang="ts">
</script>
<template>
<div class="demo-spinner-row">
<LhSpinner size="small" />
<LhSpinner size="medium" />
<LhSpinner size="large" />
</div>
</template>vue
<script>
export default {}
</script>
<template>
<div class="demo-spinner-row">
<LhSpinner size="small" />
<LhSpinner size="medium" />
<LhSpinner size="large" />
</div>
</template>Пользовательский цвет
Цвет
vue
<script setup lang="ts">
</script>
<template>
<div class="demo-spinner-row">
<LhSpinner color="#8f9779" />
<LhSpinner color="#b55442" />
<LhSpinner color="#4a6fa5" />
</div>
</template>vue
<script>
export default {}
</script>
<template>
<div class="demo-spinner-row">
<LhSpinner color="#8f9779" />
<LhSpinner color="#b55442" />
<LhSpinner color="#4a6fa5" />
</div>
</template>API
LhSpinner Props
| Свойство | Описание | Тип | По умолчанию |
|---|---|---|---|
| size | Размер | "small" | "medium" | "large" | "mini" | "x-large" | 'medium' |
| color | Цвет вращения (значение CSS color; если не передано, наследует currentColor) | string | — |
| sx | Свойство sx для быстрой вёрстки | LhSxProps | — |
Доступность
- Индикатор является чисто декоративным:
aria-hidden="true"убирает его из дерева доступности; смысловой нагрузкой выполняющегося состояния должен выступать внешний контейнер (напримерrole="status") - Анимация вращения уважает
prefers-reduced-motionи деградирует до статичного полукольца
Определения типов
Компонент экспортирует следующие структуры TypeScript (автоматически извлечено из исходников packages/components/spinner/src/types.ts и @lh-ui/share/core/*; раскройте каждый пункт, чтобы увидеть полное определение; описания свойств — в таблице Props выше):
LhSpinnerProps
ts
export interface LhSpinnerProps {
/** Размер */
size?: LhSpinnerSize
/** Цвет вращения (значение CSS color; если не передано, наследует currentColor) */
color?: string
/** Свойство sx для быстрой вёрстки */
sx?: LhSxProps
}LhSpinnerSize (из @lh-ui/share/core/spinner)
ts
/** Размер вращающегося индикатора */
export type LhSpinnerSize = (typeof LH_SPINNER_SIZE_CONST)[keyof typeof LH_SPINNER_SIZE_CONST]Константы
Далее приведены публичные константы, используемые компонентом (в столбце «Тип / По умолчанию» таблицы Props можно перейти к одноимённому элементу):
LH_SPINNER_SIZE_CONST (из @lh-ui/share/core/spinner)
ts
export const LH_SPINNER_SIZE_CONST = {
...LH_SIZE_CONST,
} as constLH_SPINNER_SIZE_PX (из @lh-ui/share/core/spinner)
ts
/** Соответствие размера → диаметр в px */
export const LH_SPINNER_SIZE_PX: Record<LhSpinnerSize, number> = {
small: 16,
medium: 24,
large: 32,
mini: 12,
'x-large': 40,
}