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" > - @@ -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 +}