Skip to content

Commit 2e756c4

Browse files
committed
Add stories for create template button
1 parent cdb36a8 commit 2e756c4

File tree

3 files changed

+80
-45
lines changed

3 files changed

+80
-45
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { CreateTemplateButton } from "./CreateTemplateButton";
2+
import type { Meta, StoryObj } from "@storybook/react";
3+
import { userEvent, screen } from "@storybook/test";
4+
5+
const meta: Meta<typeof CreateTemplateButton> = {
6+
title: "pages/TemplatesPage/CreateTemplateButton",
7+
component: CreateTemplateButton,
8+
};
9+
10+
export default meta;
11+
type Story = StoryObj<typeof CreateTemplateButton>;
12+
13+
export const Close: Story = {};
14+
15+
export const Open: Story = {
16+
play: async ({ step }) => {
17+
const user = userEvent.setup();
18+
await step("click on trigger", async () => {
19+
await user.click(screen.getByRole("button"));
20+
});
21+
},
22+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import Button from "@mui/material/Button";
2+
import AddIcon from "@mui/icons-material/AddOutlined";
3+
import {
4+
MoreMenu,
5+
MoreMenuContent,
6+
MoreMenuItem,
7+
MoreMenuTrigger,
8+
} from "components/MoreMenu/MoreMenu";
9+
import NoteAddOutlined from "@mui/icons-material/NoteAddOutlined";
10+
import UploadOutlined from "@mui/icons-material/UploadOutlined";
11+
import Inventory2 from "@mui/icons-material/Inventory2";
12+
import { FC } from "react";
13+
14+
type CreateTemplateButtonProps = {
15+
onNavigate: (path: string) => void;
16+
};
17+
18+
export const CreateTemplateButton: FC<CreateTemplateButtonProps> = ({
19+
onNavigate,
20+
}) => {
21+
return (
22+
<MoreMenu>
23+
<MoreMenuTrigger>
24+
<Button startIcon={<AddIcon />} variant="contained">
25+
Create Template
26+
</Button>
27+
</MoreMenuTrigger>
28+
<MoreMenuContent>
29+
<MoreMenuItem
30+
onClick={() => {
31+
onNavigate(`/templates/new?exampleId=scratch`);
32+
}}
33+
>
34+
<NoteAddOutlined />
35+
From scratch
36+
</MoreMenuItem>
37+
<MoreMenuItem
38+
onClick={() => {
39+
onNavigate("/templates/new");
40+
}}
41+
>
42+
<UploadOutlined />
43+
Upload template
44+
</MoreMenuItem>
45+
<MoreMenuItem
46+
onClick={() => {
47+
onNavigate("/starter-templates");
48+
}}
49+
>
50+
<Inventory2 />
51+
Choose a starter template
52+
</MoreMenuItem>
53+
</MoreMenuContent>
54+
</MoreMenu>
55+
);
56+
};

site/src/pages/TemplatesPage/TemplatesPageView.tsx

+2-45
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import TableCell from "@mui/material/TableCell";
66
import TableContainer from "@mui/material/TableContainer";
77
import TableHead from "@mui/material/TableHead";
88
import TableRow from "@mui/material/TableRow";
9-
import AddIcon from "@mui/icons-material/AddOutlined";
109
import { type FC } from "react";
1110
import { useNavigate } from "react-router-dom";
1211
import { createDayString } from "utils/createDayString";
@@ -45,15 +44,7 @@ import { docs } from "utils/docs";
4544
import Skeleton from "@mui/material/Skeleton";
4645
import { AvatarDataSkeleton } from "components/AvatarData/AvatarDataSkeleton";
4746
import { DeprecatedBadge } from "components/Badges/Badges";
48-
import {
49-
MoreMenu,
50-
MoreMenuContent,
51-
MoreMenuItem,
52-
MoreMenuTrigger,
53-
} from "components/MoreMenu/MoreMenu";
54-
import NoteAddOutlined from "@mui/icons-material/NoteAddOutlined";
55-
import UploadOutlined from "@mui/icons-material/UploadOutlined";
56-
import Inventory2 from "@mui/icons-material/Inventory2";
47+
import { CreateTemplateButton } from "./CreateTemplateButton";
5748

5849
export const Language = {
5950
developerCount: (activeCount: number): string => {
@@ -180,41 +171,7 @@ export const TemplatesPageView: FC<TemplatesPageViewProps> = ({
180171
<Margins>
181172
<PageHeader
182173
actions={
183-
canCreateTemplates && (
184-
<MoreMenu>
185-
<MoreMenuTrigger>
186-
<Button startIcon={<AddIcon />} variant="contained">
187-
Create Template
188-
</Button>
189-
</MoreMenuTrigger>
190-
<MoreMenuContent>
191-
<MoreMenuItem
192-
onClick={() => {
193-
navigate(`/templates/new?exampleId=scratch`);
194-
}}
195-
>
196-
<NoteAddOutlined />
197-
From scratch
198-
</MoreMenuItem>
199-
<MoreMenuItem
200-
onClick={() => {
201-
navigate("/templates/new");
202-
}}
203-
>
204-
<UploadOutlined />
205-
Upload template
206-
</MoreMenuItem>
207-
<MoreMenuItem
208-
onClick={() => {
209-
navigate("/starter-templates");
210-
}}
211-
>
212-
<Inventory2 />
213-
Choose a starter template
214-
</MoreMenuItem>
215-
</MoreMenuContent>
216-
</MoreMenu>
217-
)
174+
canCreateTemplates && <CreateTemplateButton onNavigate={navigate} />
218175
}
219176
>
220177
<PageHeaderTitle>

0 commit comments

Comments
 (0)