@mustmove/bottom-sheet 1.0.3 → 1.0.4
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/lib/commonjs/constants.js +2 -1
- package/lib/commonjs/constants.js.map +1 -1
- package/lib/commonjs/hooks/useAnimatedKeyboard.js +39 -2
- package/lib/commonjs/hooks/useAnimatedKeyboard.js.map +1 -1
- package/lib/module/constants.js +2 -1
- package/lib/module/constants.js.map +1 -1
- package/lib/module/hooks/useAnimatedKeyboard.js +39 -2
- package/lib/module/hooks/useAnimatedKeyboard.js.map +1 -1
- package/lib/typescript/components/bottomSheet/types.d.ts +5 -1
- package/lib/typescript/constants.d.ts +1 -0
- package/lib/typescript/constants.d.ts.map +1 -1
- package/lib/typescript/hooks/useAnimatedKeyboard.d.ts.map +1 -1
- package/package.json +6 -2
- package/src/components/bottomSheet/types.d.ts +5 -1
- package/src/constants.ts +1 -0
- package/src/hooks/useAnimatedKeyboard.ts +63 -2
|
@@ -122,7 +122,8 @@ const KEYBOARD_BLUR_BEHAVIOR = exports.KEYBOARD_BLUR_BEHAVIOR = {
|
|
|
122
122
|
};
|
|
123
123
|
const KEYBOARD_INPUT_MODE = exports.KEYBOARD_INPUT_MODE = {
|
|
124
124
|
adjustPan: 'adjustPan',
|
|
125
|
-
adjustResize: 'adjustResize'
|
|
125
|
+
adjustResize: 'adjustResize',
|
|
126
|
+
adjustNothing: 'adjustNothing'
|
|
126
127
|
};
|
|
127
128
|
const KEYBOARD_DISMISS_THRESHOLD = exports.KEYBOARD_DISMISS_THRESHOLD = 12.5;
|
|
128
129
|
const INITIAL_LAYOUT_VALUE = exports.INITIAL_LAYOUT_VALUE = -999;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_reactNativeReanimated","height","WINDOW_HEIGHT","width","WINDOW_WIDTH","Dimensions","get","exports","SCREEN_HEIGHT","SCREEN_WIDTH","GESTURE_SOURCE","SHEET_STATE","SCROLLABLE_STATUS","SCROLLABLE_TYPE","ANIMATION_STATUS","ANIMATION_SOURCE","ANIMATION_METHOD","KEYBOARD_STATUS","SNAP_POINT_TYPE","ANIMATION_EASING","Easing","out","exp","ANIMATION_DURATION","ANIMATION_CONFIGS","Platform","select","android","duration","easing","default","damping","stiffness","mass","overshootClamping","restDisplacementThreshold","restSpeedThreshold","SCROLLABLE_DECELERATION_RATE_MAPPER","UNDETERMINED","LOCKED","UNLOCKED","ios","MODAL_STACK_BEHAVIOR","replace","push","switch","KEYBOARD_BEHAVIOR","interactive","extend","fillParent","KEYBOARD_BLUR_BEHAVIOR","none","restore","KEYBOARD_INPUT_MODE","adjustPan","adjustResize","KEYBOARD_DISMISS_THRESHOLD","INITIAL_LAYOUT_VALUE","INITIAL_CONTAINER_LAYOUT","offset","top","bottom","right","left"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeReanimated","height","WINDOW_HEIGHT","width","WINDOW_WIDTH","Dimensions","get","exports","SCREEN_HEIGHT","SCREEN_WIDTH","GESTURE_SOURCE","SHEET_STATE","SCROLLABLE_STATUS","SCROLLABLE_TYPE","ANIMATION_STATUS","ANIMATION_SOURCE","ANIMATION_METHOD","KEYBOARD_STATUS","SNAP_POINT_TYPE","ANIMATION_EASING","Easing","out","exp","ANIMATION_DURATION","ANIMATION_CONFIGS","Platform","select","android","duration","easing","default","damping","stiffness","mass","overshootClamping","restDisplacementThreshold","restSpeedThreshold","SCROLLABLE_DECELERATION_RATE_MAPPER","UNDETERMINED","LOCKED","UNLOCKED","ios","MODAL_STACK_BEHAVIOR","replace","push","switch","KEYBOARD_BEHAVIOR","interactive","extend","fillParent","KEYBOARD_BLUR_BEHAVIOR","none","restore","KEYBOARD_INPUT_MODE","adjustPan","adjustResize","adjustNothing","KEYBOARD_DISMISS_THRESHOLD","INITIAL_LAYOUT_VALUE","INITIAL_CONTAINER_LAYOUT","offset","top","bottom","right","left"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,15 +8,29 @@ var _react = require("react");
|
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _reactNativeReanimated = require("react-native-reanimated");
|
|
10
10
|
var _constants = require("../constants");
|
|
11
|
+
/**
|
|
12
|
+
* Try to use react-native-keyboard-controller's KeyboardEvents if available.
|
|
13
|
+
* It uses WindowInsetsAnimation API on Android, which works reliably
|
|
14
|
+
* in Edge-to-Edge + adjustNothing mode where the standard Keyboard API may not.
|
|
15
|
+
*/
|
|
16
|
+
let KeyboardControllerEvents = null;
|
|
17
|
+
try {
|
|
18
|
+
const rnkc = require('react-native-keyboard-controller');
|
|
19
|
+
if (rnkc?.KeyboardEvents?.addListener) {
|
|
20
|
+
KeyboardControllerEvents = rnkc.KeyboardEvents;
|
|
21
|
+
}
|
|
22
|
+
} catch {}
|
|
23
|
+
const useKeyboardControllerEvents = _reactNative.Platform.OS === 'android' && !!KeyboardControllerEvents;
|
|
11
24
|
const KEYBOARD_EVENT_MAPPER = {
|
|
12
25
|
KEYBOARD_SHOW: _reactNative.Platform.select({
|
|
13
26
|
ios: 'keyboardWillShow',
|
|
14
|
-
|
|
27
|
+
// react-native-keyboard-controller supports keyboardWillShow on Android too
|
|
28
|
+
android: useKeyboardControllerEvents ? 'keyboardWillShow' : 'keyboardDidShow',
|
|
15
29
|
default: ''
|
|
16
30
|
}),
|
|
17
31
|
KEYBOARD_HIDE: _reactNative.Platform.select({
|
|
18
32
|
ios: 'keyboardWillHide',
|
|
19
|
-
android: 'keyboardDidHide',
|
|
33
|
+
android: useKeyboardControllerEvents ? 'keyboardWillHide' : 'keyboardDidHide',
|
|
20
34
|
default: ''
|
|
21
35
|
})
|
|
22
36
|
};
|
|
@@ -85,6 +99,29 @@ const useAnimatedKeyboard = () => {
|
|
|
85
99
|
|
|
86
100
|
//#region effects
|
|
87
101
|
(0, _react.useEffect)(() => {
|
|
102
|
+
/**
|
|
103
|
+
* When react-native-keyboard-controller is available (Android),
|
|
104
|
+
* use its KeyboardEvents which rely on WindowInsetsAnimation API.
|
|
105
|
+
* This works reliably in Edge-to-Edge + adjustNothing mode.
|
|
106
|
+
*/
|
|
107
|
+
if (useKeyboardControllerEvents && KeyboardControllerEvents) {
|
|
108
|
+
const handleOnKeyboardShow = event => {
|
|
109
|
+
(0, _reactNativeReanimated.runOnUI)(handleKeyboardEvent)(_constants.KEYBOARD_STATUS.SHOWN, event.height, event.duration ?? 250, 'keyboard', 0);
|
|
110
|
+
};
|
|
111
|
+
const handleOnKeyboardHide = event => {
|
|
112
|
+
(0, _reactNativeReanimated.runOnUI)(handleKeyboardEvent)(_constants.KEYBOARD_STATUS.HIDDEN, event.height, event.duration ?? 250, 'keyboard');
|
|
113
|
+
};
|
|
114
|
+
const showSubscription = KeyboardControllerEvents.addListener(KEYBOARD_EVENT_MAPPER.KEYBOARD_SHOW, handleOnKeyboardShow);
|
|
115
|
+
const hideSubscription = KeyboardControllerEvents.addListener(KEYBOARD_EVENT_MAPPER.KEYBOARD_HIDE, handleOnKeyboardHide);
|
|
116
|
+
return () => {
|
|
117
|
+
showSubscription.remove();
|
|
118
|
+
hideSubscription.remove();
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Fallback: standard Keyboard API (iOS, or Android without keyboard-controller)
|
|
124
|
+
*/
|
|
88
125
|
const handleOnKeyboardShow = event => {
|
|
89
126
|
(0, _reactNativeReanimated.runOnUI)(handleKeyboardEvent)(_constants.KEYBOARD_STATUS.SHOWN, event.endCoordinates.height, event.duration, event.easing, _constants.SCREEN_HEIGHT - event.endCoordinates.height - event.endCoordinates.screenY);
|
|
90
127
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_reactNativeReanimated","_constants","
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_reactNativeReanimated","_constants","KeyboardControllerEvents","rnkc","KeyboardEvents","addListener","useKeyboardControllerEvents","Platform","OS","KEYBOARD_EVENT_MAPPER","KEYBOARD_SHOW","select","ios","android","default","KEYBOARD_HIDE","INITIAL_STATE","status","KEYBOARD_STATUS","UNDETERMINED","height","heightWithinContainer","easing","duration","useAnimatedKeyboard","textInputNodesRef","useRef","Set","state","useSharedValue","temporaryCachedState","handleKeyboardEvent","useCallback","bottomOffset","currentState","get","SHOWN","target","set","adjustedHeight","useEffect","handleOnKeyboardShow","event","runOnUI","handleOnKeyboardHide","HIDDEN","showSubscription","hideSubscription","remove","endCoordinates","SCREEN_HEIGHT","screenY","Keyboard","useAnimatedReaction","value","result","previous","cachedState","exports"],"sourceRoot":"../../../src","sources":["hooks/useAnimatedKeyboard.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/constants.js
CHANGED
|
@@ -114,7 +114,8 @@ const KEYBOARD_BLUR_BEHAVIOR = {
|
|
|
114
114
|
};
|
|
115
115
|
const KEYBOARD_INPUT_MODE = {
|
|
116
116
|
adjustPan: 'adjustPan',
|
|
117
|
-
adjustResize: 'adjustResize'
|
|
117
|
+
adjustResize: 'adjustResize',
|
|
118
|
+
adjustNothing: 'adjustNothing'
|
|
118
119
|
};
|
|
119
120
|
const KEYBOARD_DISMISS_THRESHOLD = 12.5;
|
|
120
121
|
const INITIAL_LAYOUT_VALUE = -999;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Dimensions","Platform","Easing","height","WINDOW_HEIGHT","width","WINDOW_WIDTH","get","SCREEN_HEIGHT","SCREEN_WIDTH","GESTURE_SOURCE","SHEET_STATE","SCROLLABLE_STATUS","SCROLLABLE_TYPE","ANIMATION_STATUS","ANIMATION_SOURCE","ANIMATION_METHOD","KEYBOARD_STATUS","SNAP_POINT_TYPE","ANIMATION_EASING","out","exp","ANIMATION_DURATION","ANIMATION_CONFIGS","select","android","duration","easing","default","damping","stiffness","mass","overshootClamping","restDisplacementThreshold","restSpeedThreshold","SCROLLABLE_DECELERATION_RATE_MAPPER","UNDETERMINED","LOCKED","UNLOCKED","ios","MODAL_STACK_BEHAVIOR","replace","push","switch","KEYBOARD_BEHAVIOR","interactive","extend","fillParent","KEYBOARD_BLUR_BEHAVIOR","none","restore","KEYBOARD_INPUT_MODE","adjustPan","adjustResize","KEYBOARD_DISMISS_THRESHOLD","INITIAL_LAYOUT_VALUE","INITIAL_CONTAINER_LAYOUT","offset","top","bottom","right","left"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["Dimensions","Platform","Easing","height","WINDOW_HEIGHT","width","WINDOW_WIDTH","get","SCREEN_HEIGHT","SCREEN_WIDTH","GESTURE_SOURCE","SHEET_STATE","SCROLLABLE_STATUS","SCROLLABLE_TYPE","ANIMATION_STATUS","ANIMATION_SOURCE","ANIMATION_METHOD","KEYBOARD_STATUS","SNAP_POINT_TYPE","ANIMATION_EASING","out","exp","ANIMATION_DURATION","ANIMATION_CONFIGS","select","android","duration","easing","default","damping","stiffness","mass","overshootClamping","restDisplacementThreshold","restSpeedThreshold","SCROLLABLE_DECELERATION_RATE_MAPPER","UNDETERMINED","LOCKED","UNLOCKED","ios","MODAL_STACK_BEHAVIOR","replace","push","switch","KEYBOARD_BEHAVIOR","interactive","extend","fillParent","KEYBOARD_BLUR_BEHAVIOR","none","restore","KEYBOARD_INPUT_MODE","adjustPan","adjustResize","adjustNothing","KEYBOARD_DISMISS_THRESHOLD","INITIAL_LAYOUT_VALUE","INITIAL_CONTAINER_LAYOUT","offset","top","bottom","right","left"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,15 +4,29 @@ import { useCallback, useEffect, useRef } from 'react';
|
|
|
4
4
|
import { Keyboard, Platform } from 'react-native';
|
|
5
5
|
import { runOnUI, useAnimatedReaction, useSharedValue } from 'react-native-reanimated';
|
|
6
6
|
import { KEYBOARD_STATUS, SCREEN_HEIGHT } from '../constants';
|
|
7
|
+
/**
|
|
8
|
+
* Try to use react-native-keyboard-controller's KeyboardEvents if available.
|
|
9
|
+
* It uses WindowInsetsAnimation API on Android, which works reliably
|
|
10
|
+
* in Edge-to-Edge + adjustNothing mode where the standard Keyboard API may not.
|
|
11
|
+
*/
|
|
12
|
+
let KeyboardControllerEvents = null;
|
|
13
|
+
try {
|
|
14
|
+
const rnkc = require('react-native-keyboard-controller');
|
|
15
|
+
if (rnkc?.KeyboardEvents?.addListener) {
|
|
16
|
+
KeyboardControllerEvents = rnkc.KeyboardEvents;
|
|
17
|
+
}
|
|
18
|
+
} catch {}
|
|
19
|
+
const useKeyboardControllerEvents = Platform.OS === 'android' && !!KeyboardControllerEvents;
|
|
7
20
|
const KEYBOARD_EVENT_MAPPER = {
|
|
8
21
|
KEYBOARD_SHOW: Platform.select({
|
|
9
22
|
ios: 'keyboardWillShow',
|
|
10
|
-
|
|
23
|
+
// react-native-keyboard-controller supports keyboardWillShow on Android too
|
|
24
|
+
android: useKeyboardControllerEvents ? 'keyboardWillShow' : 'keyboardDidShow',
|
|
11
25
|
default: ''
|
|
12
26
|
}),
|
|
13
27
|
KEYBOARD_HIDE: Platform.select({
|
|
14
28
|
ios: 'keyboardWillHide',
|
|
15
|
-
android: 'keyboardDidHide',
|
|
29
|
+
android: useKeyboardControllerEvents ? 'keyboardWillHide' : 'keyboardDidHide',
|
|
16
30
|
default: ''
|
|
17
31
|
})
|
|
18
32
|
};
|
|
@@ -81,6 +95,29 @@ export const useAnimatedKeyboard = () => {
|
|
|
81
95
|
|
|
82
96
|
//#region effects
|
|
83
97
|
useEffect(() => {
|
|
98
|
+
/**
|
|
99
|
+
* When react-native-keyboard-controller is available (Android),
|
|
100
|
+
* use its KeyboardEvents which rely on WindowInsetsAnimation API.
|
|
101
|
+
* This works reliably in Edge-to-Edge + adjustNothing mode.
|
|
102
|
+
*/
|
|
103
|
+
if (useKeyboardControllerEvents && KeyboardControllerEvents) {
|
|
104
|
+
const handleOnKeyboardShow = event => {
|
|
105
|
+
runOnUI(handleKeyboardEvent)(KEYBOARD_STATUS.SHOWN, event.height, event.duration ?? 250, 'keyboard', 0);
|
|
106
|
+
};
|
|
107
|
+
const handleOnKeyboardHide = event => {
|
|
108
|
+
runOnUI(handleKeyboardEvent)(KEYBOARD_STATUS.HIDDEN, event.height, event.duration ?? 250, 'keyboard');
|
|
109
|
+
};
|
|
110
|
+
const showSubscription = KeyboardControllerEvents.addListener(KEYBOARD_EVENT_MAPPER.KEYBOARD_SHOW, handleOnKeyboardShow);
|
|
111
|
+
const hideSubscription = KeyboardControllerEvents.addListener(KEYBOARD_EVENT_MAPPER.KEYBOARD_HIDE, handleOnKeyboardHide);
|
|
112
|
+
return () => {
|
|
113
|
+
showSubscription.remove();
|
|
114
|
+
hideSubscription.remove();
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Fallback: standard Keyboard API (iOS, or Android without keyboard-controller)
|
|
120
|
+
*/
|
|
84
121
|
const handleOnKeyboardShow = event => {
|
|
85
122
|
runOnUI(handleKeyboardEvent)(KEYBOARD_STATUS.SHOWN, event.endCoordinates.height, event.duration, event.easing, SCREEN_HEIGHT - event.endCoordinates.height - event.endCoordinates.screenY);
|
|
86
123
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useRef","Keyboard","Platform","runOnUI","useAnimatedReaction","useSharedValue","KEYBOARD_STATUS","SCREEN_HEIGHT","KEYBOARD_EVENT_MAPPER","KEYBOARD_SHOW","select","ios","android","default","KEYBOARD_HIDE","INITIAL_STATE","status","UNDETERMINED","height","heightWithinContainer","easing","duration","useAnimatedKeyboard","textInputNodesRef","Set","state","temporaryCachedState","handleKeyboardEvent","bottomOffset","currentState","get","SHOWN","target","set","adjustedHeight","handleOnKeyboardShow","event","
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","Keyboard","Platform","runOnUI","useAnimatedReaction","useSharedValue","KEYBOARD_STATUS","SCREEN_HEIGHT","KeyboardControllerEvents","rnkc","require","KeyboardEvents","addListener","useKeyboardControllerEvents","OS","KEYBOARD_EVENT_MAPPER","KEYBOARD_SHOW","select","ios","android","default","KEYBOARD_HIDE","INITIAL_STATE","status","UNDETERMINED","height","heightWithinContainer","easing","duration","useAnimatedKeyboard","textInputNodesRef","Set","state","temporaryCachedState","handleKeyboardEvent","bottomOffset","currentState","get","SHOWN","target","set","adjustedHeight","handleOnKeyboardShow","event","handleOnKeyboardHide","HIDDEN","showSubscription","hideSubscription","remove","endCoordinates","screenY","value","result","previous","cachedState"],"sourceRoot":"../../../src","sources":["hooks/useAnimatedKeyboard.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -178,8 +178,12 @@ export interface BottomSheetProps
|
|
|
178
178
|
enableBlurKeyboardOnGesture?: boolean;
|
|
179
179
|
/**
|
|
180
180
|
* Defines keyboard input mode for Android only.
|
|
181
|
+
* - `adjustPan`: Android pans the window (library skips its own keyboard handling).
|
|
182
|
+
* - `adjustResize`: Android resizes the container (library skips its own keyboard handling).
|
|
183
|
+
* - `adjustNothing`: Android does nothing; the library handles keyboard offset internally.
|
|
184
|
+
* Use this with Edge-to-Edge mode (RN 0.76+) where adjustResize is ignored.
|
|
181
185
|
* @link {https://developer.android.com/guide/topics/manifest/activity-element#wsoft}
|
|
182
|
-
* @type `adjustPan` | `adjustResize`
|
|
186
|
+
* @type `adjustPan` | `adjustResize` | `adjustNothing`
|
|
183
187
|
* @default `adjustPan`
|
|
184
188
|
*/
|
|
185
189
|
android_keyboardInputMode?: keyof typeof KEYBOARD_INPUT_MODE;
|
|
@@ -80,6 +80,7 @@ declare const KEYBOARD_BLUR_BEHAVIOR: {
|
|
|
80
80
|
declare const KEYBOARD_INPUT_MODE: {
|
|
81
81
|
readonly adjustPan: "adjustPan";
|
|
82
82
|
readonly adjustResize: "adjustResize";
|
|
83
|
+
readonly adjustNothing: "adjustNothing";
|
|
83
84
|
};
|
|
84
85
|
declare const KEYBOARD_DISMISS_THRESHOLD = 12.5;
|
|
85
86
|
declare const INITIAL_LAYOUT_VALUE = -999;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,QAAA,MAAgB,aAAa,UAAS,YAAY,QAA6B,CAAC;AAChF,QAAA,MAAgB,aAAa,UAAS,YAAY,QAA6B,CAAC;AAEhF,aAAK,cAAc;IACjB,YAAY,IAAI;IAChB,UAAU,IAAI;IACd,MAAM,IAAI;IACV,OAAO,IAAI;CACZ;AAED,aAAK,WAAW;IACd,MAAM,IAAI;IACV,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,aAAa,IAAI;IACjB,WAAW,IAAI;CAChB;AAED,aAAK,iBAAiB;IACpB,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,YAAY,IAAI;CACjB;AAED,aAAK,eAAe;IAClB,YAAY,IAAI;IAChB,IAAI,IAAI;IACR,QAAQ,IAAI;IACZ,UAAU,IAAI;IACd,WAAW,IAAI;IACf,eAAe,IAAI;CACpB;AAED,aAAK,gBAAgB;IACnB,YAAY,IAAI;IAChB,OAAO,IAAI;IACX,OAAO,IAAI;IACX,WAAW,IAAI;CAChB;AAED,aAAK,gBAAgB;IACnB,IAAI,IAAI;IACR,KAAK,IAAI;IACT,OAAO,IAAI;IACX,IAAI,IAAI;IACR,gBAAgB,IAAI;IACpB,iBAAiB,IAAI;IACrB,QAAQ,IAAI;CACb;AAED,aAAK,gBAAgB;IACnB,MAAM,IAAI;IACV,MAAM,IAAI;CACX;AAED,aAAK,eAAe;IAClB,YAAY,IAAI;IAChB,KAAK,IAAI;IACT,MAAM,IAAI;CACX;AAED,aAAK,eAAe;IAClB,QAAQ,IAAI;IACZ,OAAO,IAAI;CACZ;AAED,QAAA,MAAM,gBAAgB,kDAAyB,CAAC;AAChD,QAAA,MAAM,kBAAkB,MAAM,CAAC;AAE/B,QAAA,MAAM,iBAAiB,6BAarB,CAAC;AAEH,QAAA,MAAM,mCAAmC;;;;CAQxC,CAAC;AAEF,QAAA,MAAM,oBAAoB;;;;CAIzB,CAAC;AAEF,QAAA,MAAM,iBAAiB;;;;CAIb,CAAC;AAEX,QAAA,MAAM,sBAAsB;;;CAGlB,CAAC;AAEX,QAAA,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,QAAA,MAAgB,aAAa,UAAS,YAAY,QAA6B,CAAC;AAChF,QAAA,MAAgB,aAAa,UAAS,YAAY,QAA6B,CAAC;AAEhF,aAAK,cAAc;IACjB,YAAY,IAAI;IAChB,UAAU,IAAI;IACd,MAAM,IAAI;IACV,OAAO,IAAI;CACZ;AAED,aAAK,WAAW;IACd,MAAM,IAAI;IACV,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,aAAa,IAAI;IACjB,WAAW,IAAI;CAChB;AAED,aAAK,iBAAiB;IACpB,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,YAAY,IAAI;CACjB;AAED,aAAK,eAAe;IAClB,YAAY,IAAI;IAChB,IAAI,IAAI;IACR,QAAQ,IAAI;IACZ,UAAU,IAAI;IACd,WAAW,IAAI;IACf,eAAe,IAAI;CACpB;AAED,aAAK,gBAAgB;IACnB,YAAY,IAAI;IAChB,OAAO,IAAI;IACX,OAAO,IAAI;IACX,WAAW,IAAI;CAChB;AAED,aAAK,gBAAgB;IACnB,IAAI,IAAI;IACR,KAAK,IAAI;IACT,OAAO,IAAI;IACX,IAAI,IAAI;IACR,gBAAgB,IAAI;IACpB,iBAAiB,IAAI;IACrB,QAAQ,IAAI;CACb;AAED,aAAK,gBAAgB;IACnB,MAAM,IAAI;IACV,MAAM,IAAI;CACX;AAED,aAAK,eAAe;IAClB,YAAY,IAAI;IAChB,KAAK,IAAI;IACT,MAAM,IAAI;CACX;AAED,aAAK,eAAe;IAClB,QAAQ,IAAI;IACZ,OAAO,IAAI;CACZ;AAED,QAAA,MAAM,gBAAgB,kDAAyB,CAAC;AAChD,QAAA,MAAM,kBAAkB,MAAM,CAAC;AAE/B,QAAA,MAAM,iBAAiB,6BAarB,CAAC;AAEH,QAAA,MAAM,mCAAmC;;;;CAQxC,CAAC;AAEF,QAAA,MAAM,oBAAoB;;;;CAIzB,CAAC;AAEF,QAAA,MAAM,iBAAiB;;;;CAIb,CAAC;AAEX,QAAA,MAAM,sBAAsB;;;CAGlB,CAAC;AAEX,QAAA,MAAM,mBAAmB;;;;CAIf,CAAC;AAEX,QAAA,MAAM,0BAA0B,OAAO,CAAC;AAExC,QAAA,MAAM,oBAAoB,OAAO,CAAC;AAClC,QAAA,MAAM,wBAAwB;;;;;;;;CAQ7B,CAAC;AAEF,OAAO,EACL,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,mCAAmC,EACnC,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,0BAA0B,EAC1B,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,GACzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAnimatedKeyboard.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAnimatedKeyboard.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"useAnimatedKeyboard.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAnimatedKeyboard.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA0C9C,eAAO,MAAM,mBAAmB;;;CAkL/B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mustmove/bottom-sheet",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "A performant interactive bottom sheet with fully configurable options 🚀",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -72,7 +72,8 @@
|
|
|
72
72
|
"react": "*",
|
|
73
73
|
"react-native": "*",
|
|
74
74
|
"react-native-gesture-handler": ">=2.16.1",
|
|
75
|
-
"react-native-reanimated": ">=3.16.0 || >=4.0.0-"
|
|
75
|
+
"react-native-reanimated": ">=3.16.0 || >=4.0.0-",
|
|
76
|
+
"react-native-keyboard-controller": ">=1.0.0"
|
|
76
77
|
},
|
|
77
78
|
"peerDependenciesMeta": {
|
|
78
79
|
"@types/react-native": {
|
|
@@ -80,6 +81,9 @@
|
|
|
80
81
|
},
|
|
81
82
|
"@types/react": {
|
|
82
83
|
"optional": true
|
|
84
|
+
},
|
|
85
|
+
"react-native-keyboard-controller": {
|
|
86
|
+
"optional": true
|
|
83
87
|
}
|
|
84
88
|
},
|
|
85
89
|
"react-native-builder-bob": {
|
|
@@ -178,8 +178,12 @@ export interface BottomSheetProps
|
|
|
178
178
|
enableBlurKeyboardOnGesture?: boolean;
|
|
179
179
|
/**
|
|
180
180
|
* Defines keyboard input mode for Android only.
|
|
181
|
+
* - `adjustPan`: Android pans the window (library skips its own keyboard handling).
|
|
182
|
+
* - `adjustResize`: Android resizes the container (library skips its own keyboard handling).
|
|
183
|
+
* - `adjustNothing`: Android does nothing; the library handles keyboard offset internally.
|
|
184
|
+
* Use this with Edge-to-Edge mode (RN 0.76+) where adjustResize is ignored.
|
|
181
185
|
* @link {https://developer.android.com/guide/topics/manifest/activity-element#wsoft}
|
|
182
|
-
* @type `adjustPan` | `adjustResize`
|
|
186
|
+
* @type `adjustPan` | `adjustResize` | `adjustNothing`
|
|
183
187
|
* @default `adjustPan`
|
|
184
188
|
*/
|
|
185
189
|
android_keyboardInputMode?: keyof typeof KEYBOARD_INPUT_MODE;
|
package/src/constants.ts
CHANGED
|
@@ -14,15 +14,34 @@ import {
|
|
|
14
14
|
import { KEYBOARD_STATUS, SCREEN_HEIGHT } from '../constants';
|
|
15
15
|
import type { KeyboardState } from '../types';
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Try to use react-native-keyboard-controller's KeyboardEvents if available.
|
|
19
|
+
* It uses WindowInsetsAnimation API on Android, which works reliably
|
|
20
|
+
* in Edge-to-Edge + adjustNothing mode where the standard Keyboard API may not.
|
|
21
|
+
*/
|
|
22
|
+
let KeyboardControllerEvents: {
|
|
23
|
+
addListener: (name: string, cb: (e: any) => any) => { remove: () => void };
|
|
24
|
+
} | null = null;
|
|
25
|
+
|
|
26
|
+
try {
|
|
27
|
+
const rnkc = require('react-native-keyboard-controller');
|
|
28
|
+
if (rnkc?.KeyboardEvents?.addListener) {
|
|
29
|
+
KeyboardControllerEvents = rnkc.KeyboardEvents;
|
|
30
|
+
}
|
|
31
|
+
} catch {}
|
|
32
|
+
|
|
33
|
+
const useKeyboardControllerEvents = Platform.OS === 'android' && !!KeyboardControllerEvents;
|
|
34
|
+
|
|
17
35
|
const KEYBOARD_EVENT_MAPPER = {
|
|
18
36
|
KEYBOARD_SHOW: Platform.select({
|
|
19
37
|
ios: 'keyboardWillShow',
|
|
20
|
-
|
|
38
|
+
// react-native-keyboard-controller supports keyboardWillShow on Android too
|
|
39
|
+
android: useKeyboardControllerEvents ? 'keyboardWillShow' : 'keyboardDidShow',
|
|
21
40
|
default: '',
|
|
22
41
|
}) as KeyboardEventName,
|
|
23
42
|
KEYBOARD_HIDE: Platform.select({
|
|
24
43
|
ios: 'keyboardWillHide',
|
|
25
|
-
android: 'keyboardDidHide',
|
|
44
|
+
android: useKeyboardControllerEvents ? 'keyboardWillHide' : 'keyboardDidHide',
|
|
26
45
|
default: '',
|
|
27
46
|
}) as KeyboardEventName,
|
|
28
47
|
};
|
|
@@ -106,6 +125,48 @@ export const useAnimatedKeyboard = () => {
|
|
|
106
125
|
|
|
107
126
|
//#region effects
|
|
108
127
|
useEffect(() => {
|
|
128
|
+
/**
|
|
129
|
+
* When react-native-keyboard-controller is available (Android),
|
|
130
|
+
* use its KeyboardEvents which rely on WindowInsetsAnimation API.
|
|
131
|
+
* This works reliably in Edge-to-Edge + adjustNothing mode.
|
|
132
|
+
*/
|
|
133
|
+
if (useKeyboardControllerEvents && KeyboardControllerEvents) {
|
|
134
|
+
const handleOnKeyboardShow = (event: any) => {
|
|
135
|
+
runOnUI(handleKeyboardEvent)(
|
|
136
|
+
KEYBOARD_STATUS.SHOWN,
|
|
137
|
+
event.height,
|
|
138
|
+
event.duration ?? 250,
|
|
139
|
+
'keyboard' as KeyboardEventEasing,
|
|
140
|
+
0
|
|
141
|
+
);
|
|
142
|
+
};
|
|
143
|
+
const handleOnKeyboardHide = (event: any) => {
|
|
144
|
+
runOnUI(handleKeyboardEvent)(
|
|
145
|
+
KEYBOARD_STATUS.HIDDEN,
|
|
146
|
+
event.height,
|
|
147
|
+
event.duration ?? 250,
|
|
148
|
+
'keyboard' as KeyboardEventEasing
|
|
149
|
+
);
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
const showSubscription = KeyboardControllerEvents.addListener(
|
|
153
|
+
KEYBOARD_EVENT_MAPPER.KEYBOARD_SHOW,
|
|
154
|
+
handleOnKeyboardShow
|
|
155
|
+
);
|
|
156
|
+
const hideSubscription = KeyboardControllerEvents.addListener(
|
|
157
|
+
KEYBOARD_EVENT_MAPPER.KEYBOARD_HIDE,
|
|
158
|
+
handleOnKeyboardHide
|
|
159
|
+
);
|
|
160
|
+
|
|
161
|
+
return () => {
|
|
162
|
+
showSubscription.remove();
|
|
163
|
+
hideSubscription.remove();
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Fallback: standard Keyboard API (iOS, or Android without keyboard-controller)
|
|
169
|
+
*/
|
|
109
170
|
const handleOnKeyboardShow = (event: KeyboardEvent) => {
|
|
110
171
|
runOnUI(handleKeyboardEvent)(
|
|
111
172
|
KEYBOARD_STATUS.SHOWN,
|