FileUploaderButton — это специализированный компонент библиотеки Carbon Components Svelte, предназначенный для создания кнопки загрузки файлов с полным контролем над процессом выбора, валидации и обработки файлов. Он обеспечивает интеграцию с остальными элементами дизайна Carbon и поддерживает расширяемую кастомизацию через пропсы и события.
primary, secondary, danger).event.detail.files содержит массив выбранных файлов.| Пропс | Тип | Описание |
|---|---|---|
accept |
string |
Ограничение по типу файлов, поддерживается синтаксис HTML
|
buttonKind |
string |
Вид кнопки: primary, secondary,
tertiary, danger |
disabled |
boolean |
Блокировка кнопки |
labelText |
string |
Текст, отображаемый на кнопке |
multiple |
boolean |
Разрешает выбор нескольких файлов одновременно |
size |
string |
Размер кнопки: sm, md,
lg |
name |
string |
Имя поля, используемое при отправке формы |
title |
string |
Атрибут title для кнопки |
Компонент поддерживает несколько ключевых событий:
event.detail.files хранится массив объектов
File.Пример обработки нескольких событий:
console.log('Фокус на кнопке')}
on:blur={() => console.log('Фокус потерян')}
/>
Чаще всего FileUploaderButton используется вместе с компонентом FileUploader, чтобы создавать полноценный интерфейс загрузки файлов с визуализацией выбранных файлов и поддержкой удаления:
{#if uploadedFiles.length > 0}
{#each uploadedFiles as file}
- {file.name} ({Math.round(file.size / 1024)} KB)
{/each}
{/if}
bind:files связывает список файлов с локальной
переменной.FileUploaderButton поддерживает проверку:
accept.function validateFile(file) {
const maxSize = 5 * 1024 * 1024; // 5 MB
if (file.size > maxSize) {
alert(`${file.name} слишком большой файл`);
return false;
}
return true;
}
function handleFiles(event) {
const validFiles = Array.from(event.detail.files).filter(validateFile);
uploadedFiles = [...uploadedFiles, ...validFiles];
}
buttonKind.size.