11<template >
22 <div class =" flex items-center justify-start my-3 text-sm" >
3- <div class =" " >
3+ <div class =" flex items-center " >
44 <svg
55 xmlns =" http://www.w3.org/2000/svg"
66 class =" h-5 w-5 text-gray-300"
1313 clip-rule =" evenodd"
1414 />
1515 </svg >
16+ <span class =" text-gray-400 ml-1" >{{ numFilters }} active <span v-text =" numFilters === 1 ? 'filter' : 'filters'" ></span >:</span >
1617 </div >
1718
1819 <button
19- v-for =" (filter) in filters.filter((filter) => filter.value) "
20+ v-for =" (filter) in activeFilters "
2021 :key =" filter.label"
2122 class =" block group ml-3 flex items-center justify-between px-2 py-1 rounded bg-gray-100"
23+ :class =" `hover:${activeClasses.text}`"
2224 @click =" onFilterChange(filter.key, null)"
2325 >
24- <span class =" capitalize text-gray-500" >{{ filter.label.replace('_', ' ') }}</span >:
25- <span class =" ml-1 group-hover:line-through" >{{ filter.options[filter.value] }}</span >
26+ <span
27+ class =" capitalize text-gray-500"
28+ :class =" `group-hover:${activeClasses.text}`"
29+ >
30+ {{ filter.label.replace('_', ' ') }}
31+ </span >:<span class =" ml-1" >{{ filter.options[filter.value] }}</span >
2632
2733 <svg
2834 :class =" `group-hover:${activeClasses.text}`"
4248</template >
4349
4450<script setup>
45- import { inject } from " vue" ;
51+ import { computed , inject } from " vue" ;
4652
47- defineProps ({
53+ const props = defineProps ({
4854 filters: {
4955 type: Object ,
5056 required: true ,
@@ -58,4 +64,8 @@ defineProps({
5864
5965const activeClasses = inject (" activeClasses" );
6066
67+ const activeFilters = computed (() => props .filters .filter ((filter ) => filter .value !== null ));
68+
69+ const numFilters = computed (() => activeFilters .value .length );
70+
6171 </script >
0 commit comments