@patternfly/react-core 6.0.0-alpha.82 → 6.0.0-alpha.83

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 (184) hide show
  1. package/CHANGELOG.md +6 -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/ClipboardCopy/package.json +1 -1
  21. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  22. package/dist/dynamic/components/Content/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/Drawer/package.json +1 -1
  28. package/dist/dynamic/components/Dropdown/package.json +1 -1
  29. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  30. package/dist/dynamic/components/EmptyState/package.json +1 -1
  31. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  32. package/dist/dynamic/components/FileUpload/package.json +1 -1
  33. package/dist/dynamic/components/Form/package.json +1 -1
  34. package/dist/dynamic/components/FormSelect/package.json +1 -1
  35. package/dist/dynamic/components/HelperText/package.json +1 -1
  36. package/dist/dynamic/components/Hint/package.json +1 -1
  37. package/dist/dynamic/components/Icon/package.json +1 -1
  38. package/dist/dynamic/components/InputGroup/package.json +1 -1
  39. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  40. package/dist/dynamic/components/Label/package.json +1 -1
  41. package/dist/dynamic/components/List/package.json +1 -1
  42. package/dist/dynamic/components/LoginPage/package.json +1 -1
  43. package/dist/dynamic/components/Masthead/package.json +1 -1
  44. package/dist/dynamic/components/Menu/package.json +1 -1
  45. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  46. package/dist/dynamic/components/Modal/package.json +1 -1
  47. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  48. package/dist/dynamic/components/Nav/package.json +1 -1
  49. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  50. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  51. package/dist/dynamic/components/NumberInput/package.json +1 -1
  52. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  53. package/dist/dynamic/components/Page/package.json +1 -1
  54. package/dist/dynamic/components/Pagination/package.json +1 -1
  55. package/dist/dynamic/components/Panel/package.json +1 -1
  56. package/dist/dynamic/components/Popover/package.json +1 -1
  57. package/dist/dynamic/components/Progress/package.json +1 -1
  58. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  59. package/dist/dynamic/components/Radio/package.json +1 -1
  60. package/dist/dynamic/components/SearchInput/package.json +1 -1
  61. package/dist/dynamic/components/Select/package.json +1 -1
  62. package/dist/dynamic/components/Sidebar/package.json +1 -1
  63. package/dist/dynamic/components/SimpleList/package.json +1 -1
  64. package/dist/dynamic/components/Skeleton/package.json +1 -1
  65. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  66. package/dist/dynamic/components/Slider/package.json +1 -1
  67. package/dist/dynamic/components/Spinner/package.json +1 -1
  68. package/dist/dynamic/components/Switch/package.json +1 -1
  69. package/dist/dynamic/components/Tabs/package.json +1 -1
  70. package/dist/dynamic/components/TextArea/package.json +1 -1
  71. package/dist/dynamic/components/TextInput/package.json +1 -1
  72. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  73. package/dist/dynamic/components/Tile/package.json +1 -1
  74. package/dist/dynamic/components/TimePicker/package.json +1 -1
  75. package/dist/dynamic/components/Timestamp/package.json +1 -1
  76. package/dist/dynamic/components/Title/package.json +1 -1
  77. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  78. package/dist/dynamic/components/Toolbar/package.json +1 -1
  79. package/dist/dynamic/components/Tooltip/package.json +1 -1
  80. package/dist/dynamic/components/TreeView/package.json +1 -1
  81. package/dist/dynamic/components/Truncate/package.json +1 -1
  82. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  83. package/dist/dynamic/components/Wizard/package.json +1 -1
  84. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/package.json +1 -1
  90. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  91. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  92. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  93. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  94. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  95. package/dist/dynamic/helpers/constants/package.json +1 -1
  96. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  97. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  98. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  99. package/dist/dynamic/helpers/package.json +1 -1
  100. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  101. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  102. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  103. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  104. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  105. package/dist/dynamic/helpers/util/package.json +1 -1
  106. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  107. package/dist/dynamic/layouts/Flex/package.json +1 -1
  108. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  109. package/dist/dynamic/layouts/Grid/package.json +1 -1
  110. package/dist/dynamic/layouts/Level/package.json +1 -1
  111. package/dist/dynamic/layouts/Split/package.json +1 -1
  112. package/dist/dynamic/layouts/Stack/package.json +1 -1
  113. package/dist/dynamic/styles/package.json +1 -1
  114. package/dist/dynamic-modules.json +2 -2
  115. package/dist/esm/components/Page/Page.d.ts.map +1 -1
  116. package/dist/esm/components/Page/Page.js +8 -8
  117. package/dist/esm/components/Page/Page.js.map +1 -1
  118. package/dist/esm/components/Page/PageBody.d.ts +9 -0
  119. package/dist/esm/components/Page/PageBody.d.ts.map +1 -0
  120. package/dist/esm/components/Page/PageBody.js +10 -0
  121. package/dist/esm/components/Page/PageBody.js.map +1 -0
  122. package/dist/esm/components/Page/PageBreadcrumb.d.ts +5 -1
  123. package/dist/esm/components/Page/PageBreadcrumb.d.ts.map +1 -1
  124. package/dist/esm/components/Page/PageBreadcrumb.js +3 -4
  125. package/dist/esm/components/Page/PageBreadcrumb.js.map +1 -1
  126. package/dist/esm/components/Page/PageSection.d.ts +5 -2
  127. package/dist/esm/components/Page/PageSection.d.ts.map +1 -1
  128. package/dist/esm/components/Page/PageSection.js +3 -6
  129. package/dist/esm/components/Page/PageSection.js.map +1 -1
  130. package/dist/esm/components/Page/index.d.ts +1 -1
  131. package/dist/esm/components/Page/index.d.ts.map +1 -1
  132. package/dist/esm/components/Page/index.js +1 -1
  133. package/dist/esm/components/Page/index.js.map +1 -1
  134. package/dist/js/components/Page/Page.d.ts.map +1 -1
  135. package/dist/js/components/Page/Page.js +7 -7
  136. package/dist/js/components/Page/Page.js.map +1 -1
  137. package/dist/js/components/Page/PageBody.d.ts +9 -0
  138. package/dist/js/components/Page/PageBody.d.ts.map +1 -0
  139. package/dist/js/components/Page/PageBody.js +14 -0
  140. package/dist/js/components/Page/PageBody.js.map +1 -0
  141. package/dist/js/components/Page/PageBreadcrumb.d.ts +5 -1
  142. package/dist/js/components/Page/PageBreadcrumb.d.ts.map +1 -1
  143. package/dist/js/components/Page/PageBreadcrumb.js +3 -4
  144. package/dist/js/components/Page/PageBreadcrumb.js.map +1 -1
  145. package/dist/js/components/Page/PageSection.d.ts +5 -2
  146. package/dist/js/components/Page/PageSection.d.ts.map +1 -1
  147. package/dist/js/components/Page/PageSection.js +3 -6
  148. package/dist/js/components/Page/PageSection.js.map +1 -1
  149. package/dist/js/components/Page/index.d.ts +1 -1
  150. package/dist/js/components/Page/index.d.ts.map +1 -1
  151. package/dist/js/components/Page/index.js +1 -1
  152. package/dist/js/components/Page/index.js.map +1 -1
  153. package/dist/umd/assets/{output-CJBOn_jY.css → output-ZK-DtcVp.css} +1672 -1672
  154. package/dist/umd/react-core.min.js +1 -1
  155. package/helpers/package.json +1 -1
  156. package/layouts/package.json +1 -1
  157. package/next/package.json +1 -1
  158. package/package.json +2 -2
  159. package/src/components/Page/Page.tsx +11 -21
  160. package/src/components/Page/PageBody.tsx +18 -0
  161. package/src/components/Page/PageBreadcrumb.tsx +7 -2
  162. package/src/components/Page/PageSection.tsx +8 -5
  163. package/src/components/Page/__tests__/Page.test.tsx +11 -41
  164. package/src/components/Page/__tests__/PageBody.test.tsx +34 -0
  165. package/src/components/Page/__tests__/PageBreadcrumb.test.tsx +14 -1
  166. package/src/components/Page/__tests__/PageSection.test.tsx +15 -2
  167. package/src/components/Page/__tests__/__snapshots__/Page.test.tsx.snap +950 -973
  168. package/src/components/Page/__tests__/__snapshots__/PageBody.test.tsx.snap +11 -0
  169. package/src/components/Page/__tests__/__snapshots__/PageBreadcrumb.test.tsx.snap +30 -6
  170. package/src/components/Page/__tests__/__snapshots__/PageSection.test.tsx.snap +66 -14
  171. package/src/components/Page/examples/Page.md +2 -11
  172. package/src/components/Page/examples/PageGroupSection.tsx +19 -22
  173. package/src/components/Page/index.ts +1 -1
  174. package/dist/esm/components/Page/PageNavigation.d.ts +0 -31
  175. package/dist/esm/components/Page/PageNavigation.d.ts.map +0 -1
  176. package/dist/esm/components/Page/PageNavigation.js +0 -21
  177. package/dist/esm/components/Page/PageNavigation.js.map +0 -1
  178. package/dist/js/components/Page/PageNavigation.d.ts +0 -31
  179. package/dist/js/components/Page/PageNavigation.d.ts.map +0 -1
  180. package/dist/js/components/Page/PageNavigation.js +0 -25
  181. package/dist/js/components/Page/PageNavigation.js.map +0 -1
  182. package/src/components/Page/PageNavigation.tsx +0 -72
  183. package/src/components/Page/__tests__/PageNavigation.test.tsx +0 -78
  184. package/src/components/Page/__tests__/__snapshots__/PageNavigation.test.tsx.snap +0 -77
@@ -3,6 +3,6 @@
3
3
  "main": "../dist/js/helpers/index.js",
4
4
  "module": "../dist/esm/helpers/index.js",
5
5
  "typings": "../dist/esm/helpers/index.d.ts",
6
- "version": "6.0.0-alpha.81",
6
+ "version": "6.0.0-alpha.82",
7
7
  "private": true
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "main": "../dist/js/layouts/index.js",
4
4
  "module": "../dist/esm/layouts/index.js",
5
5
  "typings": "../dist/esm/layouts/index.d.ts",
6
- "version": "6.0.0-alpha.81",
6
+ "version": "6.0.0-alpha.82",
7
7
  "private": true
8
8
  }
package/next/package.json CHANGED
@@ -3,6 +3,6 @@
3
3
  "main": "../dist/js/next/index.js",
4
4
  "module": "../dist/esm/next/index.js",
5
5
  "typings": "../dist/esm/next/index.d.ts",
6
- "version": "6.0.0-alpha.81",
6
+ "version": "6.0.0-alpha.82",
7
7
  "private": true
8
8
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/react-core",
3
- "version": "6.0.0-alpha.82",
3
+ "version": "6.0.0-alpha.83",
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",
@@ -64,5 +64,5 @@
64
64
  "react": "^17 || ^18",
65
65
  "react-dom": "^17 || ^18"
66
66
  },
67
- "gitHead": "38f193a8eb07223c13de5e466a242f495f8830b0"
67
+ "gitHead": "640f3adbba7919fd6ab3f7d8617d9ddcf62ca939"
68
68
  }
@@ -4,11 +4,12 @@ import { css } from '@patternfly/react-styles';
4
4
  import globalBreakpointXl from '@patternfly/react-tokens/dist/esm/global_breakpoint_xl';
5
5
  import { debounce, canUseDOM } from '../../helpers/util';
6
6
  import { Drawer, DrawerContent, DrawerContentBody, DrawerPanelContent } from '../Drawer';
7
- import { PageBreadcrumbProps } from './PageBreadcrumb';
7
+ import { PageBreadcrumb, PageBreadcrumbProps } from './PageBreadcrumb';
8
8
  import { PageGroup, PageGroupProps } from './PageGroup';
9
9
  import { getResizeObserver } from '../../helpers/resizeObserver';
10
- import { formatBreakpointMods, getBreakpoint, getVerticalBreakpoint } from '../../helpers/util';
10
+ import { getBreakpoint, getVerticalBreakpoint } from '../../helpers/util';
11
11
  import { PageContextProvider } from './PageContext';
12
+ import { PageBody } from './PageBody';
12
13
 
13
14
  export enum PageLayouts {
14
15
  vertical = 'vertical',
@@ -263,32 +264,21 @@ class Page extends React.Component<PageProps, PageState> {
263
264
  };
264
265
 
265
266
  let nav = null;
266
- if (horizontalSubnav && isHorizontalSubnavWidthLimited) {
267
+ if (horizontalSubnav) {
267
268
  nav = (
268
- <div className={css(styles.pageMainNav, styles.modifiers.limitWidth)}>
269
- <div className={css(styles.pageMainBody)}>{horizontalSubnav}</div>
269
+ <div className={css(styles.pageMainSubnav, isHorizontalSubnavWidthLimited && styles.modifiers.limitWidth)}>
270
+ <PageBody>{horizontalSubnav}</PageBody>
270
271
  </div>
271
272
  );
272
- } else if (horizontalSubnav) {
273
- nav = <div className={css(styles.pageMainNav)}>{horizontalSubnav}</div>;
274
273
  }
275
274
 
276
275
  const crumb = breadcrumb ? (
277
- <section
278
- className={css(
279
- styles.pageMainBreadcrumb,
280
- isBreadcrumbWidthLimited && styles.modifiers.limitWidth,
281
- formatBreakpointMods(
282
- breadcrumbProps?.stickyOnBreakpoint,
283
- styles,
284
- 'sticky-',
285
- getVerticalBreakpoint(height),
286
- true
287
- )
288
- )}
276
+ <PageBreadcrumb
277
+ stickyOnBreakpoint={breadcrumbProps?.stickyOnBreakpoint}
278
+ isWidthLimited={isBreadcrumbWidthLimited}
289
279
  >
290
- {isBreadcrumbWidthLimited ? <div className={css(styles.pageMainBody)}>{breadcrumb}</div> : breadcrumb}
291
- </section>
280
+ <PageBody>{breadcrumb}</PageBody>
281
+ </PageBreadcrumb>
292
282
  ) : null;
293
283
 
294
284
  const isGrouped = isHorizontalSubnavGrouped || isBreadcrumbGrouped || additionalGroupedContent;
@@ -0,0 +1,18 @@
1
+ import * as React from 'react';
2
+ import styles from '@patternfly/react-styles/css/components/Page/page';
3
+ import { css } from '@patternfly/react-styles';
4
+
5
+ export interface PageBodyProps extends React.HTMLProps<HTMLDivElement> {
6
+ /** Content rendered inside the section */
7
+ children?: React.ReactNode;
8
+ /** Additional classes added to the section */
9
+ className?: string;
10
+ }
11
+
12
+ export const PageBody: React.FunctionComponent<PageBodyProps> = ({ className, children, ...props }: PageBodyProps) => (
13
+ <div {...props} className={css(styles.pageMainBody, className)}>
14
+ {children}
15
+ </div>
16
+ );
17
+
18
+ PageBody.displayName = 'PageBody';
@@ -3,6 +3,7 @@ import { css } from '@patternfly/react-styles';
3
3
  import styles from '@patternfly/react-styles/css/components/Page/page';
4
4
  import { formatBreakpointMods, Mods } from '../../helpers/util';
5
5
  import { PageContext } from './PageContext';
6
+ import { PageBody } from './PageBody';
6
7
 
7
8
  export interface PageBreadcrumbProps extends React.HTMLProps<HTMLElement> {
8
9
  /** Additional classes to apply to the PageBreadcrumb */
@@ -26,6 +27,10 @@ export interface PageBreadcrumbProps extends React.HTMLProps<HTMLElement> {
26
27
  hasShadowBottom?: boolean;
27
28
  /** Flag indicating if the PageBreadcrumb has a scrolling overflow */
28
29
  hasOverflowScroll?: boolean;
30
+ /** @beta Flag indicating whether children passed to the component should be wrapped by a PageBody.
31
+ * Set this to false in order to pass multiple, custom PageBody's as children.
32
+ */
33
+ hasBodyWrapper?: boolean;
29
34
  /** Adds an accessible name to the breadcrumb section. Required when the hasOverflowScroll prop is set to true. */
30
35
  'aria-label'?: string;
31
36
  }
@@ -39,6 +44,7 @@ export const PageBreadcrumb = ({
39
44
  hasShadowBottom = false,
40
45
  hasOverflowScroll = false,
41
46
  'aria-label': ariaLabel,
47
+ hasBodyWrapper = true,
42
48
  ...props
43
49
  }: PageBreadcrumbProps) => {
44
50
  const { height, getVerticalBreakpoint } = React.useContext(PageContext);
@@ -65,8 +71,7 @@ export const PageBreadcrumb = ({
65
71
  aria-label={ariaLabel}
66
72
  {...props}
67
73
  >
68
- {isWidthLimited && <div className={css(styles.pageMainBody)}>{children}</div>}
69
- {!isWidthLimited && children}
74
+ {hasBodyWrapper ? <PageBody>{children}</PageBody> : children}
70
75
  </section>
71
76
  );
72
77
  };
@@ -3,6 +3,7 @@ import styles from '@patternfly/react-styles/css/components/Page/page';
3
3
  import { css } from '@patternfly/react-styles';
4
4
  import { formatBreakpointMods } from '../../helpers/util';
5
5
  import { PageContext } from './PageContext';
6
+ import { PageBody } from './PageBody';
6
7
 
7
8
  export enum PageSectionVariants {
8
9
  default = 'default',
@@ -11,7 +12,6 @@ export enum PageSectionVariants {
11
12
 
12
13
  export enum PageSectionTypes {
13
14
  default = 'default',
14
- nav = 'nav',
15
15
  subNav = 'subnav',
16
16
  breadcrumb = 'breadcrumb',
17
17
  tabs = 'tabs',
@@ -26,7 +26,7 @@ export interface PageSectionProps extends React.HTMLProps<HTMLDivElement> {
26
26
  /** Section background color variant. This will only apply when the type prop has the "default" value. */
27
27
  variant?: 'default' | 'secondary';
28
28
  /** Section type variant */
29
- type?: 'default' | 'nav' | 'subnav' | 'breadcrumb' | 'tabs' | 'wizard';
29
+ type?: 'default' | 'subnav' | 'breadcrumb' | 'tabs' | 'wizard';
30
30
  /** Enables the page section to fill the available vertical space */
31
31
  isFilled?: boolean;
32
32
  /** Limits the width of the section */
@@ -57,6 +57,10 @@ export interface PageSectionProps extends React.HTMLProps<HTMLDivElement> {
57
57
  hasShadowBottom?: boolean;
58
58
  /** Flag indicating if the PageSection has a scrolling overflow */
59
59
  hasOverflowScroll?: boolean;
60
+ /** @beta Flag indicating whether children passed to the component should be wrapped by a PageBody.
61
+ * Set this to false in order to pass multiple, custom PageBody's as children.
62
+ */
63
+ hasBodyWrapper?: boolean;
60
64
  /** Adds an accessible name to the page section. Required when the hasOverflowScroll prop is set to true.
61
65
  * This prop should also be passed in if a heading is not being used to describe the content of the page section.
62
66
  */
@@ -67,7 +71,6 @@ export interface PageSectionProps extends React.HTMLProps<HTMLDivElement> {
67
71
 
68
72
  const variantType = {
69
73
  [PageSectionTypes.default]: styles.pageMainSection,
70
- [PageSectionTypes.nav]: styles.pageMainNav,
71
74
  [PageSectionTypes.subNav]: styles.pageMainSubnav,
72
75
  [PageSectionTypes.breadcrumb]: styles.pageMainBreadcrumb,
73
76
  [PageSectionTypes.tabs]: styles.pageMainTabs,
@@ -94,6 +97,7 @@ export const PageSection: React.FunctionComponent<PageSectionProps> = ({
94
97
  hasOverflowScroll = false,
95
98
  'aria-label': ariaLabel,
96
99
  component = 'section',
100
+ hasBodyWrapper = true,
97
101
  ...props
98
102
  }: PageSectionProps) => {
99
103
  const { height, getVerticalBreakpoint } = React.useContext(PageContext);
@@ -127,8 +131,7 @@ export const PageSection: React.FunctionComponent<PageSectionProps> = ({
127
131
  {...(hasOverflowScroll && { tabIndex: 0 })}
128
132
  aria-label={ariaLabel}
129
133
  >
130
- {isWidthLimited && <div className={css(styles.pageMainBody)}>{children}</div>}
131
- {!isWidthLimited && children}
134
+ {hasBodyWrapper ? <PageBody>{children}</PageBody> : children}
132
135
  </Component>
133
136
  );
134
137
  };
@@ -10,7 +10,6 @@ import { Breadcrumb, BreadcrumbItem } from '../../Breadcrumb';
10
10
  import { Nav, NavList, NavItem } from '../../Nav';
11
11
  import { SkipToContent } from '../../SkipToContent';
12
12
  import { PageBreadcrumb } from '../PageBreadcrumb';
13
- import { PageNavigation } from '../PageNavigation';
14
13
  import { PageGroup } from '../PageGroup';
15
14
  import { Masthead } from '../../Masthead';
16
15
 
@@ -228,33 +227,6 @@ describe('Page', () => {
228
227
  expect(asFragment()).toMatchSnapshot();
229
228
  });
230
229
 
231
- test('Check page to verify nav is created - PageNavigation syntax', () => {
232
- const masthead = <Masthead />;
233
- const Sidebar = <PageSidebar isSidebarOpen />;
234
-
235
- const { asFragment } = render(
236
- <Page {...props} masthead={masthead} sidebar={Sidebar}>
237
- <PageNavigation>
238
- <Nav aria-label="Nav" variant="horizontal-subnav">
239
- <NavList>
240
- <NavItem itemId={0} isActive>
241
- System Panel
242
- </NavItem>
243
- <NavItem itemId={1}>Policy</NavItem>
244
- <NavItem itemId={2}>Authentication</NavItem>
245
- <NavItem itemId={3}>Network Services</NavItem>
246
- <NavItem itemId={4}>Server</NavItem>
247
- </NavList>
248
- </Nav>
249
- </PageNavigation>
250
- <PageSection variant="default">Section with default background</PageSection>
251
- </Page>
252
- );
253
-
254
- expect(screen.getByRole('main')).not.toHaveAttribute('id');
255
- expect(asFragment()).toMatchSnapshot();
256
- });
257
-
258
230
  test('Check page to verify grouped nav and breadcrumb - new components syntax', () => {
259
231
  const masthead = <Masthead />;
260
232
  const Sidebar = <PageSidebar isSidebarOpen />;
@@ -272,19 +244,17 @@ describe('Page', () => {
272
244
  </BreadcrumbItem>
273
245
  </Breadcrumb>
274
246
  </PageBreadcrumb>
275
- <PageNavigation>
276
- <Nav aria-label="Nav" variant="horizontal-subnav">
277
- <NavList>
278
- <NavItem itemId={0} isActive>
279
- System Panel
280
- </NavItem>
281
- <NavItem itemId={1}>Policy</NavItem>
282
- <NavItem itemId={2}>Authentication</NavItem>
283
- <NavItem itemId={3}>Network Services</NavItem>
284
- <NavItem itemId={4}>Server</NavItem>
285
- </NavList>
286
- </Nav>
287
- </PageNavigation>
247
+ <Nav aria-label="Nav" variant="horizontal-subnav">
248
+ <NavList>
249
+ <NavItem itemId={0} isActive>
250
+ System Panel
251
+ </NavItem>
252
+ <NavItem itemId={1}>Policy</NavItem>
253
+ <NavItem itemId={2}>Authentication</NavItem>
254
+ <NavItem itemId={3}>Network Services</NavItem>
255
+ <NavItem itemId={4}>Server</NavItem>
256
+ </NavList>
257
+ </Nav>
288
258
  </PageGroup>
289
259
  <PageSection variant="default">Section with default background</PageSection>
290
260
  </Page>
@@ -0,0 +1,34 @@
1
+ import * as React from 'react';
2
+ import { render, screen } from '@testing-library/react';
3
+ import { PageBody } from '../PageBody';
4
+ import styles from '@patternfly/react-styles/css/components/Page/page';
5
+
6
+ test('Renders without children', () => {
7
+ render(<PageBody data-testid="page-main-body" />);
8
+
9
+ expect(screen.getByTestId('page-main-body')).toBeVisible();
10
+ });
11
+ test('Renders children', () => {
12
+ render(<PageBody>Test</PageBody>);
13
+
14
+ expect(screen.getByText('Test')).toBeVisible();
15
+ });
16
+ test(`Renders with class ${styles.pageMainBody} by default`, () => {
17
+ render(<PageBody>Test</PageBody>);
18
+
19
+ expect(screen.getByText('Test')).toHaveClass(styles.pageMainBody);
20
+ });
21
+ test(`Renders with custom classes when className is passed`, () => {
22
+ render(<PageBody className="custom-class">Test</PageBody>);
23
+
24
+ expect(screen.getByText('Test')).toHaveClass('custom-class');
25
+ });
26
+ test(`Renders with spread props`, () => {
27
+ render(<PageBody id="custom-id">Test</PageBody>);
28
+
29
+ expect(screen.getByText('Test')).toHaveAttribute('id', 'custom-id');
30
+ });
31
+ test('Matches snapshot', () => {
32
+ const { asFragment } = render(<PageBody>Test</PageBody>);
33
+ expect(asFragment()).toMatchSnapshot();
34
+ });
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { render, screen } from '@testing-library/react';
3
3
  import { PageBreadcrumb } from '../PageBreadcrumb';
4
+ import styles from '@patternfly/react-styles/css/components/Page/page';
4
5
 
5
6
  describe('page breadcrumb', () => {
6
7
  test('Verify basic render', () => {
@@ -32,6 +33,7 @@ describe('page breadcrumb', () => {
32
33
  expect(asFragment()).toMatchSnapshot();
33
34
  });
34
35
 
36
+ // Old snapshot tests end here. The following tests can be kept if Page test suites need a revamp
35
37
  test('Renders without an aria-label by default', () => {
36
38
  render(<PageBreadcrumb>test</PageBreadcrumb>);
37
39
 
@@ -41,7 +43,7 @@ describe('page breadcrumb', () => {
41
43
  test('Renders with the passed aria-label applied', () => {
42
44
  render(<PageBreadcrumb aria-label="Test label">test</PageBreadcrumb>);
43
45
 
44
- expect(screen.getByText('test')).toHaveAccessibleName('Test label');
46
+ expect(screen.getByText('test').parentElement).toHaveAccessibleName('Test label');
45
47
  });
46
48
 
47
49
  test('Does not log a warning in the console by default', () => {
@@ -71,4 +73,15 @@ describe('page breadcrumb', () => {
71
73
 
72
74
  expect(consoleWarning).toHaveBeenCalled();
73
75
  });
76
+
77
+ test('Renders with PageBody wrapper by default', () => {
78
+ render(<PageBreadcrumb>test</PageBreadcrumb>);
79
+
80
+ expect(screen.getByText('test')).toHaveClass(styles.pageMainBody);
81
+ });
82
+ test('Does not render with PageBody wrapper when hasBodyWrapper is false', () => {
83
+ render(<PageBreadcrumb hasBodyWrapper={false}>test</PageBreadcrumb>);
84
+
85
+ expect(screen.getByText('test')).not.toHaveClass(styles.pageMainBody);
86
+ });
74
87
  });
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { render, screen } from '@testing-library/react';
3
3
  import { PageSection, PageSectionTypes } from '../PageSection';
4
+ import styles from '@patternfly/react-styles/css/components/Page/page';
4
5
 
5
6
  jest.mock('../Page');
6
7
 
@@ -89,6 +90,7 @@ test('Verify page section overflow scroll', () => {
89
90
  expect(asFragment()).toMatchSnapshot();
90
91
  });
91
92
 
93
+ // Old snapshot tests end here. The following tests can be kept if Page test suites need a revamp
92
94
  test('Renders without an aria-label by default', () => {
93
95
  render(<PageSection>test</PageSection>);
94
96
 
@@ -98,7 +100,7 @@ test('Renders without an aria-label by default', () => {
98
100
  test('Renders with the passed aria-label applied', () => {
99
101
  render(<PageSection aria-label="Test label">test</PageSection>);
100
102
 
101
- expect(screen.getByText('test')).toHaveAccessibleName('Test label');
103
+ expect(screen.getByText('test').parentElement).toHaveAccessibleName('Test label');
102
104
  });
103
105
 
104
106
  test('Does not log a warning in the console by default', () => {
@@ -132,7 +134,7 @@ test('Logs a warning in the console when an aria-label is not included with hasO
132
134
  test('Renders as a section by default', () => {
133
135
  render(<PageSection>test</PageSection>);
134
136
 
135
- expect(screen.getByText('test')).toHaveProperty('nodeName', 'SECTION');
137
+ expect(screen.getByText('test').parentElement).toHaveProperty('nodeName', 'SECTION');
136
138
  });
137
139
 
138
140
  test('Renders as other elements when a different element type is passed using the component prop', () => {
@@ -140,3 +142,14 @@ test('Renders as other elements when a different element type is passed using th
140
142
 
141
143
  expect(screen.getByRole('main')).toHaveTextContent('test');
142
144
  });
145
+
146
+ test('Renders with PageBody wrapper by default', () => {
147
+ render(<PageSection>test</PageSection>);
148
+
149
+ expect(screen.getByText('test')).toHaveClass(styles.pageMainBody);
150
+ });
151
+ test('Does not render with PageBody wrapper when hasBodyWrapper is false', () => {
152
+ render(<PageSection hasBodyWrapper={false}>test</PageSection>);
153
+
154
+ expect(screen.getByText('test')).not.toHaveClass(styles.pageMainBody);
155
+ });