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  }