X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/c2a580be1484629e557b967524473a75b2d02274..5823ffd02299b125dfb372cd8a225e62e0ccd4fe:/src/views-components/virtual-machines-dialog/group-array-input.tsx diff --git a/src/views-components/virtual-machines-dialog/group-array-input.tsx b/src/views-components/virtual-machines-dialog/group-array-input.tsx index d3714dce..95a86420 100644 --- a/src/views-components/virtual-machines-dialog/group-array-input.tsx +++ b/src/views-components/virtual-machines-dialog/group-array-input.tsx @@ -4,34 +4,59 @@ import React from 'react'; import { StringArrayCommandInputParameter } from 'models/workflow'; -import { Field } from 'redux-form'; +import { Field, GenericField } from 'redux-form'; import { GenericInputProps } from 'views/run-process-panel/inputs/generic-input'; import { ChipsInput } from 'components/chips-input/chips-input'; import { identity } from 'lodash'; -import { withStyles, WithStyles, FormGroup, Input, InputLabel, FormControl } from '@material-ui/core'; +import { withStyles, WithStyles, FormGroup, Input, InputLabel, FormControl, FormHelperText } from '@material-ui/core'; +import classnames from "classnames"; +import { ArvadosTheme } from 'common/custom-theme'; -export interface StringArrayInputProps { +export interface GroupArrayDataProps { + hasPartialGroupInput?: boolean; + setPartialGroupInput?: (value: boolean) => void; +} + +interface GroupArrayFieldProps { + commandInput: StringArrayCommandInputParameter; +} + +const GroupArrayField = Field as new () => GenericField; + +export interface GroupArrayInputProps { name: string; input: StringArrayCommandInputParameter; required: boolean; } -type CssRules = 'chips'; +type CssRules = 'chips' | 'partialInputHelper' | 'partialInputHelperVisible'; -const styles = { +const styles = (theme: ArvadosTheme) => ({ chips: { marginTop: "16px", }, -}; + partialInputHelper: { + textAlign: 'right' as 'right', + visibility: 'hidden' as 'hidden', + color: theme.palette.error.dark, + }, + partialInputHelperVisible: { + visibility: 'visible' as 'visible', + } +}); -export const GroupArrayInput = ({name, input}: StringArrayInputProps) => - ; +export const GroupArrayInput = ({name, input, setPartialGroupInput, hasPartialGroupInput}: GroupArrayInputProps & GroupArrayDataProps) => { + console.log(hasPartialGroupInput); + return ; +} -const StringArrayInputComponent = (props: GenericInputProps) => { +const GroupArrayInputComponent = (props: GenericInputProps & GroupArrayDataProps) => { return 0}>{props.commandInput.id} @@ -41,25 +66,30 @@ const StringArrayInputComponent = (props: GenericInputProps) => { }; const StyledInputComponent = withStyles(styles)( - class InputComponent extends React.PureComponent>{ + class InputComponent extends React.PureComponent & GroupArrayDataProps>{ render() { const { classes } = this.props; - const { commandInput, input, meta } = this.props; - return ; + const { commandInput, input, meta, hasPartialGroupInput } = this.props; + return <> + + + Press enter to complete group name + + ; } handleChange = (values: {}[]) => { @@ -70,11 +100,5 @@ const StyledInputComponent = withStyles(styles)( input.onChange(values); } - handleBlur = (e: React.FocusEvent) => { - const { input } = this.props; - if (!input.value?.length) { - input.onBlur(e); - } - } } );