Описание компонента File Upload
Назначение компонента
Компонент File Upload (загрузка файлов) предоставляет интуитивно понятный интерфейс для выбора и загрузки файлов. Основные функции:
- Загрузка файлов по клику
- Отображение информации о выбранном файле
- Индикатор прогресса загрузки
- Возможность удаления выбранного файла
Структура компонента
Компонент состоит из:
- Контейнера (
.sf-file-upload-container) - Стандартного поля загрузки (
.sf-file-upload-standart) - Блока отображения выбранного файла (
.sf-file-upload-show) - Элементов управления (иконки, кнопка удаления)
- Индикатора прогресса (
.sf-progress-bar-container)
Классы и их назначение
| Класс | Назначение |
|---|---|
.sf-file-upload-container |
Основной контейнер компонента |
.sf-file-upload-standart |
Стандартное поле для выбора файлов |
.sf-file-upload-show |
Блок отображения выбранного файла |
.sf-file-upload--icon |
Иконка загрузки |
.sf-file-upload--icon-delete |
Класс блока удаления файла |
.sf-file-upload--file-name |
Поле для отображения имени файла |
.sf-file-upload--file-size |
Поле для отображения размера файла |
.sf-file-upload-link--blue |
Стилизованная ссылка для загрузки |
.sf-progress-bar-container |
Контейнер индикатора прогресса |
.sf-progress-bar |
Сам индикатор прогресса |
Состояния компонента
1. Исходное состояние
- Отображается поле для выбора файлов
- Блок
.sf-file-upload-showскрыт
2. После выбора файла
- Основное поле скрывается
- Показывается блок
.sf-file-upload-showс информацией о файле - Отображается индикатор прогресса
Таблица CSS-переменных
| Переменная | Описание |
|---|---|
--sf-outline |
Цвет границы контейнера |
--sf-radius-1, --sf-radius-3 |
Радиусы скругления элементов |
--sf-on-surface-variant |
Цвет текста |
--sf-primary |
Основной цвет (для иконок и ссылок) |
--sf-surface-2 |
Фон иконки загрузки |
--sf-space-1, --sf-space-3 |
Отступы |
--sf-text--size-3 |
Размер текста |
--sf-text--height-1/2 |
Высота строки |
--sf-d0 |
Размер иконки |
<div class="sf-file-upload-container">
<label class="sf-file-upload-standart">
<input type="file" name="example">
<div class="sf-file-upload--icon">
<i class="sf-icon">cloud_upload</i>
</div>
<span>
<span class="sf-file-upload-link--blue">Click to upload</span> or drag and drop
</span>
<span>
SVG, PNG, JPG or GIF (max. 800x400px)
</span>
</label>
<div class="sf-file-upload-show">
<div class="sf-file-upload-show-icon-block">
<div class="sf-file-upload--icon">
<i class="sf-icon">cloud_upload</i>
</div>
</div>
<div class="sf-file-upload-show-content-block">
<div class="sf-file-upload-show-content-block-main">
<div class="sf-file-upload-show-content-block-main--name">
<span class="sf-file-upload--file-name"></span>
<span class="sf-file-upload--file-size"></span>
</div>
<div class="sf-file-upload--icon-delete">
<i class="sf-icon">delete</i>
</div>
</div>
<div class="sf-progress-bar-container">
<div class="sf-progress-bar" style="--width: 0"></div>
<span class="sf-progress-bar-percent">50%</span>
</div>
</div>
</div>
</div>