mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-15 10:21:05 +00:00
fix(file-uploader): correctly fire add/remove events (#1121)
Fixes #1119
This commit is contained in:
parent
25d28a9c4d
commit
6a13ca1c0d
1 changed files with 18 additions and 5 deletions
|
@ -61,15 +61,28 @@
|
|||
|
||||
const dispatch = createEventDispatcher();
|
||||
|
||||
$: prevFiles = [];
|
||||
let prevFiles = [];
|
||||
|
||||
/** @type {(file: File) => string} */
|
||||
const getFileId = (file) => file.lastModified + file.name;
|
||||
|
||||
afterUpdate(() => {
|
||||
if (files.length > prevFiles.length) {
|
||||
dispatch("add", files);
|
||||
} else {
|
||||
const fileIds = files.map(getFileId);
|
||||
const prevFileIds = prevFiles.map(getFileId);
|
||||
const addedIds = fileIds.filter((_) => !prevFileIds.includes(_));
|
||||
const removedIds = prevFileIds.filter((_) => !fileIds.includes(_));
|
||||
|
||||
if (addedIds.length > 0) {
|
||||
dispatch(
|
||||
"add",
|
||||
addedIds.map((id) => files.find((file) => id === getFileId(file)))
|
||||
);
|
||||
}
|
||||
|
||||
if (removedIds.length > 0) {
|
||||
dispatch(
|
||||
"remove",
|
||||
prevFiles.filter((_) => !files.includes(_))
|
||||
removedIds.map((id) => prevFiles.find((file) => id === getFileId(file)))
|
||||
);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue