X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/01d6c5fbcba3e51ffddf36aa0c5a0be7dc4127bc..28825aefea14433ed4b8ac46107871847c3da1a3:/src/views-components/resource-properties-form/property-value-field.tsx diff --git a/src/views-components/resource-properties-form/property-value-field.tsx b/src/views-components/resource-properties-form/property-value-field.tsx index 9df29bd9..13dcfeb5 100644 --- a/src/views-components/resource-properties-form/property-value-field.tsx +++ b/src/views-components/resource-properties-form/property-value-field.tsx @@ -4,34 +4,23 @@ import * as React from 'react'; import { WrappedFieldProps, Field, formValues } from 'redux-form'; -import { connect } from 'react-redux'; -import { identity } from 'lodash'; import { compose } from 'redux'; -import { RootState } from '~/store/store'; -import { getVocabulary } from '~/store/vocabulary/vocabulary-selctors'; import { Autocomplete } from '~/components/autocomplete/autocomplete'; import { Vocabulary } from '~/models/vocabulary'; -import { require } from '~/validators/require'; import { PROPERTY_KEY_FIELD_NAME } from '~/views-components/resource-properties-form/property-key-field'; - -interface VocabularyProp { - vocabulary: Vocabulary; -} +import { VocabularyProp, connectVocabulary, buildProps } from '~/views-components/resource-properties-form/property-field-common'; +import { TAG_VALUE_VALIDATION } from '~/validators/validators'; interface PropertyKeyProp { propertyKey: string; } -type PropertyValueFieldProps = VocabularyProp & PropertyKeyProp; - -const mapStateToProps = (state: RootState): VocabularyProp => ({ - vocabulary: getVocabulary(state.properties), -}); +export type PropertyValueFieldProps = VocabularyProp & PropertyKeyProp; export const PROPERTY_VALUE_FIELD_NAME = 'value'; export const PropertyValueField = compose( - connect(mapStateToProps), + connectVocabulary, formValues({ propertyKey: PROPERTY_KEY_FIELD_NAME }) )( (props: PropertyValueFieldProps) => @@ -41,23 +30,17 @@ export const PropertyValueField = compose( validate={getValidation(props)} {...props} />); -const PropertyValueInput = ({ input, meta, vocabulary, propertyKey }: WrappedFieldProps & PropertyValueFieldProps) => +export const PropertyValueInput = ({ vocabulary, propertyKey, ...props }: WrappedFieldProps & PropertyValueFieldProps) => ; const getValidation = (props: PropertyValueFieldProps) => isStrictTag(props.propertyKey, props.vocabulary) - ? [require, matchTagValues(props)] - : [require]; + ? [...TAG_VALUE_VALIDATION, matchTagValues(props)] + : TAG_VALUE_VALIDATION; const matchTagValues = ({ vocabulary, propertyKey }: PropertyValueFieldProps) => (value: string) => @@ -77,5 +60,3 @@ const getTagValues = (tagName: string, vocabulary: Vocabulary) => { const tag = vocabulary.tags[tagName]; return tag && tag.values ? tag.values : []; }; - -const ITEMS_PLACEHOLDER: string[] = [];