@lodev09/react-native-true-sheet 0.1.1 → 0.2.1
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 +9 -5
- package/TrueSheet.podspec +0 -1
- package/ios/TrueSheetView.swift +91 -90
- package/ios/TrueSheetViewController.swift +30 -16
- package/lib/commonjs/TrueSheet.js +2 -9
- package/lib/commonjs/TrueSheet.js.map +1 -1
- package/lib/module/TrueSheet.js +2 -9
- package/lib/module/TrueSheet.js.map +1 -1
- package/lib/typescript/src/TrueSheet.d.ts +0 -2
- package/lib/typescript/src/TrueSheet.d.ts.map +1 -1
- package/package.json +1 -2
- package/src/TrueSheet.tsx +2 -17
package/README.md
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
# React Native True Sheet
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://github.com/lodev09/react-native-true-sheet/actions/workflows/ci.yml)
|
|
4
|
+

|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
The true native bottom sheet.
|
|
4
8
|
|
|
5
9
|
## Features
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
* ✅ Implemented on the native realm.
|
|
11
|
+
* ✅ **_NOT_** your pure JS, (re)animated View.
|
|
12
|
+
* ✅ Clean, fast and lightweight.
|
|
13
|
+
* ✅ Handles your Sscrolling needs, easy.
|
|
10
14
|
|
|
11
15
|
## Installation
|
|
12
16
|
|
package/TrueSheet.podspec
CHANGED
package/ios/TrueSheetView.swift
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
class TrueSheetView: UIView, RCTInvalidating, TrueSheetViewControllerDelegate {
|
|
11
11
|
// MARK: - React properties
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
var sizes: [Any] = ["medium", "large"]
|
|
14
14
|
|
|
15
15
|
// Events
|
|
16
16
|
@objc var onDismiss: RCTDirectEventBlock?
|
|
@@ -33,19 +33,22 @@ class TrueSheetView: UIView, RCTInvalidating, TrueSheetViewControllerDelegate {
|
|
|
33
33
|
private var footerView: UIView?
|
|
34
34
|
private var rctScrollView: RCTScrollView?
|
|
35
35
|
|
|
36
|
-
private var isContentMounted: Bool {
|
|
37
|
-
return contentView != nil
|
|
38
|
-
}
|
|
39
|
-
|
|
40
36
|
// Content height minus the footer height for `auto` layout
|
|
41
37
|
private var contentHeight: CGFloat {
|
|
42
38
|
guard let contentView else { return 0 }
|
|
43
39
|
|
|
40
|
+
var height = contentView.frame.height
|
|
41
|
+
|
|
42
|
+
// Add footer view's height
|
|
43
|
+
if let footerContent = footerView?.subviews.first {
|
|
44
|
+
height += footerContent.bounds.height
|
|
45
|
+
}
|
|
46
|
+
|
|
44
47
|
// Exclude bottom safe area for consistency with a Scrollable content
|
|
45
48
|
let window = UIApplication.shared.windows.first(where: { $0.isKeyWindow })
|
|
46
49
|
let bottomInset = window?.safeAreaInsets.bottom ?? 0
|
|
47
50
|
|
|
48
|
-
return
|
|
51
|
+
return height - bottomInset
|
|
49
52
|
}
|
|
50
53
|
|
|
51
54
|
// MARK: - Setup
|
|
@@ -67,31 +70,6 @@ class TrueSheetView: UIView, RCTInvalidating, TrueSheetViewControllerDelegate {
|
|
|
67
70
|
fatalError("init(coder:) has not been implemented")
|
|
68
71
|
}
|
|
69
72
|
|
|
70
|
-
func viewDidChangeWidth(_ width: CGFloat) {
|
|
71
|
-
guard let containerView else { return }
|
|
72
|
-
|
|
73
|
-
let size = CGSize(width: width, height: containerView.bounds.height)
|
|
74
|
-
bridge.uiManager.setSize(size, for: containerView)
|
|
75
|
-
|
|
76
|
-
if let footerView {
|
|
77
|
-
bridge.uiManager.setSize(size, for: footerView)
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
func didDismiss() {
|
|
82
|
-
isPresented = false
|
|
83
|
-
activeIndex = nil
|
|
84
|
-
|
|
85
|
-
onDismiss?(nil)
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
func didChangeSize(_ value: CGFloat, at index: Int) {
|
|
89
|
-
if index != activeIndex {
|
|
90
|
-
activeIndex = index
|
|
91
|
-
onSizeChange?(["index": index, "value": value])
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
73
|
override func insertReactSubview(_ subview: UIView!, at index: Int) {
|
|
96
74
|
super.insertReactSubview(subview, at: index)
|
|
97
75
|
|
|
@@ -129,29 +107,59 @@ class TrueSheetView: UIView, RCTInvalidating, TrueSheetViewControllerDelegate {
|
|
|
129
107
|
super.layoutSubviews()
|
|
130
108
|
|
|
131
109
|
if let containerView, contentView == nil {
|
|
132
|
-
contentView = containerView.subviews
|
|
133
|
-
|
|
110
|
+
contentView = containerView.subviews[0]
|
|
111
|
+
footerView = containerView.subviews[1]
|
|
112
|
+
|
|
113
|
+
containerView.pinTo(view: viewController.view)
|
|
114
|
+
|
|
115
|
+
// Setup content constraints
|
|
116
|
+
setupContent()
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// MARK: - ViewController delegate
|
|
121
|
+
|
|
122
|
+
func viewControllerDidChangeWidth(_ width: CGFloat) {
|
|
123
|
+
guard let containerView else { return }
|
|
124
|
+
|
|
125
|
+
let size = CGSize(width: width, height: containerView.bounds.height)
|
|
126
|
+
bridge.uiManager.setSize(size, for: containerView)
|
|
127
|
+
|
|
128
|
+
if let footerView {
|
|
129
|
+
bridge.uiManager.setSize(size, for: footerView)
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
func viewControllerWillAppear() {
|
|
134
|
+
setupContent()
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
func viewControllerDidDismiss() {
|
|
138
|
+
isPresented = false
|
|
139
|
+
activeIndex = nil
|
|
140
|
+
|
|
141
|
+
onDismiss?(nil)
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
func viewControllerSheetDidChangeSize(_ value: CGFloat, at index: Int) {
|
|
145
|
+
if index != activeIndex {
|
|
146
|
+
activeIndex = index
|
|
147
|
+
onSizeChange?(["index": index, "value": value])
|
|
134
148
|
}
|
|
135
149
|
}
|
|
136
150
|
|
|
137
151
|
// MARK: - Prop setters
|
|
138
152
|
|
|
139
153
|
@objc
|
|
140
|
-
func
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
setupContentIfNeeded()
|
|
154
|
+
func setSizes(_ sizes: [Any]) {
|
|
155
|
+
self.sizes = sizes
|
|
156
|
+
configureSheetIfPresented()
|
|
144
157
|
}
|
|
145
158
|
|
|
146
159
|
@objc
|
|
147
|
-
func
|
|
148
|
-
let view = bridge.uiManager.view(forReactTag: tag)
|
|
149
|
-
|
|
150
|
-
setupContentIfNeeded()
|
|
151
|
-
|
|
152
|
-
if #available(iOS 16.0, *) {
|
|
153
|
-
viewController.sheet?.invalidateDetents()
|
|
154
|
-
}
|
|
160
|
+
func setScrollableHandle(_ tag: NSNumber?) {
|
|
161
|
+
let view = bridge.uiManager.view(forReactTag: tag) as? RCTScrollView
|
|
162
|
+
rctScrollView = view
|
|
155
163
|
}
|
|
156
164
|
|
|
157
165
|
func invalidate() {
|
|
@@ -160,25 +168,10 @@ class TrueSheetView: UIView, RCTInvalidating, TrueSheetViewControllerDelegate {
|
|
|
160
168
|
|
|
161
169
|
// MARK: - Methods
|
|
162
170
|
|
|
163
|
-
func
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
// Add constraints to fix weirdness and support ScrollView
|
|
169
|
-
if let contentView, let rctScrollView {
|
|
170
|
-
contentView.pinTo(view: containerView)
|
|
171
|
-
rctScrollView.pinTo(view: contentView)
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// Pin footer at the bottom
|
|
175
|
-
if let footerView {
|
|
176
|
-
containerView.bringSubviewToFront(footerView)
|
|
177
|
-
footerView.pinTo(
|
|
178
|
-
view: containerView,
|
|
179
|
-
from: [.bottom, .left, .right],
|
|
180
|
-
with: footerView.frame.height
|
|
181
|
-
)
|
|
171
|
+
func configureSheetIfPresented() {
|
|
172
|
+
// Resize sheet
|
|
173
|
+
if #available(iOS 15.0, *), isPresented {
|
|
174
|
+
viewController.configureSheet(for: sizes, at: activeIndex ?? 0, with: contentHeight, nil)
|
|
182
175
|
}
|
|
183
176
|
}
|
|
184
177
|
|
|
@@ -190,6 +183,31 @@ class TrueSheetView: UIView, RCTInvalidating, TrueSheetViewControllerDelegate {
|
|
|
190
183
|
}
|
|
191
184
|
}
|
|
192
185
|
|
|
186
|
+
func setupContent() {
|
|
187
|
+
guard let contentView, let containerView else { return }
|
|
188
|
+
|
|
189
|
+
// Add constraints to fix weirdness and support ScrollView
|
|
190
|
+
if let rctScrollView {
|
|
191
|
+
contentView.pinTo(view: containerView)
|
|
192
|
+
rctScrollView.pinTo(view: contentView)
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// Pin footer at the bottom
|
|
196
|
+
if let footerView {
|
|
197
|
+
if let footerContent = footerView.subviews.first {
|
|
198
|
+
containerView.bringSubviewToFront(footerView)
|
|
199
|
+
footerView.pinTo(
|
|
200
|
+
view: viewController.view,
|
|
201
|
+
from: [.bottom, .left, .right],
|
|
202
|
+
with: footerContent.bounds.height
|
|
203
|
+
)
|
|
204
|
+
} else {
|
|
205
|
+
containerView.sendSubviewToBack(footerView)
|
|
206
|
+
footerView.removeConstraints(footerView.constraints)
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
193
211
|
func present(at index: Int, promise: Promise) {
|
|
194
212
|
let rvc = reactViewController()
|
|
195
213
|
|
|
@@ -198,37 +216,20 @@ class TrueSheetView: UIView, RCTInvalidating, TrueSheetViewControllerDelegate {
|
|
|
198
216
|
return
|
|
199
217
|
}
|
|
200
218
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
promise.reject(message: "Size at \(index) is not configured.")
|
|
206
|
-
return
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
var identifier: UISheetPresentationController.Detent.Identifier = .medium
|
|
210
|
-
|
|
211
|
-
if sheet.detents.indices.contains(index) {
|
|
212
|
-
let detent = sheet.detents[index]
|
|
213
|
-
if #available(iOS 16.0, *) {
|
|
214
|
-
identifier = detent.identifier
|
|
215
|
-
} else if detent == .large() {
|
|
216
|
-
identifier = .large
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
if isPresented {
|
|
221
|
-
sheet.animateChanges {
|
|
222
|
-
sheet.selectedDetentIdentifier = identifier
|
|
219
|
+
guard sizes.indices.contains(index) else {
|
|
220
|
+
promise.reject(message: "Size at \(index) is not configured.")
|
|
221
|
+
return
|
|
222
|
+
}
|
|
223
223
|
|
|
224
|
+
if #available(iOS 15.0, *) {
|
|
225
|
+
viewController.configureSheet(for: sizes, at: index, with: contentHeight) {
|
|
226
|
+
if self.isPresented {
|
|
224
227
|
// Notify when size is changed programatically
|
|
225
|
-
let info = viewController.detentValues.first(where: { $0.value.index == index })
|
|
228
|
+
let info = self.viewController.detentValues.first(where: { $0.value.index == index })
|
|
226
229
|
if let sizeValue = info?.value.value {
|
|
227
|
-
self.
|
|
230
|
+
self.viewControllerSheetDidChangeSize(sizeValue, at: index)
|
|
228
231
|
}
|
|
229
232
|
}
|
|
230
|
-
} else {
|
|
231
|
-
sheet.selectedDetentIdentifier = identifier
|
|
232
233
|
}
|
|
233
234
|
}
|
|
234
235
|
|
|
@@ -16,14 +16,10 @@ struct SizeInfo {
|
|
|
16
16
|
// MARK: - TrueSheetViewControllerDelegate
|
|
17
17
|
|
|
18
18
|
protocol TrueSheetViewControllerDelegate: AnyObject {
|
|
19
|
-
|
|
20
|
-
func
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
func didDismiss()
|
|
24
|
-
|
|
25
|
-
/// Notify when size has changed from dragging the Sheet
|
|
26
|
-
func didChangeSize(_ value: CGFloat, at index: Int)
|
|
19
|
+
func viewControllerDidChangeWidth(_ width: CGFloat)
|
|
20
|
+
func viewControllerDidDismiss()
|
|
21
|
+
func viewControllerSheetDidChangeSize(_ value: CGFloat, at index: Int)
|
|
22
|
+
func viewControllerWillAppear()
|
|
27
23
|
}
|
|
28
24
|
|
|
29
25
|
// MARK: - TrueSheetViewController
|
|
@@ -47,13 +43,18 @@ class TrueSheetViewController: UIViewController, UISheetPresentationControllerDe
|
|
|
47
43
|
func sheetPresentationControllerDidChangeSelectedDetentIdentifier(_ sheet: UISheetPresentationController) {
|
|
48
44
|
if let identifer = sheet.selectedDetentIdentifier,
|
|
49
45
|
let size = detentValues[identifer.rawValue] {
|
|
50
|
-
delegate?.
|
|
46
|
+
delegate?.viewControllerSheetDidChangeSize(size.value, at: size.index)
|
|
51
47
|
}
|
|
52
48
|
}
|
|
53
49
|
|
|
50
|
+
override func viewWillAppear(_ animated: Bool) {
|
|
51
|
+
super.viewWillAppear(animated)
|
|
52
|
+
delegate?.viewControllerWillAppear()
|
|
53
|
+
}
|
|
54
|
+
|
|
54
55
|
override func viewDidDisappear(_ animated: Bool) {
|
|
55
56
|
super.viewDidDisappear(animated)
|
|
56
|
-
delegate?.
|
|
57
|
+
delegate?.viewControllerDidDismiss()
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
/// This is called multiple times while sheet is being dragged.
|
|
@@ -62,7 +63,7 @@ class TrueSheetViewController: UIViewController, UISheetPresentationControllerDe
|
|
|
62
63
|
super.viewDidLayoutSubviews()
|
|
63
64
|
|
|
64
65
|
if lastViewWidth != view.frame.width {
|
|
65
|
-
delegate?.
|
|
66
|
+
delegate?.viewControllerDidChangeWidth(view.bounds.width)
|
|
66
67
|
lastViewWidth = view.frame.width
|
|
67
68
|
}
|
|
68
69
|
}
|
|
@@ -70,17 +71,14 @@ class TrueSheetViewController: UIViewController, UISheetPresentationControllerDe
|
|
|
70
71
|
/// Prepares the view controller for sheet presentation
|
|
71
72
|
/// Do nothing on IOS 14 and below... sad
|
|
72
73
|
@available(iOS 15.0, *)
|
|
73
|
-
func configureSheet(for sizes: [Any], with height: CGFloat) {
|
|
74
|
+
func configureSheet(for sizes: [Any], at index: Int = 0, with height: CGFloat, _ completion: (() -> Void)?) {
|
|
74
75
|
guard let sheet else { return }
|
|
75
76
|
|
|
76
77
|
detentValues = [:]
|
|
77
78
|
|
|
78
79
|
var detents: [UISheetPresentationController.Detent] = []
|
|
79
80
|
|
|
80
|
-
|
|
81
|
-
let sheetSizes = sizes.isEmpty ? ["medium", "large"] : sizes
|
|
82
|
-
|
|
83
|
-
for (index, size) in sheetSizes.enumerated() {
|
|
81
|
+
for (index, size) in sizes.enumerated() {
|
|
84
82
|
let detent = detentFor(size, with: height) { id, value in
|
|
85
83
|
self.detentValues[id] = SizeInfo(index: index, value: value)
|
|
86
84
|
}
|
|
@@ -94,5 +92,21 @@ class TrueSheetViewController: UIViewController, UISheetPresentationControllerDe
|
|
|
94
92
|
// sheet.prefersScrollingExpandsWhenScrolledToEdge = false
|
|
95
93
|
|
|
96
94
|
sheet.delegate = self
|
|
95
|
+
|
|
96
|
+
var identifier: UISheetPresentationController.Detent.Identifier = .medium
|
|
97
|
+
|
|
98
|
+
if sheet.detents.indices.contains(index) {
|
|
99
|
+
let detent = sheet.detents[index]
|
|
100
|
+
if #available(iOS 16.0, *) {
|
|
101
|
+
identifier = detent.identifier
|
|
102
|
+
} else if detent == .large() {
|
|
103
|
+
identifier = .large
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
sheet.animateChanges {
|
|
108
|
+
sheet.selectedDetentIdentifier = identifier
|
|
109
|
+
completion?()
|
|
110
|
+
}
|
|
97
111
|
}
|
|
98
112
|
}
|
|
@@ -23,13 +23,11 @@ class TrueSheet extends _react.PureComponent {
|
|
|
23
23
|
constructor(props) {
|
|
24
24
|
super(props);
|
|
25
25
|
this.ref = /*#__PURE__*/(0, _react.createRef)();
|
|
26
|
-
this.footerRef = /*#__PURE__*/(0, _react.createRef)();
|
|
27
26
|
this.onDismiss = this.onDismiss.bind(this);
|
|
28
27
|
this.onPresent = this.onPresent.bind(this);
|
|
29
28
|
this.onSizeChange = this.onSizeChange.bind(this);
|
|
30
29
|
this.state = {
|
|
31
|
-
scrollableHandle: null
|
|
32
|
-
footerHandle: null
|
|
30
|
+
scrollableHandle: null
|
|
33
31
|
};
|
|
34
32
|
}
|
|
35
33
|
get handle() {
|
|
@@ -41,9 +39,7 @@ class TrueSheet extends _react.PureComponent {
|
|
|
41
39
|
}
|
|
42
40
|
updateHandles() {
|
|
43
41
|
const scrollableHandle = this.props.scrollRef?.current ? (0, _reactNative.findNodeHandle)(this.props.scrollRef.current) : null;
|
|
44
|
-
const footerHandle = (0, _reactNative.findNodeHandle)(this.footerRef.current);
|
|
45
42
|
this.setState({
|
|
46
|
-
footerHandle,
|
|
47
43
|
scrollableHandle
|
|
48
44
|
});
|
|
49
45
|
}
|
|
@@ -83,7 +79,6 @@ class TrueSheet extends _react.PureComponent {
|
|
|
83
79
|
ref: this.ref,
|
|
84
80
|
style: $nativeSheet,
|
|
85
81
|
scrollableHandle: this.state.scrollableHandle,
|
|
86
|
-
footerHandle: this.state.footerHandle,
|
|
87
82
|
sizes: this.props.sizes ?? ['medium', 'large'],
|
|
88
83
|
onPresent: this.onPresent,
|
|
89
84
|
onDismiss: this.onDismiss,
|
|
@@ -94,9 +89,7 @@ class TrueSheet extends _react.PureComponent {
|
|
|
94
89
|
}
|
|
95
90
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
96
91
|
style: this.props.style
|
|
97
|
-
}, this.props.children), !!FooterComponent && /*#__PURE__*/_react.default.createElement(
|
|
98
|
-
ref: this.footerRef
|
|
99
|
-
}, /*#__PURE__*/_react.default.createElement(FooterComponent, null))));
|
|
92
|
+
}, this.props.children), /*#__PURE__*/_react.default.createElement(_reactNative.View, null, !!FooterComponent && /*#__PURE__*/_react.default.createElement(FooterComponent, null))));
|
|
100
93
|
}
|
|
101
94
|
}
|
|
102
95
|
exports.TrueSheet = TrueSheet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_TrueSheetModule","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","LINKING_ERROR","Platform","select","ios","ComponentName","TrueSheetNativeView","requireNativeComponent","Error","TrueSheet","PureComponent","displayName","constructor","props","ref","createRef","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_TrueSheetModule","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","LINKING_ERROR","Platform","select","ios","ComponentName","TrueSheetNativeView","requireNativeComponent","Error","TrueSheet","PureComponent","displayName","constructor","props","ref","createRef","onDismiss","bind","onPresent","onSizeChange","state","scrollableHandle","handle","nodeHandle","findNodeHandle","current","updateHandles","scrollRef","setState","event","nativeEvent","componentDidMount","componentDidUpdate","present","index","TrueSheetModule","dismiss","render","FooterComponent","createElement","style","$nativeSheet","sizes","View","backgroundColor","children","exports","position","zIndex"],"sourceRoot":"../../src","sources":["TrueSheet.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/TrueSheet.js
CHANGED
|
@@ -15,13 +15,11 @@ export class TrueSheet extends PureComponent {
|
|
|
15
15
|
constructor(props) {
|
|
16
16
|
super(props);
|
|
17
17
|
this.ref = /*#__PURE__*/createRef();
|
|
18
|
-
this.footerRef = /*#__PURE__*/createRef();
|
|
19
18
|
this.onDismiss = this.onDismiss.bind(this);
|
|
20
19
|
this.onPresent = this.onPresent.bind(this);
|
|
21
20
|
this.onSizeChange = this.onSizeChange.bind(this);
|
|
22
21
|
this.state = {
|
|
23
|
-
scrollableHandle: null
|
|
24
|
-
footerHandle: null
|
|
22
|
+
scrollableHandle: null
|
|
25
23
|
};
|
|
26
24
|
}
|
|
27
25
|
get handle() {
|
|
@@ -33,9 +31,7 @@ export class TrueSheet extends PureComponent {
|
|
|
33
31
|
}
|
|
34
32
|
updateHandles() {
|
|
35
33
|
const scrollableHandle = this.props.scrollRef?.current ? findNodeHandle(this.props.scrollRef.current) : null;
|
|
36
|
-
const footerHandle = findNodeHandle(this.footerRef.current);
|
|
37
34
|
this.setState({
|
|
38
|
-
footerHandle,
|
|
39
35
|
scrollableHandle
|
|
40
36
|
});
|
|
41
37
|
}
|
|
@@ -75,7 +71,6 @@ export class TrueSheet extends PureComponent {
|
|
|
75
71
|
ref: this.ref,
|
|
76
72
|
style: $nativeSheet,
|
|
77
73
|
scrollableHandle: this.state.scrollableHandle,
|
|
78
|
-
footerHandle: this.state.footerHandle,
|
|
79
74
|
sizes: this.props.sizes ?? ['medium', 'large'],
|
|
80
75
|
onPresent: this.onPresent,
|
|
81
76
|
onDismiss: this.onDismiss,
|
|
@@ -86,9 +81,7 @@ export class TrueSheet extends PureComponent {
|
|
|
86
81
|
}
|
|
87
82
|
}, /*#__PURE__*/React.createElement(View, {
|
|
88
83
|
style: this.props.style
|
|
89
|
-
}, this.props.children), !!FooterComponent && /*#__PURE__*/React.createElement(
|
|
90
|
-
ref: this.footerRef
|
|
91
|
-
}, /*#__PURE__*/React.createElement(FooterComponent, null))));
|
|
84
|
+
}, this.props.children), /*#__PURE__*/React.createElement(View, null, !!FooterComponent && /*#__PURE__*/React.createElement(FooterComponent, null))));
|
|
92
85
|
}
|
|
93
86
|
}
|
|
94
87
|
const $nativeSheet = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","PureComponent","createRef","requireNativeComponent","Platform","findNodeHandle","View","TrueSheetModule","LINKING_ERROR","select","ios","default","ComponentName","TrueSheetNativeView","Error","TrueSheet","displayName","constructor","props","ref","
|
|
1
|
+
{"version":3,"names":["React","PureComponent","createRef","requireNativeComponent","Platform","findNodeHandle","View","TrueSheetModule","LINKING_ERROR","select","ios","default","ComponentName","TrueSheetNativeView","Error","TrueSheet","displayName","constructor","props","ref","onDismiss","bind","onPresent","onSizeChange","state","scrollableHandle","handle","nodeHandle","current","updateHandles","scrollRef","setState","event","nativeEvent","componentDidMount","componentDidUpdate","present","index","dismiss","render","FooterComponent","createElement","style","$nativeSheet","sizes","backgroundColor","children","position","zIndex"],"sourceRoot":"../../src","sources":["TrueSheet.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,12 +2,10 @@ import { PureComponent, type ReactNode } from 'react';
|
|
|
2
2
|
import type { TrueSheetProps } from './types';
|
|
3
3
|
interface TrueSheetState {
|
|
4
4
|
scrollableHandle: number | null;
|
|
5
|
-
footerHandle: number | null;
|
|
6
5
|
}
|
|
7
6
|
export declare class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
|
|
8
7
|
displayName: string;
|
|
9
8
|
private readonly ref;
|
|
10
|
-
private readonly footerRef;
|
|
11
9
|
constructor(props: TrueSheetProps);
|
|
12
10
|
private get handle();
|
|
13
11
|
private updateHandles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrueSheet.d.ts","sourceRoot":"","sources":["../../../src/TrueSheet.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAwC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"TrueSheet.d.ts","sourceRoot":"","sources":["../../../src/TrueSheet.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAwC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAYlG,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,SAAS,CAAA;AA6B9D,UAAU,cAAc;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC;AAED,qBAAa,SAAU,SAAQ,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC;IAC1E,WAAW,SAAc;IAEzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAsB;gBAE9B,KAAK,EAAE,cAAc;IAcjC,OAAO,KAAK,MAAM,GAOjB;IAED,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAIjB,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,IAAI,IAAI;IAI1B;;;OAGG;IACU,OAAO,CAAC,KAAK,GAAE,MAAU;IAItC;;OAEG;IACU,OAAO;IAIpB,MAAM,IAAI,SAAS;CAoBpB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lodev09/react-native-true-sheet",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "The true native bottom sheet. 💩",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -78,7 +78,6 @@
|
|
|
78
78
|
"react-native": "^0.73.5",
|
|
79
79
|
"react-native-builder-bob": "^0.23.2",
|
|
80
80
|
"release-it": "^17.1.1",
|
|
81
|
-
"turbo": "^1.12.5",
|
|
82
81
|
"typescript": "~5.3.3"
|
|
83
82
|
},
|
|
84
83
|
"resolutions": {
|
package/src/TrueSheet.tsx
CHANGED
|
@@ -3,10 +3,9 @@ import {
|
|
|
3
3
|
requireNativeComponent,
|
|
4
4
|
Platform,
|
|
5
5
|
findNodeHandle,
|
|
6
|
+
View,
|
|
6
7
|
type NativeMethods,
|
|
7
8
|
type ViewStyle,
|
|
8
|
-
View,
|
|
9
|
-
type ViewProps,
|
|
10
9
|
type NativeSyntheticEvent,
|
|
11
10
|
type StyleProp,
|
|
12
11
|
} from 'react-native'
|
|
@@ -24,7 +23,6 @@ const ComponentName = 'TrueSheetView'
|
|
|
24
23
|
|
|
25
24
|
interface TrueSheetNativeViewProps {
|
|
26
25
|
scrollableHandle: number | null
|
|
27
|
-
footerHandle: number | null
|
|
28
26
|
onDismiss: () => void
|
|
29
27
|
onPresent: (event: NativeSyntheticEvent<{ index: number }>) => void
|
|
30
28
|
onSizeChange: (event: NativeSyntheticEvent<SizeChangeEvent>) => void
|
|
@@ -40,24 +38,20 @@ if (!TrueSheetNativeView) {
|
|
|
40
38
|
}
|
|
41
39
|
|
|
42
40
|
type NativeRef = Component<TrueSheetNativeViewProps> & Readonly<NativeMethods>
|
|
43
|
-
type FooterRef = Component<ViewProps> & Readonly<NativeMethods>
|
|
44
41
|
|
|
45
42
|
interface TrueSheetState {
|
|
46
43
|
scrollableHandle: number | null
|
|
47
|
-
footerHandle: number | null
|
|
48
44
|
}
|
|
49
45
|
|
|
50
46
|
export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
|
|
51
47
|
displayName = 'TrueSheet'
|
|
52
48
|
|
|
53
49
|
private readonly ref: RefObject<NativeRef>
|
|
54
|
-
private readonly footerRef: RefObject<FooterRef>
|
|
55
50
|
|
|
56
51
|
constructor(props: TrueSheetProps) {
|
|
57
52
|
super(props)
|
|
58
53
|
|
|
59
54
|
this.ref = createRef<NativeRef>()
|
|
60
|
-
this.footerRef = createRef<FooterRef>()
|
|
61
55
|
|
|
62
56
|
this.onDismiss = this.onDismiss.bind(this)
|
|
63
57
|
this.onPresent = this.onPresent.bind(this)
|
|
@@ -65,7 +59,6 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
|
|
|
65
59
|
|
|
66
60
|
this.state = {
|
|
67
61
|
scrollableHandle: null,
|
|
68
|
-
footerHandle: null,
|
|
69
62
|
}
|
|
70
63
|
}
|
|
71
64
|
|
|
@@ -83,10 +76,7 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
|
|
|
83
76
|
? findNodeHandle(this.props.scrollRef.current)
|
|
84
77
|
: null
|
|
85
78
|
|
|
86
|
-
const footerHandle = findNodeHandle(this.footerRef.current)
|
|
87
|
-
|
|
88
79
|
this.setState({
|
|
89
|
-
footerHandle,
|
|
90
80
|
scrollableHandle,
|
|
91
81
|
})
|
|
92
82
|
}
|
|
@@ -134,7 +124,6 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
|
|
|
134
124
|
ref={this.ref}
|
|
135
125
|
style={$nativeSheet}
|
|
136
126
|
scrollableHandle={this.state.scrollableHandle}
|
|
137
|
-
footerHandle={this.state.footerHandle}
|
|
138
127
|
sizes={this.props.sizes ?? ['medium', 'large']}
|
|
139
128
|
onPresent={this.onPresent}
|
|
140
129
|
onDismiss={this.onDismiss}
|
|
@@ -142,11 +131,7 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
|
|
|
142
131
|
>
|
|
143
132
|
<View style={{ backgroundColor: this.props.backgroundColor ?? 'white' }}>
|
|
144
133
|
<View style={this.props.style}>{this.props.children}</View>
|
|
145
|
-
{!!FooterComponent &&
|
|
146
|
-
<View ref={this.footerRef}>
|
|
147
|
-
<FooterComponent />
|
|
148
|
-
</View>
|
|
149
|
-
)}
|
|
134
|
+
<View>{!!FooterComponent && <FooterComponent />}</View>
|
|
150
135
|
</View>
|
|
151
136
|
</TrueSheetNativeView>
|
|
152
137
|
)
|