X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/e79b7364ea28b6f0719c9adf409ba1217b9ccac8..785a62a8934dc439cbd201d9011775ccbcbb2c24:/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 aeaf6cdd..a5905dc5 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) => + ; +