Extract common utils for controlling property field error visibility
[arvados-workbench2.git] / src / views-components / resource-properties-form / property-field-common.tsx
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { connect } from 'react-redux';
6 import { Vocabulary } from '~/models/vocabulary';
7 import { RootState } from '~/store/store';
8 import { getVocabulary } from '~/store/vocabulary/vocabulary-selctors';
9 import { WrappedFieldMetaProps, WrappedFieldInputProps } from 'redux-form';
10
11 export interface VocabularyProp {
12     vocabulary: Vocabulary;
13 }
14
15 export const mapStateToProps = (state: RootState): VocabularyProp => ({
16     vocabulary: getVocabulary(state.properties),
17 });
18
19 export const connectVocabulary = connect(mapStateToProps);
20
21 export const ITEMS_PLACEHOLDER: string[] = [];
22
23 export const hasError = ({ touched, invalid }: WrappedFieldMetaProps) =>
24     touched && invalid;
25
26 export const getErrorMsg = (meta: WrappedFieldMetaProps) =>
27     hasError(meta)
28         ? meta.error
29         : '';
30
31 export const handleBlur = ({ onBlur, value }: WrappedFieldInputProps) =>
32     () =>
33         onBlur(value);