diff --git a/apps/deploy-web/src/components/deployments/DeploymentListRow.tsx b/apps/deploy-web/src/components/deployments/DeploymentListRow.tsx index 2087d6d9f8..287a5053d2 100644 --- a/apps/deploy-web/src/components/deployments/DeploymentListRow.tsx +++ b/apps/deploy-web/src/components/deployments/DeploymentListRow.tsx @@ -88,13 +88,9 @@ export const DeploymentListRow: React.FunctionComponent = ({ deployment, const { data: leaseStatus } = useLeaseStatus({ provider, lease, enabled: !!(provider && lease && providerCredentials.details.usable) }); const isAnonymousFreeTrialEnabled = useFlag("anonymous_free_trial"); - const viewDeployment = useCallback( - (event: React.MouseEvent) => { - if ((event.target as Element).closest(`a, button, [role="button"]`)) return; - router.push(UrlService.deploymentDetails(deployment.dseq)); - }, - [router, deployment.dseq] - ); + const viewDeployment = useCallback(() => { + router.push(UrlService.deploymentDetails(deployment.dseq)); + }, [router, deployment.dseq]); function handleMenuClick() { setOpen(true); @@ -168,7 +164,7 @@ export const DeploymentListRow: React.FunctionComponent = ({ deployment, return ( <> - +
= ({ deployment,
- + + + {!isAnonymousFreeTrialEnabled && isTrialing && (
@@ -290,7 +288,7 @@ export const DeploymentListRow: React.FunctionComponent = ({ deployment, -
+
{isSelectable && ( = ({ deployment,
- +
diff --git a/apps/deploy-web/src/hooks/useListSelection/useListSelection.ts b/apps/deploy-web/src/hooks/useListSelection/useListSelection.ts index 51659a993a..adedfa4037 100644 --- a/apps/deploy-web/src/hooks/useListSelection/useListSelection.ts +++ b/apps/deploy-web/src/hooks/useListSelection/useListSelection.ts @@ -1,5 +1,6 @@ import { useCallback, useMemo, useState } from "react"; -import { uniq } from "lodash"; +import intersection from "lodash/intersection"; +import uniq from "lodash/uniq"; export type UseListSelectionProps = { ids: T[]; @@ -37,19 +38,16 @@ export const useListSelection = ({ ids }: UseListSelectionProps) => { [ids, isBetweenIds] ); - const toggleSingleSelection = useCallback( - (id: T) => { - setSelectedItemIds(prev => { - const isAdding = !prev.includes(id); - if (isAdding) { - setIntervalSelectionAnchor(id); - } + const toggleSingleSelection = useCallback((id: T) => { + setSelectedItemIds(prev => { + const isAdding = !prev.includes(id); + if (isAdding) { + setIntervalSelectionAnchor(id); + } - return isAdding ? [...prev, id] : prev.filter(x => x !== id); - }); - }, - [] - ); + return isAdding ? [...prev, id] : prev.filter(x => x !== id); + }); + }, []); const changeMultipleSelection = useCallback( (id: T) => { @@ -82,13 +80,17 @@ export const useListSelection = ({ ids }: UseListSelectionProps) => { setSelectedItemIds([]); }, []); + const validSelectedItemIds = useMemo(() => { + return intersection(ids, selectedItemIds); + }, [ids, selectedItemIds]); + return useMemo( () => ({ - selectedItemIds, + selectedItemIds: validSelectedItemIds, selectItem, clearSelection, setSelectedItemIds }), - [selectedItemIds, selectItem, clearSelection] + [validSelectedItemIds, selectItem, clearSelection] ); }; diff --git a/packages/ui/components/checkbox.tsx b/packages/ui/components/checkbox.tsx index 37ce061cc7..9282f753c0 100644 --- a/packages/ui/components/checkbox.tsx +++ b/packages/ui/components/checkbox.tsx @@ -30,7 +30,7 @@ const Checkbox = React.forwardRef< return (