You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

68 lines
2.1 KiB

package com.henninghall.date_picker;
import android.support.annotation.Nullable;
import android.view.View;
import com.facebook.react.common.MapBuilder;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.annotations.ReactProp;
import net.time4j.android.ApplicationStarter;
import org.apache.commons.lang3.LocaleUtils;
import java.util.Map;
public class DatePickerManager extends SimpleViewManager<View> {
public static final String REACT_CLASS = "DatePickerManager";
public static ThemedReactContext context;
@Override
public String getName() {
return REACT_CLASS;
}
@Override
public PickerView createViewInstance(ThemedReactContext reactContext) {
DatePickerManager.context = reactContext;
ApplicationStarter.initialize(reactContext, true); // with prefetch on background thread
return new PickerView();
}
@ReactProp(name = "date")
public void setDate(PickerView view, @Nullable double date) {
view.setDate(Utils.unixToDate(date));
}
@ReactProp(name = "locale")
public void setLocale(PickerView view, @Nullable String locale) {
view.setLocale(LocaleUtils.toLocale(locale.replace('-','_')));
view.requestLayout();
}
@ReactProp(name = "minimumDate")
public void setMinimumDate(PickerView view, @Nullable double date) {
view.setMinimumDate(Utils.unixToDate(date));
}
@ReactProp(name = "maximumDate")
public void setMaximumDate(PickerView view, @Nullable double date) {
view.setMaximumDate(Utils.unixToDate(date));
}
@ReactProp(name = "minuteInterval")
public void setMinuteInterval(PickerView view, @Nullable int interval) throws Exception {
if (interval < 0 || interval > 59) throw new Exception("Minute interval out of bounds");
if (interval > 1) view.setMinuteInterval(interval);
}
public Map getExportedCustomBubblingEventTypeConstants() {
return MapBuilder.builder()
.put("dateChange", MapBuilder.of("phasedRegistrationNames",
MapBuilder.of("bubbled", "onChange")
)
).build();
}
}