diff --git a/web/src/components/ui/DataTable.vue b/web/src/components/ui/DataTable.vue
index 81fa5be..4f5c948 100644
--- a/web/src/components/ui/DataTable.vue
+++ b/web/src/components/ui/DataTable.vue
@@ -1,5 +1,9 @@
@@ -115,13 +133,13 @@ function clearFilters() {
{{ displayed.length }} items
-
-
@@ -203,12 +222,13 @@ function clearFilters() {
:key="`filter-${col.key}`"
class="px-2 pb-2 pt-0"
>
- { filters[col.key] = v }"
@click.stop
/>
@@ -239,8 +259,12 @@ function clearFilters() {
- |
- No items found
+ |
+
|
diff --git a/web/src/composables/useDebounce.ts b/web/src/composables/useDebounce.ts
new file mode 100644
index 0000000..d5c33c4
--- /dev/null
+++ b/web/src/composables/useDebounce.ts
@@ -0,0 +1,16 @@
+import { ref, watch } from 'vue'
+import type { Ref } from 'vue'
+
+export function useDebouncedRef(source: Ref, ms: number): Ref {
+ const debounced = ref(source.value) as Ref
+ let timeout: ReturnType
+
+ watch(source, (val) => {
+ clearTimeout(timeout)
+ timeout = setTimeout(() => {
+ debounced.value = val
+ }, ms)
+ })
+
+ return debounced
+}