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({