FileUploaderDropContainer — это компонент библиотеки Carbon Components Svelte, предназначенный для организации зоны перетаскивания файлов и их загрузки. Он реализует функционал drag-and-drop с визуальными подсказками для пользователя и интеграцию с обработкой выбранных файлов.
accept Определяет допустимые типы
файлов. Принимает строку с MIME-типами или расширениями, разделёнными
запятой. Например:
disabled Логическое свойство,
запрещающее использование компонента. Визуально контейнер становится
неактивным, а события drop игнорируются.
multiple Позволяет загружать
несколько файлов одновременно. Значение по умолчанию —
false. Пример:
labelText Текст подсказки внутри
контейнера. Обычно используется для информирования о действии:
«Перетащите файлы сюда или нажмите для выбора».
helperText Дополнительный текст под
контейнером, который уточняет правила загрузки, например: размер файлов
или допустимые форматы.
size Определяет визуальный размер
контейнера. Поддерживаются значения 'sm', 'md'
и 'lg'. Размер влияет на padding, шрифты и
отступы.
on:drop Срабатывает при отпускании
файлов над контейнером. Передаёт объект события DragEvent,
из которого можно получить
event.dataTransfer.files.
on:add-files Внутреннее событие
компонента, которое вызывается при выборе файлов через диалоговое окно
или drag-and-drop. Пример обработки:
handleFiles(event.detail.files)}
/> on:click Срабатывает при клике на
контейнер и открывает стандартное окно выбора файлов. Можно использовать
для кастомной логики.
Классы CSS
.bx--file__drop-container — основной контейнер..bx--file__drop-container--disabled — стиль для
заблокированного состояния..bx--file__drop-container--drag-over — применяется при
наведении файлов на контейнер.Слот default Позволяет вставлять
кастомный контент вместо стандартного текста. Например, можно добавить
иконку загрузки или более сложный макет:
Перетащите сюда файлы или выберите через диалог
Пример 1: Простая загрузка изображений
handleFiles(event.detail.files)}
/>
{#each images as file}
- {file.name}
{/each}
Пример 2: Множественный выбор с кастомным слотом
Здесь можно выбрать сразу несколько файлов
accept, чтобы
предотвратить загрузку неподдерживаемых форматов.multiple=true) лучше
обрабатывать массив файлов через цикл и добавлять их в состояние
компонента.valid или
invalid.Компонент автоматически управляет классами при наведении файлов
(drag-over) и возвращается в исходное состояние после drop.
Это упрощает визуализацию процесса загрузки. Дополнительно можно
расширять функциональность через события on:drop и
on:add-files для кастомной обработки файлов.