@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.
- package/dist/cjs/Sheet.js +1 -2
- package/dist/cjs/Sheet.js.map +1 -1
- package/dist/cjs/SheetContext.js.map +1 -1
- package/dist/cjs/SheetImplementationCustom.js +340 -0
- package/dist/cjs/SheetImplementationCustom.js.map +6 -0
- package/dist/cjs/constants.js +10 -0
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/contexts.js +35 -0
- package/dist/cjs/contexts.js.map +6 -0
- package/dist/cjs/createSheet.js +68 -342
- package/dist/cjs/createSheet.js.map +2 -2
- package/dist/cjs/helpers.js +38 -0
- package/dist/cjs/helpers.js.map +6 -0
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/nativeSheet.js +3 -5
- package/dist/cjs/nativeSheet.js.map +1 -1
- package/dist/cjs/useSheet.js +30 -0
- package/dist/cjs/useSheet.js.map +6 -0
- package/dist/cjs/useSheetChildren.js +4 -2
- package/dist/cjs/useSheetChildren.js.map +1 -1
- package/dist/cjs/useSheetController.js +2 -1
- package/dist/cjs/useSheetController.js.map +1 -1
- package/dist/cjs/useSheetProviderProps.js +30 -3
- package/dist/cjs/useSheetProviderProps.js.map +1 -1
- package/dist/esm/Sheet.js +1 -2
- package/dist/esm/Sheet.js.map +1 -1
- package/dist/esm/SheetContext.js.map +1 -1
- package/dist/esm/SheetImplementationCustom.js +336 -0
- package/dist/esm/SheetImplementationCustom.js.map +6 -0
- package/dist/esm/constants.js +8 -0
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/contexts.js +10 -0
- package/dist/esm/contexts.js.map +6 -0
- package/dist/esm/createSheet.js +72 -364
- package/dist/esm/createSheet.js.map +2 -2
- package/dist/esm/helpers.js +14 -0
- package/dist/esm/helpers.js.map +6 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/nativeSheet.js +3 -5
- package/dist/esm/nativeSheet.js.map +1 -1
- package/dist/esm/useSheet.js +6 -0
- package/dist/esm/useSheet.js.map +6 -0
- package/dist/esm/useSheetChildren.js +4 -2
- package/dist/esm/useSheetChildren.js.map +1 -1
- package/dist/esm/useSheetController.js +2 -1
- package/dist/esm/useSheetController.js.map +1 -1
- package/dist/esm/useSheetProviderProps.js +31 -4
- package/dist/esm/useSheetProviderProps.js.map +1 -1
- package/dist/jsx/Sheet.js +1 -2
- package/dist/jsx/Sheet.js.map +1 -1
- package/dist/jsx/Sheet.mjs +1 -2
- package/dist/jsx/Sheet.mjs.map +1 -1
- package/dist/jsx/SheetContext.js.map +1 -1
- package/dist/jsx/SheetContext.mjs.map +1 -1
- package/dist/jsx/SheetImplementationCustom.js +330 -0
- package/dist/jsx/SheetImplementationCustom.js.map +6 -0
- package/dist/jsx/SheetImplementationCustom.mjs +330 -0
- package/dist/jsx/SheetImplementationCustom.mjs.map +6 -0
- package/dist/jsx/constants.js +8 -0
- package/dist/jsx/constants.js.map +1 -1
- package/dist/jsx/constants.mjs +8 -0
- package/dist/jsx/constants.mjs.map +1 -1
- package/dist/jsx/contexts.js +10 -0
- package/dist/jsx/contexts.js.map +6 -0
- package/dist/jsx/contexts.mjs +10 -0
- package/dist/jsx/contexts.mjs.map +6 -0
- package/dist/jsx/createSheet.js +63 -354
- package/dist/jsx/createSheet.js.map +2 -2
- package/dist/jsx/createSheet.mjs +63 -354
- package/dist/jsx/createSheet.mjs.map +2 -2
- package/dist/jsx/helpers.js +14 -0
- package/dist/jsx/helpers.js.map +6 -0
- package/dist/jsx/helpers.mjs +14 -0
- package/dist/jsx/helpers.mjs.map +6 -0
- package/dist/jsx/index.js +1 -0
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +1 -0
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/nativeSheet.js +3 -5
- package/dist/jsx/nativeSheet.js.map +1 -1
- package/dist/jsx/nativeSheet.mjs +3 -5
- package/dist/jsx/nativeSheet.mjs.map +1 -1
- package/dist/jsx/useSheet.js +6 -0
- package/dist/jsx/useSheet.js.map +6 -0
- package/dist/jsx/useSheet.mjs +6 -0
- package/dist/jsx/useSheet.mjs.map +6 -0
- package/dist/jsx/useSheetChildren.js +4 -2
- package/dist/jsx/useSheetChildren.js.map +1 -1
- package/dist/jsx/useSheetChildren.mjs +4 -2
- package/dist/jsx/useSheetChildren.mjs.map +1 -1
- package/dist/jsx/useSheetController.js +2 -1
- package/dist/jsx/useSheetController.js.map +1 -1
- package/dist/jsx/useSheetController.mjs +2 -1
- package/dist/jsx/useSheetController.mjs.map +1 -1
- package/dist/jsx/useSheetProviderProps.js +31 -4
- package/dist/jsx/useSheetProviderProps.js.map +1 -1
- package/dist/jsx/useSheetProviderProps.mjs +31 -4
- package/dist/jsx/useSheetProviderProps.mjs.map +1 -1
- package/package.json +13 -13
- package/src/Sheet.tsx +0 -1
- package/src/SheetContext.tsx +1 -16
- package/src/SheetImplementationCustom.tsx +404 -0
- package/src/constants.tsx +10 -0
- package/src/contexts.ts +9 -0
- package/src/createSheet.tsx +88 -441
- package/src/helpers.tsx +10 -0
- package/src/index.ts +1 -0
- package/src/nativeSheet.tsx +3 -5
- package/src/useSheet.tsx +3 -0
- package/src/useSheetController.tsx +1 -0
- package/src/useSheetProviderProps.tsx +48 -7
- package/types/Sheet.d.ts +10 -6
- package/types/Sheet.d.ts.map +1 -1
- package/types/SheetContext.d.ts +100 -27
- package/types/SheetContext.d.ts.map +1 -1
- package/types/SheetImplementationCustom.d.ts +27 -0
- package/types/SheetImplementationCustom.d.ts.map +1 -0
- package/types/constants.d.ts +2 -0
- package/types/constants.d.ts.map +1 -1
- package/types/contexts.d.ts +6 -0
- package/types/contexts.d.ts.map +1 -0
- package/types/createSheet.d.ts +8 -4
- package/types/createSheet.d.ts.map +1 -1
- package/types/helpers.d.ts +2 -0
- package/types/helpers.d.ts.map +1 -0
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/nativeSheet.d.ts.map +1 -1
- package/types/useSheet.d.ts +22 -0
- package/types/useSheet.d.ts.map +1 -0
- package/types/useSheetChildren.d.ts +1 -0
- package/types/useSheetChildren.d.ts.map +1 -1
- package/types/useSheetController.d.ts +1 -0
- package/types/useSheetController.d.ts.map +1 -1
- package/types/useSheetProviderProps.d.ts +8 -3
- package/types/useSheetProviderProps.d.ts.map +1 -1
- package/src/useSheetChildren.tsx +0 -47
- package/src/useSheetSnapPoints.tsx +0 -60
|
@@ -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
|
-
|
|
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;
|
|
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
|
-
|
|
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;
|
|
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
|
}
|
|
@@ -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,
|
|
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,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,
|
|
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
|
-
|
|
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
|
-
|
|
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": "
|
|
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
|
-
|
|
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
|
-
|
|
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": "
|
|
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.
|
|
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.
|
|
34
|
-
"@tamagui/compose-refs": "1.27.
|
|
35
|
-
"@tamagui/core": "1.27.
|
|
36
|
-
"@tamagui/create-context": "1.27.
|
|
37
|
-
"@tamagui/portal": "1.27.
|
|
38
|
-
"@tamagui/remove-scroll": "1.27.
|
|
39
|
-
"@tamagui/scroll-view": "1.27.
|
|
40
|
-
"@tamagui/stacks": "1.27.
|
|
41
|
-
"@tamagui/use-constant": "1.27.
|
|
42
|
-
"@tamagui/use-controllable-state": "1.27.
|
|
43
|
-
"@tamagui/use-keyboard-visible": "1.27.
|
|
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.
|
|
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
package/src/SheetContext.tsx
CHANGED
|
@@ -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 {
|
|
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
|
|