DecimalField.tsx
1 import React from 'react'; 2 import { Result } from 'mycrypto-nano-result'; 3 4 import { translateRaw } from 'translations'; 5 import { isPositiveIntegerOrZero } from 'libs/validators'; 6 import { FieldInput } from './FieldInput'; 7 8 interface OwnProps { 9 address?: string; 10 onChange(decimals: Result<string>): void; 11 } 12 13 export class DecimalField extends React.Component<OwnProps> { 14 public render() { 15 return ( 16 <FieldInput 17 fieldName={translateRaw('TOKEN_DEC')} 18 fieldToFetch={'decimals'} 19 shouldEnableAutoField={req => !(req.toVal().res === '0')} 20 address={this.props.address} 21 userInputValidator={this.isValidUserInput} 22 onChange={this.props.onChange} 23 /> 24 ); 25 } 26 27 private isValidUserInput = (userInput: string) => { 28 const validDecimals = isPositiveIntegerOrZero(Number(userInput)); 29 const decimals: Result<string> = validDecimals 30 ? Result.from({ res: userInput }) 31 : Result.from({ err: 'Invalid decimal' }); 32 return decimals; 33 }; 34 }