Skip to content

Commit c7fd75b

Browse files
committed
Added mode property. Supporting time mode.
1 parent 8cc1885 commit c7fd75b

File tree

8 files changed

+35
-9
lines changed

8 files changed

+35
-9
lines changed

android/src/main/java/com/henninghall/date_picker/DatePickerManager.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,16 @@ public PickerView createViewInstance(ThemedReactContext reactContext) {
2828
return new PickerView();
2929
}
3030

31+
@ReactProp(name = "mode")
32+
public void setMode(PickerView view, @Nullable String mode) {
33+
try {
34+
view.setMode(Mode.valueOf(mode));
35+
} catch (Exception e) {
36+
throw new IllegalArgumentException("Invalid mode. Valid modes: 'datetime', 'date', 'time'");
37+
}
38+
39+
}
40+
3141
@ReactProp(name = "date")
3242
public void setDate(PickerView view, @Nullable double date) {
3343
view.setDate(Utils.unixToDate(date));
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.henninghall.date_picker;
2+
3+
public enum Mode {
4+
date, time, datetime
5+
}

android/src/main/java/com/henninghall/date_picker/PickerView.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public class PickerView extends RelativeLayout {
4545
private Date maxDate;
4646
public int minuteInterval = 1;
4747
public Locale locale;
48+
public Mode mode;
4849

4950
public PickerView() {
5051
super(DatePickerManager.context);
@@ -164,13 +165,14 @@ private String getDateString() {
164165
+ ampmWheel.getValue();
165166
}
166167

168+
public void setMode(Mode mode) {
169+
this.mode = mode;
170+
applyOnAllWheels(new Refresh());
171+
}
172+
167173
public Collection<Wheel> getVisibleWheels() {
168174
Collection<Wheel> visibleWheels = new ArrayList<>();
169-
for (Wheel wheel: getAllWheels()) {
170-
if (wheel.visible()) {
171-
visibleWheels.add(wheel);
172-
}
173-
}
175+
for (Wheel wheel: getAllWheels()) if (wheel.visible()) visibleWheels.add(wheel);
174176
return visibleWheels;
175177
}
176178

android/src/main/java/com/henninghall/date_picker/wheels/AmPmWheel.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.henninghall.date_picker.wheels;
22

3+
import com.henninghall.date_picker.Mode;
34
import com.henninghall.date_picker.PickerView;
45
import com.henninghall.date_picker.Utils;
56
import java.util.Calendar;
@@ -33,7 +34,7 @@ void init() {
3334

3435
@Override
3536
public boolean visible() {
36-
return Utils.usesAmPm(pickerView.locale);
37+
return Utils.usesAmPm(pickerView.locale) && pickerView.mode != Mode.date;
3738
}
3839

3940
@Override

android/src/main/java/com/henninghall/date_picker/wheels/DayWheel.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.henninghall.date_picker.wheels;
22

3+
import com.henninghall.date_picker.Mode;
34
import com.henninghall.date_picker.PickerView;
45
import com.henninghall.date_picker.Utils;
56
import com.henninghall.date_picker.WheelChangeListener;
@@ -47,7 +48,7 @@ void init() {
4748

4849
@Override
4950
public boolean visible() {
50-
return true;
51+
return pickerView.mode == Mode.datetime;
5152
}
5253

5354
@Override

android/src/main/java/com/henninghall/date_picker/wheels/HourWheel.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.henninghall.date_picker.wheels;
22

3+
import com.henninghall.date_picker.Mode;
34
import com.henninghall.date_picker.PickerView;
45
import com.henninghall.date_picker.Utils;
56
import java.util.Calendar;
@@ -30,7 +31,7 @@ void init() {
3031

3132
@Override
3233
public boolean visible() {
33-
return true;
34+
return pickerView.mode != Mode.date;
3435
}
3536

3637
@Override

android/src/main/java/com/henninghall/date_picker/wheels/MinutesWheel.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.henninghall.date_picker.wheels;
22

3+
import com.henninghall.date_picker.Mode;
34
import com.henninghall.date_picker.PickerView;
45
import java.util.Calendar;
56
import java.util.Date;
@@ -31,7 +32,7 @@ void init() {
3132

3233
@Override
3334
public boolean visible() {
34-
return true;
35+
return pickerView.mode != Mode.date;
3536
}
3637

3738
@Override

index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ const NativeDatePicker = requireNativeComponent(`DatePickerManager`, DatePickerA
1818

1919
class DatePickerAndroid extends React.Component {
2020

21+
static defaultProps = {
22+
mode: 'datetime',
23+
minuteInterval: 1,
24+
};
25+
2126
_onChange = e => this.props.onDateChange(new Date(parseInt(e.nativeEvent.date)));
2227
_maximumDate = () => this.props.maximumDate && this.props.maximumDate.getTime();
2328
_minimumDate = () => this.props.minimumDate && this.props.minimumDate.getTime();

0 commit comments

Comments
 (0)