@patternfly/react-docs 7.6.0-prerelease.8 → 7.6.0-prerelease.9

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 (163) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE +21 -0
  3. package/package.json +12 -11
  4. package/patternfly-docs/generated/components/about-modal/react.js +0 -149
  5. package/patternfly-docs/generated/components/accordion/react.js +0 -262
  6. package/patternfly-docs/generated/components/action-list/react.js +0 -144
  7. package/patternfly-docs/generated/components/alert/react-demos.js +0 -56
  8. package/patternfly-docs/generated/components/alert/react.js +0 -1433
  9. package/patternfly-docs/generated/components/avatar/react.js +0 -166
  10. package/patternfly-docs/generated/components/back-to-top/react-demos.js +0 -60
  11. package/patternfly-docs/generated/components/back-to-top/react.js +0 -77
  12. package/patternfly-docs/generated/components/backdrop/react.js +0 -64
  13. package/patternfly-docs/generated/components/background-image/react.js +0 -62
  14. package/patternfly-docs/generated/components/badge/react.js +0 -97
  15. package/patternfly-docs/generated/components/banner/react-demos.js +0 -57
  16. package/patternfly-docs/generated/components/banner/react.js +0 -148
  17. package/patternfly-docs/generated/components/brand/react.js +0 -142
  18. package/patternfly-docs/generated/components/breadcrumb/react.js +0 -206
  19. package/patternfly-docs/generated/components/button/react-demos.js +0 -57
  20. package/patternfly-docs/generated/components/button/react.js +0 -826
  21. package/patternfly-docs/generated/components/card/react-demos.js +0 -201
  22. package/patternfly-docs/generated/components/card/react.js +0 -1015
  23. package/patternfly-docs/generated/components/charts/area-chart/-Victory.js +0 -1350
  24. package/patternfly-docs/generated/components/charts/bar-chart/-Victory.js +0 -1334
  25. package/patternfly-docs/generated/components/charts/box-plot-chart/-Victory.js +0 -1282
  26. package/patternfly-docs/generated/components/charts/bullet-chart/-Victory.js +0 -848
  27. package/patternfly-docs/generated/components/charts/colors-for-charts/-Victory.js +0 -192
  28. package/patternfly-docs/generated/components/charts/donut-chart/-Victory.js +0 -426
  29. package/patternfly-docs/generated/components/charts/donut-utilization-chart/-Victory.js +0 -804
  30. package/patternfly-docs/generated/components/charts/legends/-Victory.js +0 -3230
  31. package/patternfly-docs/generated/components/charts/line-chart/-Victory.js +0 -1178
  32. package/patternfly-docs/generated/components/charts/line-chart/ECharts.js +0 -525
  33. package/patternfly-docs/generated/components/charts/patterns/-Victory.js +0 -3382
  34. package/patternfly-docs/generated/components/charts/pie-chart/-Victory.js +0 -377
  35. package/patternfly-docs/generated/components/charts/resize-observer/-Victory.js +0 -2475
  36. package/patternfly-docs/generated/components/charts/sankey-chart/ECharts.js +0 -538
  37. package/patternfly-docs/generated/components/charts/scatter-chart/-Victory.js +0 -1551
  38. package/patternfly-docs/generated/components/charts/skeletons/-Victory.js +0 -4115
  39. package/patternfly-docs/generated/components/charts/sparkline-chart/-Victory.js +0 -955
  40. package/patternfly-docs/generated/components/charts/stack-chart/-Victory.js +0 -1173
  41. package/patternfly-docs/generated/components/charts/threshold-chart/-Victory.js +0 -1166
  42. package/patternfly-docs/generated/components/charts/tooltips/-Victory.js +0 -413
  43. package/patternfly-docs/generated/components/chip/react-deprecated.js +0 -323
  44. package/patternfly-docs/generated/components/clipboard-copy/react.js +0 -373
  45. package/patternfly-docs/generated/components/code-block/react.js +0 -148
  46. package/patternfly-docs/generated/components/code-editor/react.js +0 -659
  47. package/patternfly-docs/generated/components/compass/react-demos.js +0 -147
  48. package/patternfly-docs/generated/components/compass/react.js +0 -440
  49. package/patternfly-docs/generated/components/content/react.js +0 -248
  50. package/patternfly-docs/generated/components/data-list/react-demos.js +0 -90
  51. package/patternfly-docs/generated/components/data-list/react.js +0 -709
  52. package/patternfly-docs/generated/components/date-and-time/calendar-month/react.js +0 -283
  53. package/patternfly-docs/generated/components/date-and-time/date-and-time-picker/react-demos.js +0 -64
  54. package/patternfly-docs/generated/components/date-and-time/date-picker/react-demos.js +0 -83
  55. package/patternfly-docs/generated/components/date-and-time/date-picker/react.js +0 -395
  56. package/patternfly-docs/generated/components/date-and-time/time-picker/react.js +0 -241
  57. package/patternfly-docs/generated/components/description-list/react-demos.js +0 -58
  58. package/patternfly-docs/generated/components/description-list/react.js +0 -743
  59. package/patternfly-docs/generated/components/divider/react.js +0 -126
  60. package/patternfly-docs/generated/components/drag-and-drop/react-demos.js +0 -351
  61. package/patternfly-docs/generated/components/drag-and-drop/react-deprecated.js +0 -184
  62. package/patternfly-docs/generated/components/drag-and-drop/react.js +0 -137
  63. package/patternfly-docs/generated/components/drawer/react.js +0 -598
  64. package/patternfly-docs/generated/components/dual-list-selector/react-deprecated.js +0 -772
  65. package/patternfly-docs/generated/components/dual-list-selector/react.js +0 -594
  66. package/patternfly-docs/generated/components/empty-state/react.js +0 -199
  67. package/patternfly-docs/generated/components/expandable-section/react-demos.js +0 -65
  68. package/patternfly-docs/generated/components/expandable-section/react.js +0 -408
  69. package/patternfly-docs/generated/components/file-upload/multiple-file-upload/react-demos.js +0 -52
  70. package/patternfly-docs/generated/components/file-upload/multiple-file-upload/react.js +0 -398
  71. package/patternfly-docs/generated/components/file-upload/simple-file-upload/react.js +0 -749
  72. package/patternfly-docs/generated/components/forms/checkbox/react.js +0 -222
  73. package/patternfly-docs/generated/components/forms/form/react.js +0 -1106
  74. package/patternfly-docs/generated/components/forms/form-select/react.js +0 -208
  75. package/patternfly-docs/generated/components/forms/radio/react.js +0 -212
  76. package/patternfly-docs/generated/components/forms/text-area/react.js +0 -160
  77. package/patternfly-docs/generated/components/forms/text-input/react.js +0 -216
  78. package/patternfly-docs/generated/components/helper-text/react-demos.js +0 -180
  79. package/patternfly-docs/generated/components/helper-text/react.js +0 -164
  80. package/patternfly-docs/generated/components/hero/react.js +0 -88
  81. package/patternfly-docs/generated/components/hint/react.js +0 -169
  82. package/patternfly-docs/generated/components/icon/react.js +0 -215
  83. package/patternfly-docs/generated/components/input-group/react.js +0 -182
  84. package/patternfly-docs/generated/components/jump-links/react-demos.js +0 -154
  85. package/patternfly-docs/generated/components/jump-links/react.js +0 -212
  86. package/patternfly-docs/generated/components/label/react-demos.js +0 -57
  87. package/patternfly-docs/generated/components/label/react.js +0 -417
  88. package/patternfly-docs/generated/components/list/react.js +0 -175
  89. package/patternfly-docs/generated/components/login-page/react.js +0 -587
  90. package/patternfly-docs/generated/components/masthead/react-demos.js +0 -79
  91. package/patternfly-docs/generated/components/masthead/react.js +0 -291
  92. package/patternfly-docs/generated/components/menus/application-launcher/react-demos.js +0 -769
  93. package/patternfly-docs/generated/components/menus/context-selector/react-demos.js +0 -665
  94. package/patternfly-docs/generated/components/menus/custom-menus/react-demos.js +0 -187
  95. package/patternfly-docs/generated/components/menus/dropdown/react-templates.js +0 -163
  96. package/patternfly-docs/generated/components/menus/dropdown/react.js +0 -998
  97. package/patternfly-docs/generated/components/menus/menu/react.js +0 -1540
  98. package/patternfly-docs/generated/components/menus/menu-toggle/react.js +0 -747
  99. package/patternfly-docs/generated/components/menus/options-menu/react-demos.js +0 -508
  100. package/patternfly-docs/generated/components/menus/select/react-templates.js +0 -257
  101. package/patternfly-docs/generated/components/menus/select/react.js +0 -998
  102. package/patternfly-docs/generated/components/modal/react-deprecated.js +0 -554
  103. package/patternfly-docs/generated/components/modal/react.js +0 -597
  104. package/patternfly-docs/generated/components/navigation/react-demos.js +0 -356
  105. package/patternfly-docs/generated/components/navigation/react.js +0 -409
  106. package/patternfly-docs/generated/components/notification-badge/react.js +0 -196
  107. package/patternfly-docs/generated/components/notification-drawer/react-demos.js +0 -107
  108. package/patternfly-docs/generated/components/notification-drawer/react.js +0 -394
  109. package/patternfly-docs/generated/components/number-input/react.js +0 -210
  110. package/patternfly-docs/generated/components/overflow-menu/react.js +0 -274
  111. package/patternfly-docs/generated/components/page/react-demos.js +0 -149
  112. package/patternfly-docs/generated/components/page/react.js +0 -1352
  113. package/patternfly-docs/generated/components/pagination/react.js +0 -492
  114. package/patternfly-docs/generated/components/panel/react.js +0 -236
  115. package/patternfly-docs/generated/components/popover/react.js +0 -390
  116. package/patternfly-docs/generated/components/progress/react-demos.js +0 -59
  117. package/patternfly-docs/generated/components/progress/react.js +0 -283
  118. package/patternfly-docs/generated/components/progress-stepper/react-demos.js +0 -45
  119. package/patternfly-docs/generated/components/progress-stepper/react.js +0 -219
  120. package/patternfly-docs/generated/components/search-input/react-demos.js +0 -113
  121. package/patternfly-docs/generated/components/search-input/react.js +0 -263
  122. package/patternfly-docs/generated/components/sidebar/react.js +0 -236
  123. package/patternfly-docs/generated/components/simple-list/react.js +0 -200
  124. package/patternfly-docs/generated/components/skeleton/react-demos.js +0 -44
  125. package/patternfly-docs/generated/components/skeleton/react.js +0 -122
  126. package/patternfly-docs/generated/components/skip-to-content/react.js +0 -73
  127. package/patternfly-docs/generated/components/slider/react.js +0 -309
  128. package/patternfly-docs/generated/components/spinner/react.js +0 -111
  129. package/patternfly-docs/generated/components/switch/react.js +0 -163
  130. package/patternfly-docs/generated/components/table/react-demos.js +0 -355
  131. package/patternfly-docs/generated/components/table/react-deprecated.js +0 -1350
  132. package/patternfly-docs/generated/components/table/react.js +0 -3241
  133. package/patternfly-docs/generated/components/tabs/react-demos.js +0 -108
  134. package/patternfly-docs/generated/components/tabs/react.js +0 -1359
  135. package/patternfly-docs/generated/components/text-input-group/react-demos.js +0 -152
  136. package/patternfly-docs/generated/components/text-input-group/react.js +0 -278
  137. package/patternfly-docs/generated/components/tile/react-deprecated.js +0 -242
  138. package/patternfly-docs/generated/components/timestamp/react.js +0 -283
  139. package/patternfly-docs/generated/components/title/react.js +0 -94
  140. package/patternfly-docs/generated/components/toggle-group/react.js +0 -299
  141. package/patternfly-docs/generated/components/toolbar/react-demos.js +0 -66
  142. package/patternfly-docs/generated/components/toolbar/react.js +0 -932
  143. package/patternfly-docs/generated/components/tooltip/react.js +0 -241
  144. package/patternfly-docs/generated/components/tree-view/react.js +0 -429
  145. package/patternfly-docs/generated/components/truncate/react.js +0 -211
  146. package/patternfly-docs/generated/components/wizard/react-demos.js +0 -87
  147. package/patternfly-docs/generated/components/wizard/react-deprecated.js +0 -788
  148. package/patternfly-docs/generated/components/wizard/react.js +0 -986
  149. package/patternfly-docs/generated/developer-guides/open-ui-automation/react.js +0 -285
  150. package/patternfly-docs/generated/foundations-and-styles/layouts/bullseye/react.js +0 -70
  151. package/patternfly-docs/generated/foundations-and-styles/layouts/flex/react.js +0 -506
  152. package/patternfly-docs/generated/foundations-and-styles/layouts/gallery/react.js +0 -94
  153. package/patternfly-docs/generated/foundations-and-styles/layouts/grid/react.js +0 -272
  154. package/patternfly-docs/generated/foundations-and-styles/layouts/level/react.js +0 -87
  155. package/patternfly-docs/generated/foundations-and-styles/layouts/split/react.js +0 -124
  156. package/patternfly-docs/generated/foundations-and-styles/layouts/stack/react.js +0 -112
  157. package/patternfly-docs/generated/index.js +0 -1769
  158. package/patternfly-docs/generated/patterns/card-view/react-demos.js +0 -78
  159. package/patternfly-docs/generated/patterns/filters/react-demos.js +0 -141
  160. package/patternfly-docs/generated/patterns/password-generator/react-demos.js +0 -51
  161. package/patternfly-docs/generated/patterns/password-strength/react-demos.js +0 -61
  162. package/patternfly-docs/generated/patterns/primary-detail/react-demos.js +0 -124
  163. package/patternfly-docs/generated/patterns/right-to-left/react-demos.js +0 -81
@@ -1,149 +0,0 @@
1
- import React from 'react';
2
- import { AutoLinkHeader, Example, Link as PatternflyThemeLink } from '@patternfly/documentation-framework/components';
3
- import { useState, useRef, useEffect } from 'react';
4
- import RhUiNotificationFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-notification-fill-icon';
5
- import RhUiSettingsFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-settings-fill-icon';
6
- import HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';
7
- import RhUiQuestionMarkCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-question-mark-circle-fill-icon';
8
- import imgAvatar from '@patternfly/react-core/src/components/assets/avatarImg.svg';
9
- import RhUiMenuBarsIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-menu-bars-icon';
10
- import LightbulbIcon from '@patternfly/react-icons/dist/esm/icons/lightbulb-icon';
11
- import RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill-icon';
12
- import CubeIcon from '@patternfly/react-icons/dist/esm/icons/cube-icon';
13
- import FolderIcon from '@patternfly/react-icons/dist/esm/icons/folder-icon';
14
- import CloudIcon from '@patternfly/react-icons/dist/esm/icons/cloud-icon';
15
- import pfLogo from '@patternfly/react-core/src/demos/assets/PF-HorizontalLogo-Color.svg';
16
- import pfIconLogo from '@patternfly/react-core/src/demos/assets/PF-IconLogo-color.svg';
17
- import srcImportcontextselectorperspectiveswitcherinsidebar from './react-demos/context-selectorperspective-switcher-in-sidebar.png';
18
- import srcImportdefaultnav from './react-demos/default-nav.png';
19
- import srcImportexpandablenav from './react-demos/expandable-nav.png';
20
- import srcImportgroupednav from './react-demos/grouped-nav.png';
21
- import srcImporthorizontalnav from './react-demos/horizontal-nav.png';
22
- import srcImportlegacylightnav from './react-demos/legacylight-nav.png';
23
- import srcImportmanualnav from './react-demos/manual-nav.png';
24
- import srcImportstickysectionbreadcrumbwithbreakpoints from './react-demos/sticky-section-breadcrumb-with-breakpoints.png';
25
- import srcImportstickysectiongroupalternatesyntaxandusingpageheader from './react-demos/sticky-section-group-alternate-syntax-and-using-pageheader.png';
26
- import srcImportstickysectiongroupalternatesyntax from './react-demos/sticky-section-group-alternate-syntax.png';
27
- import srcImportstickysectiongroupusingpageheader from './react-demos/sticky-section-group-using-pageheader.png';
28
- import srcImportstickysectiongroup from './react-demos/sticky-section-group.png';
29
- import srcImporttertiarynav from './react-demos/tertiary-nav.png';
30
- const pageData = {
31
- "id": "Page",
32
- "section": "components",
33
- "subsection": "",
34
- "deprecated": false,
35
- "template": false,
36
- "beta": false,
37
- "demo": false,
38
- "newImplementationLink": false,
39
- "source": "react-demos",
40
- "tabName": null,
41
- "slug": "/components/page/react-demos",
42
- "sourceLink": "https://github.com/patternfly/patternfly-react/blob/main/packages/react-core/src/demos/Page.md",
43
- "relPath": "packages/react-core/src/demos/Page.md",
44
- "fullscreenExamples": [
45
- "Sticky section group",
46
- "Sticky section group (alternate syntax)",
47
- "Sticky section breadcrumb (with breakpoints)",
48
- "Context selector/perspective switcher in sidebar"
49
- ]
50
- };
51
- pageData.liveContext = {
52
- useState,
53
- useRef,
54
- useEffect,
55
- RhUiNotificationFillIcon,
56
- RhUiSettingsFillIcon,
57
- HelpIcon,
58
- RhUiQuestionMarkCircleFillIcon,
59
- imgAvatar,
60
- RhUiMenuBarsIcon,
61
- LightbulbIcon,
62
- RhUiEllipsisVerticalFillIcon,
63
- CubeIcon,
64
- FolderIcon,
65
- CloudIcon,
66
- pfLogo,
67
- pfIconLogo
68
- };
69
- pageData.examples = {
70
- 'Sticky section group': props =>
71
- <Example {...pageData} {...props} thumbnail={srcImportstickysectiongroup} {...{"code":"import { useState } from 'react';\nimport {\n Avatar,\n Brand,\n Breadcrumb,\n BreadcrumbItem,\n Button,\n ButtonVariant,\n Card,\n CardBody,\n Content,\n Divider,\n Dropdown,\n DropdownGroup,\n DropdownItem,\n DropdownList,\n Gallery,\n GalleryItem,\n Masthead,\n MastheadMain,\n MastheadLogo,\n MastheadContent,\n MastheadBrand,\n MastheadToggle,\n MenuToggle,\n MenuToggleElement,\n Nav,\n NavItem,\n NavList,\n NotificationBadge,\n NotificationBadgeVariant,\n Page,\n PageSection,\n PageSidebar,\n PageSidebarBody,\n PageToggleButton,\n SkipToContent,\n Toolbar,\n ToolbarContent,\n ToolbarGroup,\n ToolbarItem\n} from '@patternfly/react-core';\nimport RhUiSettingsFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-settings-fill-icon';\nimport HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';\nimport RhUiQuestionMarkCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-question-mark-circle-fill-icon';\nimport RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill-icon';\nimport imgAvatar from '@patternfly/react-core/src/components/assets/avatarImg.svg';\nimport pfLogo from '@patternfly/react-core/src/demos/assets/PF-HorizontalLogo-Color.svg';\ninterface NavOnSelectProps {\n groupId: number | string;\n itemId: number | string;\n to: string;\n}\n\nexport const PageStickySectionGroup: React.FunctionComponent = () => {\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [isKebabDropdownOpen, setIsKebabDropdownOpen] = useState(false);\n const [isFullKebabDropdownOpen, setIsFullKebabDropdownOpen] = useState(false);\n const [activeItem, setActiveItem] = useState(1);\n\n const onNavSelect = (_event: React.FormEvent<HTMLInputElement>, selectedItem: NavOnSelectProps) => {\n typeof selectedItem.itemId === 'number' && setActiveItem(selectedItem.itemId);\n };\n\n const onDropdownToggle = () => {\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n const onDropdownSelect = () => {\n setIsDropdownOpen(false);\n };\n\n const onKebabDropdownToggle = () => {\n setIsKebabDropdownOpen(!isKebabDropdownOpen);\n };\n\n const onKebabDropdownSelect = () => {\n setIsKebabDropdownOpen(false);\n };\n\n const onFullKebabDropdownToggle = () => {\n setIsFullKebabDropdownOpen(!isFullKebabDropdownOpen);\n };\n\n const onFullKebabDropdownSelect = () => {\n setIsFullKebabDropdownOpen(false);\n };\n\n const dashboardBreadcrumb = (\n <Breadcrumb>\n <BreadcrumbItem>Section home</BreadcrumbItem>\n <BreadcrumbItem to=\"#\">Section title</BreadcrumbItem>\n <BreadcrumbItem to=\"#\">Section title</BreadcrumbItem>\n <BreadcrumbItem to=\"#\" isActive>\n Section landing\n </BreadcrumbItem>\n </Breadcrumb>\n );\n\n const kebabDropdownItems = (\n <>\n <DropdownItem>\n <RhUiSettingsFillIcon /> Settings\n </DropdownItem>\n <DropdownItem>\n <HelpIcon /> Help\n </DropdownItem>\n </>\n );\n const userDropdownItems = (\n <>\n <DropdownItem key=\"group 2 profile\">My profile</DropdownItem>\n <DropdownItem key=\"group 2 user\">User management</DropdownItem>\n <DropdownItem key=\"group 2 logout\">Logout</DropdownItem>\n </>\n );\n\n const headerToolbar = (\n <Toolbar id=\"toolbar\" isStatic>\n <ToolbarContent>\n <ToolbarGroup\n variant=\"action-group-plain\"\n align={{ default: 'alignEnd' }}\n gap={{ default: 'gapNone', md: 'gapMd' }}\n >\n <ToolbarItem>\n <NotificationBadge aria-label=\"Notifications\" variant={NotificationBadgeVariant.read} onClick={() => {}} />\n </ToolbarItem>\n <ToolbarGroup variant=\"action-group-plain\" visibility={{ default: 'hidden', lg: 'visible' }}>\n <ToolbarItem>\n <Button aria-label=\"Settings\" isSettings variant=\"plain\" />\n </ToolbarItem>\n <ToolbarItem>\n <Button aria-label=\"Help\" variant={ButtonVariant.plain} icon={<RhUiQuestionMarkCircleFillIcon />} />\n </ToolbarItem>\n </ToolbarGroup>\n <ToolbarItem visibility={{ default: 'hidden', md: 'visible', lg: 'hidden' }}>\n <Dropdown\n isOpen={isKebabDropdownOpen}\n onSelect={onKebabDropdownSelect}\n onOpenChange={(isOpen: boolean) => setIsKebabDropdownOpen(isOpen)}\n popperProps={{ position: 'right' }}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n onClick={onKebabDropdownToggle}\n isExpanded={isKebabDropdownOpen}\n variant=\"plain\"\n aria-label=\"Settings and help\"\n icon={<RhUiEllipsisVerticalFillIcon />}\n />\n )}\n >\n <DropdownList>{kebabDropdownItems}</DropdownList>\n </Dropdown>\n </ToolbarItem>\n <ToolbarItem visibility={{ md: 'hidden' }}>\n <Dropdown\n isOpen={isFullKebabDropdownOpen}\n onSelect={onFullKebabDropdownSelect}\n onOpenChange={(isOpen: boolean) => setIsFullKebabDropdownOpen(isOpen)}\n popperProps={{ position: 'right' }}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n onClick={onFullKebabDropdownToggle}\n isExpanded={isFullKebabDropdownOpen}\n variant=\"plain\"\n aria-label=\"Toolbar menu\"\n icon={<RhUiEllipsisVerticalFillIcon />}\n />\n )}\n >\n <DropdownGroup key=\"group 2\" aria-label=\"User actions\">\n <DropdownList>{userDropdownItems}</DropdownList>\n </DropdownGroup>\n <Divider />\n <DropdownList>{kebabDropdownItems}</DropdownList>\n </Dropdown>\n </ToolbarItem>\n </ToolbarGroup>\n <ToolbarItem visibility={{ default: 'hidden', md: 'visible' }}>\n <Dropdown\n isOpen={isDropdownOpen}\n onSelect={onDropdownSelect}\n onOpenChange={(isOpen: boolean) => setIsDropdownOpen(isOpen)}\n popperProps={{ position: 'right' }}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n onClick={onDropdownToggle}\n isExpanded={isDropdownOpen}\n icon={<Avatar src={imgAvatar} alt=\"\" size=\"sm\" />}\n >\n Ned Username\n </MenuToggle>\n )}\n >\n <DropdownList>{userDropdownItems}</DropdownList>\n </Dropdown>\n </ToolbarItem>\n </ToolbarContent>\n </Toolbar>\n );\n\n const masthead = (\n <Masthead>\n <MastheadMain>\n <MastheadToggle>\n <PageToggleButton isHamburgerButton aria-label=\"Global navigation\" />\n </MastheadToggle>\n <MastheadBrand>\n <MastheadLogo>\n <Brand src={pfLogo} alt=\"PatternFly\" heights={{ default: '36px' }} />\n </MastheadLogo>\n </MastheadBrand>\n </MastheadMain>\n <MastheadContent>{headerToolbar}</MastheadContent>\n </Masthead>\n );\n\n const pageNav = (\n <Nav onSelect={onNavSelect}>\n <NavList>\n <NavItem itemId={0} isActive={activeItem === 0} to=\"#system-panel\">\n System panel\n </NavItem>\n <NavItem itemId={1} isActive={activeItem === 1} to=\"#policy\">\n Policy\n </NavItem>\n <NavItem itemId={2} isActive={activeItem === 2} to=\"#auth\">\n Authentication\n </NavItem>\n <NavItem itemId={3} isActive={activeItem === 3} to=\"#network\">\n Network services\n </NavItem>\n <NavItem itemId={4} isActive={activeItem === 4} to=\"#server\">\n Server\n </NavItem>\n </NavList>\n </Nav>\n );\n\n const sidebar = (\n <PageSidebar>\n <PageSidebarBody>{pageNav}</PageSidebarBody>\n </PageSidebar>\n );\n\n const mainContainerId = 'main-content';\n\n const handleClick = (event) => {\n event.preventDefault();\n\n const mainContentElement = document.getElementById(mainContainerId);\n if (mainContentElement) {\n mainContentElement.focus();\n }\n };\n\n const pageSkipToContent = (\n <SkipToContent onClick={handleClick} href={`#${mainContainerId}`}>\n Skip to content\n </SkipToContent>\n );\n\n return (\n <Page\n masthead={masthead}\n sidebar={sidebar}\n isManagedSidebar\n skipToContent={pageSkipToContent}\n breadcrumb={dashboardBreadcrumb}\n mainContainerId={mainContainerId}\n isBreadcrumbWidthLimited\n isBreadcrumbGrouped\n additionalGroupedContent={\n <PageSection isWidthLimited aria-labelledby=\"main-title\">\n <Content>\n <h1 id=\"main-title\">Main title</h1>\n <p>This is a full page demo.</p>\n </Content>\n </PageSection>\n }\n groupProps={{\n stickyOnBreakpoint: { default: 'top' }\n }}\n >\n <PageSection aria-label=\"Card gallery\">\n <Gallery hasGutter>\n {Array.from({ length: 50 }).map((_value, index) => (\n <GalleryItem key={index}>\n <Card>\n <CardBody>This is a card</CardBody>\n </Card>\n </GalleryItem>\n ))}\n </Gallery>\n </PageSection>\n </Page>\n );\n};\n","title":"Sticky section group","lang":"ts","isFullscreen":true,"className":""}}>
72
-
73
- </Example>,
74
- 'Sticky section group (alternate syntax)': props =>
75
- <Example {...pageData} {...props} thumbnail={srcImportstickysectiongroupalternatesyntax} {...{"code":"import { useState } from 'react';\nimport {\n Avatar,\n Brand,\n Breadcrumb,\n BreadcrumbItem,\n Button,\n ButtonVariant,\n Card,\n CardBody,\n Content,\n Divider,\n Dropdown,\n DropdownGroup,\n DropdownItem,\n DropdownList,\n Gallery,\n GalleryItem,\n Masthead,\n MastheadMain,\n MastheadLogo,\n MastheadContent,\n MastheadBrand,\n MastheadToggle,\n MenuToggle,\n MenuToggleElement,\n Nav,\n NavItem,\n NavList,\n NotificationBadge,\n NotificationBadgeVariant,\n Page,\n PageBreadcrumb,\n PageGroup,\n PageSection,\n PageSidebar,\n PageSidebarBody,\n PageToggleButton,\n SkipToContent,\n Toolbar,\n ToolbarContent,\n ToolbarGroup,\n ToolbarItem\n} from '@patternfly/react-core';\nimport RhUiSettingsFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-settings-fill-icon';\nimport HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';\nimport RhUiQuestionMarkCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-question-mark-circle-fill-icon';\nimport RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill-icon';\nimport imgAvatar from '@patternfly/react-core/src/components/assets/avatarImg.svg';\nimport pfLogo from '@patternfly/react-core/src/demos/assets/PF-HorizontalLogo-Color.svg';\n\ninterface NavOnSelectProps {\n groupId: number | string;\n itemId: number | string;\n to: string;\n}\n\nexport const PageStickySectionGroupAlternate: React.FunctionComponent = () => {\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [isKebabDropdownOpen, setIsKebabDropdownOpen] = useState(false);\n const [isFullKebabDropdownOpen, setIsFullKebabDropdownOpen] = useState(false);\n const [activeItem, setActiveItem] = useState(1);\n\n const onNavSelect = (_event: React.FormEvent<HTMLInputElement>, selectedItem: NavOnSelectProps) => {\n typeof selectedItem.itemId === 'number' && setActiveItem(selectedItem.itemId);\n };\n\n const onDropdownToggle = () => {\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n const onDropdownSelect = () => {\n setIsDropdownOpen(false);\n };\n\n const onKebabDropdownToggle = () => {\n setIsKebabDropdownOpen(!isKebabDropdownOpen);\n };\n\n const onKebabDropdownSelect = () => {\n setIsKebabDropdownOpen(false);\n };\n\n const onFullKebabDropdownToggle = () => {\n setIsFullKebabDropdownOpen(!isFullKebabDropdownOpen);\n };\n\n const onFullKebabDropdownSelect = () => {\n setIsFullKebabDropdownOpen(false);\n };\n\n const kebabDropdownItems = (\n <>\n <DropdownItem>\n <RhUiSettingsFillIcon /> Settings\n </DropdownItem>\n <DropdownItem>\n <HelpIcon /> Help\n </DropdownItem>\n </>\n );\n const userDropdownItems = (\n <>\n <DropdownItem key=\"group 2 profile\">My profile</DropdownItem>\n <DropdownItem key=\"group 2 user\">User management</DropdownItem>\n <DropdownItem key=\"group 2 logout\">Logout</DropdownItem>\n </>\n );\n\n const headerToolbar = (\n <Toolbar id=\"toolbar\" isStatic>\n <ToolbarContent>\n <ToolbarGroup\n variant=\"action-group-plain\"\n align={{ default: 'alignEnd' }}\n gap={{ default: 'gapNone', md: 'gapMd' }}\n >\n <ToolbarItem>\n <NotificationBadge aria-label=\"Notifications\" variant={NotificationBadgeVariant.read} onClick={() => {}} />\n </ToolbarItem>\n <ToolbarGroup variant=\"action-group-plain\" visibility={{ default: 'hidden', lg: 'visible' }}>\n <ToolbarItem>\n <Button aria-label=\"Settings\" isSettings variant=\"plain\" />\n </ToolbarItem>\n <ToolbarItem>\n <Button aria-label=\"Help\" variant={ButtonVariant.plain} icon={<RhUiQuestionMarkCircleFillIcon />} />\n </ToolbarItem>\n </ToolbarGroup>\n <ToolbarItem visibility={{ default: 'hidden', md: 'visible', lg: 'hidden' }}>\n <Dropdown\n isOpen={isKebabDropdownOpen}\n onSelect={onKebabDropdownSelect}\n onOpenChange={(isOpen: boolean) => setIsKebabDropdownOpen(isOpen)}\n popperProps={{ position: 'right' }}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n onClick={onKebabDropdownToggle}\n isExpanded={isKebabDropdownOpen}\n variant=\"plain\"\n aria-label=\"Settings and help\"\n icon={<RhUiEllipsisVerticalFillIcon />}\n />\n )}\n >\n <DropdownList>{kebabDropdownItems}</DropdownList>\n </Dropdown>\n </ToolbarItem>\n <ToolbarItem visibility={{ md: 'hidden' }}>\n <Dropdown\n isOpen={isFullKebabDropdownOpen}\n onSelect={onFullKebabDropdownSelect}\n onOpenChange={(isOpen: boolean) => setIsFullKebabDropdownOpen(isOpen)}\n popperProps={{ position: 'right' }}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n onClick={onFullKebabDropdownToggle}\n isExpanded={isFullKebabDropdownOpen}\n variant=\"plain\"\n aria-label=\"Toolbar menu\"\n icon={<RhUiEllipsisVerticalFillIcon />}\n />\n )}\n >\n <DropdownGroup key=\"group 2\" aria-label=\"User actions\">\n <DropdownList>{userDropdownItems}</DropdownList>\n </DropdownGroup>\n <Divider />\n <DropdownList>{kebabDropdownItems}</DropdownList>\n </Dropdown>\n </ToolbarItem>\n </ToolbarGroup>\n <ToolbarItem visibility={{ default: 'hidden', md: 'visible' }}>\n <Dropdown\n isOpen={isDropdownOpen}\n onSelect={onDropdownSelect}\n onOpenChange={(isOpen: boolean) => setIsDropdownOpen(isOpen)}\n popperProps={{ position: 'right' }}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n onClick={onDropdownToggle}\n isExpanded={isDropdownOpen}\n icon={<Avatar src={imgAvatar} alt=\"\" size=\"sm\" />}\n >\n Ned Username\n </MenuToggle>\n )}\n >\n <DropdownList>{userDropdownItems}</DropdownList>\n </Dropdown>\n </ToolbarItem>\n </ToolbarContent>\n </Toolbar>\n );\n\n const masthead = (\n <Masthead>\n <MastheadMain>\n <MastheadToggle>\n <PageToggleButton isHamburgerButton aria-label=\"Global navigation\" />\n </MastheadToggle>\n <MastheadBrand>\n <MastheadLogo>\n <Brand src={pfLogo} alt=\"PatternFly\" heights={{ default: '36px' }} />\n </MastheadLogo>\n </MastheadBrand>\n </MastheadMain>\n <MastheadContent>{headerToolbar}</MastheadContent>\n </Masthead>\n );\n\n const pageNav = (\n <Nav onSelect={onNavSelect}>\n <NavList>\n <NavItem itemId={0} isActive={activeItem === 0} to=\"#system-panel\">\n System panel\n </NavItem>\n <NavItem itemId={1} isActive={activeItem === 1} to=\"#policy\">\n Policy\n </NavItem>\n <NavItem itemId={2} isActive={activeItem === 2} to=\"#auth\">\n Authentication\n </NavItem>\n <NavItem itemId={3} isActive={activeItem === 3} to=\"#network\">\n Network services\n </NavItem>\n <NavItem itemId={4} isActive={activeItem === 4} to=\"#server\">\n Server\n </NavItem>\n </NavList>\n </Nav>\n );\n\n const sidebar = (\n <PageSidebar>\n <PageSidebarBody>{pageNav}</PageSidebarBody>\n </PageSidebar>\n );\n\n const mainContainerId = 'main-content';\n\n const handleClick = (event) => {\n event.preventDefault();\n\n const mainContentElement = document.getElementById(mainContainerId);\n if (mainContentElement) {\n mainContentElement.focus();\n }\n };\n\n const pageSkipToContent = (\n <SkipToContent onClick={handleClick} href={`#${mainContainerId}`}>\n Skip to content\n </SkipToContent>\n );\n\n return (\n <Page\n masthead={masthead}\n sidebar={sidebar}\n isManagedSidebar\n skipToContent={pageSkipToContent}\n mainContainerId={mainContainerId}\n >\n <PageGroup stickyOnBreakpoint={{ default: 'top' }}>\n <PageBreadcrumb>\n <Breadcrumb>\n <BreadcrumbItem>Section home</BreadcrumbItem>\n <BreadcrumbItem to=\"#\">Section title</BreadcrumbItem>\n <BreadcrumbItem to=\"#\">Section title</BreadcrumbItem>\n <BreadcrumbItem to=\"#\" isActive>\n Section landing\n </BreadcrumbItem>\n </Breadcrumb>\n </PageBreadcrumb>\n <PageSection isWidthLimited aria-labelledby=\"main-title\">\n <Content>\n <h1 id=\"main-title\">Main title</h1>\n <p>This is a full page demo.</p>\n </Content>\n </PageSection>{' '}\n </PageGroup>\n <PageSection aria-label=\"Card gallery\">\n <Gallery hasGutter>\n {Array.from({ length: 50 }).map((_value, index) => (\n <GalleryItem key={index}>\n <Card>\n <CardBody>This is a card</CardBody>\n </Card>\n </GalleryItem>\n ))}\n </Gallery>\n </PageSection>\n </Page>\n );\n};\n","title":"Sticky section group (alternate syntax)","lang":"ts","isFullscreen":true,"className":""}}>
76
-
77
- </Example>,
78
- 'Sticky section breadcrumb (with breakpoints)': props =>
79
- <Example {...pageData} {...props} thumbnail={srcImportstickysectionbreadcrumbwithbreakpoints} {...{"code":"import { useState } from 'react';\nimport {\n Avatar,\n Brand,\n Breadcrumb,\n BreadcrumbItem,\n Button,\n ButtonVariant,\n Card,\n CardBody,\n Content,\n Divider,\n Dropdown,\n DropdownGroup,\n DropdownItem,\n DropdownList,\n Gallery,\n GalleryItem,\n Masthead,\n MastheadMain,\n MastheadLogo,\n MastheadContent,\n MastheadBrand,\n MastheadToggle,\n MenuToggle,\n MenuToggleElement,\n Nav,\n NavItem,\n NavList,\n NotificationBadge,\n NotificationBadgeVariant,\n Page,\n PageSection,\n PageSidebar,\n PageSidebarBody,\n PageToggleButton,\n SkipToContent,\n Toolbar,\n ToolbarContent,\n ToolbarGroup,\n ToolbarItem\n} from '@patternfly/react-core';\nimport RhUiSettingsFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-settings-fill-icon';\nimport HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';\nimport RhUiQuestionMarkCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-question-mark-circle-fill-icon';\nimport RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill-icon';\nimport imgAvatar from '@patternfly/react-core/src/components/assets/avatarImg.svg';\nimport pfLogo from '@patternfly/react-core/src/demos/assets/PF-HorizontalLogo-Color.svg';\ninterface NavOnSelectProps {\n groupId: number | string;\n itemId: number | string;\n to: string;\n}\n\nexport const PageStickySectionBreadcrumb: React.FunctionComponent = () => {\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [isKebabDropdownOpen, setIsKebabDropdownOpen] = useState(false);\n const [isFullKebabDropdownOpen, setIsFullKebabDropdownOpen] = useState(false);\n const [activeItem, setActiveItem] = useState(1);\n\n const onNavSelect = (_event: React.FormEvent<HTMLInputElement>, selectedItem: NavOnSelectProps) => {\n typeof selectedItem.itemId === 'number' && setActiveItem(selectedItem.itemId);\n };\n\n const onDropdownToggle = () => {\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n const onDropdownSelect = () => {\n setIsDropdownOpen(false);\n };\n\n const onKebabDropdownToggle = () => {\n setIsKebabDropdownOpen(!isKebabDropdownOpen);\n };\n\n const onKebabDropdownSelect = () => {\n setIsKebabDropdownOpen(false);\n };\n\n const onFullKebabDropdownToggle = () => {\n setIsFullKebabDropdownOpen(!isFullKebabDropdownOpen);\n };\n\n const onFullKebabDropdownSelect = () => {\n setIsFullKebabDropdownOpen(false);\n };\n\n const dashboardBreadcrumb = (\n <Breadcrumb>\n <BreadcrumbItem>Section home</BreadcrumbItem>\n <BreadcrumbItem to=\"#\">Section title</BreadcrumbItem>\n <BreadcrumbItem to=\"#\">Section title</BreadcrumbItem>\n <BreadcrumbItem to=\"#\" isActive>\n Section landing\n </BreadcrumbItem>\n </Breadcrumb>\n );\n\n const kebabDropdownItems = (\n <>\n <DropdownItem>\n <RhUiSettingsFillIcon /> Settings\n </DropdownItem>\n <DropdownItem>\n <HelpIcon /> Help\n </DropdownItem>\n </>\n );\n const userDropdownItems = (\n <>\n <DropdownItem key=\"group 2 profile\">My profile</DropdownItem>\n <DropdownItem key=\"group 2 user\">User management</DropdownItem>\n <DropdownItem key=\"group 2 logout\">Logout</DropdownItem>\n </>\n );\n\n const headerToolbar = (\n <Toolbar id=\"toolbar\" isStatic>\n <ToolbarContent>\n <ToolbarGroup\n variant=\"action-group-plain\"\n align={{ default: 'alignEnd' }}\n gap={{ default: 'gapNone', md: 'gapMd' }}\n >\n <ToolbarItem>\n <NotificationBadge aria-label=\"Notifications\" variant={NotificationBadgeVariant.read} onClick={() => {}} />\n </ToolbarItem>\n <ToolbarGroup variant=\"action-group-plain\" visibility={{ default: 'hidden', lg: 'visible' }}>\n <ToolbarItem>\n <Button aria-label=\"Settings\" isSettings variant=\"plain\" />\n </ToolbarItem>\n <ToolbarItem>\n <Button aria-label=\"Help\" variant={ButtonVariant.plain} icon={<RhUiQuestionMarkCircleFillIcon />} />\n </ToolbarItem>\n </ToolbarGroup>\n <ToolbarItem visibility={{ default: 'hidden', md: 'visible', lg: 'hidden' }}>\n <Dropdown\n isOpen={isKebabDropdownOpen}\n onSelect={onKebabDropdownSelect}\n onOpenChange={(isOpen: boolean) => setIsKebabDropdownOpen(isOpen)}\n popperProps={{ position: 'right' }}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n onClick={onKebabDropdownToggle}\n isExpanded={isKebabDropdownOpen}\n variant=\"plain\"\n aria-label=\"Settings and help\"\n icon={<RhUiEllipsisVerticalFillIcon />}\n />\n )}\n >\n <DropdownList>{kebabDropdownItems}</DropdownList>\n </Dropdown>\n </ToolbarItem>\n <ToolbarItem visibility={{ md: 'hidden' }}>\n <Dropdown\n isOpen={isFullKebabDropdownOpen}\n onSelect={onFullKebabDropdownSelect}\n onOpenChange={(isOpen: boolean) => setIsFullKebabDropdownOpen(isOpen)}\n popperProps={{ position: 'right' }}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n onClick={onFullKebabDropdownToggle}\n isExpanded={isFullKebabDropdownOpen}\n variant=\"plain\"\n aria-label=\"Toolbar menu\"\n icon={<RhUiEllipsisVerticalFillIcon />}\n />\n )}\n >\n <DropdownGroup key=\"group 2\" aria-label=\"User actions\">\n <DropdownList>{userDropdownItems}</DropdownList>\n </DropdownGroup>\n <Divider />\n <DropdownList>{kebabDropdownItems}</DropdownList>\n </Dropdown>\n </ToolbarItem>\n </ToolbarGroup>\n <ToolbarItem visibility={{ default: 'hidden', md: 'visible' }}>\n <Dropdown\n isOpen={isDropdownOpen}\n onSelect={onDropdownSelect}\n onOpenChange={(isOpen: boolean) => setIsDropdownOpen(isOpen)}\n popperProps={{ position: 'right' }}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n onClick={onDropdownToggle}\n isExpanded={isDropdownOpen}\n icon={<Avatar src={imgAvatar} alt=\"\" size=\"sm\" />}\n >\n Ned Username\n </MenuToggle>\n )}\n >\n <DropdownList>{userDropdownItems}</DropdownList>\n </Dropdown>\n </ToolbarItem>\n </ToolbarContent>\n </Toolbar>\n );\n\n const masthead = (\n <Masthead>\n <MastheadMain>\n <MastheadToggle>\n <PageToggleButton isHamburgerButton aria-label=\"Global navigation\" />\n </MastheadToggle>\n <MastheadBrand>\n <MastheadLogo>\n <Brand src={pfLogo} alt=\"PatternFly\" heights={{ default: '36px' }} />\n </MastheadLogo>\n </MastheadBrand>\n </MastheadMain>\n <MastheadContent>{headerToolbar}</MastheadContent>\n </Masthead>\n );\n\n const pageNav = (\n <Nav onSelect={onNavSelect}>\n <NavList>\n <NavItem itemId={0} isActive={activeItem === 0} to=\"#system-panel\">\n System panel\n </NavItem>\n <NavItem itemId={1} isActive={activeItem === 1} to=\"#policy\">\n Policy\n </NavItem>\n <NavItem itemId={2} isActive={activeItem === 2} to=\"#auth\">\n Authentication\n </NavItem>\n <NavItem itemId={3} isActive={activeItem === 3} to=\"#network\">\n Network services\n </NavItem>\n <NavItem itemId={4} isActive={activeItem === 4} to=\"#server\">\n Server\n </NavItem>\n </NavList>\n </Nav>\n );\n\n const sidebar = (\n <PageSidebar>\n <PageSidebarBody>{pageNav}</PageSidebarBody>\n </PageSidebar>\n );\n\n const mainContainerId = 'main-content';\n\n const handleClick = (event) => {\n event.preventDefault();\n\n const mainContentElement = document.getElementById(mainContainerId);\n if (mainContentElement) {\n mainContentElement.focus();\n }\n };\n\n const pageSkipToContent = (\n <SkipToContent onClick={handleClick} href={`#${mainContainerId}`}>\n Skip to content\n </SkipToContent>\n );\n\n return (\n <Page\n masthead={masthead}\n sidebar={sidebar}\n isManagedSidebar\n skipToContent={pageSkipToContent}\n breadcrumb={dashboardBreadcrumb}\n mainContainerId={mainContainerId}\n isBreadcrumbWidthLimited\n breadcrumbProps={{\n stickyOnBreakpoint: {\n md: 'top'\n }\n }}\n >\n <PageSection isWidthLimited aria-labelledby=\"main-title\">\n <Content>\n <h1 id=\"main-title\">Main title</h1>\n <p>This is a full page demo.</p>\n </Content>\n </PageSection>\n <PageSection isWidthLimited aria-label=\"Card gallery\">\n <Gallery hasGutter>\n {Array.from({ length: 50 }).map((_value, index) => (\n <GalleryItem key={index}>\n <Card>\n <CardBody>This is a card</CardBody>\n </Card>\n </GalleryItem>\n ))}\n </Gallery>\n </PageSection>\n </Page>\n );\n};\n","title":"Sticky section breadcrumb (with breakpoints)","lang":"ts","isFullscreen":true,"className":""}}>
80
-
81
- </Example>,
82
- 'Context selector/perspective switcher in sidebar': props =>
83
- <Example {...pageData} {...props} thumbnail={srcImportcontextselectorperspectiveswitcherinsidebar} {...{"code":"import { useState } from 'react';\nimport {\n Avatar,\n Brand,\n Breadcrumb,\n BreadcrumbItem,\n Button,\n ButtonVariant,\n Card,\n CardBody,\n Divider,\n Dropdown,\n DropdownGroup,\n DropdownItem,\n DropdownList,\n Gallery,\n GalleryItem,\n Masthead,\n MastheadMain,\n MastheadLogo,\n MastheadContent,\n MastheadBrand,\n MastheadToggle,\n MenuToggle,\n MenuToggleElement,\n Nav,\n NavItem,\n NavList,\n NotificationBadge,\n NotificationBadgeVariant,\n Page,\n PageSection,\n PageSidebar,\n PageSidebarBody,\n PageToggleButton,\n SkipToContent,\n Content,\n Toolbar,\n ToolbarContent,\n ToolbarGroup,\n ToolbarItem\n} from '@patternfly/react-core';\nimport RhUiSettingsFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-settings-fill-icon';\nimport HelpIcon from '@patternfly/react-icons/dist/esm/icons/help-icon';\nimport RhUiQuestionMarkCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-question-mark-circle-fill-icon';\nimport RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill-icon';\nimport imgAvatar from '@patternfly/react-core/src/components/assets/avatarImg.svg';\nimport pfLogo from '@patternfly/react-core/src/demos/assets/PF-HorizontalLogo-Color.svg';\ninterface NavOnSelectProps {\n groupId: number | string;\n itemId: number | string;\n to: string;\n}\n\nexport const PageStickySectionBreadcrumb: React.FunctionComponent = () => {\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [isKebabDropdownOpen, setIsKebabDropdownOpen] = useState(false);\n const [isFullKebabDropdownOpen, setIsFullKebabDropdownOpen] = useState(false);\n const [isContextSelectorOpen, setIsContextSelectorOpen] = useState(false);\n const [activeItem, setActiveItem] = useState(1);\n const [isSidebarOpen, setIsSidebarOpen] = useState(true);\n\n const onSidebarToggle = () => {\n setIsSidebarOpen(!isSidebarOpen);\n };\n\n const onNavSelect = (_event: React.FormEvent<HTMLInputElement>, selectedItem: NavOnSelectProps) => {\n typeof selectedItem.itemId === 'number' && setActiveItem(selectedItem.itemId);\n };\n\n const onDropdownToggle = () => {\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n const onDropdownSelect = () => {\n setIsDropdownOpen(false);\n };\n\n const onKebabDropdownToggle = () => {\n setIsKebabDropdownOpen(!isKebabDropdownOpen);\n };\n\n const onKebabDropdownSelect = () => {\n setIsKebabDropdownOpen(false);\n };\n\n const onFullKebabDropdownToggle = () => {\n setIsFullKebabDropdownOpen(!isFullKebabDropdownOpen);\n };\n\n const onFullKebabDropdownSelect = () => {\n setIsFullKebabDropdownOpen(false);\n };\n\n const onContextSelectorToggle = () => {\n setIsContextSelectorOpen(!isContextSelectorOpen);\n };\n\n const onContextSelectorSelect = () => {\n setIsContextSelectorOpen(false);\n };\n\n const dashboardBreadcrumb = (\n <Breadcrumb>\n <BreadcrumbItem>Section home</BreadcrumbItem>\n <BreadcrumbItem to=\"#\">Section title</BreadcrumbItem>\n <BreadcrumbItem to=\"#\">Section title</BreadcrumbItem>\n <BreadcrumbItem to=\"#\" isActive>\n Section landing\n </BreadcrumbItem>\n </Breadcrumb>\n );\n\n const kebabDropdownItems = (\n <>\n <DropdownItem>\n <RhUiSettingsFillIcon /> Settings\n </DropdownItem>\n <DropdownItem>\n <HelpIcon /> Help\n </DropdownItem>\n </>\n );\n\n const contextSelectorDropdownItems = (\n <>\n <DropdownItem>Developer</DropdownItem>\n <DropdownItem>Admin</DropdownItem>\n </>\n );\n\n const userDropdownItems = (\n <>\n <DropdownItem key=\"group 2 profile\">My profile</DropdownItem>\n <DropdownItem key=\"group 2 user\">User management</DropdownItem>\n <DropdownItem key=\"group 2 logout\">Logout</DropdownItem>\n </>\n );\n\n const headerToolbar = (\n <Toolbar id=\"toolbar\" isStatic>\n <ToolbarContent>\n <ToolbarGroup\n variant=\"action-group-plain\"\n align={{ default: 'alignEnd' }}\n gap={{ default: 'gapNone', md: 'gapMd' }}\n >\n <ToolbarItem>\n <NotificationBadge aria-label=\"Notifications\" variant={NotificationBadgeVariant.read} onClick={() => {}} />\n </ToolbarItem>\n <ToolbarGroup variant=\"action-group-plain\" visibility={{ default: 'hidden', lg: 'visible' }}>\n <ToolbarItem>\n <Button aria-label=\"Settings\" isSettings variant=\"plain\" />\n </ToolbarItem>\n <ToolbarItem>\n <Button aria-label=\"Help\" variant={ButtonVariant.plain} icon={<RhUiQuestionMarkCircleFillIcon />} />\n </ToolbarItem>\n </ToolbarGroup>\n <ToolbarItem visibility={{ default: 'hidden', md: 'visible', lg: 'hidden' }}>\n <Dropdown\n isOpen={isKebabDropdownOpen}\n onSelect={onKebabDropdownSelect}\n onOpenChange={(isOpen: boolean) => setIsKebabDropdownOpen(isOpen)}\n popperProps={{ position: 'right' }}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n onClick={onKebabDropdownToggle}\n isExpanded={isKebabDropdownOpen}\n variant=\"plain\"\n aria-label=\"Settings and help\"\n icon={<RhUiEllipsisVerticalFillIcon />}\n />\n )}\n >\n <DropdownList>{kebabDropdownItems}</DropdownList>\n </Dropdown>\n </ToolbarItem>\n <ToolbarItem visibility={{ md: 'hidden' }}>\n <Dropdown\n isOpen={isFullKebabDropdownOpen}\n onSelect={onFullKebabDropdownSelect}\n onOpenChange={(isOpen: boolean) => setIsFullKebabDropdownOpen(isOpen)}\n popperProps={{ position: 'right' }}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n onClick={onFullKebabDropdownToggle}\n isExpanded={isFullKebabDropdownOpen}\n variant=\"plain\"\n aria-label=\"Toolbar menu\"\n icon={<RhUiEllipsisVerticalFillIcon />}\n />\n )}\n >\n <DropdownGroup key=\"group 2\" aria-label=\"User actions\">\n <DropdownList>{userDropdownItems}</DropdownList>\n </DropdownGroup>\n <Divider />\n <DropdownList>{kebabDropdownItems}</DropdownList>\n </Dropdown>\n </ToolbarItem>\n </ToolbarGroup>\n <ToolbarItem visibility={{ default: 'hidden', md: 'visible' }}>\n <Dropdown\n isOpen={isDropdownOpen}\n onSelect={onDropdownSelect}\n onOpenChange={(isOpen: boolean) => setIsDropdownOpen(isOpen)}\n popperProps={{ position: 'right' }}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n onClick={onDropdownToggle}\n isExpanded={isDropdownOpen}\n icon={<Avatar src={imgAvatar} alt=\"\" size=\"sm\" />}\n >\n Ned Username\n </MenuToggle>\n )}\n >\n <DropdownList>{userDropdownItems}</DropdownList>\n </Dropdown>\n </ToolbarItem>\n </ToolbarContent>\n </Toolbar>\n );\n\n const masthead = (\n <Masthead>\n <MastheadMain>\n <MastheadToggle>\n <PageToggleButton\n isHamburgerButton\n aria-label=\"Global navigation\"\n isSidebarOpen={isSidebarOpen}\n onSidebarToggle={onSidebarToggle}\n />\n </MastheadToggle>\n <MastheadBrand>\n <MastheadLogo>\n <Brand src={pfLogo} alt=\"PatternFly\" heights={{ default: '36px' }} />\n </MastheadLogo>\n </MastheadBrand>\n </MastheadMain>\n <MastheadContent>{headerToolbar}</MastheadContent>\n </Masthead>\n );\n\n const pageNav = (\n <Nav onSelect={onNavSelect}>\n <NavList>\n <NavItem itemId={0} isActive={activeItem === 0} to=\"#system-panel\">\n System panel\n </NavItem>\n <NavItem itemId={1} isActive={activeItem === 1} to=\"#policy\">\n Policy\n </NavItem>\n <NavItem itemId={2} isActive={activeItem === 2} to=\"#auth\">\n Authentication\n </NavItem>\n <NavItem itemId={3} isActive={activeItem === 3} to=\"#network\">\n Network services\n </NavItem>\n <NavItem itemId={4} isActive={activeItem === 4} to=\"#server\">\n Server\n </NavItem>\n </NavList>\n </Nav>\n );\n\n const pageContextSelector = (\n <Dropdown\n isOpen={isContextSelectorOpen}\n onSelect={onContextSelectorSelect}\n onOpenChange={(isOpen: boolean) => setIsContextSelectorOpen(isOpen)}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n tabIndex={isSidebarOpen ? undefined : -1}\n ref={toggleRef}\n onClick={onContextSelectorToggle}\n isExpanded={isContextSelectorOpen}\n isFullWidth\n >\n Developer\n </MenuToggle>\n )}\n >\n <DropdownList>{contextSelectorDropdownItems}</DropdownList>\n </Dropdown>\n );\n\n const sidebar = (\n <PageSidebar isSidebarOpen={isSidebarOpen}>\n <PageSidebarBody isContextSelector>{pageContextSelector}</PageSidebarBody>\n <PageSidebarBody>{pageNav}</PageSidebarBody>\n </PageSidebar>\n );\n\n const mainContainerId = 'main-content';\n\n const handleClick = (event) => {\n event.preventDefault();\n\n const mainContentElement = document.getElementById(mainContainerId);\n if (mainContentElement) {\n mainContentElement.focus();\n }\n };\n\n const pageSkipToContent = (\n <SkipToContent onClick={handleClick} href={`#${mainContainerId}`}>\n Skip to content\n </SkipToContent>\n );\n\n return (\n <Page\n masthead={masthead}\n sidebar={sidebar}\n skipToContent={pageSkipToContent}\n breadcrumb={dashboardBreadcrumb}\n mainContainerId={mainContainerId}\n isBreadcrumbWidthLimited\n >\n <PageSection isWidthLimited aria-labelledby=\"main-title\">\n <Content>\n <Content component=\"h1\" id=\"main-title\">\n Main title\n </Content>\n <Content component=\"p\">This is a full page demo.</Content>\n </Content>\n </PageSection>\n <PageSection isWidthLimited aria-label=\"Card gallery\">\n <Gallery hasGutter>\n {Array.from({ length: 50 }).map((_value, index) => (\n <GalleryItem key={index}>\n <Card>\n <CardBody>This is a card</CardBody>\n </Card>\n </GalleryItem>\n ))}\n </Gallery>\n </PageSection>\n </Page>\n );\n};\n","title":"Context selector/perspective switcher in sidebar","lang":"ts","isFullscreen":true,"className":""}}>
84
-
85
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
86
- {`When adding a context selector/perspective switcher in a `}
87
-
88
- <code {...{"className":"ws-code "}}>
89
- {`PageSidebar`}
90
- </code>
91
- {`, you must manually control the open state of the `}
92
-
93
- <code {...{"className":"ws-code "}}>
94
- {`PageSidebar`}
95
- </code>
96
- {` as well as ensure any interactive menu toggles or buttons cannot receive focus. This demo adds a `}
97
-
98
- <code {...{"className":"ws-code "}}>
99
- {`tabIndex`}
100
- </code>
101
- {` of `}
102
-
103
- <code {...{"className":"ws-code "}}>
104
- {`-1`}
105
- </code>
106
- {` when the sidebar is not expanded to achieve this.`}
107
- </p>
108
- </Example>
109
- };
110
-
111
- const Component = () => (
112
- <React.Fragment>
113
- <ul {...{"className":"pf-v6-c-content--ul pf-m-editorial ws-ul "}}>
114
- <li {...{"className":"pf-v6-c-content--li pf-m-editorial ws-li "}}>
115
- {`All examples set the `}
116
- <code {...{"className":"ws-code "}}>
117
- {`isManagedSidebar`}
118
- </code>
119
- {` prop on the Page component to have the sidebar automatically close for smaller screen widths. You can also manually control this behavior by not adding the `}
120
- <code {...{"className":"ws-code "}}>
121
- {`isManagedSidebar`}
122
- </code>
123
- {` prop and instead:`}
124
- <ol {...{"className":"pf-v6-c-content--ol pf-m-editorial ws-ol "}}>
125
- <li {...{"className":"pf-v6-c-content--li pf-m-editorial ws-li "}}>
126
- {`Add an onNavToggle callback to PageHeader`}
127
- </li>
128
- <li {...{"className":"pf-v6-c-content--li pf-m-editorial ws-li "}}>
129
- {`Pass a boolean into the isNavOpen prop to PageSidebar`}
130
- </li>
131
- </ol>
132
- </li>
133
- </ul>
134
- <AutoLinkHeader {...{"id":"layouts","headingLevel":"h2","className":"ws-title ws-h2"}}>
135
- {`Layouts`}
136
- </AutoLinkHeader>
137
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
138
- {`This demonstrates a variety of navigation patterns in the context of a full page layout. These can be used as a basis for choosing the most appropriate page template for your application.`}
139
- </p>
140
- {React.createElement(pageData.examples["Sticky section group"])}
141
- {React.createElement(pageData.examples["Sticky section group (alternate syntax)"])}
142
- {React.createElement(pageData.examples["Sticky section breadcrumb (with breakpoints)"])}
143
- {React.createElement(pageData.examples["Context selector/perspective switcher in sidebar"])}
144
- </React.Fragment>
145
- );
146
- Component.displayName = 'ComponentsPageReactDemosDocs';
147
- Component.pageData = pageData;
148
-
149
- export default Component;