diff --git a/example/PickerTest/index.js b/example/PickerTest/index.js index dc0210a84f5e6e8ff6b4bb76734a5ecbe4d36c8b..4183c5a01d806d78d1acc10f213008205f6e8a41 100644 --- a/example/PickerTest/index.js +++ b/example/PickerTest/index.js @@ -19,7 +19,6 @@ class PickerTest extends Component { constructor(props, context) { super(props, context); - this._showDatePicker(); } _createDateData() { @@ -113,6 +112,78 @@ class PickerTest extends Component { Picker.show(); } + _showTimePicker() { + let years = [], + months = [], + days = [], + hours = [], + minutes = []; + + for(let i=1;i<51;i++){ + years.push(i+1980); + } + for(let i=1;i<13;i++){ + months.push(i); + hours.push(i); + } + for(let i=1;i<32;i++){ + days.push(i); + } + for(let i=1;i<61;i++){ + minutes.push(i); + } + let pickerData = [years, months, days, ['am', 'pm'], hours, minutes]; + let date = new Date(); + let selectedValue = [ + [date.getFullYear()], + [date.getMonth()+1], + [date.getDate()], + [date.getHours() > 11 ? 'pm' : 'am'], + [date.getHours() === 12 ? 12 : date.getHours()%12], + [date.getMinutes()] + ]; + Picker.init({ + pickerData, + selectedValue, + pickerTitleText: 'Select Date and Time', + wheelFlex: [2, 1, 1, 2, 1, 1], + onPickerConfirm: pickedValue => { + console.log('area', pickedValue); + }, + onPickerCancel: pickedValue => { + console.log('area', pickedValue); + }, + onPickerSelect: pickedValue => { + let targetValue = [...pickedValue]; + if(parseInt(targetValue[1]) === 2){ + if(targetValue[0]%4 === 0 && targetValue[2] > 29){ + targetValue[2] = 29; + } + else if(targetValue[0]%4 !== 0 && targetValue[2] > 28){ + targetValue[2] = 28; + } + } + else if(targetValue[1] in {4:1, 6:1, 9:1, 11:1} && targetValue[2] > 30){ + targetValue[2] = 30; + + } + // forbidden some value such as some 2.29, 4.31, 6.31... + if(JSON.stringify(targetValue) !== JSON.stringify(pickedValue)){ + // android will return String all the timeļ¼Œbut we put Number into picker at first + // so we need to convert them to Number again + targetValue.map((v, k) => { + if(k !== 3){ + targetValue[k] = parseInt(v); + } + }); + Picker.select(targetValue); + pickedValue = targetValue; + } + } + }); + Picker.show(); + } + _toggle() { Picker.toggle(); } @@ -129,6 +200,9 @@ class PickerTest extends Component { DatePicker + + TimePicker + AreaPicker diff --git a/index.js b/index.js index f951ed30e15edb51f0b2dbc065e643111a6695fc..a4706b7b2b66d25ad80d0283b80dadd212d3edec 100644 --- a/index.js +++ b/index.js @@ -56,9 +56,14 @@ export default { }, select(arr, fn) { - Picker.select(arr, err => { - typeof fn === 'function' && fn(err); - }); + if(ios){ + Picker.select(arr); + } + else if(android){ + Picker.select(arr, err => { + typeof fn === 'function' && fn(err); + }); + } }, toggle(){ diff --git a/package.json b/package.json index 84833801c327f8b8116b163979ae2b530a3526ee..6cecb855be832a83bc916abdb0393a1aac04999e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-picker", - "version": "4.0.17", + "version": "4.0.18", "description": "", "main": "index.js", "scripts": {