diff --git a/frontend/src/components/Filter.vue b/frontend/src/components/Filter.vue
index ac1c01f0..bb45fb5b 100644
--- a/frontend/src/components/Filter.vue
+++ b/frontend/src/components/Filter.vue
@@ -126,7 +126,7 @@
setfilter(e)"
:placeholder="__('First name')"
>
@@ -217,6 +217,19 @@ const filters = computed(() => {
return convertFilters(filterableFields.data, allFilters)
})
+const availableFilters = computed(() => {
+ if (!filterableFields.data) return []
+
+ const selectedFieldNames = new Set()
+ for (const filter of filters.value) {
+ selectedFieldNames.add(filter.fieldname)
+ }
+
+ return filterableFields.data.filter(
+ (field) => !selectedFieldNames.has(field.fieldname),
+ )
+})
+
function removeCommonFilters(commonFilters, allFilters) {
for (const key in commonFilters) {
if (commonFilters.hasOwnProperty(key) && allFilters.hasOwnProperty(key)) {
diff --git a/frontend/src/components/ViewControls.vue b/frontend/src/components/ViewControls.vue
index f8730f29..beaf8b99 100644
--- a/frontend/src/components/ViewControls.vue
+++ b/frontend/src/components/ViewControls.vue
@@ -752,6 +752,7 @@ const quickFilterOptions = computed(() => {
let fields = getFields()
if (!fields) return []
+ let existingQuickFilters = newQuickFilters.value.map((f) => f.fieldname)
let restrictedFieldtypes = [
'Tab Break',
'Section Break',
@@ -766,6 +767,7 @@ const quickFilterOptions = computed(() => {
]
let options = fields
.filter((f) => f.label && !restrictedFieldtypes.includes(f.fieldtype))
+ .filter((f) => !existingQuickFilters.includes(f.fieldname))
.map((field) => ({
label: field.label,
value: field.fieldname,