diff --git a/.changeset/smart-boxes-double.md b/.changeset/smart-boxes-double.md new file mode 100644 index 0000000000..64a2fe9656 --- /dev/null +++ b/.changeset/smart-boxes-double.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +The ScaffolderPage can be passed an optional `loadingHoldingText` string. It will replace the Loading text in the scaffolder task page. diff --git a/plugins/scaffolder/api-report.md b/plugins/scaffolder/api-report.md index b77fb5f939..c7a95f177e 100644 --- a/plugins/scaffolder/api-report.md +++ b/plugins/scaffolder/api-report.md @@ -246,7 +246,9 @@ export const ScaffolderFieldExtensions: React_2.ComponentType; export const ScaffolderPage: ({ TemplateCardComponent, groups, + loadingHoldingText, }: { + loadingHoldingText?: string | undefined; TemplateCardComponent?: | ComponentType<{ template: TemplateEntityV1beta2; diff --git a/plugins/scaffolder/src/components/Router.tsx b/plugins/scaffolder/src/components/Router.tsx index e667c676f2..10a78e1071 100644 --- a/plugins/scaffolder/src/components/Router.tsx +++ b/plugins/scaffolder/src/components/Router.tsx @@ -31,6 +31,7 @@ import { import { useElementFilter } from '@backstage/core-plugin-api'; type RouterProps = { + loadingHoldingText?: string; TemplateCardComponent?: | ComponentType<{ template: TemplateEntityV1beta2 }> | undefined; @@ -41,7 +42,11 @@ type RouterProps = { }>; }; -export const Router = ({ TemplateCardComponent, groups }: RouterProps) => { +export const Router = ({ + TemplateCardComponent, + groups, + loadingHoldingText, +}: RouterProps) => { const outlet = useOutlet(); const customFieldExtensions = useElementFilter(outlet, elements => @@ -79,7 +84,10 @@ export const Router = ({ TemplateCardComponent, groups }: RouterProps) => { path="/templates/:templateName" element={} /> - } /> + } + /> } /> ); diff --git a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx index 9f5dad2adc..04e303b4f4 100644 --- a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx +++ b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx @@ -218,7 +218,11 @@ export const TaskStatusStepper = memo( const hasLinks = ({ entityRef, remoteUrl, links = [] }: TaskOutput): boolean => !!(entityRef || remoteUrl || links.length > 0); -export const TaskPage = () => { +type TaskPageProps = { + loadingHoldingText?: string; +}; + +export const TaskPage = ({ loadingHoldingText }: TaskPageProps) => { const classes = useStyles(); const navigate = useNavigate(); const rootLink = useRouteRef(rootRouteRef); @@ -256,7 +260,7 @@ export const TaskPage = () => { const logAsString = useMemo(() => { if (!currentStepId) { - return 'Loading...'; + return loadingHoldingText ? loadingHoldingText : 'Loading...'; } const log = taskStream.stepLogs[currentStepId]; @@ -264,7 +268,7 @@ export const TaskPage = () => { return 'Waiting for logs...'; } return log.join('\n'); - }, [taskStream.stepLogs, currentStepId]); + }, [taskStream.stepLogs, currentStepId, loadingHoldingText]); const taskNotFound = taskStream.completed === true &&