From d1d654ebac2d51e3841675faeb56480e440f622f Mon Sep 17 00:00:00 2001
From: Wolfgang Müller
Date: Tue, 5 Mar 2024 18:08:09 +0100
Subject: Initial commit

---
 frontend/src/lib/selection/Selectable.svelte | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
 create mode 100644 frontend/src/lib/selection/Selectable.svelte

(limited to 'frontend/src/lib/selection/Selectable.svelte')

diff --git a/frontend/src/lib/selection/Selectable.svelte b/frontend/src/lib/selection/Selectable.svelte
new file mode 100644
index 0000000..48b6ac7
--- /dev/null
+++ b/frontend/src/lib/selection/Selectable.svelte
@@ -0,0 +1,24 @@
+<script lang="ts">
+	import { getSelectionContext } from '$lib/Selection';
+
+	export let id: number;
+	export let index: number;
+
+	export let edit: ((id: number) => void) | undefined = undefined;
+
+	const selection = getSelectionContext();
+
+	$: selected = $selection.contains(id);
+
+	const handle = (event: MouseEvent) => {
+		if ($selection.active) {
+			$selection = $selection.update(index, event.shiftKey);
+			event.preventDefault();
+		} else if (edit) {
+			edit(id);
+			event.preventDefault();
+		}
+	};
+</script>
+
+<slot {handle} {selected} />
-- 
cgit v1.2.3-2-gb3c3

