UNPKG

1.33 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.upload = upload;
7
8var _dom = require("@testing-library/dom");
9
10var _click = require("./click");
11
12var _blur = require("./blur");
13
14var _focus = require("./focus");
15
16function upload(element, fileOrFiles, init) {
17 if (element.disabled) return;
18 let files;
19 let input = element;
20 (0, _click.click)(element, init);
21
22 if (element.tagName === 'LABEL') {
23 files = element.control.multiple ? fileOrFiles : [fileOrFiles];
24 input = element.control;
25 } else {
26 files = element.multiple ? fileOrFiles : [fileOrFiles];
27 } // blur fires when the file selector pops up
28
29
30 (0, _blur.blur)(element, init); // focus fires when they make their selection
31
32 (0, _focus.focus)(element, init); // the event fired in the browser isn't actually an "input" or "change" event
33 // but a new Event with a type set to "input" and "change"
34 // Kinda odd...
35
36 const inputFiles = {
37 length: files.length,
38 item: index => files[index],
39 ...files
40 };
41 (0, _dom.fireEvent)(input, (0, _dom.createEvent)('input', input, {
42 target: {
43 files: inputFiles
44 },
45 bubbles: true,
46 cancelable: false,
47 composed: true,
48 ...init
49 }));
50
51 _dom.fireEvent.change(input, {
52 target: {
53 files: inputFiles
54 },
55 ...init
56 });
57}
\No newline at end of file