diff --git a/packages/frontend-2/components/automate/viewer/panel/FunctionRunRowObjectResult.vue b/packages/frontend-2/components/automate/viewer/panel/FunctionRunRowObjectResult.vue
index 64f70fe34..3ff97c592 100644
--- a/packages/frontend-2/components/automate/viewer/panel/FunctionRunRowObjectResult.vue
+++ b/packages/frontend-2/components/automate/viewer/panel/FunctionRunRowObjectResult.vue
@@ -54,7 +54,7 @@ const {
}
} = useInjectedViewerState()
-const { isolateObjects, resetFilters, setPropertyFilter, applyPropertyFilter } =
+const { isolateObjects, resetFilters, addActiveFilter, toggleFilterApplied } =
useFilterUtilities()
const { setSelectionFromObjectIds, clearSelection } = useSelectionUtilities()
@@ -154,8 +154,8 @@ const setOrUnsetGradient = () => {
if (!computedPropInfo.value) return
metadataGradientIsSet.value = true
- setPropertyFilter(computedPropInfo.value)
- applyPropertyFilter()
+ const filterId = addActiveFilter(computedPropInfo.value)
+ toggleFilterApplied(filterId)
}
const iconAndColor = computed(() => {
diff --git a/packages/frontend-2/components/viewer/controls/Left.vue b/packages/frontend-2/components/viewer/controls/Left.vue
index b5954f607..6c3883d21 100644
--- a/packages/frontend-2/components/viewer/controls/Left.vue
+++ b/packages/frontend-2/components/viewer/controls/Left.vue
@@ -356,12 +356,12 @@ watch(isSmallerOrEqualSm, (newVal) => {
activePanel.value = newVal ? 'none' : 'models'
})
-// Auto-open filters panel when a new filter is applied from elsewhere
+// Auto-open filters panel when property filters are added
watch(
- () => filters.propertyFilter.isApplied.value && filters.propertyFilter.filter.value,
- (newFilterApplied, oldFilterApplied) => {
- // Only trigger if we're going from no filter to having a filter (not when changing filters or removing)
- if (newFilterApplied && !oldFilterApplied) {
+ () => filters.propertyFilters.value.length,
+ (newCount, oldCount) => {
+ // Only trigger if we're adding filters
+ if (newCount > 0 && (oldCount === 0 || newCount > oldCount)) {
activePanel.value = 'filters'
}
}
diff --git a/packages/frontend-2/components/viewer/filters/NumericFilter.vue b/packages/frontend-2/components/viewer/filters/NumericFilter.vue
index 44852867a..a951f1ca0 100644
--- a/packages/frontend-2/components/viewer/filters/NumericFilter.vue
+++ b/packages/frontend-2/components/viewer/filters/NumericFilter.vue
@@ -55,7 +55,7 @@
import type { NumericPropertyInfo } from '@speckle/viewer'
import { useFilterUtilities } from '~~/lib/viewer/composables/ui'
-const { setPropertyFilter } = useFilterUtilities()
+const { addActiveFilter, toggleFilterApplied } = useFilterUtilities()
const props = defineProps<{
filter: NumericPropertyInfo
@@ -77,6 +77,9 @@ const setFilterPass = () => {
const max = Math.max(passMin.value, passMax.value)
propInfo.passMin = min
propInfo.passMax = max
- setPropertyFilter(propInfo)
+
+ // Add filter using new multi-filter system
+ const filterId = addActiveFilter(propInfo)
+ toggleFilterApplied(filterId)
}
diff --git a/packages/frontend-2/components/viewer/filters/Panel.vue b/packages/frontend-2/components/viewer/filters/Panel.vue
index 234bc75d6..f8cc0f879 100644
--- a/packages/frontend-2/components/viewer/filters/Panel.vue
+++ b/packages/frontend-2/components/viewer/filters/Panel.vue
@@ -8,7 +8,7 @@
size="sm"
color="subtle"
tabindex="-1"
- @click="removePropertyFilter(), refreshColorsIfSetOrActiveFilterIsNumeric()"
+ @click="resetFilters()"
>
Reset
@@ -26,7 +26,7 @@