Skip to content

Commit dc635af

Browse files
authored
6.3.4 (#271)
1 parent ed87ab6 commit dc635af

File tree

4 files changed

+43
-32
lines changed

4 files changed

+43
-32
lines changed

CHANGELOG.md

+9
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
### 6.3.4
2+
3+
##### Bugfix
4+
5+
- Fix for `onDonePress` regression (#236)
6+
- "Done" Text element now set to `allowFontScaling={false}` (#247)
7+
8+
---
9+
110
### 6.3.3
211

312
##### Chore

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-native-picker-select",
3-
"version": "6.3.3",
3+
"version": "6.3.4",
44
"description": "A Picker component for React Native which emulates the native <select> interfaces for each platform",
55
"license": "MIT",
66
"author": "Michael Lefkowitz <[email protected]>",

src/index.js

+31-27
Original file line numberDiff line numberDiff line change
@@ -147,13 +147,13 @@ export default class RNPickerSelect extends PureComponent {
147147
super(props);
148148

149149
const items = RNPickerSelect.handlePlaceholder({
150-
placeholder: this.props.placeholder,
151-
}).concat(this.props.items);
150+
placeholder: props.placeholder,
151+
}).concat(props.items);
152152

153153
const { selectedItem } = RNPickerSelect.getSelectedItem({
154154
items,
155-
key: this.props.itemKey,
156-
value: this.props.value,
155+
key: props.itemKey,
156+
value: props.value,
157157
});
158158

159159
this.state = {
@@ -170,7 +170,6 @@ export default class RNPickerSelect extends PureComponent {
170170
this.onOrientationChange = this.onOrientationChange.bind(this);
171171
this.setInputRef = this.setInputRef.bind(this);
172172
this.togglePicker = this.togglePicker.bind(this);
173-
this.triggerDoneCallback = this.triggerDoneCallback.bind(this);
174173
this.renderInputAccessoryView = this.renderInputAccessoryView.bind(this);
175174
}
176175

@@ -210,8 +209,9 @@ export default class RNPickerSelect extends PureComponent {
210209

211210
getPlaceholderStyle() {
212211
const { placeholder, placeholderTextColor, style } = this.props;
212+
const { selectedItem } = this.state;
213213

214-
if (!isEqual(placeholder, {}) && this.state.selectedItem.label === placeholder.label) {
214+
if (!isEqual(placeholder, {}) && selectedItem.label === placeholder.label) {
215215
return {
216216
...defaultStyles.placeholder,
217217
color: placeholderTextColor, // deprecated
@@ -223,31 +223,26 @@ export default class RNPickerSelect extends PureComponent {
223223

224224
triggerOpenCloseCallbacks() {
225225
const { onOpen, onClose } = this.props;
226+
const { showPicker } = this.state;
226227

227-
if (!this.state.showPicker && onOpen) {
228+
if (!showPicker && onOpen) {
228229
onOpen();
229230
}
230231

231-
if (this.state.showPicker && onClose) {
232+
if (showPicker && onClose) {
232233
onClose();
233234
}
234235
}
235236

236-
triggerDoneCallback() {
237-
const { hideDoneBar, onDonePress } = this.props;
238-
if (!hideDoneBar && onDonePress) {
239-
onDonePress();
240-
}
241-
}
242-
243237
togglePicker(animate = false, postToggleCallback) {
244238
const { modalProps, disabled } = this.props;
239+
const { showPicker } = this.state;
245240

246241
if (disabled) {
247242
return;
248243
}
249244

250-
if (!this.state.showPicker) {
245+
if (!showPicker) {
251246
Keyboard.dismiss();
252247
}
253248

@@ -272,7 +267,9 @@ export default class RNPickerSelect extends PureComponent {
272267
}
273268

274269
renderPickerItems() {
275-
return this.state.items.map((item) => {
270+
const { items } = this.state;
271+
272+
return items.map((item) => {
276273
return (
277274
<Picker.Item
278275
label={item.label}
@@ -291,6 +288,7 @@ export default class RNPickerSelect extends PureComponent {
291288
hideDoneBar,
292289
onUpArrow,
293290
onDownArrow,
291+
onDonePress,
294292
style,
295293
} = this.props;
296294

@@ -342,13 +340,15 @@ export default class RNPickerSelect extends PureComponent {
342340
</View>
343341
<TouchableWithoutFeedback
344342
onPress={() => {
345-
this.togglePicker(true);
343+
this.togglePicker(true, onDonePress);
346344
}}
347345
hitSlop={{ top: 4, right: 4, bottom: 4, left: 4 }}
348346
testID="done_button"
349347
>
350348
<View testID="needed_for_touchable">
351-
<Text style={[defaultStyles.done, style.done]}>{doneText}</Text>
349+
<Text allowFontScaling={false} style={[defaultStyles.done, style.done]}>
350+
{doneText}
351+
</Text>
352352
</View>
353353
</TouchableWithoutFeedback>
354354
</View>
@@ -374,6 +374,8 @@ export default class RNPickerSelect extends PureComponent {
374374

375375
renderTextInputOrChildren() {
376376
const { children, style, textInputProps } = this.props;
377+
const { selectedItem } = this.state;
378+
377379
const containerStyle =
378380
Platform.OS === 'ios' ? style.inputIOSContainer : style.inputAndroidContainer;
379381

@@ -392,7 +394,7 @@ export default class RNPickerSelect extends PureComponent {
392394
Platform.OS === 'ios' ? style.inputIOS : style.inputAndroid,
393395
this.getPlaceholderStyle(),
394396
]}
395-
value={this.state.selectedItem.label}
397+
value={selectedItem.label}
396398
ref={this.setInputRef}
397399
editable={false}
398400
{...textInputProps}
@@ -404,6 +406,7 @@ export default class RNPickerSelect extends PureComponent {
404406

405407
renderIOS() {
406408
const { style, modalProps, pickerProps } = this.props;
409+
const { animationType, orientation, selectedItem, showPicker } = this.state;
407410

408411
return (
409412
<View style={[defaultStyles.viewContainer, style.viewContainer]}>
@@ -417,11 +420,10 @@ export default class RNPickerSelect extends PureComponent {
417420
</TouchableWithoutFeedback>
418421
<Modal
419422
testID="ios_modal"
420-
visible={this.state.showPicker}
423+
visible={showPicker}
421424
transparent
422-
animationType={this.state.animationType}
425+
animationType={animationType}
423426
supportedOrientations={['portrait', 'landscape']}
424-
onDismiss={this.triggerDoneCallback}
425427
onOrientationChange={this.onOrientationChange}
426428
{...modalProps}
427429
>
@@ -436,14 +438,14 @@ export default class RNPickerSelect extends PureComponent {
436438
<View
437439
style={[
438440
defaultStyles.modalViewBottom,
439-
{ height: this.state.orientation === 'portrait' ? 215 : 162 },
441+
{ height: orientation === 'portrait' ? 215 : 162 },
440442
style.modalViewBottom,
441443
]}
442444
>
443445
<Picker
444446
testID="ios_picker"
445447
onValueChange={this.onValueChange}
446-
selectedValue={this.state.selectedItem.value}
448+
selectedValue={selectedItem.value}
447449
{...pickerProps}
448450
>
449451
{this.renderPickerItems()}
@@ -456,6 +458,7 @@ export default class RNPickerSelect extends PureComponent {
456458

457459
renderAndroidHeadless() {
458460
const { disabled, Icon, style, pickerProps } = this.props;
461+
const { selectedItem } = this.state;
459462

460463
return (
461464
<View style={style.headlessAndroidContainer}>
@@ -469,7 +472,7 @@ export default class RNPickerSelect extends PureComponent {
469472
testID="android_picker_headless"
470473
enabled={!disabled}
471474
onValueChange={this.onValueChange}
472-
selectedValue={this.state.selectedItem.value}
475+
selectedValue={selectedItem.value}
473476
{...pickerProps}
474477
>
475478
{this.renderPickerItems()}
@@ -480,6 +483,7 @@ export default class RNPickerSelect extends PureComponent {
480483

481484
renderAndroidNativePickerStyle() {
482485
const { disabled, Icon, style, pickerProps } = this.props;
486+
const { selectedItem } = this.state;
483487

484488
return (
485489
<View style={[defaultStyles.viewContainer, style.viewContainer]}>
@@ -492,7 +496,7 @@ export default class RNPickerSelect extends PureComponent {
492496
testID="android_picker"
493497
enabled={!disabled}
494498
onValueChange={this.onValueChange}
495-
selectedValue={this.state.selectedItem.value}
499+
selectedValue={selectedItem.value}
496500
{...pickerProps}
497501
>
498502
{this.renderPickerItems()}

test/test.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -304,10 +304,8 @@ describe('RNPickerSelect', () => {
304304
/>
305305
);
306306

307-
wrapper
308-
.find('[testID="ios_modal"]')
309-
.props()
310-
.onDismiss();
307+
wrapper.find('[testID="done_button"]').simulate('press');
308+
311309
expect(onDonePressSpy).toHaveBeenCalledWith();
312310
});
313311

0 commit comments

Comments
 (0)