diff --git a/packages/manager/.changeset/pr-13251-changed-1767856277321.md b/packages/manager/.changeset/pr-13251-changed-1767856277321.md new file mode 100644 index 00000000000..8416d3db1e9 --- /dev/null +++ b/packages/manager/.changeset/pr-13251-changed-1767856277321.md @@ -0,0 +1,5 @@ +--- +"@linode/manager": Changed +--- + +NLB post-demo feedback-Resolve special character filtering issue in Nodes table IPv6 column and add NLB to GoTo quick navigation ([#13251](https://github.com/linode/manager/pull/13251)) diff --git a/packages/manager/src/GoTo.tsx b/packages/manager/src/GoTo.tsx index 93a0bddf0b7..f6221f94afb 100644 --- a/packages/manager/src/GoTo.tsx +++ b/packages/manager/src/GoTo.tsx @@ -6,6 +6,7 @@ import * as React from 'react'; import { useIsDatabasesEnabled } from './features/Databases/utilities'; import { usePermissions } from './features/IAM/hooks/usePermissions'; import { useIsMarketplaceV2Enabled } from './features/Marketplace/utils'; +import { useIsNetworkLoadBalancerEnabled } from './features/NetworkLoadBalancers/utils'; import { useIsPlacementGroupsEnabled } from './features/PlacementGroups/utils'; import { useFlags } from './hooks/useFlags'; import { useGlobalKeyboardListener } from './hooks/useGlobalKeyboardListener'; @@ -26,6 +27,7 @@ export const GoTo = React.memo(() => { const { isPlacementGroupsEnabled } = useIsPlacementGroupsEnabled(); const { isDatabasesEnabled } = useIsDatabasesEnabled(); const { isMarketplaceV2FeatureEnabled } = useIsMarketplaceV2Enabled(); + const { isNetworkLoadBalancerEnabled } = useIsNetworkLoadBalancerEnabled(); const { goToOpen, setGoToOpen } = useGlobalKeyboardListener(); @@ -58,6 +60,11 @@ export const GoTo = React.memo(() => { display: 'VPC', href: '/vpcs', }, + { + display: 'Network Load Balancer', + hide: !isNetworkLoadBalancerEnabled, + href: '/netloadbalancers', + }, { display: 'NodeBalancers', href: '/nodebalancers', @@ -138,6 +145,7 @@ export const GoTo = React.memo(() => { isDatabasesEnabled, isManagedAccount, isMarketplaceV2FeatureEnabled, + isNetworkLoadBalancerEnabled, isPlacementGroupsEnabled, iamRbacPrimaryNavChanges, ] diff --git a/packages/manager/src/features/NetworkLoadBalancers/NetworkLoadBalancersDetail/NetworkLoadBalancersListenerDetail/NodesTable/NodesTable.tsx b/packages/manager/src/features/NetworkLoadBalancers/NetworkLoadBalancersDetail/NetworkLoadBalancersListenerDetail/NodesTable/NodesTable.tsx index e85c120b410..f3d584e59da 100644 --- a/packages/manager/src/features/NetworkLoadBalancers/NetworkLoadBalancersDetail/NetworkLoadBalancersListenerDetail/NodesTable/NodesTable.tsx +++ b/packages/manager/src/features/NetworkLoadBalancers/NetworkLoadBalancersDetail/NetworkLoadBalancersListenerDetail/NodesTable/NodesTable.tsx @@ -1,5 +1,4 @@ import { useNetworkLoadBalancerNodesQuery } from '@linode/queries'; -import { getAPIFilterFromQuery } from '@linode/search'; import { CircleProgress, Hidden, @@ -47,13 +46,14 @@ export const NodesTable = (props: NodesTableProps) => { from: NLB_NODES_ROUTE, shouldThrow: false, }); + const query = search?.query; const pagination = usePaginationV2({ currentRoute: NLB_NODES_ROUTE, preferenceKey, searchParams: (prev) => ({ ...prev, - query: search?.query, + query, }), }); @@ -68,17 +68,29 @@ export const NodesTable = (props: NodesTableProps) => { preferenceKey, }); - const { filter: searchFilter, error: searchError } = getAPIFilterFromQuery( - search?.query, - { - searchableFieldsWithoutOperator: ['id', 'linode_id', 'address_v6'], - } - ); - const filter = { ['+order']: order, ['+order_by']: orderBy, - ...searchFilter, + }; + + const generateNodesXFilter = (searchText: string) => { + if (searchText === '') { + return filter; + } + return { + '+or': [ + { + id: { '+contains': searchText }, + }, + { + linode_id: { '+contains': searchText }, + }, + { + address_v6: { '+contains': searchText }, + }, + ], + ...filter, + }; }; const { @@ -93,7 +105,7 @@ export const NodesTable = (props: NodesTableProps) => { page: pagination.page, page_size: pagination.pageSize, }, - filter + generateNodesXFilter(query ?? '') ); const onSearch = (query: string) => { @@ -101,7 +113,7 @@ export const NodesTable = (props: NodesTableProps) => { search: (prev) => ({ ...prev, page: undefined, - query: query ? query : undefined, + query: query ?? undefined, }), to: `/netloadbalancers/${nlbId}/listeners/${listenerId}/nodes`, }); @@ -136,7 +148,6 @@ export const NodesTable = (props: NodesTableProps) => {