@patternfly/documentation-framework 6.0.0-alpha.8 → 6.0.0-alpha.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1165 -0
- package/app.js +2 -5
- package/components/autoLinkHeader/autoLinkHeader.css +2 -2
- package/components/autoLinkHeader/autoLinkHeader.js +8 -19
- package/components/cssVariables/cssVariables.css +9 -11
- package/components/cssVariables/cssVariables.js +19 -32
- package/components/example/example.css +14 -58
- package/components/example/example.js +149 -78
- package/components/example/exampleToolbar.js +3 -2
- package/components/footer/footer.css +16 -16
- package/components/footer/footer.js +32 -32
- package/components/gdprBanner/gdprBanner.css +0 -3
- package/components/gdprBanner/gdprBanner.js +22 -16
- package/components/inlineAlert/inlineAlert.js +1 -1
- package/components/link/link.js +23 -18
- package/components/propsTable/propsTable.js +14 -10
- package/components/sectionGallery/TextSummary.js +5 -5
- package/components/sectionGallery/sectionDataListLayout.js +87 -41
- package/components/sectionGallery/sectionGallery.css +6 -39
- package/components/sectionGallery/sectionGalleryLayout.js +73 -23
- package/components/sectionGallery/sectionGalleryToolbar.js +47 -12
- package/components/sideNav/sideNav.js +3 -4
- package/components/tableOfContents/tableOfContents.css +26 -35
- package/components/tableOfContents/tableOfContents.js +58 -28
- package/layouts/sideNavLayout/sideNavLayout.css +1 -36
- package/layouts/sideNavLayout/sideNavLayout.js +188 -101
- package/package.json +12 -19
- package/pages/404/404.css +2 -2
- package/pages/404/index.js +23 -36
- package/routes.js +3 -1
- package/scripts/md/anchor-header.js +1 -1
- package/scripts/md/parseMD.js +20 -18
- package/scripts/md/styled-tags.js +22 -14
- package/scripts/webpack/webpack.base.config.js +7 -18
- package/scripts/writeScreenshots.js +2 -2
- package/templates/mdx.css +11 -288
- package/templates/mdx.js +40 -43
- package/templates/patternfly-docs/patternfly-docs.source.js +8 -8
- package/versions.json +42 -14
- package/components/sideNav/sideNav.css +0 -21
- package/pages/global-css-variables.md +0 -109
- package/pages/img/component-variable-mapping.png +0 -0
|
@@ -1,39 +1,6 @@
|
|
|
1
|
-
.ws-landing-page > * {
|
|
2
|
-
max-width: 832px;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
.ws-landing-page > .ws-section-gallery-full-width {
|
|
6
|
-
max-width: initial;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.ws-section-gallery {
|
|
10
|
-
/* top placement */
|
|
11
|
-
margin-top: calc(var(--pf-v5-c-page__main-section--PaddingTop) * -1);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
* + .ws-section-gallery {
|
|
15
|
-
/* top placement */
|
|
16
|
-
margin-top: unset;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
1
|
/* Toolbar styles */
|
|
20
|
-
.ws-section-gallery .pf-
|
|
21
|
-
margin-
|
|
22
|
-
border-bottom: var(--pf-v5-c-page__sidebar--m-light--BorderRightWidth) solid var(--pf-v5-c-page__sidebar--m-light--BorderRightColor);
|
|
23
|
-
margin-bottom: var(--pf-v5-global--spacer--md);
|
|
24
|
-
width: calc(100% + var(--pf-v5-c-page__main-section--PaddingLeft) + var(--pf-v5-c-page__main-section--PaddingRight));
|
|
25
|
-
/* avoid hoverable data list items overlapping toolbar */
|
|
26
|
-
z-index: calc(var(--pf-v5-global--ZIndex--xs) + 2);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/* Match toolbar left-padding to gallery left-padding */
|
|
30
|
-
.ws-section-gallery .pf-v5-c-toolbar .pf-v5-c-toolbar__content {
|
|
31
|
-
--pf-v5-c-toolbar__content--PaddingLeft: var(--pf-v5-c-page__main-section--PaddingLeft);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/* Avoid toolbar wrap on smaller screens */
|
|
35
|
-
.ws-section-gallery .pf-v5-c-toolbar__content-section {
|
|
36
|
-
flex-wrap: nowrap;
|
|
2
|
+
.ws-section-gallery .pf-v6-c-toolbar {
|
|
3
|
+
margin-block-end: var(--pf-t--global--spacer--md);
|
|
37
4
|
}
|
|
38
5
|
|
|
39
6
|
/* Avoid link styling on gallery/data list item names */
|
|
@@ -42,12 +9,12 @@
|
|
|
42
9
|
color: inherit;
|
|
43
10
|
}
|
|
44
11
|
|
|
45
|
-
/* Ensure
|
|
46
|
-
.ws-section-gallery .pf-
|
|
12
|
+
/* Ensure cards within a row stretch vertically to fill row height */
|
|
13
|
+
.ws-section-gallery .pf-v6-c-card {
|
|
47
14
|
height: 100%;
|
|
48
15
|
}
|
|
49
16
|
|
|
50
17
|
/* Limit width for data list view only */
|
|
51
|
-
.ws-section-gallery .pf-
|
|
52
|
-
max-width:
|
|
18
|
+
.ws-section-gallery .pf-v6-c-data-list {
|
|
19
|
+
max-width: var(--pf-t--global--breakpoint--lg);
|
|
53
20
|
}
|
|
@@ -1,41 +1,91 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Gallery,
|
|
4
|
+
GalleryItem,
|
|
5
|
+
Card,
|
|
6
|
+
CardHeader,
|
|
7
|
+
CardTitle,
|
|
8
|
+
CardBody,
|
|
9
|
+
CardFooter,
|
|
10
|
+
Label,
|
|
11
|
+
} from '@patternfly/react-core';
|
|
12
|
+
import { navigate } from '@reach/router';
|
|
13
|
+
import { TextSummary } from './TextSummary';
|
|
5
14
|
|
|
6
|
-
export const SectionGalleryLayout = ({
|
|
15
|
+
export const SectionGalleryLayout = ({
|
|
16
|
+
galleryItems,
|
|
17
|
+
layoutView,
|
|
18
|
+
hasGridText,
|
|
19
|
+
hasGridImages,
|
|
20
|
+
}) => {
|
|
7
21
|
if (layoutView !== 'grid') {
|
|
8
22
|
return null;
|
|
9
23
|
}
|
|
10
24
|
|
|
11
25
|
return (
|
|
12
26
|
<Gallery hasGutter>
|
|
13
|
-
{galleryItems.map(
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
27
|
+
{galleryItems.map(
|
|
28
|
+
({
|
|
29
|
+
idx,
|
|
30
|
+
slug,
|
|
31
|
+
id,
|
|
32
|
+
itemName,
|
|
33
|
+
illustration,
|
|
34
|
+
isBeta,
|
|
35
|
+
isDeprecated,
|
|
36
|
+
isDemo,
|
|
37
|
+
title,
|
|
38
|
+
galleryItemsData,
|
|
39
|
+
}) => (
|
|
40
|
+
<GalleryItem span={4} key={idx}>
|
|
41
|
+
<Card id={id} key={idx} isClickable>
|
|
42
|
+
<CardHeader
|
|
43
|
+
selectableActions={{
|
|
44
|
+
onClickAction: (e) => {
|
|
45
|
+
e.preventDefault();
|
|
46
|
+
document.getElementById('ws-page-main').scrollIntoView();
|
|
47
|
+
navigate(slug);
|
|
48
|
+
},
|
|
49
|
+
selectableActionId: `${id}-input`,
|
|
50
|
+
selectableActionAriaLabelledby: id,
|
|
51
|
+
name: `clickable-card-${idx}`,
|
|
52
|
+
}}
|
|
53
|
+
>
|
|
54
|
+
<CardTitle>{title}</CardTitle>
|
|
55
|
+
</CardHeader>
|
|
22
56
|
{(hasGridImages || hasGridText) && (
|
|
23
57
|
<CardBody>
|
|
24
|
-
{
|
|
25
|
-
|
|
58
|
+
{hasGridImages && illustration && (
|
|
59
|
+
<img src={illustration} alt={`${itemName} illustration`} />
|
|
60
|
+
)}
|
|
61
|
+
{hasGridText && (
|
|
62
|
+
<TextSummary id={id} itemsData={galleryItemsData} />
|
|
63
|
+
)}
|
|
26
64
|
</CardBody>
|
|
27
65
|
)}
|
|
28
66
|
{(isBeta || isDeprecated || isDemo) && (
|
|
29
67
|
<CardFooter>
|
|
30
|
-
{isBeta && (
|
|
31
|
-
|
|
32
|
-
|
|
68
|
+
{isBeta && (
|
|
69
|
+
<Label color="blue" isCompact>
|
|
70
|
+
Beta
|
|
71
|
+
</Label>
|
|
72
|
+
)}
|
|
73
|
+
{!isBeta && isDeprecated && (
|
|
74
|
+
<Label color="grey" isCompact>
|
|
75
|
+
Deprecated
|
|
76
|
+
</Label>
|
|
77
|
+
)}
|
|
78
|
+
{!isBeta && !isDeprecated && isDemo && (
|
|
79
|
+
<Label color="purple" isCompact>
|
|
80
|
+
Demo
|
|
81
|
+
</Label>
|
|
82
|
+
)}
|
|
33
83
|
</CardFooter>
|
|
34
84
|
)}
|
|
35
85
|
</Card>
|
|
36
|
-
</
|
|
37
|
-
|
|
38
|
-
)
|
|
86
|
+
</GalleryItem>
|
|
87
|
+
)
|
|
88
|
+
)}
|
|
39
89
|
</Gallery>
|
|
40
|
-
)
|
|
90
|
+
);
|
|
41
91
|
};
|
|
@@ -1,7 +1,18 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import {
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Button,
|
|
4
|
+
SearchInput,
|
|
5
|
+
Toolbar,
|
|
6
|
+
ToolbarContent,
|
|
7
|
+
ToolbarGroup,
|
|
8
|
+
ToolbarItem,
|
|
9
|
+
Content,
|
|
10
|
+
ContentVariants,
|
|
11
|
+
ToggleGroup,
|
|
12
|
+
ToggleGroupItem,
|
|
13
|
+
} from '@patternfly/react-core';
|
|
3
14
|
import ListIcon from '@patternfly/react-icons/dist/esm/icons/list-icon';
|
|
4
|
-
import ThIcon from'@patternfly/react-icons/dist/esm/icons/th-icon';
|
|
15
|
+
import ThIcon from '@patternfly/react-icons/dist/esm/icons/th-icon';
|
|
5
16
|
|
|
6
17
|
export const SectionGalleryToolbar = ({
|
|
7
18
|
galleryItems,
|
|
@@ -9,29 +20,53 @@ export const SectionGalleryToolbar = ({
|
|
|
9
20
|
setSearchTerm,
|
|
10
21
|
layoutView,
|
|
11
22
|
setLayoutView,
|
|
12
|
-
placeholderText =
|
|
13
|
-
countText=
|
|
23
|
+
placeholderText = 'Search by name',
|
|
24
|
+
countText = ' items',
|
|
14
25
|
}) => (
|
|
15
26
|
<Toolbar isSticky>
|
|
16
27
|
<ToolbarContent>
|
|
17
|
-
<ToolbarItem
|
|
18
|
-
<SearchInput
|
|
28
|
+
<ToolbarItem>
|
|
29
|
+
<SearchInput
|
|
30
|
+
onClear={false}
|
|
31
|
+
value={searchTerm}
|
|
32
|
+
placeholder={placeholderText}
|
|
33
|
+
onChange={(_evt, val) => setSearchTerm(val)}
|
|
34
|
+
/>
|
|
19
35
|
</ToolbarItem>
|
|
20
36
|
{searchTerm && (
|
|
21
37
|
<ToolbarItem>
|
|
22
|
-
<Button variant="link" onClick={() => setSearchTerm('')}>
|
|
38
|
+
<Button variant="link" onClick={() => setSearchTerm('')}>
|
|
39
|
+
Reset
|
|
40
|
+
</Button>
|
|
23
41
|
</ToolbarItem>
|
|
24
42
|
)}
|
|
25
43
|
<ToolbarGroup variant="icon-button-group">
|
|
26
44
|
<ToolbarItem>
|
|
27
45
|
<ToggleGroup>
|
|
28
|
-
<ToggleGroupItem
|
|
29
|
-
|
|
46
|
+
<ToggleGroupItem
|
|
47
|
+
icon={<ThIcon />}
|
|
48
|
+
aria-label="grid icon button"
|
|
49
|
+
isSelected={layoutView === 'grid'}
|
|
50
|
+
onChange={() => setLayoutView('grid')}
|
|
51
|
+
></ToggleGroupItem>
|
|
52
|
+
<ToggleGroupItem
|
|
53
|
+
icon={<ListIcon />}
|
|
54
|
+
aria-label="list icon button"
|
|
55
|
+
isSelected={layoutView === 'list'}
|
|
56
|
+
onChange={() => setLayoutView('list')}
|
|
57
|
+
></ToggleGroupItem>
|
|
30
58
|
</ToggleGroup>
|
|
31
59
|
</ToolbarItem>
|
|
32
60
|
</ToolbarGroup>
|
|
33
|
-
<ToolbarItem
|
|
34
|
-
|
|
61
|
+
<ToolbarItem
|
|
62
|
+
variant="pagination"
|
|
63
|
+
style={{ '--pf-v6-c-toolbar__item--MinWidth': 'max-content' }}
|
|
64
|
+
className="pf-m-align-self-center"
|
|
65
|
+
>
|
|
66
|
+
<Content component={ContentVariants.small}>
|
|
67
|
+
{galleryItems.length}
|
|
68
|
+
{countText}
|
|
69
|
+
</Content>
|
|
35
70
|
</ToolbarItem>
|
|
36
71
|
</ToolbarContent>
|
|
37
72
|
</Toolbar>
|
|
@@ -19,14 +19,14 @@ const NavItem = ({ text, href, isDeprecated, isBeta, isDemo }) => {
|
|
|
19
19
|
return (
|
|
20
20
|
<PageContextConsumer key={href + text}>
|
|
21
21
|
{({onSidebarToggle, isSidebarOpen }) => (
|
|
22
|
-
<li key={href + text} className="pf-
|
|
22
|
+
<li key={href + text} className="pf-v6-c-nav__item" onClick={() => isMobileView && onSidebarToggle && onSidebarToggle()}>
|
|
23
23
|
<Link
|
|
24
24
|
to={href}
|
|
25
25
|
getProps={({ isCurrent, href, location }) => {
|
|
26
26
|
const { pathname } = location;
|
|
27
27
|
return {
|
|
28
28
|
className: css(
|
|
29
|
-
'pf-
|
|
29
|
+
'pf-v6-c-nav__link',
|
|
30
30
|
(isCurrent || pathname.startsWith(href + '/')) && 'pf-m-current'
|
|
31
31
|
)
|
|
32
32
|
}}
|
|
@@ -67,7 +67,6 @@ const ExpandableNav = ({groupedRoutes, location, section, subsection = null}) =>
|
|
|
67
67
|
key={capitalize(currentSection.replace(/-/g, ' '))}
|
|
68
68
|
isActive={isActive}
|
|
69
69
|
isExpanded={isActive}
|
|
70
|
-
className="ws-side-nav-group"
|
|
71
70
|
onClick={(event) => {
|
|
72
71
|
// Don't bubble click event up, avoids subsection triggering duplicate analtics
|
|
73
72
|
event.stopPropagation();
|
|
@@ -96,7 +95,7 @@ const ExpandableNav = ({groupedRoutes, location, section, subsection = null}) =>
|
|
|
96
95
|
source.source === "react-deprecated" || source.source === "html-deprecated")
|
|
97
96
|
&& !navObj.sources.some(source => source.source === "react" || source.source === "html")
|
|
98
97
|
),
|
|
99
|
-
isBeta: navObj.sources.some(source => source.beta),
|
|
98
|
+
isBeta: navObj.sources.some(source => source.beta && source.source !== 'react-next' && source.source !== 'react-templates'),
|
|
100
99
|
isDemo: navObj.sources.some(source => (
|
|
101
100
|
source.source === "react-demos" || source.source === "html-demos")
|
|
102
101
|
&& !navObj.sources.some(source => source.source === "react" || source.source === "html")
|
|
@@ -1,45 +1,48 @@
|
|
|
1
1
|
.ws-toc {
|
|
2
2
|
align-self: flex-start;
|
|
3
3
|
position: sticky;
|
|
4
|
-
width: calc(100% + var(--pf-
|
|
5
|
-
background-color: var(--pf-
|
|
6
|
-
z-index:
|
|
7
|
-
margin-block-start: calc(var(--pf-
|
|
8
|
-
margin-block-end: var(--pf-
|
|
9
|
-
margin-inline-start: calc(var(--pf-
|
|
10
|
-
margin-inline-end: calc(var(--pf-
|
|
11
|
-
padding-block-start: var(--pf-
|
|
12
|
-
padding-block-end: var(--pf-
|
|
13
|
-
padding-inline-start: var(--pf-
|
|
4
|
+
width: calc(100% + var(--pf-v6-c-page__main-section--PaddingInlineStart) + var(--pf-v6-c-page__main-section--PaddingInlineEnd));
|
|
5
|
+
background-color: var(--pf-t--global--background--color--secondary--default);
|
|
6
|
+
z-index: 201;
|
|
7
|
+
margin-block-start: calc(var(--pf-v6-c-page__main-section--PaddingTop) * -1);
|
|
8
|
+
margin-block-end: var(--pf-t--global--spacer--md);
|
|
9
|
+
margin-inline-start: calc(var(--pf-v6-c-page__main-section--PaddingInlineStart) * -1);
|
|
10
|
+
margin-inline-end: calc(var(--pf-v6-c-page__main-section--PaddingInlineEnd) * -2);
|
|
11
|
+
padding-block-start: var(--pf-t--global--spacer--md);
|
|
12
|
+
padding-block-end: var(--pf-t--global--spacer--md);
|
|
13
|
+
padding-inline-start: var(--pf-t--global--spacer--md);
|
|
14
14
|
padding-inline-end: 0;
|
|
15
|
-
box-shadow: var(--pf-
|
|
15
|
+
box-shadow: var(--pf-t--global--box-shadow--lg--bottom);
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
.ws-toc.pf-m-expanded {
|
|
19
|
-
box-shadow: var(--pf-
|
|
19
|
+
box-shadow: var(--pf-t--global--box-shadow--sm--bottom)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.ws-toc .pf-v6-c-jump-links__toggle {
|
|
23
|
+
background-color: var(--pf-t--global--background--color--secondary--default);
|
|
20
24
|
}
|
|
21
25
|
|
|
22
26
|
/* Mobile jumplinks */
|
|
23
27
|
@media (max-width: 1450px) {
|
|
24
|
-
.ws-toc.pf-m-expanded .pf-
|
|
28
|
+
.ws-toc.pf-m-expanded .pf-v6-c-jump-links__main {
|
|
25
29
|
max-height: 65vh;
|
|
26
|
-
overflow:
|
|
30
|
+
overflow-y:auto;
|
|
27
31
|
}
|
|
28
|
-
|
|
29
|
-
.ws-toc .pf-
|
|
32
|
+
|
|
33
|
+
.ws-toc .pf-v6-c-jump-links__header {
|
|
30
34
|
position: sticky;
|
|
31
35
|
top: 0;
|
|
32
|
-
background-color: var(--pf-v5-global--BackgroundColor--200);
|
|
33
36
|
z-index: 2;
|
|
34
37
|
}
|
|
35
38
|
}
|
|
36
39
|
|
|
37
|
-
.ws-toc .pf-
|
|
40
|
+
.ws-toc .pf-v6-c-jump-links__main {
|
|
38
41
|
scrollbar-width: none;
|
|
39
42
|
}
|
|
40
43
|
|
|
41
44
|
/* Hide TOC scrollbar Chrome, Safari & Opera */
|
|
42
|
-
.ws-toc .pf-
|
|
45
|
+
.ws-toc .pf-v6-c-jump-links__main::-webkit-scrollbar {
|
|
43
46
|
display: none;
|
|
44
47
|
}
|
|
45
48
|
|
|
@@ -52,7 +55,7 @@
|
|
|
52
55
|
-ms-overflow-style: none;
|
|
53
56
|
scrollbar-width: none;
|
|
54
57
|
order: 1;
|
|
55
|
-
padding: 0 var(--pf-
|
|
58
|
+
padding: 0 var(--pf-t--global--spacer--lg) var(--pf-t--global--spacer--lg) var(--pf-t--global--spacer--2xl);
|
|
56
59
|
flex-grow: 1;
|
|
57
60
|
background: none;
|
|
58
61
|
margin: 0;
|
|
@@ -64,19 +67,7 @@
|
|
|
64
67
|
}
|
|
65
68
|
}
|
|
66
69
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
display: block;
|
|
71
|
-
color: var(--ws-toc-link--Color, var(--pf-v5-global--Color--300));
|
|
72
|
-
font-size: var(--pf-v5-global--FontSize--sm);
|
|
73
|
-
margin: -4px 0;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
.ws-toc-sublist > .ws-toc-item:first-child .pf-v5-c-jump-links__link {
|
|
77
|
-
margin-top: 0;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
.ws-toc-item.pf-m-current .pf-v5-c-jump-links__link::before {
|
|
81
|
-
z-index: 1;
|
|
70
|
+
.ws-toc-item .pf-m-link {
|
|
71
|
+
text-wrap: wrap;
|
|
72
|
+
text-align: left;
|
|
82
73
|
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
JumpLinks,
|
|
4
|
+
JumpLinksItem,
|
|
5
|
+
JumpLinksList,
|
|
6
|
+
} from '@patternfly/react-core';
|
|
3
7
|
import { trackEvent } from '../../helpers';
|
|
4
8
|
|
|
5
9
|
export const TableOfContents = ({ items }) => {
|
|
@@ -9,15 +13,17 @@ export const TableOfContents = ({ items }) => {
|
|
|
9
13
|
const [stickyNavHeight, setStickyNavHeight] = React.useState(0);
|
|
10
14
|
|
|
11
15
|
React.useEffect(() => {
|
|
12
|
-
if (document.getElementById(
|
|
13
|
-
setStickyNavHeight(
|
|
16
|
+
if (document.getElementById('ws-sticky-nav-tabs')) {
|
|
17
|
+
setStickyNavHeight(
|
|
18
|
+
document.getElementById('ws-sticky-nav-tabs').offsetHeight
|
|
19
|
+
);
|
|
14
20
|
}
|
|
15
|
-
}, [])
|
|
21
|
+
}, []);
|
|
16
22
|
|
|
17
23
|
const updateWidth = () => {
|
|
18
24
|
const { innerWidth } = window;
|
|
19
25
|
innerWidth !== width && setWidth(innerWidth);
|
|
20
|
-
}
|
|
26
|
+
};
|
|
21
27
|
let jumpLinksItems = [];
|
|
22
28
|
let wasSublistRendered = false;
|
|
23
29
|
|
|
@@ -27,14 +33,20 @@ export const TableOfContents = ({ items }) => {
|
|
|
27
33
|
<>
|
|
28
34
|
{item.text}
|
|
29
35
|
<JumpLinksList>
|
|
30
|
-
{nextItemArr.map(curItem => (
|
|
36
|
+
{nextItemArr.map((curItem) => (
|
|
31
37
|
<JumpLinksItem
|
|
32
38
|
key={curItem.id}
|
|
33
39
|
href={`#${curItem.id}`}
|
|
34
40
|
className="ws-toc-item"
|
|
35
41
|
onKeyDown={updateWidth}
|
|
36
42
|
onMouseDown={updateWidth}
|
|
37
|
-
onClick={() =>
|
|
43
|
+
onClick={() =>
|
|
44
|
+
trackEvent(
|
|
45
|
+
'jump_link_click',
|
|
46
|
+
'click_event',
|
|
47
|
+
curItem.id.toUpperCase()
|
|
48
|
+
)
|
|
49
|
+
}
|
|
38
50
|
>
|
|
39
51
|
{curItem.text}
|
|
40
52
|
</JumpLinksItem>
|
|
@@ -42,7 +54,7 @@ export const TableOfContents = ({ items }) => {
|
|
|
42
54
|
</JumpLinksList>
|
|
43
55
|
</>
|
|
44
56
|
);
|
|
45
|
-
}
|
|
57
|
+
};
|
|
46
58
|
|
|
47
59
|
const renderJumpLinksItems = () => {
|
|
48
60
|
items.forEach((item, index) => {
|
|
@@ -53,18 +65,28 @@ export const TableOfContents = ({ items }) => {
|
|
|
53
65
|
return;
|
|
54
66
|
}
|
|
55
67
|
if (!Array.isArray(nextItem) && Array.isArray(item)) {
|
|
56
|
-
{
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
+
{
|
|
69
|
+
item.map((curItem) =>
|
|
70
|
+
jumpLinksItems.push(
|
|
71
|
+
<JumpLinksItem
|
|
72
|
+
key={curItem.id}
|
|
73
|
+
href={`#${curItem.id}`}
|
|
74
|
+
className="ws-toc-item"
|
|
75
|
+
onKeyDown={updateWidth}
|
|
76
|
+
onMouseDown={updateWidth}
|
|
77
|
+
onClick={() =>
|
|
78
|
+
trackEvent(
|
|
79
|
+
'jump_link_click',
|
|
80
|
+
'click_event',
|
|
81
|
+
curItem.id.toUpperCase()
|
|
82
|
+
)
|
|
83
|
+
}
|
|
84
|
+
>
|
|
85
|
+
{curItem.text}
|
|
86
|
+
</JumpLinksItem>
|
|
87
|
+
)
|
|
88
|
+
);
|
|
89
|
+
}
|
|
68
90
|
} else {
|
|
69
91
|
jumpLinksItems.push(
|
|
70
92
|
<JumpLinksItem
|
|
@@ -73,27 +95,35 @@ export const TableOfContents = ({ items }) => {
|
|
|
73
95
|
className="ws-toc-item"
|
|
74
96
|
onKeyDown={updateWidth}
|
|
75
97
|
onMouseDown={updateWidth}
|
|
76
|
-
onClick={() =>
|
|
98
|
+
onClick={() =>
|
|
99
|
+
trackEvent(
|
|
100
|
+
'jump_link_click',
|
|
101
|
+
'click_event',
|
|
102
|
+
item.id.toUpperCase()
|
|
103
|
+
)
|
|
104
|
+
}
|
|
77
105
|
>
|
|
78
|
-
{
|
|
106
|
+
{Array.isArray(nextItem)
|
|
107
|
+
? renderSublist(item, nextItem)
|
|
108
|
+
: item.text}
|
|
79
109
|
</JumpLinksItem>
|
|
80
110
|
);
|
|
81
111
|
}
|
|
82
|
-
})
|
|
112
|
+
});
|
|
83
113
|
return jumpLinksItems;
|
|
84
|
-
}
|
|
114
|
+
};
|
|
85
115
|
|
|
86
116
|
return (
|
|
87
117
|
<JumpLinks
|
|
88
118
|
label="Table of contents"
|
|
89
119
|
isVertical
|
|
90
|
-
scrollableSelector="
|
|
120
|
+
scrollableSelector=".pf-v6-c-page__main-container"
|
|
91
121
|
className="ws-toc"
|
|
92
|
-
style={{
|
|
122
|
+
style={{ top: stickyNavHeight }}
|
|
93
123
|
offset={width > 1450 ? 108 + stickyNavHeight : 148 + stickyNavHeight}
|
|
94
124
|
expandable={{ default: 'expandable', '2xl': 'nonExpandable' }}
|
|
95
125
|
>
|
|
96
|
-
{
|
|
126
|
+
{renderJumpLinksItems()}
|
|
97
127
|
</JumpLinks>
|
|
98
128
|
);
|
|
99
|
-
}
|
|
129
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* Page layout */
|
|
2
|
-
/* tells .pf-
|
|
2
|
+
/* tells .pf-v6-c-page to consume the available space left over from the banners/footers */
|
|
3
3
|
#ws-router {
|
|
4
4
|
display: flex;
|
|
5
5
|
flex-direction: column;
|
|
@@ -8,43 +8,8 @@
|
|
|
8
8
|
flex: 1;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
.ws-switcher-divider {
|
|
12
|
-
padding: 0 var(--pf-v5-global--spacer--md);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
@media (min-width: 1200px) {
|
|
16
|
-
.ws-page-sidebar {
|
|
17
|
-
box-shadow: none !important;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.ws-page-sidebar > .pf-v5-c-page__sidebar-body {
|
|
22
|
-
padding-top: var(--pf-v5-global--spacer--md);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
11
|
/* Search */
|
|
26
12
|
#algolia-autocomplete-listbox-0 {
|
|
27
13
|
/* Fix search results overflowing page */
|
|
28
14
|
min-width: 480px !important;
|
|
29
15
|
}
|
|
30
|
-
.ws-global-search.pf-v5-c-input-group {
|
|
31
|
-
/* remove white background on dark Masthead */
|
|
32
|
-
--pf-v5-c-input-group--BackgroundColor: none;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/* For tiny (200px) viewports */
|
|
36
|
-
.ws-masthead .pf-v5-c-toolbar__item {
|
|
37
|
-
min-width: 0;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.ws-masthead .pf-v5-c-switch {
|
|
41
|
-
align-items: center;
|
|
42
|
-
--pf-v5-c-switch__input--not-checked__label--Color: var(--pf-v5-global--Color--100);
|
|
43
|
-
--pf-v5-c-switch__input--checked__label--Color: var(--pf-v5-global--Color--100);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.ws-masthead .pf-v5-c-toggle-group {
|
|
47
|
-
--pf-v5-c-toggle-group__button--m-selected--BackgroundColor: var(--pf-v5-global--palette--blue-400);
|
|
48
|
-
--pf-v5-c-toggle-group__button--focus--BackgroundColor: transparent;
|
|
49
|
-
--pf-v5-c-toggle-group__button--hover--BackgroundColor: transparent;
|
|
50
|
-
}
|