From 7d5678713d33cc85f5427b0d4b7b688888dfccf3 Mon Sep 17 00:00:00 2001 From: Juan Escalada Date: Sat, 9 Nov 2024 14:02:47 +0900 Subject: [PATCH] Add contextMenu prop to Actions and ListTasks Signed-off-by: Juan Escalada --- .../ScaffolderPageContextMenu.tsx | 7 ++++- .../components/ActionsPage/ActionsPage.tsx | 26 ++++++++++++++++--- .../ListTasksPage/ListTasksPage.tsx | 20 +++++++++++--- .../src/components/Router/Router.tsx | 9 +++++-- 4 files changed, 52 insertions(+), 10 deletions(-) diff --git a/plugins/scaffolder-react/src/next/components/ScaffolderPageContextMenu/ScaffolderPageContextMenu.tsx b/plugins/scaffolder-react/src/next/components/ScaffolderPageContextMenu/ScaffolderPageContextMenu.tsx index 23b34123d1..1cf5afdc0a 100644 --- a/plugins/scaffolder-react/src/next/components/ScaffolderPageContextMenu/ScaffolderPageContextMenu.tsx +++ b/plugins/scaffolder-react/src/next/components/ScaffolderPageContextMenu/ScaffolderPageContextMenu.tsx @@ -61,7 +61,12 @@ export function ScaffolderPageContextMenu( permission: taskReadPermission, }); - if (!onEditorClicked && !onActionsClicked) { + if ( + !onEditorClicked && + !onActionsClicked && + !onTasksClicked && + !onCreateClicked + ) { return null; } diff --git a/plugins/scaffolder/src/components/ActionsPage/ActionsPage.tsx b/plugins/scaffolder/src/components/ActionsPage/ActionsPage.tsx index 539a5697d3..f85c1f0e6b 100644 --- a/plugins/scaffolder/src/components/ActionsPage/ActionsPage.tsx +++ b/plugins/scaffolder/src/components/ActionsPage/ActionsPage.tsx @@ -407,7 +407,16 @@ export const ActionPageContent = () => { ); }; -export const ActionsPage = () => { + +export type ActionsPageProps = { + contextMenu?: { + editor?: boolean; + tasks?: boolean; + create?: boolean; + }; +}; + +export const ActionsPage = (props: ActionsPageProps) => { const navigate = useNavigate(); const editorLink = useRouteRef(editRouteRef); const tasksLink = useRouteRef(scaffolderListTaskRouteRef); @@ -415,10 +424,19 @@ export const ActionsPage = () => { const { t } = useTranslationRef(scaffolderTranslationRef); const scaffolderPageContextMenuProps = { - onEditorClicked: () => navigate(editorLink()), + onEditorClicked: + props?.contextMenu?.editor !== false + ? () => navigate(editorLink()) + : undefined, onActionsClicked: undefined, - onTasksClicked: () => navigate(tasksLink()), - onCreateClicked: () => navigate(createLink()), + onTasksClicked: + props?.contextMenu?.tasks !== false + ? () => navigate(tasksLink()) + : undefined, + onCreateClicked: + props?.contextMenu?.create !== false + ? () => navigate(createLink()) + : undefined, }; return ( diff --git a/plugins/scaffolder/src/components/ListTasksPage/ListTasksPage.tsx b/plugins/scaffolder/src/components/ListTasksPage/ListTasksPage.tsx index b07d7c7fd3..26c8d8c36f 100644 --- a/plugins/scaffolder/src/components/ListTasksPage/ListTasksPage.tsx +++ b/plugins/scaffolder/src/components/ListTasksPage/ListTasksPage.tsx @@ -46,6 +46,11 @@ import { scaffolderTranslationRef } from '../../translation'; export interface MyTaskPageProps { initiallySelectedFilter?: 'owned' | 'all'; + contextMenu?: { + editor?: boolean; + actions?: boolean; + create?: boolean; + }; } const ListTaskPageContent = (props: MyTaskPageProps) => { @@ -161,10 +166,19 @@ export const ListTasksPage = (props: MyTaskPageProps) => { const { t } = useTranslationRef(scaffolderTranslationRef); const scaffolderPageContextMenuProps = { - onEditorClicked: () => navigate(editorLink()), - onActionsClicked: () => navigate(actionsLink()), + onEditorClicked: + props?.contextMenu?.editor !== false + ? () => navigate(editorLink()) + : undefined, + onActionsClicked: + props?.contextMenu?.actions !== false + ? () => navigate(actionsLink()) + : undefined, onTasksClicked: undefined, - onCreateClicked: () => navigate(createLink()), + onCreateClicked: + props?.contextMenu?.create !== false + ? () => navigate(createLink()) + : undefined, }; return ( diff --git a/plugins/scaffolder/src/components/Router/Router.tsx b/plugins/scaffolder/src/components/Router/Router.tsx index 1121fd2766..cabd4cb906 100644 --- a/plugins/scaffolder/src/components/Router/Router.tsx +++ b/plugins/scaffolder/src/components/Router/Router.tsx @@ -96,6 +96,8 @@ export type RouterProps = { actions?: boolean; /** Whether to show a link to the tasks page */ tasks?: boolean; + /** Whether to show a link to the create page (on /create subroutes) */ + create?: boolean; }; }; @@ -200,12 +202,15 @@ export const Router = (props: PropsWithChildren) => { } /> - } /> + } + /> - + } />