diff --git a/README.md b/README.md
index 48aa48f..4855b1b 100644
--- a/README.md
+++ b/README.md
@@ -11,19 +11,24 @@ This is a React Native Date Picker with following main features:
iOS |
- Android |
|
+
+
+
+ Android |
+
+
- |
+
+
+ |
- A slightly improved DatePickerIOS. |
- A custom made native component. |
+ Choose from 2 different variants |
-
## Installation
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 f08a0d8..6cb67ae 100644
--- a/android/src/main/java/com/henninghall/date_picker/DatePickerManager.java
+++ b/android/src/main/java/com/henninghall/date_picker/DatePickerManager.java
@@ -7,6 +7,7 @@ import com.facebook.react.common.MapBuilder;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.annotations.ReactPropGroup;
+import com.henninghall.date_picker.props.VariantProp;
import com.henninghall.date_picker.props.DateProp;
import com.henninghall.date_picker.props.FadeToColorProp;
import com.henninghall.date_picker.props.LocaleProp;
@@ -41,7 +42,9 @@ public class DatePickerManager extends SimpleViewManager {
}
@ReactPropGroup(names = { DateProp.name, ModeProp.name, LocaleProp.name, MaximumDateProp.name,
- MinimumDateProp.name, FadeToColorProp.name, TextColorProp.name, UtcProp.name, MinuteIntervalProp.name})
+ MinimumDateProp.name, FadeToColorProp.name, TextColorProp.name, UtcProp.name, MinuteIntervalProp.name,
+ VariantProp.name
+ })
public void setProps(PickerView view, int index, Dynamic value) {
updateProp("setProps", view, index, value);
}
diff --git a/android/src/main/java/com/henninghall/date_picker/DerivedData.java b/android/src/main/java/com/henninghall/date_picker/DerivedData.java
index a1ea1e3..13fb561 100644
--- a/android/src/main/java/com/henninghall/date_picker/DerivedData.java
+++ b/android/src/main/java/com/henninghall/date_picker/DerivedData.java
@@ -3,6 +3,7 @@ package com.henninghall.date_picker;
import android.util.Log;
import com.henninghall.date_picker.models.Mode;
+import com.henninghall.date_picker.models.Variant;
import com.henninghall.date_picker.models.WheelType;
import java.util.ArrayList;
@@ -96,4 +97,17 @@ public class DerivedData {
return oddShowCount;
}
+ public boolean hasNativeStyle() {
+ return state.getVariant() == Variant.nativeAndroid;
+ }
+
+ public int getRootLayout() {
+ switch (state.getVariant()){
+ case nativeAndroid: return R.layout.native_picker;
+ case iosClone: return R.layout.ios_clone;
+ default: return R.layout.ios_clone;
+ }
+
+ }
+
}
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 725aa6f..78eddbb 100644
--- a/android/src/main/java/com/henninghall/date_picker/PickerView.java
+++ b/android/src/main/java/com/henninghall/date_picker/PickerView.java
@@ -1,9 +1,13 @@
package com.henninghall.date_picker;
-import android.view.View;
import android.widget.RelativeLayout;
import com.facebook.react.bridge.Dynamic;
+import com.henninghall.date_picker.props.MaximumDateProp;
+import com.henninghall.date_picker.props.MinimumDateProp;
+import com.henninghall.date_picker.props.MinuteIntervalProp;
+import com.henninghall.date_picker.props.UtcProp;
+import com.henninghall.date_picker.props.VariantProp;
import com.henninghall.date_picker.props.DateProp;
import com.henninghall.date_picker.props.FadeToColorProp;
import com.henninghall.date_picker.props.HeightProp;
@@ -11,52 +15,53 @@ import com.henninghall.date_picker.props.LocaleProp;
import com.henninghall.date_picker.props.ModeProp;
import com.henninghall.date_picker.props.TextColorProp;
import com.henninghall.date_picker.ui.UIManager;
+import com.henninghall.date_picker.wheels.AmPmWheel;
import java.util.ArrayList;
+import java.util.Date;
public class PickerView extends RelativeLayout {
- private final View rootView = inflate(getContext(), R.layout.datepicker_view, this);
- private final UIManager uiManager;
- private State state;
+ private UIManager uiManager;
+ private State state = new State();
private ArrayList updatedProps = new ArrayList<>();
public PickerView() {
super(DatePickerManager.context);
- state = new State();
- uiManager = new UIManager(state, this);
}
public void update() {
- if(updatedProps.contains(FadeToColorProp.name)) {
+ if (didUpdate(VariantProp.name)) {
+ this.removeAllViewsInLayout();
+ inflate(getContext(), state.derived.getRootLayout(), this);
+ uiManager = new UIManager(state, this);
+ }
+
+ if (didUpdate(FadeToColorProp.name)) {
uiManager.updateFadeToColor();
}
- if(updatedProps.contains(TextColorProp.name)) {
+ if (didUpdate(TextColorProp.name)) {
uiManager.updateTextColor();
}
- if(updatedProps.contains(ModeProp.name)) {
+ if (didUpdate(ModeProp.name, VariantProp.name)) {
uiManager.updateWheelVisibility();
}
- if(updatedProps.contains(HeightProp.name)) {
+ if (didUpdate(HeightProp.name)) {
uiManager.updateHeight();
}
- if(updatedProps.contains(ModeProp.name) || updatedProps.contains(LocaleProp.name)) {
+ if (didUpdate(ModeProp.name, LocaleProp.name, VariantProp.name)) {
uiManager.updateWheelOrder();
}
- ArrayList noDisplayValueChangeProps = new ArrayList(){{
- add(DateProp.name);
- add(FadeToColorProp.name);
- add(TextColorProp.name);
- }};
- updatedProps.removeAll(noDisplayValueChangeProps);
-
- if(updatedProps.size() != 0) {
+ if (didUpdate(DateProp.name, HeightProp.name, LocaleProp.name,
+ MaximumDateProp.name, MinimumDateProp.name, MinuteIntervalProp.name, ModeProp.name,
+ UtcProp.name, VariantProp.name
+ )) {
uiManager.updateDisplayValues();
}
@@ -65,6 +70,13 @@ public class PickerView extends RelativeLayout {
updatedProps = new ArrayList<>();
}
+ private boolean didUpdate(String... propNames) {
+ for (String propName : propNames) {
+ if (updatedProps.contains(propName)) return true;
+ }
+ return false;
+ }
+
public void updateProp(String propName, Dynamic value) {
state.setProp(propName, value);
updatedProps.add(propName);
@@ -74,10 +86,6 @@ public class PickerView extends RelativeLayout {
uiManager.scroll(wheelIndex, scrollTimes);
}
- public View getRootView(){
- return rootView;
- }
-
private final Runnable measureAndLayout = new Runnable() {
@Override
public void run() {
@@ -95,5 +103,4 @@ public class PickerView extends RelativeLayout {
}
-
}
diff --git a/android/src/main/java/com/henninghall/date_picker/State.java b/android/src/main/java/com/henninghall/date_picker/State.java
index f540525..dd1e98f 100644
--- a/android/src/main/java/com/henninghall/date_picker/State.java
+++ b/android/src/main/java/com/henninghall/date_picker/State.java
@@ -2,6 +2,8 @@ package com.henninghall.date_picker;
import com.facebook.react.bridge.Dynamic;
import com.henninghall.date_picker.models.Mode;
+import com.henninghall.date_picker.models.Variant;
+import com.henninghall.date_picker.props.VariantProp;
import com.henninghall.date_picker.props.DateProp;
import com.henninghall.date_picker.props.FadeToColorProp;
import com.henninghall.date_picker.props.HeightProp;
@@ -22,7 +24,7 @@ import java.util.TimeZone;
public class State {
private final DateProp dateProp = new DateProp();
- private final Prop modeProp = new ModeProp();
+ private final ModeProp modeProp = new ModeProp();
private final LocaleProp localeProp = new LocaleProp();
private final FadeToColorProp fadeToColorProp = new FadeToColorProp();
private final TextColorProp textColorProp = new TextColorProp();
@@ -31,6 +33,7 @@ public class State {
private final MaximumDateProp maximumDateProp = new MaximumDateProp();
private final UtcProp utcProp = new UtcProp();
private final HeightProp heightProp = new HeightProp();
+ private final VariantProp variantProp = new VariantProp();
private final HashMap props = new HashMap() {{
put(DateProp.name, dateProp);
@@ -43,6 +46,7 @@ public class State {
put(MaximumDateProp.name, maximumDateProp);
put(UtcProp.name, utcProp);
put(HeightProp.name, heightProp);
+ put(VariantProp.name, variantProp);
}};
public DerivedData derived;
@@ -106,5 +110,8 @@ public class State {
return localeProp.getLanguageTag();
}
+ public Variant getVariant(){
+ return variantProp.getValue();
+ }
}
diff --git a/android/src/main/java/com/henninghall/date_picker/models/Variant.java b/android/src/main/java/com/henninghall/date_picker/models/Variant.java
new file mode 100644
index 0000000..955b152
--- /dev/null
+++ b/android/src/main/java/com/henninghall/date_picker/models/Variant.java
@@ -0,0 +1,5 @@
+package com.henninghall.date_picker.models;
+
+public enum Variant {
+ iosClone, nativeAndroid
+}
diff --git a/android/src/main/java/com/henninghall/date_picker/pickers/AndroidNative.java b/android/src/main/java/com/henninghall/date_picker/pickers/AndroidNative.java
new file mode 100644
index 0000000..bca6544
--- /dev/null
+++ b/android/src/main/java/com/henninghall/date_picker/pickers/AndroidNative.java
@@ -0,0 +1,184 @@
+package com.henninghall.date_picker.pickers;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Paint;
+import android.os.Handler;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.NumberPicker;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+public class AndroidNative extends NumberPicker implements Picker {
+
+ private Picker.OnValueChangeListener onValueChangedListener;
+
+ public AndroidNative(Context context) {
+ super(context);
+ }
+
+ public AndroidNative(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public AndroidNative(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ @Override
+ public void setTextAlign(Paint.Align align) {
+ }
+
+ @Override
+ public void smoothScrollToValue(int value, boolean needRespond) {
+ smoothScrollToValue(value);
+ }
+
+ @Override
+ public void setNormalTextColor(int color) {
+ // Not needed for this picker. It auto fades the color
+ }
+
+ @Override
+ public void setSelectedTextColor(int color) {
+ try {
+ Field selectorWheelPaintField = getClass().getSuperclass()
+ .getDeclaredField("mSelectorWheelPaint");
+ selectorWheelPaintField.setAccessible(true);
+ ((Paint) selectorWheelPaintField.get(this)).setColor(color);
+ } catch (NoSuchFieldException e) {
+ Log.w("setSelectedTextColor", e);
+ } catch (IllegalAccessException e) {
+ Log.w("setSelectedTextColor", e);
+ } catch (IllegalArgumentException e) {
+ Log.w("setSelectedTextColor", e);
+ }
+
+ final int count = getChildCount();
+ for (int i = 0; i < count; i++) {
+ View child = getChildAt(i);
+ if (child instanceof EditText)
+ ((EditText) child).setTextColor(color);
+ }
+ invalidate();
+ }
+
+ @Override
+ public void setShownCount(int count) {
+ // always 3 date rows -> nothing needs to be done here
+ }
+
+ @Override
+ public View getView() {
+ return this;
+ }
+
+
+ @Override
+ public void smoothScrollToValue(final int value) {
+ final AndroidNative self = this;
+
+ new Handler().postDelayed(new Runnable() {
+ public void run() {
+ int currentValue = self.getValue();
+ if (value == currentValue) return;
+ int shortestScrollOption = getShortestScrollOption(currentValue, value);
+ final int moves = Math.abs(shortestScrollOption);
+ for (int i = 0; i < moves; i++) {
+ // need some delay between each scroll step to make sure it scrolls to correct value
+ changeValueByOne(shortestScrollOption > 0, i * 100, i == moves - 1);
+ }
+ }
+ // since the SCROLL_STATE_IDLE event is dispatched before the wheel actually has stopped
+ // an extra delay has to be added before starting to scroll to correct value
+ }, 500);
+ }
+
+ private int getShortestScrollOption(int currentValue, int value) {
+ final int maxValue = getMaxValue();
+ int option1 = value - currentValue;
+ int option2 = maxValue + 1 - Math.abs(option1);
+ if (getWrapSelectorWheel()) {
+ return Math.abs(option1) < Math.abs(option2) ? option1 : option2;
+ }
+ if (currentValue + option1 > maxValue) return option2;
+ if (currentValue + option1 < 0) return option2;
+ return option1;
+ }
+
+ private void changeValueByOne(final NumberPicker higherPicker, final boolean increment) {
+ boolean success = false;
+ try {
+ Method method = getClass().getSuperclass().getDeclaredMethod("changeValueByOne", boolean.class);
+ method.setAccessible(true);
+ method.invoke(higherPicker, increment);
+ success = true;
+ } catch (final NoSuchMethodException e) {
+ Log.w("changeValueByOne", e);
+ } catch (final IllegalArgumentException e) {
+ Log.w("changeValueByOne", e);
+ } catch (final IllegalAccessException e) {
+ Log.w("changeValueByOne", e);
+ } catch (final InvocationTargetException e) {
+ Log.w("changeValueByOne", e);
+ } finally {
+ if (!success) {
+ // make step without animation if failed to use reflection method
+ setValue((getValue() + (increment ? 1 : -1)) % getMaxValue());
+ }
+ }
+ }
+
+ private void changeValueByOne(final boolean increment, final int ms, final boolean isLast) {
+ final AndroidNative self = this;
+ new Handler().postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ changeValueByOne(self, increment);
+ if (isLast) {
+ new Handler().postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ onValueChangedListener.onValueChange();
+ }
+ // the delay make sure the wheel has stopped before sending the value change event
+ }, 500);
+ }
+ }
+ }, ms);
+ }
+
+ @Override
+ public void setOnValueChangeListenerInScrolling(final OnValueChangeListenerInScrolling listener) {
+ final Picker self = this;
+ super.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
+ @Override
+ public void onValueChange(NumberPicker numberPicker, int from, int to) {
+ listener.onValueChangeInScrolling(self, from, to);
+ }
+ });
+ }
+
+ @Override
+ public void setOnValueChangedListener(final Picker.OnValueChangeListener listener) {
+ this.onValueChangedListener = listener;
+ super.setOnScrollListener(new OnScrollListener() {
+ int previousState = SCROLL_STATE_IDLE;
+
+ @Override
+ public void onScrollStateChange(NumberPicker numberPicker, int state) {
+ boolean stoppedScrolling = previousState != SCROLL_STATE_IDLE && state == SCROLL_STATE_IDLE;
+ if (stoppedScrolling) {
+ listener.onValueChange();
+ }
+ previousState = state;
+ }
+ });
+ }
+
+}
diff --git a/android/src/main/java/com/henninghall/date_picker/pickers/IosClone.java b/android/src/main/java/com/henninghall/date_picker/pickers/IosClone.java
new file mode 100644
index 0000000..aea14a5
--- /dev/null
+++ b/android/src/main/java/com/henninghall/date_picker/pickers/IosClone.java
@@ -0,0 +1,47 @@
+package com.henninghall.date_picker.pickers;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import cn.carbswang.android.numberpickerview.library.NumberPickerView;
+
+public class IosClone extends NumberPickerView implements Picker {
+
+ public IosClone(Context context) {
+ super(context);
+ }
+
+ public IosClone(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public IosClone(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ @Override
+ public void setOnValueChangeListenerInScrolling(final Picker.OnValueChangeListenerInScrolling listener) {
+ final Picker self = this;
+ super.setOnValueChangeListenerInScrolling(new NumberPickerView.OnValueChangeListenerInScrolling() {
+ @Override
+ public void onValueChangeInScrolling(NumberPickerView picker, int oldVal, int newVal) {
+ listener.onValueChangeInScrolling(self, oldVal, newVal);
+ }
+ });
+ }
+
+ @Override
+ public void setOnValueChangedListener(final Picker.OnValueChangeListener listener) {
+ super.setOnValueChangedListener(new NumberPickerView.OnValueChangeListener() {
+ @Override
+ public void onValueChange(NumberPickerView picker, int oldVal, int newVal) {
+ listener.onValueChange();
+ }
+ });
+ }
+
+ @Override
+ public View getView() {
+ return this;
+ }
+}
diff --git a/android/src/main/java/com/henninghall/date_picker/pickers/Picker.java b/android/src/main/java/com/henninghall/date_picker/pickers/Picker.java
new file mode 100644
index 0000000..3f819c8
--- /dev/null
+++ b/android/src/main/java/com/henninghall/date_picker/pickers/Picker.java
@@ -0,0 +1,33 @@
+package com.henninghall.date_picker.pickers;
+
+import android.graphics.Paint;
+import android.view.View;
+
+public interface Picker {
+ void setTextAlign(Paint.Align align);
+ void smoothScrollToValue(int value);
+ void smoothScrollToValue(int value, boolean needRespond);
+ void setMaxValue(int value);
+ void setMinValue(int value);
+ int getMaxValue();
+ boolean getWrapSelectorWheel();
+ void setDisplayedValues(String[] value);
+ int getValue();
+ void setValue(int value);
+ void setNormalTextColor(int value);
+ void setSelectedTextColor(int value);
+ void setOnValueChangeListenerInScrolling(Picker.OnValueChangeListenerInScrolling listener);
+ void setOnValueChangedListener(Picker.OnValueChangeListener onValueChangeListener);
+ void setShownCount(int count);
+ View getView();
+ void setVisibility(int visibility);
+ void setWrapSelectorWheel(boolean wrapSelectorWheel);
+
+ interface OnValueChangeListenerInScrolling {
+ void onValueChangeInScrolling(Picker picker, int oldVal, int newVal);
+ }
+
+ interface OnValueChangeListener {
+ void onValueChange();
+ }
+}
diff --git a/android/src/main/java/com/henninghall/date_picker/props/VariantProp.java b/android/src/main/java/com/henninghall/date_picker/props/VariantProp.java
new file mode 100644
index 0000000..1e84ec1
--- /dev/null
+++ b/android/src/main/java/com/henninghall/date_picker/props/VariantProp.java
@@ -0,0 +1,14 @@
+package com.henninghall.date_picker.props;
+
+import com.facebook.react.bridge.Dynamic;
+import com.henninghall.date_picker.models.Variant;
+
+public class VariantProp extends Prop {
+ public static final String name = "androidVariant";
+
+ @Override
+ public Variant toValue(Dynamic value){
+ return Variant.valueOf(value.asString());
+ }
+
+}
\ No newline at end of file
diff --git a/android/src/main/java/com/henninghall/date_picker/ui/EmptyWheels.java b/android/src/main/java/com/henninghall/date_picker/ui/EmptyWheels.java
index 0500a63..badfc9d 100644
--- a/android/src/main/java/com/henninghall/date_picker/ui/EmptyWheels.java
+++ b/android/src/main/java/com/henninghall/date_picker/ui/EmptyWheels.java
@@ -33,6 +33,7 @@ class EmptyWheels {
private ArrayList getAll() {
ArrayList wheels = new ArrayList<>();
+ if(state.derived.hasNativeStyle()) return wheels;
for (int id: emptyWheelIds) {
NumberPickerView view = (NumberPickerView) rootView.findViewById(id);
wheels.add(view);
@@ -41,6 +42,7 @@ class EmptyWheels {
}
void add() {
+ if(state.derived.hasNativeStyle()) return;
int numberOfVisibleWheels = state.derived.getVisibleWheels().size();
int emptyViewsToAdd = numberOfVisibleWheels + 1;
for (int i = 0; i < emptyViewsToAdd; i++) {
diff --git a/android/src/main/java/com/henninghall/date_picker/ui/UIManager.java b/android/src/main/java/com/henninghall/date_picker/ui/UIManager.java
index 08f8822..9f4ca57 100644
--- a/android/src/main/java/com/henninghall/date_picker/ui/UIManager.java
+++ b/android/src/main/java/com/henninghall/date_picker/ui/UIManager.java
@@ -25,7 +25,6 @@ public class UIManager {
this.state = state;
this.rootView = rootView;
wheels = new Wheels(state, rootView);
- fadingOverlay = new FadingOverlay(state, rootView);
addOnChangeListener();
}
@@ -38,6 +37,8 @@ public class UIManager {
}
public void updateFadeToColor(){
+ if(state.derived.hasNativeStyle()) return;
+ fadingOverlay = new FadingOverlay(state, rootView);
fadingOverlay.updateColor();
}
@@ -78,6 +79,4 @@ public class UIManager {
WheelChangeListener onWheelChangeListener = new WheelChangeListenerImpl(wheels, state, this, rootView);
wheels.applyOnAll(new AddOnChangeListener(onWheelChangeListener));
}
-
-
}
diff --git a/android/src/main/java/com/henninghall/date_picker/ui/WheelScroller.java b/android/src/main/java/com/henninghall/date_picker/ui/WheelScroller.java
index 18f2d73..dc20acf 100644
--- a/android/src/main/java/com/henninghall/date_picker/ui/WheelScroller.java
+++ b/android/src/main/java/com/henninghall/date_picker/ui/WheelScroller.java
@@ -1,13 +1,12 @@
package com.henninghall.date_picker.ui;
+import com.henninghall.date_picker.pickers.Picker;
import com.henninghall.date_picker.wheels.Wheel;
-import cn.carbswang.android.numberpickerview.library.NumberPickerView;
-
public class WheelScroller {
public void scroll(Wheel wheel, int scrollTimes) {
- NumberPickerView picker = wheel.picker;
+ Picker picker = wheel.picker;
int currentIndex = picker.getValue();
int maxValue = picker.getMaxValue();
boolean isWrapping = picker.getWrapSelectorWheel();
diff --git a/android/src/main/java/com/henninghall/date_picker/ui/Wheels.java b/android/src/main/java/com/henninghall/date_picker/ui/Wheels.java
index 3b5a700..b4c531d 100644
--- a/android/src/main/java/com/henninghall/date_picker/ui/Wheels.java
+++ b/android/src/main/java/com/henninghall/date_picker/ui/Wheels.java
@@ -2,6 +2,7 @@ package com.henninghall.date_picker.ui;
import android.view.View;
+import com.henninghall.date_picker.pickers.Picker;
import com.henninghall.date_picker.R;
import com.henninghall.date_picker.State;
import com.henninghall.date_picker.Utils;
@@ -24,8 +25,6 @@ import java.util.Collection;
import java.util.HashMap;
import java.util.List;
-import cn.carbswang.android.numberpickerview.library.NumberPickerView;
-
public class Wheels {
private final State state;
@@ -60,8 +59,8 @@ public class Wheels {
changeAmPmWhenPassingMidnightOrNoon();
}
- private NumberPickerView getPickerWithId(int id){
- return (NumberPickerView) rootView.findViewById(id);
+ private Picker getPickerWithId(int id){
+ return (Picker) rootView.findViewById(id);
}
private Collection getVisible() {
@@ -122,7 +121,7 @@ public class Wheels {
ArrayList wheels = state.derived.getOrderedVisibleWheels();
for (WheelType wheelType : wheels) {
Wheel wheel = getWheel(wheelType);
- pickerWrapper.addPicker(wheel.picker);
+ pickerWrapper.addPicker(wheel.picker.getView());
}
}
@@ -135,9 +134,9 @@ public class Wheels {
}
private void changeAmPmWhenPassingMidnightOrNoon() {
- hourWheel.picker.setOnValueChangeListenerInScrolling(new NumberPickerView.OnValueChangeListenerInScrolling() {
+ hourWheel.picker.setOnValueChangeListenerInScrolling(new Picker.OnValueChangeListenerInScrolling() {
@Override
- public void onValueChangeInScrolling(NumberPickerView picker, int oldVal, int newVal) {
+ public void onValueChangeInScrolling(Picker picker, int oldVal, int newVal) {
if(Utils.usesAmPm()){
String oldValue = hourWheel.getValueAtIndex(oldVal);
String newValue = hourWheel.getValueAtIndex(newVal);
diff --git a/android/src/main/java/com/henninghall/date_picker/wheelFunctions/AddOnChangeListener.java b/android/src/main/java/com/henninghall/date_picker/wheelFunctions/AddOnChangeListener.java
index 7b7f67d..af9e441 100644
--- a/android/src/main/java/com/henninghall/date_picker/wheelFunctions/AddOnChangeListener.java
+++ b/android/src/main/java/com/henninghall/date_picker/wheelFunctions/AddOnChangeListener.java
@@ -1,5 +1,6 @@
package com.henninghall.date_picker.wheelFunctions;
+import com.henninghall.date_picker.pickers.Picker;
import com.henninghall.date_picker.ui.WheelChangeListener;
import com.henninghall.date_picker.wheels.Wheel;
@@ -15,9 +16,9 @@ public class AddOnChangeListener implements WheelFunction {
@Override
public void apply(final Wheel wheel) {
- wheel.picker.setOnValueChangedListener(new NumberPickerView.OnValueChangeListener() {
+ wheel.picker.setOnValueChangedListener(new Picker.OnValueChangeListener() {
@Override
- public void onValueChange(NumberPickerView picker, int oldVal, int newVal) {
+ public void onValueChange() {
onChangeListener.onChange(wheel);
}
});
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 97a686c..814a65f 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
@@ -2,6 +2,7 @@ package com.henninghall.date_picker.wheels;
import android.graphics.Paint;
+import com.henninghall.date_picker.pickers.Picker;
import com.henninghall.date_picker.State;
import com.henninghall.date_picker.Utils;
import com.henninghall.date_picker.models.Mode;
@@ -9,12 +10,10 @@ import com.henninghall.date_picker.models.Mode;
import java.util.ArrayList;
import java.util.Calendar;
-import cn.carbswang.android.numberpickerview.library.NumberPickerView;
-
public class AmPmWheel extends Wheel {
- public AmPmWheel(final NumberPickerView picker, State state) {
+ public AmPmWheel(final Picker picker, State state) {
super(picker, state);
}
@@ -36,6 +35,11 @@ public class AmPmWheel extends Wheel {
return Utils.usesAmPm() && state.getMode() != Mode.date;
}
+ @Override
+ public boolean wrapSelectorWheel() {
+ return false;
+ }
+
@Override
public String getFormatPattern() {
return Utils.usesAmPm() ? " a " : "";
diff --git a/android/src/main/java/com/henninghall/date_picker/wheels/DateWheel.java b/android/src/main/java/com/henninghall/date_picker/wheels/DateWheel.java
index b875521..6cf8932 100644
--- a/android/src/main/java/com/henninghall/date_picker/wheels/DateWheel.java
+++ b/android/src/main/java/com/henninghall/date_picker/wheels/DateWheel.java
@@ -5,12 +5,11 @@ import android.graphics.Paint;
import java.util.*;
import com.henninghall.date_picker.*;
import com.henninghall.date_picker.models.Mode;
-
-import cn.carbswang.android.numberpickerview.library.NumberPickerView;
+import com.henninghall.date_picker.pickers.Picker;
public class DateWheel extends Wheel
{
- public DateWheel(final NumberPickerView picker, final State id) {
+ public DateWheel(final Picker picker, final State id) {
super(picker, id);
}
@@ -35,6 +34,11 @@ public class DateWheel extends Wheel
return state.getMode() == Mode.date;
}
+ @Override
+ public boolean wrapSelectorWheel() {
+ return true;
+ }
+
@Override
public String getFormatPattern() {
return LocaleUtils.getPatternIncluding("d", state.getLocale());
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 59af7d7..4a59532 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,23 +1,20 @@
package com.henninghall.date_picker.wheels;
import android.graphics.Paint;
-import android.text.TextUtils;
import com.henninghall.date_picker.DayFormats;
import com.henninghall.date_picker.LocaleUtils;
+import com.henninghall.date_picker.pickers.Picker;
import com.henninghall.date_picker.State;
import com.henninghall.date_picker.models.Mode;
import com.henninghall.date_picker.Utils;
-import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
-import cn.carbswang.android.numberpickerview.library.NumberPickerView;
-
public class DayWheel extends Wheel {
@@ -25,7 +22,7 @@ public class DayWheel extends Wheel {
private static int defaultNumberOfDays = Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_YEAR);
private HashMap displayValues;
- public DayWheel(NumberPickerView picker, State state) {
+ public DayWheel(Picker picker, State state) {
super(picker, state);
}
@@ -113,6 +110,11 @@ public class DayWheel extends Wheel {
return state.getMode() == Mode.datetime;
}
+ @Override
+ public boolean wrapSelectorWheel() {
+ return false;
+ }
+
@Override
public String getFormatPattern() {
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 2ce30f3..ec42059 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
@@ -2,6 +2,7 @@ package com.henninghall.date_picker.wheels;
import android.graphics.Paint;
+import com.henninghall.date_picker.pickers.Picker;
import com.henninghall.date_picker.State;
import com.henninghall.date_picker.Utils;
import com.henninghall.date_picker.models.Mode;
@@ -9,11 +10,9 @@ import com.henninghall.date_picker.models.Mode;
import java.util.ArrayList;
import java.util.Calendar;
-import cn.carbswang.android.numberpickerview.library.NumberPickerView;
-
public class HourWheel extends Wheel {
- public HourWheel(NumberPickerView picker, State id) {
+ public HourWheel(Picker picker, State id) {
super(picker, id);
}
@@ -35,6 +34,11 @@ public class HourWheel extends Wheel {
return state.getMode() != Mode.date;
}
+ @Override
+ public boolean wrapSelectorWheel() {
+ return true;
+ }
+
@Override
public String getFormatPattern() {
return Utils.usesAmPm() ? "h": "HH";
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 62cc224..d162a30 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
@@ -2,6 +2,7 @@ package com.henninghall.date_picker.wheels;
import android.graphics.Paint;
+import com.henninghall.date_picker.pickers.Picker;
import com.henninghall.date_picker.State;
import com.henninghall.date_picker.Utils;
import com.henninghall.date_picker.models.Mode;
@@ -9,11 +10,9 @@ import com.henninghall.date_picker.models.Mode;
import java.util.ArrayList;
import java.util.Calendar;
-import cn.carbswang.android.numberpickerview.library.NumberPickerView;
-
public class MinutesWheel extends Wheel {
- public MinutesWheel(NumberPickerView picker, State id) {
+ public MinutesWheel(Picker picker, State id) {
super(picker, id);
}
@@ -36,6 +35,11 @@ public class MinutesWheel extends Wheel {
return state.getMode() != Mode.date;
}
+ @Override
+ public boolean wrapSelectorWheel() {
+ return true;
+ }
+
@Override
public String getFormatPattern() {
return "mm";
diff --git a/android/src/main/java/com/henninghall/date_picker/wheels/MonthWheel.java b/android/src/main/java/com/henninghall/date_picker/wheels/MonthWheel.java
index 05b17ef..ef7c052 100644
--- a/android/src/main/java/com/henninghall/date_picker/wheels/MonthWheel.java
+++ b/android/src/main/java/com/henninghall/date_picker/wheels/MonthWheel.java
@@ -5,16 +5,14 @@ import android.graphics.Paint;
import java.util.*;
import com.henninghall.date_picker.*;
import com.henninghall.date_picker.models.Mode;
-
-import cn.carbswang.android.numberpickerview.library.NumberPickerView;
+import com.henninghall.date_picker.pickers.Picker;
public class MonthWheel extends Wheel
{
- public MonthWheel(final NumberPickerView pickerView, final State id) {
- super(pickerView, id);
+ public MonthWheel(final Picker picker, final State id) {
+ super(picker, id);
}
-
@Override
public ArrayList getValues() {
ArrayList values = new ArrayList<>();
@@ -33,6 +31,11 @@ public class MonthWheel extends Wheel
return state.getMode() == Mode.date;
}
+ @Override
+ public boolean wrapSelectorWheel() {
+ return true;
+ }
+
@Override
public String getFormatPattern() {
return "LLLL";
diff --git a/android/src/main/java/com/henninghall/date_picker/wheels/Wheel.java b/android/src/main/java/com/henninghall/date_picker/wheels/Wheel.java
index 671e009..726545e 100644
--- a/android/src/main/java/com/henninghall/date_picker/wheels/Wheel.java
+++ b/android/src/main/java/com/henninghall/date_picker/wheels/Wheel.java
@@ -3,7 +3,7 @@ package com.henninghall.date_picker.wheels;
import android.graphics.Paint;
import android.view.View;
-import cn.carbswang.android.numberpickerview.library.NumberPickerView;
+import com.henninghall.date_picker.pickers.Picker;
import com.henninghall.date_picker.State;
import java.text.SimpleDateFormat;
@@ -17,6 +17,7 @@ public abstract class Wheel {
private Calendar userSetValue;
public abstract boolean visible();
+ public abstract boolean wrapSelectorWheel();
public abstract Paint.Align getTextAlign();
public abstract String getFormatPattern();
public abstract ArrayList getValues();
@@ -26,14 +27,15 @@ public abstract class Wheel {
}
private ArrayList values = new ArrayList<>();
- public NumberPickerView picker;
+ public Picker picker;
public SimpleDateFormat format;
- public Wheel(NumberPickerView picker, State state) {
+ public Wheel(Picker picker, State state) {
this.state = state;
this.picker = picker;
this.format = new SimpleDateFormat(getFormatPattern(), state.getLocale());
picker.setTextAlign(getTextAlign());
+ picker.setWrapSelectorWheel(wrapSelectorWheel());
}
private int getIndexOfDate(Calendar date){
diff --git a/android/src/main/java/com/henninghall/date_picker/wheels/YearWheel.java b/android/src/main/java/com/henninghall/date_picker/wheels/YearWheel.java
index ceb6863..474ea61 100644
--- a/android/src/main/java/com/henninghall/date_picker/wheels/YearWheel.java
+++ b/android/src/main/java/com/henninghall/date_picker/wheels/YearWheel.java
@@ -3,21 +3,19 @@ package com.henninghall.date_picker.wheels;
import android.graphics.Paint;
import com.henninghall.date_picker.LocaleUtils;
+import com.henninghall.date_picker.pickers.Picker;
import com.henninghall.date_picker.State;
import com.henninghall.date_picker.models.Mode;
-import com.henninghall.date_picker.PickerView;
import java.util.ArrayList;
import java.util.Calendar;
-import cn.carbswang.android.numberpickerview.library.NumberPickerView;
-
public class YearWheel extends Wheel
{
private int defaultStartYear;
private int defaultEndYear;
- public YearWheel(final NumberPickerView picker, final State id) {
+ public YearWheel(final Picker picker, final State id) {
super(picker, id);
this.defaultStartYear = 1900;
this.defaultEndYear = 2100;
@@ -61,6 +59,11 @@ public class YearWheel extends Wheel
return state.getMode() == Mode.date;
}
+ @Override
+ public boolean wrapSelectorWheel() {
+ return false;
+ }
+
@Override
public Paint.Align getTextAlign() {
return Paint.Align.RIGHT;
diff --git a/android/src/main/res/layout/datepicker_view.xml b/android/src/main/res/layout/ios_clone.xml
similarity index 85%
rename from android/src/main/res/layout/datepicker_view.xml
rename to android/src/main/res/layout/ios_clone.xml
index ed71829..c5a9b0c 100644
--- a/android/src/main/res/layout/datepicker_view.xml
+++ b/android/src/main/res/layout/ios_clone.xml
@@ -12,7 +12,7 @@
android:layout_height="match_parent"
android:orientation="horizontal"
>
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/src/main/res/layout/native_picker.xml b/android/src/main/res/layout/native_picker.xml
new file mode 100644
index 0000000..ba67258
--- /dev/null
+++ b/android/src/main/res/layout/native_picker.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android/src/main/res/values/styles.xml b/android/src/main/res/values/styles.xml
index dd946c2..915f823 100644
--- a/android/src/main/res/values/styles.xml
+++ b/android/src/main/res/values/styles.xml
@@ -1,10 +1,17 @@
-
-
+
+
\ No newline at end of file
diff --git a/defaultProps.js b/defaultProps.js
index 73372a3..926d735 100644
--- a/defaultProps.js
+++ b/defaultProps.js
@@ -1,4 +1,5 @@
export default {
- mode: 'datetime',
- minuteInterval: 1,
-}
\ No newline at end of file
+ mode: 'datetime',
+ minuteInterval: 1,
+ androidVariant: 'iosClone',
+}
diff --git a/docs/react-native-date-picker-android-native.gif b/docs/react-native-date-picker-android-native.gif
new file mode 100644
index 0000000..756cc66
Binary files /dev/null and b/docs/react-native-date-picker-android-native.gif differ
diff --git a/docs/react-native-date-picker-android.png b/docs/react-native-date-picker-android.png
new file mode 100644
index 0000000..2663890
Binary files /dev/null and b/docs/react-native-date-picker-android.png differ
diff --git a/examples/detox/android/app/src/main/res/values/styles.xml b/examples/detox/android/app/src/main/res/values/styles.xml
index 319eb0c..01b31e7 100644
--- a/examples/detox/android/app/src/main/res/values/styles.xml
+++ b/examples/detox/android/app/src/main/res/values/styles.xml
@@ -3,6 +3,9 @@
diff --git a/examples/detox/src/examples/Advanced.js b/examples/detox/src/examples/Advanced.js
index fd318a3..8bd1012 100644
--- a/examples/detox/src/examples/Advanced.js
+++ b/examples/detox/src/examples/Advanced.js
@@ -13,6 +13,7 @@ import MinuteInterval from '../propPickers/MinuteInterval'
import Scroll from '../propPickers/Scroll'
import CustomPropValue from '../CustomPropValue'
import { readableDate } from '../utils'
+import Variant from '../propPickers/Variant'
Date.prototype.addHours = function(h) {
this.setTime(this.getTime() + h * 60 * 60 * 1000)
@@ -37,6 +38,7 @@ export default class Advanced extends Component {
timeZoneOffsetInMinutes: undefined,
minuteInterval: 1,
dateString: '',
+ androidVariant: 'iosClone',
}
render() {
@@ -52,6 +54,7 @@ export default class Advanced extends Component {
date={this.state.date}
onDateChange={this.setDate}
onDateStringChange={this.setDateString}
+ androidVariant={this.state.androidVariant}
locale={this.state.locale}
minuteInterval={this.state.minuteInterval}
minimumDate={this.state.minimumDate}
@@ -88,6 +91,15 @@ export default class Advanced extends Component {
/>
),
},
+ {
+ name: 'androidVariant',
+ component: (
+ this.setState({ androidVariant })}
+ />
+ ),
+ },
{
name: 'mode',
component: (
diff --git a/examples/detox/src/propPickers/DateChange.js b/examples/detox/src/propPickers/DateChange.js
index ff21014..74e25b8 100644
--- a/examples/detox/src/propPickers/DateChange.js
+++ b/examples/detox/src/propPickers/DateChange.js
@@ -1,13 +1,5 @@
import React, { Component } from 'react'
-import {
- Dimensions,
- Button,
- View,
- StyleSheet,
- ScrollView,
- Text,
- TouchableOpacity,
-} from 'react-native'
+import { Button, Text } from 'react-native'
export default class extends Component {
render() {
diff --git a/examples/detox/src/propPickers/Variant.js b/examples/detox/src/propPickers/Variant.js
new file mode 100644
index 0000000..eabe004
--- /dev/null
+++ b/examples/detox/src/propPickers/Variant.js
@@ -0,0 +1,18 @@
+import React, { Component } from 'react'
+import PropSlider from '../PropSlider'
+
+const data = [{ name: 'iosClone' }, { name: 'nativeAndroid' }]
+
+export default class extends Component {
+ render() {
+ return (
+
+ )
+ }
+}
diff --git a/examples/detox/yarn.lock b/examples/detox/yarn.lock
index ab42ae0..b9330c4 100644
--- a/examples/detox/yarn.lock
+++ b/examples/detox/yarn.lock
@@ -689,11 +689,6 @@
xcode "^2.0.0"
xmldoc "^0.4.0"
-"@yarnpkg/lockfile@^1.1.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
- integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
-
abbrev@1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
@@ -712,13 +707,6 @@ accepts@~1.3.5, accepts@~1.3.7:
mime-types "~2.1.24"
negotiator "0.6.2"
-ansi-align@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
- integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=
- dependencies:
- string-width "^2.0.0"
-
ansi-colors@3.2.3:
version "3.2.3"
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813"
@@ -1004,19 +992,6 @@ bluebird@3.5.x:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f"
integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==
-boxen@^1.2.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"
- integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==
- dependencies:
- ansi-align "^2.0.0"
- camelcase "^4.0.0"
- chalk "^2.0.1"
- cli-boxes "^1.0.0"
- string-width "^2.0.0"
- term-size "^1.2.0"
- widest-line "^2.0.0"
-
bplist-creator@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.0.7.tgz#37df1536092824b87c42f957b01344117372ae45"
@@ -1143,7 +1118,7 @@ callsites@^2.0.0:
resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
-camelcase@^4.0.0, camelcase@^4.1.0:
+camelcase@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
@@ -1160,11 +1135,6 @@ capture-exit@^1.2.0:
dependencies:
rsvp "^3.3.3"
-capture-stack-trace@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d"
- integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==
-
chalk@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
@@ -1204,16 +1174,6 @@ chownr@^1.1.1:
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6"
integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==
-ci-info@^1.5.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
- integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==
-
-ci-info@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
- integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
-
class-utils@^0.3.5:
version "0.3.6"
resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
@@ -1224,11 +1184,6 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
-cli-boxes@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
- integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM=
-
cli-cursor@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
@@ -1358,18 +1313,6 @@ concat-stream@^1.6.0:
readable-stream "^2.2.2"
typedarray "^0.0.6"
-configstore@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f"
- integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==
- dependencies:
- dot-prop "^4.1.0"
- graceful-fs "^4.1.2"
- make-dir "^1.0.0"
- unique-string "^1.0.0"
- write-file-atomic "^2.0.0"
- xdg-basedir "^3.0.0"
-
connect@^3.6.5:
version "3.7.0"
resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8"
@@ -1427,13 +1370,6 @@ cosmiconfig@^5.0.5:
js-yaml "^3.13.1"
parse-json "^4.0.0"
-create-error-class@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
- integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=
- dependencies:
- capture-stack-trace "^1.0.0"
-
create-react-class@^15.6.3:
version "15.6.3"
resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036"
@@ -1460,7 +1396,7 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0:
shebang-command "^1.2.0"
which "^1.2.9"
-cross-spawn@^6.0.0, cross-spawn@^6.0.5:
+cross-spawn@^6.0.0:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
@@ -1471,11 +1407,6 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5:
shebang-command "^1.2.0"
which "^1.2.9"
-crypto-random-string@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
- integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=
-
debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -1602,13 +1533,6 @@ dom-walk@^0.1.0:
resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018"
integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=
-dot-prop@^4.1.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
- integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==
- dependencies:
- is-obj "^1.0.0"
-
dtrace-provider@~0.8:
version "0.8.7"
resolved "https://registry.yarnpkg.com/dtrace-provider/-/dtrace-provider-0.8.7.tgz#dc939b4d3e0620cfe0c1cd803d0d2d7ed04ffd04"
@@ -1616,11 +1540,6 @@ dtrace-provider@~0.8:
dependencies:
nan "^2.10.0"
-duplexer3@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
- integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
-
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
@@ -1979,14 +1898,6 @@ find-up@^2.0.0:
dependencies:
locate-path "^2.0.0"
-find-yarn-workspace-root@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db"
- integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q==
- dependencies:
- fs-extra "^4.0.3"
- micromatch "^3.1.4"
-
flat@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2"
@@ -2027,7 +1938,7 @@ fs-extra@^1.0.0:
jsonfile "^2.1.0"
klaw "^1.0.0"
-fs-extra@^4.0.2, fs-extra@^4.0.3:
+fs-extra@^4.0.2:
version "4.0.3"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==
@@ -2184,13 +2095,6 @@ glob@^7.1.1, glob@^7.1.3:
once "^1.3.0"
path-is-absolute "^1.0.0"
-global-dirs@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
- integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=
- dependencies:
- ini "^1.3.4"
-
global@^4.3.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
@@ -2204,23 +2108,6 @@ globals@^11.1.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-got@^6.7.1:
- version "6.7.1"
- resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
- integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=
- dependencies:
- create-error-class "^3.0.0"
- duplexer3 "^0.1.4"
- get-stream "^3.0.0"
- is-redirect "^1.0.0"
- is-retry-allowed "^1.0.0"
- is-stream "^1.0.0"
- lowercase-keys "^1.0.0"
- safe-buffer "^5.0.1"
- timed-out "^4.0.0"
- unzip-response "^2.0.1"
- url-parse-lax "^1.0.0"
-
graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
version "4.2.1"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.1.tgz#1c1f0c364882c868f5bff6512146328336a11b1d"
@@ -2346,11 +2233,6 @@ import-fresh@^2.0.0:
caller-path "^2.0.0"
resolve-from "^3.0.0"
-import-lazy@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
- integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=
-
imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@@ -2445,20 +2327,6 @@ is-callable@^1.1.4:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
-is-ci@^1.0.10:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c"
- integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==
- dependencies:
- ci-info "^1.5.0"
-
-is-ci@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
- integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
- dependencies:
- ci-info "^2.0.0"
-
is-data-descriptor@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
@@ -2549,19 +2417,6 @@ is-glob@^2.0.0, is-glob@^2.0.1:
dependencies:
is-extglob "^1.0.0"
-is-installed-globally@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80"
- integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=
- dependencies:
- global-dirs "^0.1.0"
- is-path-inside "^1.0.0"
-
-is-npm@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
- integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ=
-
is-number@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
@@ -2581,18 +2436,6 @@ is-number@^4.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==
-is-obj@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
- integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
-
-is-path-inside@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
- integrity sha1-jvW33lBDej/cprToZe96pVy0gDY=
- dependencies:
- path-is-inside "^1.0.1"
-
is-plain-object@^2.0.3, is-plain-object@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
@@ -2615,11 +2458,6 @@ is-promise@^2.1.0:
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
-is-redirect@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
- integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=
-
is-regex@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
@@ -2627,12 +2465,7 @@ is-regex@^1.0.4:
dependencies:
has "^1.0.1"
-is-retry-allowed@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
- integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==
-
-is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0:
+is-stream@^1.0.1, is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
@@ -2812,13 +2645,6 @@ kind-of@^6.0.0, kind-of@^6.0.2:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
-klaw-sync@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c"
- integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==
- dependencies:
- graceful-fs "^4.1.11"
-
klaw@^1.0.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
@@ -2826,13 +2652,6 @@ klaw@^1.0.0:
optionalDependencies:
graceful-fs "^4.1.9"
-latest-version@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
- integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=
- dependencies:
- package-json "^4.0.0"
-
lcid@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
@@ -2912,11 +2731,6 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4
dependencies:
js-tokens "^3.0.0 || ^4.0.0"
-lowercase-keys@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
- integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
-
lru-cache@^4.0.1:
version "4.1.5"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
@@ -2932,13 +2746,6 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
-make-dir@^1.0.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
- integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
- dependencies:
- pify "^3.0.0"
-
make-dir@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
@@ -3855,16 +3662,6 @@ p-try@^2.0.0:
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
-package-json@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
- integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=
- dependencies:
- got "^6.7.1"
- registry-auth-token "^3.0.1"
- registry-url "^3.0.3"
- semver "^5.1.0"
-
parse-glob@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
@@ -3905,25 +3702,6 @@ pascalcase@^0.1.1:
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
-patch-package@^6.2.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.0.tgz#677de858e352b6ca4e6cb48a6efde2cec9fde566"
- integrity sha512-HWlQflaBBMjLBfOWomfolF8aqsFDeNbSNro1JDUgYqnVvPM5OILJ9DQdwIRiKmGaOsmHvhkl1FYkvv1I9r2ZJw==
- dependencies:
- "@yarnpkg/lockfile" "^1.1.0"
- chalk "^2.4.2"
- cross-spawn "^6.0.5"
- find-yarn-workspace-root "^1.2.1"
- fs-extra "^7.0.1"
- is-ci "^2.0.0"
- klaw-sync "^6.0.0"
- minimist "^1.2.0"
- rimraf "^2.6.3"
- semver "^5.6.0"
- slash "^2.0.0"
- tmp "^0.0.33"
- update-notifier "^2.5.0"
-
path-exists@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
@@ -3934,11 +3712,6 @@ path-is-absolute@^1.0.0:
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-path-is-inside@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
- integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
-
path-key@^2.0.0, path-key@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
@@ -3961,11 +3734,6 @@ pify@^2.0.0:
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
-pify@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
- integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
-
pify@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
@@ -4022,11 +3790,6 @@ posix-character-classes@^0.1.0:
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
-prepend-http@^1.0.1:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
- integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
-
preserve@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
@@ -4112,7 +3875,7 @@ range-parser@~1.2.1:
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
-rc@^1.0.1, rc@^1.1.6, rc@^1.2.7:
+rc@^1.2.7:
version "1.2.8"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
@@ -4313,21 +4076,6 @@ regexpu-core@^4.5.4:
unicode-match-property-ecmascript "^1.0.4"
unicode-match-property-value-ecmascript "^1.1.0"
-registry-auth-token@^3.0.1:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e"
- integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==
- dependencies:
- rc "^1.1.6"
- safe-buffer "^5.0.1"
-
-registry-url@^3.0.3:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942"
- integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI=
- dependencies:
- rc "^1.0.1"
-
regjsgen@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd"
@@ -4412,13 +4160,6 @@ rimraf@^2.5.4, rimraf@^2.6.1:
dependencies:
glob "^7.1.3"
-rimraf@^2.6.3:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
- integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
- dependencies:
- glob "^7.1.3"
-
rimraf@~2.2.6:
version "2.2.8"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
@@ -4460,7 +4201,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-safe-buffer@^5.0.1, safe-buffer@^5.1.2:
+safe-buffer@^5.1.2:
version "5.2.0"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
@@ -4524,13 +4265,6 @@ scheduler@^0.13.3:
loose-envify "^1.1.0"
object-assign "^4.1.1"
-semver-diff@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
- integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=
- dependencies:
- semver "^5.0.3"
-
"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0:
version "5.7.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
@@ -4921,13 +4655,6 @@ tempfile@^2.0.0:
temp-dir "^1.0.0"
uuid "^3.0.1"
-term-size@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
- integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=
- dependencies:
- execa "^0.7.0"
-
throat@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
@@ -4951,11 +4678,6 @@ time-stamp@^1.0.0:
resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=
-timed-out@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
- integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
-
tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
@@ -5081,13 +4803,6 @@ union-value@^1.0.0:
is-extendable "^0.1.1"
set-value "^2.0.1"
-unique-string@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
- integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=
- dependencies:
- crypto-random-string "^1.0.0"
-
universalify@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
@@ -5106,39 +4821,11 @@ unset-value@^1.0.0:
has-value "^0.3.1"
isobject "^3.0.0"
-unzip-response@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
- integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=
-
-update-notifier@^2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6"
- integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==
- dependencies:
- boxen "^1.2.1"
- chalk "^2.0.1"
- configstore "^3.0.0"
- import-lazy "^2.1.0"
- is-ci "^1.0.10"
- is-installed-globally "^0.1.0"
- is-npm "^1.0.0"
- latest-version "^3.0.0"
- semver-diff "^2.0.0"
- xdg-basedir "^3.0.0"
-
urix@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
-url-parse-lax@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
- integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=
- dependencies:
- prepend-http "^1.0.1"
-
use@^3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
@@ -5216,13 +4903,6 @@ wide-align@1.1.3, wide-align@^1.1.0:
dependencies:
string-width "^1.0.2 || 2"
-widest-line@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc"
- integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==
- dependencies:
- string-width "^2.1.1"
-
wordwrap@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
@@ -5264,15 +4944,6 @@ write-file-atomic@^1.2.0:
imurmurhash "^0.1.4"
slide "^1.1.5"
-write-file-atomic@^2.0.0:
- version "2.4.3"
- resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481"
- integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==
- dependencies:
- graceful-fs "^4.1.11"
- imurmurhash "^0.1.4"
- signal-exit "^3.0.2"
-
ws@^1.1.0, ws@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51"
@@ -5298,11 +4969,6 @@ xcode@^2.0.0:
simple-plist "^1.0.0"
uuid "^3.3.2"
-xdg-basedir@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
- integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=
-
xmlbuilder@^9.0.7:
version "9.0.7"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
diff --git a/propTypes.js b/propTypes.js
index 7a3b70b..7b656c6 100644
--- a/propTypes.js
+++ b/propTypes.js
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types'
const androidProptypes = {
fadeToColor: PropTypes.string,
+ androidVariant: PropTypes.oneOf(['iosClone', 'nativeAndroid']),
}
const DateType = PropTypes.instanceOf(Date)
@@ -14,7 +15,7 @@ export default {
minimumDate: DateType,
maximumDate: DateType,
mode: PropTypes.oneOf(['date', 'time', 'datetime']),
- minuteInterval: PropTypes.oneOf([1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30]),
+ minuteInterval: PropTypes.oneOf([1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30]),
locale: PropTypes.string,
textColor: PropTypes.string,
timeZoneOffsetInMinutes: PropTypes.number,