@lodev09/react-native-true-sheet 3.9.0-beta.3 → 3.9.0-beta.5

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.
Files changed (45) hide show
  1. package/README.md +2 -2
  2. package/android/build.gradle +2 -1
  3. package/android/src/main/java/com/lodev09/truesheet/TrueSheetContainerView.kt +5 -0
  4. package/android/src/main/java/com/lodev09/truesheet/TrueSheetContentView.kt +21 -2
  5. package/android/src/main/java/com/lodev09/truesheet/TrueSheetView.kt +61 -28
  6. package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewController.kt +53 -38
  7. package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetCoordinatorLayout.kt +30 -2
  8. package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetKeyboardObserver.kt +16 -9
  9. package/android/src/main/java/com/lodev09/truesheet/utils/ViewUtils.kt +1 -0
  10. package/ios/TrueSheetView.mm +1 -1
  11. package/ios/TrueSheetViewController.mm +26 -14
  12. package/ios/core/RNScreensEventObserver.mm +5 -1
  13. package/lib/module/TrueSheet.js +17 -7
  14. package/lib/module/TrueSheet.js.map +1 -1
  15. package/lib/module/TrueSheet.web.js +34 -28
  16. package/lib/module/TrueSheet.web.js.map +1 -1
  17. package/lib/module/navigation/screen/ReanimatedTrueSheetScreen.js +1 -1
  18. package/lib/module/navigation/screen/ReanimatedTrueSheetScreen.js.map +1 -1
  19. package/lib/module/navigation/screen/TrueSheetScreen.js +1 -1
  20. package/lib/module/navigation/screen/TrueSheetScreen.js.map +1 -1
  21. package/lib/module/navigation/screen/useSheetScreenState.js +21 -21
  22. package/lib/module/navigation/screen/useSheetScreenState.js.map +1 -1
  23. package/lib/module/reanimated/ReanimatedTrueSheetProvider.js +3 -3
  24. package/lib/module/reanimated/ReanimatedTrueSheetProvider.js.map +1 -1
  25. package/lib/typescript/src/TrueSheet.d.ts +2 -0
  26. package/lib/typescript/src/TrueSheet.d.ts.map +1 -1
  27. package/lib/typescript/src/TrueSheet.types.d.ts +14 -0
  28. package/lib/typescript/src/TrueSheet.types.d.ts.map +1 -1
  29. package/lib/typescript/src/TrueSheet.web.d.ts.map +1 -1
  30. package/lib/typescript/src/navigation/screen/types.d.ts +3 -5
  31. package/lib/typescript/src/navigation/screen/types.d.ts.map +1 -1
  32. package/lib/typescript/src/navigation/screen/useSheetScreenState.d.ts.map +1 -1
  33. package/lib/typescript/src/navigation/types.d.ts +3 -2
  34. package/lib/typescript/src/navigation/types.d.ts.map +1 -1
  35. package/lib/typescript/src/reanimated/ReanimatedTrueSheetProvider.d.ts.map +1 -1
  36. package/package.json +1 -1
  37. package/src/TrueSheet.tsx +22 -7
  38. package/src/TrueSheet.types.ts +16 -0
  39. package/src/TrueSheet.web.tsx +40 -31
  40. package/src/navigation/screen/ReanimatedTrueSheetScreen.tsx +1 -1
  41. package/src/navigation/screen/TrueSheetScreen.tsx +1 -1
  42. package/src/navigation/screen/types.ts +8 -6
  43. package/src/navigation/screen/useSheetScreenState.ts +27 -20
  44. package/src/navigation/types.ts +17 -6
  45. package/src/reanimated/ReanimatedTrueSheetProvider.tsx +5 -6
@@ -1 +1 @@
1
- {"version":3,"file":"useSheetScreenState.d.ts","sourceRoot":"","sources":["../../../../../src/navigation/screen/useSheetScreenState.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EACV,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,KAAK,MAAM,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAEjD,UAAU,wBAAwB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,mBAAmB,GAAI,OAAO,wBAAwB;;;sBAwBzD,MAAM,2BAA2B,QACjC,sBAAsB,GAAG,0BAA0B,GAAG,SAAS;;2BAqBhD,gBAAgB;0BACjB,eAAe;4BACb,gBAAgB;;4BAEhB,iBAAiB;yBACpB,cAAc;0BACb,eAAe;uBAClB,YAAY;8BACL,mBAAmB;0BACvB,cAAc;yBACf,aAAa;yBACb,aAAa;wBACd,YAAY;;CAGjC,CAAC"}
1
+ {"version":3,"file":"useSheetScreenState.d.ts","sourceRoot":"","sources":["../../../../../src/navigation/screen/useSheetScreenState.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EACV,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,KAAK,MAAM,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAEjD,UAAU,wBAAwB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,mBAAmB,GAAI,OAAO,wBAAwB;;;sBAyBvD,MAAM,2BAA2B,QACjC,sBAAsB,GAAG,0BAA0B,GAAG,SAAS;;2BAmBlD,gBAAgB;0BACjB,eAAe;4BACb,gBAAgB;;4BAEhB,iBAAiB;yBACpB,cAAc;0BACb,eAAe;uBAClB,YAAY;8BACL,mBAAmB;0BACvB,cAAc;yBACf,aAAa;yBACb,aAAa;wBACd,YAAY;;CAWjC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { DefaultNavigatorOptions, Descriptor, NavigationHelpers, NavigationProp, NavigationState, ParamListBase, RouteProp, StackActionHelpers } from '@react-navigation/native';
2
2
  import type { DetentInfoEventPayload, PositionChangeEventPayload, TrueSheetProps } from '../TrueSheet.types';
3
- import type { PositionChangeHandler } from './screen/types';
3
+ export type PositionChangeHandler = (payload: PositionChangeEventPayload) => void;
4
4
  export type TrueSheetNavigationEventMap = {
5
5
  /**
6
6
  * Event fired when the sheet is about to be presented.
@@ -101,10 +101,11 @@ export type TrueSheetScreenProps<ParamList extends ParamListBase, RouteName exte
101
101
  route: RouteProp<ParamList, RouteName>;
102
102
  };
103
103
  export type TrueSheetNavigationHelpers = NavigationHelpers<ParamListBase, TrueSheetNavigationEventMap>;
104
+ export type TrueSheetNavigationSheetProps = Pick<TrueSheetProps, 'detents' | 'backgroundColor' | 'cornerRadius' | 'dismissible' | 'draggable' | 'grabber' | 'grabberOptions' | 'dimmed' | 'dimmedDetentIndex' | 'backgroundBlur' | 'blurOptions' | 'maxContentHeight' | 'maxContentWidth' | 'scrollable' | 'pageSizing' | 'header' | 'headerStyle' | 'footer' | 'footerStyle' | 'scrollableOptions' | 'insetAdjustment' | 'anchor' | 'anchorOffset' | 'elevation' | 'detached' | 'detachedOffset' | 'stackBehavior'>;
104
105
  /**
105
106
  * Screen options for TrueSheet navigator screens.
106
107
  */
107
- export type TrueSheetNavigationOptions = Pick<TrueSheetProps, 'detents' | 'backgroundColor' | 'cornerRadius' | 'dismissible' | 'draggable' | 'grabber' | 'grabberOptions' | 'dimmed' | 'dimmedDetentIndex' | 'backgroundBlur' | 'blurOptions' | 'maxContentHeight' | 'maxContentWidth' | 'scrollable' | 'pageSizing' | 'header' | 'footer' | 'insetAdjustment' | 'stackBehavior'> & {
108
+ export type TrueSheetNavigationOptions = TrueSheetNavigationSheetProps & {
108
109
  /**
109
110
  * The detent index to present at.
110
111
  * @default 0
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/navigation/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/navigation/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,aAAa,EACb,SAAS,EACT,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EACV,sBAAsB,EACtB,0BAA0B,EAC1B,cAAc,EACf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,0BAA0B,KAAK,IAAI,CAAC;AAElF,MAAM,MAAM,2BAA2B,GAAG;IACxC;;OAEG;IACH,gBAAgB,EAAE;QAAE,IAAI,EAAE,sBAAsB,CAAA;KAAE,CAAC;IACnD;;OAEG;IACH,eAAe,EAAE;QAAE,IAAI,EAAE,sBAAsB,CAAA;KAAE,CAAC;IAClD;;OAEG;IACH,gBAAgB,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IACtC;;OAEG;IACH,eAAe,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IACrC;;OAEG;IACH,iBAAiB,EAAE;QAAE,IAAI,EAAE,sBAAsB,CAAA;KAAE,CAAC;IACpD;;OAEG;IACH,cAAc,EAAE;QAAE,IAAI,EAAE,sBAAsB,CAAA;KAAE,CAAC;IACjD;;OAEG;IACH,eAAe,EAAE;QAAE,IAAI,EAAE,sBAAsB,CAAA;KAAE,CAAC;IAClD;;OAEG;IACH,YAAY,EAAE;QAAE,IAAI,EAAE,sBAAsB,CAAA;KAAE,CAAC;IAC/C;;OAEG;IACH,mBAAmB,EAAE;QAAE,IAAI,EAAE,0BAA0B,CAAA;KAAE,CAAC;IAC1D;;OAEG;IACH,cAAc,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IACpC;;OAEG;IACH,aAAa,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IACnC;;OAEG;IACH,aAAa,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IACnC;;OAEG;IACH,YAAY,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,SAAS,SAAS,aAAa,IAAI,IAAI,CAC1E,eAAe,CAAC,SAAS,CAAC,EAC1B,QAAQ,CACT,GAAG;IACF,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG;QACtD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC,EAAE,CAAC;CACN,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAAC,SAAS,SAAS,aAAa,IAChE,kBAAkB,CAAC,SAAS,CAAC,GAAG;IAC9B;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEJ,MAAM,MAAM,uBAAuB,CACjC,SAAS,SAAS,aAAa,EAC/B,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,EAC1C,WAAW,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,IAChD,cAAc,CAChB,SAAS,EACT,SAAS,EACT,WAAW,EACX,wBAAwB,CAAC,SAAS,CAAC,EACnC,0BAA0B,EAC1B,2BAA2B,CAC5B,GACC,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAEpC,MAAM,MAAM,oBAAoB,CAC9B,SAAS,SAAS,aAAa,EAC/B,SAAS,SAAS,MAAM,SAAS,GAAG,MAAM,EAC1C,WAAW,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,IAChD;IACF,UAAU,EAAE,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACvE,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,iBAAiB,CACxD,aAAa,EACb,2BAA2B,CAC5B,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,cAAc,EACZ,SAAS,GACT,iBAAiB,GACjB,cAAc,GACd,aAAa,GACb,WAAW,GACX,SAAS,GACT,gBAAgB,GAChB,QAAQ,GACR,mBAAmB,GACnB,gBAAgB,GAChB,aAAa,GACb,kBAAkB,GAClB,iBAAiB,GACjB,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,aAAa,GACb,QAAQ,GACR,aAAa,GACb,mBAAmB,GACnB,iBAAiB,GACjB,QAAQ,GACR,cAAc,GACd,WAAW,GACX,UAAU,GACV,gBAAgB,GAChB,eAAe,CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,6BAA6B,GAAG;IACvE;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;;;;;;;;;OAiBG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,uBAAuB,CAC3D,aAAa,EACb,MAAM,GAAG,SAAS,EAClB,wBAAwB,CAAC,aAAa,CAAC,EACvC,0BAA0B,EAC1B,2BAA2B,EAC3B,OAAO,CACR,GAAG;IACF;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAC1C,0BAA0B,EAC1B,uBAAuB,CAAC,aAAa,CAAC,EACtC,SAAS,CAAC,aAAa,CAAC,CACzB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC;CACpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReanimatedTrueSheetProvider.d.ts","sourceRoot":"","sources":["../../../../src/reanimated/ReanimatedTrueSheetProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElE,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3E,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC;;;OAGG;IACH,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC;;;OAGG;IACH,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACrC;AAID,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,2BAA2B,GAAI,cAAc,gCAAgC,4CAiBzF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,sBAAsB,QAAO,+BAWzC,CAAC"}
1
+ {"version":3,"file":"ReanimatedTrueSheetProvider.d.ts","sourceRoot":"","sources":["../../../../src/reanimated/ReanimatedTrueSheetProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3E,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3E,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC;;;OAGG;IACH,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC;;;OAGG;IACH,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACrC;AAID,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,2BAA2B,GAAI,cAAc,gCAAgC,4CAgBzF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,sBAAsB,QAAO,+BAWzC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lodev09/react-native-true-sheet",
3
- "version": "3.9.0-beta.3",
3
+ "version": "3.9.0-beta.5",
4
4
  "description": "The true native bottom sheet experience for your React Native Apps.",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/module/index.js",
package/src/TrueSheet.tsx CHANGED
@@ -58,6 +58,9 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
58
58
 
59
59
  private readonly nativeRef: RefObject<NativeRef | null>;
60
60
 
61
+ private cachedGrabberOptions: TrueSheetProps['grabberOptions'] | undefined;
62
+ private resolvedGrabberOptions: Record<string, unknown> | undefined;
63
+
61
64
  /**
62
65
  * Map of sheet names against their instances.
63
66
  */
@@ -436,21 +439,27 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
436
439
  return Math.min(1, detent);
437
440
  });
438
441
 
442
+ // Cache grabberOptions to avoid creating a new object every render
443
+ if (grabberOptions !== this.cachedGrabberOptions) {
444
+ this.cachedGrabberOptions = grabberOptions;
445
+ this.resolvedGrabberOptions = {
446
+ ...grabberOptions,
447
+ color: processColor(grabberOptions?.color),
448
+ };
449
+ }
450
+
439
451
  return (
440
452
  <TrueSheetViewNativeComponent
441
453
  {...rest}
442
454
  ref={this.nativeRef}
443
- style={[StyleSheet.absoluteFill, styles.sheetView]}
455
+ style={styles.sheetView}
444
456
  detents={resolvedDetents}
445
457
  backgroundBlur={backgroundBlur}
446
458
  blurOptions={blurOptions}
447
459
  backgroundColor={backgroundColor}
448
460
  cornerRadius={cornerRadius}
449
461
  grabber={grabber}
450
- grabberOptions={{
451
- ...grabberOptions,
452
- color: processColor(grabberOptions?.color),
453
- }}
462
+ grabberOptions={this.resolvedGrabberOptions}
454
463
  dimmed={dimmed}
455
464
  dimmedDetentIndex={dimmedDetentIndex}
456
465
  initialDetentIndex={initialDetentIndex}
@@ -482,14 +491,16 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
482
491
  onBackPress={this.onBackPress}
483
492
  >
484
493
  {this.state.shouldRenderNativeView && (
485
- <TrueSheetContainerViewNativeComponent style={scrollable && StyleSheet.absoluteFill}>
494
+ <TrueSheetContainerViewNativeComponent
495
+ style={scrollable ? styles.scrollableContainer : undefined}
496
+ >
486
497
  {header && (
487
498
  <TrueSheetHeaderViewNativeComponent style={[styles.header, headerStyle]}>
488
499
  {isValidElement(header) ? header : createElement(header)}
489
500
  </TrueSheetHeaderViewNativeComponent>
490
501
  )}
491
502
  <TrueSheetContentViewNativeComponent
492
- style={[style, scrollable && styles.scrollableContent]}
503
+ style={scrollable ? [style, styles.scrollableContent] : style}
493
504
  >
494
505
  {children}
495
506
  </TrueSheetContentViewNativeComponent>
@@ -507,9 +518,13 @@ export class TrueSheet extends PureComponent<TrueSheetProps, TrueSheetState> {
507
518
 
508
519
  const styles = StyleSheet.create({
509
520
  sheetView: {
521
+ ...StyleSheet.absoluteFill,
510
522
  zIndex: -9999,
511
523
  pointerEvents: 'box-none',
512
524
  },
525
+ scrollableContainer: {
526
+ ...StyleSheet.absoluteFill,
527
+ },
513
528
  scrollableContent: {
514
529
  flex: 1,
515
530
  },
@@ -442,6 +442,22 @@ export interface TrueSheetProps extends ViewProps {
442
442
  */
443
443
  scrollableOptions?: ScrollableOptions;
444
444
 
445
+ /**
446
+ * Renders the sheet as a detached floating card, not attached to the bottom edge.
447
+ *
448
+ * @platform web
449
+ * @default false
450
+ */
451
+ detached?: boolean;
452
+
453
+ /**
454
+ * The offset from the bottom edge when [`detached`](#detached) is enabled.
455
+ *
456
+ * @platform web
457
+ * @default 16
458
+ */
459
+ detachedOffset?: number;
460
+
445
461
  /**
446
462
  * Defines the stack behavior when a modal is presented.
447
463
  * - `push`: Mount the modal on top of the current one.
@@ -19,9 +19,8 @@ import BottomSheet, {
19
19
  type BottomSheetBackdropProps,
20
20
  BottomSheetFooter,
21
21
  type BottomSheetFooterProps,
22
- BottomSheetHandle,
23
- type BottomSheetHandleProps,
24
22
  BottomSheetModal,
23
+ type BottomSheetProps,
25
24
  BottomSheetView,
26
25
  type SNAP_POINT_TYPE,
27
26
  } from '@gorhom/bottom-sheet';
@@ -54,7 +53,10 @@ const DEFAULT_MAX_WIDTH = 640;
54
53
  const COLOR_SURFACE_CONTAINER_LOW_LIGHT = '#F7F2FA';
55
54
  const COLOR_SURFACE_CONTAINER_LOW_DARK = '#1D1B20';
56
55
 
57
- const DEFAULT_GRABBER_COLOR = 'rgba(0, 0, 0, 0.3)';
56
+ const DEFAULT_ANCHOR_OFFSET = 16;
57
+ const DEFAULT_DETACHED_OFFSET = 16;
58
+ const DEFAULT_GRABBER_COLOR_LIGHT = 'rgba(0, 0, 0, 0.3)';
59
+ const DEFAULT_GRABBER_COLOR_DARK = 'rgba(255, 255, 255, 0.3)';
58
60
  const DEFAULT_GRABBER_WIDTH = 32;
59
61
  const DEFAULT_GRABBER_HEIGHT = 4;
60
62
 
@@ -101,7 +103,7 @@ const TrueSheetComponent = forwardRef<TrueSheetRefMethods, TrueSheetProps>((prop
101
103
  maxContentHeight,
102
104
  maxContentWidth,
103
105
  anchor = 'center',
104
- anchorOffset = 16,
106
+ anchorOffset = DEFAULT_ANCHOR_OFFSET,
105
107
  header,
106
108
  headerStyle,
107
109
  footer,
@@ -120,6 +122,8 @@ const TrueSheetComponent = forwardRef<TrueSheetRefMethods, TrueSheetProps>((prop
120
122
  onDidFocus,
121
123
  onWillBlur,
122
124
  onDidBlur,
125
+ detached,
126
+ detachedOffset = DEFAULT_DETACHED_OFFSET,
123
127
  stackBehavior = 'switch',
124
128
  style,
125
129
  } = props;
@@ -344,29 +348,27 @@ const TrueSheetComponent = forwardRef<TrueSheetRefMethods, TrueSheetProps>((prop
344
348
  [dimmed, dimmedDetentIndex, dismissible]
345
349
  );
346
350
 
347
- const handleComponent = useCallback(
348
- (handleProps: BottomSheetHandleProps) => {
349
- if (!grabber) {
350
- return null;
351
- }
351
+ const indicatorHeight = grabberOptions?.height ?? DEFAULT_GRABBER_HEIGHT;
352
352
 
353
- const height = grabberOptions?.height ?? DEFAULT_GRABBER_HEIGHT;
354
- const borderRadius = grabberOptions?.cornerRadius ?? height / 2;
353
+ const handleStyle = useMemo(
354
+ () =>
355
+ grabber
356
+ ? [styles.handle, { paddingTop: grabberOptions?.topMargin }]
357
+ : { display: 'none' as const },
358
+ [grabber, grabberOptions?.topMargin]
359
+ );
355
360
 
356
- return (
357
- <BottomSheetHandle
358
- {...handleProps}
359
- style={[styles.handle, { paddingTop: grabberOptions?.topMargin }]}
360
- indicatorStyle={{
361
- height,
362
- borderRadius,
363
- width: grabberOptions?.width ?? DEFAULT_GRABBER_WIDTH,
364
- backgroundColor: grabberOptions?.color ?? DEFAULT_GRABBER_COLOR,
365
- }}
366
- />
367
- );
368
- },
369
- [grabber, grabberOptions]
361
+ const defaultGrabberColor =
362
+ colorScheme === 'dark' ? DEFAULT_GRABBER_COLOR_DARK : DEFAULT_GRABBER_COLOR_LIGHT;
363
+
364
+ const handleIndicatorStyle = useMemo(
365
+ () => ({
366
+ height: indicatorHeight,
367
+ borderRadius: grabberOptions?.cornerRadius ?? indicatorHeight / 2,
368
+ width: grabberOptions?.width ?? DEFAULT_GRABBER_WIDTH,
369
+ backgroundColor: grabberOptions?.color ?? defaultGrabberColor,
370
+ }),
371
+ [grabberOptions, indicatorHeight, defaultGrabberColor]
370
372
  );
371
373
 
372
374
  const footerComponent = useMemo(
@@ -459,33 +461,40 @@ const TrueSheetComponent = forwardRef<TrueSheetRefMethods, TrueSheetProps>((prop
459
461
  </ContainerComponent>
460
462
  );
461
463
 
462
- const sharedProps = {
464
+ const sharedProps: Omit<BottomSheetProps, 'children'> = {
463
465
  style: [
464
466
  styles.root,
465
467
  {
466
- backgroundColor,
467
- borderTopLeftRadius: cornerRadius,
468
- borderTopRightRadius: cornerRadius,
469
468
  boxShadow: getElevationShadow(elevation),
470
469
  maxWidth: isLandscapeOrTablet ? (maxContentWidth ?? DEFAULT_MAX_WIDTH) : undefined,
471
470
  marginLeft: isLandscapeOrTablet ? (anchor === 'left' ? anchorOffset : 'auto') : undefined,
472
471
  marginRight: isLandscapeOrTablet ? (anchor === 'right' ? anchorOffset : 'auto') : undefined,
472
+ marginHorizontal: detached ? anchorOffset : undefined,
473
473
  },
474
474
  ],
475
+ backgroundStyle: {
476
+ backgroundColor,
477
+ borderTopLeftRadius: cornerRadius,
478
+ borderTopRightRadius: cornerRadius,
479
+ borderBottomLeftRadius: detached ? cornerRadius : 0,
480
+ borderBottomRightRadius: detached ? cornerRadius : 0,
481
+ },
475
482
  index: snapIndex,
476
483
  enablePanDownToClose: dismissible,
477
484
  enableContentPanningGesture: draggable,
478
485
  enableHandlePanningGesture: draggable,
479
486
  animatedPosition,
480
487
  animatedIndex,
481
- handleComponent,
488
+ handleStyle,
489
+ handleIndicatorStyle,
482
490
  onChange: handleChange,
483
491
  onAnimate: handleAnimate,
484
492
  enableDynamicSizing: hasAutoDetent,
485
493
  maxDynamicContentSize: maxContentHeight,
486
494
  snapPoints: snapPoints.length > 0 ? snapPoints : undefined,
495
+ detached,
496
+ bottomInset: detached ? detachedOffset : undefined,
487
497
  backdropComponent,
488
- backgroundComponent: null,
489
498
  footerComponent,
490
499
  };
491
500
 
@@ -52,8 +52,8 @@ export const ReanimatedTrueSheetScreen = ({
52
52
  initialDetentIndex={initialDetentIndex}
53
53
  detents={detents}
54
54
  onPositionChange={reanimatedPositionChangeHandler}
55
- {...eventHandlers}
56
55
  {...sheetProps}
56
+ {...eventHandlers}
57
57
  >
58
58
  {children}
59
59
  </AnimatedTrueSheet>
@@ -45,8 +45,8 @@ export const TrueSheetScreen = ({
45
45
  initialDetentIndex={initialDetentIndex}
46
46
  detents={detents}
47
47
  onPositionChange={handlePositionChange}
48
- {...eventHandlers}
49
48
  {...sheetProps}
49
+ {...eventHandlers}
50
50
  >
51
51
  {children}
52
52
  </TrueSheet>
@@ -1,11 +1,14 @@
1
1
  import type { ParamListBase } from '@react-navigation/native';
2
2
 
3
- import type { PositionChangeEventPayload, TrueSheetProps } from '../../TrueSheet.types';
4
- import type { TrueSheetNavigationHelpers, TrueSheetNavigationProp } from '../types';
3
+ import type { TrueSheetProps } from '../../TrueSheet.types';
4
+ import type {
5
+ PositionChangeHandler,
6
+ TrueSheetNavigationHelpers,
7
+ TrueSheetNavigationProp,
8
+ TrueSheetNavigationSheetProps,
9
+ } from '../types';
5
10
 
6
- export type PositionChangeHandler = (payload: PositionChangeEventPayload) => void;
7
-
8
- export interface TrueSheetScreenProps {
11
+ export interface TrueSheetScreenProps extends TrueSheetNavigationSheetProps {
9
12
  detentIndex: number;
10
13
  resizeKey?: number;
11
14
  navigation: TrueSheetNavigationProp<ParamListBase>;
@@ -15,5 +18,4 @@ export interface TrueSheetScreenProps {
15
18
  detents: TrueSheetProps['detents'];
16
19
  children: React.ReactNode;
17
20
  positionChangeHandler?: PositionChangeHandler;
18
- [key: string]: unknown;
19
21
  }
@@ -1,4 +1,4 @@
1
- import { useEffect, useRef } from 'react';
1
+ import { useCallback, useEffect, useMemo, useRef } from 'react';
2
2
 
3
3
  import { TrueSheet } from '../../TrueSheet';
4
4
  import type {
@@ -59,29 +59,28 @@ export const useSheetScreenState = (props: UseSheetScreenStateProps) => {
59
59
  ref.current?.resize(detentIndex);
60
60
  }, [detentIndex, resizeKey]);
61
61
 
62
- const emitEvent = (
63
- type: keyof TrueSheetNavigationEventMap,
64
- data: DetentInfoEventPayload | PositionChangeEventPayload | undefined
65
- ) => {
66
- emit({
67
- type,
68
- target: routeKey,
69
- data,
70
- } as Parameters<EmitFn>[0]);
71
- };
62
+ const emitEvent = useCallback(
63
+ (
64
+ type: keyof TrueSheetNavigationEventMap,
65
+ data: DetentInfoEventPayload | PositionChangeEventPayload | undefined
66
+ ) => {
67
+ emit({
68
+ type,
69
+ target: routeKey,
70
+ data,
71
+ } as Parameters<EmitFn>[0]);
72
+ },
73
+ [emit, routeKey]
74
+ );
72
75
 
73
- const onDidDismiss = () => {
76
+ const onDidDismiss = useCallback(() => {
74
77
  emitEvent('sheetDidDismiss', undefined);
75
78
  isDismissedRef.current = true;
76
- // Remove route from state (works for both programmatic and user-initiated dismiss)
77
79
  navigation.dispatch({ ...TrueSheetActions.remove(), source: routeKey });
78
- };
80
+ }, [emitEvent, navigation, routeKey]);
79
81
 
80
- return {
81
- ref,
82
- initialDetentIndex: initialDetentIndexRef.current,
83
- emitEvent,
84
- eventHandlers: {
82
+ const eventHandlers = useMemo(
83
+ () => ({
85
84
  onWillPresent: (e: WillPresentEvent) => emitEvent('sheetWillPresent', e.nativeEvent),
86
85
  onDidPresent: (e: DidPresentEvent) => emitEvent('sheetDidPresent', e.nativeEvent),
87
86
  onWillDismiss: (_e: WillDismissEvent) => emitEvent('sheetWillDismiss', undefined),
@@ -95,6 +94,14 @@ export const useSheetScreenState = (props: UseSheetScreenStateProps) => {
95
94
  onDidFocus: (_e: DidFocusEvent) => emitEvent('sheetDidFocus', undefined),
96
95
  onWillBlur: (_e: WillBlurEvent) => emitEvent('sheetWillBlur', undefined),
97
96
  onDidBlur: (_e: DidBlurEvent) => emitEvent('sheetDidBlur', undefined),
98
- },
97
+ }),
98
+ [emitEvent, onDidDismiss]
99
+ );
100
+
101
+ return {
102
+ ref,
103
+ initialDetentIndex: initialDetentIndexRef.current,
104
+ emitEvent,
105
+ eventHandlers,
99
106
  };
100
107
  };
@@ -14,7 +14,8 @@ import type {
14
14
  PositionChangeEventPayload,
15
15
  TrueSheetProps,
16
16
  } from '../TrueSheet.types';
17
- import type { PositionChangeHandler } from './screen/types';
17
+
18
+ export type PositionChangeHandler = (payload: PositionChangeEventPayload) => void;
18
19
 
19
20
  export type TrueSheetNavigationEventMap = {
20
21
  /**
@@ -119,10 +120,7 @@ export type TrueSheetNavigationHelpers = NavigationHelpers<
119
120
  TrueSheetNavigationEventMap
120
121
  >;
121
122
 
122
- /**
123
- * Screen options for TrueSheet navigator screens.
124
- */
125
- export type TrueSheetNavigationOptions = Pick<
123
+ export type TrueSheetNavigationSheetProps = Pick<
126
124
  TrueSheetProps,
127
125
  | 'detents'
128
126
  | 'backgroundColor'
@@ -140,10 +138,23 @@ export type TrueSheetNavigationOptions = Pick<
140
138
  | 'scrollable'
141
139
  | 'pageSizing'
142
140
  | 'header'
141
+ | 'headerStyle'
143
142
  | 'footer'
143
+ | 'footerStyle'
144
+ | 'scrollableOptions'
144
145
  | 'insetAdjustment'
146
+ | 'anchor'
147
+ | 'anchorOffset'
148
+ | 'elevation'
149
+ | 'detached'
150
+ | 'detachedOffset'
145
151
  | 'stackBehavior'
146
- > & {
152
+ >;
153
+
154
+ /**
155
+ * Screen options for TrueSheet navigator screens.
156
+ */
157
+ export type TrueSheetNavigationOptions = TrueSheetNavigationSheetProps & {
147
158
  /**
148
159
  * The detent index to present at.
149
160
  * @default 0
@@ -1,4 +1,4 @@
1
- import { createContext, useContext, type ReactNode } from 'react';
1
+ import { createContext, useContext, useMemo, type ReactNode } from 'react';
2
2
  import { useWindowDimensions } from 'react-native';
3
3
  import { useSharedValue, type SharedValue } from 'react-native-reanimated';
4
4
 
@@ -48,11 +48,10 @@ export const ReanimatedTrueSheetProvider = ({ children }: ReanimatedTrueSheetPro
48
48
  const animatedIndex = useSharedValue(-1);
49
49
  const animatedDetent = useSharedValue(0);
50
50
 
51
- const value: ReanimatedTrueSheetContextValue = {
52
- animatedPosition,
53
- animatedIndex,
54
- animatedDetent,
55
- };
51
+ const value = useMemo<ReanimatedTrueSheetContextValue>(
52
+ () => ({ animatedPosition, animatedIndex, animatedDetent }),
53
+ [animatedPosition, animatedIndex, animatedDetent]
54
+ );
56
55
 
57
56
  return (
58
57
  <ReanimatedTrueSheetContext.Provider value={value}>