Вступление #
Для кастомизации поле загрузки можно использовать класс .js-upload по умолчанию и стандартную разметку.
Установка #
Пример разметки и инициализации кастомизированного поля загрузки.
<input
class="js-upload"
type="file"
multiple
accept="image/jpeg, .png, .pdf"
data-upload-options='{
"maxSize": "2097152",
"content": "Загрузите файл в формате .jpg, .png и .pdf, размер файла не более 2МБ."
}'
/>
const options = {
maxSize: '2097152',
preview: true,
previewDocs: '../assets/img/preview-docs.svg',
formats: ['image/jpeg', '.png', '.pdf'],
content: 'Загрузите файл в формате .jpg, .png и .pdf, размер файла не более 2МБ.',
}
BasicUploadFile.init('.my-upload', options)
BasicUploadFile.init(document.querySelector('.my-upload'), options)
BasicUploadFile.init(document.querySelectorAll('.my-upload'), options)
// или
BasicUploadFile.init() // по умолчанию инициaлизирует элементы с классом .js-upload
Конфигурация #
Настройки, заданные с использованием data-атрибутов.
data-upload-options #
В значение указываются параметры для гибкой настройки кастомизированного поля загрузки.
<input
class="js-upload"
type="file"
accept=".jpg, .png, .pdf"
data-upload-options='{
"preview": false,
"maxSize": "2097152",
"content": "Загрузите файл в формате .jpg, .png и .pdf, размер файла не более 2МБ.."
}'
/>
Параметры:
| Название | Тип | Описание |
|---|---|---|
content |
string |
Контент для подписи поля загрузки. |
maxSize |
string |
Максимально допустимый размер файла. Указывается в байтах. |
preview |
boolean |
Отобразить превью загруженных файлов. |
previewDocs |
string |
Изображение для превью документов. |
formats |
object |
Допустимый формат для загрузки файлов. Указывается в виде массива. |
Методы #
getValue() #
Получить значение поля.
BasicUploadFile.getValue('.my-upload') // принимает значение типа Object или String
clear() #
Очистить поле.
BasicUploadFile.clear('.my-upload') // принимает значение типа Object или String
Экземпляр #
У каждого инициализированного элемента есть свой экземпляр.
const myCustomUpload = document.querySelector('.my-upload')
console.log(myCustomUpload.BasicUploadFile) // пример экземпляра
В настоящее время экземпляр поддерживает все методы.
Прослушивание событий #
Можно прослушать события элемента и получить необходимые параметры.
upload:change #
Срабатывает при любом изменении значения, будь то загрузка файлов или очистка поля.
Параметры:
| Название | Тип | Описание |
|---|---|---|
event.detail.el |
object |
Оригинальное поле загрузки(.js-upload). |
event.detail.index |
number |
index поля загрузки. |
event.detail.upload |
object |
Кастомизированное поле загрузки. |
event.detail.value |
object |
Значение поля загрузки. |
document.querySelector('#my-upload').addEventListener(
'upload:change',
function (event) {
console.log(event.detail) // параметры
},
false,
)
upload:completed #
Срабатывает при загрузке файлов.
Параметры:
| Название | Тип | Описание |
|---|---|---|
event.detail.el |
object |
Оригинальное поле загрузки(.js-upload). |
event.detail.index |
number |
index поля загрузки. |
event.detail.upload |
object |
Кастомизированное поле загрузки. |
event.detail.value |
object |
Значение поля загрузки. |
document.querySelector('#my-upload').addEventListener(
'upload:completed',
function (event) {
console.log(event.detail) // параметры
},
false,
)
upload:clear #
Срабатывает при очистке кастомизированного поля загрузки.
Параметры:
| Название | Тип | Описание |
|---|---|---|
event.detail.el |
object |
Оригинальное поле загрузки(.js-upload). |
event.detail.index |
number |
index поля загрузки. |
event.detail.upload |
object |
Кастомизированное поле загрузки. |
event.detail.value |
object |
Значение поля загрузки. |
document.querySelector('#my-upload').addEventListener(
'upload:clear',
function (event) {
console.log(event.detail) // параметры
},
false,
)