@tamagui/menu 1.0.0-beta.9 → 1.0.1-beta.101
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/Menu.js +3 -26
- package/dist/cjs/Menu.js.map +2 -2
- package/dist/esm/Menu.js +3 -13
- package/dist/esm/Menu.js.map +2 -2
- package/dist/jsx/Menu.js +4 -9
- package/dist/jsx/Menu.js.map +7 -0
- package/dist/jsx/index.js +1 -0
- package/dist/jsx/index.js.map +7 -0
- package/package.json +13 -10
- package/src/Menu.tsx +69 -0
- package/src/index.tsx +2 -0
- package/types/Menu.d.ts +1 -1
- package/types/Menu.d.ts.map +1 -1
- package/types/index.d.ts +0 -0
- package/types/index.d.ts.map +0 -0
package/dist/cjs/Menu.js
CHANGED
|
@@ -2,23 +2,8 @@ var __create = Object.create;
|
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
6
5
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
9
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
10
|
-
var __spreadValues = (a, b) => {
|
|
11
|
-
for (var prop in b || (b = {}))
|
|
12
|
-
if (__hasOwnProp.call(b, prop))
|
|
13
|
-
__defNormalProp(a, prop, b[prop]);
|
|
14
|
-
if (__getOwnPropSymbols)
|
|
15
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
16
|
-
if (__propIsEnum.call(b, prop))
|
|
17
|
-
__defNormalProp(a, prop, b[prop]);
|
|
18
|
-
}
|
|
19
|
-
return a;
|
|
20
|
-
};
|
|
21
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
22
7
|
var __export = (target, all) => {
|
|
23
8
|
for (var name in all)
|
|
24
9
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -42,10 +27,9 @@ var import_core = require("@tamagui/core");
|
|
|
42
27
|
var import_drawer = require("@tamagui/drawer");
|
|
43
28
|
var import_use_controllable_state = require("@tamagui/use-controllable-state");
|
|
44
29
|
var import_react = __toESM(require("react"));
|
|
45
|
-
|
|
46
|
-
const MenuItem = /* @__PURE__ */ __name((props) => {
|
|
30
|
+
const MenuItem = (props) => {
|
|
47
31
|
return props.children;
|
|
48
|
-
}
|
|
32
|
+
};
|
|
49
33
|
const Menu = (0, import_core.withStaticProperties)(({ children, open: openProp, defaultOpen, trigger, onChangeOpen }) => {
|
|
50
34
|
const media = (0, import_core.useMedia)();
|
|
51
35
|
const [open, setOpen] = (0, import_use_controllable_state.useControllableState)({
|
|
@@ -68,14 +52,7 @@ const Menu = (0, import_core.withStaticProperties)(({ children, open: openProp,
|
|
|
68
52
|
onDismiss: () => setOpen(false)
|
|
69
53
|
}, children));
|
|
70
54
|
}
|
|
71
|
-
return
|
|
72
|
-
trigger: (props) => (0, import_react.cloneElement)(trigger, __spreadValues(__spreadValues({}, props), triggerProps)),
|
|
73
|
-
open,
|
|
74
|
-
onChangeOpen: setOpen
|
|
75
|
-
}, /* @__PURE__ */ import_react.default.createElement(import_tamagui.Popover.Content, null, /* @__PURE__ */ import_react.default.createElement(import_tamagui.Popover.Arrow, null), /* @__PURE__ */ import_react.default.createElement(import_tamagui.YStack, {
|
|
76
|
-
backgroundColor: "$background",
|
|
77
|
-
borderRadius: "$2"
|
|
78
|
-
}, children)));
|
|
55
|
+
return null;
|
|
79
56
|
}, {
|
|
80
57
|
Item: MenuItem,
|
|
81
58
|
Provider: import_drawer.DrawerProvider
|
package/dist/cjs/Menu.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Menu.tsx"],
|
|
4
|
-
"sourcesContent": ["import { useMedia, withStaticProperties } from '@tamagui/core'\nimport { Drawer, DrawerProvider } from '@tamagui/drawer'\nimport { useControllableState } from '@tamagui/use-controllable-state'\nimport React, { cloneElement, useEffect, useMemo, useState } from 'react'\nimport { Popover, YStack } from 'tamagui'\n\nconst MenuItem = (props) => {\n return props.children\n}\n\ntype MenuProps = {\n children?: React.ReactNode\n open?: boolean\n defaultOpen?: boolean\n trigger?: any\n onChangeOpen?: (next: boolean) => void\n}\n\nexport const Menu = withStaticProperties(\n ({ children, open: openProp, defaultOpen, trigger, onChangeOpen }: MenuProps) => {\n const media = useMedia()\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen || false,\n onChange(next) {\n onChangeOpen?.(next)\n },\n })\n\n const triggerProps = useMemo(() => {\n return {\n onPress: () => {\n setOpen((x) => !x)\n },\n }\n }, [])\n\n if (media.sm) {\n return (\n <>\n {cloneElement(trigger, triggerProps)}\n <Drawer open={open} onDismiss={() => setOpen(false)}>\n {children}\n </Drawer>\n </>\n )\n }\n\n return (\n
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import { useMedia, withStaticProperties } from '@tamagui/core'\nimport { Drawer, DrawerProvider } from '@tamagui/drawer'\nimport { useControllableState } from '@tamagui/use-controllable-state'\nimport React, { cloneElement, useEffect, useMemo, useState } from 'react'\nimport { Popover, YStack } from 'tamagui'\n\nconst MenuItem = (props) => {\n return props.children\n}\n\ntype MenuProps = {\n children?: React.ReactNode\n open?: boolean\n defaultOpen?: boolean\n trigger?: any\n onChangeOpen?: (next: boolean) => void\n}\n\nexport const Menu = withStaticProperties(\n ({ children, open: openProp, defaultOpen, trigger, onChangeOpen }: MenuProps) => {\n const media = useMedia()\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen || false,\n onChange(next) {\n onChangeOpen?.(next)\n },\n })\n\n const triggerProps = useMemo(() => {\n return {\n onPress: () => {\n setOpen((x) => !x)\n },\n }\n }, [])\n\n if (media.sm) {\n return (\n <>\n {cloneElement(trigger, triggerProps)}\n <Drawer open={open} onDismiss={() => setOpen(false)}>\n {children}\n </Drawer>\n </>\n )\n }\n\n return null\n // return (\n // <Popover\n // trigger={(props) => cloneElement(trigger, { ...props, ...triggerProps })}\n // open={open}\n // onChangeOpen={setOpen}\n // >\n // <Popover.Content>\n // <Popover.Arrow />\n // <YStack backgroundColor=\"$background\" borderRadius=\"$2\">\n // {children}\n // </YStack>\n // </Popover.Content>\n // </Popover>\n // )\n },\n {\n Item: MenuItem,\n Provider: DrawerProvider,\n }\n)\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA+C;AAC/C,oBAAuC;AACvC,oCAAqC;AACrC,mBAAkE;AAGlE,MAAM,WAAW,CAAC,UAAU;AAC1B,SAAO,MAAM;AACf;AAUO,MAAM,OAAO,sCAClB,CAAC,EAAE,UAAU,MAAM,UAAU,aAAa,SAAS,mBAA8B;AAC/E,QAAM,QAAQ,0BAAS;AACvB,QAAM,CAAC,MAAM,WAAW,wDAAqB;AAAA,IAC3C,MAAM;AAAA,IACN,aAAa,eAAe;AAAA,IAC5B,SAAS,MAAM;AACb,mDAAe;AAAA,IACjB;AAAA,EACF,CAAC;AAED,QAAM,eAAe,0BAAQ,MAAM;AACjC,WAAO;AAAA,MACL,SAAS,MAAM;AACb,gBAAQ,CAAC,MAAM,CAAC,CAAC;AAAA,MACnB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,MAAI,MAAM,IAAI;AACZ,WACE,wFACG,+BAAa,SAAS,YAAY,GACnC,mDAAC;AAAA,MAAO;AAAA,MAAY,WAAW,MAAM,QAAQ,KAAK;AAAA,OAC/C,QACH,CACF;AAAA,EAEJ;AAEA,SAAO;AAeT,GACA;AAAA,EACE,MAAM;AAAA,EACN,UAAU;AACZ,CACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/esm/Menu.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
1
|
import { useMedia, withStaticProperties } from "@tamagui/core";
|
|
4
2
|
import { Drawer, DrawerProvider } from "@tamagui/drawer";
|
|
5
3
|
import { useControllableState } from "@tamagui/use-controllable-state";
|
|
6
4
|
import React, { cloneElement, useMemo } from "react";
|
|
7
|
-
|
|
8
|
-
const MenuItem = /* @__PURE__ */ __name((props) => {
|
|
5
|
+
const MenuItem = (props) => {
|
|
9
6
|
return props.children;
|
|
10
|
-
}
|
|
7
|
+
};
|
|
11
8
|
const Menu = withStaticProperties(({ children, open: openProp, defaultOpen, trigger, onChangeOpen }) => {
|
|
12
9
|
const media = useMedia();
|
|
13
10
|
const [open, setOpen] = useControllableState({
|
|
@@ -30,14 +27,7 @@ const Menu = withStaticProperties(({ children, open: openProp, defaultOpen, trig
|
|
|
30
27
|
onDismiss: () => setOpen(false)
|
|
31
28
|
}, children));
|
|
32
29
|
}
|
|
33
|
-
return
|
|
34
|
-
trigger: (props) => cloneElement(trigger, { ...props, ...triggerProps }),
|
|
35
|
-
open,
|
|
36
|
-
onChangeOpen: setOpen
|
|
37
|
-
}, /* @__PURE__ */ React.createElement(Popover.Content, null, /* @__PURE__ */ React.createElement(Popover.Arrow, null), /* @__PURE__ */ React.createElement(YStack, {
|
|
38
|
-
backgroundColor: "$background",
|
|
39
|
-
borderRadius: "$2"
|
|
40
|
-
}, children)));
|
|
30
|
+
return null;
|
|
41
31
|
}, {
|
|
42
32
|
Item: MenuItem,
|
|
43
33
|
Provider: DrawerProvider
|
package/dist/esm/Menu.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Menu.tsx"],
|
|
4
|
-
"sourcesContent": ["import { useMedia, withStaticProperties } from '@tamagui/core'\nimport { Drawer, DrawerProvider } from '@tamagui/drawer'\nimport { useControllableState } from '@tamagui/use-controllable-state'\nimport React, { cloneElement, useEffect, useMemo, useState } from 'react'\nimport { Popover, YStack } from 'tamagui'\n\nconst MenuItem = (props) => {\n return props.children\n}\n\ntype MenuProps = {\n children?: React.ReactNode\n open?: boolean\n defaultOpen?: boolean\n trigger?: any\n onChangeOpen?: (next: boolean) => void\n}\n\nexport const Menu = withStaticProperties(\n ({ children, open: openProp, defaultOpen, trigger, onChangeOpen }: MenuProps) => {\n const media = useMedia()\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen || false,\n onChange(next) {\n onChangeOpen?.(next)\n },\n })\n\n const triggerProps = useMemo(() => {\n return {\n onPress: () => {\n setOpen((x) => !x)\n },\n }\n }, [])\n\n if (media.sm) {\n return (\n <>\n {cloneElement(trigger, triggerProps)}\n <Drawer open={open} onDismiss={() => setOpen(false)}>\n {children}\n </Drawer>\n </>\n )\n }\n\n return (\n
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import { useMedia, withStaticProperties } from '@tamagui/core'\nimport { Drawer, DrawerProvider } from '@tamagui/drawer'\nimport { useControllableState } from '@tamagui/use-controllable-state'\nimport React, { cloneElement, useEffect, useMemo, useState } from 'react'\nimport { Popover, YStack } from 'tamagui'\n\nconst MenuItem = (props) => {\n return props.children\n}\n\ntype MenuProps = {\n children?: React.ReactNode\n open?: boolean\n defaultOpen?: boolean\n trigger?: any\n onChangeOpen?: (next: boolean) => void\n}\n\nexport const Menu = withStaticProperties(\n ({ children, open: openProp, defaultOpen, trigger, onChangeOpen }: MenuProps) => {\n const media = useMedia()\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen || false,\n onChange(next) {\n onChangeOpen?.(next)\n },\n })\n\n const triggerProps = useMemo(() => {\n return {\n onPress: () => {\n setOpen((x) => !x)\n },\n }\n }, [])\n\n if (media.sm) {\n return (\n <>\n {cloneElement(trigger, triggerProps)}\n <Drawer open={open} onDismiss={() => setOpen(false)}>\n {children}\n </Drawer>\n </>\n )\n }\n\n return null\n // return (\n // <Popover\n // trigger={(props) => cloneElement(trigger, { ...props, ...triggerProps })}\n // open={open}\n // onChangeOpen={setOpen}\n // >\n // <Popover.Content>\n // <Popover.Arrow />\n // <YStack backgroundColor=\"$background\" borderRadius=\"$2\">\n // {children}\n // </YStack>\n // </Popover.Content>\n // </Popover>\n // )\n },\n {\n Item: MenuItem,\n Provider: DrawerProvider,\n }\n)\n"],
|
|
5
|
+
"mappings": "AAAA;AACA;AACA;AACA;AAGA,MAAM,WAAW,CAAC,UAAU;AAC1B,SAAO,MAAM;AACf;AAUO,MAAM,OAAO,qBAClB,CAAC,EAAE,UAAU,MAAM,UAAU,aAAa,SAAS,mBAA8B;AAC/E,QAAM,QAAQ,SAAS;AACvB,QAAM,CAAC,MAAM,WAAW,qBAAqB;AAAA,IAC3C,MAAM;AAAA,IACN,aAAa,eAAe;AAAA,IAC5B,SAAS,MAAM;AACb,mDAAe;AAAA,IACjB;AAAA,EACF,CAAC;AAED,QAAM,eAAe,QAAQ,MAAM;AACjC,WAAO;AAAA,MACL,SAAS,MAAM;AACb,gBAAQ,CAAC,MAAM,CAAC,CAAC;AAAA,MACnB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,MAAI,MAAM,IAAI;AACZ,WACE,0DACG,aAAa,SAAS,YAAY,GACnC,oCAAC;AAAA,MAAO;AAAA,MAAY,WAAW,MAAM,QAAQ,KAAK;AAAA,OAC/C,QACH,CACF;AAAA,EAEJ;AAEA,SAAO;AAeT,GACA;AAAA,EACE,MAAM;AAAA,EACN,UAAU;AACZ,CACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/jsx/Menu.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
1
|
import { useMedia, withStaticProperties } from "@tamagui/core";
|
|
4
2
|
import { Drawer, DrawerProvider } from "@tamagui/drawer";
|
|
5
3
|
import { useControllableState } from "@tamagui/use-controllable-state";
|
|
6
4
|
import { cloneElement, useMemo } from "react";
|
|
7
|
-
|
|
8
|
-
const MenuItem = /* @__PURE__ */ __name((props) => {
|
|
5
|
+
const MenuItem = (props) => {
|
|
9
6
|
return props.children;
|
|
10
|
-
}
|
|
7
|
+
};
|
|
11
8
|
const Menu = withStaticProperties(({ children, open: openProp, defaultOpen, trigger, onChangeOpen }) => {
|
|
12
9
|
const media = useMedia();
|
|
13
10
|
const [open, setOpen] = useControllableState({
|
|
@@ -30,10 +27,7 @@ const Menu = withStaticProperties(({ children, open: openProp, defaultOpen, trig
|
|
|
30
27
|
<Drawer open={open} onDismiss={() => setOpen(false)}>{children}</Drawer>
|
|
31
28
|
</>;
|
|
32
29
|
}
|
|
33
|
-
return
|
|
34
|
-
<Popover.Arrow />
|
|
35
|
-
<YStack backgroundColor="$background" borderRadius="$2">{children}</YStack>
|
|
36
|
-
</Popover.Content></Popover>;
|
|
30
|
+
return null;
|
|
37
31
|
}, {
|
|
38
32
|
Item: MenuItem,
|
|
39
33
|
Provider: DrawerProvider
|
|
@@ -41,3 +35,4 @@ const Menu = withStaticProperties(({ children, open: openProp, defaultOpen, trig
|
|
|
41
35
|
export {
|
|
42
36
|
Menu
|
|
43
37
|
};
|
|
38
|
+
//# sourceMappingURL=Menu.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/Menu.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useMedia, withStaticProperties } from '@tamagui/core'\nimport { Drawer, DrawerProvider } from '@tamagui/drawer'\nimport { useControllableState } from '@tamagui/use-controllable-state'\nimport React, { cloneElement, useEffect, useMemo, useState } from 'react'\nimport { Popover, YStack } from 'tamagui'\n\nconst MenuItem = (props) => {\n return props.children\n}\n\ntype MenuProps = {\n children?: React.ReactNode\n open?: boolean\n defaultOpen?: boolean\n trigger?: any\n onChangeOpen?: (next: boolean) => void\n}\n\nexport const Menu = withStaticProperties(\n ({ children, open: openProp, defaultOpen, trigger, onChangeOpen }: MenuProps) => {\n const media = useMedia()\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen || false,\n onChange(next) {\n onChangeOpen?.(next)\n },\n })\n\n const triggerProps = useMemo(() => {\n return {\n onPress: () => {\n setOpen((x) => !x)\n },\n }\n }, [])\n\n if (media.sm) {\n return (\n <>\n {cloneElement(trigger, triggerProps)}\n <Drawer open={open} onDismiss={() => setOpen(false)}>\n {children}\n </Drawer>\n </>\n )\n }\n\n return null\n // return (\n // <Popover\n // trigger={(props) => cloneElement(trigger, { ...props, ...triggerProps })}\n // open={open}\n // onChangeOpen={setOpen}\n // >\n // <Popover.Content>\n // <Popover.Arrow />\n // <YStack backgroundColor=\"$background\" borderRadius=\"$2\">\n // {children}\n // </YStack>\n // </Popover.Content>\n // </Popover>\n // )\n },\n {\n Item: MenuItem,\n Provider: DrawerProvider,\n }\n)\n"],
|
|
5
|
+
"mappings": "AAAA;AACA;AACA;AACA;AAGA,MAAM,WAAW,CAAC,UAAU;AAC1B,SAAO,MAAM;AACf;AAUO,MAAM,OAAO,qBAClB,CAAC,EAAE,UAAU,MAAM,UAAU,aAAa,SAAS,mBAA8B;AAC/E,QAAM,QAAQ,SAAS;AACvB,QAAM,CAAC,MAAM,WAAW,qBAAqB;AAAA,IAC3C,MAAM;AAAA,IACN,aAAa,eAAe;AAAA,IAC5B,SAAS,MAAM;AACb,mDAAe;AAAA,IACjB;AAAA,EACF,CAAC;AAED,QAAM,eAAe,QAAQ,MAAM;AACjC,WAAO;AAAA,MACL,SAAS,MAAM;AACb,gBAAQ,CAAC,MAAM,CAAC,CAAC;AAAA,MACnB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,MAAI,MAAM,IAAI;AACZ,WACE;AAAA,OACG,aAAa,SAAS,YAAY;AAAA,MACnC,CAAC,OAAO,MAAM,MAAM,WAAW,MAAM,QAAQ,KAAK,IAC/C,SACH,EAFC;AAAA,IAGH;AAAA,EAEJ;AAEA,SAAO;AAeT,GACA;AAAA,EACE,MAAM;AAAA,EACN,UAAU;AACZ,CACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/jsx/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/menu",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"sideEffects":
|
|
3
|
+
"version": "1.0.1-beta.101",
|
|
4
|
+
"sideEffects": [
|
|
5
|
+
"*.css"
|
|
6
|
+
],
|
|
5
7
|
"source": "src/index.ts",
|
|
6
|
-
"
|
|
8
|
+
"types": "./types/index.d.ts",
|
|
7
9
|
"main": "dist/cjs",
|
|
8
10
|
"module": "dist/esm",
|
|
9
11
|
"module:jsx": "dist/jsx",
|
|
10
12
|
"files": [
|
|
13
|
+
"src",
|
|
11
14
|
"types",
|
|
12
15
|
"dist"
|
|
13
16
|
],
|
|
@@ -18,19 +21,19 @@
|
|
|
18
21
|
"clean:build": "tamagui-build clean:build"
|
|
19
22
|
},
|
|
20
23
|
"dependencies": {
|
|
21
|
-
"@gorhom/bottom-sheet": "^4.
|
|
22
|
-
"@tamagui/core": "^1.0.
|
|
23
|
-
"@tamagui/polyfill-dev": "^1.0.
|
|
24
|
-
"@tamagui/use-controllable-state": "^1.0.
|
|
25
|
-
"react-native-gesture-handler": "
|
|
26
|
-
"react-native-reanimated": "^2.
|
|
24
|
+
"@gorhom/bottom-sheet": "^4.3.1",
|
|
25
|
+
"@tamagui/core": "^1.0.1-beta.101",
|
|
26
|
+
"@tamagui/polyfill-dev": "^1.0.1-beta.101",
|
|
27
|
+
"@tamagui/use-controllable-state": "^1.0.1-beta.101",
|
|
28
|
+
"react-native-gesture-handler": "*",
|
|
29
|
+
"react-native-reanimated": "^2.8.0"
|
|
27
30
|
},
|
|
28
31
|
"peerDependencies": {
|
|
29
32
|
"react": "*",
|
|
30
33
|
"react-dom": "*"
|
|
31
34
|
},
|
|
32
35
|
"devDependencies": {
|
|
33
|
-
"@tamagui/build": "^1.0.
|
|
36
|
+
"@tamagui/build": "^1.0.1-beta.101",
|
|
34
37
|
"react": "*",
|
|
35
38
|
"react-dom": "*"
|
|
36
39
|
},
|
package/src/Menu.tsx
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { useMedia, withStaticProperties } from '@tamagui/core'
|
|
2
|
+
import { Drawer, DrawerProvider } from '@tamagui/drawer'
|
|
3
|
+
import { useControllableState } from '@tamagui/use-controllable-state'
|
|
4
|
+
import React, { cloneElement, useEffect, useMemo, useState } from 'react'
|
|
5
|
+
import { Popover, YStack } from 'tamagui'
|
|
6
|
+
|
|
7
|
+
const MenuItem = (props) => {
|
|
8
|
+
return props.children
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
type MenuProps = {
|
|
12
|
+
children?: React.ReactNode
|
|
13
|
+
open?: boolean
|
|
14
|
+
defaultOpen?: boolean
|
|
15
|
+
trigger?: any
|
|
16
|
+
onChangeOpen?: (next: boolean) => void
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const Menu = withStaticProperties(
|
|
20
|
+
({ children, open: openProp, defaultOpen, trigger, onChangeOpen }: MenuProps) => {
|
|
21
|
+
const media = useMedia()
|
|
22
|
+
const [open, setOpen] = useControllableState({
|
|
23
|
+
prop: openProp,
|
|
24
|
+
defaultProp: defaultOpen || false,
|
|
25
|
+
onChange(next) {
|
|
26
|
+
onChangeOpen?.(next)
|
|
27
|
+
},
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
const triggerProps = useMemo(() => {
|
|
31
|
+
return {
|
|
32
|
+
onPress: () => {
|
|
33
|
+
setOpen((x) => !x)
|
|
34
|
+
},
|
|
35
|
+
}
|
|
36
|
+
}, [])
|
|
37
|
+
|
|
38
|
+
if (media.sm) {
|
|
39
|
+
return (
|
|
40
|
+
<>
|
|
41
|
+
{cloneElement(trigger, triggerProps)}
|
|
42
|
+
<Drawer open={open} onDismiss={() => setOpen(false)}>
|
|
43
|
+
{children}
|
|
44
|
+
</Drawer>
|
|
45
|
+
</>
|
|
46
|
+
)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return null
|
|
50
|
+
// return (
|
|
51
|
+
// <Popover
|
|
52
|
+
// trigger={(props) => cloneElement(trigger, { ...props, ...triggerProps })}
|
|
53
|
+
// open={open}
|
|
54
|
+
// onChangeOpen={setOpen}
|
|
55
|
+
// >
|
|
56
|
+
// <Popover.Content>
|
|
57
|
+
// <Popover.Arrow />
|
|
58
|
+
// <YStack backgroundColor="$background" borderRadius="$2">
|
|
59
|
+
// {children}
|
|
60
|
+
// </YStack>
|
|
61
|
+
// </Popover.Content>
|
|
62
|
+
// </Popover>
|
|
63
|
+
// )
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
Item: MenuItem,
|
|
67
|
+
Provider: DrawerProvider,
|
|
68
|
+
}
|
|
69
|
+
)
|
package/src/index.tsx
ADDED
package/types/Menu.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ declare type MenuProps = {
|
|
|
6
6
|
trigger?: any;
|
|
7
7
|
onChangeOpen?: (next: boolean) => void;
|
|
8
8
|
};
|
|
9
|
-
export declare const Menu: (({ children, open: openProp, defaultOpen, trigger, onChangeOpen }: MenuProps) => JSX.Element) & {
|
|
9
|
+
export declare const Menu: (({ children, open: openProp, defaultOpen, trigger, onChangeOpen }: MenuProps) => JSX.Element | null) & {
|
|
10
10
|
Item: (props: any) => any;
|
|
11
11
|
Provider: ({ children, }: import("@gorhom/bottom-sheet/lib/typescript/components/bottomSheetModalProvider/types").BottomSheetModalProviderProps) => JSX.Element;
|
|
12
12
|
};
|
package/types/Menu.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../src/Menu.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAqD,MAAM,OAAO,CAAA;AAOzE,aAAK,SAAS,GAAG;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,OAAO,CAAC,EAAE,GAAG,CAAA;IACb,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACvC,CAAA;AAED,eAAO,MAAM,IAAI,sEACoD,SAAS;;;
|
|
1
|
+
{"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../src/Menu.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAqD,MAAM,OAAO,CAAA;AAOzE,aAAK,SAAS,GAAG;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,OAAO,CAAC,EAAE,GAAG,CAAA;IACb,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACvC,CAAA;AAED,eAAO,MAAM,IAAI,sEACoD,SAAS;;;CAiD7E,CAAA"}
|
package/types/index.d.ts
CHANGED
|
File without changes
|
package/types/index.d.ts.map
CHANGED
|
File without changes
|