Merge pull request #31077 from gauravagrawal01/fix/scaffolder-router-templatingExtensions

fix(scaffolder): add missing templatingExtensions option to RouterProps contextMenu
This commit is contained in:
Ben Lambert
2025-09-23 14:42:10 +02:00
committed by GitHub
6 changed files with 48 additions and 8 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-scaffolder': patch
---
Add missing `templatingExtensions` option to RouterProps.contextMenu to allow global control across scaffolder pages
+1
View File
@@ -492,6 +492,7 @@ export type RouterProps = {
actions?: boolean;
tasks?: boolean;
create?: boolean;
templatingExtensions?: boolean;
};
};
@@ -240,6 +240,7 @@ export type ActionsPageProps = {
editor?: boolean;
tasks?: boolean;
create?: boolean;
templatingExtensions?: boolean;
};
};
@@ -265,7 +266,10 @@ export const ActionsPage = (props: ActionsPageProps) => {
props?.contextMenu?.create !== false
? () => navigate(createLink())
: undefined,
onTemplatingExtensionsClicked: () => navigate(templatingExtensionsLink()),
onTemplatingExtensionsClicked:
props?.contextMenu?.templatingExtensions !== false
? () => navigate(templatingExtensionsLink())
: undefined,
};
return (
@@ -55,6 +55,7 @@ export interface MyTaskPageProps {
editor?: boolean;
actions?: boolean;
create?: boolean;
templatingExtensions?: boolean;
};
}
@@ -193,7 +194,10 @@ export const ListTasksPage = (props: MyTaskPageProps) => {
props?.contextMenu?.create !== false
? () => navigate(createLink())
: undefined,
onTemplatingExtensionsClicked: () => navigate(templatingExtensionsLink()),
onTemplatingExtensionsClicked:
props?.contextMenu?.templatingExtensions !== false
? () => navigate(templatingExtensionsLink())
: undefined,
};
return (
<Page themeId="home">
@@ -103,6 +103,8 @@ export type RouterProps = {
tasks?: boolean;
/** Whether to show a link to the create page (on /create subroutes) */
create?: boolean;
/** Whether to show a link to the templating extensions page */
templatingExtensions?: boolean;
};
};
@@ -244,7 +246,7 @@ export const InternalRouter = (
/>
<Route
path={templatingExtensionsRouteRef.path}
element={<TemplatingExtensionsPage />}
element={<TemplatingExtensionsPage contextMenu={props.contextMenu} />}
/>
<Route path="*" element={<NotFoundErrorPage />} />
</Routes>
@@ -296,7 +296,18 @@ export const TemplatingExtensionsPageContent = ({
);
};
export const TemplatingExtensionsPage = () => {
export type TemplatingExtensionsPageProps = {
contextMenu?: {
editor?: boolean;
actions?: boolean;
tasks?: boolean;
create?: boolean;
};
};
export const TemplatingExtensionsPage = (
props: TemplatingExtensionsPageProps,
) => {
const navigate = useNavigate();
const editorLink = useRouteRef(editRouteRef);
const tasksLink = useRouteRef(scaffolderListTaskRouteRef);
@@ -304,10 +315,23 @@ export const TemplatingExtensionsPage = () => {
const actionsLink = useRouteRef(actionsRouteRef);
const scaffolderPageContextMenuProps: ScaffolderPageContextMenuProps = {
onEditorClicked: () => navigate(editorLink()),
onActionsClicked: () => navigate(actionsLink()),
onTasksClicked: () => navigate(tasksLink()),
onCreateClicked: () => navigate(createLink()),
onEditorClicked:
props?.contextMenu?.editor !== false
? () => navigate(editorLink())
: undefined,
onActionsClicked:
props?.contextMenu?.actions !== false
? () => navigate(actionsLink())
: undefined,
onTasksClicked:
props?.contextMenu?.tasks !== false
? () => navigate(tasksLink())
: undefined,
onCreateClicked:
props?.contextMenu?.create !== false
? () => navigate(createLink())
: undefined,
onTemplatingExtensionsClicked: undefined,
};
const { t } = useTranslationRef(scaffolderTranslationRef);