diff --git a/packages/nc-gui/components/smartsheet/toolbar/ColumnFilter.vue b/packages/nc-gui/components/smartsheet/toolbar/ColumnFilter.vue index d4c3a49a39..155782497e 100644 --- a/packages/nc-gui/components/smartsheet/toolbar/ColumnFilter.vue +++ b/packages/nc-gui/components/smartsheet/toolbar/ColumnFilter.vue @@ -355,15 +355,17 @@ watch( }, ) +const visibleFilters = computed(() => filters.value.filter((filter) => filter.status !== 'delete')) + const isLogicalOpChangeAllowed = computed(() => { - return new Set(filters.value.slice(1).map((filter) => filter.logical_op)).size > 1 + return new Set(visibleFilters.value.slice(1).map((filter) => filter.logical_op)).size > 1 }) // when logical operation is updated, update all the siblings with the same logical operation only if it's in locked state const onLogicalOpUpdate = async (filter: Filter, index: number) => { - if (index === 1 && filters.value.slice(2).every((siblingFilter) => siblingFilter.logical_op !== filter.logical_op)) { + if (index === 1 && visibleFilters.value.slice(2).every((siblingFilter) => siblingFilter.logical_op !== filter.logical_op)) { await Promise.all( - filters.value.slice(2).map(async (siblingFilter, i) => { + visibleFilters.value.slice(2).map(async (siblingFilter, i) => { siblingFilter.logical_op = filter.logical_op await saveOrUpdate(siblingFilter, i + 2, false, false, true) }), @@ -403,9 +405,9 @@ const onLogicalOpUpdate = async (filter: Filter, index: number) => { class="min-w-20 capitalize" placeholder="Group op" dropdown-class-name="nc-dropdown-filter-logical-op-group" - :disabled="i > 1 && !isLogicalOpChangeAllowed" + :disabled="visibleFilters.indexOf(filter) > 1 && !isLogicalOpChangeAllowed" @click.stop - @change="saveOrUpdate(filter, i)" + @change="onLogicalOpUpdate(filter, i)" >
@@ -456,7 +458,7 @@ const onLogicalOpUpdate = async (filter: Filter, index: number) => { :dropdown-match-select-width="false" class="h-full !min-w-20 !max-w-20 capitalize" hide-details - :disabled="filter.readOnly || (i > 1 && !isLogicalOpChangeAllowed)" + :disabled="filter.readOnly || (visibleFilters.indexOf(filter) > 1 && !isLogicalOpChangeAllowed)" dropdown-class-name="nc-dropdown-filter-logical-op" @change="onLogicalOpUpdate(filter, i)" @click.stop