react-native-screens 3.31.1 → 3.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -11
- package/RNScreens.podspec +11 -52
- package/android/CMakeLists.txt +48 -4
- package/android/build.gradle +16 -9
- package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +25 -16
- package/android/src/fabric/java/com/swmansion/rnscreens/NativeProxy.kt +53 -0
- package/android/src/main/cpp/NativeProxy.cpp +51 -0
- package/android/src/main/cpp/NativeProxy.h +35 -0
- package/android/src/main/cpp/OnLoad.cpp +8 -0
- package/android/src/main/cpp/jni-adapter.cpp +86 -93
- package/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt +7 -2
- package/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +6 -1
- package/android/src/main/java/com/swmansion/rnscreens/FragmentBackPressOverrider.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +36 -17
- package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +150 -40
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +52 -30
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContainerViewManager.kt +27 -4
- package/android/src/main/java/com/swmansion/rnscreens/ScreenEventDispatcher.kt +10 -2
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +56 -27
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFragmentWrapper.kt +8 -1
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +50 -19
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +63 -39
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragmentWrapper.kt +4 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +88 -57
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +131 -36
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubview.kt +19 -4
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubviewManager.kt +16 -10
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackViewManager.kt +28 -25
- package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +177 -77
- package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +77 -25
- package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +31 -9
- package/android/src/main/java/com/swmansion/rnscreens/ScreensShadowNode.kt +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +160 -54
- package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +29 -22
- package/android/src/main/java/com/swmansion/rnscreens/SearchViewFormatter.kt +7 -2
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderAttachedEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderDetachedEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +5 -6
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenAppearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDisappearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDismissedEvent.kt +8 -4
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt +7 -6
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillAppearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillDisappearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +5 -2
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarChangeTextEvent.kt +4 -3
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarCloseEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +5 -2
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarOpenEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarSearchButtonPressEvent.kt +9 -4
- package/android/src/main/java/com/swmansion/rnscreens/events/StackFinishTransitioningEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/utils/DeviceUtils.kt +1 -5
- package/android/src/main/java/com/swmansion/rnscreens/utils/ScreenDummyLayoutHelper.kt +214 -0
- package/android/src/main/jni/CMakeLists.txt +5 -4
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerDelegate.java +25 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerInterface.java +16 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +6 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +2 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +3 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +1 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSSearchBarManagerDelegate.java +99 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSSearchBarManagerInterface.java +37 -0
- package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +10 -5
- package/android/src/paper/java/com/swmansion/rnscreens/NativeProxy.kt +19 -0
- package/android/src/paper/java/com/swmansion/rnscreens/NativeScreensModuleSpec.java +4 -0
- package/common/cpp/react/renderer/components/rnscreens/FrameCorrectionModes.h +51 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenComponentDescriptor.h +8 -9
- package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.cpp +2 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.h +9 -8
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +147 -10
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +51 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +29 -7
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.cpp +22 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.h +30 -10
- package/common/cpp/react/renderer/components/rnscreens/utils/RectUtil.h +36 -0
- package/cpp/RNSScreenRemovalListener.cpp +25 -0
- package/cpp/RNSScreenRemovalListener.h +20 -0
- package/cpp/RNScreensTurboModule.cpp +31 -23
- package/cpp/RNScreensTurboModule.h +17 -20
- package/ios/RNSConvert.h +7 -0
- package/ios/RNSConvert.mm +24 -0
- package/ios/RNSModalScreen.mm +22 -0
- package/ios/RNSModule.mm +2 -3
- package/ios/RNSScreen.h +2 -1
- package/ios/RNSScreen.mm +35 -19
- package/ios/RNSScreenContainer.mm +1 -1
- package/ios/RNSScreenStack.mm +59 -54
- package/ios/RNSScreenStackAnimator.mm +43 -6
- package/ios/RNSScreenStackHeaderConfig.h +2 -0
- package/ios/RNSScreenStackHeaderConfig.mm +93 -28
- package/ios/RNSScreenStackHeaderSubview.mm +8 -0
- package/ios/RNSSearchBar.h +5 -5
- package/ios/RNSSearchBar.mm +11 -11
- package/ios/utils/RCTSurfaceTouchHandler+RNSUtility.h +15 -0
- package/ios/utils/RCTSurfaceTouchHandler+RNSUtility.mm +14 -0
- package/ios/utils/RCTTouchHandler+RNSUtility.h +15 -0
- package/ios/utils/RCTTouchHandler+RNSUtility.mm +15 -0
- package/ios/utils/UIView+RNSUtility.h +23 -0
- package/ios/utils/UIView+RNSUtility.mm +55 -0
- package/lib/commonjs/components/Screen.js +119 -127
- package/lib/commonjs/components/Screen.js.map +1 -1
- package/lib/commonjs/components/ScreenStack.js +8 -1
- package/lib/commonjs/components/ScreenStack.js.map +1 -1
- package/lib/commonjs/components/SearchBar.js +39 -36
- package/lib/commonjs/components/SearchBar.js.map +1 -1
- package/lib/commonjs/fabric/ModalScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
- package/lib/commonjs/native-stack/views/HeaderConfig.js +2 -0
- package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/commonjs/native-stack/views/NativeStackView.js +4 -0
- package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/module/components/Screen.js +118 -126
- package/lib/module/components/Screen.js.map +1 -1
- package/lib/module/components/ScreenStack.js +8 -1
- package/lib/module/components/ScreenStack.js.map +1 -1
- package/lib/module/components/SearchBar.js +39 -36
- package/lib/module/components/SearchBar.js.map +1 -1
- package/lib/module/fabric/ModalScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
- package/lib/module/native-stack/views/HeaderConfig.js +2 -0
- package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/module/native-stack/views/NativeStackView.js +4 -0
- package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/typescript/TransitionProgressContext.d.ts +1 -1
- package/lib/typescript/TransitionProgressContext.d.ts.map +1 -1
- package/lib/typescript/components/Screen.d.ts +3 -14
- package/lib/typescript/components/Screen.d.ts.map +1 -1
- package/lib/typescript/components/ScreenStack.d.ts.map +1 -1
- package/lib/typescript/components/SearchBar.d.ts +14 -21
- package/lib/typescript/components/SearchBar.d.ts.map +1 -1
- package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts +12 -10
- package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts +12 -10
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts +5 -3
- package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts +1 -1
- package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts +1 -1
- package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/SearchBarNativeComponent.d.ts +9 -9
- package/lib/typescript/fabric/SearchBarNativeComponent.d.ts.map +1 -1
- package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts +1 -1
- package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts.map +1 -1
- package/lib/typescript/native-stack/types.d.ts +39 -14
- package/lib/typescript/native-stack/types.d.ts.map +1 -1
- package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts +1 -1
- package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts.map +1 -1
- package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts +1 -1
- package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts.map +1 -1
- package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts +1 -1
- package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts.map +1 -1
- package/lib/typescript/native-stack/views/HeaderConfig.d.ts +2 -2
- package/lib/typescript/native-stack/views/HeaderConfig.d.ts.map +1 -1
- package/lib/typescript/native-stack/views/NativeStackView.d.ts +1 -1
- package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -1
- package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts +1 -1
- package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +39 -13
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/useTransitionProgress.d.ts +3 -3
- package/native-stack/README.md +116 -98
- package/package.json +16 -7
- package/react-native.config.js +17 -15
- package/src/TransitionProgressContext.tsx +1 -1
- package/src/components/Screen.tsx +31 -37
- package/src/components/ScreenStack.tsx +11 -1
- package/src/components/ScreenStackHeaderConfig.tsx +5 -5
- package/src/components/ScreenStackHeaderConfig.web.tsx +6 -6
- package/src/components/SearchBar.tsx +77 -65
- package/src/core.ts +1 -1
- package/src/fabric/ModalScreenNativeComponent.ts +2 -0
- package/src/fabric/ScreenNativeComponent.ts +2 -0
- package/src/fabric/ScreenNavigationContainerNativeComponent.ts +1 -1
- package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +4 -1
- package/src/fabric/ScreenStackHeaderSubviewNativeComponent.ts +1 -1
- package/src/fabric/SearchBarNativeComponent.ts +7 -7
- package/src/gesture-handler/ScreenGestureDetector.tsx +5 -5
- package/src/gesture-handler/constraints.ts +5 -5
- package/src/gesture-handler/fabricUtils.ts +1 -1
- package/src/native-stack/contexts/GHContext.tsx +1 -1
- package/src/native-stack/navigators/createNativeStackNavigator.tsx +3 -3
- package/src/native-stack/types.tsx +29 -4
- package/src/native-stack/utils/getDefaultHeaderHeight.tsx +1 -1
- package/src/native-stack/utils/getStatusBarHeight.tsx +1 -1
- package/src/native-stack/utils/useAnimatedHeaderHeight.tsx +1 -1
- package/src/native-stack/utils/useBackPressSubscription.tsx +1 -1
- package/src/native-stack/utils/useHeaderHeight.tsx +1 -1
- package/src/native-stack/views/FontProcessor.tsx +1 -1
- package/src/native-stack/views/HeaderConfig.tsx +3 -1
- package/src/native-stack/views/NativeStackView.tsx +13 -9
- package/src/reanimated/ReanimatedHeaderHeightContext.tsx +1 -1
- package/src/reanimated/ReanimatedNativeStackScreen.tsx +5 -5
- package/src/reanimated/ReanimatedScreen.tsx +2 -2
- package/src/reanimated/ReanimatedScreenProvider.tsx +1 -1
- package/src/reanimated/useReanimatedHeaderHeight.tsx +1 -1
- package/src/reanimated/useReanimatedTransitionProgress.tsx +1 -1
- package/src/types.tsx +31 -5
- package/src/useTransitionProgress.tsx +1 -1
- package/windows/README.md +4 -1
|
@@ -6,7 +6,9 @@ import com.facebook.react.uimanager.NativeViewHierarchyManager
|
|
|
6
6
|
import com.facebook.react.uimanager.NativeViewHierarchyOptimizer
|
|
7
7
|
import com.facebook.react.uimanager.UIManagerModule
|
|
8
8
|
|
|
9
|
-
internal class ScreensShadowNode(
|
|
9
|
+
internal class ScreensShadowNode(
|
|
10
|
+
private var context: ReactContext,
|
|
11
|
+
) : LayoutShadowNode() {
|
|
10
12
|
override fun onBeforeLayout(nativeViewHierarchyOptimizer: NativeViewHierarchyOptimizer) {
|
|
11
13
|
super.onBeforeLayout(nativeViewHierarchyOptimizer)
|
|
12
14
|
(context.getNativeModule(UIManagerModule::class.java))?.addUIBlock { nativeViewHierarchyManager: NativeViewHierarchyManager ->
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
package com.swmansion.rnscreens
|
|
2
2
|
|
|
3
|
+
import android.util.Log
|
|
3
4
|
import com.facebook.react.bridge.JSApplicationIllegalArgumentException
|
|
4
|
-
import com.facebook.react.bridge.ReadableArray
|
|
5
5
|
import com.facebook.react.common.MapBuilder
|
|
6
6
|
import com.facebook.react.module.annotations.ReactModule
|
|
7
7
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
8
8
|
import com.facebook.react.uimanager.ViewGroupManager
|
|
9
|
+
import com.facebook.react.uimanager.ViewManagerDelegate
|
|
9
10
|
import com.facebook.react.uimanager.annotations.ReactProp
|
|
11
|
+
import com.facebook.react.viewmanagers.RNSSearchBarManagerDelegate
|
|
12
|
+
import com.facebook.react.viewmanagers.RNSSearchBarManagerInterface
|
|
10
13
|
import com.swmansion.rnscreens.events.SearchBarBlurEvent
|
|
11
14
|
import com.swmansion.rnscreens.events.SearchBarChangeTextEvent
|
|
12
15
|
import com.swmansion.rnscreens.events.SearchBarCloseEvent
|
|
@@ -15,120 +18,223 @@ import com.swmansion.rnscreens.events.SearchBarOpenEvent
|
|
|
15
18
|
import com.swmansion.rnscreens.events.SearchBarSearchButtonPressEvent
|
|
16
19
|
|
|
17
20
|
@ReactModule(name = SearchBarManager.REACT_CLASS)
|
|
18
|
-
class SearchBarManager :
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
class SearchBarManager :
|
|
22
|
+
ViewGroupManager<SearchBarView>(),
|
|
23
|
+
RNSSearchBarManagerInterface<SearchBarView> {
|
|
24
|
+
private val delegate: ViewManagerDelegate<SearchBarView>
|
|
22
25
|
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
init {
|
|
27
|
+
delegate = RNSSearchBarManagerDelegate<SearchBarView, SearchBarManager>(this)
|
|
25
28
|
}
|
|
26
29
|
|
|
30
|
+
protected override fun getDelegate(): ViewManagerDelegate<SearchBarView> = delegate
|
|
31
|
+
|
|
32
|
+
override fun getName(): String = REACT_CLASS
|
|
33
|
+
|
|
34
|
+
override fun createViewInstance(context: ThemedReactContext): SearchBarView = SearchBarView(context)
|
|
35
|
+
|
|
27
36
|
override fun onAfterUpdateTransaction(view: SearchBarView) {
|
|
28
37
|
super.onAfterUpdateTransaction(view)
|
|
29
38
|
view.onUpdate()
|
|
30
39
|
}
|
|
31
40
|
|
|
32
41
|
@ReactProp(name = "autoCapitalize")
|
|
33
|
-
fun setAutoCapitalize(
|
|
34
|
-
view
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
override fun setAutoCapitalize(
|
|
43
|
+
view: SearchBarView,
|
|
44
|
+
autoCapitalize: String?,
|
|
45
|
+
) {
|
|
46
|
+
view.autoCapitalize =
|
|
47
|
+
when (autoCapitalize) {
|
|
48
|
+
null, "none" -> SearchBarView.SearchBarAutoCapitalize.NONE
|
|
49
|
+
"words" -> SearchBarView.SearchBarAutoCapitalize.WORDS
|
|
50
|
+
"sentences" -> SearchBarView.SearchBarAutoCapitalize.SENTENCES
|
|
51
|
+
"characters" -> SearchBarView.SearchBarAutoCapitalize.CHARACTERS
|
|
52
|
+
else -> throw JSApplicationIllegalArgumentException(
|
|
53
|
+
"Forbidden auto capitalize value passed",
|
|
54
|
+
)
|
|
55
|
+
}
|
|
43
56
|
}
|
|
44
57
|
|
|
45
58
|
@ReactProp(name = "autoFocus")
|
|
46
|
-
fun setAutoFocus(
|
|
59
|
+
fun setAutoFocus(
|
|
60
|
+
view: SearchBarView,
|
|
61
|
+
autoFocus: Boolean?,
|
|
62
|
+
) {
|
|
47
63
|
view.autoFocus = autoFocus ?: false
|
|
48
64
|
}
|
|
49
65
|
|
|
50
66
|
@ReactProp(name = "barTintColor", customType = "Color")
|
|
51
|
-
fun
|
|
67
|
+
override fun setBarTintColor(
|
|
68
|
+
view: SearchBarView,
|
|
69
|
+
color: Int?,
|
|
70
|
+
) {
|
|
52
71
|
view.tintColor = color
|
|
53
72
|
}
|
|
54
73
|
|
|
55
74
|
@ReactProp(name = "disableBackButtonOverride")
|
|
56
|
-
fun setDisableBackButtonOverride(
|
|
75
|
+
override fun setDisableBackButtonOverride(
|
|
76
|
+
view: SearchBarView,
|
|
77
|
+
disableBackButtonOverride: Boolean,
|
|
78
|
+
) {
|
|
57
79
|
view.shouldOverrideBackButton = disableBackButtonOverride != true
|
|
58
80
|
}
|
|
59
81
|
|
|
60
82
|
@ReactProp(name = "inputType")
|
|
61
|
-
fun setInputType(
|
|
62
|
-
view
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
"
|
|
69
|
-
|
|
70
|
-
|
|
83
|
+
override fun setInputType(
|
|
84
|
+
view: SearchBarView,
|
|
85
|
+
inputType: String?,
|
|
86
|
+
) {
|
|
87
|
+
view.inputType =
|
|
88
|
+
when (inputType) {
|
|
89
|
+
null, "text" -> SearchBarView.SearchBarInputTypes.TEXT
|
|
90
|
+
"phone" -> SearchBarView.SearchBarInputTypes.PHONE
|
|
91
|
+
"number" -> SearchBarView.SearchBarInputTypes.NUMBER
|
|
92
|
+
"email" -> SearchBarView.SearchBarInputTypes.EMAIL
|
|
93
|
+
else -> throw JSApplicationIllegalArgumentException(
|
|
94
|
+
"Forbidden input type value",
|
|
95
|
+
)
|
|
96
|
+
}
|
|
71
97
|
}
|
|
72
98
|
|
|
73
99
|
@ReactProp(name = "placeholder")
|
|
74
|
-
fun setPlaceholder(
|
|
100
|
+
override fun setPlaceholder(
|
|
101
|
+
view: SearchBarView,
|
|
102
|
+
placeholder: String?,
|
|
103
|
+
) {
|
|
75
104
|
if (placeholder != null) {
|
|
76
105
|
view.placeholder = placeholder
|
|
77
106
|
}
|
|
78
107
|
}
|
|
79
108
|
|
|
80
109
|
@ReactProp(name = "textColor", customType = "Color")
|
|
81
|
-
fun setTextColor(
|
|
110
|
+
override fun setTextColor(
|
|
111
|
+
view: SearchBarView,
|
|
112
|
+
color: Int?,
|
|
113
|
+
) {
|
|
82
114
|
view.textColor = color
|
|
83
115
|
}
|
|
84
116
|
|
|
85
117
|
@ReactProp(name = "headerIconColor", customType = "Color")
|
|
86
|
-
fun setHeaderIconColor(
|
|
118
|
+
override fun setHeaderIconColor(
|
|
119
|
+
view: SearchBarView,
|
|
120
|
+
color: Int?,
|
|
121
|
+
) {
|
|
87
122
|
view.headerIconColor = color
|
|
88
123
|
}
|
|
89
124
|
|
|
90
125
|
@ReactProp(name = "hintTextColor", customType = "Color")
|
|
91
|
-
fun setHintTextColor(
|
|
126
|
+
override fun setHintTextColor(
|
|
127
|
+
view: SearchBarView,
|
|
128
|
+
color: Int?,
|
|
129
|
+
) {
|
|
92
130
|
view.hintTextColor = color
|
|
93
131
|
}
|
|
94
132
|
|
|
95
133
|
@ReactProp(name = "shouldShowHintSearchIcon")
|
|
96
|
-
fun setShouldShowHintSearchIcon(
|
|
134
|
+
override fun setShouldShowHintSearchIcon(
|
|
135
|
+
view: SearchBarView,
|
|
136
|
+
shouldShowHintSearchIcon: Boolean,
|
|
137
|
+
) {
|
|
97
138
|
view.shouldShowHintSearchIcon = shouldShowHintSearchIcon ?: true
|
|
98
139
|
}
|
|
99
140
|
|
|
100
|
-
fun
|
|
101
|
-
|
|
102
|
-
override fun receiveCommand(root: SearchBarView, commandId: String?, args: ReadableArray?) {
|
|
103
|
-
when (commandId) {
|
|
104
|
-
"focus" -> root.handleFocusJsRequest()
|
|
105
|
-
"blur" -> root.handleBlurJsRequest()
|
|
106
|
-
"clearText" -> root.handleClearTextJsRequest()
|
|
107
|
-
"toggleCancelButton" -> root.handleToggleCancelButtonJsRequest(false) // just a dummy argument
|
|
108
|
-
"setText" -> root.handleSetTextJsRequest(args?.getString(0))
|
|
109
|
-
"cancelSearch" -> root.handleCancelSearchJsRequest()
|
|
110
|
-
else -> throw JSApplicationIllegalArgumentException("Unsupported native command received: $commandId")
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any>? {
|
|
115
|
-
return MapBuilder.of(
|
|
141
|
+
override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any>? =
|
|
142
|
+
MapBuilder.of(
|
|
116
143
|
SearchBarBlurEvent.EVENT_NAME,
|
|
117
|
-
MapBuilder.of("registrationName", "
|
|
144
|
+
MapBuilder.of("registrationName", "onSearchBlur"),
|
|
118
145
|
SearchBarChangeTextEvent.EVENT_NAME,
|
|
119
146
|
MapBuilder.of("registrationName", "onChangeText"),
|
|
120
147
|
SearchBarCloseEvent.EVENT_NAME,
|
|
121
148
|
MapBuilder.of("registrationName", "onClose"),
|
|
122
149
|
SearchBarFocusEvent.EVENT_NAME,
|
|
123
|
-
MapBuilder.of("registrationName", "
|
|
150
|
+
MapBuilder.of("registrationName", "onSearchFocus"),
|
|
124
151
|
SearchBarOpenEvent.EVENT_NAME,
|
|
125
152
|
MapBuilder.of("registrationName", "onOpen"),
|
|
126
153
|
SearchBarSearchButtonPressEvent.EVENT_NAME,
|
|
127
154
|
MapBuilder.of("registrationName", "onSearchButtonPress"),
|
|
128
155
|
)
|
|
129
|
-
}
|
|
130
156
|
|
|
131
157
|
companion object {
|
|
132
158
|
const val REACT_CLASS = "RNSSearchBar"
|
|
133
159
|
}
|
|
160
|
+
|
|
161
|
+
private fun logNotAvailable(propName: String) {
|
|
162
|
+
Log.w("[RNScreens]", "$propName prop is not available on Android")
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// NativeCommands
|
|
166
|
+
|
|
167
|
+
override fun blur(view: SearchBarView?) {
|
|
168
|
+
view?.handleBlurJsRequest()
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
override fun focus(view: SearchBarView?) {
|
|
172
|
+
view?.handleFocusJsRequest()
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
override fun clearText(view: SearchBarView?) {
|
|
176
|
+
view?.handleClearTextJsRequest()
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
override fun toggleCancelButton(
|
|
180
|
+
view: SearchBarView?,
|
|
181
|
+
flag: Boolean,
|
|
182
|
+
) {
|
|
183
|
+
view?.handleToggleCancelButtonJsRequest(flag)
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
override fun setText(
|
|
187
|
+
view: SearchBarView?,
|
|
188
|
+
text: String?,
|
|
189
|
+
) {
|
|
190
|
+
view?.handleSetTextJsRequest(text)
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
override fun cancelSearch(view: SearchBarView?) {
|
|
194
|
+
view?.handleFocusJsRequest()
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// iOS only
|
|
198
|
+
|
|
199
|
+
override fun setPlacement(
|
|
200
|
+
view: SearchBarView,
|
|
201
|
+
placeholder: String?,
|
|
202
|
+
) {
|
|
203
|
+
logNotAvailable("setPlacement")
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
override fun setHideWhenScrolling(
|
|
207
|
+
view: SearchBarView?,
|
|
208
|
+
value: Boolean,
|
|
209
|
+
) {
|
|
210
|
+
logNotAvailable("hideWhenScrolling")
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
override fun setObscureBackground(
|
|
214
|
+
view: SearchBarView?,
|
|
215
|
+
value: Boolean,
|
|
216
|
+
) {
|
|
217
|
+
logNotAvailable("hideNavigationBar")
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
override fun setHideNavigationBar(
|
|
221
|
+
view: SearchBarView?,
|
|
222
|
+
value: Boolean,
|
|
223
|
+
) {
|
|
224
|
+
logNotAvailable("hideNavigationBar")
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
override fun setCancelButtonText(
|
|
228
|
+
view: SearchBarView?,
|
|
229
|
+
value: String?,
|
|
230
|
+
) {
|
|
231
|
+
logNotAvailable("cancelButtonText")
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
override fun setTintColor(
|
|
235
|
+
view: SearchBarView?,
|
|
236
|
+
value: Int?,
|
|
237
|
+
) {
|
|
238
|
+
logNotAvailable("tintColor")
|
|
239
|
+
}
|
|
134
240
|
}
|
|
@@ -16,7 +16,9 @@ import com.swmansion.rnscreens.events.SearchBarOpenEvent
|
|
|
16
16
|
import com.swmansion.rnscreens.events.SearchBarSearchButtonPressEvent
|
|
17
17
|
|
|
18
18
|
@SuppressLint("ViewConstructor")
|
|
19
|
-
class SearchBarView(
|
|
19
|
+
class SearchBarView(
|
|
20
|
+
reactContext: ReactContext?,
|
|
21
|
+
) : ReactViewGroup(reactContext) {
|
|
20
22
|
var inputType: SearchBarInputTypes = SearchBarInputTypes.TEXT
|
|
21
23
|
var autoCapitalize: SearchBarAutoCapitalize = SearchBarAutoCapitalize.NONE
|
|
22
24
|
var textColor: Int? = null
|
|
@@ -71,8 +73,10 @@ class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext)
|
|
|
71
73
|
super.onAttachedToWindow()
|
|
72
74
|
|
|
73
75
|
screenStackFragment?.onSearchViewCreate = { newSearchView ->
|
|
74
|
-
if (searchViewFormatter == null)
|
|
75
|
-
|
|
76
|
+
if (searchViewFormatter == null) {
|
|
77
|
+
searchViewFormatter =
|
|
78
|
+
SearchViewFormatter(newSearchView)
|
|
79
|
+
}
|
|
76
80
|
setSearchViewProps()
|
|
77
81
|
if (autoFocus) {
|
|
78
82
|
screenStackFragment?.searchView?.focus()
|
|
@@ -81,17 +85,19 @@ class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext)
|
|
|
81
85
|
}
|
|
82
86
|
|
|
83
87
|
private fun setSearchViewListeners(searchView: SearchView) {
|
|
84
|
-
searchView.setOnQueryTextListener(
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
searchView.setOnQueryTextListener(
|
|
89
|
+
object : SearchView.OnQueryTextListener {
|
|
90
|
+
override fun onQueryTextChange(newText: String?): Boolean {
|
|
91
|
+
handleTextChange(newText)
|
|
92
|
+
return true
|
|
93
|
+
}
|
|
89
94
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
+
override fun onQueryTextSubmit(query: String?): Boolean {
|
|
96
|
+
handleTextSubmit(query)
|
|
97
|
+
return true
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
)
|
|
95
101
|
searchView.setOnQueryTextFocusChangeListener { _, hasFocus ->
|
|
96
102
|
handleFocusChange(hasFocus)
|
|
97
103
|
}
|
|
@@ -157,15 +163,19 @@ class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext)
|
|
|
157
163
|
private fun setToolbarElementsVisibility(visibility: Int) {
|
|
158
164
|
for (i in 0..(headerConfig?.configSubviewsCount?.minus(1) ?: 0)) {
|
|
159
165
|
val subview = headerConfig?.getConfigSubview(i)
|
|
160
|
-
if (subview?.type != ScreenStackHeaderSubview.Type.SEARCH_BAR)
|
|
166
|
+
if (subview?.type != ScreenStackHeaderSubview.Type.SEARCH_BAR) {
|
|
161
167
|
subview?.visibility = visibility
|
|
168
|
+
}
|
|
162
169
|
}
|
|
163
170
|
}
|
|
164
171
|
|
|
165
172
|
private val surfaceId = UIManagerHelper.getSurfaceId(this)
|
|
166
173
|
|
|
167
174
|
enum class SearchBarAutoCapitalize {
|
|
168
|
-
NONE,
|
|
175
|
+
NONE,
|
|
176
|
+
WORDS,
|
|
177
|
+
SENTENCES,
|
|
178
|
+
CHARACTERS,
|
|
169
179
|
}
|
|
170
180
|
|
|
171
181
|
enum class SearchBarInputTypes {
|
|
@@ -179,17 +189,14 @@ class SearchBarView(reactContext: ReactContext?) : ReactViewGroup(reactContext)
|
|
|
179
189
|
}
|
|
180
190
|
},
|
|
181
191
|
PHONE {
|
|
182
|
-
override fun toAndroidInputType(capitalize: SearchBarAutoCapitalize) =
|
|
183
|
-
InputType.TYPE_CLASS_PHONE
|
|
192
|
+
override fun toAndroidInputType(capitalize: SearchBarAutoCapitalize) = InputType.TYPE_CLASS_PHONE
|
|
184
193
|
},
|
|
185
194
|
NUMBER {
|
|
186
|
-
override fun toAndroidInputType(capitalize: SearchBarAutoCapitalize) =
|
|
187
|
-
InputType.TYPE_CLASS_NUMBER
|
|
195
|
+
override fun toAndroidInputType(capitalize: SearchBarAutoCapitalize) = InputType.TYPE_CLASS_NUMBER
|
|
188
196
|
},
|
|
189
197
|
EMAIL {
|
|
190
|
-
override fun toAndroidInputType(capitalize: SearchBarAutoCapitalize) =
|
|
191
|
-
|
|
192
|
-
};
|
|
198
|
+
override fun toAndroidInputType(capitalize: SearchBarAutoCapitalize) = InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS
|
|
199
|
+
}, ;
|
|
193
200
|
|
|
194
201
|
abstract fun toAndroidInputType(capitalize: SearchBarAutoCapitalize): Int
|
|
195
202
|
}
|
|
@@ -7,7 +7,9 @@ import android.widget.ImageView
|
|
|
7
7
|
import androidx.appcompat.R
|
|
8
8
|
import androidx.appcompat.widget.SearchView
|
|
9
9
|
|
|
10
|
-
class SearchViewFormatter(
|
|
10
|
+
class SearchViewFormatter(
|
|
11
|
+
var searchView: SearchView,
|
|
12
|
+
) {
|
|
11
13
|
private var defaultTextColor: Int? = null
|
|
12
14
|
private var defaultTintBackground: Drawable? = null
|
|
13
15
|
|
|
@@ -57,7 +59,10 @@ class SearchViewFormatter(var searchView: SearchView) {
|
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
61
|
|
|
60
|
-
fun setPlaceholder(
|
|
62
|
+
fun setPlaceholder(
|
|
63
|
+
placeholder: String,
|
|
64
|
+
shouldShowHintSearchIcon: Boolean,
|
|
65
|
+
) {
|
|
61
66
|
if (shouldShowHintSearchIcon) {
|
|
62
67
|
searchView.queryHint = placeholder
|
|
63
68
|
} else {
|
|
@@ -4,7 +4,10 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class HeaderAttachedEvent(
|
|
7
|
+
class HeaderAttachedEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
) : Event<HeaderAttachedEvent>(surfaceId, viewId) {
|
|
8
11
|
override fun getEventName(): String = EVENT_NAME
|
|
9
12
|
|
|
10
13
|
// All events for a given view can be coalesced.
|
package/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt
CHANGED
|
@@ -4,7 +4,10 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class HeaderBackButtonClickedEvent(
|
|
7
|
+
class HeaderBackButtonClickedEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
) : Event<HeaderBackButtonClickedEvent>(surfaceId, viewId) {
|
|
8
11
|
override fun getEventName(): String = EVENT_NAME
|
|
9
12
|
|
|
10
13
|
// All events for a given view can be coalesced.
|
|
@@ -4,7 +4,10 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class HeaderDetachedEvent(
|
|
7
|
+
class HeaderDetachedEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
) : Event<HeaderDetachedEvent>(surfaceId, viewId) {
|
|
8
11
|
override fun getEventName(): String = EVENT_NAME
|
|
9
12
|
|
|
10
13
|
// All events for a given view can be coalesced.
|
|
@@ -3,22 +3,21 @@ package com.swmansion.rnscreens.events
|
|
|
3
3
|
import com.facebook.react.bridge.Arguments
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
|
-
import com.facebook.react.uimanager.events.RCTEventEmitter
|
|
7
6
|
|
|
8
7
|
class HeaderHeightChangeEvent(
|
|
9
8
|
surfaceId: Int,
|
|
10
9
|
viewId: Int,
|
|
11
|
-
private val headerHeight: Double
|
|
10
|
+
private val headerHeight: Double,
|
|
12
11
|
) : Event<HeaderHeightChangeEvent>(surfaceId, viewId) {
|
|
13
|
-
|
|
14
12
|
override fun getEventName() = EVENT_NAME
|
|
15
13
|
|
|
16
14
|
// As the same header height could appear twice, use header height as a coalescing key.
|
|
17
15
|
override fun getCoalescingKey(): Short = headerHeight.toInt().toShort()
|
|
18
16
|
|
|
19
|
-
override fun getEventData(): WritableMap? =
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
override fun getEventData(): WritableMap? =
|
|
18
|
+
Arguments.createMap().apply {
|
|
19
|
+
putDouble("headerHeight", headerHeight)
|
|
20
|
+
}
|
|
22
21
|
|
|
23
22
|
companion object {
|
|
24
23
|
const val EVENT_NAME = "topHeaderHeightChange"
|
|
@@ -4,7 +4,10 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class ScreenAppearEvent(
|
|
7
|
+
class ScreenAppearEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
) : Event<ScreenAppearEvent>(surfaceId, viewId) {
|
|
8
11
|
override fun getEventName() = EVENT_NAME
|
|
9
12
|
|
|
10
13
|
// All events for a given view can be coalesced.
|
|
@@ -4,7 +4,10 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class ScreenDisappearEvent(
|
|
7
|
+
class ScreenDisappearEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
) : Event<ScreenDisappearEvent>(surfaceId, viewId) {
|
|
8
11
|
override fun getEventName() = EVENT_NAME
|
|
9
12
|
|
|
10
13
|
// All events for a given view can be coalesced.
|
|
@@ -4,15 +4,19 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class ScreenDismissedEvent(
|
|
7
|
+
class ScreenDismissedEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
) : Event<ScreenDismissedEvent>(surfaceId, viewId) {
|
|
8
11
|
override fun getEventName() = EVENT_NAME
|
|
9
12
|
|
|
10
13
|
// All events for a given view can be coalesced.
|
|
11
14
|
override fun getCoalescingKey(): Short = 0
|
|
12
15
|
|
|
13
|
-
override fun getEventData(): WritableMap? =
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
override fun getEventData(): WritableMap? =
|
|
17
|
+
Arguments.createMap().apply {
|
|
18
|
+
putInt("dismissCount", 1)
|
|
19
|
+
}
|
|
16
20
|
|
|
17
21
|
companion object {
|
|
18
22
|
const val EVENT_NAME = "topDismissed"
|
package/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt
CHANGED
|
@@ -10,17 +10,18 @@ class ScreenTransitionProgressEvent(
|
|
|
10
10
|
private val progress: Float,
|
|
11
11
|
private val isClosing: Boolean,
|
|
12
12
|
private val isGoingForward: Boolean,
|
|
13
|
-
private val coalescingKey: Short
|
|
13
|
+
private val coalescingKey: Short,
|
|
14
14
|
) : Event<ScreenTransitionProgressEvent>(surfaceId, viewId) {
|
|
15
15
|
override fun getEventName(): String = EVENT_NAME
|
|
16
16
|
|
|
17
17
|
override fun getCoalescingKey(): Short = coalescingKey
|
|
18
18
|
|
|
19
|
-
override fun getEventData(): WritableMap? =
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
override fun getEventData(): WritableMap? =
|
|
20
|
+
Arguments.createMap().apply {
|
|
21
|
+
putDouble("progress", progress.toDouble())
|
|
22
|
+
putInt("closing", if (isClosing) 1 else 0)
|
|
23
|
+
putInt("goingForward", if (isGoingForward) 1 else 0)
|
|
24
|
+
}
|
|
24
25
|
|
|
25
26
|
companion object {
|
|
26
27
|
const val EVENT_NAME = "topTransitionProgress"
|
|
@@ -4,7 +4,10 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class ScreenWillAppearEvent(
|
|
7
|
+
class ScreenWillAppearEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
) : Event<ScreenWillAppearEvent>(surfaceId, viewId) {
|
|
8
11
|
override fun getEventName() = EVENT_NAME
|
|
9
12
|
|
|
10
13
|
// All events for a given view can be coalesced.
|
|
@@ -4,7 +4,10 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class ScreenWillDisappearEvent(
|
|
7
|
+
class ScreenWillDisappearEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
) : Event<ScreenWillDisappearEvent>(surfaceId, viewId) {
|
|
8
11
|
override fun getEventName() = EVENT_NAME
|
|
9
12
|
|
|
10
13
|
// All events for a given view can be coalesced.
|
|
@@ -4,7 +4,10 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class SearchBarBlurEvent(
|
|
7
|
+
class SearchBarBlurEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
) : Event<SearchBarBlurEvent>(surfaceId, viewId) {
|
|
8
11
|
override fun getEventName(): String = EVENT_NAME
|
|
9
12
|
|
|
10
13
|
// All events for a given view can be coalesced.
|
|
@@ -13,6 +16,6 @@ class SearchBarBlurEvent(surfaceId: Int, viewId: Int) : Event<SearchBarBlurEvent
|
|
|
13
16
|
override fun getEventData(): WritableMap? = Arguments.createMap()
|
|
14
17
|
|
|
15
18
|
companion object {
|
|
16
|
-
const val EVENT_NAME = "
|
|
19
|
+
const val EVENT_NAME = "topSearchBlur"
|
|
17
20
|
}
|
|
18
21
|
}
|
|
@@ -14,9 +14,10 @@ class SearchBarChangeTextEvent(
|
|
|
14
14
|
// All events for a given view can be coalesced.
|
|
15
15
|
override fun getCoalescingKey(): Short = 0
|
|
16
16
|
|
|
17
|
-
override fun getEventData(): WritableMap? =
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
override fun getEventData(): WritableMap? =
|
|
18
|
+
Arguments.createMap().apply {
|
|
19
|
+
putString("text", text)
|
|
20
|
+
}
|
|
20
21
|
|
|
21
22
|
companion object {
|
|
22
23
|
const val EVENT_NAME = "topChangeText"
|
|
@@ -4,7 +4,10 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class SearchBarCloseEvent(
|
|
7
|
+
class SearchBarCloseEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
) : Event<SearchBarCloseEvent>(surfaceId, viewId) {
|
|
8
11
|
override fun getEventName(): String = EVENT_NAME
|
|
9
12
|
|
|
10
13
|
// All events for a given view can be coalesced.
|
|
@@ -4,7 +4,10 @@ import com.facebook.react.bridge.Arguments
|
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
6
|
|
|
7
|
-
class SearchBarFocusEvent(
|
|
7
|
+
class SearchBarFocusEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
) : Event<SearchBarFocusEvent>(surfaceId, viewId) {
|
|
8
11
|
override fun getEventName(): String = EVENT_NAME
|
|
9
12
|
|
|
10
13
|
// All events for a given view can be coalesced.
|
|
@@ -13,6 +16,6 @@ class SearchBarFocusEvent(surfaceId: Int, viewId: Int) : Event<SearchBarFocusEve
|
|
|
13
16
|
override fun getEventData(): WritableMap? = Arguments.createMap()
|
|
14
17
|
|
|
15
18
|
companion object {
|
|
16
|
-
const val EVENT_NAME = "
|
|
19
|
+
const val EVENT_NAME = "topSearchFocus"
|
|
17
20
|
}
|
|
18
21
|
}
|