diff --git a/packages/app/src/components/Root/Root.tsx b/packages/app/src/components/Root/Root.tsx
index 09ee571cf6..48141e4f53 100644
--- a/packages/app/src/components/Root/Root.tsx
+++ b/packages/app/src/components/Root/Root.tsx
@@ -39,6 +39,7 @@ import {
SidebarItem,
SidebarDivider,
SidebarSpace,
+ SidebarScrollWrapper,
} from '@backstage/core-components';
const useSidebarLogoStyles = makeStyles({
@@ -88,10 +89,12 @@ export const Root = ({ children }: PropsWithChildren<{}>) => (
{/* End global nav */}
-
-
-
-
+
+
+
+
+
+
diff --git a/packages/core-components/src/layout/Page/Page.tsx b/packages/core-components/src/layout/Page/Page.tsx
index 8acb54c268..8d1dfe2943 100644
--- a/packages/core-components/src/layout/Page/Page.tsx
+++ b/packages/core-components/src/layout/Page/Page.tsx
@@ -25,7 +25,8 @@ const useStyles = makeStyles(() => ({
"'pageHeader pageHeader pageHeader' 'pageSubheader pageSubheader pageSubheader' 'pageNav pageContent pageSidebar'",
gridTemplateRows: 'auto auto 1fr',
gridTemplateColumns: 'auto 1fr auto',
- minHeight: '100vh',
+ height: '100vh',
+ overflowY: 'auto',
},
}));
diff --git a/packages/core-components/src/layout/Sidebar/Items.tsx b/packages/core-components/src/layout/Sidebar/Items.tsx
index 9bccffc6c4..28ebab3e18 100644
--- a/packages/core-components/src/layout/Sidebar/Items.tsx
+++ b/packages/core-components/src/layout/Sidebar/Items.tsx
@@ -290,3 +290,11 @@ export const SidebarDivider = styled('hr')({
border: 'none',
margin: '12px 0px',
});
+
+export const SidebarScrollWrapper = styled('div')({
+ flex: '0 1 auto',
+ overflowY: 'scroll',
+ // Display at least one item in the container
+ // Question: Can this be a config/theme variable - if so, which? :/
+ minHeight: '48px',
+});
diff --git a/packages/core-components/src/layout/Sidebar/index.ts b/packages/core-components/src/layout/Sidebar/index.ts
index fc0e29f9a6..58e193dbaf 100644
--- a/packages/core-components/src/layout/Sidebar/index.ts
+++ b/packages/core-components/src/layout/Sidebar/index.ts
@@ -23,6 +23,7 @@ export {
SidebarSearchField,
SidebarSpace,
SidebarSpacer,
+ SidebarScrollWrapper,
} from './Items';
export { IntroCard, SidebarIntro } from './Intro';
export {
diff --git a/packages/core/src/layout/Page/Page.tsx b/packages/core/src/layout/Page/Page.tsx
index 8acb54c268..8d1dfe2943 100644
--- a/packages/core/src/layout/Page/Page.tsx
+++ b/packages/core/src/layout/Page/Page.tsx
@@ -25,7 +25,8 @@ const useStyles = makeStyles(() => ({
"'pageHeader pageHeader pageHeader' 'pageSubheader pageSubheader pageSubheader' 'pageNav pageContent pageSidebar'",
gridTemplateRows: 'auto auto 1fr',
gridTemplateColumns: 'auto 1fr auto',
- minHeight: '100vh',
+ height: '100vh',
+ overflowY: 'auto',
},
}));
diff --git a/plugins/shortcuts/src/Shortcuts.tsx b/plugins/shortcuts/src/Shortcuts.tsx
index 775b0b3809..86aa9565d3 100644
--- a/plugins/shortcuts/src/Shortcuts.tsx
+++ b/plugins/shortcuts/src/Shortcuts.tsx
@@ -22,18 +22,14 @@ import { ShortcutItem } from './ShortcutItem';
import { AddShortcut } from './AddShortcut';
import { shortcutsApiRef } from './api';
-import { Progress, SidebarItem } from '@backstage/core-components';
+import {
+ Progress,
+ SidebarItem,
+ SidebarScrollWrapper,
+} from '@backstage/core-components';
import { useApi } from '@backstage/core-plugin-api';
-const useStyles = makeStyles({
- root: {
- flex: '1 1 auto',
- overflowY: 'scroll',
- },
-});
-
export const Shortcuts = () => {
- const classes = useStyles();
const shortcutApi = useApi(shortcutsApiRef);
const shortcuts = useObservable(
useMemo(() => shortcutApi.shortcut$(), [shortcutApi]),
@@ -50,7 +46,7 @@ export const Shortcuts = () => {
};
return (
-
+
{
/>
))
)}
-
+
);
};