From e4deb14583d334271139e9e8a7f9bc9b5d6dc0ad Mon Sep 17 00:00:00 2001 From: Joel Nuesch Date: Thu, 4 Jan 2024 13:53:58 -0800 Subject: [PATCH] fix(#432): allow pointerEvents prop to reach SafeAreaProvider --- .../safeareacontext/SafeAreaProviderManager.kt | 11 ++++++----- src/specs/NativeSafeAreaProvider.ts | 6 ++++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProviderManager.kt b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProviderManager.kt index de6f6854..0633f0d0 100644 --- a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProviderManager.kt +++ b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProviderManager.kt @@ -4,28 +4,29 @@ import com.facebook.react.bridge.ReactContext import com.facebook.react.module.annotations.ReactModule import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.UIManagerHelper -import com.facebook.react.uimanager.ViewGroupManager import com.facebook.react.viewmanagers.RNCSafeAreaProviderManagerDelegate import com.facebook.react.viewmanagers.RNCSafeAreaProviderManagerInterface +import com.facebook.react.views.view.ReactViewGroup +import com.facebook.react.views.view.ReactViewManager @ReactModule(name = SafeAreaProviderManager.REACT_CLASS) class SafeAreaProviderManager : - ViewGroupManager(), RNCSafeAreaProviderManagerInterface { + ReactViewManager(), RNCSafeAreaProviderManagerInterface { private val mDelegate = RNCSafeAreaProviderManagerDelegate(this) override fun getDelegate() = mDelegate override fun getName() = REACT_CLASS - public override fun createViewInstance(context: ThemedReactContext) = SafeAreaProvider(context) + override fun createViewInstance(context: ThemedReactContext) = SafeAreaProvider(context) override fun getExportedCustomDirectEventTypeConstants() = mutableMapOf( InsetsChangeEvent.EVENT_NAME to mutableMapOf("registrationName" to "onInsetsChange")) - override fun addEventEmitters(reactContext: ThemedReactContext, view: SafeAreaProvider) { + override fun addEventEmitters(reactContext: ThemedReactContext, view: ReactViewGroup) { super.addEventEmitters(reactContext, view) - view.setOnInsetsChangeHandler(::handleOnInsetsChange) + (view as? SafeAreaProvider)?.setOnInsetsChangeHandler(::handleOnInsetsChange) } companion object { diff --git a/src/specs/NativeSafeAreaProvider.ts b/src/specs/NativeSafeAreaProvider.ts index af5e731a..36303160 100644 --- a/src/specs/NativeSafeAreaProvider.ts +++ b/src/specs/NativeSafeAreaProvider.ts @@ -1,6 +1,7 @@ import type { DirectEventHandler, Double, + WithDefault, } from 'react-native/Libraries/Types/CodegenTypes'; import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; import type { ViewProps, HostComponent } from 'react-native'; @@ -20,8 +21,13 @@ export type Event = Readonly<{ }>; }>; +// @ts-ignore export interface NativeProps extends ViewProps { onInsetsChange?: DirectEventHandler; + pointerEvents?: WithDefault< + 'box-none' | 'none' | 'box-only' | 'auto', + 'auto' + >; } export default codegenNativeComponent(