@swmansion/react-native-bottom-sheet 0.8.0-next.5 → 0.8.0-next.6
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/android/src/main/java/com/swmansion/reactnativebottomsheet/BottomSheetView.kt +9 -2
- package/android/src/main/java/com/swmansion/reactnativebottomsheet/BottomSheetViewManager.kt +11 -0
- package/ios/BottomSheetComponentView.mm +8 -0
- package/ios/BottomSheetContentView.h +1 -0
- package/ios/BottomSheetContentView.mm +5 -0
- package/ios/RNSBottomSheetHostingView.swift +11 -2
- package/lib/module/BottomSheet.js +5 -0
- package/lib/module/BottomSheet.js.map +1 -1
- package/lib/module/BottomSheetNativeComponent.ts +3 -0
- package/lib/typescript/src/BottomSheet.d.ts +2 -1
- package/lib/typescript/src/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/src/BottomSheetNativeComponent.d.ts +3 -0
- package/lib/typescript/src/BottomSheetNativeComponent.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/BottomSheet.tsx +6 -0
- package/src/BottomSheetNativeComponent.ts +3 -0
|
@@ -25,6 +25,7 @@ private data class DetentSpec(val height: Float, val programmatic: Boolean)
|
|
|
25
25
|
|
|
26
26
|
interface BottomSheetViewListener {
|
|
27
27
|
fun onIndexChange(index: Int)
|
|
28
|
+
fun onSettle(index: Int)
|
|
28
29
|
fun onPositionChange(position: Double)
|
|
29
30
|
}
|
|
30
31
|
|
|
@@ -140,7 +141,7 @@ class BottomSheetView(context: Context) : ReactViewGroup(context) {
|
|
|
140
141
|
val closedTy = detentSpecs.lastOrNull()?.height ?: h.toFloat()
|
|
141
142
|
sheetContainer.translationY = closedTy
|
|
142
143
|
emitPosition()
|
|
143
|
-
snapToIndex(targetIndex, 0f, emitIndexChange = false)
|
|
144
|
+
snapToIndex(targetIndex, 0f, emitIndexChange = false, emitSettle = false)
|
|
144
145
|
} else {
|
|
145
146
|
sheetContainer.translationY = translationY(targetIndex)
|
|
146
147
|
emitPosition()
|
|
@@ -287,7 +288,12 @@ class BottomSheetView(context: Context) : ReactViewGroup(context) {
|
|
|
287
288
|
|
|
288
289
|
// MARK: - Spring animation
|
|
289
290
|
|
|
290
|
-
private fun snapToIndex(
|
|
291
|
+
private fun snapToIndex(
|
|
292
|
+
index: Int,
|
|
293
|
+
velocity: Float,
|
|
294
|
+
emitIndexChange: Boolean = true,
|
|
295
|
+
emitSettle: Boolean = true,
|
|
296
|
+
) {
|
|
291
297
|
if (index < 0 || index >= detentSpecs.size) return
|
|
292
298
|
targetIndex = index
|
|
293
299
|
|
|
@@ -310,6 +316,7 @@ class BottomSheetView(context: Context) : ReactViewGroup(context) {
|
|
|
310
316
|
activeAnimation = null
|
|
311
317
|
updateInteractionState()
|
|
312
318
|
if (emitIndexChange) listener?.onIndexChange(index)
|
|
319
|
+
if (emitSettle) listener?.onSettle(index)
|
|
313
320
|
}
|
|
314
321
|
}
|
|
315
322
|
|
package/android/src/main/java/com/swmansion/reactnativebottomsheet/BottomSheetViewManager.kt
CHANGED
|
@@ -40,6 +40,16 @@ class BottomSheetViewManager :
|
|
|
40
40
|
.receiveEvent(view.id, "topIndexChange", event)
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
override fun onSettle(index: Int) {
|
|
44
|
+
val event = com.facebook.react.bridge.Arguments.createMap().apply {
|
|
45
|
+
putInt("index", index)
|
|
46
|
+
}
|
|
47
|
+
val reactContext = view.context as? ThemedReactContext ?: return
|
|
48
|
+
reactContext
|
|
49
|
+
.getJSModule(com.facebook.react.uimanager.events.RCTEventEmitter::class.java)
|
|
50
|
+
.receiveEvent(view.id, "topSettle", event)
|
|
51
|
+
}
|
|
52
|
+
|
|
43
53
|
override fun onPositionChange(position: Double) {
|
|
44
54
|
val event = com.facebook.react.bridge.Arguments.createMap().apply {
|
|
45
55
|
putDouble("position", position)
|
|
@@ -79,6 +89,7 @@ class BottomSheetViewManager :
|
|
|
79
89
|
override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any> {
|
|
80
90
|
return mapOf(
|
|
81
91
|
"topIndexChange" to mapOf("registrationName" to "onIndexChange"),
|
|
92
|
+
"topSettle" to mapOf("registrationName" to "onSettle"),
|
|
82
93
|
"topPositionChange" to mapOf("registrationName" to "onPositionChange"),
|
|
83
94
|
)
|
|
84
95
|
}
|
|
@@ -100,6 +100,14 @@ using namespace facebook::react;
|
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
+
- (void)bottomSheetView:(BottomSheetContentView *)view didSettle:(NSInteger)index
|
|
104
|
+
{
|
|
105
|
+
if (_eventEmitter) {
|
|
106
|
+
auto emitter = std::static_pointer_cast<const BottomSheetViewEventEmitter>(_eventEmitter);
|
|
107
|
+
emitter->onSettle({.index = static_cast<int>(index)});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
103
111
|
- (void)bottomSheetView:(BottomSheetContentView *)view didChangePosition:(CGFloat)position
|
|
104
112
|
{
|
|
105
113
|
if (_eventEmitter) {
|
|
@@ -6,6 +6,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
6
6
|
|
|
7
7
|
@protocol BottomSheetContentViewDelegate <NSObject>
|
|
8
8
|
- (void)bottomSheetView:(BottomSheetContentView *)view didChangeIndex:(NSInteger)index;
|
|
9
|
+
- (void)bottomSheetView:(BottomSheetContentView *)view didSettle:(NSInteger)index;
|
|
9
10
|
- (void)bottomSheetView:(BottomSheetContentView *)view didChangePosition:(CGFloat)position;
|
|
10
11
|
@end
|
|
11
12
|
|
|
@@ -90,6 +90,11 @@
|
|
|
90
90
|
[self.delegate bottomSheetView:self didChangeIndex:index];
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
+
- (void)bottomSheetHostingView:(RNSBottomSheetHostingView *)view didSettle:(NSInteger)index
|
|
94
|
+
{
|
|
95
|
+
[self.delegate bottomSheetView:self didSettle:index];
|
|
96
|
+
}
|
|
97
|
+
|
|
93
98
|
- (void)bottomSheetHostingView:(RNSBottomSheetHostingView *)view didChangePosition:(CGFloat)position
|
|
94
99
|
{
|
|
95
100
|
[self.delegate bottomSheetView:self didChangePosition:position];
|
|
@@ -2,6 +2,7 @@ import UIKit
|
|
|
2
2
|
|
|
3
3
|
@objc public protocol RNSBottomSheetHostingViewDelegate: AnyObject {
|
|
4
4
|
func bottomSheetHostingView(_ view: RNSBottomSheetHostingView, didChangeIndex index: Int)
|
|
5
|
+
func bottomSheetHostingView(_ view: RNSBottomSheetHostingView, didSettle index: Int)
|
|
5
6
|
func bottomSheetHostingView(_ view: RNSBottomSheetHostingView, didChangePosition position: CGFloat)
|
|
6
7
|
}
|
|
7
8
|
|
|
@@ -112,7 +113,7 @@ public final class RNSBottomSheetHostingView: UIView {
|
|
|
112
113
|
let closedTy = detentSpecs.last?.height ?? bounds.height
|
|
113
114
|
sheetContainer.transform = CGAffineTransform(translationX: 0, y: closedTy)
|
|
114
115
|
emitPosition()
|
|
115
|
-
snapToIndex(targetIndex, velocity: 0, emitIndexChange: false)
|
|
116
|
+
snapToIndex(targetIndex, velocity: 0, emitIndexChange: false, emitSettle: false)
|
|
116
117
|
} else {
|
|
117
118
|
sheetContainer.transform = CGAffineTransform(translationX: 0, y: translationY(for: targetIndex))
|
|
118
119
|
emitPosition()
|
|
@@ -296,7 +297,12 @@ public final class RNSBottomSheetHostingView: UIView {
|
|
|
296
297
|
snapToIndex(closedIndex, velocity: 0)
|
|
297
298
|
}
|
|
298
299
|
|
|
299
|
-
private func snapToIndex(
|
|
300
|
+
private func snapToIndex(
|
|
301
|
+
_ index: Int,
|
|
302
|
+
velocity: CGFloat,
|
|
303
|
+
emitIndexChange: Bool = true,
|
|
304
|
+
emitSettle: Bool = true
|
|
305
|
+
) {
|
|
300
306
|
guard index >= 0, index < detentSpecs.count else { return }
|
|
301
307
|
targetIndex = index
|
|
302
308
|
|
|
@@ -325,6 +331,9 @@ public final class RNSBottomSheetHostingView: UIView {
|
|
|
325
331
|
if emitIndexChange {
|
|
326
332
|
self.eventDelegate?.bottomSheetHostingView(self, didChangeIndex: index)
|
|
327
333
|
}
|
|
334
|
+
if emitSettle {
|
|
335
|
+
self.eventDelegate?.bottomSheetHostingView(self, didSettle: index)
|
|
336
|
+
}
|
|
328
337
|
}
|
|
329
338
|
animator.startAnimation()
|
|
330
339
|
activeAnimator = animator
|
|
@@ -15,6 +15,7 @@ export const BottomSheet = ({
|
|
|
15
15
|
index,
|
|
16
16
|
animateIn = true,
|
|
17
17
|
onIndexChange,
|
|
18
|
+
onSettle,
|
|
18
19
|
onPositionChange,
|
|
19
20
|
modal = false,
|
|
20
21
|
scrimColor = 'rgba(0, 0, 0, 0.5)'
|
|
@@ -41,6 +42,9 @@ export const BottomSheet = ({
|
|
|
41
42
|
const handleIndexChange = event => {
|
|
42
43
|
onIndexChange?.(event.nativeEvent.index);
|
|
43
44
|
};
|
|
45
|
+
const handleSettle = event => {
|
|
46
|
+
onSettle?.(event.nativeEvent.index);
|
|
47
|
+
};
|
|
44
48
|
const handlePositionChange = event => {
|
|
45
49
|
const height = event.nativeEvent.position;
|
|
46
50
|
sheetOpacity.setValue(height === 0 ? 0 : 1);
|
|
@@ -72,6 +76,7 @@ export const BottomSheet = ({
|
|
|
72
76
|
modal: modal,
|
|
73
77
|
scrimColor: scrimColor,
|
|
74
78
|
onIndexChange: handleIndexChange,
|
|
79
|
+
onSettle: handleSettle,
|
|
75
80
|
onPositionChange: handlePositionChange,
|
|
76
81
|
children: /*#__PURE__*/_jsxs(View, {
|
|
77
82
|
collapsable: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRef","useState","Animated","StyleSheet","View","useWindowDimensions","useSafeAreaInsets","BottomSheetNativeComponent","Portal","resolveDetent","jsx","_jsx","jsxs","_jsxs","programmatic","BottomSheet","children","style","detents","index","animateIn","onIndexChange","onPositionChange","modal","scrimColor","height","windowHeight","insets","maxHeight","top","contentHeight","setContentHeight","sheetOpacity","Value","current","resolvedDetents","map","detent","value","Math","max","min","isDetentProgrammatic","handleSentinelLayout","event","nativeEvent","layout","y","clampedIndex","length","isCollapsed","handleIndexChange","handlePositionChange","position","setValue","sheet","absoluteFill","pointerEvents","opacity","left","right","bottom","collapsable","flex","onLayout"],"sourceRoot":"../../src","sources":["BottomSheet.tsx"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,QAAQ,QAAwB,OAAO;AAExD,SAASC,QAAQ,EAAEC,UAAU,EAAEC,IAAI,EAAEC,mBAAmB,QAAQ,cAAc;AAC9E,SAASC,iBAAiB,QAAQ,gCAAgC;AAElE,OAAOC,0BAA0B,MAAM,8BAA8B;AACrE,SAASC,MAAM,QAAQ,0BAAuB;AAC9C,SAAsBC,aAAa,QAAQ,uBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEhE,SAASC,YAAY,QAAQ,uBAAoB;
|
|
1
|
+
{"version":3,"names":["useRef","useState","Animated","StyleSheet","View","useWindowDimensions","useSafeAreaInsets","BottomSheetNativeComponent","Portal","resolveDetent","jsx","_jsx","jsxs","_jsxs","programmatic","BottomSheet","children","style","detents","index","animateIn","onIndexChange","onSettle","onPositionChange","modal","scrimColor","height","windowHeight","insets","maxHeight","top","contentHeight","setContentHeight","sheetOpacity","Value","current","resolvedDetents","map","detent","value","Math","max","min","isDetentProgrammatic","handleSentinelLayout","event","nativeEvent","layout","y","clampedIndex","length","isCollapsed","handleIndexChange","handleSettle","handlePositionChange","position","setValue","sheet","absoluteFill","pointerEvents","opacity","left","right","bottom","collapsable","flex","onLayout"],"sourceRoot":"../../src","sources":["BottomSheet.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,6 +19,9 @@ export interface NativeProps extends ViewProps {
|
|
|
19
19
|
onIndexChange?: CodegenTypes.DirectEventHandler<
|
|
20
20
|
Readonly<{ index: CodegenTypes.Int32 }>
|
|
21
21
|
>;
|
|
22
|
+
onSettle?: CodegenTypes.DirectEventHandler<
|
|
23
|
+
Readonly<{ index: CodegenTypes.Int32 }>
|
|
24
|
+
>;
|
|
22
25
|
onPositionChange?: CodegenTypes.DirectEventHandler<
|
|
23
26
|
Readonly<{ position: CodegenTypes.Double }>
|
|
24
27
|
>;
|
|
@@ -10,9 +10,10 @@ export interface BottomSheetProps {
|
|
|
10
10
|
index: number;
|
|
11
11
|
animateIn?: boolean;
|
|
12
12
|
onIndexChange?: (index: number) => void;
|
|
13
|
+
onSettle?: (index: number) => void;
|
|
13
14
|
onPositionChange?: (position: number) => void;
|
|
14
15
|
modal?: boolean;
|
|
15
16
|
scrimColor?: string;
|
|
16
17
|
}
|
|
17
|
-
export declare const BottomSheet: ({ children, style, detents, index, animateIn, onIndexChange, onPositionChange, modal, scrimColor, }: BottomSheetProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare const BottomSheet: ({ children, style, detents, index, animateIn, onIndexChange, onSettle, onPositionChange, modal, scrimColor, }: BottomSheetProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
19
|
//# sourceMappingURL=BottomSheet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../src/BottomSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAqB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAM5E,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,GAAI,
|
|
1
|
+
{"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../src/BottomSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAqB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAM5E,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,GAAI,+GAWzB,gBAAgB,4CAmFlB,CAAC"}
|
|
@@ -12,6 +12,9 @@ export interface NativeProps extends ViewProps {
|
|
|
12
12
|
onIndexChange?: CodegenTypes.DirectEventHandler<Readonly<{
|
|
13
13
|
index: CodegenTypes.Int32;
|
|
14
14
|
}>>;
|
|
15
|
+
onSettle?: CodegenTypes.DirectEventHandler<Readonly<{
|
|
16
|
+
index: CodegenTypes.Int32;
|
|
17
|
+
}>>;
|
|
15
18
|
onPositionChange?: CodegenTypes.DirectEventHandler<Readonly<{
|
|
16
19
|
position: CodegenTypes.Double;
|
|
17
20
|
}>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheetNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/BottomSheetNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,KAAK,YAAY,GAAG,QAAQ,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC,CAAC;AAEH,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACrC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,CAAC,EAAE,YAAY,CAAC,kBAAkB,CAC7C,QAAQ,CAAC;QAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAA;KAAE,CAAC,CACxC,CAAC;IACF,gBAAgB,CAAC,EAAE,YAAY,CAAC,kBAAkB,CAChD,QAAQ,CAAC;QAAE,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAA;KAAE,CAAC,CAC5C,CAAC;CACH;;AAED,wBAAsE"}
|
|
1
|
+
{"version":3,"file":"BottomSheetNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/BottomSheetNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,KAAK,YAAY,GAAG,QAAQ,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC,CAAC;AAEH,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACrC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,CAAC,EAAE,YAAY,CAAC,kBAAkB,CAC7C,QAAQ,CAAC;QAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAA;KAAE,CAAC,CACxC,CAAC;IACF,QAAQ,CAAC,EAAE,YAAY,CAAC,kBAAkB,CACxC,QAAQ,CAAC;QAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAA;KAAE,CAAC,CACxC,CAAC;IACF,gBAAgB,CAAC,EAAE,YAAY,CAAC,kBAAkB,CAChD,QAAQ,CAAC;QAAE,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAA;KAAE,CAAC,CAC5C,CAAC;CACH;;AAED,wBAAsE"}
|
package/package.json
CHANGED
package/src/BottomSheet.tsx
CHANGED
|
@@ -16,6 +16,7 @@ export interface BottomSheetProps {
|
|
|
16
16
|
index: number;
|
|
17
17
|
animateIn?: boolean;
|
|
18
18
|
onIndexChange?: (index: number) => void;
|
|
19
|
+
onSettle?: (index: number) => void;
|
|
19
20
|
onPositionChange?: (position: number) => void;
|
|
20
21
|
modal?: boolean;
|
|
21
22
|
scrimColor?: string;
|
|
@@ -28,6 +29,7 @@ export const BottomSheet = ({
|
|
|
28
29
|
index,
|
|
29
30
|
animateIn = true,
|
|
30
31
|
onIndexChange,
|
|
32
|
+
onSettle,
|
|
31
33
|
onPositionChange,
|
|
32
34
|
modal = false,
|
|
33
35
|
scrimColor = 'rgba(0, 0, 0, 0.5)',
|
|
@@ -55,6 +57,9 @@ export const BottomSheet = ({
|
|
|
55
57
|
const handleIndexChange = (event: { nativeEvent: { index: number } }) => {
|
|
56
58
|
onIndexChange?.(event.nativeEvent.index);
|
|
57
59
|
};
|
|
60
|
+
const handleSettle = (event: { nativeEvent: { index: number } }) => {
|
|
61
|
+
onSettle?.(event.nativeEvent.index);
|
|
62
|
+
};
|
|
58
63
|
|
|
59
64
|
const handlePositionChange = (event: {
|
|
60
65
|
nativeEvent: { position: number };
|
|
@@ -94,6 +99,7 @@ export const BottomSheet = ({
|
|
|
94
99
|
modal={modal}
|
|
95
100
|
scrimColor={scrimColor}
|
|
96
101
|
onIndexChange={handleIndexChange}
|
|
102
|
+
onSettle={handleSettle}
|
|
97
103
|
onPositionChange={handlePositionChange}
|
|
98
104
|
>
|
|
99
105
|
<View collapsable={false} style={{ flex: 1, maxHeight }}>
|
|
@@ -19,6 +19,9 @@ export interface NativeProps extends ViewProps {
|
|
|
19
19
|
onIndexChange?: CodegenTypes.DirectEventHandler<
|
|
20
20
|
Readonly<{ index: CodegenTypes.Int32 }>
|
|
21
21
|
>;
|
|
22
|
+
onSettle?: CodegenTypes.DirectEventHandler<
|
|
23
|
+
Readonly<{ index: CodegenTypes.Int32 }>
|
|
24
|
+
>;
|
|
22
25
|
onPositionChange?: CodegenTypes.DirectEventHandler<
|
|
23
26
|
Readonly<{ position: CodegenTypes.Double }>
|
|
24
27
|
>;
|