@lodev09/react-native-true-sheet 0.6.0 → 0.8.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 +37 -20
- package/android/src/main/java/com/lodev09/truesheet/{core/TrueSheetBehavior.kt → TrueSheetBehavior.kt} +69 -40
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetDialog.kt +84 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetView.kt +87 -61
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewManager.kt +5 -0
- package/android/src/main/java/com/lodev09/truesheet/core/Events.kt +1 -0
- package/android/src/main/java/com/lodev09/truesheet/core/KeyboardManager.kt +53 -0
- package/android/src/main/java/com/lodev09/truesheet/core/RootViewGroup.kt +1 -1
- package/android/src/main/java/com/lodev09/truesheet/core/Utils.kt +5 -37
- package/ios/Extensions/UIView+pinTo.swift +54 -10
- package/ios/TrueSheetView.swift +106 -56
- package/ios/TrueSheetViewController.swift +46 -36
- package/ios/TrueSheetViewManager.m +1 -0
- package/lib/commonjs/TrueSheet.js +11 -7
- package/lib/commonjs/TrueSheet.js.map +1 -1
- package/lib/commonjs/TrueSheetGrabber.js +56 -0
- package/lib/commonjs/TrueSheetGrabber.js.map +1 -0
- package/lib/commonjs/index.js +11 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/TrueSheet.js +11 -7
- package/lib/module/TrueSheet.js.map +1 -1
- package/lib/module/TrueSheetGrabber.js +48 -0
- package/lib/module/TrueSheetGrabber.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/TrueSheet.d.ts.map +1 -1
- package/lib/typescript/src/TrueSheetGrabber.d.ts +31 -0
- package/lib/typescript/src/TrueSheetGrabber.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +8 -0
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/TrueSheet.tsx +9 -7
- package/src/TrueSheetGrabber.tsx +74 -0
- package/src/index.ts +1 -0
- package/src/types.ts +9 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TrueSheetGrabber = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
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); }
|
|
11
|
+
const GRABBER_WRAPPER_HEIGHT = 24;
|
|
12
|
+
const GRABBER_DEFAULT_HEIGHT = 4;
|
|
13
|
+
const GRABBER_DEFAULT_WIDTH = 32;
|
|
14
|
+
const GRABBER_DEFAULT_COLOR = '#49454F';
|
|
15
|
+
/**
|
|
16
|
+
* Little Grabber component.
|
|
17
|
+
* Used by defualt for Android but feel free to re-use.
|
|
18
|
+
*/
|
|
19
|
+
const TrueSheetGrabber = props => {
|
|
20
|
+
const {
|
|
21
|
+
visible = true,
|
|
22
|
+
color = GRABBER_DEFAULT_COLOR,
|
|
23
|
+
width = GRABBER_DEFAULT_WIDTH,
|
|
24
|
+
height = GRABBER_DEFAULT_HEIGHT,
|
|
25
|
+
style,
|
|
26
|
+
...rest
|
|
27
|
+
} = props;
|
|
28
|
+
if (!visible) return null;
|
|
29
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
30
|
+
style: $wrapper
|
|
31
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, _extends({
|
|
32
|
+
style: [$grabber, {
|
|
33
|
+
height,
|
|
34
|
+
width,
|
|
35
|
+
backgroundColor: color
|
|
36
|
+
}, style]
|
|
37
|
+
}, rest)));
|
|
38
|
+
};
|
|
39
|
+
exports.TrueSheetGrabber = TrueSheetGrabber;
|
|
40
|
+
const $wrapper = {
|
|
41
|
+
position: 'absolute',
|
|
42
|
+
top: 0,
|
|
43
|
+
left: 0,
|
|
44
|
+
right: 0,
|
|
45
|
+
alignSelf: 'center',
|
|
46
|
+
height: GRABBER_WRAPPER_HEIGHT,
|
|
47
|
+
alignItems: 'center',
|
|
48
|
+
zIndex: 9999
|
|
49
|
+
};
|
|
50
|
+
const $grabber = {
|
|
51
|
+
// M3 spec for opacity
|
|
52
|
+
opacity: 0.4,
|
|
53
|
+
borderRadius: GRABBER_DEFAULT_HEIGHT / 2,
|
|
54
|
+
top: 6
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=TrueSheetGrabber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","GRABBER_WRAPPER_HEIGHT","GRABBER_DEFAULT_HEIGHT","GRABBER_DEFAULT_WIDTH","GRABBER_DEFAULT_COLOR","TrueSheetGrabber","props","visible","color","width","height","style","rest","createElement","View","$wrapper","$grabber","backgroundColor","exports","position","top","left","right","alignSelf","alignItems","zIndex","opacity","borderRadius"],"sourceRoot":"../../src","sources":["TrueSheetGrabber.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAAoF,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,SAAA,IAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAI,GAAA,IAAAD,MAAA,QAAAP,MAAA,CAAAS,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAJ,MAAA,EAAAC,GAAA,KAAAL,MAAA,CAAAK,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAL,MAAA,YAAAJ,QAAA,CAAAa,KAAA,OAAAP,SAAA;AAEpF,MAAMQ,sBAAsB,GAAG,EAAE;AACjC,MAAMC,sBAAsB,GAAG,CAAC;AAChC,MAAMC,qBAAqB,GAAG,EAAE;AAChC,MAAMC,qBAAqB,GAAG,SAAS;AA4BvC;AACA;AACA;AACA;AACO,MAAMC,gBAAgB,GAAIC,KAA4B,IAAK;EAChE,MAAM;IACJC,OAAO,GAAG,IAAI;IACdC,KAAK,GAAGJ,qBAAqB;IAC7BK,KAAK,GAAGN,qBAAqB;IAC7BO,MAAM,GAAGR,sBAAsB;IAC/BS,KAAK;IACL,GAAGC;EACL,CAAC,GAAGN,KAAK;EAET,IAAI,CAACC,OAAO,EAAE,OAAO,IAAI;EAEzB,oBACE3B,MAAA,CAAAM,OAAA,CAAA2B,aAAA,CAAC9B,YAAA,CAAA+B,IAAI;IAACH,KAAK,EAAEI;EAAS,gBACpBnC,MAAA,CAAAM,OAAA,CAAA2B,aAAA,CAAC9B,YAAA,CAAA+B,IAAI,EAAA3B,QAAA;IAACwB,KAAK,EAAE,CAACK,QAAQ,EAAE;MAAEN,MAAM;MAAED,KAAK;MAAEQ,eAAe,EAAET;IAAM,CAAC,EAAEG,KAAK;EAAE,GAAKC,IAAI,CAAG,CAClF,CAAC;AAEX,CAAC;AAAAM,OAAA,CAAAb,gBAAA,GAAAA,gBAAA;AAED,MAAMU,QAAmB,GAAG;EAC1BI,QAAQ,EAAE,UAAU;EACpBC,GAAG,EAAE,CAAC;EACNC,IAAI,EAAE,CAAC;EACPC,KAAK,EAAE,CAAC;EACRC,SAAS,EAAE,QAAQ;EACnBb,MAAM,EAAET,sBAAsB;EAC9BuB,UAAU,EAAE,QAAQ;EACpBC,MAAM,EAAE;AACV,CAAC;AAED,MAAMT,QAAmB,GAAG;EAC1B;EACAU,OAAO,EAAE,GAAG;EACZC,YAAY,EAAEzB,sBAAsB,GAAG,CAAC;EACxCkB,GAAG,EAAE;AACP,CAAC","ignoreList":[]}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -25,4 +25,15 @@ Object.keys(_TrueSheet).forEach(function (key) {
|
|
|
25
25
|
}
|
|
26
26
|
});
|
|
27
27
|
});
|
|
28
|
+
var _TrueSheetGrabber = require("./TrueSheetGrabber");
|
|
29
|
+
Object.keys(_TrueSheetGrabber).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _TrueSheetGrabber[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _TrueSheetGrabber[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
28
39
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_TrueSheet"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,MAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,MAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,MAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,UAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,UAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,UAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,UAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_types","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_TrueSheet","_TrueSheetGrabber"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,MAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,MAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,MAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,UAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,UAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,UAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,UAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,iBAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,iBAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,iBAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,iBAAA,CAAAN,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
|
package/lib/module/TrueSheet.js
CHANGED
|
@@ -2,6 +2,7 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
|
|
|
2
2
|
import React, { PureComponent, createRef } from 'react';
|
|
3
3
|
import { requireNativeComponent, Platform, findNodeHandle, View } from 'react-native';
|
|
4
4
|
import { TrueSheetModule } from './TrueSheetModule';
|
|
5
|
+
import { TrueSheetGrabber } from './TrueSheetGrabber';
|
|
5
6
|
const LINKING_ERROR = `The package '@lodev09/react-native-true-sheet' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
|
|
6
7
|
ios: "- You have run 'pod install'\n",
|
|
7
8
|
default: ''
|
|
@@ -80,10 +81,11 @@ export class TrueSheet extends PureComponent {
|
|
|
80
81
|
render() {
|
|
81
82
|
const {
|
|
82
83
|
sizes,
|
|
83
|
-
backgroundColor,
|
|
84
|
+
backgroundColor = 'white',
|
|
85
|
+
grabber = true,
|
|
86
|
+
dismissible = true,
|
|
84
87
|
blurTint,
|
|
85
88
|
cornerRadius,
|
|
86
|
-
grabber,
|
|
87
89
|
maxHeight,
|
|
88
90
|
FooterComponent,
|
|
89
91
|
style,
|
|
@@ -91,7 +93,6 @@ export class TrueSheet extends PureComponent {
|
|
|
91
93
|
children,
|
|
92
94
|
...rest
|
|
93
95
|
} = this.props;
|
|
94
|
-
const wrapperBackgroundColor = backgroundColor ?? 'white';
|
|
95
96
|
return /*#__PURE__*/React.createElement(TrueSheetNativeView, {
|
|
96
97
|
ref: this.ref,
|
|
97
98
|
style: $nativeSheet,
|
|
@@ -99,7 +100,8 @@ export class TrueSheet extends PureComponent {
|
|
|
99
100
|
sizes: sizes ?? ['medium', 'large'],
|
|
100
101
|
blurTint: blurTint,
|
|
101
102
|
cornerRadius: cornerRadius,
|
|
102
|
-
grabber: grabber
|
|
103
|
+
grabber: grabber,
|
|
104
|
+
dismissible: dismissible,
|
|
103
105
|
maxHeight: maxHeight,
|
|
104
106
|
onPresent: this.onPresent,
|
|
105
107
|
onDismiss: this.onDismiss,
|
|
@@ -115,8 +117,8 @@ export class TrueSheet extends PureComponent {
|
|
|
115
117
|
borderTopRightRadius: cornerRadius,
|
|
116
118
|
// Remove backgroundColor if `blurTint` is set on iOS
|
|
117
119
|
backgroundColor: Platform.select({
|
|
118
|
-
ios: blurTint ? undefined :
|
|
119
|
-
android:
|
|
120
|
+
ios: blurTint ? undefined : backgroundColor,
|
|
121
|
+
android: backgroundColor
|
|
120
122
|
})
|
|
121
123
|
}, style]
|
|
122
124
|
}, rest), /*#__PURE__*/React.createElement(View, {
|
|
@@ -124,7 +126,9 @@ export class TrueSheet extends PureComponent {
|
|
|
124
126
|
style: contentContainerStyle
|
|
125
127
|
}, children), /*#__PURE__*/React.createElement(View, {
|
|
126
128
|
collapsable: false
|
|
127
|
-
}, !!FooterComponent && /*#__PURE__*/React.createElement(FooterComponent, null))
|
|
129
|
+
}, !!FooterComponent && /*#__PURE__*/React.createElement(FooterComponent, null)), Platform.OS === 'android' && /*#__PURE__*/React.createElement(TrueSheetGrabber, {
|
|
130
|
+
visible: grabber
|
|
131
|
+
})));
|
|
128
132
|
}
|
|
129
133
|
}
|
|
130
134
|
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","onDismiss","bind","onPresent","onSizeChange","state","scrollableHandle","handle","nodeHandle","current","updateState","scrollRef","setState","event","nativeEvent","componentDidMount","sizes","length","console","warn","componentDidUpdate","present","index","resize","dismiss","render","backgroundColor","
|
|
1
|
+
{"version":3,"names":["React","PureComponent","createRef","requireNativeComponent","Platform","findNodeHandle","View","TrueSheetModule","TrueSheetGrabber","LINKING_ERROR","select","ios","default","ComponentName","TrueSheetNativeView","Error","TrueSheet","displayName","constructor","props","ref","onDismiss","bind","onPresent","onSizeChange","state","scrollableHandle","handle","nodeHandle","current","updateState","scrollRef","setState","event","nativeEvent","componentDidMount","sizes","length","console","warn","componentDidUpdate","present","index","resize","dismiss","render","backgroundColor","grabber","dismissible","blurTint","cornerRadius","maxHeight","FooterComponent","style","contentContainerStyle","children","rest","createElement","$nativeSheet","_extends","collapsable","overflow","undefined","android","borderTopLeftRadius","borderTopRightRadius","OS","visible","position","left","zIndex"],"sourceRoot":"../../src","sources":["TrueSheet.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
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); }
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { View } from 'react-native';
|
|
4
|
+
const GRABBER_WRAPPER_HEIGHT = 24;
|
|
5
|
+
const GRABBER_DEFAULT_HEIGHT = 4;
|
|
6
|
+
const GRABBER_DEFAULT_WIDTH = 32;
|
|
7
|
+
const GRABBER_DEFAULT_COLOR = '#49454F';
|
|
8
|
+
/**
|
|
9
|
+
* Little Grabber component.
|
|
10
|
+
* Used by defualt for Android but feel free to re-use.
|
|
11
|
+
*/
|
|
12
|
+
export const TrueSheetGrabber = props => {
|
|
13
|
+
const {
|
|
14
|
+
visible = true,
|
|
15
|
+
color = GRABBER_DEFAULT_COLOR,
|
|
16
|
+
width = GRABBER_DEFAULT_WIDTH,
|
|
17
|
+
height = GRABBER_DEFAULT_HEIGHT,
|
|
18
|
+
style,
|
|
19
|
+
...rest
|
|
20
|
+
} = props;
|
|
21
|
+
if (!visible) return null;
|
|
22
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
23
|
+
style: $wrapper
|
|
24
|
+
}, /*#__PURE__*/React.createElement(View, _extends({
|
|
25
|
+
style: [$grabber, {
|
|
26
|
+
height,
|
|
27
|
+
width,
|
|
28
|
+
backgroundColor: color
|
|
29
|
+
}, style]
|
|
30
|
+
}, rest)));
|
|
31
|
+
};
|
|
32
|
+
const $wrapper = {
|
|
33
|
+
position: 'absolute',
|
|
34
|
+
top: 0,
|
|
35
|
+
left: 0,
|
|
36
|
+
right: 0,
|
|
37
|
+
alignSelf: 'center',
|
|
38
|
+
height: GRABBER_WRAPPER_HEIGHT,
|
|
39
|
+
alignItems: 'center',
|
|
40
|
+
zIndex: 9999
|
|
41
|
+
};
|
|
42
|
+
const $grabber = {
|
|
43
|
+
// M3 spec for opacity
|
|
44
|
+
opacity: 0.4,
|
|
45
|
+
borderRadius: GRABBER_DEFAULT_HEIGHT / 2,
|
|
46
|
+
top: 6
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=TrueSheetGrabber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","GRABBER_WRAPPER_HEIGHT","GRABBER_DEFAULT_HEIGHT","GRABBER_DEFAULT_WIDTH","GRABBER_DEFAULT_COLOR","TrueSheetGrabber","props","visible","color","width","height","style","rest","createElement","$wrapper","_extends","$grabber","backgroundColor","position","top","left","right","alignSelf","alignItems","zIndex","opacity","borderRadius"],"sourceRoot":"../../src","sources":["TrueSheetGrabber.tsx"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAyD,cAAc;AAEpF,MAAMC,sBAAsB,GAAG,EAAE;AACjC,MAAMC,sBAAsB,GAAG,CAAC;AAChC,MAAMC,qBAAqB,GAAG,EAAE;AAChC,MAAMC,qBAAqB,GAAG,SAAS;AA4BvC;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAIC,KAA4B,IAAK;EAChE,MAAM;IACJC,OAAO,GAAG,IAAI;IACdC,KAAK,GAAGJ,qBAAqB;IAC7BK,KAAK,GAAGN,qBAAqB;IAC7BO,MAAM,GAAGR,sBAAsB;IAC/BS,KAAK;IACL,GAAGC;EACL,CAAC,GAAGN,KAAK;EAET,IAAI,CAACC,OAAO,EAAE,OAAO,IAAI;EAEzB,oBACER,KAAA,CAAAc,aAAA,CAACb,IAAI;IAACW,KAAK,EAAEG;EAAS,gBACpBf,KAAA,CAAAc,aAAA,CAACb,IAAI,EAAAe,QAAA;IAACJ,KAAK,EAAE,CAACK,QAAQ,EAAE;MAAEN,MAAM;MAAED,KAAK;MAAEQ,eAAe,EAAET;IAAM,CAAC,EAAEG,KAAK;EAAE,GAAKC,IAAI,CAAG,CAClF,CAAC;AAEX,CAAC;AAED,MAAME,QAAmB,GAAG;EAC1BI,QAAQ,EAAE,UAAU;EACpBC,GAAG,EAAE,CAAC;EACNC,IAAI,EAAE,CAAC;EACPC,KAAK,EAAE,CAAC;EACRC,SAAS,EAAE,QAAQ;EACnBZ,MAAM,EAAET,sBAAsB;EAC9BsB,UAAU,EAAE,QAAQ;EACpBC,MAAM,EAAE;AACV,CAAC;AAED,MAAMR,QAAmB,GAAG;EAC1B;EACAS,OAAO,EAAE,GAAG;EACZC,YAAY,EAAExB,sBAAsB,GAAG,CAAC;EACxCiB,GAAG,EAAE;AACP,CAAC","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,cAAc,SAAS;AACvB,cAAc,aAAa","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,oBAAoB","ignoreList":[]}
|
|
@@ -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;AAWlG,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,SAAS,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;AAWlG,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,SAAS,CAAA;AA0BvD,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,WAAW;IAUnB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAIjB,iBAAiB,IAAI,IAAI;IAUzB,kBAAkB,IAAI,IAAI;IAI1B;;;OAGG;IACU,OAAO,CAAC,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD;;;OAGG;IACU,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC,MAAM,IAAI,SAAS;CA0DpB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type ColorValue, type ViewProps } from 'react-native';
|
|
3
|
+
interface TrueSheetGrabberProps extends ViewProps {
|
|
4
|
+
/**
|
|
5
|
+
* Is grabber visible
|
|
6
|
+
* @default true
|
|
7
|
+
*/
|
|
8
|
+
visible?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Grabber color according to M3 specs
|
|
11
|
+
* @default #49454F
|
|
12
|
+
*/
|
|
13
|
+
color?: ColorValue;
|
|
14
|
+
/**
|
|
15
|
+
* Grabber height according to M3 specs
|
|
16
|
+
* @default 4
|
|
17
|
+
*/
|
|
18
|
+
height?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Grabber width according to M3 specs
|
|
21
|
+
* @default 32
|
|
22
|
+
*/
|
|
23
|
+
width?: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Little Grabber component.
|
|
27
|
+
* Used by defualt for Android but feel free to re-use.
|
|
28
|
+
*/
|
|
29
|
+
export declare const TrueSheetGrabber: (props: TrueSheetGrabberProps) => React.JSX.Element | null;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=TrueSheetGrabber.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrueSheetGrabber.d.ts","sourceRoot":"","sources":["../../../src/TrueSheetGrabber.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAQ,KAAK,UAAU,EAAE,KAAK,SAAS,EAAkB,MAAM,cAAc,CAAA;AAOpF,UAAU,qBAAsB,SAAQ,SAAS;IAC/C;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;OAGG;IACH,KAAK,CAAC,EAAE,UAAU,CAAA;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,UAAW,qBAAqB,6BAiB5D,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA"}
|
|
@@ -72,8 +72,16 @@ export interface TrueSheetProps extends ViewProps {
|
|
|
72
72
|
* @default ['medium', 'large']
|
|
73
73
|
*/
|
|
74
74
|
sizes?: SheetSize[];
|
|
75
|
+
/**
|
|
76
|
+
* Prevents interactive dismissal of the Sheet.
|
|
77
|
+
*
|
|
78
|
+
* @default true
|
|
79
|
+
*/
|
|
80
|
+
dismissible?: boolean;
|
|
75
81
|
/**
|
|
76
82
|
* Main sheet background color
|
|
83
|
+
*
|
|
84
|
+
* @default white
|
|
77
85
|
*/
|
|
78
86
|
backgroundColor?: ColorValue;
|
|
79
87
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE/E,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAChB,OAAO,GACP,MAAM,GACN,SAAS,GACT,YAAY,GACZ,SAAS,GACT,WAAW,GACX,yBAAyB,GACzB,oBAAoB,GACpB,gBAAgB,GAChB,qBAAqB,GACrB,sBAAsB,GACtB,8BAA8B,GAC9B,yBAAyB,GACzB,qBAAqB,GACrB,0BAA0B,GAC1B,2BAA2B,GAC3B,6BAA6B,GAC7B,wBAAwB,GACxB,oBAAoB,GACpB,yBAAyB,GACzB,0BAA0B,CAAA;AAE9B;;;;;GAKG;AACH,MAAM,MAAM,SAAS;AACnB;;;;;GAKG;AACD,MAAM;AAER;;;;;GAKG;GACD,MAAM;AAER;;;;;GAKG;GACD,GAAG,MAAM,GAAG;AAEd;;;;;GAKG;GACD,OAAO;AAET;;;;;GAKG;GACD,QAAQ;AAEV;;;;;GAKG;GACD,OAAO,CAAA;AAEX,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,SAAS,EAAE,CAAA;IAEnB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE/E,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAChB,OAAO,GACP,MAAM,GACN,SAAS,GACT,YAAY,GACZ,SAAS,GACT,WAAW,GACX,yBAAyB,GACzB,oBAAoB,GACpB,gBAAgB,GAChB,qBAAqB,GACrB,sBAAsB,GACtB,8BAA8B,GAC9B,yBAAyB,GACzB,qBAAqB,GACrB,0BAA0B,GAC1B,2BAA2B,GAC3B,6BAA6B,GAC7B,wBAAwB,GACxB,oBAAoB,GACpB,yBAAyB,GACzB,0BAA0B,CAAA;AAE9B;;;;;GAKG;AACH,MAAM,MAAM,SAAS;AACnB;;;;;GAKG;AACD,MAAM;AAER;;;;;GAKG;GACD,MAAM;AAER;;;;;GAKG;GACD,GAAG,MAAM,GAAG;AAEd;;;;;GAKG;GACD,OAAO;AAET;;;;;GAKG;GACD,QAAQ;AAEV;;;;;GAKG;GACD,OAAO,CAAA;AAEX,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,SAAS,EAAE,CAAA;IAEnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB;;;;OAIG;IACH,eAAe,CAAC,EAAE,UAAU,CAAA;IAE5B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAEnB;;OAEG;IACH,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAE5C;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAEzC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;IAExC;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;IAEpC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IAEtB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;CACxC"}
|
package/package.json
CHANGED
package/src/TrueSheet.tsx
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
|
|
12
12
|
import type { TrueSheetProps, SizeInfo } from './types'
|
|
13
13
|
import { TrueSheetModule } from './TrueSheetModule'
|
|
14
|
+
import { TrueSheetGrabber } from './TrueSheetGrabber'
|
|
14
15
|
|
|
15
16
|
const LINKING_ERROR =
|
|
16
17
|
`The package '@lodev09/react-native-true-sheet' doesn't seem to be linked. Make sure: \n\n` +
|
|
@@ -128,10 +129,11 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
|
|
|
128
129
|
render(): ReactNode {
|
|
129
130
|
const {
|
|
130
131
|
sizes,
|
|
131
|
-
backgroundColor,
|
|
132
|
+
backgroundColor = 'white',
|
|
133
|
+
grabber = true,
|
|
134
|
+
dismissible = true,
|
|
132
135
|
blurTint,
|
|
133
136
|
cornerRadius,
|
|
134
|
-
grabber,
|
|
135
137
|
maxHeight,
|
|
136
138
|
FooterComponent,
|
|
137
139
|
style,
|
|
@@ -140,8 +142,6 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
|
|
|
140
142
|
...rest
|
|
141
143
|
} = this.props
|
|
142
144
|
|
|
143
|
-
const wrapperBackgroundColor = backgroundColor ?? 'white'
|
|
144
|
-
|
|
145
145
|
return (
|
|
146
146
|
<TrueSheetNativeView
|
|
147
147
|
ref={this.ref}
|
|
@@ -150,7 +150,8 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
|
|
|
150
150
|
sizes={sizes ?? ['medium', 'large']}
|
|
151
151
|
blurTint={blurTint}
|
|
152
152
|
cornerRadius={cornerRadius}
|
|
153
|
-
grabber={grabber
|
|
153
|
+
grabber={grabber}
|
|
154
|
+
dismissible={dismissible}
|
|
154
155
|
maxHeight={maxHeight}
|
|
155
156
|
onPresent={this.onPresent}
|
|
156
157
|
onDismiss={this.onDismiss}
|
|
@@ -166,8 +167,8 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
|
|
|
166
167
|
|
|
167
168
|
// Remove backgroundColor if `blurTint` is set on iOS
|
|
168
169
|
backgroundColor: Platform.select({
|
|
169
|
-
ios: blurTint ? undefined :
|
|
170
|
-
android:
|
|
170
|
+
ios: blurTint ? undefined : backgroundColor,
|
|
171
|
+
android: backgroundColor,
|
|
171
172
|
}),
|
|
172
173
|
},
|
|
173
174
|
style,
|
|
@@ -178,6 +179,7 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
|
|
|
178
179
|
{children}
|
|
179
180
|
</View>
|
|
180
181
|
<View collapsable={false}>{!!FooterComponent && <FooterComponent />}</View>
|
|
182
|
+
{Platform.OS === 'android' && <TrueSheetGrabber visible={grabber} />}
|
|
181
183
|
</View>
|
|
182
184
|
</TrueSheetNativeView>
|
|
183
185
|
)
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { View, type ColorValue, type ViewProps, type ViewStyle } from 'react-native'
|
|
3
|
+
|
|
4
|
+
const GRABBER_WRAPPER_HEIGHT = 24
|
|
5
|
+
const GRABBER_DEFAULT_HEIGHT = 4
|
|
6
|
+
const GRABBER_DEFAULT_WIDTH = 32
|
|
7
|
+
const GRABBER_DEFAULT_COLOR = '#49454F'
|
|
8
|
+
|
|
9
|
+
interface TrueSheetGrabberProps extends ViewProps {
|
|
10
|
+
/**
|
|
11
|
+
* Is grabber visible
|
|
12
|
+
* @default true
|
|
13
|
+
*/
|
|
14
|
+
visible?: boolean
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Grabber color according to M3 specs
|
|
18
|
+
* @default #49454F
|
|
19
|
+
*/
|
|
20
|
+
color?: ColorValue
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Grabber height according to M3 specs
|
|
24
|
+
* @default 4
|
|
25
|
+
*/
|
|
26
|
+
height?: number
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Grabber width according to M3 specs
|
|
30
|
+
* @default 32
|
|
31
|
+
*/
|
|
32
|
+
width?: number
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Little Grabber component.
|
|
37
|
+
* Used by defualt for Android but feel free to re-use.
|
|
38
|
+
*/
|
|
39
|
+
export const TrueSheetGrabber = (props: TrueSheetGrabberProps) => {
|
|
40
|
+
const {
|
|
41
|
+
visible = true,
|
|
42
|
+
color = GRABBER_DEFAULT_COLOR,
|
|
43
|
+
width = GRABBER_DEFAULT_WIDTH,
|
|
44
|
+
height = GRABBER_DEFAULT_HEIGHT,
|
|
45
|
+
style,
|
|
46
|
+
...rest
|
|
47
|
+
} = props
|
|
48
|
+
|
|
49
|
+
if (!visible) return null
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<View style={$wrapper}>
|
|
53
|
+
<View style={[$grabber, { height, width, backgroundColor: color }, style]} {...rest} />
|
|
54
|
+
</View>
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const $wrapper: ViewStyle = {
|
|
59
|
+
position: 'absolute',
|
|
60
|
+
top: 0,
|
|
61
|
+
left: 0,
|
|
62
|
+
right: 0,
|
|
63
|
+
alignSelf: 'center',
|
|
64
|
+
height: GRABBER_WRAPPER_HEIGHT,
|
|
65
|
+
alignItems: 'center',
|
|
66
|
+
zIndex: 9999,
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const $grabber: ViewStyle = {
|
|
70
|
+
// M3 spec for opacity
|
|
71
|
+
opacity: 0.4,
|
|
72
|
+
borderRadius: GRABBER_DEFAULT_HEIGHT / 2,
|
|
73
|
+
top: 6,
|
|
74
|
+
}
|
package/src/index.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -103,8 +103,17 @@ export interface TrueSheetProps extends ViewProps {
|
|
|
103
103
|
*/
|
|
104
104
|
sizes?: SheetSize[]
|
|
105
105
|
|
|
106
|
+
/**
|
|
107
|
+
* Prevents interactive dismissal of the Sheet.
|
|
108
|
+
*
|
|
109
|
+
* @default true
|
|
110
|
+
*/
|
|
111
|
+
dismissible?: boolean
|
|
112
|
+
|
|
106
113
|
/**
|
|
107
114
|
* Main sheet background color
|
|
115
|
+
*
|
|
116
|
+
* @default white
|
|
108
117
|
*/
|
|
109
118
|
backgroundColor?: ColorValue
|
|
110
119
|
|