@lodev09/react-native-true-sheet 0.9.8 → 0.10.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/README.md +9 -224
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetDialog.kt +25 -23
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetView.kt +25 -20
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewManager.kt +10 -0
- package/ios/TrueSheetView.swift +37 -45
- package/ios/TrueSheetViewController.swift +6 -2
- package/ios/TrueSheetViewManager.m +4 -0
- package/lib/commonjs/TrueSheet.js +79 -26
- 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 +78 -25
- 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/docs/docusaurus.config.d.ts +4 -0
- package/lib/typescript/docs/docusaurus.config.d.ts.map +1 -0
- package/lib/typescript/docs/sidebars.d.ts +4 -0
- package/lib/typescript/docs/sidebars.d.ts.map +1 -0
- package/lib/typescript/src/TrueSheet.d.ts +27 -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 +8 -8
- package/src/TrueSheet.tsx +102 -37
- package/src/TrueSheetFooter.tsx +18 -0
- package/src/__mocks__/index.js +4 -0
- package/src/types.ts +15 -0
|
@@ -36,7 +36,11 @@ class TrueSheetViewController: UIViewController, UISheetPresentationControllerDe
|
|
|
36
36
|
var detentValues: [String: SizeInfo] = [:]
|
|
37
37
|
|
|
38
38
|
var sizes: [Any] = ["medium", "large"]
|
|
39
|
+
|
|
39
40
|
var maxHeight: CGFloat?
|
|
41
|
+
var contentHeight: CGFloat = 0
|
|
42
|
+
var footerHeight: CGFloat = 0
|
|
43
|
+
|
|
40
44
|
var cornerRadius: CGFloat?
|
|
41
45
|
var grabber = true
|
|
42
46
|
|
|
@@ -123,7 +127,7 @@ class TrueSheetViewController: UIViewController, UISheetPresentationControllerDe
|
|
|
123
127
|
}
|
|
124
128
|
|
|
125
129
|
/// Prepares the view controller for sheet presentation
|
|
126
|
-
func configureSheet(at index: Int = 0,
|
|
130
|
+
func configureSheet(at index: Int = 0, _ completion: ((SizeInfo) -> Void)?) {
|
|
127
131
|
let defaultSizeInfo = SizeInfo(index: index, value: view.bounds.height)
|
|
128
132
|
|
|
129
133
|
guard #available(iOS 15.0, *), let sheet = sheetPresentationController else {
|
|
@@ -136,7 +140,7 @@ class TrueSheetViewController: UIViewController, UISheetPresentationControllerDe
|
|
|
136
140
|
var detents: [UISheetPresentationController.Detent] = []
|
|
137
141
|
|
|
138
142
|
for (index, size) in sizes.enumerated() {
|
|
139
|
-
let detent = detentFor(size, with: contentHeight, with: maxHeight) { id, value in
|
|
143
|
+
let detent = detentFor(size, with: contentHeight + footerHeight, with: maxHeight) { id, value in
|
|
140
144
|
self.detentValues[id] = SizeInfo(index: index, value: value)
|
|
141
145
|
}
|
|
142
146
|
|
|
@@ -36,4 +36,8 @@ RCT_EXPORT_VIEW_PROPERTY(cornerRadius, NSNumber)
|
|
|
36
36
|
RCT_EXPORT_VIEW_PROPERTY(grabber, BOOL)
|
|
37
37
|
RCT_EXPORT_VIEW_PROPERTY(dismissible, BOOL)
|
|
38
38
|
|
|
39
|
+
// Internal properties
|
|
40
|
+
RCT_EXPORT_VIEW_PROPERTY(contentHeight, NSNumber)
|
|
41
|
+
RCT_EXPORT_VIEW_PROPERTY(footerHeight, NSNumber)
|
|
42
|
+
|
|
39
43
|
@end
|
|
@@ -8,39 +8,87 @@ 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)();
|
|
28
33
|
this.onDismiss = this.onDismiss.bind(this);
|
|
29
34
|
this.onPresent = this.onPresent.bind(this);
|
|
30
35
|
this.onSizeChange = this.onSizeChange.bind(this);
|
|
36
|
+
this.onContentLayout = this.onContentLayout.bind(this);
|
|
37
|
+
this.onFooterLayout = this.onFooterLayout.bind(this);
|
|
31
38
|
this.state = {
|
|
39
|
+
contentHeight: undefined,
|
|
40
|
+
footerHeight: undefined,
|
|
32
41
|
scrollableHandle: null
|
|
33
42
|
};
|
|
34
43
|
}
|
|
44
|
+
static getHandle(name) {
|
|
45
|
+
const handle = TrueSheet.handles[name];
|
|
46
|
+
if (!handle) {
|
|
47
|
+
console.warn(`Could not get native view tag from "${name}". Check your name prop.`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
return handle;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Present the sheet by given `name`.
|
|
55
|
+
* See `name` prop.
|
|
56
|
+
*/
|
|
57
|
+
static async present(name, index = 0) {
|
|
58
|
+
const handle = TrueSheet.getHandle(name);
|
|
59
|
+
if (!handle) return;
|
|
60
|
+
await _TrueSheetModule.TrueSheetModule.present(handle, index);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Dismiss the sheet by given `name`.
|
|
65
|
+
* See `name` prop.
|
|
66
|
+
*/
|
|
67
|
+
static async dismiss(name) {
|
|
68
|
+
const handle = TrueSheet.getHandle(name);
|
|
69
|
+
if (!handle) return;
|
|
70
|
+
await _TrueSheetModule.TrueSheetModule.dismiss(handle);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Resize the sheet by given `name`.
|
|
75
|
+
* See `name` prop.
|
|
76
|
+
*/
|
|
77
|
+
static async resize(name, index) {
|
|
78
|
+
await TrueSheet.present(name, index);
|
|
79
|
+
}
|
|
35
80
|
get handle() {
|
|
36
81
|
const nodeHandle = (0, _reactNative.findNodeHandle)(this.ref.current);
|
|
37
82
|
if (nodeHandle == null || nodeHandle === -1) {
|
|
38
|
-
throw new Error(
|
|
83
|
+
throw new Error('Could not get native view tag');
|
|
39
84
|
}
|
|
40
85
|
return nodeHandle;
|
|
41
86
|
}
|
|
42
87
|
updateState() {
|
|
43
88
|
const scrollableHandle = this.props.scrollRef?.current ? (0, _reactNative.findNodeHandle)(this.props.scrollRef.current) : null;
|
|
89
|
+
if (this.props.name) {
|
|
90
|
+
TrueSheet.handles[this.props.name] = this.handle;
|
|
91
|
+
}
|
|
44
92
|
this.setState({
|
|
45
93
|
scrollableHandle
|
|
46
94
|
});
|
|
@@ -51,21 +99,23 @@ class TrueSheet extends _react.PureComponent {
|
|
|
51
99
|
onPresent(event) {
|
|
52
100
|
this.props.onPresent?.(event.nativeEvent);
|
|
53
101
|
}
|
|
54
|
-
|
|
55
|
-
|
|
102
|
+
onFooterLayout(layout) {
|
|
103
|
+
console.log('footerHeight', layout.height);
|
|
104
|
+
this.setState({
|
|
105
|
+
footerHeight: layout.height
|
|
106
|
+
});
|
|
56
107
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
this.updateState();
|
|
108
|
+
onContentLayout(layout) {
|
|
109
|
+
this.setState({
|
|
110
|
+
contentHeight: layout.height
|
|
111
|
+
});
|
|
62
112
|
}
|
|
63
|
-
|
|
64
|
-
this.
|
|
113
|
+
onDismiss() {
|
|
114
|
+
this.props.onDismiss?.();
|
|
65
115
|
}
|
|
66
116
|
|
|
67
117
|
/**
|
|
68
|
-
* Present the
|
|
118
|
+
* Present the sheet. Optionally accepts a size `index`.
|
|
69
119
|
* See `sizes` prop
|
|
70
120
|
*/
|
|
71
121
|
async present(index = 0) {
|
|
@@ -86,6 +136,15 @@ class TrueSheet extends _react.PureComponent {
|
|
|
86
136
|
async dismiss() {
|
|
87
137
|
await _TrueSheetModule.TrueSheetModule.dismiss(this.handle);
|
|
88
138
|
}
|
|
139
|
+
componentDidMount() {
|
|
140
|
+
if (this.props.sizes && this.props.sizes.length > 3) {
|
|
141
|
+
console.warn('TrueSheet only supports a maximum of 3 sizes; collapsed, half-expanded and expanded. Check your `sizes` prop.');
|
|
142
|
+
}
|
|
143
|
+
this.updateState();
|
|
144
|
+
}
|
|
145
|
+
componentDidUpdate() {
|
|
146
|
+
this.updateState();
|
|
147
|
+
}
|
|
89
148
|
render() {
|
|
90
149
|
const {
|
|
91
150
|
sizes = ['medium', 'large'],
|
|
@@ -109,6 +168,8 @@ class TrueSheet extends _react.PureComponent {
|
|
|
109
168
|
sizes: sizes,
|
|
110
169
|
blurTint: blurTint,
|
|
111
170
|
cornerRadius: cornerRadius,
|
|
171
|
+
contentHeight: this.state.contentHeight,
|
|
172
|
+
footerHeight: this.state.footerHeight,
|
|
112
173
|
grabber: grabber,
|
|
113
174
|
dismissible: dismissible,
|
|
114
175
|
maxHeight: maxHeight,
|
|
@@ -132,27 +193,19 @@ class TrueSheet extends _react.PureComponent {
|
|
|
132
193
|
}, style]
|
|
133
194
|
}, rest), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
134
195
|
collapsable: false,
|
|
196
|
+
onLayout: e => this.onContentLayout(e.nativeEvent.layout),
|
|
135
197
|
style: contentContainerStyle
|
|
136
198
|
}, children), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
137
|
-
collapsable: false
|
|
138
|
-
|
|
139
|
-
|
|
199
|
+
collapsable: false,
|
|
200
|
+
onLayout: e => this.onFooterLayout(e.nativeEvent.layout)
|
|
201
|
+
}, /*#__PURE__*/_react.default.createElement(_TrueSheetFooter.TrueSheetFooter, {
|
|
202
|
+
Component: FooterComponent
|
|
140
203
|
})), _reactNative.Platform.OS === 'android' && /*#__PURE__*/_react.default.createElement(_TrueSheetGrabber.TrueSheetGrabber, _extends({
|
|
141
204
|
visible: grabber
|
|
142
205
|
}, grabberProps))));
|
|
143
206
|
}
|
|
144
207
|
}
|
|
145
208
|
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
209
|
const $nativeSheet = {
|
|
157
210
|
position: 'absolute',
|
|
158
211
|
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","onContentLayout","onFooterLayout","state","contentHeight","undefined","footerHeight","scrollableHandle","getHandle","name","handle","console","warn","present","index","TrueSheetModule","dismiss","resize","nodeHandle","findNodeHandle","current","updateState","scrollRef","setState","event","nativeEvent","layout","log","height","componentDidMount","sizes","componentDidUpdate","render","backgroundColor","dismissible","grabber","grabberProps","blurTint","cornerRadius","maxHeight","FooterComponent","style","contentContainerStyle","children","rest","createElement","$nativeSheet","View","collapsable","overflow","android","borderTopLeftRadius","borderTopRightRadius","onLayout","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,36 +3,84 @@ 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();
|
|
20
25
|
this.onDismiss = this.onDismiss.bind(this);
|
|
21
26
|
this.onPresent = this.onPresent.bind(this);
|
|
22
27
|
this.onSizeChange = this.onSizeChange.bind(this);
|
|
28
|
+
this.onContentLayout = this.onContentLayout.bind(this);
|
|
29
|
+
this.onFooterLayout = this.onFooterLayout.bind(this);
|
|
23
30
|
this.state = {
|
|
31
|
+
contentHeight: undefined,
|
|
32
|
+
footerHeight: undefined,
|
|
24
33
|
scrollableHandle: null
|
|
25
34
|
};
|
|
26
35
|
}
|
|
36
|
+
static getHandle(name) {
|
|
37
|
+
const handle = TrueSheet.handles[name];
|
|
38
|
+
if (!handle) {
|
|
39
|
+
console.warn(`Could not get native view tag from "${name}". Check your name prop.`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
return handle;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Present the sheet by given `name`.
|
|
47
|
+
* See `name` prop.
|
|
48
|
+
*/
|
|
49
|
+
static async present(name, index = 0) {
|
|
50
|
+
const handle = TrueSheet.getHandle(name);
|
|
51
|
+
if (!handle) return;
|
|
52
|
+
await TrueSheetModule.present(handle, index);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Dismiss the sheet by given `name`.
|
|
57
|
+
* See `name` prop.
|
|
58
|
+
*/
|
|
59
|
+
static async dismiss(name) {
|
|
60
|
+
const handle = TrueSheet.getHandle(name);
|
|
61
|
+
if (!handle) return;
|
|
62
|
+
await TrueSheetModule.dismiss(handle);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Resize the sheet by given `name`.
|
|
67
|
+
* See `name` prop.
|
|
68
|
+
*/
|
|
69
|
+
static async resize(name, index) {
|
|
70
|
+
await TrueSheet.present(name, index);
|
|
71
|
+
}
|
|
27
72
|
get handle() {
|
|
28
73
|
const nodeHandle = findNodeHandle(this.ref.current);
|
|
29
74
|
if (nodeHandle == null || nodeHandle === -1) {
|
|
30
|
-
throw new Error(
|
|
75
|
+
throw new Error('Could not get native view tag');
|
|
31
76
|
}
|
|
32
77
|
return nodeHandle;
|
|
33
78
|
}
|
|
34
79
|
updateState() {
|
|
35
80
|
const scrollableHandle = this.props.scrollRef?.current ? findNodeHandle(this.props.scrollRef.current) : null;
|
|
81
|
+
if (this.props.name) {
|
|
82
|
+
TrueSheet.handles[this.props.name] = this.handle;
|
|
83
|
+
}
|
|
36
84
|
this.setState({
|
|
37
85
|
scrollableHandle
|
|
38
86
|
});
|
|
@@ -43,21 +91,23 @@ export class TrueSheet extends PureComponent {
|
|
|
43
91
|
onPresent(event) {
|
|
44
92
|
this.props.onPresent?.(event.nativeEvent);
|
|
45
93
|
}
|
|
46
|
-
|
|
47
|
-
|
|
94
|
+
onFooterLayout(layout) {
|
|
95
|
+
console.log('footerHeight', layout.height);
|
|
96
|
+
this.setState({
|
|
97
|
+
footerHeight: layout.height
|
|
98
|
+
});
|
|
48
99
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
this.updateState();
|
|
100
|
+
onContentLayout(layout) {
|
|
101
|
+
this.setState({
|
|
102
|
+
contentHeight: layout.height
|
|
103
|
+
});
|
|
54
104
|
}
|
|
55
|
-
|
|
56
|
-
this.
|
|
105
|
+
onDismiss() {
|
|
106
|
+
this.props.onDismiss?.();
|
|
57
107
|
}
|
|
58
108
|
|
|
59
109
|
/**
|
|
60
|
-
* Present the
|
|
110
|
+
* Present the sheet. Optionally accepts a size `index`.
|
|
61
111
|
* See `sizes` prop
|
|
62
112
|
*/
|
|
63
113
|
async present(index = 0) {
|
|
@@ -78,6 +128,15 @@ export class TrueSheet extends PureComponent {
|
|
|
78
128
|
async dismiss() {
|
|
79
129
|
await TrueSheetModule.dismiss(this.handle);
|
|
80
130
|
}
|
|
131
|
+
componentDidMount() {
|
|
132
|
+
if (this.props.sizes && this.props.sizes.length > 3) {
|
|
133
|
+
console.warn('TrueSheet only supports a maximum of 3 sizes; collapsed, half-expanded and expanded. Check your `sizes` prop.');
|
|
134
|
+
}
|
|
135
|
+
this.updateState();
|
|
136
|
+
}
|
|
137
|
+
componentDidUpdate() {
|
|
138
|
+
this.updateState();
|
|
139
|
+
}
|
|
81
140
|
render() {
|
|
82
141
|
const {
|
|
83
142
|
sizes = ['medium', 'large'],
|
|
@@ -101,6 +160,8 @@ export class TrueSheet extends PureComponent {
|
|
|
101
160
|
sizes: sizes,
|
|
102
161
|
blurTint: blurTint,
|
|
103
162
|
cornerRadius: cornerRadius,
|
|
163
|
+
contentHeight: this.state.contentHeight,
|
|
164
|
+
footerHeight: this.state.footerHeight,
|
|
104
165
|
grabber: grabber,
|
|
105
166
|
dismissible: dismissible,
|
|
106
167
|
maxHeight: maxHeight,
|
|
@@ -124,26 +185,18 @@ export class TrueSheet extends PureComponent {
|
|
|
124
185
|
}, style]
|
|
125
186
|
}, rest), /*#__PURE__*/React.createElement(View, {
|
|
126
187
|
collapsable: false,
|
|
188
|
+
onLayout: e => this.onContentLayout(e.nativeEvent.layout),
|
|
127
189
|
style: contentContainerStyle
|
|
128
190
|
}, children), /*#__PURE__*/React.createElement(View, {
|
|
129
|
-
collapsable: false
|
|
191
|
+
collapsable: false,
|
|
192
|
+
onLayout: e => this.onFooterLayout(e.nativeEvent.layout)
|
|
130
193
|
}, /*#__PURE__*/React.createElement(TrueSheetFooter, {
|
|
131
|
-
|
|
194
|
+
Component: FooterComponent
|
|
132
195
|
})), Platform.OS === 'android' && /*#__PURE__*/React.createElement(TrueSheetGrabber, _extends({
|
|
133
196
|
visible: grabber
|
|
134
197
|
}, grabberProps))));
|
|
135
198
|
}
|
|
136
199
|
}
|
|
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
200
|
const $nativeSheet = {
|
|
148
201
|
position: 'absolute',
|
|
149
202
|
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","onContentLayout","onFooterLayout","state","contentHeight","undefined","footerHeight","scrollableHandle","getHandle","name","handle","console","warn","present","index","dismiss","resize","nodeHandle","current","updateState","scrollRef","setState","event","nativeEvent","layout","log","height","componentDidMount","sizes","length","componentDidUpdate","render","backgroundColor","dismissible","grabber","grabberProps","blurTint","cornerRadius","maxHeight","FooterComponent","style","contentContainerStyle","children","rest","createElement","$nativeSheet","_extends","collapsable","overflow","android","borderTopLeftRadius","borderTopRightRadius","onLayout","e","Component","OS","visible","position","left","zIndex"],"sourceRoot":"../../src","sources":["TrueSheet.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export const TrueSheetFooter = props => {
|
|
3
|
+
const {
|
|
4
|
+
Component
|
|
5
|
+
} = props;
|
|
6
|
+
if (!Component) return null;
|
|
7
|
+
if (typeof Component !== 'function') {
|
|
8
|
+
return Component;
|
|
9
|
+
}
|
|
10
|
+
return /*#__PURE__*/React.createElement(Component, null);
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=TrueSheetFooter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","TrueSheetFooter","props","Component","createElement"],"sourceRoot":"../../src","sources":["TrueSheetFooter.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAOzB,OAAO,MAAMC,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,oBAAOH,KAAA,CAAAI,aAAA,CAACD,SAAS,MAAE,CAAC;AACtB,CAAC","ignoreList":[]}
|
|
@@ -2,6 +2,9 @@ import React from 'react';
|
|
|
2
2
|
import { View } from 'react-native';
|
|
3
3
|
export * from '../TrueSheetGrabber';
|
|
4
4
|
export class TrueSheet extends React.Component {
|
|
5
|
+
static dismiss = jest.fn();
|
|
6
|
+
static present = jest.fn();
|
|
7
|
+
static resize = jest.fn();
|
|
5
8
|
dismiss = jest.fn();
|
|
6
9
|
present = jest.fn();
|
|
7
10
|
resize = jest.fn();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","TrueSheet","Component","dismiss","jest","fn","present","resize","render","createElement","props"],"sourceRoot":"../../../src","sources":["__mocks__/index.js"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,cAAc;AAEnC,cAAc,qBAAqB;AAEnC,OAAO,MAAMC,SAAS,SAASF,KAAK,CAACG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"names":["React","View","TrueSheet","Component","dismiss","jest","fn","present","resize","render","createElement","props"],"sourceRoot":"../../../src","sources":["__mocks__/index.js"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,cAAc;AAEnC,cAAc,qBAAqB;AAEnC,OAAO,MAAMC,SAAS,SAASF,KAAK,CAACG,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,oBAAOT,KAAA,CAAAU,aAAA,CAACT,IAAI,EAAK,IAAI,CAACU,KAAQ,CAAC;EACjC;AACF","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docusaurus.config.d.ts","sourceRoot":"","sources":["../../../docs/docusaurus.config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAI/C,QAAA,MAAM,MAAM,EAAE,MA8Gb,CAAA;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebars.d.ts","sourceRoot":"","sources":["../../../docs/sidebars.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAErE,QAAA,MAAM,QAAQ,EAAE,cAOf,CAAA;AAED,eAAe,QAAQ,CAAA"}
|
|
@@ -1,21 +1,43 @@
|
|
|
1
1
|
import { PureComponent, type ReactNode } from 'react';
|
|
2
2
|
import type { TrueSheetProps } from './types';
|
|
3
3
|
interface TrueSheetState {
|
|
4
|
+
contentHeight?: number;
|
|
5
|
+
footerHeight?: number;
|
|
4
6
|
scrollableHandle: number | null;
|
|
5
7
|
}
|
|
6
8
|
export declare class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
|
|
7
9
|
displayName: string;
|
|
8
10
|
private readonly ref;
|
|
11
|
+
/**
|
|
12
|
+
* Map of sheet names against their handle.
|
|
13
|
+
*/
|
|
14
|
+
private static readonly handles;
|
|
9
15
|
constructor(props: TrueSheetProps);
|
|
16
|
+
private static getHandle;
|
|
17
|
+
/**
|
|
18
|
+
* Present the sheet by given `name`.
|
|
19
|
+
* See `name` prop.
|
|
20
|
+
*/
|
|
21
|
+
static present(name: string, index?: number): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Dismiss the sheet by given `name`.
|
|
24
|
+
* See `name` prop.
|
|
25
|
+
*/
|
|
26
|
+
static dismiss(name: string): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Resize the sheet by given `name`.
|
|
29
|
+
* See `name` prop.
|
|
30
|
+
*/
|
|
31
|
+
static resize(name: string, index: number): Promise<void>;
|
|
10
32
|
private get handle();
|
|
11
33
|
private updateState;
|
|
12
34
|
private onSizeChange;
|
|
13
35
|
private onPresent;
|
|
36
|
+
private onFooterLayout;
|
|
37
|
+
private onContentLayout;
|
|
14
38
|
private onDismiss;
|
|
15
|
-
componentDidMount(): void;
|
|
16
|
-
componentDidUpdate(): void;
|
|
17
39
|
/**
|
|
18
|
-
* Present the
|
|
40
|
+
* Present the sheet. Optionally accepts a size `index`.
|
|
19
41
|
* See `sizes` prop
|
|
20
42
|
*/
|
|
21
43
|
present(index?: number): Promise<void>;
|
|
@@ -28,6 +50,8 @@ export declare class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetSt
|
|
|
28
50
|
* Dismisses the Sheet
|
|
29
51
|
*/
|
|
30
52
|
dismiss(): Promise<void>;
|
|
53
|
+
componentDidMount(): void;
|
|
54
|
+
componentDidUpdate(): void;
|
|
31
55
|
render(): ReactNode;
|
|
32
56
|
}
|
|
33
57
|
export {};
|