vocabulary: Vocabulary;
}
-export const mapStateToProps = (state: RootState): VocabularyProp => ({
+export interface ValidationProp {
+ skipValidation?: boolean;
+}
+
+export const mapStateToProps = (state: RootState, validationProp: ValidationProp): VocabularyProp & ValidationProp => ({
+ skipValidation: validationProp.skipValidation,
vocabulary: getVocabulary(state.properties),
});
value: input.value,
onChange: input.onChange,
items: ITEMS_PLACEHOLDER,
- renderSuggestion: (item:PropFieldSuggestion) => item.label,
+ renderSuggestion: (item: PropFieldSuggestion) => item.label,
error: hasError(meta),
helperText: getErrorMsg(meta),
};
{ dispatch }: WrappedFieldMetaProps,
{ onBlur, value }: WrappedFieldInputProps,
fieldValue: string) =>
- () => {
- dispatch(change(formName, fieldName, fieldValue));
- onBlur(value);
- };
+ () => {
+ dispatch(change(formName, fieldName, fieldValue));
+ onBlur(value);
+ };
// When selecting a property value, save its ID for later usage.
export const handleSelect = (
fieldName: string,
formName: string,
{ onChange }: WrappedFieldInputProps,
- { dispatch }: WrappedFieldMetaProps ) =>
- (item:PropFieldSuggestion) => {
- if (item) {
- onChange(item.label);
- dispatch(change(formName, fieldName, item.id));
- }
- };
+ { dispatch }: WrappedFieldMetaProps) =>
+ (item: PropFieldSuggestion) => {
+ if (item) {
+ onChange(item.label);
+ dispatch(change(formName, fieldName, item.id));
+ }
+ };
import { memoize } from 'lodash';
import { Autocomplete } from '~/components/autocomplete/autocomplete';
import { Vocabulary, getTags, getTagKeyID } from '~/models/vocabulary';
-import { handleSelect, handleBlur, connectVocabulary, VocabularyProp, buildProps } from '~/views-components/resource-properties-form/property-field-common';
+import { handleSelect, handleBlur, connectVocabulary, VocabularyProp, ValidationProp, buildProps } from '~/views-components/resource-properties-form/property-field-common';
import { TAG_KEY_VALIDATION } from '~/validators/validators';
import { escapeRegExp } from '~/common/regexp.ts';
export const PROPERTY_KEY_FIELD_NAME = 'key';
export const PROPERTY_KEY_FIELD_ID = 'keyID';
-interface PropertyKeyFieldProps {
- skipValidation?: boolean;
-}
-
export const PropertyKeyField = connectVocabulary(
- ({ vocabulary, skipValidation }: VocabularyProp & PropertyKeyFieldProps) =>
+ ({ vocabulary, skipValidation }: VocabularyProp & ValidationProp) =>
<Field
name={PROPERTY_KEY_FIELD_NAME}
component={PropertyKeyInput}
onBlur={handleBlur(PROPERTY_KEY_FIELD_ID, data.form, props.meta, props.input, getTagKeyID(props.input.value, vocabulary))}
{...buildProps(props)}
/>
- )}/>;
+ )} />;
const getValidation = memoize(
(vocabulary: Vocabulary) =>
import { Autocomplete } from '~/components/autocomplete/autocomplete';
import { Vocabulary, isStrictTag, getTagValues, getTagValueID } from '~/models/vocabulary';
import { PROPERTY_KEY_FIELD_ID } from '~/views-components/resource-properties-form/property-key-field';
-import { handleSelect, handleBlur, VocabularyProp, connectVocabulary, buildProps } from '~/views-components/resource-properties-form/property-field-common';
+import { handleSelect, handleBlur, VocabularyProp, ValidationProp, connectVocabulary, buildProps } from '~/views-components/resource-properties-form/property-field-common';
import { TAG_VALUE_VALIDATION } from '~/validators/validators';
import { escapeRegExp } from '~/common/regexp.ts';
propertyKey: string;
}
-interface ValidationProp {
- skipValidation?: boolean;
-}
-
-type PropertyValueFieldProps = VocabularyProp & PropertyKeyProp;
+type PropertyValueFieldProps = VocabularyProp & PropertyKeyProp & ValidationProp;
export const PROPERTY_VALUE_FIELD_NAME = 'value';
export const PROPERTY_VALUE_FIELD_ID = 'valueID';
-const connectVocabularyAndPropertyKey = compose<any>(
+const connectVocabularyAndPropertyKey = compose(
connectVocabulary,
formValues({ propertyKey: PROPERTY_KEY_FIELD_ID }),
);
export const PropertyValueField = connectVocabularyAndPropertyKey(
- ({skipValidation, ...props}: PropertyValueFieldProps & ValidationProp) =>
+ ({ skipValidation, ...props }: PropertyValueFieldProps) =>
<Field
name={PROPERTY_VALUE_FIELD_NAME}
component={PropertyValueInput}
onBlur={handleBlur(PROPERTY_VALUE_FIELD_ID, data.form, props.meta, props.input, getTagValueID(propertyKey, props.input.value, vocabulary))}
{...buildProps(props)}
/>
- )}/>;
+ )} />;
const getValidation = (props: PropertyValueFieldProps) =>
isStrictTag(props.propertyKey, props.vocabulary)
const re = new RegExp(escapeRegExp(value), "i");
return getTagValues(tagName, vocabulary).filter(v => re.test(v.label) && v.label !== value);
};
-