@lodev09/react-native-true-sheet 0.9.7 → 0.9.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 +120 -18
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetDialog.kt +199 -29
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetView.kt +44 -48
- package/android/src/main/java/com/lodev09/truesheet/core/{RootViewGroup.kt → RootSheetView.kt} +3 -8
- package/ios/TrueSheetView.swift +0 -3
- package/lib/commonjs/TrueSheet.js +59 -25
- package/lib/commonjs/TrueSheet.js.map +1 -1
- package/lib/commonjs/TrueSheetFooter.js +20 -0
- package/lib/commonjs/TrueSheetFooter.js.map +1 -0
- package/lib/commonjs/__mocks__/index.js +3 -0
- package/lib/commonjs/__mocks__/index.js.map +1 -1
- package/lib/module/TrueSheet.js +58 -24
- package/lib/module/TrueSheet.js.map +1 -1
- package/lib/module/TrueSheetFooter.js +12 -0
- package/lib/module/TrueSheetFooter.js.map +1 -0
- package/lib/module/__mocks__/index.js +3 -0
- package/lib/module/__mocks__/index.js.map +1 -1
- package/lib/typescript/src/TrueSheet.d.ts +23 -3
- package/lib/typescript/src/TrueSheet.d.ts.map +1 -1
- package/lib/typescript/src/TrueSheetFooter.d.ts +8 -0
- package/lib/typescript/src/TrueSheetFooter.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +15 -0
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/TrueSheet.tsx +74 -37
- package/src/TrueSheetFooter.tsx +18 -0
- package/src/__mocks__/index.js +4 -0
- package/src/types.ts +15 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetBehavior.kt +0 -230
|
@@ -13,7 +13,7 @@ import com.facebook.react.uimanager.events.EventDispatcher
|
|
|
13
13
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
|
14
14
|
import com.lodev09.truesheet.core.DismissEvent
|
|
15
15
|
import com.lodev09.truesheet.core.PresentEvent
|
|
16
|
-
import com.lodev09.truesheet.core.
|
|
16
|
+
import com.lodev09.truesheet.core.RootSheetView
|
|
17
17
|
import com.lodev09.truesheet.core.SizeChangeEvent
|
|
18
18
|
|
|
19
19
|
class TrueSheetView(context: Context) :
|
|
@@ -47,15 +47,10 @@ class TrueSheetView(context: Context) :
|
|
|
47
47
|
*/
|
|
48
48
|
private val sheetDialog: TrueSheetDialog
|
|
49
49
|
|
|
50
|
-
/**
|
|
51
|
-
* The custom BottomSheetDialogBehavior instance.
|
|
52
|
-
*/
|
|
53
|
-
private val sheetBehavior: TrueSheetBehavior
|
|
54
|
-
|
|
55
50
|
/**
|
|
56
51
|
* React root view placeholder.
|
|
57
52
|
*/
|
|
58
|
-
private val
|
|
53
|
+
private val rootSheetView: RootSheetView
|
|
59
54
|
|
|
60
55
|
/**
|
|
61
56
|
* 1st child of the container view.
|
|
@@ -71,11 +66,10 @@ class TrueSheetView(context: Context) :
|
|
|
71
66
|
reactContext.addLifecycleEventListener(this)
|
|
72
67
|
eventDispatcher = UIManagerHelper.getEventDispatcherForReactTag(reactContext, id)
|
|
73
68
|
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
rootSheetView = RootSheetView(context)
|
|
70
|
+
rootSheetView.eventDispatcher = eventDispatcher
|
|
76
71
|
|
|
77
|
-
|
|
78
|
-
sheetDialog = TrueSheetDialog(reactContext, sheetBehavior, sheetRootView)
|
|
72
|
+
sheetDialog = TrueSheetDialog(reactContext, rootSheetView)
|
|
79
73
|
|
|
80
74
|
// Configure Sheet Dialog
|
|
81
75
|
sheetDialog.apply {
|
|
@@ -84,10 +78,8 @@ class TrueSheetView(context: Context) :
|
|
|
84
78
|
registerKeyboardManager()
|
|
85
79
|
|
|
86
80
|
// Initialize footer y
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
y = (sheetBehavior.maxScreenHeight - sheetView.top - height).toFloat()
|
|
90
|
-
}
|
|
81
|
+
UiThreadUtil.runOnUiThread {
|
|
82
|
+
positionFooter()
|
|
91
83
|
}
|
|
92
84
|
|
|
93
85
|
presentPromise?.let { promise ->
|
|
@@ -96,12 +88,13 @@ class TrueSheetView(context: Context) :
|
|
|
96
88
|
}
|
|
97
89
|
|
|
98
90
|
// dispatch onPresent event
|
|
99
|
-
eventDispatcher?.dispatchEvent(PresentEvent(surfaceId, id,
|
|
91
|
+
eventDispatcher?.dispatchEvent(PresentEvent(surfaceId, id, sheetDialog.getSizeInfoForIndex(activeIndex)))
|
|
100
92
|
}
|
|
101
93
|
|
|
102
94
|
// Setup listener when the dialog has been dismissed.
|
|
103
95
|
setOnDismissListener {
|
|
104
96
|
unregisterKeyboardManager()
|
|
97
|
+
|
|
105
98
|
dismissPromise?.let { promise ->
|
|
106
99
|
promise()
|
|
107
100
|
dismissPromise = null
|
|
@@ -113,8 +106,8 @@ class TrueSheetView(context: Context) :
|
|
|
113
106
|
}
|
|
114
107
|
|
|
115
108
|
// Configure sheet behavior events
|
|
116
|
-
|
|
117
|
-
addBottomSheetCallback(
|
|
109
|
+
sheetDialog.apply {
|
|
110
|
+
behavior.addBottomSheetCallback(
|
|
118
111
|
object : BottomSheetBehavior.BottomSheetCallback() {
|
|
119
112
|
override fun onSlide(sheetView: View, slideOffset: Float) {
|
|
120
113
|
footerView?.let {
|
|
@@ -128,24 +121,18 @@ class TrueSheetView(context: Context) :
|
|
|
128
121
|
}
|
|
129
122
|
|
|
130
123
|
override fun onStateChanged(view: View, newState: Int) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
// Invoke promise when sheet resized programmatically
|
|
138
|
-
presentPromise?.let { promise ->
|
|
139
|
-
promise()
|
|
140
|
-
presentPromise = null
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
activeIndex = sizeInfo.index
|
|
144
|
-
|
|
145
|
-
// dispatch onSizeChange event
|
|
146
|
-
eventDispatcher?.dispatchEvent(SizeChangeEvent(surfaceId, id, sizeInfo))
|
|
147
|
-
}
|
|
124
|
+
val sizeInfo = getSizeInfoForState(newState)
|
|
125
|
+
if (sizeInfo != null && sizeInfo.index != activeIndex) {
|
|
126
|
+
// Invoke promise when sheet resized programmatically
|
|
127
|
+
presentPromise?.let { promise ->
|
|
128
|
+
promise()
|
|
129
|
+
presentPromise = null
|
|
148
130
|
}
|
|
131
|
+
|
|
132
|
+
activeIndex = sizeInfo.index
|
|
133
|
+
|
|
134
|
+
// dispatch onSizeChange event
|
|
135
|
+
eventDispatcher?.dispatchEvent(SizeChangeEvent(surfaceId, id, sizeInfo))
|
|
149
136
|
}
|
|
150
137
|
}
|
|
151
138
|
}
|
|
@@ -154,7 +141,7 @@ class TrueSheetView(context: Context) :
|
|
|
154
141
|
}
|
|
155
142
|
|
|
156
143
|
override fun dispatchProvideStructure(structure: ViewStructure) {
|
|
157
|
-
|
|
144
|
+
rootSheetView.dispatchProvideStructure(structure)
|
|
158
145
|
}
|
|
159
146
|
|
|
160
147
|
override fun onLayout(
|
|
@@ -181,29 +168,29 @@ class TrueSheetView(context: Context) :
|
|
|
181
168
|
contentView = it.getChildAt(0) as ViewGroup
|
|
182
169
|
footerView = it.getChildAt(1) as ViewGroup
|
|
183
170
|
|
|
184
|
-
|
|
185
|
-
|
|
171
|
+
sheetDialog.contentView = contentView
|
|
172
|
+
sheetDialog.footerView = footerView
|
|
186
173
|
|
|
187
174
|
// rootView's first child is the Container View
|
|
188
|
-
|
|
175
|
+
rootSheetView.addView(it, index)
|
|
189
176
|
}
|
|
190
177
|
}
|
|
191
178
|
|
|
192
179
|
override fun getChildCount(): Int {
|
|
193
180
|
// This method may be called by the parent constructor
|
|
194
181
|
// before rootView is initialized.
|
|
195
|
-
return
|
|
182
|
+
return rootSheetView.childCount
|
|
196
183
|
}
|
|
197
184
|
|
|
198
|
-
override fun getChildAt(index: Int): View =
|
|
185
|
+
override fun getChildAt(index: Int): View = rootSheetView.getChildAt(index)
|
|
199
186
|
|
|
200
187
|
override fun removeView(child: View) {
|
|
201
|
-
|
|
188
|
+
rootSheetView.removeView(child)
|
|
202
189
|
}
|
|
203
190
|
|
|
204
191
|
override fun removeViewAt(index: Int) {
|
|
205
192
|
val child = getChildAt(index)
|
|
206
|
-
|
|
193
|
+
rootSheetView.removeView(child)
|
|
207
194
|
}
|
|
208
195
|
|
|
209
196
|
override fun addChildrenForAccessibility(outChildren: ArrayList<View>) {
|
|
@@ -231,19 +218,28 @@ class TrueSheetView(context: Context) :
|
|
|
231
218
|
sheetDialog.dismiss()
|
|
232
219
|
}
|
|
233
220
|
|
|
221
|
+
private fun configureIfPresented() {
|
|
222
|
+
if (sheetDialog.isShowing) {
|
|
223
|
+
UiThreadUtil.runOnUiThread {
|
|
224
|
+
sheetDialog.configure()
|
|
225
|
+
sheetDialog.positionFooter()
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
234
230
|
fun setMaxHeight(height: Int) {
|
|
235
|
-
|
|
236
|
-
|
|
231
|
+
sheetDialog.maxSheetHeight = height
|
|
232
|
+
configureIfPresented()
|
|
237
233
|
}
|
|
238
234
|
|
|
239
235
|
fun setDismissible(dismissible: Boolean) {
|
|
240
|
-
|
|
236
|
+
sheetDialog.behavior.isHideable = dismissible
|
|
241
237
|
sheetDialog.setCancelable(dismissible)
|
|
242
238
|
}
|
|
243
239
|
|
|
244
240
|
fun setSizes(newSizes: Array<Any>) {
|
|
245
|
-
|
|
246
|
-
|
|
241
|
+
sheetDialog.sizes = newSizes
|
|
242
|
+
configureIfPresented()
|
|
247
243
|
}
|
|
248
244
|
|
|
249
245
|
/**
|
package/android/src/main/java/com/lodev09/truesheet/core/{RootViewGroup.kt → RootSheetView.kt}
RENAMED
|
@@ -15,8 +15,8 @@ import com.facebook.react.uimanager.events.EventDispatcher
|
|
|
15
15
|
import com.facebook.react.views.view.ReactViewGroup
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
19
|
-
* child information forwarded from
|
|
18
|
+
* RootSheetView is the ViewGroup which contains all the children of a Modal. It gets all
|
|
19
|
+
* child information forwarded from TrueSheetView and uses that to create children. It is
|
|
20
20
|
* also responsible for acting as a RootView and handling touch events. It does this the same way
|
|
21
21
|
* as ReactRootView.
|
|
22
22
|
*
|
|
@@ -26,7 +26,7 @@ import com.facebook.react.views.view.ReactViewGroup
|
|
|
26
26
|
* styleHeight on the LayoutShadowNode to be the window size. This is done through the
|
|
27
27
|
* UIManagerModule, and will then cause the children to layout as if they can fill the window.
|
|
28
28
|
*/
|
|
29
|
-
class
|
|
29
|
+
class RootSheetView(context: Context?) :
|
|
30
30
|
ReactViewGroup(context),
|
|
31
31
|
RootView {
|
|
32
32
|
private var hasAdjustedSize = false
|
|
@@ -34,7 +34,6 @@ class RootViewGroup(context: Context?) :
|
|
|
34
34
|
private var viewHeight = 0
|
|
35
35
|
|
|
36
36
|
private val mJSTouchDispatcher = JSTouchDispatcher(this)
|
|
37
|
-
|
|
38
37
|
private var mJSPointerDispatcher: JSPointerDispatcher? = null
|
|
39
38
|
|
|
40
39
|
var eventDispatcher: EventDispatcher? = null
|
|
@@ -134,8 +133,4 @@ class RootViewGroup(context: Context?) :
|
|
|
134
133
|
// No-op - override in order to still receive events to onInterceptTouchEvent
|
|
135
134
|
// even when some other view disallow that
|
|
136
135
|
}
|
|
137
|
-
|
|
138
|
-
companion object {
|
|
139
|
-
const val TAG = "TrueSheetView"
|
|
140
|
-
}
|
|
141
136
|
}
|
package/ios/TrueSheetView.swift
CHANGED
|
@@ -8,20 +8,25 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _TrueSheetModule = require("./TrueSheetModule");
|
|
10
10
|
var _TrueSheetGrabber = require("./TrueSheetGrabber");
|
|
11
|
+
var _TrueSheetFooter = require("./TrueSheetFooter");
|
|
11
12
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
13
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
14
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
15
|
+
const NATIVE_COMPONENT_NAME = 'TrueSheetView';
|
|
14
16
|
const LINKING_ERROR = `The package '@lodev09/react-native-true-sheet' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
|
|
15
17
|
ios: "- You have run 'pod install'\n",
|
|
16
18
|
default: ''
|
|
17
19
|
}) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
|
|
18
|
-
const
|
|
19
|
-
const TrueSheetNativeView = (0, _reactNative.requireNativeComponent)(ComponentName);
|
|
20
|
+
const TrueSheetNativeView = (0, _reactNative.requireNativeComponent)(NATIVE_COMPONENT_NAME);
|
|
20
21
|
if (!TrueSheetNativeView) {
|
|
21
22
|
throw new Error(LINKING_ERROR);
|
|
22
23
|
}
|
|
23
24
|
class TrueSheet extends _react.PureComponent {
|
|
24
25
|
displayName = 'TrueSheet';
|
|
26
|
+
/**
|
|
27
|
+
* Map of sheet names against their handle.
|
|
28
|
+
*/
|
|
29
|
+
static handles = {};
|
|
25
30
|
constructor(props) {
|
|
26
31
|
super(props);
|
|
27
32
|
this.ref = /*#__PURE__*/(0, _react.createRef)();
|
|
@@ -32,15 +37,54 @@ class TrueSheet extends _react.PureComponent {
|
|
|
32
37
|
scrollableHandle: null
|
|
33
38
|
};
|
|
34
39
|
}
|
|
40
|
+
static getHandle(name) {
|
|
41
|
+
const handle = TrueSheet.handles[name];
|
|
42
|
+
if (!handle) {
|
|
43
|
+
console.warn(`Could not get native view tag from "${name}". Check your name prop.`);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
return handle;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Present the sheet by given `name`.
|
|
51
|
+
* See `name` prop.
|
|
52
|
+
*/
|
|
53
|
+
static async present(name, index = 0) {
|
|
54
|
+
const handle = TrueSheet.getHandle(name);
|
|
55
|
+
if (!handle) return;
|
|
56
|
+
await _TrueSheetModule.TrueSheetModule.present(handle, index);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Dismiss the sheet by given `name`.
|
|
61
|
+
* See `name` prop.
|
|
62
|
+
*/
|
|
63
|
+
static async dismiss(name) {
|
|
64
|
+
const handle = TrueSheet.getHandle(name);
|
|
65
|
+
if (!handle) return;
|
|
66
|
+
await _TrueSheetModule.TrueSheetModule.dismiss(handle);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Resize the sheet by given `name`.
|
|
71
|
+
* See `name` prop.
|
|
72
|
+
*/
|
|
73
|
+
static async resize(name, index) {
|
|
74
|
+
await TrueSheet.present(name, index);
|
|
75
|
+
}
|
|
35
76
|
get handle() {
|
|
36
77
|
const nodeHandle = (0, _reactNative.findNodeHandle)(this.ref.current);
|
|
37
78
|
if (nodeHandle == null || nodeHandle === -1) {
|
|
38
|
-
throw new Error(
|
|
79
|
+
throw new Error('Could not get native view tag');
|
|
39
80
|
}
|
|
40
81
|
return nodeHandle;
|
|
41
82
|
}
|
|
42
83
|
updateState() {
|
|
43
84
|
const scrollableHandle = this.props.scrollRef?.current ? (0, _reactNative.findNodeHandle)(this.props.scrollRef.current) : null;
|
|
85
|
+
if (this.props.name) {
|
|
86
|
+
TrueSheet.handles[this.props.name] = this.handle;
|
|
87
|
+
}
|
|
44
88
|
this.setState({
|
|
45
89
|
scrollableHandle
|
|
46
90
|
});
|
|
@@ -54,18 +98,9 @@ class TrueSheet extends _react.PureComponent {
|
|
|
54
98
|
onDismiss() {
|
|
55
99
|
this.props.onDismiss?.();
|
|
56
100
|
}
|
|
57
|
-
componentDidMount() {
|
|
58
|
-
if (this.props.sizes && this.props.sizes.length > 3) {
|
|
59
|
-
console.warn('TrueSheet only supports a maximum of 3 sizes; collapsed, half-expanded and expanded. Check your `sizes` prop.');
|
|
60
|
-
}
|
|
61
|
-
this.updateState();
|
|
62
|
-
}
|
|
63
|
-
componentDidUpdate() {
|
|
64
|
-
this.updateState();
|
|
65
|
-
}
|
|
66
101
|
|
|
67
102
|
/**
|
|
68
|
-
* Present the
|
|
103
|
+
* Present the sheet. Optionally accepts a size `index`.
|
|
69
104
|
* See `sizes` prop
|
|
70
105
|
*/
|
|
71
106
|
async present(index = 0) {
|
|
@@ -86,6 +121,15 @@ class TrueSheet extends _react.PureComponent {
|
|
|
86
121
|
async dismiss() {
|
|
87
122
|
await _TrueSheetModule.TrueSheetModule.dismiss(this.handle);
|
|
88
123
|
}
|
|
124
|
+
componentDidMount() {
|
|
125
|
+
if (this.props.sizes && this.props.sizes.length > 3) {
|
|
126
|
+
console.warn('TrueSheet only supports a maximum of 3 sizes; collapsed, half-expanded and expanded. Check your `sizes` prop.');
|
|
127
|
+
}
|
|
128
|
+
this.updateState();
|
|
129
|
+
}
|
|
130
|
+
componentDidUpdate() {
|
|
131
|
+
this.updateState();
|
|
132
|
+
}
|
|
89
133
|
render() {
|
|
90
134
|
const {
|
|
91
135
|
sizes = ['medium', 'large'],
|
|
@@ -135,24 +179,14 @@ class TrueSheet extends _react.PureComponent {
|
|
|
135
179
|
style: contentContainerStyle
|
|
136
180
|
}, children), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
137
181
|
collapsable: false
|
|
138
|
-
}, /*#__PURE__*/_react.default.createElement(TrueSheetFooter, {
|
|
139
|
-
|
|
182
|
+
}, /*#__PURE__*/_react.default.createElement(_TrueSheetFooter.TrueSheetFooter, {
|
|
183
|
+
Component: FooterComponent
|
|
140
184
|
})), _reactNative.Platform.OS === 'android' && /*#__PURE__*/_react.default.createElement(_TrueSheetGrabber.TrueSheetGrabber, _extends({
|
|
141
185
|
visible: grabber
|
|
142
186
|
}, grabberProps))));
|
|
143
187
|
}
|
|
144
188
|
}
|
|
145
189
|
exports.TrueSheet = TrueSheet;
|
|
146
|
-
const TrueSheetFooter = props => {
|
|
147
|
-
const {
|
|
148
|
-
FooterComponent
|
|
149
|
-
} = props;
|
|
150
|
-
if (!FooterComponent) return null;
|
|
151
|
-
if (typeof FooterComponent !== 'function') {
|
|
152
|
-
return FooterComponent;
|
|
153
|
-
}
|
|
154
|
-
return /*#__PURE__*/_react.default.createElement(FooterComponent, null);
|
|
155
|
-
};
|
|
156
190
|
const $nativeSheet = {
|
|
157
191
|
position: 'absolute',
|
|
158
192
|
left: -9999,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_TrueSheetModule","_TrueSheetGrabber","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","LINKING_ERROR","Platform","select","ios","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_TrueSheetModule","_TrueSheetGrabber","_TrueSheetFooter","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","NATIVE_COMPONENT_NAME","LINKING_ERROR","Platform","select","ios","TrueSheetNativeView","requireNativeComponent","Error","TrueSheet","PureComponent","displayName","handles","constructor","props","ref","createRef","onDismiss","onPresent","onSizeChange","state","scrollableHandle","getHandle","name","handle","console","warn","present","index","TrueSheetModule","dismiss","resize","nodeHandle","findNodeHandle","current","updateState","scrollRef","setState","event","nativeEvent","componentDidMount","sizes","componentDidUpdate","render","backgroundColor","dismissible","grabber","grabberProps","blurTint","cornerRadius","maxHeight","FooterComponent","style","contentContainerStyle","children","rest","createElement","$nativeSheet","View","collapsable","overflow","undefined","android","borderTopLeftRadius","borderTopRightRadius","TrueSheetFooter","Component","OS","TrueSheetGrabber","visible","exports","position","left","zIndex"],"sourceRoot":"../../src","sources":["TrueSheet.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TrueSheetFooter = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
const TrueSheetFooter = props => {
|
|
10
|
+
const {
|
|
11
|
+
Component
|
|
12
|
+
} = props;
|
|
13
|
+
if (!Component) return null;
|
|
14
|
+
if (typeof Component !== 'function') {
|
|
15
|
+
return Component;
|
|
16
|
+
}
|
|
17
|
+
return /*#__PURE__*/_react.default.createElement(Component, null);
|
|
18
|
+
};
|
|
19
|
+
exports.TrueSheetFooter = TrueSheetFooter;
|
|
20
|
+
//# sourceMappingURL=TrueSheetFooter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","obj","__esModule","default","TrueSheetFooter","props","Component","createElement","exports"],"sourceRoot":"../../src","sources":["TrueSheetFooter.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAyB,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAOlB,MAAMG,eAAe,GAAIC,KAA2B,IAAK;EAC9D,MAAM;IAAEC;EAAU,CAAC,GAAGD,KAAK;EAE3B,IAAI,CAACC,SAAS,EAAE,OAAO,IAAI;EAE3B,IAAI,OAAOA,SAAS,KAAK,UAAU,EAAE;IACnC,OAAOA,SAAS;EAClB;EAEA,oBAAOR,MAAA,CAAAK,OAAA,CAAAI,aAAA,CAACD,SAAS,MAAE,CAAC;AACtB,CAAC;AAAAE,OAAA,CAAAJ,eAAA,GAAAA,eAAA","ignoreList":[]}
|
|
@@ -23,6 +23,9 @@ Object.keys(_TrueSheetGrabber).forEach(function (key) {
|
|
|
23
23
|
});
|
|
24
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
25
|
class TrueSheet extends _react.default.Component {
|
|
26
|
+
static dismiss = jest.fn();
|
|
27
|
+
static present = jest.fn();
|
|
28
|
+
static resize = jest.fn();
|
|
26
29
|
dismiss = jest.fn();
|
|
27
30
|
present = jest.fn();
|
|
28
31
|
resize = jest.fn();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_TrueSheetGrabber","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","obj","__esModule","default","TrueSheet","React","Component","dismiss","jest","fn","present","resize","render","createElement","View","props"],"sourceRoot":"../../../src","sources":["__mocks__/index.js"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,iBAAA,GAAAF,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAF,iBAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,iBAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,iBAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAAmC,SAAAP,uBAAAgB,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE5B,MAAMG,SAAS,SAASC,cAAK,CAACC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_TrueSheetGrabber","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","obj","__esModule","default","TrueSheet","React","Component","dismiss","jest","fn","present","resize","render","createElement","View","props"],"sourceRoot":"../../../src","sources":["__mocks__/index.js"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,iBAAA,GAAAF,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAF,iBAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,iBAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,iBAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAAmC,SAAAP,uBAAAgB,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE5B,MAAMG,SAAS,SAASC,cAAK,CAACC,SAAS,CAAC;EAC7C,OAAOC,OAAO,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;EAC1B,OAAOC,OAAO,GAAGF,IAAI,CAACC,EAAE,CAAC,CAAC;EAC1B,OAAOE,MAAM,GAAGH,IAAI,CAACC,EAAE,CAAC,CAAC;EAEzBF,OAAO,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;EACnBC,OAAO,GAAGF,IAAI,CAACC,EAAE,CAAC,CAAC;EACnBE,MAAM,GAAGH,IAAI,CAACC,EAAE,CAAC,CAAC;EAElBG,MAAMA,CAAA,EAAG;IACP,oBAAO5B,MAAA,CAAAmB,OAAA,CAAAU,aAAA,CAAC1B,YAAA,CAAA2B,IAAI,EAAK,IAAI,CAACC,KAAQ,CAAC;EACjC;AACF;AAAClB,OAAA,CAAAO,SAAA,GAAAA,SAAA","ignoreList":[]}
|
package/lib/module/TrueSheet.js
CHANGED
|
@@ -3,17 +3,22 @@ import React, { PureComponent, createRef } from 'react';
|
|
|
3
3
|
import { requireNativeComponent, Platform, findNodeHandle, View } from 'react-native';
|
|
4
4
|
import { TrueSheetModule } from './TrueSheetModule';
|
|
5
5
|
import { TrueSheetGrabber } from './TrueSheetGrabber';
|
|
6
|
+
import { TrueSheetFooter } from './TrueSheetFooter';
|
|
7
|
+
const NATIVE_COMPONENT_NAME = 'TrueSheetView';
|
|
6
8
|
const LINKING_ERROR = `The package '@lodev09/react-native-true-sheet' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
|
|
7
9
|
ios: "- You have run 'pod install'\n",
|
|
8
10
|
default: ''
|
|
9
11
|
}) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
|
|
10
|
-
const
|
|
11
|
-
const TrueSheetNativeView = requireNativeComponent(ComponentName);
|
|
12
|
+
const TrueSheetNativeView = requireNativeComponent(NATIVE_COMPONENT_NAME);
|
|
12
13
|
if (!TrueSheetNativeView) {
|
|
13
14
|
throw new Error(LINKING_ERROR);
|
|
14
15
|
}
|
|
15
16
|
export class TrueSheet extends PureComponent {
|
|
16
17
|
displayName = 'TrueSheet';
|
|
18
|
+
/**
|
|
19
|
+
* Map of sheet names against their handle.
|
|
20
|
+
*/
|
|
21
|
+
static handles = {};
|
|
17
22
|
constructor(props) {
|
|
18
23
|
super(props);
|
|
19
24
|
this.ref = /*#__PURE__*/createRef();
|
|
@@ -24,15 +29,54 @@ export class TrueSheet extends PureComponent {
|
|
|
24
29
|
scrollableHandle: null
|
|
25
30
|
};
|
|
26
31
|
}
|
|
32
|
+
static getHandle(name) {
|
|
33
|
+
const handle = TrueSheet.handles[name];
|
|
34
|
+
if (!handle) {
|
|
35
|
+
console.warn(`Could not get native view tag from "${name}". Check your name prop.`);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
return handle;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Present the sheet by given `name`.
|
|
43
|
+
* See `name` prop.
|
|
44
|
+
*/
|
|
45
|
+
static async present(name, index = 0) {
|
|
46
|
+
const handle = TrueSheet.getHandle(name);
|
|
47
|
+
if (!handle) return;
|
|
48
|
+
await TrueSheetModule.present(handle, index);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Dismiss the sheet by given `name`.
|
|
53
|
+
* See `name` prop.
|
|
54
|
+
*/
|
|
55
|
+
static async dismiss(name) {
|
|
56
|
+
const handle = TrueSheet.getHandle(name);
|
|
57
|
+
if (!handle) return;
|
|
58
|
+
await TrueSheetModule.dismiss(handle);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Resize the sheet by given `name`.
|
|
63
|
+
* See `name` prop.
|
|
64
|
+
*/
|
|
65
|
+
static async resize(name, index) {
|
|
66
|
+
await TrueSheet.present(name, index);
|
|
67
|
+
}
|
|
27
68
|
get handle() {
|
|
28
69
|
const nodeHandle = findNodeHandle(this.ref.current);
|
|
29
70
|
if (nodeHandle == null || nodeHandle === -1) {
|
|
30
|
-
throw new Error(
|
|
71
|
+
throw new Error('Could not get native view tag');
|
|
31
72
|
}
|
|
32
73
|
return nodeHandle;
|
|
33
74
|
}
|
|
34
75
|
updateState() {
|
|
35
76
|
const scrollableHandle = this.props.scrollRef?.current ? findNodeHandle(this.props.scrollRef.current) : null;
|
|
77
|
+
if (this.props.name) {
|
|
78
|
+
TrueSheet.handles[this.props.name] = this.handle;
|
|
79
|
+
}
|
|
36
80
|
this.setState({
|
|
37
81
|
scrollableHandle
|
|
38
82
|
});
|
|
@@ -46,18 +90,9 @@ export class TrueSheet extends PureComponent {
|
|
|
46
90
|
onDismiss() {
|
|
47
91
|
this.props.onDismiss?.();
|
|
48
92
|
}
|
|
49
|
-
componentDidMount() {
|
|
50
|
-
if (this.props.sizes && this.props.sizes.length > 3) {
|
|
51
|
-
console.warn('TrueSheet only supports a maximum of 3 sizes; collapsed, half-expanded and expanded. Check your `sizes` prop.');
|
|
52
|
-
}
|
|
53
|
-
this.updateState();
|
|
54
|
-
}
|
|
55
|
-
componentDidUpdate() {
|
|
56
|
-
this.updateState();
|
|
57
|
-
}
|
|
58
93
|
|
|
59
94
|
/**
|
|
60
|
-
* Present the
|
|
95
|
+
* Present the sheet. Optionally accepts a size `index`.
|
|
61
96
|
* See `sizes` prop
|
|
62
97
|
*/
|
|
63
98
|
async present(index = 0) {
|
|
@@ -78,6 +113,15 @@ export class TrueSheet extends PureComponent {
|
|
|
78
113
|
async dismiss() {
|
|
79
114
|
await TrueSheetModule.dismiss(this.handle);
|
|
80
115
|
}
|
|
116
|
+
componentDidMount() {
|
|
117
|
+
if (this.props.sizes && this.props.sizes.length > 3) {
|
|
118
|
+
console.warn('TrueSheet only supports a maximum of 3 sizes; collapsed, half-expanded and expanded. Check your `sizes` prop.');
|
|
119
|
+
}
|
|
120
|
+
this.updateState();
|
|
121
|
+
}
|
|
122
|
+
componentDidUpdate() {
|
|
123
|
+
this.updateState();
|
|
124
|
+
}
|
|
81
125
|
render() {
|
|
82
126
|
const {
|
|
83
127
|
sizes = ['medium', 'large'],
|
|
@@ -128,22 +172,12 @@ export class TrueSheet extends PureComponent {
|
|
|
128
172
|
}, children), /*#__PURE__*/React.createElement(View, {
|
|
129
173
|
collapsable: false
|
|
130
174
|
}, /*#__PURE__*/React.createElement(TrueSheetFooter, {
|
|
131
|
-
|
|
175
|
+
Component: FooterComponent
|
|
132
176
|
})), Platform.OS === 'android' && /*#__PURE__*/React.createElement(TrueSheetGrabber, _extends({
|
|
133
177
|
visible: grabber
|
|
134
178
|
}, grabberProps))));
|
|
135
179
|
}
|
|
136
180
|
}
|
|
137
|
-
const TrueSheetFooter = props => {
|
|
138
|
-
const {
|
|
139
|
-
FooterComponent
|
|
140
|
-
} = props;
|
|
141
|
-
if (!FooterComponent) return null;
|
|
142
|
-
if (typeof FooterComponent !== 'function') {
|
|
143
|
-
return FooterComponent;
|
|
144
|
-
}
|
|
145
|
-
return /*#__PURE__*/React.createElement(FooterComponent, null);
|
|
146
|
-
};
|
|
147
181
|
const $nativeSheet = {
|
|
148
182
|
position: 'absolute',
|
|
149
183
|
left: -9999,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","PureComponent","createRef","requireNativeComponent","Platform","findNodeHandle","View","TrueSheetModule","TrueSheetGrabber","LINKING_ERROR","select","ios","default","
|
|
1
|
+
{"version":3,"names":["React","PureComponent","createRef","requireNativeComponent","Platform","findNodeHandle","View","TrueSheetModule","TrueSheetGrabber","TrueSheetFooter","NATIVE_COMPONENT_NAME","LINKING_ERROR","select","ios","default","TrueSheetNativeView","Error","TrueSheet","displayName","handles","constructor","props","ref","onDismiss","bind","onPresent","onSizeChange","state","scrollableHandle","getHandle","name","handle","console","warn","present","index","dismiss","resize","nodeHandle","current","updateState","scrollRef","setState","event","nativeEvent","componentDidMount","sizes","length","componentDidUpdate","render","backgroundColor","dismissible","grabber","grabberProps","blurTint","cornerRadius","maxHeight","FooterComponent","style","contentContainerStyle","children","rest","createElement","$nativeSheet","_extends","collapsable","overflow","undefined","android","borderTopLeftRadius","borderTopRightRadius","Component","OS","visible","position","left","zIndex"],"sourceRoot":"../../src","sources":["TrueSheet.tsx"],"mappings":"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","ignoreList":[]}
|