/ common / components / GasLimitField.tsx
GasLimitField.tsx
 1  import React from 'react';
 2  
 3  import translate from 'translations';
 4  import { gasLimitValidator } from 'libs/validators';
 5  import { Input } from 'components/ui';
 6  import { InlineSpinner } from 'components/ui/InlineSpinner';
 7  import { GasLimitFieldFactory } from './GasLimitFieldFactory';
 8  import './GasLimitField.scss';
 9  
10  interface Props {
11    customLabel?: string;
12    disabled?: boolean;
13    hideGasCalculationSpinner?: boolean;
14  }
15  
16  export const GasLimitField: React.SFC<Props> = ({
17    customLabel,
18    disabled,
19    hideGasCalculationSpinner
20  }) => (
21    <GasLimitFieldFactory
22      withProps={({ gasLimit: { raw }, onChange, readOnly, gasEstimationPending }) => (
23        <div className="input-group-wrapper">
24          <label className="input-group">
25            <div className="input-group-header">
26              {customLabel ? customLabel : translate('TRANS_GAS')}
27              <div className="flex-spacer" />
28              <InlineSpinner
29                active={!hideGasCalculationSpinner && gasEstimationPending}
30                text="Calculating"
31              />
32            </div>
33            <Input
34              isValid={gasLimitValidator(raw)}
35              type="number"
36              placeholder="21000"
37              readOnly={!!readOnly}
38              value={raw}
39              onChange={onChange}
40              disabled={disabled}
41            />
42          </label>
43        </div>
44      )}
45    />
46  );