@swmansion/react-native-bottom-sheet 0.7.0-next.8 → 0.7.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/android/src/main/java/com/swmansion/reactnativebottomsheet/BottomSheetView.kt +3 -1
- package/common/cpp/react/renderer/components/ReactNativeBottomSheetSpec/BottomSheetStateHelper.h +12 -0
- package/common/cpp/react/renderer/components/ReactNativeBottomSheetSpec/BottomSheetViewShadowNode.cpp +19 -17
- package/common/cpp/react/renderer/components/ReactNativeBottomSheetSpec/ComponentDescriptors.h +0 -6
- package/common/cpp/react/renderer/components/ReactNativeBottomSheetSpec/ShadowNodes.h +1 -1
- package/ios/BottomSheetComponentView.mm +20 -0
- package/lib/module/BottomSheet.js +6 -2
- package/lib/module/BottomSheet.js.map +1 -1
- package/lib/typescript/src/BottomSheet.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/BottomSheet.tsx +7 -2
|
@@ -218,7 +218,9 @@ class BottomSheetView(context: Context) : ReactViewGroup(context) {
|
|
|
218
218
|
private var lastShadowOffsetY = Float.NaN
|
|
219
219
|
|
|
220
220
|
private fun updateShadowState(translationY: Float) {
|
|
221
|
-
val
|
|
221
|
+
val maxDetentHeight = detentSpecs.lastOrNull()?.height ?: height.toFloat()
|
|
222
|
+
val containerTop = height.toFloat() - maxDetentHeight
|
|
223
|
+
val offsetY = ((containerTop + translationY) / density).toDouble()
|
|
222
224
|
if (offsetY.toFloat() == lastShadowOffsetY) return
|
|
223
225
|
lastShadowOffsetY = offsetY.toFloat()
|
|
224
226
|
val sw = stateWrapper ?: return
|
|
@@ -1,28 +1,30 @@
|
|
|
1
|
+
#include "BottomSheetStateHelper.h"
|
|
1
2
|
#include "ShadowNodes.h"
|
|
2
3
|
|
|
3
|
-
#include <yoga/Yoga.h>
|
|
4
|
-
|
|
5
4
|
namespace facebook::react {
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
ensureUnsealed();
|
|
10
|
-
|
|
6
|
+
Point BottomSheetViewShadowNode::getContentOriginOffset(
|
|
7
|
+
bool /*includeTransform*/) const {
|
|
11
8
|
auto state =
|
|
12
9
|
std::static_pointer_cast<const BottomSheetViewShadowNode::ConcreteState>(
|
|
13
10
|
getState());
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
auto adjustedStyle = getConcreteProps().yogaStyle;
|
|
17
|
-
auto newPaddingTop =
|
|
18
|
-
yoga::Style::Length::points(stateData.contentOffsetY);
|
|
11
|
+
return {0, state->getData().contentOffsetY};
|
|
12
|
+
}
|
|
19
13
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
14
|
+
void updateBottomSheetContentOffsetY(
|
|
15
|
+
const State::Shared& state,
|
|
16
|
+
float contentOffsetY) {
|
|
17
|
+
auto concreteState =
|
|
18
|
+
std::static_pointer_cast<const BottomSheetViewShadowNode::ConcreteState>(
|
|
19
|
+
state);
|
|
20
|
+
concreteState->updateState(
|
|
21
|
+
[contentOffsetY](const BottomSheetViewState& /*oldState*/)
|
|
22
|
+
-> BottomSheetViewShadowNode::ConcreteState::SharedData {
|
|
23
|
+
auto newState = std::make_shared<BottomSheetViewState>();
|
|
24
|
+
const_cast<BottomSheetViewState&>(*newState).contentOffsetY =
|
|
25
|
+
contentOffsetY;
|
|
26
|
+
return newState;
|
|
27
|
+
});
|
|
26
28
|
}
|
|
27
29
|
|
|
28
30
|
} // namespace facebook::react
|
package/common/cpp/react/renderer/components/ReactNativeBottomSheetSpec/ComponentDescriptors.h
CHANGED
|
@@ -8,12 +8,6 @@ namespace facebook::react {
|
|
|
8
8
|
class BottomSheetViewComponentDescriptor final
|
|
9
9
|
: public ConcreteComponentDescriptor<BottomSheetViewShadowNode> {
|
|
10
10
|
using ConcreteComponentDescriptor::ConcreteComponentDescriptor;
|
|
11
|
-
|
|
12
|
-
void adopt(ShadowNode& shadowNode) const override {
|
|
13
|
-
auto& node = static_cast<BottomSheetViewShadowNode&>(shadowNode);
|
|
14
|
-
node.adjustLayoutWithState();
|
|
15
|
-
ConcreteComponentDescriptor::adopt(shadowNode);
|
|
16
|
-
}
|
|
17
11
|
};
|
|
18
12
|
|
|
19
13
|
} // namespace facebook::react
|
|
@@ -19,7 +19,7 @@ class JSI_EXPORT BottomSheetViewShadowNode final
|
|
|
19
19
|
using ConcreteViewShadowNode::ConcreteViewShadowNode;
|
|
20
20
|
|
|
21
21
|
public:
|
|
22
|
-
|
|
22
|
+
Point getContentOriginOffset(bool includeTransform) const override;
|
|
23
23
|
};
|
|
24
24
|
|
|
25
25
|
} // namespace facebook::react
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
#import <React/RCTConversions.h>
|
|
5
5
|
#import <React/RCTFabricComponentsPlugins.h>
|
|
6
|
+
#import <react/renderer/components/ReactNativeBottomSheetSpec/BottomSheetStateHelper.h>
|
|
6
7
|
#import <react/renderer/components/ReactNativeBottomSheetSpec/ComponentDescriptors.h>
|
|
7
8
|
#import <react/renderer/components/ReactNativeBottomSheetSpec/EventEmitters.h>
|
|
8
9
|
#import <react/renderer/components/ReactNativeBottomSheetSpec/Props.h>
|
|
@@ -15,6 +16,8 @@ using namespace facebook::react;
|
|
|
15
16
|
|
|
16
17
|
@implementation BottomSheetComponentView {
|
|
17
18
|
BottomSheetContentView *_sheetView;
|
|
19
|
+
State::Shared _sheetState;
|
|
20
|
+
float _lastContentOffsetY;
|
|
18
21
|
}
|
|
19
22
|
|
|
20
23
|
+ (ComponentDescriptorProvider)componentDescriptorProvider
|
|
@@ -64,6 +67,11 @@ using namespace facebook::react;
|
|
|
64
67
|
[super updateProps:props oldProps:oldProps];
|
|
65
68
|
}
|
|
66
69
|
|
|
70
|
+
- (void)updateState:(const State::Shared &)state oldState:(const State::Shared &)oldState
|
|
71
|
+
{
|
|
72
|
+
_sheetState = state;
|
|
73
|
+
}
|
|
74
|
+
|
|
67
75
|
- (void)mountChildComponentView:(UIView<RCTComponentViewProtocol> *)childComponentView index:(NSInteger)index
|
|
68
76
|
{
|
|
69
77
|
[_sheetView mountChildComponentView:childComponentView atIndex:index];
|
|
@@ -90,12 +98,24 @@ using namespace facebook::react;
|
|
|
90
98
|
auto emitter = std::static_pointer_cast<const BottomSheetViewEventEmitter>(_eventEmitter);
|
|
91
99
|
emitter->onPositionChange({.position = static_cast<double>(position)});
|
|
92
100
|
}
|
|
101
|
+
|
|
102
|
+
float contentOffsetY = static_cast<float>(self.bounds.size.height - position);
|
|
103
|
+
if (contentOffsetY == _lastContentOffsetY) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
_lastContentOffsetY = contentOffsetY;
|
|
107
|
+
|
|
108
|
+
if (_sheetState) {
|
|
109
|
+
updateBottomSheetContentOffsetY(_sheetState, contentOffsetY);
|
|
110
|
+
}
|
|
93
111
|
}
|
|
94
112
|
|
|
95
113
|
- (void)prepareForRecycle
|
|
96
114
|
{
|
|
97
115
|
[super prepareForRecycle];
|
|
98
116
|
[_sheetView resetSheetState];
|
|
117
|
+
_sheetState.reset();
|
|
118
|
+
_lastContentOffsetY = 0;
|
|
99
119
|
}
|
|
100
120
|
|
|
101
121
|
@end
|
|
@@ -39,6 +39,7 @@ export const BottomSheet = ({
|
|
|
39
39
|
const [contentHeight, setContentHeight] = useState(0);
|
|
40
40
|
const currentPositionRef = useRef(0);
|
|
41
41
|
const scrimProgress = useRef(new Animated.Value(0)).current;
|
|
42
|
+
const sheetOpacity = useRef(new Animated.Value(0)).current;
|
|
42
43
|
const resolvedDetents = detents.map(detent => {
|
|
43
44
|
const value = resolveDetent(detent, contentHeight, maxHeight);
|
|
44
45
|
return {
|
|
@@ -85,6 +86,7 @@ export const BottomSheet = ({
|
|
|
85
86
|
currentPositionRef.current = height;
|
|
86
87
|
const progress = firstNonzeroDetent <= 0 ? 0 : Math.min(1, Math.max(0, height / firstNonzeroDetent));
|
|
87
88
|
scrimProgress.setValue(progress);
|
|
89
|
+
sheetOpacity.setValue(height === 0 ? 0 : 1);
|
|
88
90
|
onPositionChange?.(height);
|
|
89
91
|
};
|
|
90
92
|
const closedIndex = resolvedDetents.findIndex(detent => detent.height === 0);
|
|
@@ -105,9 +107,11 @@ export const BottomSheet = ({
|
|
|
105
107
|
style: StyleSheet.absoluteFill,
|
|
106
108
|
onPress: handleScrimPress,
|
|
107
109
|
children: scrimElement
|
|
108
|
-
}) : null, /*#__PURE__*/_jsx(View, {
|
|
110
|
+
}) : null, /*#__PURE__*/_jsx(Animated.View, {
|
|
109
111
|
pointerEvents: "box-none",
|
|
110
|
-
style: StyleSheet.absoluteFill,
|
|
112
|
+
style: [StyleSheet.absoluteFill, {
|
|
113
|
+
opacity: sheetOpacity
|
|
114
|
+
}],
|
|
111
115
|
children: /*#__PURE__*/_jsx(BottomSheetNativeComponent, {
|
|
112
116
|
pointerEvents: sheetPointerEvents,
|
|
113
117
|
style: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","useState","Animated","Pressable","StyleSheet","View","useWindowDimensions","useSafeAreaInsets","BottomSheetNativeComponent","Portal","resolveDetent","jsx","_jsx","jsxs","_jsxs","programmatic","DefaultScrim","progress","color","style","absoluteFill","flex","backgroundColor","opacity","BottomSheet","children","detents","index","animateIn","onIndexChange","onPositionChange","modal","scrimColor","height","screenHeight","insets","maxHeight","top","contentHeight","setContentHeight","currentPositionRef","scrimProgress","Value","current","resolvedDetents","map","detent","value","Math","max","min","isDetentProgrammatic","handleSentinelLayout","event","nativeEvent","layout","y","clampedIndex","length","isCollapsed","sheetPointerEvents","scrimPressEnabledRef","previousIsCollapsedRef","firstNonzeroDetent","find","setValue","undefined","frame","requestAnimationFrame","cancelAnimationFrame","handleIndexChange","handlePositionChange","position","closedIndex","findIndex","handleScrimPress","scrimElement","sheet","pointerEvents","onPress","left","right","bottom","collapsable","onLayout"],"sourceRoot":"../../src","sources":["BottomSheet.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAwB,OAAO;AAEnE,SACEC,QAAQ,EACRC,SAAS,EACTC,UAAU,EACVC,IAAI,EACJC,mBAAmB,QACd,cAAc;AACrB,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;AAEjD,MAAMC,YAAY,GAAGA,CAAC;EACpBC,QAAQ;EACRC;AAIF,CAAC,KAAK;EACJ,oBACEN,IAAA,CAACV,QAAQ,CAACG,IAAI;IACZc,KAAK,EAAE,CACLf,UAAU,CAACgB,YAAY,EACvB;MAAEC,IAAI,EAAE,CAAC;MAAEC,eAAe,EAAEJ,KAAK;MAAEK,OAAO,EAAEN;IAAS,CAAC;EACtD,CACH,CAAC;AAEN,CAAC;AAcD,OAAO,MAAMO,WAAW,GAAGA,CAAC;EAC1BC,QAAQ;EACRN,KAAK;EACLO,OAAO,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;EACpBC,KAAK;EACLC,SAAS,GAAG,IAAI;EAChBC,aAAa;EACbC,gBAAgB;EAChBC,KAAK,GAAG,KAAK;EACbC,UAAU,GAAG;AACG,CAAC,KAAK;EACtB,MAAM;IAAEC,MAAM,EAAEC;EAAa,CAAC,GAAG5B,mBAAmB,CAAC,CAAC;EACtD,MAAM6B,MAAM,GAAG5B,iBAAiB,CAAC,CAAC;EAClC,MAAM6B,SAAS,GAAGF,YAAY,GAAGC,MAAM,CAACE,GAAG;EAC3C,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGtC,QAAQ,CAAC,CAAC,CAAC;EACrD,MAAMuC,kBAAkB,GAAGxC,MAAM,CAAC,CAAC,CAAC;EACpC,MAAMyC,aAAa,GAAGzC,MAAM,CAAC,IAAIE,QAAQ,CAACwC,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","useState","Animated","Pressable","StyleSheet","View","useWindowDimensions","useSafeAreaInsets","BottomSheetNativeComponent","Portal","resolveDetent","jsx","_jsx","jsxs","_jsxs","programmatic","DefaultScrim","progress","color","style","absoluteFill","flex","backgroundColor","opacity","BottomSheet","children","detents","index","animateIn","onIndexChange","onPositionChange","modal","scrimColor","height","screenHeight","insets","maxHeight","top","contentHeight","setContentHeight","currentPositionRef","scrimProgress","Value","current","sheetOpacity","resolvedDetents","map","detent","value","Math","max","min","isDetentProgrammatic","handleSentinelLayout","event","nativeEvent","layout","y","clampedIndex","length","isCollapsed","sheetPointerEvents","scrimPressEnabledRef","previousIsCollapsedRef","firstNonzeroDetent","find","setValue","undefined","frame","requestAnimationFrame","cancelAnimationFrame","handleIndexChange","handlePositionChange","position","closedIndex","findIndex","handleScrimPress","scrimElement","sheet","pointerEvents","onPress","left","right","bottom","collapsable","onLayout"],"sourceRoot":"../../src","sources":["BottomSheet.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../src/BottomSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EAAqB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAY5E,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;AAmBlD,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,qGAUzB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../src/BottomSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EAAqB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAY5E,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;AAmBlD,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,qGAUzB,gBAAgB,4CAsJlB,CAAC"}
|
package/package.json
CHANGED
package/src/BottomSheet.tsx
CHANGED
|
@@ -61,6 +61,7 @@ export const BottomSheet = ({
|
|
|
61
61
|
const [contentHeight, setContentHeight] = useState(0);
|
|
62
62
|
const currentPositionRef = useRef(0);
|
|
63
63
|
const scrimProgress = useRef(new Animated.Value(0)).current;
|
|
64
|
+
const sheetOpacity = useRef(new Animated.Value(0)).current;
|
|
64
65
|
|
|
65
66
|
const resolvedDetents = detents.map((detent) => {
|
|
66
67
|
const value = resolveDetent(detent, contentHeight, maxHeight);
|
|
@@ -130,6 +131,7 @@ export const BottomSheet = ({
|
|
|
130
131
|
? 0
|
|
131
132
|
: Math.min(1, Math.max(0, height / firstNonzeroDetent));
|
|
132
133
|
scrimProgress.setValue(progress);
|
|
134
|
+
sheetOpacity.setValue(height === 0 ? 0 : 1);
|
|
133
135
|
onPositionChange?.(height);
|
|
134
136
|
};
|
|
135
137
|
|
|
@@ -162,7 +164,10 @@ export const BottomSheet = ({
|
|
|
162
164
|
{scrimElement}
|
|
163
165
|
</Pressable>
|
|
164
166
|
) : null}
|
|
165
|
-
<View
|
|
167
|
+
<Animated.View
|
|
168
|
+
pointerEvents="box-none"
|
|
169
|
+
style={[StyleSheet.absoluteFill, { opacity: sheetOpacity }]}
|
|
170
|
+
>
|
|
166
171
|
<BottomSheetNativeComponent
|
|
167
172
|
pointerEvents={sheetPointerEvents}
|
|
168
173
|
style={[
|
|
@@ -190,7 +195,7 @@ export const BottomSheet = ({
|
|
|
190
195
|
<View onLayout={handleSentinelLayout} pointerEvents="none" />
|
|
191
196
|
</View>
|
|
192
197
|
</BottomSheetNativeComponent>
|
|
193
|
-
</View>
|
|
198
|
+
</Animated.View>
|
|
194
199
|
</Animated.View>
|
|
195
200
|
);
|
|
196
201
|
|