diff --git a/static/app/components/searchQueryBuilder/index.spec.tsx b/static/app/components/searchQueryBuilder/index.spec.tsx index 96952754d4b7f3..d84720e99467b0 100644 --- a/static/app/components/searchQueryBuilder/index.spec.tsx +++ b/static/app/components/searchQueryBuilder/index.spec.tsx @@ -434,6 +434,7 @@ describe('SearchQueryBuilder', () => { expect(await screen.findByRole('button', {name: 'All'})).toBeInTheDocument(); expect(screen.getByRole('button', {name: 'Category 1'})).toBeInTheDocument(); expect(screen.getByRole('button', {name: 'Category 2'})).toBeInTheDocument(); + expect(screen.getByRole('button', {name: 'Logic'})).toBeInTheDocument(); const menu = screen.getByRole('listbox'); const groups = within(menu).getAllByRole('group'); @@ -717,25 +718,19 @@ describe('SearchQueryBuilder', () => { }); describe('logic category', () => { - it('does not render logic category when on first input', async () => { + it('renders conditional and parenthetical filters', async () => { render(, { organization: {features: ['search-query-builder-conditionals-combobox-menus']}, }); - await userEvent.click(getLastInput()); - expect(await screen.findByRole('button', {name: 'All'})).toBeInTheDocument(); - - expect(screen.queryByRole('button', {name: 'Logic'})).not.toBeInTheDocument(); - }); - it('renders logic category when not on first input', async () => { - render(, { - organization: {features: ['search-query-builder-conditionals-combobox-menus']}, - }); - - await userEvent.click(getLastInput()); // Should show conditionals button expect(await screen.findByRole('button', {name: 'Logic'})).toBeInTheDocument(); + await userEvent.click(screen.getByRole('button', {name: 'Logic'})); + expect(await screen.findByRole('option', {name: '('})).toBeInTheDocument(); + expect(screen.getByRole('option', {name: ')'})).toBeInTheDocument(); + expect(screen.getByRole('option', {name: 'AND'})).toBeInTheDocument(); + expect(screen.getByRole('option', {name: 'OR'})).toBeInTheDocument(); }); }); }); diff --git a/static/app/components/searchQueryBuilder/tokens/filterKeyListBox/useFilterKeyListBox.tsx b/static/app/components/searchQueryBuilder/tokens/filterKeyListBox/useFilterKeyListBox.tsx index 8f8031631fa4a4..dca9f8f995ce2c 100644 --- a/static/app/components/searchQueryBuilder/tokens/filterKeyListBox/useFilterKeyListBox.tsx +++ b/static/app/components/searchQueryBuilder/tokens/filterKeyListBox/useFilterKeyListBox.tsx @@ -31,11 +31,7 @@ import { } from 'sentry/components/searchQueryBuilder/tokens/filterKeyListBox/utils'; import {itemIsSection} from 'sentry/components/searchQueryBuilder/tokens/utils'; import type {FieldDefinitionGetter} from 'sentry/components/searchQueryBuilder/types'; -import type { - ParseResultToken, - Token, - TokenResult, -} from 'sentry/components/searchSyntax/parser'; +import type {Token, TokenResult} from 'sentry/components/searchSyntax/parser'; import {getKeyName} from 'sentry/components/searchSyntax/utils'; import type {RecentSearch, TagCollection} from 'sentry/types/group'; import {trackAnalytics} from 'sentry/utils/analytics'; @@ -134,9 +130,7 @@ function useFilterKeyItems() { function useFilterKeySections({ recentSearches, - filterItem, }: { - filterItem: Node; recentSearches: RecentSearch[] | undefined; }) { const {filterKeySections, query, disallowLogicalOperators} = useSearchQueryBuilder(); @@ -155,7 +149,6 @@ function useFilterKeySections({ return []; } - const isFirstItem = filterItem.key.toString().endsWith(':0'); if (recentSearches?.length && !query) { const recentSearchesSections: Section[] = [ RECENT_SEARCH_CATEGORY, @@ -163,14 +156,14 @@ function useFilterKeySections({ ...definedSections, ]; - if (!disallowLogicalOperators && !isFirstItem && hasConditionalsInCombobox) { + if (!disallowLogicalOperators && hasConditionalsInCombobox) { recentSearchesSections.push(LOGIC_CATEGORY); } return recentSearchesSections; } const customSections: Section[] = [ALL_CATEGORY, ...definedSections]; - if (!disallowLogicalOperators && !isFirstItem && hasConditionalsInCombobox) { + if (!disallowLogicalOperators && hasConditionalsInCombobox) { customSections.push(LOGIC_CATEGORY); } @@ -179,7 +172,6 @@ function useFilterKeySections({ disallowLogicalOperators, filterKeySections, hasConditionalsInCombobox, - filterItem.key, query, recentSearches?.length, ]); @@ -200,7 +192,7 @@ function useFilterKeySections({ return {sections, selectedSection, setSelectedSection}; } -const conditionalFilterItems = [ +const logicFilterItems = [ createLogicFilterItem({value: 'AND'}), createLogicFilterItem({value: 'OR'}), createLogicFilterItem({value: '('}), @@ -208,11 +200,10 @@ const conditionalFilterItems = [ ]; interface UseFilterKeyListBoxArgs { - filterItem: Node; filterValue: string; } -export function useFilterKeyListBox({filterValue, filterItem}: UseFilterKeyListBoxArgs) { +export function useFilterKeyListBox({filterValue}: UseFilterKeyListBoxArgs) { const { filterKeys, getFieldDefinition, @@ -228,7 +219,6 @@ export function useFilterKeyListBox({filterValue, filterItem}: UseFilterKeyListB const {data: recentSearches} = useRecentSearches(); const {sections, selectedSection, setSelectedSection} = useFilterKeySections({ recentSearches, - filterItem, }); const organization = useOrganization(); @@ -270,7 +260,7 @@ export function useFilterKeyListBox({filterValue, filterItem}: UseFilterKeyListB selectedSection === LOGIC_CATEGORY_VALUE && hasConditionalsInCombobox ) { - return [...askSeerItem, ...conditionalFilterItems]; + return [...askSeerItem, ...logicFilterItems]; } const filteredByCategory = sectionedItems.filter(item => { diff --git a/static/app/components/searchQueryBuilder/tokens/freeText.tsx b/static/app/components/searchQueryBuilder/tokens/freeText.tsx index 9c10afa72e618a..6efdaaebed18a5 100644 --- a/static/app/components/searchQueryBuilder/tokens/freeText.tsx +++ b/static/app/components/searchQueryBuilder/tokens/freeText.tsx @@ -301,7 +301,6 @@ function SearchQueryBuilderInputInternal({ const {customMenu, sectionItems, maxOptions, onKeyDownCapture, handleOptionSelected} = useFilterKeyListBox({ - filterItem: item, filterValue, }); const sortedFilteredItems = useSortedFilterKeyItems({