Download File
<sf-download-file> показывает файл, который можно скачать: иконку, имя и
размер. С адресом он становится нативной ссылкой, без адреса — кнопкой, по
которой приложение само готовит файл. Оформление совпадает с обычным
компонентом «Скачать файл».
Пример
Применение
Ссылка на готовый файл
href с адресом файла рисует ссылку. С download браузер скачивает файл под
именем из file-name, а не открывает его. Без download ссылка открывается в
target, по умолчанию _blank, с rel="noopener noreferrer".
file-name — видимое имя файла, по умолчанию File.pdf, поэтому задавайте
его всегда. file-size — размер, как его прочтёт человек: «2,4 МБ».
Если file-size пуст, компонент запрашивает адрес методом HEAD и
показывает размер из заголовка Content-Length в английских единицах;
передавайте размер сами, когда он известен.
Файл, который готовит приложение
Без href компонент рисует кнопку. Нажатие отправляет событие
sf-download-file:click, и приложение собирает файл — отчёт, выгрузку,
архив. Пока файл не готов, показывайте это рядом или переключите элемент в
disabled.
disabled рисует недоступную кнопку без адреса, даже если href задан.
icon меняет иконку перед именем, size — размер по шкале 1/3, 1/2,
1, 2, 3.
Событие sf-download-file:click
Событие отправляется с внутренней ссылки или кнопки и всплывает до
document. Его event.detail:
| Поле | Содержимое |
|---|---|
href |
адрес файла; у кнопки без адреса — пустая строка |
fileName |
имя файла |
download |
true, если задан download |
Недоступный элемент события не отправляет.
document.addEventListener('sf-download-file:click', async (event) => {
if (event.detail.href) return;
const file = await buildReport();
saveFile(file, event.detail.fileName);
});
Доступность
- Доступное имя ссылки или кнопки складывается из имени и размера файла.
aria-labelзаменяет его целиком: если задаёте его, включите в него имя файла, например «Скачать отчёт за квартал, PDF, 2,4 МБ». - Ссылка и кнопка — одна остановка
Tab; ссылка срабатывает поEnter, кнопка — поEnterиSpace. Иконка скрыта от вспомогательных технологий. - Ссылка без
downloadоткрывает новую вкладку. Если это важно, скажите об этом в подписи рядом. - Когда приложение готовит файл, сообщите о готовности или ошибке в области
с
role="status": само нажатие ничего не объявляет.
Справочник API
Раздел собран из манифеста компонента выпуска ui-106d5901f8c3 и обновляется вместе с выпуском. Чтобы исправить описание, исправьте манифест.
Каждому атрибуту соответствует свойство элемента с тем же именем в camelCase: search-placeholder — searchPlaceholder. Свойство атрибута template называется templateName.
| Тег | <sf-download-file> |
| Назначение | Нативная загрузка файла или подготовка файла силами приложения. |
| Контракт | smart.download-file, версия 1.0.0 |
| Поставка | выпуск Framework ui-106d5901f8c3 |
| Жизненный цикл | экспериментальный: API может меняться между выпусками |
| Готовность | описан: манифест и сценарий есть, продуктовой приёмки нет |
| Заготовка до прихода кода | нет: атрибут data-sf-skeleton не пишется; своего скелетона при загрузке данных нет (Заготовка до прихода кода) |
Атрибуты
template—string, по умолчаниюdefault.size—string, по умолчанию1, значения:1/3,1/2,1,2,3. Существующая шкала размеров компонентов от компактного до крупного.file-name—string, по умолчаниюFile.pdf. Видимое имя файла и нативное имя для скачивания по умолчанию.file-size—string, по умолчанию пусто. Известный размер в удобочитаемом виде. Передавайте, если он доступен, чтобы не определять его.icon—string, по умолчаниюdownload. Имя декоративной иконки.href—string, по умолчанию пусто. Реальное место ресурса; в доступном состоянии отрисовывает нативную ссылку (a).download—boolean, по умолчаниюfalse. Применяет к ссылке нативную семантику скачивания.disabled—boolean, по умолчаниюfalse. Отображает отключённую кнопку без действующего адреса перехода.target—string, по умолчанию_blank.aria-label—string, по умолчанию пусто.
Методы
Публичных методов нет.
События
Все события приходят на сам элемент и всплывают. Общие события базового элемента перечислены в главе Жизненный цикл → Этапы.
sf-download-file:click—detail:{ href?: string, fileName?: string, download?: boolean }. Отправляется один раз для доступного нативного назначения или действия, которым управляет приложение, от отрисованного корня .sf-download-file; всплывает до хост-элемента, не с composed: true и не отменяемое.
Доступность
- Доступное имя: рекомендуется.
- Клавиши:
Tab. - Фокус: Сохраняет видимый фокус на активном элементе управления.
Минимальная разметка
<sf-download-file file-name="Report.pdf" file-size="2.4 MB" href="/files/report.pdf" download></sf-download-file>
Источник
simai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/smart/download-filesimai/ui@106d5901f8c3b4f23131ce0e7ede5dbd8abfe4f4:distr/rule/rule.json#name=cl-download-file
См. также
- Buttons — действие без файла.