mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-15 02:11:05 +00:00
fix(file-uploader): FileUploader
change detail should be File[]
instead of FileList
(#1117)
Fixes #1112
This commit is contained in:
parent
dce0309bab
commit
7602731b0b
7 changed files with 38 additions and 18 deletions
|
@ -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`
|
||||||
|
@ -1318,11 +1318,11 @@ None.
|
||||||
|
|
||||||
### Events
|
### Events
|
||||||
|
|
||||||
| Event name | Type | Detail |
|
| Event name | Type | Detail |
|
||||||
| :--------- | :-------- | :----- |
|
| :--------- | :--------- | :------------------ |
|
||||||
| keydown | forwarded | -- |
|
| change | dispatched | <code>File[]</code> |
|
||||||
| change | forwarded | -- |
|
| keydown | forwarded | -- |
|
||||||
| click | forwarded | -- |
|
| click | forwarded | -- |
|
||||||
|
|
||||||
## `FileUploaderDropContainer`
|
## `FileUploaderDropContainer`
|
||||||
|
|
||||||
|
|
|
@ -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": [],
|
||||||
|
|
|
@ -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}">
|
||||||
|
|
|
@ -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 }) => {
|
||||||
|
|
|
@ -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" />
|
||||||
|
|
2
types/FileUploader/FileUploader.svelte.d.ts
vendored
2
types/FileUploader/FileUploader.svelte.d.ts
vendored
|
@ -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"];
|
||||||
},
|
},
|
||||||
{}
|
{}
|
||||||
|
|
|
@ -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: {} }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue