argo-cd
1import {Checkbox, HelpIcon} from 'argo-ui';
2import * as React from 'react';
3import * as ReactForm from 'react-form';
4
5export const SetFinalizerOnApplication = ReactForm.FormField((props: {fieldApi: ReactForm.FieldApi}) => {
6const {
7fieldApi: {getValue, setValue}
8} = props;
9const finalizerVal = 'resources-finalizer.argocd.argoproj.io';
10const currentValue = getValue() || [];
11const index = currentValue.findIndex((item: string) => item === finalizerVal);
12const isChecked = index < 0 ? false : true;
13return (
14<div className='small-12 large-6' style={{borderBottom: '0'}}>
15<React.Fragment>
16<Checkbox
17id='set-finalizer'
18checked={isChecked}
19onChange={(state: boolean) => {
20const value = getValue() || [];
21if (!state) {
22const i = value.findIndex((item: string) => item === finalizerVal);
23if (i >= 0) {
24const tmp = value.slice();
25tmp.splice(i, 1);
26setValue(tmp);
27}
28} else {
29const tmp = value.slice();
30tmp.push(finalizerVal);
31setValue(tmp);
32}
33}}
34/>
35<label htmlFor={`set-finalizer`}>Set Deletion Finalizer</label>
36<HelpIcon title='If checked, the resources deletion finalizer will be set on the application. Potentially destructive, refer to the documentation for more information on the effects of the finalizer.' />
37</React.Fragment>
38</div>
39);
40});
41