-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFieldInner.js
More file actions
93 lines (87 loc) · 1.91 KB
/
Copy pathFieldInner.js
File metadata and controls
93 lines (87 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import {fieldInnerPropTypes} from './propTypes';
import React from 'react';
import {Input} from './input/Input';
import {SelectField} from './select/SelectField';
import {ariaDescribedbyAttr} from './util';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import {RenderGroup} from '../RenderGroup';
/**
* Creates the field inside of a field group
*
* @param {Object} props
* @returns {*}
* @constructor
*/
export const FieldInner = (props) => {
/**
* Get the ID for the description element if it will be created
*
* @return {String|null}
*/
function ariaIdAttr() {
return ariaDescribedbyAttr(props.id, props.help);
}
/**
* Get the className prop for the
*
* @return {String}
*/
function inputClassName() {
return classNames([
props.fieldClassName,
RenderGroup.classNames.input
]
);
}
switch( props.type ){
case 'select':
case 'dropdown':
const options = Array.isArray(props.options) ? props.options : [];
return (
<SelectField
id={props.id}
fieldClassName={inputClassName()}
ariaDescribedbyAttr={ariaIdAttr()}
value={props.value}
onValueChange={props.onValueChange}
inputType={props.inputType}
options={options}
disabled={props.disabled}
onBlur={props.onBlur}
onFocus={props.onFocus}
/>
);
default:
case 'input':
return (
<Input
id={props.id}
fieldClassName={inputClassName()}
ariaDescribedbyAttr={ariaIdAttr()}
value={props.value}
onValueChange={props.onValueChange}
inputType={props.inputType}
disabled={props.disabled}
onBlur={props.onBlur}
onFocus={props.onFocus}
/>);
}
};
/**
* propTypes for FieldInner component
*
* @type {{options, ariaDescribedbyAttr}}
*/
FieldInner.propTypes = {
...fieldInnerPropTypes,
type: PropTypes.string,
};
/**
* Default props for FieldInner component
* @type {{help: string}}
*/
FieldInner.defaultProps = {
help: '',
type: 'input'
};