diff --git a/apps/www/src/examples/big-data/components/DataTableFacetedFilter.vue b/apps/www/src/examples/big-data/components/DataTableFacetedFilter.vue index 337a6caa..fc825ffb 100644 --- a/apps/www/src/examples/big-data/components/DataTableFacetedFilter.vue +++ b/apps/www/src/examples/big-data/components/DataTableFacetedFilter.vue @@ -2,7 +2,8 @@ import type { Column } from '@tanstack/vue-table' import type { Component } from 'vue' import { computed } from 'vue' -import { type Task } from '../data/schema' +import { useVirtualList } from '@vueuse/core' +import type { Task } from '../data/schema' import PlusCircledIcon from '~icons/radix-icons/plus-circled' import CheckIcon from '~icons/radix-icons/check' @@ -30,8 +31,16 @@ interface DataTableFacetedFilter { const props = defineProps() +function repeat(array: T[], times: number) { + return Array.from({ length: times }, () => array).flat() +} const facets = computed(() => props.column?.getFacetedUniqueValues()) const selectedValues = computed(() => new Set(props.column?.getFilterValue() as string[])) +const options = computed(() => repeat(props.options, 100)) + +const { list, containerProps, wrapperProps } = useVirtualList(options, { + itemHeight: 32, +})