Unverified Commit 19c448ad authored by davelopez's avatar davelopez
Browse files

Add containsDataOption function to prevent duplicate entries in FormData

When drag and dropping the same item
parent cc2ee180
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import { useHistoryStore } from "@/stores/historyStore";
import { orList } from "@/utils/strings";

import type { DataOption } from "./types";
import { containsDataOption } from "./types";
import { BATCH, SOURCE, VARIANTS } from "./variants";

import FormSelection from "../FormSelection.vue";
@@ -427,7 +428,10 @@ function handleIncoming(incoming: Record<string, unknown> | Record<string, unkno
                    if (config.multiple) {
                        const newValues = currentValue.value ? currentValue.value.slice() : [];
                        incomingValues.forEach((v) => {
                            // Avoid duplicates
                            if (!containsDataOption(newValues, v)) {
                                newValues.push(v);
                            }
                        });
                        currentValue.value = newValues;
                    } else {
+4 −0
Original line number Diff line number Diff line
@@ -17,3 +17,7 @@ export function isDataOption(item: object): item is DataOption {
export function itemUniqueKey(item: DataOption): string {
    return `${item.src}-${item.id}`;
}

export function containsDataOption(items: DataOption[], item: DataOption): boolean {
    return items.some((i) => itemUniqueKey(i) === itemUniqueKey(item));
}