SpinnerDatePicker.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import React, { FC, useState } from 'react';
  2. import { Colors } from '../../theme';
  3. import DateTimePicker, { DateTimePickerEvent } from '@react-native-community/datetimepicker';
  4. import { DatePicker } from 'react-native-wheel-pick';
  5. import { Platform } from 'react-native';
  6. type Props = {
  7. selectedDate: (date: Date) => void;
  8. };
  9. const SpinnerDatePicker: FC<Props> = ({ selectedDate }) => {
  10. const [value, setValue] = useState<Date>(new Date());
  11. const onChange = (event: DateTimePickerEvent, selectedSpinnerDate?: Date) => {
  12. if (event.type === 'set') {
  13. selectedDate(selectedSpinnerDate!);
  14. setValue(selectedSpinnerDate!);
  15. }
  16. };
  17. const onChangeAndroid = (selectedSpinnerDate?: Date) => {
  18. selectedDate(selectedSpinnerDate!);
  19. setValue(selectedSpinnerDate!);
  20. };
  21. if (!value) return
  22. return Platform.OS === 'ios' ? (
  23. <DateTimePicker
  24. value={value}
  25. textColor={Colors.DARK_BLUE}
  26. mode={'date'}
  27. display={'spinner'}
  28. onChange={onChange}
  29. minimumDate={new Date(1930, 0, 1)}
  30. maximumDate={new Date()}
  31. />
  32. ) : (
  33. <DatePicker
  34. date={value}
  35. style={{
  36. backgroundColor: 'white',
  37. width: undefined,
  38. marginVertical: 16,
  39. height: 215
  40. }}
  41. onDateChange={onChangeAndroid}
  42. minimumDate={new Date(1930, 0, 1)}
  43. maximumDate={new Date()}
  44. textColor={Colors.DARK_BLUE}
  45. textSize={21}
  46. />
  47. );
  48. };
  49. export default SpinnerDatePicker;