From 460917ceca119163accfce15ee4e836a1eac4613 Mon Sep 17 00:00:00 2001 From: Tai Groot Date: Sun, 13 Jul 2025 20:19:41 -0700 Subject: [PATCH] clear filter via esc --- internal/app/app.go | 9 +++++++++ internal/app/query.go | 4 ++-- internal/app/table_data.go | 4 ++-- internal/app/table_list.go | 9 ++++++++- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/internal/app/app.go b/internal/app/app.go index 3dd8536..5c8c8e9 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -18,6 +18,7 @@ const ( // Custom message types type ( SwitchToTableListMsg struct{} + SwitchToTableListClearMsg struct{} // Switch to table list and clear any filter SwitchToTableDataMsg struct{ TableIndex int } SwitchToRowDetailMsg struct{ RowIndex int } SwitchToRowDetailFromQueryMsg struct{ RowIndex int } @@ -519,6 +520,14 @@ func (m *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.currentView = NewTableListModel(m.getSharedData()) return m, nil + case SwitchToTableListClearMsg: + shared := m.getSharedData() + // Clear any table filter + shared.FilteredTables = make([]string, len(shared.Tables)) + copy(shared.FilteredTables, shared.Tables) + m.currentView = NewTableListModel(shared) + return m, nil + case SwitchToTableDataMsg: shared := m.getSharedData() shared.SelectedTable = msg.TableIndex diff --git a/internal/app/query.go b/internal/app/query.go index d421a47..2f64bff 100644 --- a/internal/app/query.go +++ b/internal/app/query.go @@ -57,7 +57,7 @@ func (m *QueryModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { func (m *QueryModel) handleQueryInput(msg tea.KeyMsg) (tea.Model, tea.Cmd) { switch msg.String() { case "esc": - return m, func() tea.Msg { return SwitchToTableListMsg{} } + return m, func() tea.Msg { return SwitchToTableListClearMsg{} } case "enter": if strings.TrimSpace(m.query) != "" { @@ -108,7 +108,7 @@ func (m *QueryModel) handleResultsNavigation(msg tea.KeyMsg) (tea.Model, tea.Cmd switch msg.String() { case "esc", "q": m.gPressed = false - return m, func() tea.Msg { return SwitchToTableListMsg{} } + return m, func() tea.Msg { return SwitchToTableListClearMsg{} } case "g": if m.gPressed { diff --git a/internal/app/table_data.go b/internal/app/table_data.go index f8e0b58..ad66678 100644 --- a/internal/app/table_data.go +++ b/internal/app/table_data.go @@ -61,7 +61,7 @@ func (m *TableDataModel) handleNavigation(msg tea.KeyMsg) (tea.Model, tea.Cmd) { switch msg.String() { case "q": m.gPressed = false - return m, func() tea.Msg { return SwitchToTableListMsg{} } + return m, func() tea.Msg { return SwitchToTableListClearMsg{} } case "esc": m.gPressed = false @@ -71,7 +71,7 @@ func (m *TableDataModel) handleNavigation(msg tea.KeyMsg) (tea.Model, tea.Cmd) { m.filterData() return m, nil } - return m, func() tea.Msg { return SwitchToTableListMsg{} } + return m, func() tea.Msg { return SwitchToTableListClearMsg{} } case "g": if m.gPressed { diff --git a/internal/app/table_list.go b/internal/app/table_list.go index 9164050..5bb3abb 100644 --- a/internal/app/table_list.go +++ b/internal/app/table_list.go @@ -42,7 +42,14 @@ func (m *TableListModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { func (m *TableListModel) handleSearchInput(msg tea.KeyMsg) (tea.Model, tea.Cmd) { switch msg.String() { - case "esc", "enter": + case "esc": + m.searching = false + // If there's an existing filter, clear it + if m.searchInput != "" { + m.searchInput = "" + m.filterTables() + } + case "enter": m.searching = false m.filterTables() case "backspace":