diff --git a/packages/manager/.changeset/pr-12336-fixed-1749131430455.md b/packages/manager/.changeset/pr-12336-fixed-1749131430455.md new file mode 100644 index 00000000000..0bc9787129e --- /dev/null +++ b/packages/manager/.changeset/pr-12336-fixed-1749131430455.md @@ -0,0 +1,5 @@ +--- +"@linode/manager": Fixed +--- + +Queries from search should properly be converted to strings ([#12336](https://github.com/linode/manager/pull/12336)) diff --git a/packages/manager/src/factories/firewalls.ts b/packages/manager/src/factories/firewalls.ts index 1ee6eb51490..5c2804b1a63 100644 --- a/packages/manager/src/factories/firewalls.ts +++ b/packages/manager/src/factories/firewalls.ts @@ -42,7 +42,7 @@ export const firewallTemplateRulesFactory = }); export const firewallFactory = Factory.Sync.makeFactory({ - created: '2020-01-01 00:00:00', + created: '2020-01-01T00:00:00', entities: [ { id: 1, @@ -56,7 +56,7 @@ export const firewallFactory = Factory.Sync.makeFactory({ rules: firewallRulesFactory.build(), status: 'enabled', tags: [], - updated: '2020-01-01 00:00:00', + updated: '2020-01-01T00:00:00', }); export const firewallEntityfactory = diff --git a/packages/manager/src/features/Search/refinedSearch.ts b/packages/manager/src/features/Search/refinedSearch.ts index fefeb882078..5d6e49027a6 100644 --- a/packages/manager/src/features/Search/refinedSearch.ts +++ b/packages/manager/src/features/Search/refinedSearch.ts @@ -57,6 +57,9 @@ export const refinedSearch = ( }; export const formatQuery = (query: string) => { + if (!query || typeof query !== 'string') { + return ''; + } return query.trim().replace(' && ', ' AND ').replace(' || ', ' OR '); }; diff --git a/packages/manager/src/features/Search/utils.ts b/packages/manager/src/features/Search/utils.ts index 30b372c25f5..4fcde240dd2 100644 --- a/packages/manager/src/features/Search/utils.ts +++ b/packages/manager/src/features/Search/utils.ts @@ -113,7 +113,11 @@ export const search = ( entities: SearchableItem[], inputValue: string ): SearchResults => { - if (!inputValue || inputValue === '') { + if ( + !inputValue || + typeof inputValue !== 'string' || + inputValue.trim() === '' + ) { return { combinedResults: [], searchResultsByEntity: emptyResults }; } diff --git a/packages/manager/src/routes/search/index.ts b/packages/manager/src/routes/search/index.ts index 949ee8b007e..2acc9b8fc3e 100644 --- a/packages/manager/src/routes/search/index.ts +++ b/packages/manager/src/routes/search/index.ts @@ -3,15 +3,11 @@ import { createRoute } from '@tanstack/react-router'; import { rootRoute } from '../root'; import { SearchRoute } from './SearchRoute'; -type SearchSearchParams = { - query: string; -}; - const searchRoute = createRoute({ component: SearchRoute, getParentRoute: () => rootRoute, path: 'search', - validateSearch: (search: SearchSearchParams) => search, + validateSearch: (params) => ({ query: String(params.query) }), }); const searchLandingRoute = createRoute({