From e0ffe84d55fbf0ee29d8aac0510f90b49f919a8b Mon Sep 17 00:00:00 2001 From: Gaurav Agrawal Date: Sun, 7 Sep 2025 18:05:57 +0000 Subject: [PATCH 1/2] fix(scaffolder): add missing templatingExtensions flag to RouterProps contextMenu Signed-off-by: Gaurav Agrawal --- .changeset/ready-pots-arrive.md | 5 +++ .../components/ActionsPage/ActionsPage.tsx | 6 +++- .../ListTasksPage/ListTasksPage.tsx | 6 +++- .../src/components/Router/Router.tsx | 4 ++- .../TemplatingExtensionsPage.tsx | 34 ++++++++++++++++--- 5 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 .changeset/ready-pots-arrive.md diff --git a/.changeset/ready-pots-arrive.md b/.changeset/ready-pots-arrive.md new file mode 100644 index 0000000000..96f13a12ae --- /dev/null +++ b/.changeset/ready-pots-arrive.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Add missing `templatingExtensions` option to RouterProps.contextMenu to allow global control across scaffolder pages diff --git a/plugins/scaffolder/src/components/ActionsPage/ActionsPage.tsx b/plugins/scaffolder/src/components/ActionsPage/ActionsPage.tsx index 402c0427dc..6be502659a 100644 --- a/plugins/scaffolder/src/components/ActionsPage/ActionsPage.tsx +++ b/plugins/scaffolder/src/components/ActionsPage/ActionsPage.tsx @@ -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 ( diff --git a/plugins/scaffolder/src/components/ListTasksPage/ListTasksPage.tsx b/plugins/scaffolder/src/components/ListTasksPage/ListTasksPage.tsx index d6b5b7116e..6cce6c3727 100644 --- a/plugins/scaffolder/src/components/ListTasksPage/ListTasksPage.tsx +++ b/plugins/scaffolder/src/components/ListTasksPage/ListTasksPage.tsx @@ -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 ( diff --git a/plugins/scaffolder/src/components/Router/Router.tsx b/plugins/scaffolder/src/components/Router/Router.tsx index a57811a520..7a2496c046 100644 --- a/plugins/scaffolder/src/components/Router/Router.tsx +++ b/plugins/scaffolder/src/components/Router/Router.tsx @@ -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 = ( /> } + element={} /> } /> diff --git a/plugins/scaffolder/src/components/TemplatingExtensionsPage/TemplatingExtensionsPage.tsx b/plugins/scaffolder/src/components/TemplatingExtensionsPage/TemplatingExtensionsPage.tsx index 720d6204ea..fc2b180596 100644 --- a/plugins/scaffolder/src/components/TemplatingExtensionsPage/TemplatingExtensionsPage.tsx +++ b/plugins/scaffolder/src/components/TemplatingExtensionsPage/TemplatingExtensionsPage.tsx @@ -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); From 443c0e4348cc6328cdb82c4d4f6f5135e51cffa5 Mon Sep 17 00:00:00 2001 From: Gaurav Agrawal Date: Sun, 7 Sep 2025 19:51:00 +0000 Subject: [PATCH 2/2] fix: add api report Signed-off-by: Gaurav Agrawal --- plugins/scaffolder/report.api.md | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/scaffolder/report.api.md b/plugins/scaffolder/report.api.md index fbb73f6225..a4a339f01e 100644 --- a/plugins/scaffolder/report.api.md +++ b/plugins/scaffolder/report.api.md @@ -492,6 +492,7 @@ export type RouterProps = { actions?: boolean; tasks?: boolean; create?: boolean; + templatingExtensions?: boolean; }; };