-
-
Notifications
You must be signed in to change notification settings - Fork 3.2k
/
examples.tsx
99 lines (89 loc) · 1.91 KB
/
examples.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import { createChakra, forwardRef } from "@chakra-ui/system";
import { storiesOf } from "@storybook/react";
import React from "react";
import {
MenuProvider,
useMenu,
useMenuDisclosure,
useMenuItem,
} from "./useMenu";
const stories = storiesOf("useMenu v2", module);
//@ts-ignore
const MenuDisclosure = createChakra("button", {
hook: useMenuDisclosure,
});
const Menu = createChakra("div", {
hook: useMenu,
});
Menu.defaultProps = {
color: "#212121",
bg: "white",
p: "0.25rem",
rounded: "0.25rem",
border: "1px solid rgba(33, 33, 33, 0.25)",
outline: 0,
width: "240px",
};
const MenuItem = createChakra("button", {
hook: useMenuItem,
});
MenuItem.defaultProps = {
border: 0,
width: "100%",
padding: "0.5em 0.24em",
color: "#212121",
_focus: {
bg: "#006DFF",
color: "white",
},
_expanded: {
bg: "#006DFF",
color: "white",
},
};
const Submenu2 = forwardRef((props, ref) => {
return (
<MenuProvider>
<MenuDisclosure ref={ref} {...props}>
Open submenu 2
</MenuDisclosure>
<Menu>
<MenuItem>Menu 1</MenuItem>
<MenuItem>Menu 2</MenuItem>
</Menu>
</MenuProvider>
);
});
const Submenu = forwardRef((props, ref) => {
return (
<MenuProvider>
<MenuDisclosure ref={ref} {...props}>
Open submenu
</MenuDisclosure>
<Menu>
<MenuItem onClick={() => console.log("submenu")}>Submenu 1</MenuItem>
<MenuItem as={Submenu2} />
</Menu>
</MenuProvider>
);
});
function SampleMenu() {
return (
<MenuProvider>
<MenuDisclosure
bg="#006DFF"
color="white"
p="0.375em 0.75em"
rounded="0.25rem"
>
Open menu
</MenuDisclosure>
<Menu>
<MenuItem>Menu 1</MenuItem>
<MenuItem>Menu 2</MenuItem>
<MenuItem as={Submenu} />
</Menu>
</MenuProvider>
);
}
stories.add("Default", () => <SampleMenu />);