@@ -19,7 +19,6 @@ import {
19
19
CDMaterialResponseType ,
20
20
DeploymentNodeType ,
21
21
Drawer ,
22
- Progressing ,
23
22
ReleaseTag ,
24
23
ImageComment ,
25
24
showError ,
@@ -48,9 +47,12 @@ import {
48
47
Button ,
49
48
ComponentSizeType ,
50
49
AnimatedDeployButton ,
50
+ ButtonVariantType ,
51
+ Icon ,
52
+ ButtonStyleType ,
53
+ useMainContext ,
51
54
} from '@devtron-labs/devtron-fe-common-lib'
52
55
import { useHistory , useLocation } from 'react-router-dom'
53
- import { ReactComponent as Close } from '@Icons/ic-cross.svg'
54
56
import { ReactComponent as DeployIcon } from '@Icons/ic-nav-rocket.svg'
55
57
import { ReactComponent as PlayIcon } from '@Icons/ic-play-outline.svg'
56
58
import { ReactComponent as Error } from '@Icons/ic-warning.svg'
@@ -89,6 +91,7 @@ const validateRuntimeParameters = importComponentFromFELibrary(
89
91
( ) => ( { isValid : true , cellError : { } } ) ,
90
92
'function' ,
91
93
)
94
+ const SkipHibernatedCheckbox = importComponentFromFELibrary ( 'SkipHibernatedCheckbox' , null , 'function' )
92
95
93
96
// TODO: Fix release tags selection
94
97
export default function BulkCDTrigger ( {
@@ -109,6 +112,7 @@ export default function BulkCDTrigger({
109
112
runtimeParamsErrorState,
110
113
setRuntimeParamsErrorState,
111
114
} : BulkCDTriggerType ) {
115
+ const { isScoopConfigured } = useMainContext ( )
112
116
const [ selectedApp , setSelectedApp ] = useState < BulkCDDetailType > (
113
117
appList . find ( ( app ) => ! app . warningMessage ) || appList [ 0 ] ,
114
118
)
@@ -125,6 +129,7 @@ export default function BulkCDTrigger({
125
129
const [ isPartialActionAllowed , setIsPartialActionAllowed ] = useState ( false )
126
130
const [ showResistanceBox , setShowResistanceBox ] = useState ( false )
127
131
const [ currentSidebarTab , setCurrentSidebarTab ] = useState < CDMaterialSidebarType > ( CDMaterialSidebarType . IMAGE )
132
+ const [ skipHibernated , setSkipHibernated ] = useState < boolean > ( false )
128
133
129
134
const location = useLocation ( )
130
135
const history = useHistory ( )
@@ -351,15 +356,18 @@ export default function BulkCDTrigger({
351
356
const renderHeaderSection = ( ) : JSX . Element => {
352
357
return (
353
358
< div className = "flex flex-align-center flex-justify dc__border-bottom bg__primary pt-16 pr-20 pb-16 pl-20" >
354
- < h2 className = "fs-16 fw-6 lh-1-43 m-0" > Deploy to { appList [ 0 ] . envName } </ h2 >
355
- < button
356
- type = "button"
357
- className = "dc__transparent flex icon-dim-24"
359
+ < h2 className = "fs-16 fw-6 lh-1-5 m-0" > Deploy to { appList [ 0 ] . envName } </ h2 >
360
+ < Button
361
+ dataTestId = "bulk-cd-modal-close"
358
362
disabled = { isLoading }
359
363
onClick = { closeBulkCDModal }
360
- >
361
- < Close className = "icon-dim-24" />
362
- </ button >
364
+ size = { ComponentSizeType . xs }
365
+ icon = { < Icon name = "ic-close-small" size = { null } color = { null } /> }
366
+ ariaLabel = "close bulk cd trigger modal"
367
+ showAriaLabelInTippy = { false }
368
+ style = { ButtonStyleType . negativeGrey }
369
+ variant = { ButtonVariantType . borderLess }
370
+ />
363
371
</ div >
364
372
)
365
373
}
@@ -829,13 +837,15 @@ export default function BulkCDTrigger({
829
837
setShowResistanceBox ( false )
830
838
}
831
839
840
+ const triggerBulkCD = ( ) => onClickTriggerBulkCD ( skipHibernated )
841
+
832
842
const onClickStartDeploy = ( e ) : void => {
833
843
if ( isPartialActionAllowed && BulkDeployResistanceTippy && ! showResistanceBox ) {
834
844
setShowResistanceBox ( true )
835
845
} else {
836
846
isBulkDeploymentTriggered . current = true
837
847
stopPropagation ( e )
838
- onClickTriggerBulkCD ( )
848
+ triggerBulkCD ( )
839
849
setShowResistanceBox ( false )
840
850
}
841
851
}
@@ -848,8 +858,21 @@ export default function BulkCDTrigger({
848
858
849
859
const renderFooterSection = ( ) : JSX . Element => {
850
860
const isDeployButtonDisabled : boolean = isDeployDisabled ( )
861
+ const showSkipHibernatedCheckbox = stage === DeploymentNodeType . CD && ! ! SkipHibernatedCheckbox
851
862
return (
852
- < div className = "dc__border-top flex right bg__primary px-20 py-16" >
863
+ < div
864
+ className = { `dc__border-top flex ${ showSkipHibernatedCheckbox ? 'dc__content-space' : 'right' } bg__primary px-20 py-16` }
865
+ >
866
+ { showSkipHibernatedCheckbox && (
867
+ < SkipHibernatedCheckbox
868
+ isDeploymentLoading = { isLoading }
869
+ envId = { appList [ 0 ] . envId }
870
+ envName = { appList [ 0 ] . envName }
871
+ appIds = { appList . map ( ( app ) => app . appId ) }
872
+ skipHibernated = { skipHibernated }
873
+ setSkipHibernated = { setSkipHibernated }
874
+ />
875
+ ) }
853
876
< div className = "dc__position-rel tippy-over" >
854
877
{ ! isDeployButtonDisabled && stage === DeploymentNodeType . CD && ! isLoading ? (
855
878
< AnimatedDeployButton onButtonClick = { onClickStartDeploy } isVirtualEnvironment = { false } />
@@ -874,7 +897,7 @@ export default function BulkCDTrigger({
874
897
return (
875
898
< Drawer position = "right" width = "75%" minWidth = "1024px" maxWidth = "1200px" >
876
899
< div className = "bg__primary bulk-ci-trigger-container" >
877
- < div className = ' flexbox-col flex-grow-1 dc__overflow-hidden' >
900
+ < div className = " flexbox-col flex-grow-1 dc__overflow-hidden" >
878
901
{ renderHeaderSection ( ) }
879
902
{ responseListLength ? (
880
903
< TriggerResponseModalBody
@@ -892,7 +915,7 @@ export default function BulkCDTrigger({
892
915
closePopup = { closeBulkCDModal }
893
916
responseList = { responseList }
894
917
isLoading = { isLoading }
895
- onClickRetryBuild = { onClickTriggerBulkCD }
918
+ onClickRetryBuild = { triggerBulkCD }
896
919
/>
897
920
) : (
898
921
renderFooterSection ( )
0 commit comments