fix(file-uploader): FileUploader change detail should be File[] instead of FileList (#1117)

Fixes #1112
This commit is contained in:
metonym 2022-02-21 08:34:03 -08:00 committed by GitHub
commit 7602731b0b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 38 additions and 18 deletions

View file

@ -1285,11 +1285,11 @@ None.
| :--------- | :--------- | :------------------ | | :--------- | :--------- | :------------------ |
| add | dispatched | <code>File[]</code> | | add | dispatched | <code>File[]</code> |
| remove | dispatched | <code>File[]</code> | | remove | dispatched | <code>File[]</code> |
| change | dispatched | <code>File[]</code> |
| click | forwarded | -- | | click | forwarded | -- |
| mouseover | forwarded | -- | | mouseover | forwarded | -- |
| mouseenter | forwarded | -- | | mouseenter | forwarded | -- |
| mouseleave | forwarded | -- | | mouseleave | forwarded | -- |
| change | forwarded | -- |
| keydown | forwarded | -- | | keydown | forwarded | -- |
## `FileUploaderButton` ## `FileUploaderButton`
@ -1319,9 +1319,9 @@ None.
### Events ### Events
| Event name | Type | Detail | | Event name | Type | Detail |
| :--------- | :-------- | :----- | | :--------- | :--------- | :------------------ |
| change | dispatched | <code>File[]</code> |
| keydown | forwarded | -- | | keydown | forwarded | -- |
| change | forwarded | -- |
| click | forwarded | -- | | click | forwarded | -- |
## `FileUploaderDropContainer` ## `FileUploaderDropContainer`

View file

@ -3582,15 +3582,11 @@
"events": [ "events": [
{ "type": "dispatched", "name": "add", "detail": "File[]" }, { "type": "dispatched", "name": "add", "detail": "File[]" },
{ "type": "dispatched", "name": "remove", "detail": "File[]" }, { "type": "dispatched", "name": "remove", "detail": "File[]" },
{ "type": "dispatched", "name": "change", "detail": "File[]" },
{ "type": "forwarded", "name": "click", "element": "div" }, { "type": "forwarded", "name": "click", "element": "div" },
{ "type": "forwarded", "name": "mouseover", "element": "div" }, { "type": "forwarded", "name": "mouseover", "element": "div" },
{ "type": "forwarded", "name": "mouseenter", "element": "div" }, { "type": "forwarded", "name": "mouseenter", "element": "div" },
{ "type": "forwarded", "name": "mouseleave", "element": "div" }, { "type": "forwarded", "name": "mouseleave", "element": "div" },
{
"type": "forwarded",
"name": "change",
"element": "FileUploaderButton"
},
{ "type": "forwarded", "name": "keydown", "element": "Filename" } { "type": "forwarded", "name": "keydown", "element": "Filename" }
], ],
"typedefs": [], "typedefs": [],
@ -3731,8 +3727,8 @@
} }
], ],
"events": [ "events": [
{ "type": "dispatched", "name": "change", "detail": "File[]" },
{ "type": "forwarded", "name": "keydown", "element": "label" }, { "type": "forwarded", "name": "keydown", "element": "label" },
{ "type": "forwarded", "name": "change", "element": "input" },
{ "type": "forwarded", "name": "click", "element": "input" } { "type": "forwarded", "name": "click", "element": "input" }
], ],
"typedefs": [], "typedefs": [],

View file

@ -2,6 +2,7 @@
/** /**
* @event {File[]} add * @event {File[]} add
* @event {File[]} remove * @event {File[]} remove
* @event {File[]} change
*/ */
/** /**
@ -95,8 +96,8 @@
multiple="{multiple}" multiple="{multiple}"
kind="{kind}" kind="{kind}"
on:change on:change
on:change="{({ target }) => { on:change="{(e) => {
files = [...target.files]; files = e.detail;
}}" }}"
/> />
<div class:bx--file-container="{true}"> <div class:bx--file-container="{true}">

View file

@ -1,4 +1,8 @@
<script> <script>
/**
* @event {File[]} change
*/
/** /**
* Specify the accepted file types * Specify the accepted file types
* @type {string[]} * @type {string[]}
@ -37,6 +41,10 @@
/** Obtain a reference to the input HTML element */ /** Obtain a reference to the input HTML element */
export let ref = null; export let ref = null;
import { createEventDispatcher } from "svelte";
const dispatch = createEventDispatcher();
</script> </script>
<label <label
@ -71,13 +79,14 @@
name="{name}" name="{name}"
class:bx--visually-hidden="{true}" class:bx--visually-hidden="{true}"
{...$$restProps} {...$$restProps}
on:change|stopPropagation
on:change|stopPropagation="{({ target }) => { on:change|stopPropagation="{({ target }) => {
const files = target.files; const files = target.files;
const length = files.length; const length = files.length;
if (files && !disableLabelChanges) { if (files && !disableLabelChanges) {
labelText = length > 1 ? `${length} files` : files[0].name; labelText = length > 1 ? `${length} files` : files[0].name;
} }
dispatch('change', [...files]);
}}" }}"
on:click on:click
on:click="{({ target }) => { on:click="{({ target }) => {

View file

@ -8,7 +8,12 @@
} from "../types"; } from "../types";
</script> </script>
<FileUploaderButton labelText="Add files" /> <FileUploaderButton
labelText="Add files"
on:change="{(e) => {
console.log(e.detail); // File[]
}}"
/>
<FileUploader <FileUploader
multiple multiple
@ -17,6 +22,15 @@
labelDescription="Only JPEG files are accepted." labelDescription="Only JPEG files are accepted."
accept="{['.jpg', '.jpeg']}" accept="{['.jpg', '.jpeg']}"
status="complete" status="complete"
on:add="{(e) => {
console.log(e.detail); // File[]
}}"
on:remove="{(e) => {
console.log(e.detail); // File[]
}}"
on:change="{(e) => {
console.log(e.detail); // File[]
}}"
/> />
<FileUploaderItem name="README.md" status="uploading" /> <FileUploaderItem name="README.md" status="uploading" />

View file

@ -69,11 +69,11 @@ export default class FileUploader extends SvelteComponentTyped<
{ {
add: CustomEvent<File[]>; add: CustomEvent<File[]>;
remove: CustomEvent<File[]>; remove: CustomEvent<File[]>;
change: CustomEvent<File[]>;
click: WindowEventMap["click"]; click: WindowEventMap["click"];
mouseover: WindowEventMap["mouseover"]; mouseover: WindowEventMap["mouseover"];
mouseenter: WindowEventMap["mouseenter"]; mouseenter: WindowEventMap["mouseenter"];
mouseleave: WindowEventMap["mouseleave"]; mouseleave: WindowEventMap["mouseleave"];
change: WindowEventMap["change"];
keydown: WindowEventMap["keydown"]; keydown: WindowEventMap["keydown"];
}, },
{} {}

View file

@ -73,8 +73,8 @@ export interface FileUploaderButtonProps
export default class FileUploaderButton extends SvelteComponentTyped< export default class FileUploaderButton extends SvelteComponentTyped<
FileUploaderButtonProps, FileUploaderButtonProps,
{ {
change: CustomEvent<File[]>;
keydown: WindowEventMap["keydown"]; keydown: WindowEventMap["keydown"];
change: WindowEventMap["change"];
click: WindowEventMap["click"]; click: WindowEventMap["click"];
}, },
{ labelText: {} } { labelText: {} }