@patternfly/react-core 5.2.0 → 5.3.0-prerelease.2
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 +18 -0
- package/components/package.json +1 -1
- package/deprecated/package.json +1 -1
- package/dist/dynamic/components/AboutModal/package.json +1 -1
- package/dist/dynamic/components/Accordion/package.json +1 -1
- package/dist/dynamic/components/ActionList/package.json +1 -1
- package/dist/dynamic/components/Alert/package.json +1 -1
- package/dist/dynamic/components/Avatar/package.json +1 -1
- package/dist/dynamic/components/BackToTop/package.json +1 -1
- package/dist/dynamic/components/Backdrop/package.json +1 -1
- package/dist/dynamic/components/BackgroundImage/package.json +1 -1
- package/dist/dynamic/components/Badge/package.json +1 -1
- package/dist/dynamic/components/Banner/package.json +1 -1
- package/dist/dynamic/components/Brand/package.json +1 -1
- package/dist/dynamic/components/Breadcrumb/package.json +1 -1
- package/dist/dynamic/components/Button/package.json +1 -1
- package/dist/dynamic/components/CalendarMonth/package.json +1 -1
- package/dist/dynamic/components/Card/package.json +1 -1
- package/dist/dynamic/components/Checkbox/package.json +1 -1
- package/dist/dynamic/components/Chip/package.json +1 -1
- package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
- package/dist/dynamic/components/CodeBlock/package.json +1 -1
- package/dist/dynamic/components/DataList/package.json +1 -1
- package/dist/dynamic/components/DatePicker/package.json +1 -1
- package/dist/dynamic/components/DescriptionList/package.json +1 -1
- package/dist/dynamic/components/Divider/package.json +1 -1
- package/dist/dynamic/components/DragDrop/package.json +1 -1
- package/dist/dynamic/components/Drawer/package.json +1 -1
- package/dist/dynamic/components/Dropdown/package.json +1 -1
- package/dist/dynamic/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/components/EmptyState/package.json +1 -1
- package/dist/dynamic/components/ExpandableSection/package.json +1 -1
- package/dist/dynamic/components/FileUpload/package.json +1 -1
- package/dist/dynamic/components/Form/package.json +1 -1
- package/dist/dynamic/components/FormSelect/package.json +1 -1
- package/dist/dynamic/components/HelperText/package.json +1 -1
- package/dist/dynamic/components/Hint/package.json +1 -1
- package/dist/dynamic/components/Icon/package.json +1 -1
- package/dist/dynamic/components/InputGroup/package.json +1 -1
- package/dist/dynamic/components/JumpLinks/package.json +1 -1
- package/dist/dynamic/components/Label/package.json +1 -1
- package/dist/dynamic/components/List/package.json +1 -1
- package/dist/dynamic/components/LoginPage/package.json +1 -1
- package/dist/dynamic/components/Masthead/package.json +1 -1
- package/dist/dynamic/components/Menu/package.json +1 -1
- package/dist/dynamic/components/MenuToggle/package.json +1 -1
- package/dist/dynamic/components/Modal/package.json +1 -1
- package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
- package/dist/dynamic/components/Nav/package.json +1 -1
- package/dist/dynamic/components/NotificationBadge/package.json +1 -1
- package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
- package/dist/dynamic/components/NumberInput/package.json +1 -1
- package/dist/dynamic/components/OverflowMenu/package.json +1 -1
- package/dist/dynamic/components/Page/package.json +1 -1
- package/dist/dynamic/components/Pagination/package.json +1 -1
- package/dist/dynamic/components/Panel/package.json +1 -1
- package/dist/dynamic/components/Popover/package.json +1 -1
- package/dist/dynamic/components/Progress/package.json +1 -1
- package/dist/dynamic/components/ProgressStepper/package.json +1 -1
- package/dist/dynamic/components/Radio/package.json +1 -1
- package/dist/dynamic/components/SearchInput/package.json +1 -1
- package/dist/dynamic/components/Select/package.json +1 -1
- package/dist/dynamic/components/Sidebar/package.json +1 -1
- package/dist/dynamic/components/SimpleList/package.json +1 -1
- package/dist/dynamic/components/Skeleton/package.json +1 -1
- package/dist/dynamic/components/SkipToContent/package.json +1 -1
- package/dist/dynamic/components/Slider/package.json +1 -1
- package/dist/dynamic/components/Spinner/package.json +1 -1
- package/dist/dynamic/components/Switch/package.json +1 -1
- package/dist/dynamic/components/Tabs/package.json +1 -1
- package/dist/dynamic/components/Text/package.json +1 -1
- package/dist/dynamic/components/TextArea/package.json +1 -1
- package/dist/dynamic/components/TextInput/package.json +1 -1
- package/dist/dynamic/components/TextInputGroup/package.json +1 -1
- package/dist/dynamic/components/Tile/package.json +1 -1
- package/dist/dynamic/components/TimePicker/package.json +1 -1
- package/dist/dynamic/components/Timestamp/package.json +1 -1
- package/dist/dynamic/components/Title/package.json +1 -1
- package/dist/dynamic/components/ToggleGroup/package.json +1 -1
- package/dist/dynamic/components/Toolbar/package.json +1 -1
- package/dist/dynamic/components/Tooltip/package.json +1 -1
- package/dist/dynamic/components/TreeView/package.json +1 -1
- package/dist/dynamic/components/Truncate/package.json +1 -1
- package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
- package/dist/dynamic/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/ApplicationLauncher/package.json +1 -1
- package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
- package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
- package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
- package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
- package/dist/dynamic/deprecated/components/Select/package.json +1 -1
- package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/package.json +1 -1
- package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
- package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
- package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
- package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
- package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
- package/dist/dynamic/helpers/constants/package.json +1 -1
- package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
- package/dist/dynamic/helpers/favorites/package.json +1 -1
- package/dist/dynamic/helpers/fileUtils/package.json +1 -1
- package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
- package/dist/dynamic/helpers/package.json +1 -1
- package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
- package/dist/dynamic/helpers/typeUtils/package.json +1 -1
- package/dist/dynamic/helpers/useInterval/package.json +1 -1
- package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
- package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
- package/dist/dynamic/helpers/util/package.json +1 -1
- package/dist/dynamic/layouts/Bullseye/package.json +1 -1
- package/dist/dynamic/layouts/Flex/package.json +1 -1
- package/dist/dynamic/layouts/Gallery/package.json +1 -1
- package/dist/dynamic/layouts/Grid/package.json +1 -1
- package/dist/dynamic/layouts/Level/package.json +1 -1
- package/dist/dynamic/layouts/Split/package.json +1 -1
- package/dist/dynamic/layouts/Stack/package.json +1 -1
- package/dist/dynamic/next/components/Modal/package.json +1 -1
- package/dist/dynamic/next/components/package.json +1 -1
- package/dist/dynamic/styles/package.json +1 -1
- package/dist/esm/components/JumpLinks/JumpLinks.d.ts +3 -1
- package/dist/esm/components/JumpLinks/JumpLinks.d.ts.map +1 -1
- package/dist/esm/components/JumpLinks/JumpLinks.js +19 -7
- package/dist/esm/components/JumpLinks/JumpLinks.js.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggle.js +1 -1
- package/dist/esm/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/js/components/JumpLinks/JumpLinks.d.ts +3 -1
- package/dist/js/components/JumpLinks/JumpLinks.d.ts.map +1 -1
- package/dist/js/components/JumpLinks/JumpLinks.js +19 -7
- package/dist/js/components/JumpLinks/JumpLinks.js.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggle.js +1 -1
- package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/umd/react-core.min.js +1 -1
- package/helpers/package.json +1 -1
- package/layouts/package.json +1 -1
- package/next/package.json +1 -1
- package/package.json +5 -5
- package/src/components/JumpLinks/JumpLinks.tsx +21 -7
- package/src/components/MenuToggle/MenuToggle.tsx +1 -1
- package/src/components/MenuToggle/examples/MenuToggleTypeahead.tsx +1 -1
- package/src/components/Select/examples/SelectMultiTypeahead.tsx +8 -1
- package/src/components/Select/examples/SelectMultiTypeaheadCheckbox.tsx +8 -1
- package/src/components/Select/examples/SelectMultiTypeaheadCreatable.tsx +8 -1
- package/src/components/Select/examples/SelectTypeahead.tsx +8 -1
- package/src/components/Select/examples/SelectTypeaheadCreatable.tsx +8 -1
- package/src/demos/JumpLinks.md +4 -3
- package/src/demos/examples/JumpLinks/JumpLinksWithDrawer.js +25 -16
package/helpers/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"5.
|
|
1
|
+
{"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"5.3.0-prerelease.1","private":true}
|
package/layouts/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"5.
|
|
1
|
+
{"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"5.3.0-prerelease.1","private":true}
|
package/next/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"5.
|
|
1
|
+
{"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"5.3.0-prerelease.1","private":true}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patternfly/react-core",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.3.0-prerelease.2",
|
|
4
4
|
"description": "This library provides a set of common React components for use with the PatternFly reference implementation.",
|
|
5
5
|
"main": "dist/js/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
"clean:exports": "node scripts/cleanDistExports.js"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@patternfly/react-icons": "^5.
|
|
50
|
-
"@patternfly/react-styles": "^5.
|
|
51
|
-
"@patternfly/react-tokens": "^5.
|
|
49
|
+
"@patternfly/react-icons": "^5.3.0-prerelease.0",
|
|
50
|
+
"@patternfly/react-styles": "^5.3.0-prerelease.0",
|
|
51
|
+
"@patternfly/react-tokens": "^5.3.0-prerelease.0",
|
|
52
52
|
"focus-trap": "7.5.2",
|
|
53
53
|
"react-dropzone": "^14.2.3",
|
|
54
54
|
"tslib": "^2.5.0"
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"react": "^17 || ^18",
|
|
73
73
|
"react-dom": "^17 || ^18"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "08a6b1aaaf6769b657ed674f4bb741b530265c7d"
|
|
76
76
|
}
|
|
@@ -21,7 +21,9 @@ export interface JumpLinksProps extends Omit<React.HTMLProps<HTMLElement>, 'labe
|
|
|
21
21
|
alwaysShowLabel?: boolean;
|
|
22
22
|
/** Adds an accessible label to the internal nav element. Defaults to the value of the label prop. */
|
|
23
23
|
'aria-label'?: string;
|
|
24
|
-
/**
|
|
24
|
+
/** Reference to the scrollable element to spy on. Takes precedence over scrollableSelector. Not passing a scrollableRef or scrollableSelector disables spying. */
|
|
25
|
+
scrollableRef?: HTMLElement | (() => HTMLElement) | React.RefObject<HTMLElement>;
|
|
26
|
+
/** Selector for the scrollable element to spy on. Not passing a scrollableSelector or scrollableRef disables spying. */
|
|
25
27
|
scrollableSelector?: string;
|
|
26
28
|
/** The index of the child Jump link to make active. */
|
|
27
29
|
activeIndex?: number;
|
|
@@ -81,6 +83,7 @@ export const JumpLinks: React.FunctionComponent<JumpLinksProps> = ({
|
|
|
81
83
|
children,
|
|
82
84
|
label,
|
|
83
85
|
'aria-label': ariaLabel = typeof label === 'string' ? label : null,
|
|
86
|
+
scrollableRef,
|
|
84
87
|
scrollableSelector,
|
|
85
88
|
activeIndex: activeIndexProp = 0,
|
|
86
89
|
offset = 0,
|
|
@@ -91,18 +94,29 @@ export const JumpLinks: React.FunctionComponent<JumpLinksProps> = ({
|
|
|
91
94
|
className,
|
|
92
95
|
...props
|
|
93
96
|
}: JumpLinksProps) => {
|
|
94
|
-
const hasScrollSpy = Boolean(scrollableSelector);
|
|
97
|
+
const hasScrollSpy = Boolean(scrollableRef || scrollableSelector);
|
|
95
98
|
const [scrollItems, setScrollItems] = React.useState(hasScrollSpy ? getScrollItems(children, []) : []);
|
|
96
99
|
const [activeIndex, setActiveIndex] = React.useState(activeIndexProp);
|
|
97
100
|
const [isExpanded, setIsExpanded] = React.useState(isExpandedProp);
|
|
98
101
|
// Boolean to disable scroll listener from overriding active state of clicked jumplink
|
|
99
102
|
const isLinkClicked = React.useRef(false);
|
|
100
|
-
// Allow expanding to be controlled for a niche use case
|
|
101
|
-
React.useEffect(() => setIsExpanded(isExpandedProp), [isExpandedProp]);
|
|
102
103
|
const navRef = React.useRef<HTMLElement>();
|
|
103
104
|
|
|
104
105
|
let scrollableElement: HTMLElement;
|
|
105
106
|
|
|
107
|
+
const getScrollableElement = () => {
|
|
108
|
+
if (scrollableRef) {
|
|
109
|
+
if (scrollableRef instanceof HTMLElement) {
|
|
110
|
+
return scrollableRef;
|
|
111
|
+
} else if (typeof scrollableRef === 'function') {
|
|
112
|
+
return scrollableRef();
|
|
113
|
+
}
|
|
114
|
+
return (scrollableRef as React.RefObject<HTMLElement>).current;
|
|
115
|
+
} else if (scrollableSelector) {
|
|
116
|
+
return document.querySelector(scrollableSelector) as HTMLElement;
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
|
|
106
120
|
const scrollSpy = React.useCallback(() => {
|
|
107
121
|
if (!canUseDOM || !hasScrollSpy || !(scrollableElement instanceof HTMLElement)) {
|
|
108
122
|
return;
|
|
@@ -139,14 +153,14 @@ export const JumpLinks: React.FunctionComponent<JumpLinksProps> = ({
|
|
|
139
153
|
}, [scrollItems, hasScrollSpy, scrollableElement, offset]);
|
|
140
154
|
|
|
141
155
|
React.useEffect(() => {
|
|
142
|
-
scrollableElement =
|
|
156
|
+
scrollableElement = getScrollableElement();
|
|
143
157
|
if (!(scrollableElement instanceof HTMLElement)) {
|
|
144
158
|
return;
|
|
145
159
|
}
|
|
146
160
|
scrollableElement.addEventListener('scroll', scrollSpy);
|
|
147
161
|
|
|
148
162
|
return () => scrollableElement.removeEventListener('scroll', scrollSpy);
|
|
149
|
-
}, [
|
|
163
|
+
}, [scrollableElement, scrollSpy, getScrollableElement]);
|
|
150
164
|
|
|
151
165
|
React.useEffect(() => {
|
|
152
166
|
scrollSpy();
|
|
@@ -174,7 +188,7 @@ export const JumpLinks: React.FunctionComponent<JumpLinksProps> = ({
|
|
|
174
188
|
|
|
175
189
|
if (newScrollItem) {
|
|
176
190
|
// we have to support scrolling to an offset due to sticky sidebar
|
|
177
|
-
const scrollableElement =
|
|
191
|
+
const scrollableElement = getScrollableElement() as HTMLElement;
|
|
178
192
|
if (scrollableElement instanceof HTMLElement) {
|
|
179
193
|
if (isResponsive(navRef.current)) {
|
|
180
194
|
// Remove class immediately so we can get collapsed height
|
|
@@ -96,7 +96,7 @@ class MenuToggleBase extends React.Component<MenuToggleProps> {
|
|
|
96
96
|
className={css(styles.menuToggleButton)}
|
|
97
97
|
aria-expanded={isExpanded}
|
|
98
98
|
onClick={onClick}
|
|
99
|
-
aria-label=
|
|
99
|
+
aria-label={ariaLabel || 'Menu toggle'}
|
|
100
100
|
>
|
|
101
101
|
{toggleControls}
|
|
102
102
|
</button>
|
|
@@ -16,7 +16,7 @@ export const MenuToggleTypeahead: React.FunctionComponent = () => {
|
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
return (
|
|
19
|
-
<MenuToggle variant="typeahead" isFullWidth>
|
|
19
|
+
<MenuToggle variant="typeahead" isFullWidth aria-label="Typeahead menu toggle">
|
|
20
20
|
<TextInputGroup isPlain>
|
|
21
21
|
<TextInputGroupMain
|
|
22
22
|
value={inputValue}
|
|
@@ -137,7 +137,14 @@ export const SelectMultiTypeahead: React.FunctionComponent = () => {
|
|
|
137
137
|
};
|
|
138
138
|
|
|
139
139
|
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
|
140
|
-
<MenuToggle
|
|
140
|
+
<MenuToggle
|
|
141
|
+
variant="typeahead"
|
|
142
|
+
aria-label="Multi typeahead menu toggle"
|
|
143
|
+
onClick={onToggleClick}
|
|
144
|
+
innerRef={toggleRef}
|
|
145
|
+
isExpanded={isOpen}
|
|
146
|
+
isFullWidth
|
|
147
|
+
>
|
|
141
148
|
<TextInputGroup isPlain>
|
|
142
149
|
<TextInputGroupMain
|
|
143
150
|
value={inputValue}
|
|
@@ -140,7 +140,14 @@ export const SelectMultiTypeaheadCheckbox: React.FunctionComponent = () => {
|
|
|
140
140
|
}, [selected]);
|
|
141
141
|
|
|
142
142
|
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
|
143
|
-
<MenuToggle
|
|
143
|
+
<MenuToggle
|
|
144
|
+
variant="typeahead"
|
|
145
|
+
aria-label="Multi typeahead checkbox menu toggle"
|
|
146
|
+
onClick={onToggleClick}
|
|
147
|
+
innerRef={toggleRef}
|
|
148
|
+
isExpanded={isOpen}
|
|
149
|
+
isFullWidth
|
|
150
|
+
>
|
|
144
151
|
<TextInputGroup isPlain>
|
|
145
152
|
<TextInputGroupMain
|
|
146
153
|
value={inputValue}
|
|
@@ -147,7 +147,14 @@ export const SelectMultiTypeaheadCreatable: React.FunctionComponent = () => {
|
|
|
147
147
|
};
|
|
148
148
|
|
|
149
149
|
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
|
150
|
-
<MenuToggle
|
|
150
|
+
<MenuToggle
|
|
151
|
+
variant="typeahead"
|
|
152
|
+
aria-label="Multi typeahead creatable menu toggle"
|
|
153
|
+
onClick={onToggleClick}
|
|
154
|
+
innerRef={toggleRef}
|
|
155
|
+
isExpanded={isOpen}
|
|
156
|
+
isFullWidth
|
|
157
|
+
>
|
|
151
158
|
<TextInputGroup isPlain>
|
|
152
159
|
<TextInputGroupMain
|
|
153
160
|
value={inputValue}
|
|
@@ -143,7 +143,14 @@ export const SelectBasic: React.FunctionComponent = () => {
|
|
|
143
143
|
};
|
|
144
144
|
|
|
145
145
|
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
|
146
|
-
<MenuToggle
|
|
146
|
+
<MenuToggle
|
|
147
|
+
ref={toggleRef}
|
|
148
|
+
variant="typeahead"
|
|
149
|
+
aria-label="Typeahead menu toggle"
|
|
150
|
+
onClick={onToggleClick}
|
|
151
|
+
isExpanded={isOpen}
|
|
152
|
+
isFullWidth
|
|
153
|
+
>
|
|
147
154
|
<TextInputGroup isPlain>
|
|
148
155
|
<TextInputGroupMain
|
|
149
156
|
value={inputValue}
|
|
@@ -154,7 +154,14 @@ export const SelectTypeaheadCreatable: React.FunctionComponent = () => {
|
|
|
154
154
|
};
|
|
155
155
|
|
|
156
156
|
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
|
157
|
-
<MenuToggle
|
|
157
|
+
<MenuToggle
|
|
158
|
+
ref={toggleRef}
|
|
159
|
+
variant="typeahead"
|
|
160
|
+
aria-label="Typeahead creatable menu toggle"
|
|
161
|
+
onClick={onToggleClick}
|
|
162
|
+
isExpanded={isOpen}
|
|
163
|
+
isFullWidth
|
|
164
|
+
>
|
|
158
165
|
<TextInputGroup isPlain>
|
|
159
166
|
<TextInputGroupMain
|
|
160
167
|
value={inputValue}
|
package/src/demos/JumpLinks.md
CHANGED
|
@@ -9,9 +9,10 @@ import mastheadStyles from '@patternfly/react-styles/css/components/Masthead/mas
|
|
|
9
9
|
|
|
10
10
|
JumpLinks has a scrollspy built-in to make your implementation easier. When implementing JumpLinks be sure to:
|
|
11
11
|
|
|
12
|
-
1. Find the correct
|
|
12
|
+
1. Find the correct scrollable element for your page via [Firefox's debugging scrollable overflow](https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Debug_Scrollable_Overflow) or by adding `hasOverflowScroll` to a [PageSection](/components/page#pagesection) or [PageGroup](/components/page#pagegroup).
|
|
13
13
|
- If you add `hasOverflowScroll` to a Page sub-component you should also add a relevant aria-label to that component as well.
|
|
14
|
-
2. Provide
|
|
14
|
+
2. Provide a reference to the scrollable element to `scrollableRef` prop or a CSS selector of the scrollable element to `scrollableSelector` prop.
|
|
15
|
+
3. Provide `href`s to your JumpLinksItems which match the `id` of elements you want to spy on. If you wish to scroll to a different item than you're linking to use the `node` prop.
|
|
15
16
|
|
|
16
17
|
### Scrollspy with subsections
|
|
17
18
|
|
|
@@ -141,7 +142,7 @@ ScrollspyH2 = () => {
|
|
|
141
142
|
|
|
142
143
|
This demo shows how jump links can be used in combination with a drawer.
|
|
143
144
|
|
|
144
|
-
|
|
145
|
+
This demo uses a `scrollableRef` prop on the JumpLinks component, which is a React ref to the `DrawerContent` component.
|
|
145
146
|
|
|
146
147
|
```js isFullscreen file="./examples/JumpLinks/JumpLinksWithDrawer.js"
|
|
147
148
|
```
|
|
@@ -17,11 +17,33 @@ import {
|
|
|
17
17
|
SidebarContent,
|
|
18
18
|
SidebarPanel,
|
|
19
19
|
TextContent,
|
|
20
|
-
getResizeObserver
|
|
20
|
+
getResizeObserver,
|
|
21
|
+
DrawerContext
|
|
21
22
|
} from '@patternfly/react-core';
|
|
22
23
|
import { DashboardWrapper } from '@patternfly/react-core/src/demos/DashboardWrapper';
|
|
23
24
|
import mastheadStyles from '@patternfly/react-styles/css/components/Masthead/masthead';
|
|
24
25
|
|
|
26
|
+
const JumpLinksWrapper = ({ offsetHeight, headings }) => {
|
|
27
|
+
const { drawerContentRef } = React.useContext(DrawerContext);
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<JumpLinks
|
|
31
|
+
isVertical={true}
|
|
32
|
+
label="Jump to section"
|
|
33
|
+
scrollableRef={drawerContentRef}
|
|
34
|
+
offset={offsetHeight}
|
|
35
|
+
expandable={{ default: 'expandable', md: 'nonExpandable' }}
|
|
36
|
+
>
|
|
37
|
+
{headings.map((heading) => (
|
|
38
|
+
<JumpLinksItem key={heading} href={`#jump-links-drawer-jump-links-${heading.toLowerCase()}`}>
|
|
39
|
+
{`${heading} section`}
|
|
40
|
+
<JumpLinksList></JumpLinksList>
|
|
41
|
+
</JumpLinksItem>
|
|
42
|
+
))}
|
|
43
|
+
</JumpLinks>
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
|
|
25
47
|
export const JumpLinksWithDrawer = () => {
|
|
26
48
|
const headings = ['First', 'Second', 'Third', 'Fourth', 'Fifth'];
|
|
27
49
|
|
|
@@ -66,25 +88,12 @@ export const JumpLinksWithDrawer = () => {
|
|
|
66
88
|
return (
|
|
67
89
|
<DashboardWrapper breadcrumb={null} mainContainerId="scrollable-element">
|
|
68
90
|
<Drawer isExpanded={isExpanded}>
|
|
69
|
-
<DrawerContent panelContent={panelContent}
|
|
91
|
+
<DrawerContent panelContent={panelContent}>
|
|
70
92
|
<DrawerContentBody>
|
|
71
93
|
<Sidebar>
|
|
72
94
|
<SidebarPanel variant="sticky">
|
|
73
95
|
<PageSection variant={PageSectionVariants.light}>
|
|
74
|
-
<
|
|
75
|
-
isVertical={true}
|
|
76
|
-
label="Jump to section"
|
|
77
|
-
scrollableSelector="#jump-links-drawer-drawer-scrollable-container"
|
|
78
|
-
offset={offsetHeight}
|
|
79
|
-
expandable={{ default: 'expandable', md: 'nonExpandable' }}
|
|
80
|
-
>
|
|
81
|
-
{headings.map((heading) => (
|
|
82
|
-
<JumpLinksItem key={heading} href={`#jump-links-drawer-jump-links-${heading.toLowerCase()}`}>
|
|
83
|
-
{`${heading} section`}
|
|
84
|
-
<JumpLinksList></JumpLinksList>
|
|
85
|
-
</JumpLinksItem>
|
|
86
|
-
))}
|
|
87
|
-
</JumpLinks>
|
|
96
|
+
<JumpLinksWrapper offsetHeight={offsetHeight} headings={headings} />
|
|
88
97
|
</PageSection>
|
|
89
98
|
</SidebarPanel>
|
|
90
99
|
<SidebarContent>
|