/
SourceSecretSelector.tsx
58 lines (52 loc) · 1.79 KB
/
SourceSecretSelector.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import * as React from 'react';
import { useFormikContext, FormikValues, useField } from 'formik';
import { FormGroup } from '@patternfly/react-core';
import { SecretTypeAbstraction } from '@console/internal/components/secrets/create-secret';
import SourceSecretDropdown from '../../dropdown/SourceSecretDropdown';
import { getFieldId } from '../../formik-fields/field-utils';
import { secretModalLauncher } from '../CreateSecretModal';
const CREATE_SOURCE_SECRET = 'create-source-secret';
const SourceSecretSelector: React.FC = () => {
const [secret] = useField('git.secret');
const { values, setFieldValue } = useFormikContext<FormikValues>();
const handleSave = (name: string) => {
setFieldValue('git.secret', name);
};
const handleDropdownChange = (key: string) => {
if (key === CREATE_SOURCE_SECRET) {
setFieldValue('git.secret', secret.value);
secretModalLauncher({
namespace: values.project.name,
save: handleSave,
secretType: SecretTypeAbstraction.source,
});
} else {
setFieldValue('git.secret', key);
}
};
return (
<>
<FormGroup
fieldId={getFieldId('source-secret', 'dropdown')}
label="Source Secret"
helperText="Secret with credentials for pulling your source code."
>
<SourceSecretDropdown
dropDownClassName="dropdown--full-width"
menuClassName="dropdown-menu--text-wrap"
namespace={values.project.name}
actionItems={[
{
actionTitle: 'Create New Secret',
actionKey: CREATE_SOURCE_SECRET,
},
]}
selectedKey={secret.value}
title={secret.value}
onChange={handleDropdownChange}
/>
</FormGroup>
</>
);
};
export default SourceSecretSelector;