Commit 473d96a6 authored by zooble's avatar zooble

Merge pull request #8 from LzxHahaha/master

Debug以及增加两个属性
parents a5986f88 39c9044d
...@@ -22,21 +22,27 @@ export default class PickerAny extends React.Component { ...@@ -22,21 +22,27 @@ export default class PickerAny extends React.Component {
static propTypes = { static propTypes = {
pickerBtnText: PropTypes.string, pickerBtnText: PropTypes.string,
pickerCancelBtnText: PropTypes.string,
pickerBtnStyle: PropTypes.any, pickerBtnStyle: PropTypes.any,
pickerTitle: PropTypes.string,
pickerTitleStyle: PropTypes.any,
pickerToolBarStyle: PropTypes.any, pickerToolBarStyle: PropTypes.any,
pickerItemStyle: PropTypes.any, pickerItemStyle: PropTypes.any,
pickerHeight: PropTypes.number, pickerHeight: PropTypes.number,
showDuration: PropTypes.number, showDuration: PropTypes.number,
pickerData: PropTypes.any.isRequired, pickerData: PropTypes.any.isRequired,
selectedValue: PropTypes.any.isRequired, selectedValue: PropTypes.any.isRequired,
onPickerDone: PropTypes.func onPickerDone: PropTypes.func,
onPickerCancel: PropTypes.func
} }
static defaultProps = { static defaultProps = {
pickerBtnText: '完成', pickerBtnText: '完成',
pickerCancelBtnText: '取消',
pickerHeight: 250, pickerHeight: 250,
showDuration: 300, showDuration: 300,
onPickerDone: ()=>{} onPickerDone: ()=>{},
onPickerCancel: ()=>{}
} }
constructor(props, context){ constructor(props, context){
...@@ -56,7 +62,10 @@ export default class PickerAny extends React.Component { ...@@ -56,7 +62,10 @@ export default class PickerAny extends React.Component {
//the pickedValue must looks like [wheelone's, wheeltwo's, ...] //the pickedValue must looks like [wheelone's, wheeltwo's, ...]
//this.state.selectedValue may be the result of the first pickerWheel //this.state.selectedValue may be the result of the first pickerWheel
let pickerBtnText = props.pickerBtnText; let pickerBtnText = props.pickerBtnText;
let pickerCancelBtnText = props.pickerCancelBtnText;
let pickerBtnStyle = props.pickerBtnStyle; let pickerBtnStyle = props.pickerBtnStyle;
let pickerTitle = props.pickerTitle;
let pickerTitleStyle = props.pickerTitleStyle;
let pickerToolBarStyle = props.pickerToolBarStyle; let pickerToolBarStyle = props.pickerToolBarStyle;
let pickerItemStyle = props.pickerItemStyle; let pickerItemStyle = props.pickerItemStyle;
let pickerHeight = props.pickerHeight; let pickerHeight = props.pickerHeight;
...@@ -64,10 +73,12 @@ export default class PickerAny extends React.Component { ...@@ -64,10 +73,12 @@ export default class PickerAny extends React.Component {
let pickerData = props.pickerData; let pickerData = props.pickerData;
let selectedValue = props.selectedValue; let selectedValue = props.selectedValue;
let onPickerDone = props.onPickerDone; let onPickerDone = props.onPickerDone;
let onPickerCancel = props.onPickerCancel;
let pickerStyle = pickerData.constructor === Array ? 'parallel' : 'cascade'; let pickerStyle = pickerData.constructor === Array ? 'parallel' : 'cascade';
let firstWheelData; let firstWheelData;
let firstPickedData; let firstPickedData;
let secondPickedData;
let secondWheelData; let secondWheelData;
let secondPickedDataIndex; let secondPickedDataIndex;
let thirdWheelData; let thirdWheelData;
...@@ -96,7 +107,10 @@ export default class PickerAny extends React.Component { ...@@ -96,7 +107,10 @@ export default class PickerAny extends React.Component {
this.pickerStyle = pickerStyle; this.pickerStyle = pickerStyle;
return { return {
pickerBtnText, pickerBtnText,
pickerCancelBtnText,
pickerBtnStyle, pickerBtnStyle,
pickerTitle,
pickerTitleStyle,
pickerToolBarStyle, pickerToolBarStyle,
pickerItemStyle, pickerItemStyle,
pickerHeight, pickerHeight,
...@@ -104,6 +118,7 @@ export default class PickerAny extends React.Component { ...@@ -104,6 +118,7 @@ export default class PickerAny extends React.Component {
pickerData, pickerData,
selectedValue, selectedValue,
onPickerDone, onPickerDone,
onPickerCancel,
//list of first wheel data //list of first wheel data
firstWheelData, firstWheelData,
//first wheel selected value //first wheel selected value
...@@ -176,6 +191,11 @@ export default class PickerAny extends React.Component { ...@@ -176,6 +191,11 @@ export default class PickerAny extends React.Component {
this.pickerWheel.moveDown(); this.pickerWheel.moveDown();
} }
_pickerCancel() {
this._toggle();
this.state.onPickerCancel();
}
_pickerFinish(){ _pickerFinish(){
this._toggle(); this._toggle();
this.state.onPickerDone(this.pickedValue); this.state.onPickerDone(this.pickedValue);
...@@ -298,7 +318,7 @@ export default class PickerAny extends React.Component { ...@@ -298,7 +318,7 @@ export default class PickerAny extends React.Component {
selectedValue={me.state.firstPickedData} selectedValue={me.state.firstPickedData}
onValueChange={value => { onValueChange={value => {
let secondWheelData = Object.keys(pickerData[value]); let secondWheelData = Object.keys(pickerData[value]);
cascadeData = me._getCascadeData(pickerData, me.pickedValue, value, secondWheelData[0]); let cascadeData = me._getCascadeData(pickerData, me.pickedValue, value, secondWheelData[0]);
//when onPicked, this.pickedValue will pass to the parent //when onPicked, this.pickedValue will pass to the parent
//when firstWheel changed, second and third will also change //when firstWheel changed, second and third will also change
if(cascadeData.thirdWheelData){ if(cascadeData.thirdWheelData){
...@@ -412,14 +432,20 @@ export default class PickerAny extends React.Component { ...@@ -412,14 +432,20 @@ export default class PickerAny extends React.Component {
<Text style={styles.pickerMoveBtn} onPress={this._nextPressHandle.bind(this)}>下一个</Text> <Text style={styles.pickerMoveBtn} onPress={this._nextPressHandle.bind(this)}>下一个</Text>
</View> </View>
);*/ );*/
let pickerBtn = null; // let pickerBtn = null;
return ( return (
<Animated.View style={[styles.picker, { <Animated.View style={[styles.picker, {
height: this.state.pickerHeight, height: this.state.pickerHeight,
bottom: this.state.slideAnim bottom: this.state.slideAnim
}]}> }]}>
<View style={[styles.pickerToolbar, this.state.pickerToolBarStyle]}> <View style={[styles.pickerToolbar, this.state.pickerToolBarStyle]}>
{pickerBtn} <View style={styles.pickerCancelBtn}>
<Text style={[styles.pickerFinishBtnText, this.state.pickerBtnStyle]}
onPress={this._pickerCancel.bind(this)}>{this.state.pickerCancelBtnText}</Text>
</View>
<Text style={[styles.pickerTitle, this.state.pickerTitleStyle]} numberOfLines={1}>
{this.state.pickerTitle}
</Text>
<View style={styles.pickerFinishBtn}> <View style={styles.pickerFinishBtn}>
<Text style={[styles.pickerFinishBtnText, this.state.pickerBtnStyle]} <Text style={[styles.pickerFinishBtnText, this.state.pickerBtnStyle]}
onPress={this._pickerFinish.bind(this)}>{this.state.pickerBtnText}</Text> onPress={this._pickerFinish.bind(this)}>{this.state.pickerBtnText}</Text>
...@@ -469,6 +495,18 @@ let styles = StyleSheet.create({ ...@@ -469,6 +495,18 @@ let styles = StyleSheet.create({
fontSize: 16, fontSize: 16,
marginLeft: 20 marginLeft: 20
}, },
pickerCancelBtn: {
flex: 1,
flexDirection: 'row',
justifyContent: 'flex-start',
alignItems: 'center',
marginLeft: 20
},
pickerTitle: {
flex: 5,
color: 'black',
textAlign: 'center'
},
pickerFinishBtn: { pickerFinishBtn: {
flex: 1, flex: 1,
flexDirection: 'row', flexDirection: 'row',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment