@tamagui/demos 1.58.8 → 1.59.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/SheetDemo.js +30 -6
- package/dist/cjs/SheetDemo.js.map +1 -1
- package/dist/esm/SheetDemo.js +31 -7
- package/dist/esm/SheetDemo.js.map +1 -1
- package/dist/jsx/SheetDemo.js +27 -7
- package/dist/jsx/SheetDemo.js.map +1 -1
- package/package.json +18 -18
- package/src/SheetDemo.tsx +59 -9
- package/types/SheetDemo.d.ts.map +1 -1
package/dist/cjs/SheetDemo.js
CHANGED
|
@@ -26,15 +26,36 @@ var import_lucide_icons = require("@tamagui/lucide-icons");
|
|
|
26
26
|
var import_sheet = require("@tamagui/sheet");
|
|
27
27
|
var import_react = require("react");
|
|
28
28
|
var import_tamagui = require("tamagui");
|
|
29
|
+
const spModes = ["percent", "constant", "fit", "mixed"];
|
|
29
30
|
const SheetDemo = () => {
|
|
30
31
|
const [position, setPosition] = (0, import_react.useState)(0);
|
|
31
32
|
const [open, setOpen] = (0, import_react.useState)(false);
|
|
32
33
|
const [modal, setModal] = (0, import_react.useState)(true);
|
|
33
34
|
const [innerOpen, setInnerOpen] = (0, import_react.useState)(false);
|
|
35
|
+
const [snapPointsMode, setSnapPointsMode] = (0, import_react.useState)("percent");
|
|
36
|
+
const [mixedFitDemo, setMixedFitDemo] = (0, import_react.useState)(false);
|
|
37
|
+
const isPercent = snapPointsMode === "percent";
|
|
38
|
+
const isConstant = snapPointsMode === "constant";
|
|
39
|
+
const isFit = snapPointsMode === "fit";
|
|
40
|
+
const isMixed = snapPointsMode === "mixed";
|
|
41
|
+
const hasFit = isFit || isMixed && mixedFitDemo;
|
|
42
|
+
const snapPoints = isPercent ? [85, 50, 25] : isConstant ? [256, 190] : isFit ? void 0 : mixedFitDemo ? ["fit", 190] : ["80%", 256, 190];
|
|
34
43
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
35
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_tamagui.
|
|
36
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
37
|
-
|
|
44
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_tamagui.YStack, { space: true, children: [
|
|
45
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_tamagui.XStack, { space: true, $sm: { flexDirection: "column", alignItems: "center" }, children: [
|
|
46
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_tamagui.Button, { onPress: () => setOpen(true), children: "Open" }),
|
|
47
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_tamagui.Button, { onPress: () => setModal((x) => !x), children: modal ? "Type: Modal" : "Type: Inline" }),
|
|
48
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49
|
+
import_tamagui.Button,
|
|
50
|
+
{
|
|
51
|
+
onPress: () => setSnapPointsMode(
|
|
52
|
+
(prev) => spModes[(spModes.indexOf(prev) + 1) % spModes.length]
|
|
53
|
+
),
|
|
54
|
+
children: `Mode: ${{ percent: "Percentage", constant: "Constant", fit: "Fit", mixed: "Mixed" }[snapPointsMode]}`
|
|
55
|
+
}
|
|
56
|
+
)
|
|
57
|
+
] }),
|
|
58
|
+
isMixed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_tamagui.Button, { onPress: () => setMixedFitDemo((x) => !x), children: `Snap Points: ${JSON.stringify(snapPoints)}` }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_tamagui.XStack, { paddingVertical: "$2.5", justifyContent: "center", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_tamagui.Paragraph, { children: `Snap Points: ${isFit ? "(none)" : JSON.stringify(snapPoints)}` }) })
|
|
38
59
|
] }),
|
|
39
60
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
40
61
|
import_sheet.Sheet,
|
|
@@ -43,7 +64,8 @@ const SheetDemo = () => {
|
|
|
43
64
|
modal,
|
|
44
65
|
open,
|
|
45
66
|
onOpenChange: setOpen,
|
|
46
|
-
snapPoints
|
|
67
|
+
snapPoints,
|
|
68
|
+
snapPointsMode,
|
|
47
69
|
dismissOnSnapToBottom: true,
|
|
48
70
|
position,
|
|
49
71
|
onPositionChange: setPosition,
|
|
@@ -67,10 +89,11 @@ const SheetDemo = () => {
|
|
|
67
89
|
justifyContent: "center",
|
|
68
90
|
alignItems: "center",
|
|
69
91
|
space: "$5",
|
|
92
|
+
...hasFit && { minHeight: 320, flexShrink: 0 },
|
|
70
93
|
children: [
|
|
71
94
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_tamagui.Button, { size: "$6", circular: true, icon: import_lucide_icons.ChevronDown, onPress: () => setOpen(false) }),
|
|
72
95
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_tamagui.Input, { width: 200 }),
|
|
73
|
-
modal && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
96
|
+
modal && isPercent && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
74
97
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(InnerSheet, { open: innerOpen, onOpenChange: setInnerOpen }),
|
|
75
98
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
76
99
|
import_tamagui.Button,
|
|
@@ -86,7 +109,8 @@ const SheetDemo = () => {
|
|
|
86
109
|
}
|
|
87
110
|
)
|
|
88
111
|
]
|
|
89
|
-
}
|
|
112
|
+
},
|
|
113
|
+
hasFit ? "fit" : "no-fit"
|
|
90
114
|
)
|
|
91
115
|
] });
|
|
92
116
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/SheetDemo.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/SheetDemo.js
CHANGED
|
@@ -2,16 +2,37 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { ChevronDown, ChevronUp } from "@tamagui/lucide-icons";
|
|
3
3
|
import { Sheet } from "@tamagui/sheet";
|
|
4
4
|
import { useState } from "react";
|
|
5
|
-
import { Button, H1, H2, Input, Paragraph, XStack } from "tamagui";
|
|
5
|
+
import { Button, H1, H2, Input, Paragraph, XStack, YStack } from "tamagui";
|
|
6
|
+
const spModes = ["percent", "constant", "fit", "mixed"];
|
|
6
7
|
const SheetDemo = () => {
|
|
7
8
|
const [position, setPosition] = useState(0);
|
|
8
9
|
const [open, setOpen] = useState(false);
|
|
9
10
|
const [modal, setModal] = useState(true);
|
|
10
11
|
const [innerOpen, setInnerOpen] = useState(false);
|
|
12
|
+
const [snapPointsMode, setSnapPointsMode] = useState("percent");
|
|
13
|
+
const [mixedFitDemo, setMixedFitDemo] = useState(false);
|
|
14
|
+
const isPercent = snapPointsMode === "percent";
|
|
15
|
+
const isConstant = snapPointsMode === "constant";
|
|
16
|
+
const isFit = snapPointsMode === "fit";
|
|
17
|
+
const isMixed = snapPointsMode === "mixed";
|
|
18
|
+
const hasFit = isFit || isMixed && mixedFitDemo;
|
|
19
|
+
const snapPoints = isPercent ? [85, 50, 25] : isConstant ? [256, 190] : isFit ? void 0 : mixedFitDemo ? ["fit", 190] : ["80%", 256, 190];
|
|
11
20
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
12
|
-
/* @__PURE__ */ jsxs(
|
|
13
|
-
/* @__PURE__ */
|
|
14
|
-
|
|
21
|
+
/* @__PURE__ */ jsxs(YStack, { space: true, children: [
|
|
22
|
+
/* @__PURE__ */ jsxs(XStack, { space: true, $sm: { flexDirection: "column", alignItems: "center" }, children: [
|
|
23
|
+
/* @__PURE__ */ jsx(Button, { onPress: () => setOpen(true), children: "Open" }),
|
|
24
|
+
/* @__PURE__ */ jsx(Button, { onPress: () => setModal((x) => !x), children: modal ? "Type: Modal" : "Type: Inline" }),
|
|
25
|
+
/* @__PURE__ */ jsx(
|
|
26
|
+
Button,
|
|
27
|
+
{
|
|
28
|
+
onPress: () => setSnapPointsMode(
|
|
29
|
+
(prev) => spModes[(spModes.indexOf(prev) + 1) % spModes.length]
|
|
30
|
+
),
|
|
31
|
+
children: `Mode: ${{ percent: "Percentage", constant: "Constant", fit: "Fit", mixed: "Mixed" }[snapPointsMode]}`
|
|
32
|
+
}
|
|
33
|
+
)
|
|
34
|
+
] }),
|
|
35
|
+
isMixed ? /* @__PURE__ */ jsx(Button, { onPress: () => setMixedFitDemo((x) => !x), children: `Snap Points: ${JSON.stringify(snapPoints)}` }) : /* @__PURE__ */ jsx(XStack, { paddingVertical: "$2.5", justifyContent: "center", children: /* @__PURE__ */ jsx(Paragraph, { children: `Snap Points: ${isFit ? "(none)" : JSON.stringify(snapPoints)}` }) })
|
|
15
36
|
] }),
|
|
16
37
|
/* @__PURE__ */ jsxs(
|
|
17
38
|
Sheet,
|
|
@@ -20,7 +41,8 @@ const SheetDemo = () => {
|
|
|
20
41
|
modal,
|
|
21
42
|
open,
|
|
22
43
|
onOpenChange: setOpen,
|
|
23
|
-
snapPoints
|
|
44
|
+
snapPoints,
|
|
45
|
+
snapPointsMode,
|
|
24
46
|
dismissOnSnapToBottom: true,
|
|
25
47
|
position,
|
|
26
48
|
onPositionChange: setPosition,
|
|
@@ -44,10 +66,11 @@ const SheetDemo = () => {
|
|
|
44
66
|
justifyContent: "center",
|
|
45
67
|
alignItems: "center",
|
|
46
68
|
space: "$5",
|
|
69
|
+
...hasFit && { minHeight: 320, flexShrink: 0 },
|
|
47
70
|
children: [
|
|
48
71
|
/* @__PURE__ */ jsx(Button, { size: "$6", circular: true, icon: ChevronDown, onPress: () => setOpen(false) }),
|
|
49
72
|
/* @__PURE__ */ jsx(Input, { width: 200 }),
|
|
50
|
-
modal && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
73
|
+
modal && isPercent && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
51
74
|
/* @__PURE__ */ jsx(InnerSheet, { open: innerOpen, onOpenChange: setInnerOpen }),
|
|
52
75
|
/* @__PURE__ */ jsx(
|
|
53
76
|
Button,
|
|
@@ -63,7 +86,8 @@ const SheetDemo = () => {
|
|
|
63
86
|
}
|
|
64
87
|
)
|
|
65
88
|
]
|
|
66
|
-
}
|
|
89
|
+
},
|
|
90
|
+
hasFit ? "fit" : "no-fit"
|
|
67
91
|
)
|
|
68
92
|
] });
|
|
69
93
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/SheetDemo.tsx"],
|
|
4
|
-
"mappings": "
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/jsx/SheetDemo.js
CHANGED
|
@@ -1,23 +1,42 @@
|
|
|
1
1
|
import { ChevronDown, ChevronUp } from "@tamagui/lucide-icons";
|
|
2
2
|
import { Sheet } from "@tamagui/sheet";
|
|
3
3
|
import { useState } from "react";
|
|
4
|
-
import { Button, H1, H2, Input, Paragraph, XStack } from "tamagui";
|
|
4
|
+
import { Button, H1, H2, Input, Paragraph, XStack, YStack } from "tamagui";
|
|
5
|
+
const spModes = ["percent", "constant", "fit", "mixed"];
|
|
5
6
|
const SheetDemo = () => {
|
|
6
7
|
const [position, setPosition] = useState(0);
|
|
7
8
|
const [open, setOpen] = useState(false);
|
|
8
9
|
const [modal, setModal] = useState(true);
|
|
9
10
|
const [innerOpen, setInnerOpen] = useState(false);
|
|
11
|
+
const [snapPointsMode, setSnapPointsMode] = useState("percent");
|
|
12
|
+
const [mixedFitDemo, setMixedFitDemo] = useState(false);
|
|
13
|
+
const isPercent = snapPointsMode === "percent";
|
|
14
|
+
const isConstant = snapPointsMode === "constant";
|
|
15
|
+
const isFit = snapPointsMode === "fit";
|
|
16
|
+
const isMixed = snapPointsMode === "mixed";
|
|
17
|
+
const hasFit = isFit || isMixed && mixedFitDemo;
|
|
18
|
+
const snapPoints = isPercent ? [85, 50, 25] : isConstant ? [256, 190] : isFit ? void 0 : mixedFitDemo ? ["fit", 190] : ["80%", 256, 190];
|
|
10
19
|
return <>
|
|
11
|
-
<
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
|
|
20
|
+
<YStack space>
|
|
21
|
+
<XStack space $sm={{ flexDirection: "column", alignItems: "center" }}>
|
|
22
|
+
<Button onPress={() => setOpen(true)}>Open</Button>
|
|
23
|
+
<Button onPress={() => setModal((x) => !x)}>{modal ? "Type: Modal" : "Type: Inline"}</Button>
|
|
24
|
+
<Button
|
|
25
|
+
onPress={() => setSnapPointsMode(
|
|
26
|
+
(prev) => spModes[(spModes.indexOf(prev) + 1) % spModes.length]
|
|
27
|
+
)}
|
|
28
|
+
>{`Mode: ${{ percent: "Percentage", constant: "Constant", fit: "Fit", mixed: "Mixed" }[snapPointsMode]}`}</Button>
|
|
29
|
+
</XStack>
|
|
30
|
+
{isMixed ? <Button onPress={() => setMixedFitDemo((x) => !x)}>{`Snap Points: ${JSON.stringify(snapPoints)}`}</Button> : <XStack paddingVertical="$2.5" justifyContent="center"><Paragraph>{`Snap Points: ${isFit ? "(none)" : JSON.stringify(snapPoints)}`}</Paragraph></XStack>}
|
|
31
|
+
</YStack>
|
|
15
32
|
<Sheet
|
|
33
|
+
key={hasFit ? "fit" : "no-fit"}
|
|
16
34
|
forceRemoveScrollEnabled={open}
|
|
17
35
|
modal={modal}
|
|
18
36
|
open={open}
|
|
19
37
|
onOpenChange={setOpen}
|
|
20
|
-
snapPoints={
|
|
38
|
+
snapPoints={snapPoints}
|
|
39
|
+
snapPointsMode={snapPointsMode}
|
|
21
40
|
dismissOnSnapToBottom
|
|
22
41
|
position={position}
|
|
23
42
|
onPositionChange={setPosition}
|
|
@@ -36,10 +55,11 @@ const SheetDemo = () => {
|
|
|
36
55
|
justifyContent="center"
|
|
37
56
|
alignItems="center"
|
|
38
57
|
space="$5"
|
|
58
|
+
{...hasFit && { minHeight: 320, flexShrink: 0 }}
|
|
39
59
|
>
|
|
40
60
|
<Button size="$6" circular icon={ChevronDown} onPress={() => setOpen(false)} />
|
|
41
61
|
<Input width={200} />
|
|
42
|
-
{modal && <>
|
|
62
|
+
{modal && isPercent && <>
|
|
43
63
|
<InnerSheet open={innerOpen} onOpenChange={setInnerOpen} />
|
|
44
64
|
<Button
|
|
45
65
|
size="$6"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/SheetDemo.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,aAAa,iBAAiB;AACvC,SAAS,aAAmC;AAC5C,SAAS,gBAAgB;AACzB,SAAS,QAAQ,IAAI,IAAI,OAAO,WAAW,cAAc;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/demos",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.59.0",
|
|
4
4
|
"sideEffects": [
|
|
5
5
|
"*.css"
|
|
6
6
|
],
|
|
@@ -33,29 +33,29 @@
|
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@tamagui/avatar": "1.
|
|
37
|
-
"@tamagui/button": "1.
|
|
38
|
-
"@tamagui/core": "1.
|
|
39
|
-
"@tamagui/list-item": "1.
|
|
40
|
-
"@tamagui/logo": "1.
|
|
41
|
-
"@tamagui/menu": "1.
|
|
42
|
-
"@tamagui/popover": "1.
|
|
43
|
-
"@tamagui/progress": "1.
|
|
44
|
-
"@tamagui/radio-group": "1.
|
|
45
|
-
"@tamagui/select": "1.
|
|
46
|
-
"@tamagui/sheet": "1.
|
|
47
|
-
"@tamagui/site-config": "1.
|
|
48
|
-
"@tamagui/slider": "1.
|
|
49
|
-
"@tamagui/stacks": "1.
|
|
50
|
-
"@tamagui/toast": "1.
|
|
51
|
-
"tamagui": "1.
|
|
36
|
+
"@tamagui/avatar": "1.59.0",
|
|
37
|
+
"@tamagui/button": "1.59.0",
|
|
38
|
+
"@tamagui/core": "1.59.0",
|
|
39
|
+
"@tamagui/list-item": "1.59.0",
|
|
40
|
+
"@tamagui/logo": "1.59.0",
|
|
41
|
+
"@tamagui/menu": "1.59.0",
|
|
42
|
+
"@tamagui/popover": "1.59.0",
|
|
43
|
+
"@tamagui/progress": "1.59.0",
|
|
44
|
+
"@tamagui/radio-group": "1.59.0",
|
|
45
|
+
"@tamagui/select": "1.59.0",
|
|
46
|
+
"@tamagui/sheet": "1.59.0",
|
|
47
|
+
"@tamagui/site-config": "1.59.0",
|
|
48
|
+
"@tamagui/slider": "1.59.0",
|
|
49
|
+
"@tamagui/stacks": "1.59.0",
|
|
50
|
+
"@tamagui/toast": "1.59.0",
|
|
51
|
+
"tamagui": "1.59.0"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
54
|
"react": "*",
|
|
55
55
|
"react-dom": "*"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@tamagui/build": "1.
|
|
58
|
+
"@tamagui/build": "1.59.0",
|
|
59
59
|
"react": "^18.2.0",
|
|
60
60
|
"react-dom": "^18.2.0"
|
|
61
61
|
},
|
package/src/SheetDemo.tsx
CHANGED
|
@@ -1,29 +1,78 @@
|
|
|
1
1
|
import { ChevronDown, ChevronUp } from '@tamagui/lucide-icons'
|
|
2
2
|
import { Sheet, SheetProps, useSheet } from '@tamagui/sheet'
|
|
3
3
|
import { useState } from 'react'
|
|
4
|
-
import { Button, H1, H2, Input, Paragraph, XStack } from 'tamagui'
|
|
4
|
+
import { Button, H1, H2, Input, Paragraph, XStack, YStack } from 'tamagui'
|
|
5
|
+
|
|
6
|
+
const spModes = ['percent', 'constant', 'fit', 'mixed'] as const
|
|
5
7
|
|
|
6
8
|
export const SheetDemo = () => {
|
|
7
9
|
const [position, setPosition] = useState(0)
|
|
8
10
|
const [open, setOpen] = useState(false)
|
|
9
11
|
const [modal, setModal] = useState(true)
|
|
10
12
|
const [innerOpen, setInnerOpen] = useState(false)
|
|
13
|
+
const [snapPointsMode, setSnapPointsMode] =
|
|
14
|
+
useState<(typeof spModes)[number]>('percent')
|
|
15
|
+
const [mixedFitDemo, setMixedFitDemo] = useState(false)
|
|
16
|
+
|
|
17
|
+
const isPercent = snapPointsMode === 'percent'
|
|
18
|
+
const isConstant = snapPointsMode === 'constant'
|
|
19
|
+
const isFit = snapPointsMode === 'fit'
|
|
20
|
+
const isMixed = snapPointsMode === 'mixed'
|
|
21
|
+
const hasFit = isFit || (isMixed && mixedFitDemo)
|
|
22
|
+
const snapPoints = isPercent
|
|
23
|
+
? [85, 50, 25]
|
|
24
|
+
: isConstant
|
|
25
|
+
? [256, 190]
|
|
26
|
+
: isFit
|
|
27
|
+
? undefined
|
|
28
|
+
: mixedFitDemo
|
|
29
|
+
? ['fit', 190]
|
|
30
|
+
: ['80%', 256, 190]
|
|
11
31
|
|
|
12
32
|
return (
|
|
13
33
|
<>
|
|
14
|
-
<
|
|
15
|
-
<
|
|
16
|
-
|
|
17
|
-
{
|
|
18
|
-
|
|
19
|
-
|
|
34
|
+
<YStack space>
|
|
35
|
+
<XStack space $sm={{ flexDirection: 'column', alignItems: 'center' }}>
|
|
36
|
+
<Button onPress={() => setOpen(true)}>Open</Button>
|
|
37
|
+
<Button onPress={() => setModal((x) => !x)}>
|
|
38
|
+
{modal ? 'Type: Modal' : 'Type: Inline'}
|
|
39
|
+
</Button>
|
|
40
|
+
<Button
|
|
41
|
+
onPress={() =>
|
|
42
|
+
setSnapPointsMode(
|
|
43
|
+
(prev) => spModes[(spModes.indexOf(prev) + 1) % spModes.length]
|
|
44
|
+
)
|
|
45
|
+
}
|
|
46
|
+
>
|
|
47
|
+
{`Mode: ${
|
|
48
|
+
{ percent: 'Percentage', constant: 'Constant', fit: 'Fit', mixed: 'Mixed' }[
|
|
49
|
+
snapPointsMode
|
|
50
|
+
]
|
|
51
|
+
}`}
|
|
52
|
+
</Button>
|
|
53
|
+
</XStack>
|
|
54
|
+
{isMixed ? (
|
|
55
|
+
<Button onPress={() => setMixedFitDemo((x) => !x)}>
|
|
56
|
+
{`Snap Points: ${JSON.stringify(snapPoints)}`}
|
|
57
|
+
</Button>
|
|
58
|
+
) : (
|
|
59
|
+
<XStack paddingVertical="$2.5" justifyContent="center">
|
|
60
|
+
<Paragraph>{`Snap Points: ${
|
|
61
|
+
isFit ? '(none)' : JSON.stringify(snapPoints)
|
|
62
|
+
}`}</Paragraph>
|
|
63
|
+
</XStack>
|
|
64
|
+
)}
|
|
65
|
+
</YStack>
|
|
20
66
|
|
|
21
67
|
<Sheet
|
|
68
|
+
// force remount when switching to fit modes to avoid weird measurement loop
|
|
69
|
+
key={hasFit ? 'fit' : 'no-fit'}
|
|
22
70
|
forceRemoveScrollEnabled={open}
|
|
23
71
|
modal={modal}
|
|
24
72
|
open={open}
|
|
25
73
|
onOpenChange={setOpen}
|
|
26
|
-
snapPoints={
|
|
74
|
+
snapPoints={snapPoints}
|
|
75
|
+
snapPointsMode={snapPointsMode}
|
|
27
76
|
dismissOnSnapToBottom
|
|
28
77
|
position={position}
|
|
29
78
|
onPositionChange={setPosition}
|
|
@@ -42,10 +91,11 @@ export const SheetDemo = () => {
|
|
|
42
91
|
justifyContent="center"
|
|
43
92
|
alignItems="center"
|
|
44
93
|
space="$5"
|
|
94
|
+
{...(hasFit && { minHeight: 320, flexShrink: 0 })}
|
|
45
95
|
>
|
|
46
96
|
<Button size="$6" circular icon={ChevronDown} onPress={() => setOpen(false)} />
|
|
47
97
|
<Input width={200} />
|
|
48
|
-
{modal && (
|
|
98
|
+
{modal && isPercent && (
|
|
49
99
|
<>
|
|
50
100
|
<InnerSheet open={innerOpen} onOpenChange={setInnerOpen} />
|
|
51
101
|
<Button
|
package/types/SheetDemo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SheetDemo.d.ts","sourceRoot":"","sources":["../src/SheetDemo.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"SheetDemo.d.ts","sourceRoot":"","sources":["../src/SheetDemo.tsx"],"names":[],"mappings":";AAOA,eAAO,MAAM,SAAS,mBAyGrB,CAAA"}
|