@@ -10,61 +10,53 @@ import {
1010 DropdownMenuTrigger
1111} from "@zenml-io/react-component-library" ;
1212import { useState } from "react" ;
13- import { useStopRun } from "./use- stop-run " ;
13+ import { StopImmediatelyAlert } from "./stop-alert " ;
1414
1515type Props = {
1616 runId : string ;
1717 isActive : boolean ;
1818} ;
1919export function RunStopDropdown ( { runId, isActive } : Props ) {
2020 const [ isOpen , setIsOpen ] = useState ( false ) ;
21-
22- const {
23- stopRunQuery : { mutate : stopPipelineRun , isPending }
24- } = useStopRun ( ) ;
25-
26- function handleStop ( ) {
27- stopPipelineRun ( {
28- runId,
29- params : { graceful : true }
30- } ) ;
31- }
21+ const [ isStopAlertOpen , setIsStopAlertOpen ] = useState ( false ) ;
3222
3323 return (
34- < DropdownMenu open = { isOpen } onOpenChange = { setIsOpen } >
35- < DropdownMenuTrigger asChild >
36- < Button
37- disabled = { ! isActive || isPending }
38- intent = "secondary"
39- emphasis = "subtle"
40- size = "sm"
41- className = "group flex aspect-square items-center justify-center rounded-l-sharp border-l-0 p-0"
42- >
43- < ChevronDown
44- width = { 20 }
45- height = { 20 }
46- className = "size-4 shrink-0 fill-theme-text-primary transition-all duration-200 group-disabled:fill-neutral-300"
47- />
48- < span className = "sr-only" > Open run refresh menu</ span >
49- </ Button >
50- </ DropdownMenuTrigger >
51- < DropdownMenuContent className = "max-w-[100px] lg:max-w-[320px]" >
52- < DropdownMenuItem
53- className = "hover:cursor-pointer"
54- icon = { < StopCircle width = { 24 } height = { 24 } className = "size-5 shrink-0" /> }
55- onSelect = { ( e ) => {
56- e . preventDefault ( ) ;
57- handleStop ( ) ;
58- } }
59- >
60- < div className = "space-y-0.25" >
61- < p > Stop gracefully</ p >
62- < p className = "text-text-xs text-theme-text-secondary" >
63- Stops the run gracefully. This will allow the current step to finish.
64- </ p >
65- </ div >
66- </ DropdownMenuItem >
67- </ DropdownMenuContent >
68- </ DropdownMenu >
24+ < >
25+ < StopImmediatelyAlert open = { isStopAlertOpen } setOpen = { setIsStopAlertOpen } runId = { runId } />
26+ < DropdownMenu open = { isOpen } onOpenChange = { setIsOpen } >
27+ < DropdownMenuTrigger asChild >
28+ < Button
29+ disabled = { ! isActive }
30+ intent = "secondary"
31+ emphasis = "subtle"
32+ size = "sm"
33+ className = "group flex aspect-square items-center justify-center rounded-l-sharp border-l-0 p-0"
34+ >
35+ < ChevronDown
36+ width = { 20 }
37+ height = { 20 }
38+ className = "size-4 shrink-0 fill-theme-text-primary transition-all duration-200 group-disabled:fill-neutral-300"
39+ />
40+ < span className = "sr-only" > Open stop run menu</ span >
41+ </ Button >
42+ </ DropdownMenuTrigger >
43+ < DropdownMenuContent className = "max-w-[100px] lg:max-w-[320px]" >
44+ < DropdownMenuItem
45+ className = "hover:cursor-pointer"
46+ icon = { < StopCircle width = { 24 } height = { 24 } className = "size-5 shrink-0" /> }
47+ onSelect = { ( ) => {
48+ setIsStopAlertOpen ( true ) ;
49+ } }
50+ >
51+ < div className = "space-y-0.25" >
52+ < p > Stop immediately</ p >
53+ < p className = "text-text-xs text-theme-text-secondary" >
54+ Stops the run immediately. This won't allow the current step to finish.
55+ </ p >
56+ </ div >
57+ </ DropdownMenuItem >
58+ </ DropdownMenuContent >
59+ </ DropdownMenu >
60+ </ >
6961 ) ;
7062}
0 commit comments