FileUploaderItem — это компонент библиотеки Carbon
Components Svelte, предназначенный для отображения отдельных элементов в
списке загружаемых файлов. Он используется совместно с
FileUploader, обеспечивая визуальное представление каждого
файла, который пользователь выбрал для загрузки. Компонент предоставляет
возможность отображать имя файла, его размер, статус загрузки и действия
для удаления или отмены загрузки.
Компонент FileUploaderItem обладает набором свойств,
позволяющих гибко управлять отображением и поведением элемента:
name (string,
обязательное) — имя файла, которое будет отображаться в
интерфейсе.
size (number,
необязательное) — размер файла в байтах. Для удобства отображения
часто конвертируется в килобайты или мегабайты.
status (string,
необязательное) — текущий статус файла. Возможные значения:
"edit" — файл готов к загрузке, пользователь может его
удалить."uploading" — файл загружается, отображается индикатор
прогресса."complete" — загрузка файла завершена успешно."error" — произошла ошибка при загрузке.invalid (boolean,
необязательное) — указывает, что файл не прошёл валидацию
(например, превышен размер или неподдерживаемый формат).
errorSubject (string,
необязательное) — заголовок ошибки, отображаемый при
invalid=true.
errorBody (string,
необязательное) — подробное описание ошибки.
iconDescription (string,
необязательное) — текстовое описание иконки, используемой для
действий, например, для кнопки удаления файла.
Пример использования основных свойств:
<FileUploaderItem
name="report.pdf"
size={1048576}
status="uploading"
iconDescription="Удалить файл"
/>
Компонент поддерживает несколько событий, которые позволяют отслеживать действия пользователя и изменения состояния файла:
on:click — срабатывает при клике на
элемент, можно использовать для выбора или открытия файла.on:delete — вызывается при нажатии на
кнопку удаления. В обработчике можно удалить файл из списка.on:error — срабатывает, когда файл
становится недопустимым. Позволяет отобразить уведомление или логировать
ошибку.Пример обработки событий:
<FileUploaderItem
name="image.png"
on:delete={() => removeFile('image.png')}
on:error={(e) => console.error('Ошибка загрузки:', e.detail)}
/>
Для визуализации состояния загрузки используется комбинация свойства
status и встроенного индикатора прогресса:
uploading — отображает анимацию
загрузки и индикатор прогресса.complete — показывает галочку или
соответствующую иконку успешной загрузки.error / invalid —
активирует визуальную подсветку ошибки и отображает сообщение
errorSubject и errorBody.Пример отображения индикатора прогресса:
<FileUploaderItem
name="video.mp4"
size={52428800}
status="uploading"
/>
Для динамического изменения прогресса можно использовать реактивные переменные Svelte:
<script>
let progress = 0;
const interval = setInterval(() => {
if (progress < 100) progress += 10;
}, 500);
</script>
<FileUploaderItem
name="presentation.pptx"
size={10485760}
status="uploading"
/>
FileUploaderItem тесно интегрирован с системой валидации
FileUploader. Свойство invalid позволяет
пометить файл как недопустимый, а errorSubject и
errorBody дают возможность информировать пользователя о
проблеме:
<FileUploaderItem
name="large_file.zip"
size={1073741824}
invalid={true}
errorSubject="Файл слишком большой"
errorBody="Максимальный размер файла — 100 МБ"
/>
Элементы с invalid=true автоматически получают
визуальную подсветку ошибки и кнопку для удаления.
Пример использования слота для дополнительного контента:
<FileUploaderItem name="document.docx" status="complete">
<div slot="footer">Загружено 1 из 1</div>
</FileUploaderItem>
name, чтобы
корректно обрабатывать удаление и события.status для отображения состояния загрузки
вместо ручного управления классами, это снижает количество ошибок.#each Svelte, создавая FileUploaderItem
динамически.Пример динамического списка:
<script>
let files = [
{ name: "file1.txt", size: 1024, status: "complete" },
{ name: "file2.jpg", size: 2048000, status: "uploading" }
];
function removeFile(fileName) {
files = files.filter(f => f.name !== fileName);
}
</script>
{#each files as file (file.name)}
<FileUploaderItem
name={file.name}
size={file.size}
status={file.status}
on:delete={() => removeFile(file.name)}
/>
{/each}
FileUploaderItem является ключевым инструментом при
работе с загрузкой файлов в Carbon Components Svelte, обеспечивая
визуальную информативность и управление файлами на клиентской стороне.
Его гибкость позволяет создавать как простые, так и комплексные
интерфейсы загрузки, полностью интегрированные с остальной библиотекой
компонентов.