Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitbec6a26

Browse files
authored
fix: re-add original create template context menu (#14326)
1 parent8c4d726 commitbec6a26

File tree

4 files changed

+105
-18
lines changed

4 files changed

+105
-18
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
importtype{Meta,StoryObj}from"@storybook/react";
2+
import{screen,userEvent}from"@storybook/test";
3+
import{CreateTemplateButton}from"./CreateTemplateButton";
4+
5+
constmeta:Meta<typeofCreateTemplateButton>={
6+
title:"pages/TemplatesPage/CreateTemplateButton",
7+
component:CreateTemplateButton,
8+
};
9+
10+
exportdefaultmeta;
11+
typeStory=StoryObj<typeofCreateTemplateButton>;
12+
13+
exportconstClose:Story={};
14+
15+
exportconstOpen:Story={
16+
play:async({ step})=>{
17+
constuser=userEvent.setup();
18+
awaitstep("click on trigger",async()=>{
19+
awaituser.click(screen.getByRole("button"));
20+
});
21+
},
22+
};
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
importAddIconfrom"@mui/icons-material/AddOutlined";
2+
importInventory2from"@mui/icons-material/Inventory2";
3+
importNoteAddOutlinedfrom"@mui/icons-material/NoteAddOutlined";
4+
importUploadOutlinedfrom"@mui/icons-material/UploadOutlined";
5+
importButtonfrom"@mui/material/Button";
6+
import{
7+
MoreMenu,
8+
MoreMenuContent,
9+
MoreMenuItem,
10+
MoreMenuTrigger,
11+
}from"components/MoreMenu/MoreMenu";
12+
importtype{FC}from"react";
13+
14+
typeCreateTemplateButtonProps={
15+
onNavigate:(path:string)=>void;
16+
};
17+
18+
exportconstCreateTemplateButton:FC<CreateTemplateButtonProps>=({
19+
onNavigate,
20+
})=>{
21+
return(
22+
<MoreMenu>
23+
<MoreMenuTrigger>
24+
<ButtonstartIcon={<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/TemplatesPage.test.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ test("create template from scratch", async () => {
1717
element:<TemplatesPage/>,
1818
},
1919
{
20-
path:"/starter-templates",
20+
path:"/templates/new",
2121
element:<divdata-testid="new-template-page"/>,
2222
},
2323
],
@@ -34,6 +34,9 @@ test("create template from scratch", async () => {
3434
name:"Create Template",
3535
});
3636
awaituser.click(createTemplateButton);
37+
constfromScratchMenuItem=awaitscreen.findByText("From scratch");
38+
awaituser.click(fromScratchMenuItem);
3739
awaitscreen.findByTestId("new-template-page");
38-
expect(router.state.location.pathname).toBe("/starter-templates");
40+
expect(router.state.location.pathname).toBe("/templates/new");
41+
expect(router.state.location.search).toBe("?exampleId=scratch");
3942
});

‎site/src/pages/TemplatesPage/TemplatesPageView.tsx

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import {
3737
TableRowSkeleton,
3838
}from"components/TableLoader/TableLoader";
3939
import{useClickableTableRow}from"hooks/useClickableTableRow";
40+
import{useDashboard}from"modules/dashboard/useDashboard";
4041
import{linkToTemplate,useLinks}from"modules/navigation";
4142
importtype{FC}from"react";
4243
import{useNavigate}from"react-router-dom";
@@ -46,6 +47,7 @@ import {
4647
formatTemplateActiveDevelopers,
4748
formatTemplateBuildTime,
4849
}from"utils/templates";
50+
import{CreateTemplateButton}from"./CreateTemplateButton";
4951
import{EmptyTemplates}from"./EmptyTemplates";
5052
import{TemplatesFilter}from"./TemplatesFilter";
5153

@@ -190,27 +192,31 @@ export const TemplatesPageView: FC<TemplatesPageViewProps> = ({
190192
examples,
191193
templates,
192194
})=>{
195+
const{ experiments}=useDashboard();
193196
constisLoading=!templates;
194197
constisEmpty=templates&&templates.length===0;
195198
constnavigate=useNavigate();
199+
constmultiOrgExperimentEnabled=experiments.includes("multi-organization");
200+
201+
constcreateTemplateAction=()=>{
202+
returnmultiOrgExperimentEnabled ?(
203+
<Button
204+
startIcon={<AddIcon/>}
205+
variant="contained"
206+
onClick={()=>{
207+
navigate("/starter-templates");
208+
}}
209+
>
210+
Create Template
211+
</Button>
212+
) :(
213+
<CreateTemplateButtononNavigate={navigate}/>
214+
);
215+
};
196216

197217
return(
198218
<Margins>
199-
<PageHeader
200-
actions={
201-
canCreateTemplates&&(
202-
<Button
203-
startIcon={<AddIcon/>}
204-
variant="contained"
205-
onClick={()=>{
206-
navigate("/starter-templates");
207-
}}
208-
>
209-
Create Template
210-
</Button>
211-
)
212-
}
213-
>
219+
<PageHeaderactions={canCreateTemplates&&createTemplateAction()}>
214220
<PageHeaderTitle>
215221
<Stackspacing={1}direction="row"alignItems="center">
216222
Templates
@@ -237,7 +243,7 @@ export const TemplatesPageView: FC<TemplatesPageViewProps> = ({
237243
</TableCell>
238244
<TableCellwidth="10%">{Language.buildTimeLabel}</TableCell>
239245
<TableCellwidth="15%">{Language.lastUpdatedLabel}</TableCell>
240-
<TableCellwidth="1%"></TableCell>
246+
<TableCellwidth="1%"/>
241247
</TableRow>
242248
</TableHead>
243249
<TableBody>

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp