Вступление #

Для кастомизации поле загрузки можно использовать класс .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,
)