@swmansion/react-native-bottom-sheet 0.15.0-next.7 → 0.15.0-next.9

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 CHANGED
@@ -208,6 +208,10 @@ Decoupling the surface this way keeps the sheet covered as the content height
208
208
  changes. When content shrinks, the sheet animates to its new height without the
209
209
  background briefly exposing blank space behind the content.
210
210
 
211
+ If your sheet content animates its own height, pass
212
+ `animateContentResize={false}` to update the sheet position immediately when the
213
+ active `'content'` detent changes size.
214
+
211
215
  Give the surface a filling style such as `StyleSheet.absoluteFill`. It is
212
216
  mounted in a full‍-‍size host, so a surface sized only by its own
213
217
  content would collapse and not show.
@@ -58,6 +58,7 @@ class BottomSheetHostView(context: Context) : ReactViewGroup(context) {
58
58
  private var detentSpecs: List<DetentSpec> = emptyList()
59
59
  private var targetIndex: Int = 0
60
60
  var animateIn: Boolean = true
61
+ var animateContentResize: Boolean = true
61
62
  var modal: Boolean = false
62
63
  set(value) {
63
64
  field = value
@@ -364,10 +365,14 @@ class BottomSheetHostView(context: Context) : ReactViewGroup(context) {
364
365
  } else {
365
366
  val currentVisibleHeight = previousMaxHeight - sheetContainer.translationY
366
367
  val targetHeight = detentSpecs.getOrNull(targetIndex)?.height ?: 0f
368
+ val shouldAnimateResize = shouldAnimateContentResize(targetIndex)
367
369
  if (kotlin.math.abs(targetHeight - currentVisibleHeight) <= 0.5f) {
368
370
  // No meaningful change.
369
371
  sheetContainer.translationY = targetTy
370
372
  emitPosition()
373
+ } else if (!shouldAnimateResize) {
374
+ sheetContainer.translationY = targetTy
375
+ emitPosition()
371
376
  } else {
372
377
  // The content detent changed (grew or shrank): re-anchor at the
373
378
  // current visible height, then animate to the new target. The
@@ -393,6 +398,9 @@ class BottomSheetHostView(context: Context) : ReactViewGroup(context) {
393
398
  updateScrim()
394
399
  }
395
400
 
401
+ private fun shouldAnimateContentResize(index: Int): Boolean =
402
+ animateContentResize || rawDetentSpecs.getOrNull(index)?.kind != DetentKind.CONTENT
403
+
396
404
  private fun currentContentHeight(): Float {
397
405
  val marker = contentHeightMarker ?: return Float.NaN
398
406
  return marker.top.toFloat()
@@ -825,12 +833,42 @@ class BottomSheetHostView(context: Context) : ReactViewGroup(context) {
825
833
  }
826
834
  }
827
835
 
828
- if (view.canScrollVertically(1) || view.canScrollVertically(-1)) {
836
+ if (isVerticallyScrollable(view)) {
829
837
  return view
830
838
  }
831
839
  return null
832
840
  }
833
841
 
842
+ private fun isVerticallyScrollable(view: View): Boolean {
843
+ if (!view.canScrollVertically(1) && !view.canScrollVertically(-1)) {
844
+ return false
845
+ }
846
+ return getReactScrollEnabled(view) != false
847
+ }
848
+
849
+ private fun getReactScrollEnabled(view: View): Boolean? {
850
+ val method =
851
+ try {
852
+ view.javaClass.getMethod("getScrollEnabled")
853
+ } catch (_: NoSuchMethodException) {
854
+ return null
855
+ }
856
+
857
+ if (
858
+ method.returnType != Boolean::class.javaPrimitiveType &&
859
+ method.returnType != Boolean::class.javaObjectType
860
+ ) {
861
+ return null
862
+ }
863
+
864
+ return try {
865
+ method.isAccessible = true
866
+ method.invoke(view) as? Boolean
867
+ } catch (_: Exception) {
868
+ null
869
+ }
870
+ }
871
+
834
872
  private fun isViewInverted(view: View): Boolean {
835
873
  val values = FloatArray(9)
836
874
  var current: View? = view
@@ -112,6 +112,12 @@ class BottomSheetView(context: Context) : ReactViewGroup(context), LifecycleEven
112
112
  host.animateIn = value
113
113
  }
114
114
 
115
+ var animateContentResize: Boolean
116
+ get() = host.animateContentResize
117
+ set(value) {
118
+ host.animateContentResize = value
119
+ }
120
+
115
121
  var modal: Boolean
116
122
  get() = host.modal
117
123
  set(value) {
@@ -128,6 +128,11 @@ class BottomSheetViewManager :
128
128
  view.animateIn = animateIn
129
129
  }
130
130
 
131
+ @ReactProp(name = "animateContentResize")
132
+ override fun setAnimateContentResize(view: BottomSheetView, animateContentResize: Boolean) {
133
+ view.animateContentResize = animateContentResize
134
+ }
135
+
131
136
  @ReactProp(name = "modal")
132
137
  override fun setModal(view: BottomSheetView, modal: Boolean) {
133
138
  view.modal = modal
@@ -113,6 +113,10 @@ using namespace facebook::react;
113
113
  _sheetView.animateIn = newViewProps.animateIn;
114
114
  }
115
115
 
116
+ if (newViewProps.animateContentResize != oldViewProps.animateContentResize) {
117
+ _sheetView.animateContentResize = newViewProps.animateContentResize;
118
+ }
119
+
116
120
  if (newViewProps.modal != oldViewProps.modal) {
117
121
  _sheetView.modal = newViewProps.modal;
118
122
  }
@@ -17,6 +17,7 @@ NS_ASSUME_NONNULL_BEGIN
17
17
 
18
18
  @property (nonatomic, weak, nullable) id<BottomSheetContentViewDelegate> delegate;
19
19
  @property (nonatomic) BOOL animateIn;
20
+ @property (nonatomic) BOOL animateContentResize;
20
21
  @property (nonatomic) BOOL modal;
21
22
  @property (nonatomic) BOOL disableScrollableNegotiation;
22
23
  @property (nonatomic, readonly) UIView *sheetContainer;
@@ -35,6 +35,16 @@
35
35
  _impl.animateIn = animateIn;
36
36
  }
37
37
 
38
+ - (BOOL)animateContentResize
39
+ {
40
+ return _impl.animateContentResize;
41
+ }
42
+
43
+ - (void)setAnimateContentResize:(BOOL)animateContentResize
44
+ {
45
+ _impl.animateContentResize = animateContentResize;
46
+ }
47
+
38
48
  - (UIView *)sheetContainer
39
49
  {
40
50
  return _impl.sheetContainer;
@@ -64,6 +64,7 @@ public final class BottomSheetHostingView: UIView {
64
64
 
65
65
  private var targetIndex: Int = 0
66
66
  public var animateIn: Bool = true
67
+ public var animateContentResize: Bool = true
67
68
 
68
69
  public let sheetContainer = UIView()
69
70
  private let scrimView = UIControl()
@@ -620,6 +621,7 @@ public final class BottomSheetHostingView: UIView {
620
621
  }
621
622
 
622
623
  private func isVerticallyScrollable(_ scrollView: UIScrollView) -> Bool {
624
+ guard scrollView.isScrollEnabled else { return false }
623
625
  let verticalInset = scrollView.adjustedContentInset.top + scrollView.adjustedContentInset.bottom
624
626
  let visibleHeight = max(0, scrollView.bounds.height - verticalInset)
625
627
  return scrollView.alwaysBounceVertical || scrollView.contentSize.height > visibleHeight
@@ -789,10 +791,14 @@ public final class BottomSheetHostingView: UIView {
789
791
  } else {
790
792
  let currentVisibleHeight = previousMaxHeight - currentTranslationY
791
793
  let targetHeight = detent(at: targetIndex).height
794
+ let shouldAnimateResize = shouldAnimateContentResize(at: targetIndex)
792
795
  if abs(targetHeight - currentVisibleHeight) <= 0.5 {
793
796
  // No meaningful change.
794
797
  sheetContainer.transform = CGAffineTransform(translationX: 0, y: targetTy)
795
798
  emitPosition()
799
+ } else if !shouldAnimateResize {
800
+ sheetContainer.transform = CGAffineTransform(translationX: 0, y: targetTy)
801
+ emitPosition()
796
802
  } else {
797
803
  // The content detent changed (grew or shrank): re-anchor at the
798
804
  // current visible height, then animate to the new target. The surface
@@ -813,6 +819,13 @@ public final class BottomSheetHostingView: UIView {
813
819
  }
814
820
  }
815
821
 
822
+ private func shouldAnimateContentResize(at index: Int) -> Bool {
823
+ guard rawDetentSpecs.indices.contains(index) else {
824
+ return animateContentResize
825
+ }
826
+ return animateContentResize || rawDetentSpecs[index].kind != .content
827
+ }
828
+
816
829
  private func refreshContentHeightMarker() {
817
830
  let marker = findContentHeightMarker()
818
831
  guard marker !== contentHeightMarker else { return }
@@ -27,6 +27,7 @@ export const BottomSheet = props => {
27
27
  detents = [0, 'content'],
28
28
  index,
29
29
  animateIn = true,
30
+ animateContentResize = true,
30
31
  onIndexChange,
31
32
  onSettle,
32
33
  onPositionChange,
@@ -103,6 +104,7 @@ export const BottomSheet = props => {
103
104
  maxDetentHeight: maxHeight,
104
105
  index: index,
105
106
  animateIn: animateIn,
107
+ animateContentResize: animateContentResize,
106
108
  modal: modal,
107
109
  nativeOverlay: usesNativeOverlay,
108
110
  disableScrollableNegotiation: disableScrollableNegotiation,
@@ -1 +1 @@
1
- {"version":3,"names":["useState","StyleSheet","View","useSafeAreaFrame","useSafeAreaInsets","BottomSheetNativeView","BottomSheetSurfaceNativeComponent","Portal","jsx","_jsx","jsxs","_jsxs","programmatic","BottomSheet","props","children","surface","style","detents","index","animateIn","onIndexChange","onSettle","onPositionChange","wrapNativeView","modal","nativeOverlay","disableScrollableNegotiation","scrimColor","scrimOpacities","height","windowHeight","insets","maxHeight","top","nativeDetents","map","detent","isDetentProgrammatic","value","resolveDetentValue","kind","Math","max","min","clampedIndex","length","selectedDetentValue","isCollapsed","resolvedScrimOpacity","usesNativeOverlay","handleIndexChange","event","nativeEvent","handleSettle","NativeView","sheet","absoluteFill","pointerEvents","position","left","right","bottom","maxDetentHeight","collapsable","flex"],"sourceRoot":"../../src","sources":["BottomSheet.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useState","StyleSheet","View","useSafeAreaFrame","useSafeAreaInsets","BottomSheetNativeView","BottomSheetSurfaceNativeComponent","Portal","jsx","_jsx","jsxs","_jsxs","programmatic","BottomSheet","props","children","surface","style","detents","index","animateIn","animateContentResize","onIndexChange","onSettle","onPositionChange","wrapNativeView","modal","nativeOverlay","disableScrollableNegotiation","scrimColor","scrimOpacities","height","windowHeight","insets","maxHeight","top","nativeDetents","map","detent","isDetentProgrammatic","value","resolveDetentValue","kind","Math","max","min","clampedIndex","length","selectedDetentValue","isCollapsed","resolvedScrimOpacity","usesNativeOverlay","handleIndexChange","event","nativeEvent","handleSettle","NativeView","sheet","absoluteFill","pointerEvents","position","left","right","bottom","maxDetentHeight","collapsable","flex"],"sourceRoot":"../../src","sources":["BottomSheet.tsx"],"mappings":"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","ignoreList":[]}
@@ -16,6 +16,7 @@ export interface NativeProps extends ViewProps {
16
16
  maxDetentHeight: CodegenTypes.Double;
17
17
  index: CodegenTypes.Int32;
18
18
  animateIn?: CodegenTypes.WithDefault<boolean, true>;
19
+ animateContentResize?: CodegenTypes.WithDefault<boolean, true>;
19
20
  modal: boolean;
20
21
  nativeOverlay?: boolean;
21
22
  disableScrollableNegotiation?: boolean;
@@ -45,6 +45,13 @@ export interface BottomSheetProps {
45
45
  index: number;
46
46
  /** Whether the sheet should animate in on first layout. */
47
47
  animateIn?: boolean;
48
+ /**
49
+ * Whether the sheet should animate when the active `'content'` detent changes
50
+ * height. Disable this when your content animates its own height.
51
+ *
52
+ * @default true
53
+ */
54
+ animateContentResize?: boolean;
48
55
  /**
49
56
  * Called when a user-driven snap is initiated: the moment a drag commits to a
50
57
  * detent, before the animation settles. Does not fire for programmatic `index`
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../src/BottomSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAO/E,OAA8B,EAC5B,KAAK,WAAW,EACjB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CACjB,KAAK,EAAE,oBAAoB,CAAC,uBAAuB,CAAC,KACjD,IAAI,CAAC;IACV;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,CACf,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,KAClC,aAAa,CAAC,WAAW,CAAC,CAAC;IAChC;;;;OAIG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC;AAED,KAAK,yBAAyB,GAAG;IAC/B,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,GACrD,yBAAyB,CAAC;AAE5B,gFAAgF;AAChF,eAAO,MAAM,WAAW,GAAI,OAAO,gBAAgB,4CAyIlD,CAAC"}
1
+ {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../src/BottomSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAO/E,OAA8B,EAC5B,KAAK,WAAW,EACjB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CACjB,KAAK,EAAE,oBAAoB,CAAC,uBAAuB,CAAC,KACjD,IAAI,CAAC;IACV;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,CACf,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,KAClC,aAAa,CAAC,WAAW,CAAC,CAAC;IAChC;;;;OAIG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC;AAED,KAAK,yBAAyB,GAAG;IAC/B,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,GACrD,yBAAyB,CAAC;AAE5B,gFAAgF;AAChF,eAAO,MAAM,WAAW,GAAI,OAAO,gBAAgB,4CA2IlD,CAAC"}
@@ -9,6 +9,7 @@ export interface NativeProps extends ViewProps {
9
9
  maxDetentHeight: CodegenTypes.Double;
10
10
  index: CodegenTypes.Int32;
11
11
  animateIn?: CodegenTypes.WithDefault<boolean, true>;
12
+ animateContentResize?: CodegenTypes.WithDefault<boolean, true>;
12
13
  modal: boolean;
13
14
  nativeOverlay?: boolean;
14
15
  disableScrollableNegotiation?: boolean;
@@ -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,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC,CAAC;AAEH,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACrC,eAAe,EAAE,YAAY,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;IAC1B,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpD,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,cAAc,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACpD,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,CAAC;QAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAA;KAAE,CAAC,CACxE,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,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC,CAAC;AAEH,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACrC,eAAe,EAAE,YAAY,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;IAC1B,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpD,oBAAoB,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/D,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,cAAc,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACpD,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,CAAC;QAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAA;KAAE,CAAC,CACxE,CAAC;CACH;;AAED,wBAAsE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swmansion/react-native-bottom-sheet",
3
- "version": "0.15.0-next.7",
3
+ "version": "0.15.0-next.9",
4
4
  "description": "Provides bottom-sheet components for React Native.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -57,6 +57,13 @@ export interface BottomSheetProps {
57
57
  index: number;
58
58
  /** Whether the sheet should animate in on first layout. */
59
59
  animateIn?: boolean;
60
+ /**
61
+ * Whether the sheet should animate when the active `'content'` detent changes
62
+ * height. Disable this when your content animates its own height.
63
+ *
64
+ * @default true
65
+ */
66
+ animateContentResize?: boolean;
60
67
  /**
61
68
  * Called when a user-driven snap is initiated: the moment a drag commits to a
62
69
  * detent, before the animation settles. Does not fire for programmatic `index`
@@ -136,6 +143,7 @@ export const BottomSheet = (props: BottomSheetProps) => {
136
143
  detents = [0, 'content'],
137
144
  index,
138
145
  animateIn = true,
146
+ animateContentResize = true,
139
147
  onIndexChange,
140
148
  onSettle,
141
149
  onPositionChange,
@@ -227,6 +235,7 @@ export const BottomSheet = (props: BottomSheetProps) => {
227
235
  maxDetentHeight={maxHeight}
228
236
  index={index}
229
237
  animateIn={animateIn}
238
+ animateContentResize={animateContentResize}
230
239
  modal={modal}
231
240
  nativeOverlay={usesNativeOverlay}
232
241
  disableScrollableNegotiation={disableScrollableNegotiation}
@@ -16,6 +16,7 @@ export interface NativeProps extends ViewProps {
16
16
  maxDetentHeight: CodegenTypes.Double;
17
17
  index: CodegenTypes.Int32;
18
18
  animateIn?: CodegenTypes.WithDefault<boolean, true>;
19
+ animateContentResize?: CodegenTypes.WithDefault<boolean, true>;
19
20
  modal: boolean;
20
21
  nativeOverlay?: boolean;
21
22
  disableScrollableNegotiation?: boolean;