react-native-cn-month-year-picker
Version:
React Native Month Picker component for iOS & Android
64 lines (58 loc) • 1.75 kB
JavaScript
import React, { useState, useCallback, useEffect } from 'react';
import { View, StyleSheet, Dimensions, Animated, Modal, TouchableOpacity } from 'react-native';
import moment from 'moment';
import invariant from 'invariant';
moment.suppressDeprecationWarnings = true;
import RNMonthPickerView from './RNMonthPickerNativeComponent';
import {
ACTION_DATE_SET,
ACTION_DISMISSED,
ACTION_NEUTRAL,
NATIVE_FORMAT,
DEFAULT_MODE,
} from './constants';
const { width } = Dimensions.get('screen');
const styles = StyleSheet.create({
container: {
width,
position: 'absolute',
zIndex: 500,
bottom: 0,
},
pickerContainer: {
height: 244,
width,
},
picker: { flex: 1 },
});
const MonthPicker = (props) => {
return (
<Modal
ref={props.ref}
transparent={true}
animationType="fade"
visible={props.visible ? props.visible : props.close}
>
<TouchableOpacity style={{ flex: 1, backgroundColor:"#00000077" }} onPress={props.close} />
<View style={styles.pickerContainer}>
<RNMonthPickerView
style={styles.picker}
value={new Date(moment(props.value, NATIVE_FORMAT).toDate()).getTime()}
minimumDate={props.minimumDate?.getTime() ?? null}
maximumDate={props.maximumDate?.getTime() ?? null}
onDone={props.close}
onCancel={props.close}
maximumDate={props.maximumDate}
minimumDate={props.minimumDate}
locale={props.locale ? props.locale : "en"}
okButton={props.okButton}
cancelButton={props.cancelButton}
onChange={(e) => {
props.onChange(e.nativeEvent?.newDate)
}}
/>
</View>
</Modal>
);
};
export default MonthPicker;