Add support for Modal in Android

Summary: This diff implements Modal for Android in Fabric

Reviewed By: JoshuaGross

Differential Revision: D15069863

fbshipit-source-id: 4171c9590a4a7a1f4f80cf9b08ea9a9e94b9097a
This commit is contained in:
David Vacca
2019-04-30 15:05:01 -07:00
committed by Facebook Github Bot
parent ecdb239eaa
commit 532afbde6e
8 changed files with 298 additions and 0 deletions
@@ -87,6 +87,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
sComponentNames.put("Image", "RCTImageView");
sComponentNames.put("ScrollView", "RCTScrollView");
sComponentNames.put("Slider", "RCTSlider");
sComponentNames.put("ModalHostView", "RCTModalHostView");
sComponentNames.put("Paragraph", "RCTText");
sComponentNames.put("Text", "RCText");
sComponentNames.put("RawText", "RCTRawText");
@@ -8,9 +8,14 @@
package com.facebook.react.views.modal;
import android.content.DialogInterface;
import android.graphics.Point;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.bridge.WritableNativeMap;
import com.facebook.react.common.MapBuilder;
import com.facebook.react.module.annotations.ReactModule;
import com.facebook.react.uimanager.LayoutShadowNode;
import com.facebook.react.uimanager.PixelUtil;
import com.facebook.react.uimanager.StateWrapper;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.ViewGroupManager;
@@ -102,4 +107,13 @@ public class ReactModalHostManager extends ViewGroupManager<ReactModalHostView>
super.onAfterUpdateTransaction(view);
view.showOrUpdate();
}
@Override
public void updateState(ReactModalHostView view, StateWrapper stateWrapper) {
Point modalSize = ModalHostHelper.getModalHostSize(view.getContext());
WritableMap map = new WritableNativeMap();
map.putDouble("screenWidth", PixelUtil.toDIPFromPixel(modalSize.x));
map.putDouble("screenHeight", PixelUtil.toDIPFromPixel(modalSize.y));
stateWrapper.updateState(map);
}
}