|
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