1
1
/* eslint-disable react/prop-types */
2
+ import React , { useState } from 'react' ;
2
3
import {
3
4
Alert ,
4
5
Button ,
@@ -12,7 +13,6 @@ import {
12
13
ToggleGroup ,
13
14
ToggleGroupItem ,
14
15
} from '@patternfly/react-core' ;
15
- import React , { useState } from 'react' ;
16
16
17
17
import { regionOptions } from '../../utils/region' ;
18
18
import SelectSingle from '../../components/SelectSingle' ;
@@ -22,9 +22,15 @@ const defaultFormValues = {
22
22
cloud_provider : 'aws' ,
23
23
region : 'us-east-1' ,
24
24
availabilityZones : 'multi' ,
25
+ aws_account_number : '' ,
25
26
} ;
26
27
27
- function CreateInstanceModal ( { isOpen, onClose, onRequestCreate } ) {
28
+ function CreateInstanceModal ( {
29
+ isOpen,
30
+ onClose,
31
+ onRequestCreate,
32
+ cloudAccountIds,
33
+ } ) {
28
34
const [ errorMessage , setErrorMessage ] = useState ( null ) ;
29
35
const [ formValues , setFormValues ] = useState ( defaultFormValues ) ;
30
36
const [ isRequestingCreate , setIsRequestingCreate ] = useState ( false ) ;
@@ -37,6 +43,19 @@ function CreateInstanceModal({ isOpen, onClose, onRequestCreate }) {
37
43
onClose ( ) ;
38
44
}
39
45
46
+ async function onRequestCreateHandler ( ) {
47
+ setIsRequestingCreate ( true ) ;
48
+ const result = await onRequestCreate ( formValues ) ;
49
+ setIsRequestingCreate ( false ) ;
50
+ if ( result instanceof Error ) {
51
+ const errorMessage = result . response . data . reason ;
52
+ setErrorMessage ( errorMessage ) ;
53
+ } else {
54
+ setFormValues ( defaultFormValues ) ;
55
+ onClose ( ) ;
56
+ }
57
+ }
58
+
40
59
function onChangeAvailabilityZones ( isSelected , event ) {
41
60
const { id } = event . currentTarget ;
42
61
setFormValues ( ( prevFormValues ) => ( {
@@ -52,26 +71,24 @@ function CreateInstanceModal({ isOpen, onClose, onRequestCreate }) {
52
71
} ) ) ;
53
72
}
54
73
55
- function onInputChange ( value ) {
74
+ function onChangeAWSAccountNumber ( id , selection ) {
56
75
setFormValues ( ( prevFormValues ) => ( {
57
76
...prevFormValues ,
58
- name : value ,
77
+ aws_account_number : selection ,
59
78
} ) ) ;
60
79
}
61
80
62
- async function onRequestCreateHandler ( ) {
63
- setIsRequestingCreate ( true ) ;
64
- const result = await onRequestCreate ( formValues ) ;
65
- setIsRequestingCreate ( false ) ;
66
- if ( result instanceof Error ) {
67
- const errorMessage = result . response . data . reason ;
68
- setErrorMessage ( errorMessage ) ;
69
- } else {
70
- setFormValues ( defaultFormValues ) ;
71
- onClose ( ) ;
72
- }
81
+ function onInputChangeHandler ( fieldName ) {
82
+ return function onInputChange ( value ) {
83
+ setFormValues ( ( prevFormValues ) => ( {
84
+ ...prevFormValues ,
85
+ [ fieldName ] : value ,
86
+ } ) ) ;
87
+ } ;
73
88
}
74
89
90
+ const onNameChange = onInputChangeHandler ( 'name' ) ;
91
+
75
92
return (
76
93
< Modal
77
94
variant = { ModalVariant . small }
@@ -116,7 +133,7 @@ function CreateInstanceModal({ isOpen, onClose, onRequestCreate }) {
116
133
id = "name"
117
134
name = "name"
118
135
value = { formValues . name }
119
- onChange = { onInputChange }
136
+ onChange = { onNameChange }
120
137
/>
121
138
</ FormGroup >
122
139
< FormGroup label = "Cloud provider" isRequired fieldId = "cloud_provider" >
@@ -161,6 +178,23 @@ function CreateInstanceModal({ isOpen, onClose, onRequestCreate }) {
161
178
/>
162
179
</ ToggleGroup >
163
180
</ FormGroup >
181
+ < FormGroup label = "AWS account number" fieldId = "aws_account_number" >
182
+ < SelectSingle
183
+ id = "aws_account_number"
184
+ value = { formValues . aws_account_number }
185
+ handleSelect = { onChangeAWSAccountNumber }
186
+ placeholderText = "Select an AWS Account"
187
+ menuAppendTo = "parent"
188
+ >
189
+ { cloudAccountIds . map ( ( cloudAccountId ) => {
190
+ return (
191
+ < SelectOption key = { cloudAccountId } value = { cloudAccountId } >
192
+ { cloudAccountId }
193
+ </ SelectOption >
194
+ ) ;
195
+ } ) }
196
+ </ SelectSingle >
197
+ </ FormGroup >
164
198
</ Form >
165
199
</ Modal >
166
200
) ;
0 commit comments