diff --git a/android/src/main/java/com/henninghall/date_picker/DatePickerManager.java b/android/src/main/java/com/henninghall/date_picker/DatePickerManager.java index 3d41740..da4898a 100644 --- a/android/src/main/java/com/henninghall/date_picker/DatePickerManager.java +++ b/android/src/main/java/com/henninghall/date_picker/DatePickerManager.java @@ -28,6 +28,16 @@ public class DatePickerManager extends SimpleViewManager { return new PickerView(); } + @ReactProp(name = "mode") + public void setMode(PickerView view, @Nullable String mode) { + try { + view.setMode(Mode.valueOf(mode)); + } catch (Exception e) { + throw new IllegalArgumentException("Invalid mode. Valid modes: 'datetime', 'date', 'time'"); + } + + } + @ReactProp(name = "date") public void setDate(PickerView view, @Nullable double date) { view.setDate(Utils.unixToDate(date)); diff --git a/android/src/main/java/com/henninghall/date_picker/Mode.java b/android/src/main/java/com/henninghall/date_picker/Mode.java new file mode 100644 index 0000000..43b03f1 --- /dev/null +++ b/android/src/main/java/com/henninghall/date_picker/Mode.java @@ -0,0 +1,5 @@ +package com.henninghall.date_picker; + +public enum Mode { + date, time, datetime +} diff --git a/android/src/main/java/com/henninghall/date_picker/PickerView.java b/android/src/main/java/com/henninghall/date_picker/PickerView.java index 7128577..d4a054a 100644 --- a/android/src/main/java/com/henninghall/date_picker/PickerView.java +++ b/android/src/main/java/com/henninghall/date_picker/PickerView.java @@ -45,6 +45,7 @@ public class PickerView extends RelativeLayout { private Date maxDate; public int minuteInterval = 1; public Locale locale; + public Mode mode; public PickerView() { super(DatePickerManager.context); @@ -164,13 +165,14 @@ public class PickerView extends RelativeLayout { + ampmWheel.getValue(); } + public void setMode(Mode mode) { + this.mode = mode; + applyOnAllWheels(new Refresh()); + } + public Collection getVisibleWheels() { Collection visibleWheels = new ArrayList<>(); - for (Wheel wheel: getAllWheels()) { - if (wheel.visible()) { - visibleWheels.add(wheel); - } - } + for (Wheel wheel: getAllWheels()) if (wheel.visible()) visibleWheels.add(wheel); return visibleWheels; } diff --git a/android/src/main/java/com/henninghall/date_picker/wheels/AmPmWheel.java b/android/src/main/java/com/henninghall/date_picker/wheels/AmPmWheel.java index 65ab41a..443703e 100644 --- a/android/src/main/java/com/henninghall/date_picker/wheels/AmPmWheel.java +++ b/android/src/main/java/com/henninghall/date_picker/wheels/AmPmWheel.java @@ -1,5 +1,6 @@ package com.henninghall.date_picker.wheels; +import com.henninghall.date_picker.Mode; import com.henninghall.date_picker.PickerView; import com.henninghall.date_picker.Utils; import java.util.Calendar; @@ -33,7 +34,7 @@ public class AmPmWheel extends Wheel { @Override public boolean visible() { - return Utils.usesAmPm(pickerView.locale); + return Utils.usesAmPm(pickerView.locale) && pickerView.mode != Mode.date; } @Override diff --git a/android/src/main/java/com/henninghall/date_picker/wheels/DayWheel.java b/android/src/main/java/com/henninghall/date_picker/wheels/DayWheel.java index bd26149..0ab7b4b 100644 --- a/android/src/main/java/com/henninghall/date_picker/wheels/DayWheel.java +++ b/android/src/main/java/com/henninghall/date_picker/wheels/DayWheel.java @@ -1,5 +1,6 @@ package com.henninghall.date_picker.wheels; +import com.henninghall.date_picker.Mode; import com.henninghall.date_picker.PickerView; import com.henninghall.date_picker.Utils; import com.henninghall.date_picker.WheelChangeListener; @@ -47,7 +48,7 @@ public class DayWheel extends Wheel { @Override public boolean visible() { - return true; + return pickerView.mode == Mode.datetime; } @Override diff --git a/android/src/main/java/com/henninghall/date_picker/wheels/HourWheel.java b/android/src/main/java/com/henninghall/date_picker/wheels/HourWheel.java index 08abe51..620fd42 100644 --- a/android/src/main/java/com/henninghall/date_picker/wheels/HourWheel.java +++ b/android/src/main/java/com/henninghall/date_picker/wheels/HourWheel.java @@ -1,5 +1,6 @@ package com.henninghall.date_picker.wheels; +import com.henninghall.date_picker.Mode; import com.henninghall.date_picker.PickerView; import com.henninghall.date_picker.Utils; import java.util.Calendar; @@ -30,7 +31,7 @@ public class HourWheel extends Wheel { @Override public boolean visible() { - return true; + return pickerView.mode != Mode.date; } @Override diff --git a/android/src/main/java/com/henninghall/date_picker/wheels/MinutesWheel.java b/android/src/main/java/com/henninghall/date_picker/wheels/MinutesWheel.java index 0ace97d..134948a 100644 --- a/android/src/main/java/com/henninghall/date_picker/wheels/MinutesWheel.java +++ b/android/src/main/java/com/henninghall/date_picker/wheels/MinutesWheel.java @@ -1,5 +1,6 @@ package com.henninghall.date_picker.wheels; +import com.henninghall.date_picker.Mode; import com.henninghall.date_picker.PickerView; import java.util.Calendar; import java.util.Date; @@ -31,7 +32,7 @@ public class MinutesWheel extends Wheel { @Override public boolean visible() { - return true; + return pickerView.mode != Mode.date; } @Override diff --git a/index.js b/index.js index 4ae62b2..0e9f699 100644 --- a/index.js +++ b/index.js @@ -18,6 +18,11 @@ const NativeDatePicker = requireNativeComponent(`DatePickerManager`, DatePickerA class DatePickerAndroid extends React.Component { + static defaultProps = { + mode: 'datetime', + minuteInterval: 1, + }; + _onChange = e => this.props.onDateChange(new Date(parseInt(e.nativeEvent.date))); _maximumDate = () => this.props.maximumDate && this.props.maximumDate.getTime(); _minimumDate = () => this.props.minimumDate && this.props.minimumDate.getTime();