@tamagui/sheet 1.29.5 → 1.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/SheetImplementationCustom.js +44 -24
- package/dist/cjs/SheetImplementationCustom.js.map +1 -1
- package/dist/cjs/SheetScrollView.js +4 -15
- package/dist/cjs/SheetScrollView.js.map +1 -1
- package/dist/cjs/createSheet.js +15 -8
- package/dist/cjs/createSheet.js.map +1 -1
- package/dist/cjs/useSheetOffscreenSize.js +39 -0
- package/dist/cjs/useSheetOffscreenSize.js.map +6 -0
- package/dist/cjs/useSheetProviderProps.js +4 -0
- package/dist/cjs/useSheetProviderProps.js.map +1 -1
- package/dist/esm/SheetImplementationCustom.js +44 -24
- package/dist/esm/SheetImplementationCustom.js.map +1 -1
- package/dist/esm/SheetScrollView.js +7 -18
- package/dist/esm/SheetScrollView.js.map +1 -1
- package/dist/esm/createSheet.js +16 -8
- package/dist/esm/createSheet.js.map +1 -1
- package/dist/esm/useSheetOffscreenSize.js +15 -0
- package/dist/esm/useSheetOffscreenSize.js.map +6 -0
- package/dist/esm/useSheetProviderProps.js +4 -0
- package/dist/esm/useSheetProviderProps.js.map +1 -1
- package/dist/jsx/SheetImplementationCustom.js +43 -23
- package/dist/jsx/SheetImplementationCustom.js.map +1 -1
- package/dist/jsx/SheetImplementationCustom.mjs +43 -23
- package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
- package/dist/jsx/SheetScrollView.js +5 -16
- package/dist/jsx/SheetScrollView.js.map +1 -1
- package/dist/jsx/SheetScrollView.mjs +5 -16
- package/dist/jsx/SheetScrollView.mjs.map +1 -1
- package/dist/jsx/createSheet.js +16 -8
- package/dist/jsx/createSheet.js.map +1 -1
- package/dist/jsx/createSheet.mjs +16 -8
- package/dist/jsx/createSheet.mjs.map +1 -1
- package/dist/jsx/useSheetOffscreenSize.js +15 -0
- package/dist/jsx/useSheetOffscreenSize.js.map +6 -0
- package/dist/jsx/useSheetOffscreenSize.mjs +15 -0
- package/dist/jsx/useSheetOffscreenSize.mjs.map +6 -0
- package/dist/jsx/useSheetProviderProps.js +4 -0
- package/dist/jsx/useSheetProviderProps.js.map +1 -1
- package/dist/jsx/useSheetProviderProps.mjs +4 -0
- package/dist/jsx/useSheetProviderProps.mjs.map +1 -1
- package/package.json +13 -13
- package/src/SheetImplementationCustom.tsx +55 -26
- package/src/SheetScrollView.tsx +8 -14
- package/src/createSheet.tsx +14 -9
- package/src/types.tsx +5 -0
- package/src/useSheetOffscreenSize.tsx +13 -0
- package/src/useSheetProviderProps.tsx +5 -0
- package/types/Sheet.d.ts +1 -0
- package/types/Sheet.d.ts.map +1 -1
- package/types/SheetContext.d.ts +10 -0
- package/types/SheetContext.d.ts.map +1 -1
- package/types/SheetImplementationCustom.d.ts +1 -0
- package/types/SheetImplementationCustom.d.ts.map +1 -1
- package/types/SheetScrollView.d.ts.map +1 -1
- package/types/createSheet.d.ts +1 -0
- package/types/createSheet.d.ts.map +1 -1
- package/types/types.d.ts +4 -0
- package/types/types.d.ts.map +1 -1
- package/types/useSheet.d.ts +2 -0
- package/types/useSheet.d.ts.map +1 -1
- package/types/useSheetOffscreenSize.d.ts +3 -0
- package/types/useSheetOffscreenSize.d.ts.map +1 -0
- package/types/useSheetProviderProps.d.ts +2 -0
- package/types/useSheetProviderProps.d.ts.map +1 -1
package/dist/jsx/createSheet.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
2
2
|
import {
|
|
3
|
+
Stack,
|
|
3
4
|
mergeEvent,
|
|
4
5
|
useDidFinishSSR,
|
|
5
6
|
withStaticProperties
|
|
@@ -17,6 +18,7 @@ import { useSheetContext } from "./SheetContext";
|
|
|
17
18
|
import { SheetImplementationCustom } from "./SheetImplementationCustom";
|
|
18
19
|
import { SheetScrollView } from "./SheetScrollView";
|
|
19
20
|
import { useSheetController } from "./useSheetController";
|
|
21
|
+
import { useSheetOffscreenSize } from "./useSheetOffscreenSize";
|
|
20
22
|
function createSheet({ Handle, Frame, Overlay }) {
|
|
21
23
|
const SheetHandle = Handle.extractable(
|
|
22
24
|
({ __scopeSheet, ...props }) => {
|
|
@@ -73,7 +75,6 @@ function createSheet({ Handle, Frame, Overlay }) {
|
|
|
73
75
|
return null;
|
|
74
76
|
}
|
|
75
77
|
);
|
|
76
|
-
const SHEET_COVER_NAME = `${SHEET_NAME}Cover`;
|
|
77
78
|
const SheetFrame = Frame.extractable(
|
|
78
79
|
forwardRef(
|
|
79
80
|
({
|
|
@@ -82,33 +83,40 @@ function createSheet({ Handle, Frame, Overlay }) {
|
|
|
82
83
|
...props
|
|
83
84
|
}, forwardedRef) => {
|
|
84
85
|
const context = useSheetContext(SHEET_NAME, __scopeSheet);
|
|
85
|
-
const
|
|
86
|
+
const { removeScrollEnabled, frameSize, contentRef } = context;
|
|
87
|
+
const composedContentRef = useComposedRefs(forwardedRef, contentRef);
|
|
88
|
+
const offscreenSize = useSheetOffscreenSize(context);
|
|
86
89
|
return <>
|
|
87
90
|
<RemoveScroll
|
|
88
91
|
forwardProps
|
|
89
|
-
enabled={
|
|
92
|
+
enabled={removeScrollEnabled}
|
|
90
93
|
allowPinchZoom
|
|
91
|
-
shards={[
|
|
94
|
+
shards={[contentRef]}
|
|
92
95
|
removeScrollBar={false}
|
|
93
96
|
>
|
|
94
97
|
{
|
|
95
98
|
/* @ts-ignore */
|
|
96
99
|
}
|
|
97
|
-
<Frame ref={composedContentRef} {...props}>
|
|
100
|
+
<Frame ref={composedContentRef} height={frameSize} {...props}>
|
|
101
|
+
{children}
|
|
102
|
+
<Stack data-sheet-offscreen-pad height={offscreenSize} width="100%" />
|
|
103
|
+
</Frame>
|
|
98
104
|
</RemoveScroll>
|
|
99
105
|
{
|
|
100
106
|
/* below frame hide when bouncing past 100% */
|
|
101
107
|
}
|
|
102
108
|
{!props.disableHideBottomOverflow && // @ts-ignore
|
|
103
109
|
<Frame
|
|
104
|
-
componentName={SHEET_COVER_NAME}
|
|
105
110
|
{...props}
|
|
111
|
+
componentName="SheetCover"
|
|
106
112
|
children={null}
|
|
107
113
|
position="absolute"
|
|
108
|
-
bottom=
|
|
109
|
-
|
|
114
|
+
bottom="-50%"
|
|
115
|
+
zIndex={-1}
|
|
116
|
+
height={context.frameSize}
|
|
110
117
|
left={0}
|
|
111
118
|
right={0}
|
|
119
|
+
borderWidth={0}
|
|
112
120
|
borderRadius={0}
|
|
113
121
|
shadowOpacity={0}
|
|
114
122
|
/>}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createSheet.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,uBAAuB;AAChC;AAAA,
|
|
4
|
+
"mappings": "AAAA,SAAS,uBAAuB;AAChC;AAAA,EAEE;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,oBAAoB;AAC7B;AAAA,EAGE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,gBAAsB;AAE/B,SAAS,mBAAmB,YAAY,0BAA0B;AAClE,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;AAChC,SAAS,iCAAiC;AAC1C,SAAS,uBAAuB;AAEhC,SAAS,0BAA0B;AACnC,SAAS,6BAA6B;AAU/B,SAAS,YAId,EAAE,QAAQ,OAAO,QAAQ,GAAwC;AACjE,QAAM,cAAc,OAAO;AAAA,IACzB,CAAC,EAAE,cAAc,GAAG,MAAM,MAAiD;AACzE,YAAM,UAAU,gBAAgB,mBAAmB,YAAY;AAE/D,UAAI,QAAQ,eAAe;AACzB,eAAO;AAAA,MACT;AAEA;AAAA;AAAA,QAEE,CAAC;AAAA,UACC,SAAS,MAAM;AAEb,kBAAM,MACJ,QAAQ,WAAW,UAAU,QAAQ,wBAAwB,KAAK;AACpE,kBAAM,WAAW,QAAQ,WAAW,KAAK;AACzC,oBAAQ,YAAY,OAAO;AAAA,UAC7B;AAAA,UACA,MAAM,QAAQ;AAAA,cACV;AAAA,QACN;AAAA;AAAA,IAEJ;AAAA,EACF;AAMA,QAAM,eAAe,QAAQ;AAAA,IAC3B,CAAC,YAAwD;AACvD,YAAM,EAAE,cAAc,GAAG,MAAM,IAAI;AACnC,YAAM,UAAU,gBAAgB,oBAAoB,YAAY;AAKhE,YAAM,UAAU;AAAA,QACd;AAAA;AAAA,UAEE,CAAC;AAAA,YACC,MAAM,QAAQ,QAAQ,CAAC,QAAQ;AAAA,gBAC3B;AAAA,YACJ,SAAS;AAAA,cACP,MAAM;AAAA,cACN,QAAQ,wBACJ,MAAM;AACJ,wBAAQ,QAAQ,KAAK;AAAA,cACvB,IACA;AAAA,YACN;AAAA,UACF;AAAA;AAAA,QAEF;AAAA,UACE,QAAQ;AAAA,UACR;AAAA,UACA,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,QAAQ;AAAA,QACV;AAAA,MACF;AAEA,sBAAgB,MAAM;AACpB,gBAAQ,qBAAqB,OAAO;AAAA,MACtC,GAAG,CAAC,OAAO,CAAC;AAEZ,UAAI,QAAQ,eAAe;AACzB,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AAMA,QAAM,aAAa,MAAM;AAAA,IACvB;AAAA,MACE,CACE;AAAA,QACE;AAAA,QACA;AAAA,QACA,GAAG;AAAA,MACL,GAKA,iBACG;AACH,cAAM,UAAU,gBAAgB,YAAY,YAAY;AACxD,cAAM,EAAE,qBAAqB,WAAW,WAAW,IAAI;AACvD,cAAM,qBAAqB,gBAAgB,cAAc,UAAU;AACnE,cAAM,gBAAgB,sBAAsB,OAAO;AAEnD,eACE;AAAA,UACE,CAAC;AAAA,YACC;AAAA,YACA,SAAS;AAAA,YACT;AAAA,YACA,QAAQ,CAAC,UAAU;AAAA,YAEnB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,YAGjB,CAAC,MAAM,KAAK,oBAAoB,QAAQ,eAAe;AAAA,eACpD;AAAA,cACD,CAAC,MAAM,yBAAyB,QAAQ,eAAe,MAAM,OAAO;AAAA,YACtE,EAHC;AAAA,UAIH,EAbC;AAAA;AAAA;AAAA;AAAA,WAgBA,CAAC,MAAM;AAAA,UAEN,CAAC;AAAA,gBACK;AAAA,YACJ,cAAc;AAAA,YACd,UAAU;AAAA,YACV,SAAS;AAAA,YACT,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,QAAQ,QAAQ;AAAA,YAChB,MAAM;AAAA,YACN,OAAO;AAAA,YACP,aAAa;AAAA,YACb,cAAc;AAAA,YACd,eAAe;AAAA,UACjB;AAAA,QAEJ;AAAA,MAEJ;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,WAA6B,SAASA,OAAM,OAAO,KAAK;AACpE,UAAM,WAAW,gBAAgB;AACjC,UAAM,EAAE,kBAAkB,IAAI,mBAAmB;AAEjD,QAAI,sBAAsB;AAE1B,QAAI,MAAM,UAAU,SAAS,OAAO,OAAO;AACzC,UAAI,QAAQ,IAAI,mBAAmB,UAAU;AAC3C,cAAM,OAAO,eAAe,KAAK;AACjC,YAAI,MAAM;AACR,gCAAsB;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAKA,QAAI,qBAAqB,CAAC,UAAU;AAClC,aAAO;AAAA,IACT;AAEA,WAAO,CAAC,oBAAoB,KAAK,SAAS,OAAO;AAAA,EACnD,CAAC;AAED,QAAM,aAAa;AAAA,IACjB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,YAAY;AAAA,EACd;AAEA,QAAM,aAAa,qBAAqB,OAAO,UAAU;AAKzD,SAAO,qBAAqB,OAAO;AAAA,IACjC,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACH;",
|
|
5
5
|
"names": ["Sheet"]
|
|
6
6
|
}
|
package/dist/jsx/createSheet.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
2
2
|
import {
|
|
3
|
+
Stack,
|
|
3
4
|
mergeEvent,
|
|
4
5
|
useDidFinishSSR,
|
|
5
6
|
withStaticProperties
|
|
@@ -17,6 +18,7 @@ import { useSheetContext } from "./SheetContext";
|
|
|
17
18
|
import { SheetImplementationCustom } from "./SheetImplementationCustom";
|
|
18
19
|
import { SheetScrollView } from "./SheetScrollView";
|
|
19
20
|
import { useSheetController } from "./useSheetController";
|
|
21
|
+
import { useSheetOffscreenSize } from "./useSheetOffscreenSize";
|
|
20
22
|
function createSheet({ Handle, Frame, Overlay }) {
|
|
21
23
|
const SheetHandle = Handle.extractable(
|
|
22
24
|
({ __scopeSheet, ...props }) => {
|
|
@@ -73,7 +75,6 @@ function createSheet({ Handle, Frame, Overlay }) {
|
|
|
73
75
|
return null;
|
|
74
76
|
}
|
|
75
77
|
);
|
|
76
|
-
const SHEET_COVER_NAME = `${SHEET_NAME}Cover`;
|
|
77
78
|
const SheetFrame = Frame.extractable(
|
|
78
79
|
forwardRef(
|
|
79
80
|
({
|
|
@@ -82,33 +83,40 @@ function createSheet({ Handle, Frame, Overlay }) {
|
|
|
82
83
|
...props
|
|
83
84
|
}, forwardedRef) => {
|
|
84
85
|
const context = useSheetContext(SHEET_NAME, __scopeSheet);
|
|
85
|
-
const
|
|
86
|
+
const { removeScrollEnabled, frameSize, contentRef } = context;
|
|
87
|
+
const composedContentRef = useComposedRefs(forwardedRef, contentRef);
|
|
88
|
+
const offscreenSize = useSheetOffscreenSize(context);
|
|
86
89
|
return <>
|
|
87
90
|
<RemoveScroll
|
|
88
91
|
forwardProps
|
|
89
|
-
enabled={
|
|
92
|
+
enabled={removeScrollEnabled}
|
|
90
93
|
allowPinchZoom
|
|
91
|
-
shards={[
|
|
94
|
+
shards={[contentRef]}
|
|
92
95
|
removeScrollBar={false}
|
|
93
96
|
>
|
|
94
97
|
{
|
|
95
98
|
/* @ts-ignore */
|
|
96
99
|
}
|
|
97
|
-
<Frame ref={composedContentRef} {...props}>
|
|
100
|
+
<Frame ref={composedContentRef} height={frameSize} {...props}>
|
|
101
|
+
{children}
|
|
102
|
+
<Stack data-sheet-offscreen-pad height={offscreenSize} width="100%" />
|
|
103
|
+
</Frame>
|
|
98
104
|
</RemoveScroll>
|
|
99
105
|
{
|
|
100
106
|
/* below frame hide when bouncing past 100% */
|
|
101
107
|
}
|
|
102
108
|
{!props.disableHideBottomOverflow && // @ts-ignore
|
|
103
109
|
<Frame
|
|
104
|
-
componentName={SHEET_COVER_NAME}
|
|
105
110
|
{...props}
|
|
111
|
+
componentName="SheetCover"
|
|
106
112
|
children={null}
|
|
107
113
|
position="absolute"
|
|
108
|
-
bottom=
|
|
109
|
-
|
|
114
|
+
bottom="-50%"
|
|
115
|
+
zIndex={-1}
|
|
116
|
+
height={context.frameSize}
|
|
110
117
|
left={0}
|
|
111
118
|
right={0}
|
|
119
|
+
borderWidth={0}
|
|
112
120
|
borderRadius={0}
|
|
113
121
|
shadowOpacity={0}
|
|
114
122
|
/>}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createSheet.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,uBAAuB;AAChC;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["Sheet"]
|
|
6
6
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const useSheetOffscreenSize = ({
|
|
2
|
+
snapPoints,
|
|
3
|
+
position,
|
|
4
|
+
screenSize
|
|
5
|
+
}) => {
|
|
6
|
+
const maxPercentOpened = snapPoints[0] / 100;
|
|
7
|
+
const percentOpened = (snapPoints[position] || 0) / 100;
|
|
8
|
+
const percentHidden = 1 - maxPercentOpened - percentOpened;
|
|
9
|
+
const offscreenSize = percentHidden * screenSize;
|
|
10
|
+
return offscreenSize;
|
|
11
|
+
};
|
|
12
|
+
export {
|
|
13
|
+
useSheetOffscreenSize
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=useSheetOffscreenSize.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/useSheetOffscreenSize.tsx"],
|
|
4
|
+
"mappings": "AAEO,MAAM,wBAAwB,CAAC;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACF,MAAyB;AACvB,QAAM,mBAAmB,WAAW,CAAC,IAAI;AACzC,QAAM,iBAAiB,WAAW,QAAQ,KAAK,KAAK;AACpD,QAAM,gBAAgB,IAAI,mBAAmB;AAC7C,QAAM,gBAAgB,gBAAgB;AACtC,SAAO;AACT;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const useSheetOffscreenSize = ({
|
|
2
|
+
snapPoints,
|
|
3
|
+
position,
|
|
4
|
+
screenSize
|
|
5
|
+
}) => {
|
|
6
|
+
const maxPercentOpened = snapPoints[0] / 100;
|
|
7
|
+
const percentOpened = (snapPoints[position] || 0) / 100;
|
|
8
|
+
const percentHidden = 1 - maxPercentOpened - percentOpened;
|
|
9
|
+
const offscreenSize = percentHidden * screenSize;
|
|
10
|
+
return offscreenSize;
|
|
11
|
+
};
|
|
12
|
+
export {
|
|
13
|
+
useSheetOffscreenSize
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=useSheetOffscreenSize.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/useSheetOffscreenSize.tsx"],
|
|
4
|
+
"mappings": "AAEO,MAAM,wBAAwB,CAAC;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACF,MAAyB;AACvB,QAAM,mBAAmB,WAAW,CAAC,IAAI;AACzC,QAAM,iBAAiB,WAAW,QAAQ,KAAK,KAAK;AACpD,QAAM,gBAAgB,IAAI,mBAAmB;AAC7C,QAAM,gBAAgB,gBAAgB;AACtC,SAAO;AACT;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -63,7 +63,11 @@ function useSheetProviderProps(props, state, options = {}) {
|
|
|
63
63
|
scrollLock: false
|
|
64
64
|
}));
|
|
65
65
|
const removeScrollEnabled = props.forceRemoveScrollEnabled ?? (open && props.modal);
|
|
66
|
+
const maxSnapPoint = snapPoints.reduce((prev, cur) => Math.max(prev, cur));
|
|
67
|
+
const screenSize = frameSize / (maxSnapPoint / 100);
|
|
66
68
|
const providerProps = {
|
|
69
|
+
screenSize,
|
|
70
|
+
maxSnapPoint,
|
|
67
71
|
removeScrollEnabled,
|
|
68
72
|
scrollBridge,
|
|
69
73
|
modal: !!props.modal,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/useSheetProviderProps.tsx"],
|
|
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;",
|
|
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,eAAe,WAAW,OAAO,CAAC,MAAM,QAAQ,KAAK,IAAI,MAAM,GAAG,CAAC;AACzE,QAAM,aAAa,aAAa,eAAe;AAE/C,QAAM,gBAAgB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;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
|
}
|
|
@@ -63,7 +63,11 @@ function useSheetProviderProps(props, state, options = {}) {
|
|
|
63
63
|
scrollLock: false
|
|
64
64
|
}));
|
|
65
65
|
const removeScrollEnabled = props.forceRemoveScrollEnabled ?? (open && props.modal);
|
|
66
|
+
const maxSnapPoint = snapPoints.reduce((prev, cur) => Math.max(prev, cur));
|
|
67
|
+
const screenSize = frameSize / (maxSnapPoint / 100);
|
|
66
68
|
const providerProps = {
|
|
69
|
+
screenSize,
|
|
70
|
+
maxSnapPoint,
|
|
67
71
|
removeScrollEnabled,
|
|
68
72
|
scrollBridge,
|
|
69
73
|
modal: !!props.modal,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/useSheetProviderProps.tsx"],
|
|
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;",
|
|
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,eAAe,WAAW,OAAO,CAAC,MAAM,QAAQ,KAAK,IAAI,MAAM,GAAG,CAAC;AACzE,QAAM,aAAa,aAAa,eAAe;AAE/C,QAAM,gBAAgB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;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.
|
|
3
|
+
"version": "1.30.0",
|
|
4
4
|
"sideEffects": [
|
|
5
5
|
"*.css"
|
|
6
6
|
],
|
|
@@ -31,24 +31,24 @@
|
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@tamagui/animations-react-native": "1.
|
|
35
|
-
"@tamagui/compose-refs": "1.
|
|
36
|
-
"@tamagui/core": "1.
|
|
37
|
-
"@tamagui/create-context": "1.
|
|
38
|
-
"@tamagui/portal": "1.
|
|
39
|
-
"@tamagui/remove-scroll": "1.
|
|
40
|
-
"@tamagui/scroll-view": "1.
|
|
41
|
-
"@tamagui/stacks": "1.
|
|
42
|
-
"@tamagui/use-constant": "1.
|
|
43
|
-
"@tamagui/use-controllable-state": "1.
|
|
44
|
-
"@tamagui/use-keyboard-visible": "1.
|
|
34
|
+
"@tamagui/animations-react-native": "1.30.0",
|
|
35
|
+
"@tamagui/compose-refs": "1.30.0",
|
|
36
|
+
"@tamagui/core": "1.30.0",
|
|
37
|
+
"@tamagui/create-context": "1.30.0",
|
|
38
|
+
"@tamagui/portal": "1.30.0",
|
|
39
|
+
"@tamagui/remove-scroll": "1.30.0",
|
|
40
|
+
"@tamagui/scroll-view": "1.30.0",
|
|
41
|
+
"@tamagui/stacks": "1.30.0",
|
|
42
|
+
"@tamagui/use-constant": "1.30.0",
|
|
43
|
+
"@tamagui/use-controllable-state": "1.30.0",
|
|
44
|
+
"@tamagui/use-keyboard-visible": "1.30.0"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"react": "*",
|
|
48
48
|
"react-native": "*"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@tamagui/build": "1.
|
|
51
|
+
"@tamagui/build": "1.30.0",
|
|
52
52
|
"react": "^18.2.0",
|
|
53
53
|
"react-native": "^0.71.7"
|
|
54
54
|
},
|
|
@@ -48,6 +48,7 @@ export const SheetImplementationCustom = themeable(
|
|
|
48
48
|
modal = false,
|
|
49
49
|
zIndex = parentSheet.zIndex + 1,
|
|
50
50
|
moveOnKeyboardChange = false,
|
|
51
|
+
unmountChildrenWhenHidden = false,
|
|
51
52
|
portalProps,
|
|
52
53
|
} = props
|
|
53
54
|
|
|
@@ -57,8 +58,16 @@ export const SheetImplementationCustom = themeable(
|
|
|
57
58
|
const providerProps = useSheetProviderProps(props, state, {
|
|
58
59
|
onOverlayComponent: setOverlayComponent,
|
|
59
60
|
})
|
|
60
|
-
const {
|
|
61
|
-
|
|
61
|
+
const {
|
|
62
|
+
frameSize,
|
|
63
|
+
setFrameSize,
|
|
64
|
+
snapPoints,
|
|
65
|
+
position,
|
|
66
|
+
setPosition,
|
|
67
|
+
scrollBridge,
|
|
68
|
+
screenSize,
|
|
69
|
+
maxSnapPoint,
|
|
70
|
+
} = providerProps
|
|
62
71
|
const { open, controller, isHidden } = state
|
|
63
72
|
|
|
64
73
|
const sheetRef = useRef<View>(null)
|
|
@@ -74,9 +83,6 @@ export const SheetImplementationCustom = themeable(
|
|
|
74
83
|
setIsShowingInnerSheet(hasChild)
|
|
75
84
|
}, [])
|
|
76
85
|
|
|
77
|
-
const maxSnapPoint = snapPoints.reduce((prev, cur) => Math.max(prev, cur))
|
|
78
|
-
const screenSize = frameSize / (maxSnapPoint / 100)
|
|
79
|
-
|
|
80
86
|
const positions = useMemo(
|
|
81
87
|
() => snapPoints.map((point) => getPercentSize(point, screenSize)),
|
|
82
88
|
[frameSize, snapPoints]
|
|
@@ -105,9 +111,8 @@ export const SheetImplementationCustom = themeable(
|
|
|
105
111
|
)
|
|
106
112
|
|
|
107
113
|
const animatedNumber = useAnimatedNumber(HIDDEN_SIZE)
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const at = useRef(0)
|
|
114
|
+
const at = useRef(HIDDEN_SIZE)
|
|
115
|
+
const currentId = useRef(0)
|
|
111
116
|
|
|
112
117
|
useAnimatedNumberReaction(
|
|
113
118
|
{
|
|
@@ -129,35 +134,51 @@ export const SheetImplementationCustom = themeable(
|
|
|
129
134
|
}
|
|
130
135
|
}
|
|
131
136
|
|
|
137
|
+
const hasntMeasured = at.current === HIDDEN_SIZE
|
|
138
|
+
|
|
132
139
|
const animateTo = useEvent((position: number) => {
|
|
133
|
-
const current = animatedNumber.getValue()
|
|
134
|
-
if (isHidden && open) return
|
|
135
|
-
if (!current) return
|
|
136
140
|
if (frameSize === 0) return
|
|
137
|
-
const
|
|
138
|
-
|
|
141
|
+
const toValue =
|
|
142
|
+
hasntMeasured || isHidden || position === -1 ? screenSize : positions[position]
|
|
143
|
+
|
|
139
144
|
if (at.current === toValue) return
|
|
145
|
+
|
|
140
146
|
stopSpring()
|
|
141
|
-
|
|
142
|
-
|
|
147
|
+
|
|
148
|
+
if (hasntMeasured || isHidden) {
|
|
149
|
+
// first run, we need to set to screen size before running
|
|
150
|
+
animatedNumber.setValue(screenSize, {
|
|
143
151
|
type: 'timing',
|
|
144
152
|
duration: 0,
|
|
145
153
|
})
|
|
146
154
|
at.current = toValue
|
|
147
|
-
|
|
155
|
+
|
|
156
|
+
if (isHidden) {
|
|
157
|
+
return
|
|
158
|
+
}
|
|
148
159
|
}
|
|
149
|
-
|
|
150
|
-
const overshootClamping = at.current === HIDDEN_SIZE
|
|
160
|
+
|
|
151
161
|
animatedNumber.setValue(toValue, {
|
|
152
162
|
...animationConfig,
|
|
153
163
|
type: 'spring',
|
|
154
|
-
overshootClamping,
|
|
155
164
|
})
|
|
156
165
|
})
|
|
157
166
|
|
|
158
167
|
useIsomorphicLayoutEffect(() => {
|
|
168
|
+
if (screenSize && hasntMeasured) {
|
|
169
|
+
animatedNumber.setValue(screenSize, {
|
|
170
|
+
type: 'timing',
|
|
171
|
+
duration: 0,
|
|
172
|
+
})
|
|
173
|
+
}
|
|
174
|
+
}, [hasntMeasured, screenSize])
|
|
175
|
+
|
|
176
|
+
useIsomorphicLayoutEffect(() => {
|
|
177
|
+
if (!frameSize || isHidden || (hasntMeasured && !open)) {
|
|
178
|
+
return
|
|
179
|
+
}
|
|
159
180
|
animateTo(position)
|
|
160
|
-
}, [isHidden, frameSize,
|
|
181
|
+
}, [isHidden, frameSize, open, position])
|
|
161
182
|
|
|
162
183
|
const disableDrag = props.disableDrag ?? controller?.disableDrag
|
|
163
184
|
const themeName = useThemeName()
|
|
@@ -274,11 +295,15 @@ export const SheetImplementationCustom = themeable(
|
|
|
274
295
|
|
|
275
296
|
const handleAnimationViewLayout = useCallback(
|
|
276
297
|
(e: LayoutChangeEvent) => {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
298
|
+
const next = (() => {
|
|
299
|
+
let _ = e.nativeEvent?.layout.height
|
|
300
|
+
if (isWeb && isTouchable && !open) {
|
|
301
|
+
// temp fix ios bug where it doesn't go below dynamic bottom...
|
|
302
|
+
_ += 100
|
|
303
|
+
}
|
|
304
|
+
return _
|
|
305
|
+
})()
|
|
306
|
+
|
|
282
307
|
if (!next) return
|
|
283
308
|
setFrameSize(next)
|
|
284
309
|
},
|
|
@@ -351,6 +376,7 @@ export const SheetImplementationCustom = themeable(
|
|
|
351
376
|
zIndex,
|
|
352
377
|
width: '100%',
|
|
353
378
|
height: `${maxSnapPoint}%`,
|
|
379
|
+
minHeight: `${maxSnapPoint}%`,
|
|
354
380
|
opacity,
|
|
355
381
|
},
|
|
356
382
|
animatedStyle,
|
|
@@ -364,10 +390,13 @@ export const SheetImplementationCustom = themeable(
|
|
|
364
390
|
|
|
365
391
|
const adaptContext = useContext(AdaptParentContext)
|
|
366
392
|
|
|
393
|
+
// start mounted so we get an accurate measurement the first time
|
|
394
|
+
const shouldMountChildren = Boolean(opacity || !unmountChildrenWhenHidden)
|
|
395
|
+
|
|
367
396
|
if (modal) {
|
|
368
397
|
const modalContents = (
|
|
369
398
|
<Portal zIndex={zIndex} {...portalProps}>
|
|
370
|
-
{
|
|
399
|
+
{shouldMountChildren && (
|
|
371
400
|
<Theme forceClassName name={themeName}>
|
|
372
401
|
<AdaptParentContext.Provider value={adaptContext}>
|
|
373
402
|
{contents}
|
package/src/SheetScrollView.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TamaguiElement, composeRefs } from '@tamagui/core'
|
|
2
2
|
import { ScrollView, ScrollViewProps } from '@tamagui/scroll-view'
|
|
3
|
-
import { forwardRef, useMemo, useRef
|
|
3
|
+
import { forwardRef, useMemo, useRef } from 'react'
|
|
4
4
|
import { ScrollView as RNScrollView } from 'react-native'
|
|
5
5
|
|
|
6
6
|
import { useSheetContext } from './SheetContext'
|
|
@@ -16,20 +16,15 @@ const SHEET_SCROLL_VIEW_NAME = 'SheetScrollView'
|
|
|
16
16
|
|
|
17
17
|
export const SheetScrollView = forwardRef<TamaguiElement, ScrollViewProps>(
|
|
18
18
|
({ __scopeSheet, children, ...props }: SheetScopedProps<ScrollViewProps>, ref) => {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
__scopeSheet
|
|
22
|
-
)
|
|
19
|
+
const context = useSheetContext(SHEET_SCROLL_VIEW_NAME, __scopeSheet)
|
|
20
|
+
const { scrollBridge } = context
|
|
23
21
|
// const [scrollEnabled, setScrollEnabled_] = useState(true)
|
|
24
22
|
const scrollRef = useRef<RNScrollView | null>(null)
|
|
25
23
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
if (open && next !== percentToPadBottom) {
|
|
31
|
-
setPercentToPadBottom(next)
|
|
32
|
-
}
|
|
24
|
+
// could make it so it has negative bottom margin and then pads the bottom content
|
|
25
|
+
// to avoid clipping effect when resizing smaller
|
|
26
|
+
// or more ideally could use context to register if it has a scrollview and change behavior
|
|
27
|
+
// const offscreenSize = useSheetOffscreenSize(context)
|
|
33
28
|
|
|
34
29
|
// const setScrollEnabled = (next: boolean) => {
|
|
35
30
|
// scrollRef.current?.setNativeProps?.({
|
|
@@ -127,7 +122,6 @@ export const SheetScrollView = forwardRef<TamaguiElement, ScrollViewProps>(
|
|
|
127
122
|
{...props}
|
|
128
123
|
>
|
|
129
124
|
{useMemo(() => children, [children])}
|
|
130
|
-
<Stack height={(percentToPadBottom / 100) * frameSize} width={0} />
|
|
131
125
|
</ScrollView>
|
|
132
126
|
)
|
|
133
127
|
}
|
package/src/createSheet.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useComposedRefs } from '@tamagui/compose-refs'
|
|
2
2
|
import {
|
|
3
3
|
GetProps,
|
|
4
|
+
Stack,
|
|
4
5
|
StackProps,
|
|
5
6
|
TamaguiComponentExpectingVariants,
|
|
6
7
|
mergeEvent,
|
|
@@ -24,6 +25,7 @@ import { SheetImplementationCustom } from './SheetImplementationCustom'
|
|
|
24
25
|
import { SheetScrollView } from './SheetScrollView'
|
|
25
26
|
import { SheetProps, SheetScopedProps } from './types'
|
|
26
27
|
import { useSheetController } from './useSheetController'
|
|
28
|
+
import { useSheetOffscreenSize } from './useSheetOffscreenSize'
|
|
27
29
|
|
|
28
30
|
type SharedSheetProps = {
|
|
29
31
|
open?: boolean
|
|
@@ -116,8 +118,6 @@ export function createSheet<
|
|
|
116
118
|
* Sheet
|
|
117
119
|
* -----------------------------------------------------------------------------------------------*/
|
|
118
120
|
|
|
119
|
-
const SHEET_COVER_NAME = `${SHEET_NAME}Cover`
|
|
120
|
-
|
|
121
121
|
const SheetFrame = Frame.extractable(
|
|
122
122
|
forwardRef(
|
|
123
123
|
(
|
|
@@ -133,21 +133,24 @@ export function createSheet<
|
|
|
133
133
|
forwardedRef
|
|
134
134
|
) => {
|
|
135
135
|
const context = useSheetContext(SHEET_NAME, __scopeSheet)
|
|
136
|
-
const
|
|
136
|
+
const { removeScrollEnabled, frameSize, contentRef } = context
|
|
137
|
+
const composedContentRef = useComposedRefs(forwardedRef, contentRef)
|
|
138
|
+
const offscreenSize = useSheetOffscreenSize(context)
|
|
137
139
|
|
|
138
140
|
return (
|
|
139
141
|
<>
|
|
140
142
|
<RemoveScroll
|
|
141
143
|
forwardProps
|
|
142
|
-
enabled={
|
|
144
|
+
enabled={removeScrollEnabled}
|
|
143
145
|
allowPinchZoom
|
|
144
|
-
shards={[
|
|
146
|
+
shards={[contentRef]}
|
|
145
147
|
// causes lots of bugs on touch web on site
|
|
146
148
|
removeScrollBar={false}
|
|
147
149
|
>
|
|
148
150
|
{/* @ts-ignore */}
|
|
149
|
-
<Frame ref={composedContentRef} {...props}>
|
|
151
|
+
<Frame ref={composedContentRef} height={frameSize} {...props}>
|
|
150
152
|
{children}
|
|
153
|
+
<Stack data-sheet-offscreen-pad height={offscreenSize} width="100%" />
|
|
151
154
|
</Frame>
|
|
152
155
|
</RemoveScroll>
|
|
153
156
|
|
|
@@ -155,14 +158,16 @@ export function createSheet<
|
|
|
155
158
|
{!props.disableHideBottomOverflow && (
|
|
156
159
|
// @ts-ignore
|
|
157
160
|
<Frame
|
|
158
|
-
componentName={SHEET_COVER_NAME}
|
|
159
161
|
{...props}
|
|
162
|
+
componentName="SheetCover"
|
|
160
163
|
children={null}
|
|
161
164
|
position="absolute"
|
|
162
|
-
bottom=
|
|
163
|
-
|
|
165
|
+
bottom="-50%"
|
|
166
|
+
zIndex={-1}
|
|
167
|
+
height={context.frameSize}
|
|
164
168
|
left={0}
|
|
165
169
|
right={0}
|
|
170
|
+
borderWidth={0}
|
|
166
171
|
borderRadius={0}
|
|
167
172
|
shadowOpacity={0}
|
|
168
173
|
/>
|
package/src/types.tsx
CHANGED
|
@@ -19,6 +19,11 @@ export type SheetProps = ScopedProps<
|
|
|
19
19
|
forceRemoveScrollEnabled?: boolean
|
|
20
20
|
animationConfig?: AnimatedNumberStrategy
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* (experimental) Remove the children while hidden (to save some performance, but can cause issues with animations)
|
|
24
|
+
*/
|
|
25
|
+
unmountChildrenWhenHidden?: boolean
|
|
26
|
+
|
|
22
27
|
/**
|
|
23
28
|
* Adapts the sheet to use native sheet on the given platform (if available)
|
|
24
29
|
*/
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SheetContextValue } from './useSheetProviderProps'
|
|
2
|
+
|
|
3
|
+
export const useSheetOffscreenSize = ({
|
|
4
|
+
snapPoints,
|
|
5
|
+
position,
|
|
6
|
+
screenSize,
|
|
7
|
+
}: SheetContextValue) => {
|
|
8
|
+
const maxPercentOpened = snapPoints[0] / 100
|
|
9
|
+
const percentOpened = (snapPoints[position] || 0) / 100
|
|
10
|
+
const percentHidden = 1 - maxPercentOpened - percentOpened
|
|
11
|
+
const offscreenSize = percentHidden * screenSize
|
|
12
|
+
return offscreenSize
|
|
13
|
+
}
|
|
@@ -89,7 +89,12 @@ export function useSheetProviderProps(
|
|
|
89
89
|
|
|
90
90
|
const removeScrollEnabled = props.forceRemoveScrollEnabled ?? (open && props.modal)
|
|
91
91
|
|
|
92
|
+
const maxSnapPoint = snapPoints.reduce((prev, cur) => Math.max(prev, cur))
|
|
93
|
+
const screenSize = frameSize / (maxSnapPoint / 100)
|
|
94
|
+
|
|
92
95
|
const providerProps = {
|
|
96
|
+
screenSize,
|
|
97
|
+
maxSnapPoint,
|
|
93
98
|
removeScrollEnabled,
|
|
94
99
|
scrollBridge,
|
|
95
100
|
modal: !!props.modal,
|