Commit 8a0c8788 authored by tom's avatar tom

fix numeric input format

parent 6895bccc
import { Flex, chakra } from '@chakra-ui/react'; import { Flex, chakra } from '@chakra-ui/react';
import React from 'react'; import React from 'react';
import { useController, useFormContext } from 'react-hook-form'; import { useController, useFormContext } from 'react-hook-form';
// import { NumericFormat } from 'react-number-format'; import { NumericFormat } from 'react-number-format';
import type { ContractAbiItemInput } from '../types'; import type { ContractAbiItemInput } from '../types';
...@@ -169,6 +169,21 @@ const ContractMethodFieldInput = ({ data, hideLabel, path: name, className, isDi ...@@ -169,6 +169,21 @@ const ContractMethodFieldInput = ({ data, hideLabel, path: name, className, isDi
</Flex> </Flex>
); );
const inputProps = {
...field,
size: 'sm' as const,
bgColor: inputBgColor,
onChange: handleChange,
required: !isOptional,
placeholder: data.type,
autoComplete: 'off',
'data-1p-ignore': true,
};
const getInputRef = React.useCallback((element: HTMLInputElement) => {
ref.current = element;
}, []);
return ( return (
<Flex <Flex
className={ className } className={ className }
...@@ -187,30 +202,21 @@ const ContractMethodFieldInput = ({ data, hideLabel, path: name, className, isDi ...@@ -187,30 +202,21 @@ const ContractMethodFieldInput = ({ data, hideLabel, path: name, className, isDi
endElement={ inputEndElement } endElement={ inputEndElement }
endElementProps={{ pl: 0, pr: 1 }} endElementProps={{ pl: 0, pr: 1 }}
> >
<Input { argTypeMatchInt ? (
{ ...field } <Input
// TODO @tom2drum fix formatting of numeric input { ...inputProps }
// { ...(argTypeMatchInt ? { { ...(error ? { 'data-invalid': true } : {}) }
// as: NumericFormat, onPaste={ handlePaste }
// thousandSeparator: ' ', asChild
// decimalScale: 0, >
// allowNegative: !argTypeMatchInt.isUnsigned, <NumericFormat
// getInputRef: (element: HTMLInputElement) => { thousandSeparator=" "
// ref.current = element; decimalScale={ 0 }
// }, allowNegative={ !argTypeMatchInt.isUnsigned }
// } : {}) } getInputRef={ getInputRef }
// as we use mutable ref, we have to cast it to React.LegacyRef<HTMLInputElement> to trick chakra and typescript />
ref={ ref as React.LegacyRef<HTMLInputElement> | undefined } </Input>
size="sm" ) : <Input { ...inputProps } ref={ ref as React.LegacyRef<HTMLInputElement> | undefined }/> }
onChange={ handleChange }
onPaste={ handlePaste }
required={ !isOptional }
placeholder={ data.type }
autoComplete="off"
data-1p-ignore
bgColor={ inputBgColor }
paddingRight={ hasMultiplyButton ? '120px' : '40px' }
/>
</InputGroup> </InputGroup>
</Field> </Field>
</Flex> </Flex>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment