From 823ae416c5e29e6f7a9b259ef5fdf401f4911bcf Mon Sep 17 00:00:00 2001 From: Raghunandan Date: Sun, 26 Jun 2022 10:56:32 +0200 Subject: [PATCH] Fix scroll issue within techdocs reader instead of adding special classes to entity page components Signed-off-by: Raghunandan --- .../components/TabbedLayout/RoutedTabs.tsx | 1 - .../src/layout/Header/Header.tsx | 4 +--- .../src/layout/HeaderTabs/HeaderTabs.tsx | 4 +--- .../components/EntityLayout/EntityLayout.tsx | 1 - .../TechDocsReaderPage/TechDocsReaderPage.tsx | 22 ++++++++++--------- .../TechDocsReaderPageContent/dom.tsx | 19 +++++----------- 6 files changed, 19 insertions(+), 32 deletions(-) diff --git a/packages/core-components/src/components/TabbedLayout/RoutedTabs.tsx b/packages/core-components/src/components/TabbedLayout/RoutedTabs.tsx index 027d63e1a0..5debafd3f8 100644 --- a/packages/core-components/src/components/TabbedLayout/RoutedTabs.tsx +++ b/packages/core-components/src/components/TabbedLayout/RoutedTabs.tsx @@ -80,7 +80,6 @@ export function RoutedTabs(props: { routes: SubRoute[] }) { tabs={headerTabs} selectedIndex={index} onChange={onTabChange} - className="entity-page-tabs" /> diff --git a/packages/core-components/src/layout/Header/Header.tsx b/packages/core-components/src/layout/Header/Header.tsx index 4b7d59d3c2..bb4d19b949 100644 --- a/packages/core-components/src/layout/Header/Header.tsx +++ b/packages/core-components/src/layout/Header/Header.tsx @@ -113,7 +113,6 @@ type Props = { tooltip?: string; type?: string; typeLink?: string; - className?: string | ''; }; type TypeFragmentProps = { @@ -209,7 +208,6 @@ export function Header(props: PropsWithChildren) { tooltip, type, typeLink, - className, } = props; const classes = useStyles(); const configApi = useApi(configApiRef); @@ -222,7 +220,7 @@ export function Header(props: PropsWithChildren) { return ( <> -
+
void; selectedIndex?: number; - className?: string | ''; }; /** @@ -77,7 +76,7 @@ type HeaderTabsProps = { * */ export function HeaderTabs(props: HeaderTabsProps) { - const { tabs, onChange, selectedIndex, className } = props; + const { tabs, onChange, selectedIndex } = props; const [selectedTab, setSelectedTab] = useState(selectedIndex ?? 0); const styles = useStyles(); @@ -105,7 +104,6 @@ export function HeaderTabs(props: HeaderTabsProps) { aria-label="scrollable auto tabs example" onChange={handleChange} value={selectedTab} - className={className} > {tabs.map((tab, index) => ( { title={} pageTitleOverride={headerTitle} type={headerType} - className="entity-page-header" > {entity && ( <> diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPage/TechDocsReaderPage.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPage/TechDocsReaderPage.tsx index 6885957002..9f69dcb8d8 100644 --- a/plugins/techdocs/src/reader/components/TechDocsReaderPage/TechDocsReaderPage.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsReaderPage/TechDocsReaderPage.tsx @@ -106,16 +106,18 @@ export const TechDocsReaderPage = (props: TechDocsReaderPageProps) => { return ( {({ metadata, entityMetadata, onReady }) => ( - - {children instanceof Function - ? children({ - entityRef, - techdocsMetadataValue: metadata.value, - entityMetadataValue: entityMetadata.value, - onReady, - }) - : children} - +
+ + {children instanceof Function + ? children({ + entityRef, + techdocsMetadataValue: metadata.value, + entityMetadataValue: entityMetadata.value, + onReady, + }) + : children} + +
)}
); diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/dom.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/dom.tsx index 0503a91a3d..76b07c9d32 100644 --- a/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/dom.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsReaderPageContent/dom.tsx @@ -81,25 +81,16 @@ export const useTechDocsReaderDom = ( if (isMobileMedia) { element.style.top = '0px'; } else { + const page = document?.querySelector('.techdocs-reader-page'); + const pageTop = page?.getBoundingClientRect().top ?? 0; let domTop = dom.getBoundingClientRect().top ?? 0; + const tabs = dom.querySelector('.md-container > .md-tabs'); const tabsHeight = tabs?.getBoundingClientRect().height ?? 0; - // When docs are shown in entity pages this method to reposition the sidebars on scroll - // do not consider the header and tabs. - const entityPageHeader = document.querySelector( - '.entity-page-header', - ); - const entityPageTabs = - document.querySelector('.entity-page-tabs'); - const entityPageHeaderTop = - entityPageHeader?.getBoundingClientRect().height ?? 0; - const entityPageTabsTop = - entityPageTabs?.getBoundingClientRect().height ?? 0; - // the sidebars should not scroll beyond the total height of the header and tabs - if (domTop < entityPageHeaderTop + entityPageTabsTop) { - domTop = entityPageHeaderTop + entityPageTabsTop; + if (domTop < pageTop) { + domTop = pageTop; } element.style.top = `${Math.max(domTop, 0) + tabsHeight}px`; }