diff --git a/client/src/pages/automation/project-deployments/components/project-deployment-list/ProjectDeploymentListItem.tsx b/client/src/pages/automation/project-deployments/components/project-deployment-list/ProjectDeploymentListItem.tsx index c6ff710d7d..3116f4d03b 100644 --- a/client/src/pages/automation/project-deployments/components/project-deployment-list/ProjectDeploymentListItem.tsx +++ b/client/src/pages/automation/project-deployments/components/project-deployment-list/ProjectDeploymentListItem.tsx @@ -9,6 +9,7 @@ import {useProjectDeploymentsEnabledStore} from '@/pages/automation/project-depl import {useAnalytics} from '@/shared/hooks/useAnalytics'; import {ProjectDeployment, Tag} from '@/shared/middleware/automation/configuration'; import {useUpdateProjectDeploymentTagsMutation} from '@/shared/mutations/automation/projectDeploymentTags.mutations'; + import { useDeleteProjectDeploymentMutation, useEnableProjectDeploymentMutation, @@ -17,7 +18,7 @@ import {ProjectDeploymentTagKeys} from '@/shared/queries/automation/projectDeplo import {ProjectDeploymentKeys} from '@/shared/queries/automation/projectDeployments.queries'; import {useQueryClient} from '@tanstack/react-query'; import {ChevronDownIcon} from 'lucide-react'; -import {useState} from 'react'; +import {useCallback, useRef, useState} from 'react'; import TagList from '../../../../../shared/components/TagList'; import ProjectDeploymentDialog from '../project-deployment-dialog/ProjectDeploymentDialog'; @@ -37,47 +38,32 @@ const ProjectDeploymentListItem = ({projectDeployment, remainingTags}: ProjectDe ); const {captureProjectDeploymentEnabled} = useAnalytics(); - const queryClient = useQueryClient(); const deleteProjectDeploymentMutation = useDeleteProjectDeploymentMutation({ onSuccess: () => { - queryClient.invalidateQueries({ - queryKey: ProjectDeploymentKeys.projectDeployments, - }); - queryClient.invalidateQueries({ - queryKey: ProjectDeploymentTagKeys.projectDeploymentTags, - }); + queryClient.invalidateQueries({queryKey: ProjectDeploymentKeys.projectDeployments}); + queryClient.invalidateQueries({queryKey: ProjectDeploymentTagKeys.projectDeploymentTags}); }, }); const updateProjectDeploymentTagsMutation = useUpdateProjectDeploymentTagsMutation({ onSuccess: () => { - queryClient.invalidateQueries({ - queryKey: ProjectDeploymentKeys.projectDeployments, - }); - queryClient.invalidateQueries({ - queryKey: ProjectDeploymentTagKeys.projectDeploymentTags, - }); + queryClient.invalidateQueries({queryKey: ProjectDeploymentKeys.projectDeployments}); + queryClient.invalidateQueries({queryKey: ProjectDeploymentTagKeys.projectDeploymentTags}); }, }); const enableProjectDeploymentMutation = useEnableProjectDeploymentMutation({ onSuccess: () => { captureProjectDeploymentEnabled(); - - queryClient.invalidateQueries({ - queryKey: ProjectDeploymentKeys.projectDeployments, - }); + queryClient.invalidateQueries({queryKey: ProjectDeploymentKeys.projectDeployments}); }, }); const handleOnCheckedChange = (value: boolean) => { enableProjectDeploymentMutation.mutate( - { - enable: value, - id: projectDeployment.id!, - }, + {enable: value, id: projectDeployment.id!}, { onSuccess: () => { setProjectDeploymentEnabled(projectDeployment.id!, !projectDeployment.enabled); @@ -87,9 +73,38 @@ const ProjectDeploymentListItem = ({projectDeployment, remainingTags}: ProjectDe ); }; + const workflowsCollapsibleTriggerRef = useRef(null); + + const handleCardClick = useCallback((event: React.MouseEvent) => { + const target = event.target as HTMLElement; + + const interactiveSelectors = [ + '[data-interactive]', + '.dropdown-menu-item', + '[data-radix-dropdown-menu-item]', + '[data-radix-dropdown-menu-trigger]', + '[data-radix-collapsible-trigger]', + 'button', + 'input', + 'svg', + ].join(', '); + + if (target.closest(interactiveSelectors)) { + return; + } + if (workflowsCollapsibleTriggerRef.current?.contains(target)) { + return; + } + + workflowsCollapsibleTriggerRef.current?.click(); + }, []); + return ( <> -
+
handleCardClick(event)} + >
@@ -110,7 +125,10 @@ const ProjectDeploymentListItem = ({projectDeployment, remainingTags}: ProjectDe
- + {projectDeployment.projectDeploymentWorkflows?.length === 1 ? `1 workflow` @@ -120,14 +138,12 @@ const ProjectDeploymentListItem = ({projectDeployment, remainingTags}: ProjectDe -
event.preventDefault()}> +
event.stopPropagation()}> {projectDeployment.tags && ( ({ id: id!, - updateTagsRequest: { - tags: tags || [], - }, + updateTagsRequest: {tags: tags || []}, })} id={projectDeployment.id!} remainingTags={remainingTags} @@ -157,6 +173,7 @@ const ProjectDeploymentListItem = ({projectDeployment, remainingTags}: ProjectDe checked={projectDeployment.enabled} disabled={enableProjectDeploymentMutation.isPending} onCheckedChange={handleOnCheckedChange} + onClick={(event) => event.stopPropagation()} />
diff --git a/client/src/pages/automation/project-deployments/components/project-deployment-list/ProjectDeploymentListItemDropdownMenu.tsx b/client/src/pages/automation/project-deployments/components/project-deployment-list/ProjectDeploymentListItemDropdownMenu.tsx index f8d1693262..a3043cea38 100644 --- a/client/src/pages/automation/project-deployments/components/project-deployment-list/ProjectDeploymentListItemDropdownMenu.tsx +++ b/client/src/pages/automation/project-deployments/components/project-deployment-list/ProjectDeploymentListItemDropdownMenu.tsx @@ -23,6 +23,15 @@ const ProjectDeploymentListItemDropdownMenu = ({ return ( + + + + + Edit + + Update Project Version