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 }}
> >
{ argTypeMatchInt ? (
<Input <Input
{ ...field } { ...inputProps }
// TODO @tom2drum fix formatting of numeric input { ...(error ? { 'data-invalid': true } : {}) }
// { ...(argTypeMatchInt ? {
// as: NumericFormat,
// thousandSeparator: ' ',
// decimalScale: 0,
// allowNegative: !argTypeMatchInt.isUnsigned,
// getInputRef: (element: HTMLInputElement) => {
// ref.current = element;
// },
// } : {}) }
// 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 }
size="sm"
onChange={ handleChange }
onPaste={ handlePaste } onPaste={ handlePaste }
required={ !isOptional } asChild
placeholder={ data.type } >
autoComplete="off" <NumericFormat
data-1p-ignore thousandSeparator=" "
bgColor={ inputBgColor } decimalScale={ 0 }
paddingRight={ hasMultiplyButton ? '120px' : '40px' } allowNegative={ !argTypeMatchInt.isUnsigned }
getInputRef={ getInputRef }
/> />
</Input>
) : <Input { ...inputProps } ref={ ref as React.LegacyRef<HTMLInputElement> | undefined }/> }
</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