tools/preview/prebuilt-components/Select/SelectAdapter.js (52 lines of code) (raw):
import React from 'react';
import Select from 'rhythm-form-react/lib/controls/Select';
import sharedPropTypes from '../sharedPropTypes';
const renderOptions = options => {
return (options || []).map(({label, ...opt}) => (
<option key={opt.value.toString()} {...opt}>{label}</option>
));
};
export default class SelectAdapter extends React.Component {
static propTypes = {
...sharedPropTypes,
};
render() {
const {
htmlId,
path,
config,
computed,
handleChange,
handleBlur,
value,
getDisplayError,
renderTextNode,
} = this.props;
const {
data = {},
} = config;
return (
<Select
id={htmlId}
name={path}
value={value}
onChange={e => {
handleChange(e.target.value);
}}
onBlur={handleBlur}
label={renderTextNode(data.label, 'span')}
labelProps={{
helpText: renderTextNode(data.labelHelpText, 'span'),
}}
helpText={renderTextNode(data.helpText)}
tooltip={renderTextNode(data.tooltip)}
required={computed.required}
disabled={computed.disabled}
error={getDisplayError()}
width={data.width}
>
{renderOptions(data.options)}
</Select>
);
}
}