X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/7597dab11b25e5bb67becf99db622f7f7737a235..cc72c29b709759a4498ad232e3f0374e857c7a62:/src/views/run-process-panel/inputs/float-input.tsx diff --git a/src/views/run-process-panel/inputs/float-input.tsx b/src/views/run-process-panel/inputs/float-input.tsx index 31a7ca59a6..a5905dc586 100644 --- a/src/views/run-process-panel/inputs/float-input.tsx +++ b/src/views/run-process-panel/inputs/float-input.tsx @@ -3,12 +3,12 @@ // SPDX-License-Identifier: AGPL-3.0 import * as React from 'react'; +import { memoize } from 'lodash/fp'; import { FloatCommandInputParameter, isRequiredInput } from '~/models/workflow'; import { Field } from 'redux-form'; import { isNumber } from '~/validators/is-number'; -import { GenericInput } from '~/views/run-process-panel/inputs/generic-input'; -import { Input as MaterialInput } from '@material-ui/core'; -import { GenericInputProps } from './generic-input'; +import { GenericInputProps, GenericInput } from './generic-input'; +import { FloatInput as FloatInputComponent } from '~/components/float-input/float-input'; export interface FloatInputProps { input: FloatCommandInputParameter; } @@ -16,39 +16,29 @@ export const FloatInput = ({ input }: FloatInputProps) => isNaN(value) ? '' : JSON.stringify(value)} - validate={[ - isRequiredInput(input) - ? isNumber - : () => undefined,]} />; + format={format} + validate={getValidation(input)} />; -class FloatInputComponent extends React.Component { - state = { - endsWithDecimalSeparator: false, - }; +const format = (value: any) => isNaN(value) ? '' : JSON.stringify(value); - handleChange = (event: React.ChangeEvent) => { - const [base, fraction] = event.target.value.split('.'); - this.setState({ endsWithDecimalSeparator: fraction === '' }); - this.props.input.onChange(event); - } - - render() { - const props = { - ...this.props, - input: { - ...this.props.input, - value: this.props.input.value + (this.state.endsWithDecimalSeparator ? '.' : ''), - onChange: this.handleChange, - }, - }; - return ; - } -} +const getValidation = memoize( + (input: FloatCommandInputParameter) => ([ + isRequiredInput(input) + ? isNumber + : () => undefined,]) +); const Input = (props: GenericInputProps) => - ; + ; + +const InputComponent = ({ input, meta, commandInput }: GenericInputProps) => + ; +