Skip to content

Commit 01fa795

Browse files
Refactor BasePicker to Picker new props
1 parent def46e5 commit 01fa795

File tree

1 file changed

+38
-19
lines changed
  • src/components/Picker/BasePicker

1 file changed

+38
-19
lines changed

src/components/Picker/BasePicker/index.js

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,49 @@
11
import React from 'react';
22
import RNPickerSelect from 'react-native-picker-select';
3+
import _ from 'underscore';
34

45
import styles from '../../../styles/styles';
56
import * as basePickerPropTypes from './basePickerPropTypes';
67
import basePickerStyles from './basePickerStyles';
78

8-
const BasePicker = props => (
9-
<RNPickerSelect
10-
onValueChange={props.onChange}
11-
items={props.items}
12-
style={props.size === 'normal' ? basePickerStyles(props.disabled, props.hasError, props.focused) : styles.pickerSmall}
13-
useNativeAndroidPickerStyle={false}
14-
placeholder={props.placeholder}
15-
value={props.value}
16-
Icon={() => props.icon(props.size)}
17-
disabled={props.disabled}
18-
fixAndroidTouchableBug
19-
onOpen={props.onOpen}
20-
onClose={props.onClose}
21-
pickerProps={{
22-
onFocus: props.onOpen,
23-
onBlur: props.onClose,
24-
}}
25-
/>
26-
);
9+
class BasePicker extends React.Component {
10+
constructor(props) {
11+
super(props);
2712

13+
this.state = {
14+
selectValue: this.props.value || this.props.defaultValue || '',
15+
};
16+
}
17+
18+
handleChange = (value) => {
19+
this.props.onChange(value);
20+
this.setState({selectValue: value});
21+
}
22+
23+
render() {
24+
const hasError = !_.isEmpty(this.props.errorText);
25+
return (
26+
<RNPickerSelect
27+
onValueChange={this.handleChange}
28+
items={this.props.items}
29+
style={this.props.size === 'normal' ? basePickerStyles(this.props.disabled, hasError, this.props.focused) : styles.pickerSmall}
30+
useNativeAndroidPickerStyle={false}
31+
placeholder={this.props.placeholder}
32+
value={this.state.selectValue}
33+
Icon={() => this.props.icon(this.props.size)}
34+
disabled={this.props.disabled}
35+
fixAndroidTouchableBug
36+
onOpen={this.props.onOpen}
37+
onClose={this.props.onClose}
38+
pickerProps={{
39+
onFocus: this.props.onOpen,
40+
onBlur: this.props.onBlur,
41+
ref: this.props.innerRef,
42+
}}
43+
/>
44+
);
45+
}
46+
}
2847

2948
BasePicker.propTypes = basePickerPropTypes.propTypes;
3049
BasePicker.defaultProps = basePickerPropTypes.defaultProps;

0 commit comments

Comments
 (0)