|
2 | 2 | /* eslint-disable max-len */ |
3 | 3 | /* eslint-disable react/jsx-no-bind */ |
4 | 4 | import { min } from 'date-fns' |
5 | | -import React, { useEffect, useMemo, useState } from 'react' |
| 5 | +import React, { useCallback, useEffect, useMemo, useState } from 'react' |
6 | 6 |
|
7 | 7 | import { TOPCODER_URL } from '~/config/environments/default.env' |
8 | 8 | import { InputDatePicker, InputSelect, InputText } from '~/libs/ui' |
@@ -40,8 +40,6 @@ const PaymentEdit: React.FC<PaymentEditFormProps> = (props: PaymentEditFormProps |
40 | 40 | releaseDate: props.payment.releaseDateObj, |
41 | 41 | }), [props.payment]) |
42 | 42 |
|
43 | | - console.log('Payment status', paymentStatus) |
44 | | - |
45 | 43 | const validateNetAmount = (value: number): boolean => { |
46 | 44 | if (Number.isNaN(value)) { |
47 | 45 | setNetAmountErrorString('A valid number is required') |
@@ -160,6 +158,22 @@ const PaymentEdit: React.FC<PaymentEditFormProps> = (props: PaymentEditFormProps |
160 | 158 |
|
161 | 159 | const getLink = (externalId: string): string => `${TOPCODER_URL}/challenges/${externalId}` |
162 | 160 |
|
| 161 | + const options = useCallback(() => { |
| 162 | + if (props.payment.status.toUpperCase() !== 'PAID') { |
| 163 | + return [ |
| 164 | + { label: 'Owed', value: 'Owed' }, |
| 165 | + { label: 'On Hold', value: 'On Hold' }, |
| 166 | + { label: 'Cancel', value: 'Cancel' }, |
| 167 | + ] |
| 168 | + } |
| 169 | + |
| 170 | + return [ |
| 171 | + { label: 'Paid', value: 'Paid' }, |
| 172 | + { label: 'Owed', value: 'Owed' }, |
| 173 | + ] |
| 174 | + |
| 175 | + }, [props.payment.status]) |
| 176 | + |
163 | 177 | return ( |
164 | 178 | <div className={styles.formContainer}> |
165 | 179 | <div className={styles.inputGroup}> |
@@ -201,28 +215,26 @@ const PaymentEdit: React.FC<PaymentEditFormProps> = (props: PaymentEditFormProps |
201 | 215 | dirty |
202 | 216 | name='paymentStatus' |
203 | 217 | label='Payment Status' |
204 | | - options={[ |
205 | | - { label: 'Owed', value: 'Owed' }, |
206 | | - { label: 'On Hold', value: 'On Hold' }, |
207 | | - { label: 'Cancel', value: 'Cancel' }, |
208 | | - ]} |
| 218 | + options={options()} |
209 | 219 | value={paymentStatus} |
210 | 220 | onChange={e => { |
211 | 221 | setDisableEdits(e.target.value === 'Cancel') |
212 | 222 | handleInputChange('paymentStatus', e.target.value) |
213 | 223 | }} |
214 | 224 | /> |
215 | | - <InputDatePicker |
216 | | - tabIndex={-2} |
217 | | - disabled={disableEdits} |
218 | | - error='Something wrong' |
219 | | - label='Release Date' |
220 | | - minDate={min([new Date(), new Date(props.payment.releaseDateObj)])} |
221 | | - date={releaseDate} |
222 | | - maxDate={new Date(new Date() |
223 | | - .getTime() + 15 * 24 * 60 * 60 * 1000)} |
224 | | - onChange={date => { if (date != null) handleInputChange('releaseDate', date) }} |
225 | | - /> |
| 225 | + {props.payment.status.toUpperCase() !== 'PAID' && ( |
| 226 | + <InputDatePicker |
| 227 | + tabIndex={-2} |
| 228 | + disabled={disableEdits} |
| 229 | + error='Something wrong' |
| 230 | + label='Release Date' |
| 231 | + minDate={min([new Date(), new Date(props.payment.releaseDateObj)])} |
| 232 | + date={releaseDate} |
| 233 | + maxDate={new Date(new Date() |
| 234 | + .getTime() + 15 * 24 * 60 * 60 * 1000)} |
| 235 | + onChange={date => { if (date != null) handleInputChange('releaseDate', date) }} |
| 236 | + /> |
| 237 | + )} |
226 | 238 | <InputText |
227 | 239 | tabIndex={-3} |
228 | 240 | type='text' |
|
0 commit comments