diff --git a/apps/desktop/src/components/grid/DataGrid.vue b/apps/desktop/src/components/grid/DataGrid.vue index ddd959f20..bf2a2c997 100644 --- a/apps/desktop/src/components/grid/DataGrid.vue +++ b/apps/desktop/src/components/grid/DataGrid.vue @@ -720,7 +720,9 @@ const allFilterModeOptions: Array<{ value: FilterMode; labelKey: string }> = [ { value: "like", labelKey: "grid.filterBuilderContains" }, { value: "not-like", labelKey: "grid.filterBuilderNotContains" }, { value: "greater-than", labelKey: "grid.filterBuilderGreaterThan" }, + { value: "greater-than-or-equal", labelKey: "grid.filterBuilderGreaterThanOrEqual" }, { value: "less-than", labelKey: "grid.filterBuilderLessThan" }, + { value: "less-than-or-equal", labelKey: "grid.filterBuilderLessThanOrEqual" }, { value: "in", labelKey: "grid.filterBuilderIn" }, { value: "not-in", labelKey: "grid.filterBuilderNotIn" }, { value: "between", labelKey: "grid.filterBuilderBetween" }, @@ -1565,8 +1567,8 @@ watch( [structuredFilterRules, appliedStructuredWhereInput, serverColumnFilters], () => { const columns = filterBuilderColumnOptions.value; - if (columns.length > 0 && structuredFilterRules.value.some((rule) => !columns.includes(rule.columnName))) { - structuredFilterRules.value = structuredFilterRules.value.map((rule) => (columns.includes(rule.columnName) ? rule : { ...rule, columnName: columns[0] ?? "" })); + if (columns.length > 0 && structuredFilterRules.value.some((rule) => rule.columnName && !columns.includes(rule.columnName))) { + structuredFilterRules.value = structuredFilterRules.value.map((rule) => (!rule.columnName || columns.includes(rule.columnName) ? rule : { ...rule, columnName: columns[0] ?? "" })); return; } persistStructuredFilterState(); diff --git a/apps/desktop/src/components/grid/DataGridFilterBuilder.vue b/apps/desktop/src/components/grid/DataGridFilterBuilder.vue index fc2f8aa6a..bf14dc53c 100644 --- a/apps/desktop/src/components/grid/DataGridFilterBuilder.vue +++ b/apps/desktop/src/components/grid/DataGridFilterBuilder.vue @@ -134,6 +134,13 @@ async function handleColumnSelectOpen(rule: DataGridStructuredFilterRule, open: window.requestAnimationFrame(() => columnSearchInputs.get(rule.id)?.focus()); } +async function openFirstEmptyRuleColumnSearch() { + const rule = props.rules.find((item) => !item.columnName && !item.disabled); + if (rule) await handleColumnSelectOpen(rule, true); +} + +defineExpose({ openFirstEmptyRuleColumnSearch }); + function handleColumnCloseAutoFocus(id: string, event: Event) { if (pendingKeyboardAddFocus.delete(id)) { event.preventDefault(); @@ -263,7 +270,7 @@ function blurValueRule(id: string) {
-
+