// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import * as React from 'react'; 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'; export interface FloatInputProps { input: FloatCommandInputParameter; } export const FloatInput = ({ input }: FloatInputProps) => isNaN(value) ? '' : JSON.stringify(value)} validate={[ isRequiredInput(input) ? isNumber : () => undefined,]} />; class FloatInputComponent extends React.Component { state = { endsWithDecimalSeparator: false, }; 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 Input = (props: GenericInputProps) => ;