Skip to content

Commit e655b64

Browse files
authored
replace @react-native-community/picker with @react-native-picker/picker (#1063)
* replace @react-native-community/picker with @react-native-picker/picker * Safely require Picker package * Use optional require only for iOS * Update expo dependncy to use @react-native-picker/picker
1 parent 560cfda commit e655b64

File tree

5 files changed

+33
-17
lines changed

5 files changed

+33
-17
lines changed

expoDemo/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"@react-native-community/datetimepicker": "3.0.4",
1313
"@react-native-community/masked-view": "0.1.10",
1414
"@react-native-community/netinfo": "5.9.7",
15-
"@react-native-community/picker": "^1.7.1",
15+
"@react-native-picker/picker": "^1.9.4",
1616
"@react-navigation/native": "^5.0.8",
1717
"@react-navigation/stack": "^5.1.0",
1818
"expo": "^40.0.0",

jest-setup.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ jest.mock('@react-native-community/blur', () => {});
88
jest.mock('@react-native-community/netinfo', () => {});
99
jest.mock('react-native-reanimated', () => ({}));
1010
jest.mock('react-native-gesture-handler', () => {});
11+
jest.mock('@react-native-picker/picker', () => ({Picker: {Item: {}}}));

lib/components/WheelPicker/index.js

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,26 @@ import _ from 'lodash';
22
import PropTypes from 'prop-types';
33
import React, {Component} from 'react';
44
import {DeviceEventEmitter, requireNativeComponent, StyleSheet, View} from 'react-native';
5-
import {Picker} from '@react-native-community/picker';
5+
66
import WheelPickerItem from './WheelPickerItem';
77
import {Constants} from '../../../src/helpers';
88
import {Typography, Colors} from '../../../src/style';
99

10+
/* Safely require picker component */
11+
let Picker = () => null;
12+
if (Constants.isIOS) {
13+
try {
14+
Picker = require('@react-native-picker/picker').Picker; // New package
15+
} catch (e) {
16+
try {
17+
Picker = require('@react-native-community/picker').Picker; // Deprecated package
18+
console.warn(`RNUILib Picker will soon migrate to use "@react-native-picker/picker" package instead of '@react-native-community/picker'`);
19+
} catch (e) {
20+
console.error(`RNUILib Picker requires installing "@react-native-picker/picker" dependency`);
21+
}
22+
}
23+
}
24+
1025
const WheelPickerNative = requireNativeComponent('WheelPicker', null);
1126

1227
class WheelPicker extends Component {
@@ -41,7 +56,7 @@ class WheelPicker extends Component {
4156
/**
4257
* pass custom style for the picker item
4358
*/
44-
itemStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.number]), //eslint-disable-line
59+
itemStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.number]) //eslint-disable-line
4560
};
4661

4762
static defaultProps = {
@@ -57,12 +72,12 @@ class WheelPicker extends Component {
5772
}
5873

5974
state = {
60-
items: this.getItems(),
75+
items: this.getItems()
6176
};
6277

63-
onLogReceived = (event) => {
78+
onLogReceived = event => {
6479
console[event.LogType](event.TAG, event.text);
65-
}
80+
};
6681

6782
onValueChange(event) {
6883
const index = event.nativeEvent.itemIndex;
@@ -76,7 +91,7 @@ class WheelPicker extends Component {
7691
getItems() {
7792
const items = _.map(React.Children.toArray(this.props.children), child => ({
7893
value: child.props.value,
79-
label: child.props.label,
94+
label: child.props.label
8095
}));
8196
return items;
8297
}
@@ -94,10 +109,10 @@ class WheelPicker extends Component {
94109
render() {
95110
const {style, color, labelStyle, itemHeight} = this.props;
96111
const {fontSize, fontFamily} = labelStyle;
97-
let {color: labelColor} = labelStyle;
112+
const {color: labelColor} = labelStyle;
98113

99114
return (
100-
<View collapsable={false} style={styles.container} >
115+
<View collapsable={false} style={styles.container}>
101116
<WheelPickerNative
102117
data={this.extractLabelsFromItems()}
103118
initialIndex={this.getInitialIndex()}
@@ -116,14 +131,14 @@ class WheelPicker extends Component {
116131

117132
const styles = StyleSheet.create({
118133
container: {
119-
overflow: 'hidden',
134+
overflow: 'hidden'
120135
},
121136
wheelPicker: {
122137
width: 200,
123-
height: 200,
124-
},
138+
height: 200
139+
}
125140
});
126141

127142
WheelPicker.Item = WheelPickerItem;
128143

129-
export default (Constants.isAndroid ? WheelPicker : Picker);
144+
export default Constants.isAndroid ? WheelPicker : Picker;

markdowns/getting-started/setup.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ If you're planning on using specific components, see **UILib Packages**.
3131

3232
If you want it all, install **peer dependencies**
3333
```
34-
npm i react-native-gesture-handler react-native-reanimated @react-native-community/blur @react-native-community/datetimepicker @react-native-community/netinfo @react-native-community/picker
34+
npm i react-native-gesture-handler react-native-reanimated @react-native-community/blur @react-native-community/datetimepicker @react-native-community/netinfo @react-native-picker/picker
3535
3636
cd ios && pod install
3737
```
@@ -50,7 +50,7 @@ It's important to run `cd ios && pod install` if you are using a component that
5050
- ~~"react-native-interactable": ">=2.0.0"~~ (No Need in >=V5.0.0)
5151
- "@react-native-community/datetimepicker": "^2.1.0"
5252
- "@react-native-community/netinfo": "^5.6.2"
53-
- "@react-native-community/picker": "^1.6.5"
53+
- "@react-native-picker/picker": "^1.9.4",
5454

5555
## Demo App
5656

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
"@react-native-community/datetimepicker": "^2.1.0",
7171
"@react-native-community/eslint-config": "^1.1.0",
7272
"@react-native-community/netinfo": "^5.6.2",
73-
"@react-native-community/picker": "^1.6.5",
73+
"@react-native-picker/picker": "^1.9.4",
7474
"@testing-library/react-hooks": "^3.4.2",
7575
"@types/lodash": "^4.0.0",
7676
"@types/prop-types": "^15.5.3",
@@ -112,7 +112,7 @@
112112
"@react-native-community/blur": ">=3.4.1",
113113
"@react-native-community/datetimepicker": "^2.1.0",
114114
"@react-native-community/netinfo": "^5.6.2",
115-
"@react-native-community/picker": "^1.6.5"
115+
"@react-native-picker/picker": "^1.9.4"
116116
},
117117
"jest": {
118118
"preset": "react-native",

0 commit comments

Comments
 (0)