react-drop-zone
Version:
Simple & elegant dropzone component
33 lines (30 loc) • 1.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = openFile;
/*
* open-file.js
*/
function openFile() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return new Promise(function (resolve, reject) {
var input = document.createElement('input');
if (options.multiple) input.setAttribute('multiple', '');
if (options.accept) input.setAttribute('accept', options.accept);
input.setAttribute('type', 'file');
input.style.display = 'none';
input.addEventListener('change', function (ev) {
if (input.files.length) {
if (options.multiple) resolve(input.files);else resolve(input.files[0]);
} else {
reject(ev);
}
input.remove();
});
document.body.appendChild(input);
var event = document.createEvent('MouseEvent');
event.initMouseEvent('click', false, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
input.dispatchEvent(event);
});
}