Browse Source

Added mode property. Supporting time mode.

master
Henning Hall 7 years ago
parent
commit
c7fd75b472
8 changed files with 35 additions and 9 deletions
  1. +10
    -0
      android/src/main/java/com/henninghall/date_picker/DatePickerManager.java
  2. +5
    -0
      android/src/main/java/com/henninghall/date_picker/Mode.java
  3. +7
    -5
      android/src/main/java/com/henninghall/date_picker/PickerView.java
  4. +2
    -1
      android/src/main/java/com/henninghall/date_picker/wheels/AmPmWheel.java
  5. +2
    -1
      android/src/main/java/com/henninghall/date_picker/wheels/DayWheel.java
  6. +2
    -1
      android/src/main/java/com/henninghall/date_picker/wheels/HourWheel.java
  7. +2
    -1
      android/src/main/java/com/henninghall/date_picker/wheels/MinutesWheel.java
  8. +5
    -0
      index.js

+ 10
- 0
android/src/main/java/com/henninghall/date_picker/DatePickerManager.java View File

@ -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));

+ 5
- 0
android/src/main/java/com/henninghall/date_picker/Mode.java View File

@ -0,0 +1,5 @@
package com.henninghall.date_picker;
public enum Mode {
date, time, datetime
}

+ 7
- 5
android/src/main/java/com/henninghall/date_picker/PickerView.java View File

@ -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<Wheel> getVisibleWheels() {
Collection<Wheel> 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;
}

+ 2
- 1
android/src/main/java/com/henninghall/date_picker/wheels/AmPmWheel.java View File

@ -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

+ 2
- 1
android/src/main/java/com/henninghall/date_picker/wheels/DayWheel.java View File

@ -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

+ 2
- 1
android/src/main/java/com/henninghall/date_picker/wheels/HourWheel.java View File

@ -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

+ 2
- 1
android/src/main/java/com/henninghall/date_picker/wheels/MinutesWheel.java View File

@ -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

+ 5
- 0
index.js View File

@ -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();

Loading…
Cancel
Save