InlineLoading — это компонент библиотеки Carbon Components Svelte, предназначенный для отображения процесса загрузки или выполнения операции прямо в месте интерфейса, где пользователь ожидает результат. Он особенно полезен для подтверждения действий, таких как сохранение данных, отправка форм или обновление отдельных частей страницы, без использования глобальных спиннеров или модальных окон.
Компонент InlineLoading имеет три ключевых состояния:
Простейший пример использования в Svelte выглядит так:
<script>
import { InlineLoading } from 'carbon-components-svelte';
import { onMount } from 'svelte';
let loadingState = 'inactive'; // inactive | active | finished
let statusText = 'Сохранение...';
function startLoading() {
loadingState = 'active';
setTimeout(() => {
loadingState = 'finished';
statusText = 'Сохранено';
}, 2000);
}
</script>
<button on:click={startLoading}>Сохранить</button>
<InlineLoading {loadingState} {statusText} />
Пояснения:
loadingState управляет состоянием компонента.statusText отображает текст текущей операции.setTimeout имитирует асинхронный процесс,
который можно заменить вызовом API.Компонент реагирует на изменение свойства
loadingState:
inactive — скрыт или отображает только текст без
индикатора.active — появляется анимированный спиннер с текстом
операции.finished — заменяет спиннер на иконку подтверждения и
меняет текст на успешное завершение.Можно динамически менять текст в зависимости от состояния:
<InlineLoading
loadingState={loadingState}
statusText={loadingState === 'active' ? 'Обработка...' : 'Готово!'}
/>
InlineLoading поддерживает следующие свойства:
size — размер индикатора (sm,
md, lg).successDelay — задержка перед переходом из состояния
finished в inactive (мс).description — дополнительный текст под основной строкой
статуса.Пример:
<InlineLoading
loadingState={loadingState}
statusText="Загрузка данных..."
description="Пожалуйста, подождите"
size="md"
successDelay={1500}
/>
successDelay полезен для плавного отображения успеха,
чтобы пользователь успел заметить результат.
Компонент поддерживает события для интеграции с логикой приложения:
on:stateChange — вызывается при изменении
состояния.Пример использования:
<InlineLoading
bind:loadingState
statusText="Сохраняем..."
on:stateChange={(e) => console.log('Новое состояние:', e.detail)}
/>
Это позволяет запускать дополнительные действия после завершения загрузки, например обновление интерфейса или уведомление пользователя.
InlineLoading идеально подходит для работы с асинхронными функциями:
<script>
async function saveData() {
loadingState = 'active';
try {
await fetch('/api/save', { method: 'POST', body: JSON.stringify({ data: 123 }) });
loadingState = 'finished';
} catch (error) {
loadingState = 'inactive';
console.error('Ошибка сохранения:', error);
}
}
</script>
<button on:click={saveData}>Сохранить данные</button>
<InlineLoading {loadingState} statusText="Сохраняем..." />
В этом примере компонент управляется асинхронной функцией, что позволяет корректно отображать процесс и результат операции.
Carbon Components Svelte использует CSS-переменные и классы для изменения внешнего вида:
.bx--inline-loading__animation — кастомизация
спиннера..bx--inline-loading__text — стили текста статуса.Можно переопределять цвета и размеры через глобальные CSS-переменные:
:root {
--inline-loading-color: #0f62fe;
--inline-loading-success-color: #24a148;
}
Это позволяет интегрировать компонент в любой дизайн-систему без потери визуальной идентичности.
InlineLoading часто используют совместно с Button, TextInput и Form:
<TextInput labelText="Имя пользователя" bind:value={username} />
<Button on:click={submitForm}>Отправить</Button>
<InlineLoading {loadingState} statusText="Отправка..." />
Такое сочетание позволяет создавать компактные, но информативные интерфейсы, где пользователь сразу видит прогресс выполнения операций без модальных окон и отвлекающих элементов.
successDelay для удобного визуального
отклика после завершения операции.InlineLoading в Carbon Components Svelte сочетает простоту использования, гибкость настройки и нативную интеграцию с реактивной моделью Svelte, что делает его идеальным инструментом для отображения локальной загрузки и статуса операций.