@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.
Files changed (147) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/components/package.json +1 -1
  3. package/deprecated/package.json +1 -1
  4. package/dist/dynamic/components/AboutModal/package.json +1 -1
  5. package/dist/dynamic/components/Accordion/package.json +1 -1
  6. package/dist/dynamic/components/ActionList/package.json +1 -1
  7. package/dist/dynamic/components/Alert/package.json +1 -1
  8. package/dist/dynamic/components/Avatar/package.json +1 -1
  9. package/dist/dynamic/components/BackToTop/package.json +1 -1
  10. package/dist/dynamic/components/Backdrop/package.json +1 -1
  11. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  12. package/dist/dynamic/components/Badge/package.json +1 -1
  13. package/dist/dynamic/components/Banner/package.json +1 -1
  14. package/dist/dynamic/components/Brand/package.json +1 -1
  15. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  16. package/dist/dynamic/components/Button/package.json +1 -1
  17. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  18. package/dist/dynamic/components/Card/package.json +1 -1
  19. package/dist/dynamic/components/Checkbox/package.json +1 -1
  20. package/dist/dynamic/components/Chip/package.json +1 -1
  21. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  22. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  23. package/dist/dynamic/components/DataList/package.json +1 -1
  24. package/dist/dynamic/components/DatePicker/package.json +1 -1
  25. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  26. package/dist/dynamic/components/Divider/package.json +1 -1
  27. package/dist/dynamic/components/DragDrop/package.json +1 -1
  28. package/dist/dynamic/components/Drawer/package.json +1 -1
  29. package/dist/dynamic/components/Dropdown/package.json +1 -1
  30. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  31. package/dist/dynamic/components/EmptyState/package.json +1 -1
  32. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  33. package/dist/dynamic/components/FileUpload/package.json +1 -1
  34. package/dist/dynamic/components/Form/package.json +1 -1
  35. package/dist/dynamic/components/FormSelect/package.json +1 -1
  36. package/dist/dynamic/components/HelperText/package.json +1 -1
  37. package/dist/dynamic/components/Hint/package.json +1 -1
  38. package/dist/dynamic/components/Icon/package.json +1 -1
  39. package/dist/dynamic/components/InputGroup/package.json +1 -1
  40. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  41. package/dist/dynamic/components/Label/package.json +1 -1
  42. package/dist/dynamic/components/List/package.json +1 -1
  43. package/dist/dynamic/components/LoginPage/package.json +1 -1
  44. package/dist/dynamic/components/Masthead/package.json +1 -1
  45. package/dist/dynamic/components/Menu/package.json +1 -1
  46. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  47. package/dist/dynamic/components/Modal/package.json +1 -1
  48. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  49. package/dist/dynamic/components/Nav/package.json +1 -1
  50. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  51. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  52. package/dist/dynamic/components/NumberInput/package.json +1 -1
  53. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  54. package/dist/dynamic/components/Page/package.json +1 -1
  55. package/dist/dynamic/components/Pagination/package.json +1 -1
  56. package/dist/dynamic/components/Panel/package.json +1 -1
  57. package/dist/dynamic/components/Popover/package.json +1 -1
  58. package/dist/dynamic/components/Progress/package.json +1 -1
  59. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  60. package/dist/dynamic/components/Radio/package.json +1 -1
  61. package/dist/dynamic/components/SearchInput/package.json +1 -1
  62. package/dist/dynamic/components/Select/package.json +1 -1
  63. package/dist/dynamic/components/Sidebar/package.json +1 -1
  64. package/dist/dynamic/components/SimpleList/package.json +1 -1
  65. package/dist/dynamic/components/Skeleton/package.json +1 -1
  66. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  67. package/dist/dynamic/components/Slider/package.json +1 -1
  68. package/dist/dynamic/components/Spinner/package.json +1 -1
  69. package/dist/dynamic/components/Switch/package.json +1 -1
  70. package/dist/dynamic/components/Tabs/package.json +1 -1
  71. package/dist/dynamic/components/Text/package.json +1 -1
  72. package/dist/dynamic/components/TextArea/package.json +1 -1
  73. package/dist/dynamic/components/TextInput/package.json +1 -1
  74. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  75. package/dist/dynamic/components/Tile/package.json +1 -1
  76. package/dist/dynamic/components/TimePicker/package.json +1 -1
  77. package/dist/dynamic/components/Timestamp/package.json +1 -1
  78. package/dist/dynamic/components/Title/package.json +1 -1
  79. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  80. package/dist/dynamic/components/Toolbar/package.json +1 -1
  81. package/dist/dynamic/components/Tooltip/package.json +1 -1
  82. package/dist/dynamic/components/TreeView/package.json +1 -1
  83. package/dist/dynamic/components/Truncate/package.json +1 -1
  84. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  85. package/dist/dynamic/components/Wizard/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/ApplicationLauncher/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
  91. package/dist/dynamic/deprecated/components/Select/package.json +1 -1
  92. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  93. package/dist/dynamic/deprecated/components/package.json +1 -1
  94. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  95. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  96. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  97. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  98. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  99. package/dist/dynamic/helpers/constants/package.json +1 -1
  100. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  101. package/dist/dynamic/helpers/favorites/package.json +1 -1
  102. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  103. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  104. package/dist/dynamic/helpers/package.json +1 -1
  105. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  106. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  107. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  108. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  109. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  110. package/dist/dynamic/helpers/util/package.json +1 -1
  111. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  112. package/dist/dynamic/layouts/Flex/package.json +1 -1
  113. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  114. package/dist/dynamic/layouts/Grid/package.json +1 -1
  115. package/dist/dynamic/layouts/Level/package.json +1 -1
  116. package/dist/dynamic/layouts/Split/package.json +1 -1
  117. package/dist/dynamic/layouts/Stack/package.json +1 -1
  118. package/dist/dynamic/next/components/Modal/package.json +1 -1
  119. package/dist/dynamic/next/components/package.json +1 -1
  120. package/dist/dynamic/styles/package.json +1 -1
  121. package/dist/esm/components/JumpLinks/JumpLinks.d.ts +3 -1
  122. package/dist/esm/components/JumpLinks/JumpLinks.d.ts.map +1 -1
  123. package/dist/esm/components/JumpLinks/JumpLinks.js +19 -7
  124. package/dist/esm/components/JumpLinks/JumpLinks.js.map +1 -1
  125. package/dist/esm/components/MenuToggle/MenuToggle.js +1 -1
  126. package/dist/esm/components/MenuToggle/MenuToggle.js.map +1 -1
  127. package/dist/js/components/JumpLinks/JumpLinks.d.ts +3 -1
  128. package/dist/js/components/JumpLinks/JumpLinks.d.ts.map +1 -1
  129. package/dist/js/components/JumpLinks/JumpLinks.js +19 -7
  130. package/dist/js/components/JumpLinks/JumpLinks.js.map +1 -1
  131. package/dist/js/components/MenuToggle/MenuToggle.js +1 -1
  132. package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
  133. package/dist/umd/react-core.min.js +1 -1
  134. package/helpers/package.json +1 -1
  135. package/layouts/package.json +1 -1
  136. package/next/package.json +1 -1
  137. package/package.json +5 -5
  138. package/src/components/JumpLinks/JumpLinks.tsx +21 -7
  139. package/src/components/MenuToggle/MenuToggle.tsx +1 -1
  140. package/src/components/MenuToggle/examples/MenuToggleTypeahead.tsx +1 -1
  141. package/src/components/Select/examples/SelectMultiTypeahead.tsx +8 -1
  142. package/src/components/Select/examples/SelectMultiTypeaheadCheckbox.tsx +8 -1
  143. package/src/components/Select/examples/SelectMultiTypeaheadCreatable.tsx +8 -1
  144. package/src/components/Select/examples/SelectTypeahead.tsx +8 -1
  145. package/src/components/Select/examples/SelectTypeaheadCreatable.tsx +8 -1
  146. package/src/demos/JumpLinks.md +4 -3
  147. package/src/demos/examples/JumpLinks/JumpLinksWithDrawer.js +25 -16
@@ -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.2.0-prerelease.50","private":true}
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}
@@ -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.2.0-prerelease.50","private":true}
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.2.0-prerelease.50","private":true}
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.2.0",
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.2.0",
50
- "@patternfly/react-styles": "^5.2.0",
51
- "@patternfly/react-tokens": "^5.2.0",
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": "fc901ee10ca9fcbd83176c233f19d41c5d67fce1"
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
- /** Selector for the scrollable element to spy on. Not passing a selector disables spying. */
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 = document.querySelector(scrollableSelector) as HTMLElement;
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
- }, [scrollableSelector, scrollSpy]);
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 = document.querySelector(scrollableSelector) as HTMLElement;
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="Menu toggle"
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 variant="typeahead" onClick={onToggleClick} innerRef={toggleRef} isExpanded={isOpen} isFullWidth>
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 variant="typeahead" onClick={onToggleClick} innerRef={toggleRef} isExpanded={isOpen} isFullWidth>
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 variant="typeahead" onClick={onToggleClick} innerRef={toggleRef} isExpanded={isOpen} isFullWidth>
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 ref={toggleRef} variant="typeahead" onClick={onToggleClick} isExpanded={isOpen} isFullWidth>
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 ref={toggleRef} variant="typeahead" onClick={onToggleClick} isExpanded={isOpen} isFullWidth>
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}
@@ -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 `scrollableSelector` 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).
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 `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.
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
- The `scrollableSelector` prop passed to the jump links component is an `id` that was placed on the `DrawerContent` component.
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} id="jump-links-drawer-drawer-scrollable-container">
91
+ <DrawerContent panelContent={panelContent}>
70
92
  <DrawerContentBody>
71
93
  <Sidebar>
72
94
  <SidebarPanel variant="sticky">
73
95
  <PageSection variant={PageSectionVariants.light}>
74
- <JumpLinks
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>