@tamagui/sheet 1.27.0 → 1.27.2

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 (140) hide show
  1. package/dist/cjs/Sheet.js +1 -2
  2. package/dist/cjs/Sheet.js.map +1 -1
  3. package/dist/cjs/SheetContext.js.map +1 -1
  4. package/dist/cjs/SheetImplementationCustom.js +340 -0
  5. package/dist/cjs/SheetImplementationCustom.js.map +6 -0
  6. package/dist/cjs/constants.js +10 -0
  7. package/dist/cjs/constants.js.map +1 -1
  8. package/dist/cjs/contexts.js +35 -0
  9. package/dist/cjs/contexts.js.map +6 -0
  10. package/dist/cjs/createSheet.js +68 -342
  11. package/dist/cjs/createSheet.js.map +2 -2
  12. package/dist/cjs/helpers.js +38 -0
  13. package/dist/cjs/helpers.js.map +6 -0
  14. package/dist/cjs/index.js +2 -0
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/nativeSheet.js +3 -5
  17. package/dist/cjs/nativeSheet.js.map +1 -1
  18. package/dist/cjs/useSheet.js +30 -0
  19. package/dist/cjs/useSheet.js.map +6 -0
  20. package/dist/cjs/useSheetChildren.js +4 -2
  21. package/dist/cjs/useSheetChildren.js.map +1 -1
  22. package/dist/cjs/useSheetController.js +2 -1
  23. package/dist/cjs/useSheetController.js.map +1 -1
  24. package/dist/cjs/useSheetProviderProps.js +30 -3
  25. package/dist/cjs/useSheetProviderProps.js.map +1 -1
  26. package/dist/esm/Sheet.js +1 -2
  27. package/dist/esm/Sheet.js.map +1 -1
  28. package/dist/esm/SheetContext.js.map +1 -1
  29. package/dist/esm/SheetImplementationCustom.js +336 -0
  30. package/dist/esm/SheetImplementationCustom.js.map +6 -0
  31. package/dist/esm/constants.js +8 -0
  32. package/dist/esm/constants.js.map +1 -1
  33. package/dist/esm/contexts.js +10 -0
  34. package/dist/esm/contexts.js.map +6 -0
  35. package/dist/esm/createSheet.js +72 -364
  36. package/dist/esm/createSheet.js.map +2 -2
  37. package/dist/esm/helpers.js +14 -0
  38. package/dist/esm/helpers.js.map +6 -0
  39. package/dist/esm/index.js +1 -0
  40. package/dist/esm/index.js.map +1 -1
  41. package/dist/esm/nativeSheet.js +3 -5
  42. package/dist/esm/nativeSheet.js.map +1 -1
  43. package/dist/esm/useSheet.js +6 -0
  44. package/dist/esm/useSheet.js.map +6 -0
  45. package/dist/esm/useSheetChildren.js +4 -2
  46. package/dist/esm/useSheetChildren.js.map +1 -1
  47. package/dist/esm/useSheetController.js +2 -1
  48. package/dist/esm/useSheetController.js.map +1 -1
  49. package/dist/esm/useSheetProviderProps.js +31 -4
  50. package/dist/esm/useSheetProviderProps.js.map +1 -1
  51. package/dist/jsx/Sheet.js +1 -2
  52. package/dist/jsx/Sheet.js.map +1 -1
  53. package/dist/jsx/Sheet.mjs +1 -2
  54. package/dist/jsx/Sheet.mjs.map +1 -1
  55. package/dist/jsx/SheetContext.js.map +1 -1
  56. package/dist/jsx/SheetContext.mjs.map +1 -1
  57. package/dist/jsx/SheetImplementationCustom.js +330 -0
  58. package/dist/jsx/SheetImplementationCustom.js.map +6 -0
  59. package/dist/jsx/SheetImplementationCustom.mjs +330 -0
  60. package/dist/jsx/SheetImplementationCustom.mjs.map +6 -0
  61. package/dist/jsx/constants.js +8 -0
  62. package/dist/jsx/constants.js.map +1 -1
  63. package/dist/jsx/constants.mjs +8 -0
  64. package/dist/jsx/constants.mjs.map +1 -1
  65. package/dist/jsx/contexts.js +10 -0
  66. package/dist/jsx/contexts.js.map +6 -0
  67. package/dist/jsx/contexts.mjs +10 -0
  68. package/dist/jsx/contexts.mjs.map +6 -0
  69. package/dist/jsx/createSheet.js +63 -354
  70. package/dist/jsx/createSheet.js.map +2 -2
  71. package/dist/jsx/createSheet.mjs +63 -354
  72. package/dist/jsx/createSheet.mjs.map +2 -2
  73. package/dist/jsx/helpers.js +14 -0
  74. package/dist/jsx/helpers.js.map +6 -0
  75. package/dist/jsx/helpers.mjs +14 -0
  76. package/dist/jsx/helpers.mjs.map +6 -0
  77. package/dist/jsx/index.js +1 -0
  78. package/dist/jsx/index.js.map +1 -1
  79. package/dist/jsx/index.mjs +1 -0
  80. package/dist/jsx/index.mjs.map +1 -1
  81. package/dist/jsx/nativeSheet.js +3 -5
  82. package/dist/jsx/nativeSheet.js.map +1 -1
  83. package/dist/jsx/nativeSheet.mjs +3 -5
  84. package/dist/jsx/nativeSheet.mjs.map +1 -1
  85. package/dist/jsx/useSheet.js +6 -0
  86. package/dist/jsx/useSheet.js.map +6 -0
  87. package/dist/jsx/useSheet.mjs +6 -0
  88. package/dist/jsx/useSheet.mjs.map +6 -0
  89. package/dist/jsx/useSheetChildren.js +4 -2
  90. package/dist/jsx/useSheetChildren.js.map +1 -1
  91. package/dist/jsx/useSheetChildren.mjs +4 -2
  92. package/dist/jsx/useSheetChildren.mjs.map +1 -1
  93. package/dist/jsx/useSheetController.js +2 -1
  94. package/dist/jsx/useSheetController.js.map +1 -1
  95. package/dist/jsx/useSheetController.mjs +2 -1
  96. package/dist/jsx/useSheetController.mjs.map +1 -1
  97. package/dist/jsx/useSheetProviderProps.js +31 -4
  98. package/dist/jsx/useSheetProviderProps.js.map +1 -1
  99. package/dist/jsx/useSheetProviderProps.mjs +31 -4
  100. package/dist/jsx/useSheetProviderProps.mjs.map +1 -1
  101. package/package.json +13 -13
  102. package/src/Sheet.tsx +0 -1
  103. package/src/SheetContext.tsx +1 -16
  104. package/src/SheetImplementationCustom.tsx +404 -0
  105. package/src/constants.tsx +10 -0
  106. package/src/contexts.ts +9 -0
  107. package/src/createSheet.tsx +88 -441
  108. package/src/helpers.tsx +10 -0
  109. package/src/index.ts +1 -0
  110. package/src/nativeSheet.tsx +3 -5
  111. package/src/useSheet.tsx +3 -0
  112. package/src/useSheetController.tsx +1 -0
  113. package/src/useSheetProviderProps.tsx +48 -7
  114. package/types/Sheet.d.ts +10 -6
  115. package/types/Sheet.d.ts.map +1 -1
  116. package/types/SheetContext.d.ts +100 -27
  117. package/types/SheetContext.d.ts.map +1 -1
  118. package/types/SheetImplementationCustom.d.ts +27 -0
  119. package/types/SheetImplementationCustom.d.ts.map +1 -0
  120. package/types/constants.d.ts +2 -0
  121. package/types/constants.d.ts.map +1 -1
  122. package/types/contexts.d.ts +6 -0
  123. package/types/contexts.d.ts.map +1 -0
  124. package/types/createSheet.d.ts +8 -4
  125. package/types/createSheet.d.ts.map +1 -1
  126. package/types/helpers.d.ts +2 -0
  127. package/types/helpers.d.ts.map +1 -0
  128. package/types/index.d.ts +1 -0
  129. package/types/index.d.ts.map +1 -1
  130. package/types/nativeSheet.d.ts.map +1 -1
  131. package/types/useSheet.d.ts +22 -0
  132. package/types/useSheet.d.ts.map +1 -0
  133. package/types/useSheetChildren.d.ts +1 -0
  134. package/types/useSheetChildren.d.ts.map +1 -1
  135. package/types/useSheetController.d.ts +1 -0
  136. package/types/useSheetController.d.ts.map +1 -1
  137. package/types/useSheetProviderProps.d.ts +8 -3
  138. package/types/useSheetProviderProps.d.ts.map +1 -1
  139. package/src/useSheetChildren.tsx +0 -47
  140. package/src/useSheetSnapPoints.tsx +0 -60
@@ -0,0 +1,6 @@
1
+ import { useSheetContext } from "./SheetContext";
2
+ const useSheet = () => useSheetContext("", void 0);
3
+ export {
4
+ useSheet
5
+ };
6
+ //# sourceMappingURL=useSheet.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/useSheet.tsx"],
4
+ "mappings": "AAAA,SAAS,uBAAuB;AAEzB,MAAM,WAAW,MAAM,gBAAgB,IAAI,MAAS;",
5
+ "names": []
6
+ }
@@ -0,0 +1,6 @@
1
+ import { useSheetContext } from "./SheetContext";
2
+ const useSheet = () => useSheetContext("", void 0);
3
+ export {
4
+ useSheet
5
+ };
6
+ //# sourceMappingURL=useSheet.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/useSheet.tsx"],
4
+ "mappings": "AAAA,SAAS,uBAAuB;AAEzB,MAAM,WAAW,MAAM,gBAAgB,IAAI,MAAS;",
5
+ "names": []
6
+ }
@@ -3,6 +3,7 @@ function useSheetChildren(childrenProp) {
3
3
  let handleComponent = null;
4
4
  let overlayComponent = null;
5
5
  let frameComponent = null;
6
+ let rest = [];
6
7
  React.Children.forEach(childrenProp, (child) => {
7
8
  if (isValidElement(child)) {
8
9
  const name = child.type?.["staticConfig"]?.componentName;
@@ -17,7 +18,7 @@ function useSheetChildren(childrenProp) {
17
18
  overlayComponent = child;
18
19
  break;
19
20
  default:
20
- console.warn("Warning: passed invalid child to Sheet", child);
21
+ rest.push(child);
21
22
  }
22
23
  }
23
24
  });
@@ -36,7 +37,8 @@ function useSheetChildren(childrenProp) {
36
37
  handleComponent,
37
38
  overlayComponent,
38
39
  frameComponent,
39
- bottomCoverComponent
40
+ bottomCoverComponent,
41
+ rest
40
42
  };
41
43
  }
42
44
  export {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/useSheetChildren.tsx"],
4
- "mappings": "AAAA,OAAO,SAAS,sBAAsB;AAE/B,SAAS,iBAAiB,cAAmB;AAClD,MAAI,kBAA6C;AACjD,MAAI,mBAA8C;AAClD,MAAI,iBAA4C;AAGhD,QAAM,SAAS,QAAQ,cAAc,CAAC,UAAU;AAC9C,QAAI,eAAe,KAAK,GAAG;AACzB,YAAM,OAAO,MAAM,OAAO,cAAc,GAAG;AAC3C,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,4BAAkB;AAClB;AAAA,QACF,KAAK;AACH,2BAAiB;AACjB;AAAA,QACF,KAAK;AACH,6BAAmB;AACnB;AAAA,QACF;AACE,kBAAQ,KAAK,0CAA0C,KAAK;AAAA,MAChE;AAAA,IACF;AAAA,EACF,CAAC;AAED,MAAI,uBAA4B;AAEhC,MAAI,gBAAgB;AAClB,2BAAuB,MAAM,aAAa,gBAAgB;AAAA,MACxD,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
4
+ "mappings": "AAAA,OAAO,SAAS,sBAAsB;AAE/B,SAAS,iBAAiB,cAAmB;AAClD,MAAI,kBAA6C;AACjD,MAAI,mBAA8C;AAClD,MAAI,iBAA4C;AAChD,MAAI,OAAc,CAAC;AAGnB,QAAM,SAAS,QAAQ,cAAc,CAAC,UAAU;AAC9C,QAAI,eAAe,KAAK,GAAG;AACzB,YAAM,OAAO,MAAM,OAAO,cAAc,GAAG;AAC3C,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,4BAAkB;AAClB;AAAA,QACF,KAAK;AACH,2BAAiB;AACjB;AAAA,QACF,KAAK;AACH,6BAAmB;AACnB;AAAA,QACF;AACE,eAAK,KAAK,KAAK;AAAA,MACnB;AAAA,IACF;AAAA,EACF,CAAC;AAED,MAAI,uBAA4B;AAEhC,MAAI,gBAAgB;AAClB,2BAAuB,MAAM,aAAa,gBAAgB;AAAA,MACxD,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
5
5
  "names": []
6
6
  }
@@ -3,6 +3,7 @@ function useSheetChildren(childrenProp) {
3
3
  let handleComponent = null;
4
4
  let overlayComponent = null;
5
5
  let frameComponent = null;
6
+ let rest = [];
6
7
  React.Children.forEach(childrenProp, (child) => {
7
8
  if (isValidElement(child)) {
8
9
  const name = child.type?.["staticConfig"]?.componentName;
@@ -17,7 +18,7 @@ function useSheetChildren(childrenProp) {
17
18
  overlayComponent = child;
18
19
  break;
19
20
  default:
20
- console.warn("Warning: passed invalid child to Sheet", child);
21
+ rest.push(child);
21
22
  }
22
23
  }
23
24
  });
@@ -36,7 +37,8 @@ function useSheetChildren(childrenProp) {
36
37
  handleComponent,
37
38
  overlayComponent,
38
39
  frameComponent,
39
- bottomCoverComponent
40
+ bottomCoverComponent,
41
+ rest
40
42
  };
41
43
  }
42
44
  export {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/useSheetChildren.tsx"],
4
- "mappings": "AAAA,OAAO,SAAS,sBAAsB;AAE/B,SAAS,iBAAiB,cAAmB;AAClD,MAAI,kBAA6C;AACjD,MAAI,mBAA8C;AAClD,MAAI,iBAA4C;AAGhD,QAAM,SAAS,QAAQ,cAAc,CAAC,UAAU;AAC9C,QAAI,eAAe,KAAK,GAAG;AACzB,YAAM,OAAO,MAAM,OAAO,cAAc,GAAG;AAC3C,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,4BAAkB;AAClB;AAAA,QACF,KAAK;AACH,2BAAiB;AACjB;AAAA,QACF,KAAK;AACH,6BAAmB;AACnB;AAAA,QACF;AACE,kBAAQ,KAAK,0CAA0C,KAAK;AAAA,MAChE;AAAA,IACF;AAAA,EACF,CAAC;AAED,MAAI,uBAA4B;AAEhC,MAAI,gBAAgB;AAClB,2BAAuB,MAAM,aAAa,gBAAgB;AAAA,MACxD,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
4
+ "mappings": "AAAA,OAAO,SAAS,sBAAsB;AAE/B,SAAS,iBAAiB,cAAmB;AAClD,MAAI,kBAA6C;AACjD,MAAI,mBAA8C;AAClD,MAAI,iBAA4C;AAChD,MAAI,OAAc,CAAC;AAGnB,QAAM,SAAS,QAAQ,cAAc,CAAC,UAAU;AAC9C,QAAI,eAAe,KAAK,GAAG;AACzB,YAAM,OAAO,MAAM,OAAO,cAAc,GAAG;AAC3C,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,4BAAkB;AAClB;AAAA,QACF,KAAK;AACH,2BAAiB;AACjB;AAAA,QACF,KAAK;AACH,6BAAmB;AACnB;AAAA,QACF;AACE,eAAK,KAAK,KAAK;AAAA,MACnB;AAAA,IACF;AAAA,EACF,CAAC;AAED,MAAI,uBAA4B;AAEhC,MAAI,gBAAgB;AAClB,2BAAuB,MAAM,aAAa,gBAAgB;AAAA,MACxD,UAAU;AAAA,MACV,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
5
5
  "names": []
6
6
  }
@@ -6,7 +6,8 @@ const useSheetController = () => {
6
6
  return {
7
7
  controller,
8
8
  isHidden,
9
- isShowingNonSheet
9
+ isShowingNonSheet,
10
+ disableDrag: controller?.disableDrag
10
11
  };
11
12
  };
12
13
  const SheetControllerContext = createContext(
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/useSheetController.tsx"],
4
- "mappings": "AAAA,SAAS,eAAe,kBAAkB;AAEnC,MAAM,qBAAqB,MAAM;AACtC,QAAM,aAAa,WAAW,sBAAsB;AACpD,QAAM,WAAW,YAAY;AAC7B,QAAM,oBAAoB,YAAY,YAAY;AAClD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,MAAM,yBAAyB;AAAA,EACpC;AACF;",
4
+ "mappings": "AAAA,SAAS,eAAe,kBAAkB;AAEnC,MAAM,qBAAqB,MAAM;AACtC,QAAM,aAAa,WAAW,sBAAsB;AACpD,QAAM,WAAW,YAAY;AAC7B,QAAM,oBAAoB,YAAY,YAAY;AAClD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,YAAY;AAAA,EAC3B;AACF;AAEO,MAAM,yBAAyB;AAAA,EACpC;AACF;",
5
5
  "names": []
6
6
  }
@@ -6,7 +6,8 @@ const useSheetController = () => {
6
6
  return {
7
7
  controller,
8
8
  isHidden,
9
- isShowingNonSheet
9
+ isShowingNonSheet,
10
+ disableDrag: controller?.disableDrag
10
11
  };
11
12
  };
12
13
  const SheetControllerContext = createContext(
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/useSheetController.tsx"],
4
- "mappings": "AAAA,SAAS,eAAe,kBAAkB;AAEnC,MAAM,qBAAqB,MAAM;AACtC,QAAM,aAAa,WAAW,sBAAsB;AACpD,QAAM,WAAW,YAAY;AAC7B,QAAM,oBAAoB,YAAY,YAAY;AAClD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,MAAM,yBAAyB;AAAA,EACpC;AACF;",
4
+ "mappings": "AAAA,SAAS,eAAe,kBAAkB;AAEnC,MAAM,qBAAqB,MAAM;AACtC,QAAM,aAAa,WAAW,sBAAsB;AACpD,QAAM,WAAW,YAAY;AAC7B,QAAM,oBAAoB,YAAY,YAAY;AAClD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,YAAY;AAAA,EAC3B;AACF;AAEO,MAAM,yBAAyB;AAAA,EACpC;AACF;",
5
5
  "names": []
6
6
  }
@@ -1,7 +1,8 @@
1
+ import { useAnimationDriver } from "@tamagui/core";
1
2
  import { useConstant } from "@tamagui/use-constant";
2
3
  import { useControllableState } from "@tamagui/use-controllable-state";
3
- import React, { useCallback, useMemo, useState } from "react";
4
- function useSheetProviderProps(props, state) {
4
+ import React, { useCallback, useEffect, useMemo, useState } from "react";
5
+ function useSheetProviderProps(props, state, options = {}) {
5
6
  const contentRef = React.useRef(null);
6
7
  const [frameSize, setFrameSize] = useState(0);
7
8
  const snapPointsProp = props.snapPoints || [80];
@@ -18,6 +19,7 @@ function useSheetProviderProps(props, state) {
18
19
  transition: true
19
20
  });
20
21
  const position = state.open === false ? -1 : position_;
22
+ const { open } = state;
21
23
  const setPosition = useCallback(
22
24
  (next) => {
23
25
  if (props.dismissOnSnapToBottom && next === snapPoints.length - 1) {
@@ -28,6 +30,26 @@ function useSheetProviderProps(props, state) {
28
30
  },
29
31
  [props.dismissOnSnapToBottom, snapPoints.length, setPositionImmediate, state.setOpen]
30
32
  );
33
+ if (process.env.NODE_ENV === "development") {
34
+ if (snapPoints.some((p) => p < 0 || p > 100)) {
35
+ console.warn(
36
+ "\u26A0\uFE0F Invalid snapPoint given, snapPoints must be between 0 and 100, equal to percent height of frame"
37
+ );
38
+ }
39
+ }
40
+ if (open && props.dismissOnSnapToBottom && position === snapPoints.length - 1) {
41
+ setPositionImmediate(0);
42
+ }
43
+ const shouldSetPositionOpen = open && position < 0;
44
+ useEffect(() => {
45
+ if (shouldSetPositionOpen) {
46
+ setPosition(0);
47
+ }
48
+ }, [setPosition, shouldSetPositionOpen]);
49
+ const driver = useAnimationDriver();
50
+ if (!driver) {
51
+ throw new Error("Must set animations in tamagui.config.ts");
52
+ }
31
53
  const scrollBridge = useConstant(() => ({
32
54
  enabled: false,
33
55
  y: 0,
@@ -40,7 +62,10 @@ function useSheetProviderProps(props, state) {
40
62
  },
41
63
  scrollLock: false
42
64
  }));
43
- return {
65
+ const removeScrollEnabled = props.forceRemoveScrollEnabled ?? (open && props.modal);
66
+ const providerProps = {
67
+ removeScrollEnabled,
68
+ scrollBridge,
44
69
  modal: !!props.modal,
45
70
  open: state.open,
46
71
  setOpen: state.setOpen,
@@ -50,13 +75,15 @@ function useSheetProviderProps(props, state) {
50
75
  setFrameSize,
51
76
  dismissOnOverlayPress: props.dismissOnOverlayPress ?? true,
52
77
  dismissOnSnapToBottom: props.dismissOnSnapToBottom ?? false,
78
+ onOverlayComponent: options.onOverlayComponent,
53
79
  scope: props.__scopeSheet,
54
80
  position,
55
81
  snapPoints,
56
82
  setPosition,
57
83
  setPositionImmediate,
58
- scrollBridge
84
+ onlyShowFrame: false
59
85
  };
86
+ return providerProps;
60
87
  }
61
88
  export {
62
89
  useSheetProviderProps
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/useSheetProviderProps.tsx"],
4
- "mappings": "AACA,SAAS,mBAAmB;AAC5B,SAAS,4BAA4B;AACrC,OAAO,SAAS,aAAa,SAAS,gBAAgB;AAK/C,SAAS,sBAAsB,OAAmB,OAAuB;AAC9E,QAAM,aAAa,MAAM,OAAuB,IAAI;AACpD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAiB,CAAC;AACpD,QAAM,iBAAiB,MAAM,cAAc,CAAC,EAAE;AAE9C,QAAM,aAAa;AAAA,IACjB,MAAO,MAAM,wBAAwB,CAAC,GAAG,gBAAgB,CAAC,IAAI;AAAA;AAAA,IAE9D,CAAC,KAAK,UAAU,cAAc,GAAG,MAAM,qBAAqB;AAAA,EAC9D;AAGA,QAAM,CAAC,WAAW,oBAAoB,IAAI,qBAAqB;AAAA,IAC7D,MAAM,MAAM;AAAA,IACZ,aAAa,MAAM,oBAAoB,MAAM,OAAO,IAAI;AAAA,IACxD,UAAU,MAAM;AAAA,IAChB,UAAU;AAAA,IACV,YAAY;AAAA,EACd,CAAC;AAED,QAAM,WAAW,MAAM,SAAS,QAAQ,KAAK;AAE7C,QAAM,cAAc;AAAA,IAClB,CAAC,SAAiB;AAEhB,UAAI,MAAM,yBAAyB,SAAS,WAAW,SAAS,GAAG;AACjE,cAAM,QAAQ,KAAK;AAAA,MACrB,OAAO;AACL,6BAAqB,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,CAAC,MAAM,uBAAuB,WAAW,QAAQ,sBAAsB,MAAM,OAAO;AAAA,EACtF;AAEA,QAAM,eAAe,YAA0B,OAAO;AAAA,IACpD,SAAS;AAAA,IACT,GAAG;AAAA,IACH,OAAO;AAAA,IACP,UAAU;AAAA,IACV,cAAc;AAAA,IACd,MAAM,MAAM;AAAA,IAAC;AAAA,IACb,SAAS,MAAM;AAAA,IAAC;AAAA,IAChB,YAAY;AAAA,EACd,EAAE;AAEF,SAAO;AAAA,IACL,OAAO,CAAC,CAAC,MAAM;AAAA,IACf,MAAM,MAAM;AAAA,IACZ,SAAS,MAAM;AAAA,IACf,QAAQ,CAAC,CAAC,MAAM;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA,uBAAuB,MAAM,yBAAyB;AAAA,IACtD,uBAAuB,MAAM,yBAAyB;AAAA,IACtD,OAAO,MAAM;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
4
+ "mappings": "AAAA,SAAyB,0BAA0B;AACnD,SAAS,mBAAmB;AAC5B,SAAS,4BAA4B;AACrC,OAAO,SAAS,aAAa,WAAW,SAAS,gBAAgB;AAO1D,SAAS,sBACd,OACA,OACA,UAEI,CAAC,GACL;AACA,QAAM,aAAa,MAAM,OAAuB,IAAI;AACpD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAiB,CAAC;AACpD,QAAM,iBAAiB,MAAM,cAAc,CAAC,EAAE;AAE9C,QAAM,aAAa;AAAA,IACjB,MAAO,MAAM,wBAAwB,CAAC,GAAG,gBAAgB,CAAC,IAAI;AAAA;AAAA,IAE9D,CAAC,KAAK,UAAU,cAAc,GAAG,MAAM,qBAAqB;AAAA,EAC9D;AAGA,QAAM,CAAC,WAAW,oBAAoB,IAAI,qBAAqB;AAAA,IAC7D,MAAM,MAAM;AAAA,IACZ,aAAa,MAAM,oBAAoB,MAAM,OAAO,IAAI;AAAA,IACxD,UAAU,MAAM;AAAA,IAChB,UAAU;AAAA,IACV,YAAY;AAAA,EACd,CAAC;AAED,QAAM,WAAW,MAAM,SAAS,QAAQ,KAAK;AAE7C,QAAM,EAAE,KAAK,IAAI;AAEjB,QAAM,cAAc;AAAA,IAClB,CAAC,SAAiB;AAEhB,UAAI,MAAM,yBAAyB,SAAS,WAAW,SAAS,GAAG;AACjE,cAAM,QAAQ,KAAK;AAAA,MACrB,OAAO;AACL,6BAAqB,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,CAAC,MAAM,uBAAuB,WAAW,QAAQ,sBAAsB,MAAM,OAAO;AAAA,EACtF;AAEA,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,WAAW,KAAK,CAAC,MAAM,IAAI,KAAK,IAAI,GAAG,GAAG;AAC5C,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,MAAI,QAAQ,MAAM,yBAAyB,aAAa,WAAW,SAAS,GAAG;AAC7E,yBAAqB,CAAC;AAAA,EACxB;AAGA,QAAM,wBAAwB,QAAQ,WAAW;AACjD,YAAU,MAAM;AACd,QAAI,uBAAuB;AACzB,kBAAY,CAAC;AAAA,IACf;AAAA,EACF,GAAG,CAAC,aAAa,qBAAqB,CAAC;AAEvC,QAAM,SAAS,mBAAmB;AAClC,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AAEA,QAAM,eAAe,YAA0B,OAAO;AAAA,IACpD,SAAS;AAAA,IACT,GAAG;AAAA,IACH,OAAO;AAAA,IACP,UAAU;AAAA,IACV,cAAc;AAAA,IACd,MAAM,MAAM;AAAA,IAAC;AAAA,IACb,SAAS,MAAM;AAAA,IAAC;AAAA,IAChB,YAAY;AAAA,EACd,EAAE;AAEF,QAAM,sBAAsB,MAAM,6BAA6B,QAAQ,MAAM;AAE7E,QAAM,gBAAgB;AAAA,IACpB;AAAA,IACA;AAAA,IACA,OAAO,CAAC,CAAC,MAAM;AAAA,IACf,MAAM,MAAM;AAAA,IACZ,SAAS,MAAM;AAAA,IACf,QAAQ,CAAC,CAAC,MAAM;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA,uBAAuB,MAAM,yBAAyB;AAAA,IACtD,uBAAuB,MAAM,yBAAyB;AAAA,IACtD,oBAAoB,QAAQ;AAAA,IAC5B,OAAO,MAAM;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,EACjB;AAEA,SAAO;AACT;",
5
5
  "names": []
6
6
  }
@@ -1,7 +1,8 @@
1
+ import { useAnimationDriver } from "@tamagui/core";
1
2
  import { useConstant } from "@tamagui/use-constant";
2
3
  import { useControllableState } from "@tamagui/use-controllable-state";
3
- import React, { useCallback, useMemo, useState } from "react";
4
- function useSheetProviderProps(props, state) {
4
+ import React, { useCallback, useEffect, useMemo, useState } from "react";
5
+ function useSheetProviderProps(props, state, options = {}) {
5
6
  const contentRef = React.useRef(null);
6
7
  const [frameSize, setFrameSize] = useState(0);
7
8
  const snapPointsProp = props.snapPoints || [80];
@@ -18,6 +19,7 @@ function useSheetProviderProps(props, state) {
18
19
  transition: true
19
20
  });
20
21
  const position = state.open === false ? -1 : position_;
22
+ const { open } = state;
21
23
  const setPosition = useCallback(
22
24
  (next) => {
23
25
  if (props.dismissOnSnapToBottom && next === snapPoints.length - 1) {
@@ -28,6 +30,26 @@ function useSheetProviderProps(props, state) {
28
30
  },
29
31
  [props.dismissOnSnapToBottom, snapPoints.length, setPositionImmediate, state.setOpen]
30
32
  );
33
+ if (process.env.NODE_ENV === "development") {
34
+ if (snapPoints.some((p) => p < 0 || p > 100)) {
35
+ console.warn(
36
+ "\u26A0\uFE0F Invalid snapPoint given, snapPoints must be between 0 and 100, equal to percent height of frame"
37
+ );
38
+ }
39
+ }
40
+ if (open && props.dismissOnSnapToBottom && position === snapPoints.length - 1) {
41
+ setPositionImmediate(0);
42
+ }
43
+ const shouldSetPositionOpen = open && position < 0;
44
+ useEffect(() => {
45
+ if (shouldSetPositionOpen) {
46
+ setPosition(0);
47
+ }
48
+ }, [setPosition, shouldSetPositionOpen]);
49
+ const driver = useAnimationDriver();
50
+ if (!driver) {
51
+ throw new Error("Must set animations in tamagui.config.ts");
52
+ }
31
53
  const scrollBridge = useConstant(() => ({
32
54
  enabled: false,
33
55
  y: 0,
@@ -40,7 +62,10 @@ function useSheetProviderProps(props, state) {
40
62
  },
41
63
  scrollLock: false
42
64
  }));
43
- return {
65
+ const removeScrollEnabled = props.forceRemoveScrollEnabled ?? (open && props.modal);
66
+ const providerProps = {
67
+ removeScrollEnabled,
68
+ scrollBridge,
44
69
  modal: !!props.modal,
45
70
  open: state.open,
46
71
  setOpen: state.setOpen,
@@ -50,13 +75,15 @@ function useSheetProviderProps(props, state) {
50
75
  setFrameSize,
51
76
  dismissOnOverlayPress: props.dismissOnOverlayPress ?? true,
52
77
  dismissOnSnapToBottom: props.dismissOnSnapToBottom ?? false,
78
+ onOverlayComponent: options.onOverlayComponent,
53
79
  scope: props.__scopeSheet,
54
80
  position,
55
81
  snapPoints,
56
82
  setPosition,
57
83
  setPositionImmediate,
58
- scrollBridge
84
+ onlyShowFrame: false
59
85
  };
86
+ return providerProps;
60
87
  }
61
88
  export {
62
89
  useSheetProviderProps
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/useSheetProviderProps.tsx"],
4
- "mappings": "AACA,SAAS,mBAAmB;AAC5B,SAAS,4BAA4B;AACrC,OAAO,SAAS,aAAa,SAAS,gBAAgB;AAK/C,SAAS,sBAAsB,OAAmB,OAAuB;AAC9E,QAAM,aAAa,MAAM,OAAuB,IAAI;AACpD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAiB,CAAC;AACpD,QAAM,iBAAiB,MAAM,cAAc,CAAC,EAAE;AAE9C,QAAM,aAAa;AAAA,IACjB,MAAO,MAAM,wBAAwB,CAAC,GAAG,gBAAgB,CAAC,IAAI;AAAA;AAAA,IAE9D,CAAC,KAAK,UAAU,cAAc,GAAG,MAAM,qBAAqB;AAAA,EAC9D;AAGA,QAAM,CAAC,WAAW,oBAAoB,IAAI,qBAAqB;AAAA,IAC7D,MAAM,MAAM;AAAA,IACZ,aAAa,MAAM,oBAAoB,MAAM,OAAO,IAAI;AAAA,IACxD,UAAU,MAAM;AAAA,IAChB,UAAU;AAAA,IACV,YAAY;AAAA,EACd,CAAC;AAED,QAAM,WAAW,MAAM,SAAS,QAAQ,KAAK;AAE7C,QAAM,cAAc;AAAA,IAClB,CAAC,SAAiB;AAEhB,UAAI,MAAM,yBAAyB,SAAS,WAAW,SAAS,GAAG;AACjE,cAAM,QAAQ,KAAK;AAAA,MACrB,OAAO;AACL,6BAAqB,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,CAAC,MAAM,uBAAuB,WAAW,QAAQ,sBAAsB,MAAM,OAAO;AAAA,EACtF;AAEA,QAAM,eAAe,YAA0B,OAAO;AAAA,IACpD,SAAS;AAAA,IACT,GAAG;AAAA,IACH,OAAO;AAAA,IACP,UAAU;AAAA,IACV,cAAc;AAAA,IACd,MAAM,MAAM;AAAA,IAAC;AAAA,IACb,SAAS,MAAM;AAAA,IAAC;AAAA,IAChB,YAAY;AAAA,EACd,EAAE;AAEF,SAAO;AAAA,IACL,OAAO,CAAC,CAAC,MAAM;AAAA,IACf,MAAM,MAAM;AAAA,IACZ,SAAS,MAAM;AAAA,IACf,QAAQ,CAAC,CAAC,MAAM;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA,uBAAuB,MAAM,yBAAyB;AAAA,IACtD,uBAAuB,MAAM,yBAAyB;AAAA,IACtD,OAAO,MAAM;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
4
+ "mappings": "AAAA,SAAyB,0BAA0B;AACnD,SAAS,mBAAmB;AAC5B,SAAS,4BAA4B;AACrC,OAAO,SAAS,aAAa,WAAW,SAAS,gBAAgB;AAO1D,SAAS,sBACd,OACA,OACA,UAEI,CAAC,GACL;AACA,QAAM,aAAa,MAAM,OAAuB,IAAI;AACpD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAiB,CAAC;AACpD,QAAM,iBAAiB,MAAM,cAAc,CAAC,EAAE;AAE9C,QAAM,aAAa;AAAA,IACjB,MAAO,MAAM,wBAAwB,CAAC,GAAG,gBAAgB,CAAC,IAAI;AAAA;AAAA,IAE9D,CAAC,KAAK,UAAU,cAAc,GAAG,MAAM,qBAAqB;AAAA,EAC9D;AAGA,QAAM,CAAC,WAAW,oBAAoB,IAAI,qBAAqB;AAAA,IAC7D,MAAM,MAAM;AAAA,IACZ,aAAa,MAAM,oBAAoB,MAAM,OAAO,IAAI;AAAA,IACxD,UAAU,MAAM;AAAA,IAChB,UAAU;AAAA,IACV,YAAY;AAAA,EACd,CAAC;AAED,QAAM,WAAW,MAAM,SAAS,QAAQ,KAAK;AAE7C,QAAM,EAAE,KAAK,IAAI;AAEjB,QAAM,cAAc;AAAA,IAClB,CAAC,SAAiB;AAEhB,UAAI,MAAM,yBAAyB,SAAS,WAAW,SAAS,GAAG;AACjE,cAAM,QAAQ,KAAK;AAAA,MACrB,OAAO;AACL,6BAAqB,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,CAAC,MAAM,uBAAuB,WAAW,QAAQ,sBAAsB,MAAM,OAAO;AAAA,EACtF;AAEA,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,WAAW,KAAK,CAAC,MAAM,IAAI,KAAK,IAAI,GAAG,GAAG;AAC5C,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,MAAI,QAAQ,MAAM,yBAAyB,aAAa,WAAW,SAAS,GAAG;AAC7E,yBAAqB,CAAC;AAAA,EACxB;AAGA,QAAM,wBAAwB,QAAQ,WAAW;AACjD,YAAU,MAAM;AACd,QAAI,uBAAuB;AACzB,kBAAY,CAAC;AAAA,IACf;AAAA,EACF,GAAG,CAAC,aAAa,qBAAqB,CAAC;AAEvC,QAAM,SAAS,mBAAmB;AAClC,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AAEA,QAAM,eAAe,YAA0B,OAAO;AAAA,IACpD,SAAS;AAAA,IACT,GAAG;AAAA,IACH,OAAO;AAAA,IACP,UAAU;AAAA,IACV,cAAc;AAAA,IACd,MAAM,MAAM;AAAA,IAAC;AAAA,IACb,SAAS,MAAM;AAAA,IAAC;AAAA,IAChB,YAAY;AAAA,EACd,EAAE;AAEF,QAAM,sBAAsB,MAAM,6BAA6B,QAAQ,MAAM;AAE7E,QAAM,gBAAgB;AAAA,IACpB;AAAA,IACA;AAAA,IACA,OAAO,CAAC,CAAC,MAAM;AAAA,IACf,MAAM,MAAM;AAAA,IACZ,SAAS,MAAM;AAAA,IACf,QAAQ,CAAC,CAAC,MAAM;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA,uBAAuB,MAAM,yBAAyB;AAAA,IACtD,uBAAuB,MAAM,yBAAyB;AAAA,IACtD,oBAAoB,QAAQ;AAAA,IAC5B,OAAO,MAAM;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,EACjB;AAEA,SAAO;AACT;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/sheet",
3
- "version": "1.27.0",
3
+ "version": "1.27.2",
4
4
  "sideEffects": [
5
5
  "*.css"
6
6
  ],
@@ -30,24 +30,24 @@
30
30
  }
31
31
  },
32
32
  "dependencies": {
33
- "@tamagui/animations-react-native": "1.27.0",
34
- "@tamagui/compose-refs": "1.27.0",
35
- "@tamagui/core": "1.27.0",
36
- "@tamagui/create-context": "1.27.0",
37
- "@tamagui/portal": "1.27.0",
38
- "@tamagui/remove-scroll": "1.27.0",
39
- "@tamagui/scroll-view": "1.27.0",
40
- "@tamagui/stacks": "1.27.0",
41
- "@tamagui/use-constant": "1.27.0",
42
- "@tamagui/use-controllable-state": "1.27.0",
43
- "@tamagui/use-keyboard-visible": "1.27.0"
33
+ "@tamagui/animations-react-native": "1.27.2",
34
+ "@tamagui/compose-refs": "1.27.2",
35
+ "@tamagui/core": "1.27.2",
36
+ "@tamagui/create-context": "1.27.2",
37
+ "@tamagui/portal": "1.27.2",
38
+ "@tamagui/remove-scroll": "1.27.2",
39
+ "@tamagui/scroll-view": "1.27.2",
40
+ "@tamagui/stacks": "1.27.2",
41
+ "@tamagui/use-constant": "1.27.2",
42
+ "@tamagui/use-controllable-state": "1.27.2",
43
+ "@tamagui/use-keyboard-visible": "1.27.2"
44
44
  },
45
45
  "peerDependencies": {
46
46
  "react": "*",
47
47
  "react-native": "*"
48
48
  },
49
49
  "devDependencies": {
50
- "@tamagui/build": "1.27.0",
50
+ "@tamagui/build": "1.27.2",
51
51
  "react": "^18.2.0",
52
52
  "react-native": "^0.71.7"
53
53
  },
package/src/Sheet.tsx CHANGED
@@ -98,7 +98,6 @@ export const Frame = styled(YStack, {
98
98
  width: '100%',
99
99
  maxHeight: '100%',
100
100
  overflow: 'hidden',
101
- pointerEvents: 'auto',
102
101
  },
103
102
  },
104
103
  } as const,
@@ -1,22 +1,7 @@
1
- import { TamaguiElement } from '@tamagui/core'
2
1
  import { createContextScope } from '@tamagui/create-context'
3
- import React from 'react'
4
2
 
5
3
  import { SHEET_NAME } from './constants'
6
- import { PositionChangeHandler, ScrollBridge, SheetProps } from './types'
7
-
8
- type SheetContextValue = Required<
9
- Pick<SheetProps, 'open' | 'position' | 'snapPoints' | 'dismissOnOverlayPress'>
10
- > & {
11
- hidden: boolean
12
- setPosition: PositionChangeHandler
13
- setOpen: React.Dispatch<React.SetStateAction<boolean>>
14
- contentRef: React.RefObject<TamaguiElement>
15
- dismissOnSnapToBottom: boolean
16
- scrollBridge: ScrollBridge
17
- frameSize: number
18
- modal: boolean
19
- }
4
+ import { SheetContextValue } from './useSheetProviderProps'
20
5
 
21
6
  export const [createSheetContext, createSheetScope] = createContextScope(SHEET_NAME)
22
7