Skip to content

Commit a574b5f

Browse files
committed
chore(docs): Add onClick to SkipToContent in demos
SkipToContent does not work in the context of the PatternFly page. Using document.getElementById sidesteps this issue and allows them to work as usual. I tried using refs, but because Page is an older class component, the refs were not compatible. We'd likely need to rewrite page as a function component. This is good enough for now, in my opinion. SkipToContentBasic works as advertised, so I am not touching that, and I also did not touch react-integration or unit tests.
1 parent b0877b3 commit a574b5f

21 files changed

+286
-147
lines changed

packages/react-core/src/demos/DashboardWrapper.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,19 @@ export const DashboardWrapper: React.FC<DashboardWrapperProps> = ({
9898
</PageSidebar>
9999
);
100100

101+
const defaultContainerId = 'main-content-page-layout-default-nav';
102+
103+
const handleClick = (event: React.MouseEvent) => {
104+
event.preventDefault();
105+
106+
const mainContentElement = document.getElementById(mainContainerId ?? defaultContainerId);
107+
if (mainContentElement) {
108+
mainContentElement.focus();
109+
}
110+
};
111+
101112
const PageSkipToContent = (
102-
<SkipToContent href={`#${mainContainerId ?? 'main-content-page-layout-default-nav'}`}>
113+
<SkipToContent onClick={handleClick} href={`#${mainContainerId ?? defaultContainerId}`}>
103114
Skip to content
104115
</SkipToContent>
105116
);
@@ -112,7 +123,7 @@ export const DashboardWrapper: React.FC<DashboardWrapperProps> = ({
112123
skipToContent={PageSkipToContent}
113124
banner={banner}
114125
breadcrumb={renderedBreadcrumb}
115-
mainContainerId={mainContainerId ?? 'main-content-page-layout-default-nav'}
126+
mainContainerId={mainContainerId ?? defaultContainerId}
116127
notificationDrawer={notificationDrawer}
117128
isNotificationDrawerExpanded={isNotificationDrawerExpanded}
118129
{...(typeof onPageResize === 'function' && {

packages/react-core/src/demos/NotificationDrawer/examples/NotificationDrawerBasic.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,21 @@ export const NotificationDrawerBasic: React.FunctionComponent = () => {
279279
</PageSidebar>
280280
);
281281
const pageId = 'main-content-page-layout-default-nav';
282-
const PageSkipToContent = <SkipToContent href={`#${pageId}`}>Skip to content</SkipToContent>;
282+
283+
const handleClick = (event) => {
284+
event.preventDefault();
285+
286+
const mainContentElement = document.getElementById(pageId);
287+
if (mainContentElement) {
288+
mainContentElement.focus();
289+
}
290+
};
291+
292+
const PageSkipToContent = (
293+
<SkipToContent onClick={handleClick} href={`#${pageId}`}>
294+
Skip to content
295+
</SkipToContent>
296+
);
283297

284298
const PageBreadcrumb = (
285299
<Breadcrumb>

packages/react-core/src/demos/NotificationDrawer/examples/NotificationDrawerGrouped.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,21 @@ export const NotificationDrawerGrouped: React.FunctionComponent = () => {
329329
</PageSidebar>
330330
);
331331
const pageId = 'main-content-page-layout-default-nav';
332-
const PageSkipToContent = <SkipToContent href={`#${pageId}`}>Skip to content</SkipToContent>;
332+
333+
const handleClick = (event) => {
334+
event.preventDefault();
335+
336+
const mainContentElement = document.getElementById(pageId);
337+
if (mainContentElement) {
338+
mainContentElement.focus();
339+
}
340+
};
341+
342+
const PageSkipToContent = (
343+
<SkipToContent onClick={handleClick} href={`#${pageId}`}>
344+
Skip to content
345+
</SkipToContent>
346+
);
333347

334348
const PageBreadcrumb = (
335349
<Breadcrumb>

packages/react-core/src/demos/examples/DashboardWrapper.js

Lines changed: 0 additions & 126 deletions
This file was deleted.

packages/react-core/src/demos/examples/Masthead/MastheadWithHorizontalNav.tsx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,20 @@ export const MastheadWithHorizontalNav: React.FunctionComponent = () => {
282282

283283
const mainContainerId = 'main-content-page-layout-tertiary-nav';
284284

285-
const pageSkipToContent = <SkipToContent href={`#${mainContainerId}`}>Skip to content</SkipToContent>;
285+
const handleClick = (event) => {
286+
event.preventDefault();
287+
288+
const mainContentElement = document.getElementById(mainContainerId);
289+
if (mainContentElement) {
290+
mainContentElement.focus();
291+
}
292+
};
293+
294+
const pageSkipToContent = (
295+
<SkipToContent onClick={handleClick} href={`#${mainContainerId}`}>
296+
Skip to content
297+
</SkipToContent>
298+
);
286299

287300
return (
288301
<Page

packages/react-core/src/demos/examples/Masthead/MastheadWithUtilitiesAndUserDropdownMenu.tsx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,20 @@ export const MastheadWithUtilitiesAndUserDropdownMenu: React.FunctionComponent =
515515

516516
const mainContainerId = 'main-content-page-layout-tertiary-nav';
517517

518-
const pageSkipToContent = <SkipToContent href={`#${mainContainerId}`}>Skip to content</SkipToContent>;
518+
const handleClick = (event) => {
519+
event.preventDefault();
520+
521+
const mainContentElement = document.getElementById(mainContainerId);
522+
if (mainContentElement) {
523+
mainContentElement.focus();
524+
}
525+
};
526+
527+
const pageSkipToContent = (
528+
<SkipToContent onClick={handleClick} href={`#${mainContainerId}`}>
529+
Skip to content
530+
</SkipToContent>
531+
);
519532

520533
return (
521534
<Page

packages/react-core/src/demos/examples/Nav/NavDefault.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,21 @@ export const NavDefault: React.FunctionComponent = () => {
5858
</PageSidebar>
5959
);
6060
const pageId = 'main-content-page-layout-default-nav';
61-
const PageSkipToContent = <SkipToContent href={`#${pageId}`}>Skip to content</SkipToContent>;
61+
62+
const handleClick = (event) => {
63+
event.preventDefault();
64+
65+
const mainContentElement = document.getElementById(pageId);
66+
if (mainContentElement) {
67+
mainContentElement.focus();
68+
}
69+
};
70+
71+
const PageSkipToContent = (
72+
<SkipToContent onClick={handleClick} href={`#${pageId}`}>
73+
Skip to content
74+
</SkipToContent>
75+
);
6276

6377
return (
6478
<>

packages/react-core/src/demos/examples/Nav/NavExpandable.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,21 @@ export const NavExpandableDemo: React.FunctionComponent = () => {
8484
</PageSidebar>
8585
);
8686
const pageId = 'main-content-page-layout-expandable-nav';
87-
const PageSkipToContent = <SkipToContent href={`#${pageId}`}>Skip to content</SkipToContent>;
87+
88+
const handleClick = (event) => {
89+
event.preventDefault();
90+
91+
const mainContentElement = document.getElementById(pageId);
92+
if (mainContentElement) {
93+
mainContentElement.focus();
94+
}
95+
};
96+
97+
const PageSkipToContent = (
98+
<SkipToContent onClick={handleClick} href={`#${pageId}`}>
99+
Skip to content
100+
</SkipToContent>
101+
);
88102

89103
return (
90104
<React.Fragment>

packages/react-core/src/demos/examples/Nav/NavFlyout.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,21 @@ export const NavFlyout: React.FunctionComponent = () => {
259259
);
260260

261261
const pageId = 'main-content-page-layout-flyout-nav';
262-
const PageSkipToContent = <SkipToContent href={`#${pageId}`}>Skip to Content</SkipToContent>;
262+
263+
const handleClick = (event) => {
264+
event.preventDefault();
265+
266+
const mainContentElement = document.getElementById(pageId);
267+
if (mainContentElement) {
268+
mainContentElement.focus();
269+
}
270+
};
271+
272+
const PageSkipToContent = (
273+
<SkipToContent onClick={handleClick} href={`#${pageId}`}>
274+
Skip to content
275+
</SkipToContent>
276+
);
263277

264278
return (
265279
<Page

packages/react-core/src/demos/examples/Nav/NavGrouped.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,21 @@ export const NavGrouped: React.FunctionComponent = () => {
6767
</PageSidebar>
6868
);
6969
const pageId = 'main-content-page-layout-group-nav';
70-
const PageSkipToContent = <SkipToContent href={`#${pageId}`}>Skip to Content</SkipToContent>;
70+
71+
const handleClick = (event) => {
72+
event.preventDefault();
73+
74+
const mainContentElement = document.getElementById(pageId);
75+
if (mainContentElement) {
76+
mainContentElement.focus();
77+
}
78+
};
79+
80+
const PageSkipToContent = (
81+
<SkipToContent onClick={handleClick} href={`#${pageId}`}>
82+
Skip to content
83+
</SkipToContent>
84+
);
7185

7286
return (
7387
<>

0 commit comments

Comments
 (0)