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);