diff --git a/apps/desktop/src/components/editor/EditorSettingsDialog.vue b/apps/desktop/src/components/editor/EditorSettingsDialog.vue index 24264328ac..083d3cabd1 100644 --- a/apps/desktop/src/components/editor/EditorSettingsDialog.vue +++ b/apps/desktop/src/components/editor/EditorSettingsDialog.vue @@ -452,6 +452,7 @@ const editShowIndexIndicatorsInHeader = ref(settingsStore.editorSettings.showInd const editCompactColumnHeaderActions = ref(settingsStore.editorSettings.compactColumnHeaderActions); const editDataGridQuickEntry = ref(settingsStore.editorSettings.dataGridQuickEntry); const editDataGridFilterEditorView = ref(settingsStore.editorSettings.dataGridFilterEditorView); +const editDataGridAutoHideFilterBuilder = ref(settingsStore.editorSettings.dataGridAutoHideFilterBuilder); const dataGridFilterViewPreviewExpanded = ref(true); const editDataGridTextFilterPanelHeight = ref(settingsStore.editorSettings.dataGridTextFilterPanelHeight); const editMultiStatementDefaultView = ref(settingsStore.editorSettings.multiStatementDefaultView); @@ -663,6 +664,7 @@ function currentEditorSettingsDraft(): EditorSettingsDraft { compactColumnHeaderActions: editCompactColumnHeaderActions.value, dataGridQuickEntry: editDataGridQuickEntry.value, dataGridFilterEditorView: editDataGridFilterEditorView.value, + dataGridAutoHideFilterBuilder: editDataGridAutoHideFilterBuilder.value, dataGridTextFilterPanelHeight: editDataGridTextFilterPanelHeight.value, multiStatementDefaultView: editMultiStatementDefaultView.value, dataGridAutoTransposeSingleRow: editDataGridAutoTransposeSingleRow.value, @@ -1067,6 +1069,7 @@ function syncEditorSettingsDraftFromStore() { editCompactColumnHeaderActions.value = settingsStore.editorSettings.compactColumnHeaderActions; editDataGridQuickEntry.value = settingsStore.editorSettings.dataGridQuickEntry; editDataGridFilterEditorView.value = settingsStore.editorSettings.dataGridFilterEditorView; + editDataGridAutoHideFilterBuilder.value = settingsStore.editorSettings.dataGridAutoHideFilterBuilder; editDataGridTextFilterPanelHeight.value = settingsStore.editorSettings.dataGridTextFilterPanelHeight; editMultiStatementDefaultView.value = settingsStore.editorSettings.multiStatementDefaultView; editDataGridAutoTransposeSingleRow.value = settingsStore.editorSettings.dataGridAutoTransposeSingleRow; @@ -1391,6 +1394,7 @@ function resetDefaultsForTab(tab: SettingsCategory) { editCompactColumnHeaderActions.value = DEFAULT_EDITOR_SETTINGS.compactColumnHeaderActions; editDataGridQuickEntry.value = DEFAULT_EDITOR_SETTINGS.dataGridQuickEntry; editDataGridFilterEditorView.value = DEFAULT_EDITOR_SETTINGS.dataGridFilterEditorView; + editDataGridAutoHideFilterBuilder.value = DEFAULT_EDITOR_SETTINGS.dataGridAutoHideFilterBuilder; editDataGridTextFilterPanelHeight.value = DEFAULT_EDITOR_SETTINGS.dataGridTextFilterPanelHeight; editMultiStatementDefaultView.value = DEFAULT_EDITOR_SETTINGS.multiStatementDefaultView; editDataGridAutoTransposeSingleRow.value = DEFAULT_EDITOR_SETTINGS.dataGridAutoTransposeSingleRow; @@ -1477,6 +1481,7 @@ function resetAllDefaults() { editCompactColumnHeaderActions.value = DEFAULT_EDITOR_SETTINGS.compactColumnHeaderActions; editDataGridQuickEntry.value = DEFAULT_EDITOR_SETTINGS.dataGridQuickEntry; editDataGridFilterEditorView.value = DEFAULT_EDITOR_SETTINGS.dataGridFilterEditorView; + editDataGridAutoHideFilterBuilder.value = DEFAULT_EDITOR_SETTINGS.dataGridAutoHideFilterBuilder; editDataGridTextFilterPanelHeight.value = DEFAULT_EDITOR_SETTINGS.dataGridTextFilterPanelHeight; editMultiStatementDefaultView.value = DEFAULT_EDITOR_SETTINGS.multiStatementDefaultView; editDataGridAutoTransposeSingleRow.value = DEFAULT_EDITOR_SETTINGS.dataGridAutoTransposeSingleRow; @@ -6174,6 +6179,13 @@ onUnmounted(() => { {{ t("grid.filterTextView") }} +
+
+ +

{{ t("settings.dataGridAutoHideFilterBuilderDescription") }}

+
+ +
diff --git a/apps/desktop/src/components/grid/DataGrid.vue b/apps/desktop/src/components/grid/DataGrid.vue index 4fcd550678..bdcb4d4181 100644 --- a/apps/desktop/src/components/grid/DataGrid.vue +++ b/apps/desktop/src/components/grid/DataGrid.vue @@ -2444,7 +2444,7 @@ function buildGroupedWhere(conditions: string[], rules: StructuredFilterRule[]): async function applyStructuredFilters() { if (!canUseWhereSearch.value) return; appliedStructuredWhereInput.value = await buildStructuredWhereFromRules(structuredFilterRules.value); - filterBuilderOpen.value = false; + if (settingsStore.editorSettings.dataGridAutoHideFilterBuilder) filterBuilderOpen.value = false; await applyWhereFilter(); } diff --git a/apps/desktop/src/i18n/locales/en.ts b/apps/desktop/src/i18n/locales/en.ts index 6205b2d6e1..dd27cc1411 100644 --- a/apps/desktop/src/i18n/locales/en.ts +++ b/apps/desktop/src/i18n/locales/en.ts @@ -6692,6 +6692,8 @@ export default { dataGridDisplay: "Data grid display", dataGridFilterView: "Table filter view", dataGridFilterViewDescription: "Use a filter popover, a fixed conditions panel, or a compact text conditions panel.", + dataGridAutoHideFilterBuilder: "Automatically hide filter editor after applying", + dataGridAutoHideFilterBuilderDescription: "When disabled, the filter editor stays open after applying so you can continue editing.", dataGridFilterViewPreview: "Effect preview", dataGridFilterViewPreviewExpand: "Expand effect preview", dataGridFilterViewPreviewCollapse: "Collapse effect preview", diff --git a/apps/desktop/src/i18n/locales/es.ts b/apps/desktop/src/i18n/locales/es.ts index 87b8dbd9ee..3b6919fac6 100644 --- a/apps/desktop/src/i18n/locales/es.ts +++ b/apps/desktop/src/i18n/locales/es.ts @@ -7085,6 +7085,8 @@ export default withEnglishFallback({ customUiBorder: "Borde", customUiSidebar: "Barra lateral", shortcutConvertNamingStyle: "Cambiar estilo de nomenclatura", + dataGridAutoHideFilterBuilder: "Ocultar automáticamente el editor de condiciones después de aplicar filtros", + dataGridAutoHideFilterBuilderDescription: "Cuando está desactivado, el editor de condiciones permanece después de aplicar filtros para facilitar ajustes adicionales.", }, driverStore: { jreDirRemoveFailed: "No se pudo eliminar el directorio JRE antiguo: {path} (error original: {error})", diff --git a/apps/desktop/src/i18n/locales/it.ts b/apps/desktop/src/i18n/locales/it.ts index d6cc5a5f24..a79471a624 100644 --- a/apps/desktop/src/i18n/locales/it.ts +++ b/apps/desktop/src/i18n/locales/it.ts @@ -7085,6 +7085,8 @@ export default withEnglishFallback({ customUiBorder: "Bordo", customUiSidebar: "Barra laterale", shortcutConvertNamingStyle: "Cambia stile di denominazione", + dataGridAutoHideFilterBuilder: "Nascondi automaticamente l'editor delle condizioni dopo l'applicazione dei filtri", + dataGridAutoHideFilterBuilderDescription: "Se disattivata, dopo l'applicazione dei filtri l'editor delle condizioni rimane per ulteriori modifiche.", }, driverStore: { jreDirRemoveFailed: "Impossibile rimuovere la vecchia directory JRE: {path} (errore originale: {error})", diff --git a/apps/desktop/src/i18n/locales/ja.ts b/apps/desktop/src/i18n/locales/ja.ts index fd765ff3e3..6982ed00a6 100644 --- a/apps/desktop/src/i18n/locales/ja.ts +++ b/apps/desktop/src/i18n/locales/ja.ts @@ -7137,6 +7137,8 @@ export default withEnglishFallback({ customUiBorder: "枠線", customUiSidebar: "サイドバー", shortcutConvertNamingStyle: "命名スタイルの切り替え", + dataGridAutoHideFilterBuilder: "フィルター適用後に条件エディターを自動的に非表示にする", + dataGridAutoHideFilterBuilderDescription: "オフにすると、フィルター適用後も条件エディターが残り、調整を続けやすくなります。", }, driverStore: { jreDirRemoveFailed: "古い JRE ディレクトリを削除できませんでした: {path}(元のエラー: {error})", diff --git a/apps/desktop/src/i18n/locales/ko.ts b/apps/desktop/src/i18n/locales/ko.ts index 1b4101e86c..4bd60372fe 100644 --- a/apps/desktop/src/i18n/locales/ko.ts +++ b/apps/desktop/src/i18n/locales/ko.ts @@ -6801,6 +6801,8 @@ export default withEnglishFallback({ csvQuoteModeAll: "모든 필드", csvQuoteModeNecessary: "필수 필드만", shortcutConvertNamingStyle: "네이밍 스타일 전환", + dataGridAutoHideFilterBuilder: "필터 적용 후 조건 편집기 자동 숨기기", + dataGridAutoHideFilterBuilderDescription: "끄면 필터를 적용한 후에도 조건 편집기가 유지되어 계속 조정하기 편리합니다.", }, driverStore: { jreDirRemoveFailed: "이전 JRE 디렉터리 제거 실패: {path} (원래 오류: {error})", diff --git a/apps/desktop/src/i18n/locales/pt-BR.ts b/apps/desktop/src/i18n/locales/pt-BR.ts index d03e83658a..0353cd00e8 100644 --- a/apps/desktop/src/i18n/locales/pt-BR.ts +++ b/apps/desktop/src/i18n/locales/pt-BR.ts @@ -7087,6 +7087,8 @@ export default withEnglishFallback({ customUiBorder: "Borda", customUiSidebar: "Barra lateral", shortcutConvertNamingStyle: "Alternar estilo de nomenclatura", + dataGridAutoHideFilterBuilder: "Ocultar automaticamente o editor de condições após aplicar o filtro", + dataGridAutoHideFilterBuilderDescription: "Quando desativado, o editor de condições permanece após aplicar o filtro, facilitando novos ajustes.", }, driverStore: { jreDirRemoveFailed: "Não foi possível remover o diretório JRE antigo: {path} (erro original: {error})", diff --git a/apps/desktop/src/i18n/locales/zh-CN.ts b/apps/desktop/src/i18n/locales/zh-CN.ts index cdd7ff9628..427134273d 100644 --- a/apps/desktop/src/i18n/locales/zh-CN.ts +++ b/apps/desktop/src/i18n/locales/zh-CN.ts @@ -6675,6 +6675,8 @@ export default withEnglishFallback({ dataGridDisplay: "数据表格显示", dataGridFilterView: "表格筛选视图", dataGridFilterViewDescription: "选择弹出式快捷筛选、固定条件面板或紧凑文本条件面板。", + dataGridAutoHideFilterBuilder: "应用筛选后自动隐藏条件编辑器", + dataGridAutoHideFilterBuilderDescription: "关闭后,应用筛选后仍保留条件编辑器,方便继续调整。", dataGridFilterViewPreview: "效果预览", dataGridFilterViewPreviewExpand: "展开效果预览", dataGridFilterViewPreviewCollapse: "收起效果预览", diff --git a/apps/desktop/src/i18n/locales/zh-TW.ts b/apps/desktop/src/i18n/locales/zh-TW.ts index 235a99a757..393e2fce5a 100644 --- a/apps/desktop/src/i18n/locales/zh-TW.ts +++ b/apps/desktop/src/i18n/locales/zh-TW.ts @@ -6402,6 +6402,8 @@ export default withEnglishFallback({ customUiBorder: "邊框", customUiSidebar: "側邊欄", shortcutConvertNamingStyle: "切換命名風格", + dataGridAutoHideFilterBuilder: "應用篩選後自動隱藏條件編輯器", + dataGridAutoHideFilterBuilderDescription: "關閉後,應用篩選後仍保留條件編輯器,方便繼續調整。", }, driverStore: { jreDirRemoveFailed: "無法刪除舊的 JRE 目錄:{path}(原始錯誤:{error})", diff --git a/apps/desktop/src/lib/settings/editorSettingsDraft.ts b/apps/desktop/src/lib/settings/editorSettingsDraft.ts index 2f621aebf1..bbb65601a6 100644 --- a/apps/desktop/src/lib/settings/editorSettingsDraft.ts +++ b/apps/desktop/src/lib/settings/editorSettingsDraft.ts @@ -47,6 +47,7 @@ export const EDITOR_SETTINGS_DRAFT_KEYS = [ "compactColumnHeaderActions", "dataGridQuickEntry", "dataGridFilterEditorView", + "dataGridAutoHideFilterBuilder", "dataGridTextFilterPanelHeight", "multiStatementDefaultView", "dataGridAutoTransposeSingleRow", diff --git a/apps/desktop/src/stores/settingsStore.ts b/apps/desktop/src/stores/settingsStore.ts index fff3698f23..87e4f96b7d 100644 --- a/apps/desktop/src/stores/settingsStore.ts +++ b/apps/desktop/src/stores/settingsStore.ts @@ -784,6 +784,7 @@ export interface EditorSettings { columnWidthDensity: ColumnWidthDensity; dataGridQuickEntry: boolean; dataGridFilterEditorView: DataGridFilterEditorView; + dataGridAutoHideFilterBuilder: boolean; dataGridTextFilterPanelHeight: number; localFilterPopoverWidth: number; dataGridRenderMode: DataGridRenderMode; @@ -1014,6 +1015,7 @@ export const DEFAULT_EDITOR_SETTINGS: EditorSettings = { columnWidthDensity: "standard", dataGridQuickEntry: false, dataGridFilterEditorView: "quick", + dataGridAutoHideFilterBuilder: true, dataGridTextFilterPanelHeight: DATA_GRID_TEXT_FILTER_PANEL_HEIGHT_DEFAULT, localFilterPopoverWidth: 360, dataGridRenderMode: "canvas", @@ -1460,6 +1462,7 @@ export function normalizeEditorSettings(settings: Partial, exist columnWidthDensity: normalizeColumnWidthDensity(settings.columnWidthDensity), dataGridQuickEntry: settings.dataGridQuickEntry ?? DEFAULT_EDITOR_SETTINGS.dataGridQuickEntry, dataGridFilterEditorView: normalizeDataGridFilterEditorView(settings.dataGridFilterEditorView), + dataGridAutoHideFilterBuilder: settings.dataGridAutoHideFilterBuilder ?? DEFAULT_EDITOR_SETTINGS.dataGridAutoHideFilterBuilder, dataGridTextFilterPanelHeight: normalizeDataGridTextFilterPanelHeight(settings.dataGridTextFilterPanelHeight), localFilterPopoverWidth: normalizeDrawerWidth(settings.localFilterPopoverWidth, 240, DEFAULT_EDITOR_SETTINGS.localFilterPopoverWidth), dataGridRenderMode: normalizeDataGridRenderMode(settings.dataGridRenderMode), @@ -2177,6 +2180,7 @@ export const useSettingsStore = defineStore("settings", () => { if (partial.columnWidthDensity !== undefined) editorSettings.value.columnWidthDensity = normalizeColumnWidthDensity(partial.columnWidthDensity); if (partial.dataGridQuickEntry !== undefined) editorSettings.value.dataGridQuickEntry = partial.dataGridQuickEntry; if (partial.dataGridFilterEditorView !== undefined) editorSettings.value.dataGridFilterEditorView = normalizeDataGridFilterEditorView(partial.dataGridFilterEditorView); + if (partial.dataGridAutoHideFilterBuilder !== undefined) editorSettings.value.dataGridAutoHideFilterBuilder = partial.dataGridAutoHideFilterBuilder; if (partial.dataGridTextFilterPanelHeight !== undefined) editorSettings.value.dataGridTextFilterPanelHeight = normalizeDataGridTextFilterPanelHeight(partial.dataGridTextFilterPanelHeight); if (partial.localFilterPopoverWidth !== undefined) editorSettings.value.localFilterPopoverWidth = normalizeDrawerWidth(partial.localFilterPopoverWidth, 240, DEFAULT_EDITOR_SETTINGS.localFilterPopoverWidth); if (partial.dataGridRenderMode !== undefined) editorSettings.value.dataGridRenderMode = normalizeDataGridRenderMode(partial.dataGridRenderMode);