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

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 +4 -0
  2. package/package.json +12 -13
  3. package/patternfly-docs/generated/components/about-modal/react.js +149 -0
  4. package/patternfly-docs/generated/components/accordion/react.js +262 -0
  5. package/patternfly-docs/generated/components/action-list/react.js +144 -0
  6. package/patternfly-docs/generated/components/alert/react-demos.js +56 -0
  7. package/patternfly-docs/generated/components/alert/react.js +1433 -0
  8. package/patternfly-docs/generated/components/avatar/react.js +166 -0
  9. package/patternfly-docs/generated/components/back-to-top/react-demos.js +60 -0
  10. package/patternfly-docs/generated/components/back-to-top/react.js +77 -0
  11. package/patternfly-docs/generated/components/backdrop/react.js +64 -0
  12. package/patternfly-docs/generated/components/background-image/react.js +62 -0
  13. package/patternfly-docs/generated/components/badge/react.js +97 -0
  14. package/patternfly-docs/generated/components/banner/react-demos.js +57 -0
  15. package/patternfly-docs/generated/components/banner/react.js +148 -0
  16. package/patternfly-docs/generated/components/brand/react.js +142 -0
  17. package/patternfly-docs/generated/components/breadcrumb/react.js +206 -0
  18. package/patternfly-docs/generated/components/button/react-demos.js +57 -0
  19. package/patternfly-docs/generated/components/button/react.js +826 -0
  20. package/patternfly-docs/generated/components/card/react-demos.js +201 -0
  21. package/patternfly-docs/generated/components/card/react.js +1015 -0
  22. package/patternfly-docs/generated/components/charts/area-chart/-Victory.js +1350 -0
  23. package/patternfly-docs/generated/components/charts/bar-chart/-Victory.js +1334 -0
  24. package/patternfly-docs/generated/components/charts/box-plot-chart/-Victory.js +1282 -0
  25. package/patternfly-docs/generated/components/charts/bullet-chart/-Victory.js +848 -0
  26. package/patternfly-docs/generated/components/charts/colors-for-charts/-Victory.js +192 -0
  27. package/patternfly-docs/generated/components/charts/donut-chart/-Victory.js +426 -0
  28. package/patternfly-docs/generated/components/charts/donut-utilization-chart/-Victory.js +804 -0
  29. package/patternfly-docs/generated/components/charts/legends/-Victory.js +3230 -0
  30. package/patternfly-docs/generated/components/charts/line-chart/-Victory.js +1178 -0
  31. package/patternfly-docs/generated/components/charts/line-chart/ECharts.js +525 -0
  32. package/patternfly-docs/generated/components/charts/patterns/-Victory.js +3382 -0
  33. package/patternfly-docs/generated/components/charts/pie-chart/-Victory.js +377 -0
  34. package/patternfly-docs/generated/components/charts/resize-observer/-Victory.js +2475 -0
  35. package/patternfly-docs/generated/components/charts/sankey-chart/ECharts.js +538 -0
  36. package/patternfly-docs/generated/components/charts/scatter-chart/-Victory.js +1551 -0
  37. package/patternfly-docs/generated/components/charts/skeletons/-Victory.js +4115 -0
  38. package/patternfly-docs/generated/components/charts/sparkline-chart/-Victory.js +955 -0
  39. package/patternfly-docs/generated/components/charts/stack-chart/-Victory.js +1173 -0
  40. package/patternfly-docs/generated/components/charts/threshold-chart/-Victory.js +1166 -0
  41. package/patternfly-docs/generated/components/charts/tooltips/-Victory.js +413 -0
  42. package/patternfly-docs/generated/components/chip/react-deprecated.js +323 -0
  43. package/patternfly-docs/generated/components/clipboard-copy/react.js +373 -0
  44. package/patternfly-docs/generated/components/code-block/react.js +148 -0
  45. package/patternfly-docs/generated/components/code-editor/react.js +659 -0
  46. package/patternfly-docs/generated/components/compass/react-demos.js +147 -0
  47. package/patternfly-docs/generated/components/compass/react.js +440 -0
  48. package/patternfly-docs/generated/components/content/react.js +248 -0
  49. package/patternfly-docs/generated/components/data-list/react-demos.js +90 -0
  50. package/patternfly-docs/generated/components/data-list/react.js +709 -0
  51. package/patternfly-docs/generated/components/date-and-time/calendar-month/react.js +283 -0
  52. package/patternfly-docs/generated/components/date-and-time/date-and-time-picker/react-demos.js +64 -0
  53. package/patternfly-docs/generated/components/date-and-time/date-picker/react-demos.js +83 -0
  54. package/patternfly-docs/generated/components/date-and-time/date-picker/react.js +395 -0
  55. package/patternfly-docs/generated/components/date-and-time/time-picker/react.js +241 -0
  56. package/patternfly-docs/generated/components/description-list/react-demos.js +58 -0
  57. package/patternfly-docs/generated/components/description-list/react.js +743 -0
  58. package/patternfly-docs/generated/components/divider/react.js +126 -0
  59. package/patternfly-docs/generated/components/drag-and-drop/react-demos.js +351 -0
  60. package/patternfly-docs/generated/components/drag-and-drop/react-deprecated.js +184 -0
  61. package/patternfly-docs/generated/components/drag-and-drop/react.js +137 -0
  62. package/patternfly-docs/generated/components/drawer/react.js +598 -0
  63. package/patternfly-docs/generated/components/dual-list-selector/react-deprecated.js +772 -0
  64. package/patternfly-docs/generated/components/dual-list-selector/react.js +594 -0
  65. package/patternfly-docs/generated/components/empty-state/react.js +199 -0
  66. package/patternfly-docs/generated/components/expandable-section/react-demos.js +65 -0
  67. package/patternfly-docs/generated/components/expandable-section/react.js +408 -0
  68. package/patternfly-docs/generated/components/file-upload/multiple-file-upload/react-demos.js +52 -0
  69. package/patternfly-docs/generated/components/file-upload/multiple-file-upload/react.js +398 -0
  70. package/patternfly-docs/generated/components/file-upload/simple-file-upload/react.js +749 -0
  71. package/patternfly-docs/generated/components/forms/checkbox/react.js +222 -0
  72. package/patternfly-docs/generated/components/forms/form/react.js +1106 -0
  73. package/patternfly-docs/generated/components/forms/form-select/react.js +208 -0
  74. package/patternfly-docs/generated/components/forms/radio/react.js +212 -0
  75. package/patternfly-docs/generated/components/forms/text-area/react.js +160 -0
  76. package/patternfly-docs/generated/components/forms/text-input/react.js +216 -0
  77. package/patternfly-docs/generated/components/helper-text/react-demos.js +180 -0
  78. package/patternfly-docs/generated/components/helper-text/react.js +164 -0
  79. package/patternfly-docs/generated/components/hero/react.js +88 -0
  80. package/patternfly-docs/generated/components/hint/react.js +169 -0
  81. package/patternfly-docs/generated/components/icon/react.js +215 -0
  82. package/patternfly-docs/generated/components/input-group/react.js +182 -0
  83. package/patternfly-docs/generated/components/jump-links/react-demos.js +154 -0
  84. package/patternfly-docs/generated/components/jump-links/react.js +212 -0
  85. package/patternfly-docs/generated/components/label/react-demos.js +57 -0
  86. package/patternfly-docs/generated/components/label/react.js +417 -0
  87. package/patternfly-docs/generated/components/list/react.js +175 -0
  88. package/patternfly-docs/generated/components/login-page/react.js +587 -0
  89. package/patternfly-docs/generated/components/masthead/react-demos.js +79 -0
  90. package/patternfly-docs/generated/components/masthead/react.js +291 -0
  91. package/patternfly-docs/generated/components/menus/application-launcher/react-demos.js +769 -0
  92. package/patternfly-docs/generated/components/menus/context-selector/react-demos.js +665 -0
  93. package/patternfly-docs/generated/components/menus/custom-menus/react-demos.js +187 -0
  94. package/patternfly-docs/generated/components/menus/dropdown/react-templates.js +163 -0
  95. package/patternfly-docs/generated/components/menus/dropdown/react.js +998 -0
  96. package/patternfly-docs/generated/components/menus/menu/react.js +1540 -0
  97. package/patternfly-docs/generated/components/menus/menu-toggle/react.js +747 -0
  98. package/patternfly-docs/generated/components/menus/options-menu/react-demos.js +508 -0
  99. package/patternfly-docs/generated/components/menus/select/react-templates.js +257 -0
  100. package/patternfly-docs/generated/components/menus/select/react.js +998 -0
  101. package/patternfly-docs/generated/components/modal/react-deprecated.js +554 -0
  102. package/patternfly-docs/generated/components/modal/react.js +597 -0
  103. package/patternfly-docs/generated/components/navigation/react-demos.js +356 -0
  104. package/patternfly-docs/generated/components/navigation/react.js +409 -0
  105. package/patternfly-docs/generated/components/notification-badge/react.js +196 -0
  106. package/patternfly-docs/generated/components/notification-drawer/react-demos.js +107 -0
  107. package/patternfly-docs/generated/components/notification-drawer/react.js +394 -0
  108. package/patternfly-docs/generated/components/number-input/react.js +210 -0
  109. package/patternfly-docs/generated/components/overflow-menu/react.js +274 -0
  110. package/patternfly-docs/generated/components/page/react-demos.js +149 -0
  111. package/patternfly-docs/generated/components/page/react.js +1352 -0
  112. package/patternfly-docs/generated/components/pagination/react.js +492 -0
  113. package/patternfly-docs/generated/components/panel/react.js +236 -0
  114. package/patternfly-docs/generated/components/popover/react.js +390 -0
  115. package/patternfly-docs/generated/components/progress/react-demos.js +59 -0
  116. package/patternfly-docs/generated/components/progress/react.js +283 -0
  117. package/patternfly-docs/generated/components/progress-stepper/react-demos.js +45 -0
  118. package/patternfly-docs/generated/components/progress-stepper/react.js +219 -0
  119. package/patternfly-docs/generated/components/search-input/react-demos.js +113 -0
  120. package/patternfly-docs/generated/components/search-input/react.js +263 -0
  121. package/patternfly-docs/generated/components/sidebar/react.js +236 -0
  122. package/patternfly-docs/generated/components/simple-list/react.js +200 -0
  123. package/patternfly-docs/generated/components/skeleton/react-demos.js +44 -0
  124. package/patternfly-docs/generated/components/skeleton/react.js +122 -0
  125. package/patternfly-docs/generated/components/skip-to-content/react.js +73 -0
  126. package/patternfly-docs/generated/components/slider/react.js +309 -0
  127. package/patternfly-docs/generated/components/spinner/react.js +111 -0
  128. package/patternfly-docs/generated/components/switch/react.js +163 -0
  129. package/patternfly-docs/generated/components/table/react-demos.js +355 -0
  130. package/patternfly-docs/generated/components/table/react-deprecated.js +1350 -0
  131. package/patternfly-docs/generated/components/table/react.js +3241 -0
  132. package/patternfly-docs/generated/components/tabs/react-demos.js +108 -0
  133. package/patternfly-docs/generated/components/tabs/react.js +1359 -0
  134. package/patternfly-docs/generated/components/text-input-group/react-demos.js +152 -0
  135. package/patternfly-docs/generated/components/text-input-group/react.js +278 -0
  136. package/patternfly-docs/generated/components/tile/react-deprecated.js +242 -0
  137. package/patternfly-docs/generated/components/timestamp/react.js +283 -0
  138. package/patternfly-docs/generated/components/title/react.js +94 -0
  139. package/patternfly-docs/generated/components/toggle-group/react.js +299 -0
  140. package/patternfly-docs/generated/components/toolbar/react-demos.js +66 -0
  141. package/patternfly-docs/generated/components/toolbar/react.js +932 -0
  142. package/patternfly-docs/generated/components/tooltip/react.js +241 -0
  143. package/patternfly-docs/generated/components/tree-view/react.js +429 -0
  144. package/patternfly-docs/generated/components/truncate/react.js +211 -0
  145. package/patternfly-docs/generated/components/wizard/react-demos.js +87 -0
  146. package/patternfly-docs/generated/components/wizard/react-deprecated.js +788 -0
  147. package/patternfly-docs/generated/components/wizard/react.js +986 -0
  148. package/patternfly-docs/generated/developer-guides/open-ui-automation/react.js +285 -0
  149. package/patternfly-docs/generated/foundations-and-styles/layouts/bullseye/react.js +70 -0
  150. package/patternfly-docs/generated/foundations-and-styles/layouts/flex/react.js +506 -0
  151. package/patternfly-docs/generated/foundations-and-styles/layouts/gallery/react.js +94 -0
  152. package/patternfly-docs/generated/foundations-and-styles/layouts/grid/react.js +272 -0
  153. package/patternfly-docs/generated/foundations-and-styles/layouts/level/react.js +87 -0
  154. package/patternfly-docs/generated/foundations-and-styles/layouts/split/react.js +124 -0
  155. package/patternfly-docs/generated/foundations-and-styles/layouts/stack/react.js +112 -0
  156. package/patternfly-docs/generated/index.js +1769 -0
  157. package/patternfly-docs/generated/patterns/card-view/react-demos.js +78 -0
  158. package/patternfly-docs/generated/patterns/filters/react-demos.js +141 -0
  159. package/patternfly-docs/generated/patterns/password-generator/react-demos.js +51 -0
  160. package/patternfly-docs/generated/patterns/password-strength/react-demos.js +61 -0
  161. package/patternfly-docs/generated/patterns/primary-detail/react-demos.js +124 -0
  162. package/patternfly-docs/generated/patterns/right-to-left/react-demos.js +81 -0
  163. package/LICENSE +0 -21
@@ -0,0 +1,144 @@
1
+ import React from 'react';
2
+ import { AutoLinkHeader, Example, Link as PatternflyThemeLink } from '@patternfly/documentation-framework/components';
3
+ import { Fragment, useState } from 'react';
4
+ import RhMicronsCloseIcon from '@patternfly/react-icons/dist/js/icons/rh-microns-close-icon';
5
+ import CheckIcon from '@patternfly/react-icons/dist/js/icons/check-icon';
6
+ import RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill-icon';
7
+ const pageData = {
8
+ "id": "Action list",
9
+ "section": "components",
10
+ "subsection": "",
11
+ "deprecated": false,
12
+ "template": false,
13
+ "beta": false,
14
+ "demo": false,
15
+ "newImplementationLink": false,
16
+ "source": "react",
17
+ "tabName": null,
18
+ "slug": "/components/action-list/react",
19
+ "sourceLink": "https://github.com/patternfly/patternfly-react/blob/main/packages/react-core/src/components/ActionList/examples/ActionList.md",
20
+ "relPath": "packages/react-core/src/components/ActionList/examples/ActionList.md",
21
+ "propComponents": [
22
+ {
23
+ "name": "ActionList",
24
+ "description": "",
25
+ "props": [
26
+ {
27
+ "name": "children",
28
+ "type": "React.ReactNode",
29
+ "description": "Children of the action list"
30
+ },
31
+ {
32
+ "name": "className",
33
+ "type": "string",
34
+ "description": "Additional classes added to the action list"
35
+ },
36
+ {
37
+ "name": "isIconList",
38
+ "type": "boolean",
39
+ "description": "Flag indicating the action list contains multiple icons and item padding should be removed"
40
+ },
41
+ {
42
+ "name": "isVertical",
43
+ "type": "boolean",
44
+ "description": "Whether the layout of children is vertical or horizontal.",
45
+ "defaultValue": "false",
46
+ "beta": true
47
+ }
48
+ ]
49
+ },
50
+ {
51
+ "name": "ActionListGroup",
52
+ "description": "",
53
+ "props": [
54
+ {
55
+ "name": "children",
56
+ "type": "React.ReactNode",
57
+ "description": "Children of the action list group"
58
+ },
59
+ {
60
+ "name": "className",
61
+ "type": "string",
62
+ "description": "Additional classes added to the action list group"
63
+ },
64
+ {
65
+ "name": "isIconGroup",
66
+ "type": "boolean",
67
+ "description": "Flag indicating the action list group contains multiple icons and item padding should be removed"
68
+ }
69
+ ]
70
+ },
71
+ {
72
+ "name": "ActionListItem",
73
+ "description": "",
74
+ "props": [
75
+ {
76
+ "name": "children",
77
+ "type": "React.ReactNode",
78
+ "description": "Children of the action list item"
79
+ },
80
+ {
81
+ "name": "className",
82
+ "type": "string",
83
+ "description": "Additional classes added to the action list item"
84
+ }
85
+ ]
86
+ }
87
+ ],
88
+ "cssPrefix": [
89
+ "pf-v6-c-action-list"
90
+ ],
91
+ "examples": [
92
+ "Action list single group",
93
+ "Action list with icons",
94
+ "Action list multiple groups",
95
+ "Action list with cancel button",
96
+ "Vertical action list"
97
+ ]
98
+ };
99
+ pageData.liveContext = {
100
+ Fragment,
101
+ useState,
102
+ RhMicronsCloseIcon,
103
+ CheckIcon,
104
+ RhUiEllipsisVerticalFillIcon
105
+ };
106
+ pageData.examples = {
107
+ 'Action list single group': props =>
108
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useState } from 'react';\nimport {\n ActionList,\n ActionListGroup,\n ActionListItem,\n Button,\n Dropdown,\n DropdownList,\n DropdownItem,\n MenuToggle,\n MenuToggleElement,\n Divider\n} from '@patternfly/react-core';\nimport RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill-icon';\n\nexport const ActionListSingleGroup: React.FunctionComponent = () => {\n const [isOpen, setIsOpen] = useState(false);\n\n const onToggle = () => {\n setIsOpen(!isOpen);\n };\n\n const onSelect = (event: React.MouseEvent<Element, MouseEvent> | undefined) => {\n event?.stopPropagation();\n setIsOpen(!isOpen);\n };\n\n const dropdownItems = (\n <>\n <DropdownItem to=\"#\" key=\"link\">\n Link\n </DropdownItem>\n <DropdownItem key=\"action\">Action</DropdownItem>\n <DropdownItem to=\"#\" key=\"disabled link\" isDisabled>\n Disabled Link\n </DropdownItem>\n <DropdownItem key=\"disabled action\" isDisabled>\n Disabled Action\n </DropdownItem>\n <Divider component=\"li\" key=\"separator\" />\n <DropdownItem to=\"#\" key=\"separated link\">\n Separated Link\n </DropdownItem>\n <DropdownItem key=\"separated action\">Separated Action</DropdownItem>\n </>\n );\n return (\n <Fragment>\n <ActionList>\n <ActionListGroup>\n <ActionListItem>\n <Button variant=\"primary\" id=\"single-group-next-button\">\n Next\n </Button>\n </ActionListItem>\n <ActionListItem>\n <Button variant=\"secondary\" id=\"single-group-back-button\">\n Back\n </Button>\n </ActionListItem>\n </ActionListGroup>\n </ActionList>\n <br />\n With kebab\n <ActionList>\n <ActionListGroup>\n <ActionListItem>\n <Button variant=\"primary\" id=\"single-group-next-button2\">\n Next\n </Button>\n </ActionListItem>\n <ActionListItem>\n <Button variant=\"secondary\" id=\"single-group-back-button2\">\n Back\n </Button>\n </ActionListItem>\n <ActionListItem>\n <Dropdown\n onSelect={onSelect}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n onClick={onToggle}\n variant=\"plain\"\n isExpanded={isOpen}\n aria-label=\"Action list single group kebab\"\n icon={<RhUiEllipsisVerticalFillIcon />}\n />\n )}\n isOpen={isOpen}\n onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)}\n >\n <DropdownList>{dropdownItems}</DropdownList>\n </Dropdown>\n </ActionListItem>\n </ActionListGroup>\n </ActionList>\n </Fragment>\n );\n};\n","title":"Action list single group","lang":"ts","className":""}}>
109
+
110
+ </Example>,
111
+ 'Action list with icons': props =>
112
+ <Example {...pageData} {...props} {...{"code":"import { ActionList, ActionListGroup, ActionListItem, Button } from '@patternfly/react-core';\nimport RhMicronsCloseIcon from '@patternfly/react-icons/dist/esm/icons/rh-microns-close-icon';\nimport CheckIcon from '@patternfly/react-icons/dist/esm/icons/check-icon';\n\nexport const ActionListWithIcons: React.FunctionComponent = () => (\n <>\n <h4>With list icons wrapper</h4>\n <ActionList isIconList>\n <ActionListItem>\n <Button\n variant=\"plain\"\n id=\"with-icons-times-button\"\n aria-label=\"times icon button\"\n icon={<RhMicronsCloseIcon />}\n />\n </ActionListItem>\n <ActionListItem>\n <Button variant=\"plain\" id=\"with-icons-check-button\" aria-label=\"check icon button\" icon={<CheckIcon />} />\n </ActionListItem>\n </ActionList>\n <br />\n <h4>With group icons wrapper</h4>\n <ActionList>\n <ActionListGroup isIconGroup>\n <ActionListItem>\n <Button\n variant=\"plain\"\n id=\"with-icons-list-times-button\"\n aria-label=\"times icon button\"\n icon={<RhMicronsCloseIcon />}\n />\n </ActionListItem>\n <ActionListItem>\n <Button\n variant=\"plain\"\n id=\"with-icons-list-check-button\"\n aria-label=\"check icon button\"\n icon={<CheckIcon />}\n />\n </ActionListItem>\n </ActionListGroup>\n <ActionListGroup isIconGroup>\n <ActionListItem>\n <Button\n variant=\"plain\"\n id=\"with-icons-group-times-button\"\n aria-label=\"times icon button\"\n icon={<RhMicronsCloseIcon />}\n />\n </ActionListItem>\n <ActionListItem>\n <Button\n variant=\"plain\"\n id=\"with-icons-group-check-button\"\n aria-label=\"check icon button\"\n icon={<CheckIcon />}\n />\n </ActionListItem>\n </ActionListGroup>\n </ActionList>\n </>\n);\n","title":"Action list with icons","lang":"ts","className":""}}>
113
+
114
+ </Example>,
115
+ 'Action list multiple groups': props =>
116
+ <Example {...pageData} {...props} {...{"code":"import { ActionList, ActionListGroup, ActionListItem, Button } from '@patternfly/react-core';\n\nexport const ActionListMultipleGroups: React.FunctionComponent = () => (\n <ActionList>\n <ActionListGroup>\n <ActionListItem>\n <Button variant=\"primary\" id=\"multi-group-next-button\">\n Next\n </Button>\n </ActionListItem>\n <ActionListItem>\n <Button variant=\"secondary\" id=\"multi-group-back-button\">\n Back\n </Button>\n </ActionListItem>\n </ActionListGroup>\n <ActionListGroup>\n <ActionListItem>\n <Button variant=\"primary\" id=\"multi-group-submit-button\">\n Submit\n </Button>\n </ActionListItem>\n <ActionListItem>\n <Button variant=\"link\" id=\"multi-group-cancel-button\">\n Cancel\n </Button>\n </ActionListItem>\n </ActionListGroup>\n </ActionList>\n);\n","title":"Action list multiple groups","lang":"ts","className":""}}>
117
+
118
+ </Example>,
119
+ 'Action list with cancel button': props =>
120
+ <Example {...pageData} {...props} {...{"code":"import { Fragment } from 'react';\nimport { ActionList, ActionListGroup, ActionListItem, Button } from '@patternfly/react-core';\n\nexport const ActionListWithCancelButton: React.FunctionComponent = () => (\n <Fragment>\n In modals, forms, data lists\n <ActionList>\n <ActionListGroup>\n <ActionListItem>\n <Button variant=\"primary\" id=\"with-cancel-save-button\">\n Save\n </Button>\n </ActionListItem>\n <ActionListItem>\n <Button variant=\"link\" id=\"with-cancel-cancel-button\">\n Cancel\n </Button>\n </ActionListItem>\n </ActionListGroup>\n </ActionList>\n <br />\n In wizards\n <ActionList>\n <ActionListGroup>\n <ActionListItem>\n <Button variant=\"primary\" id=\"with-cancel-next-button\">\n Next\n </Button>\n </ActionListItem>\n <ActionListItem>\n <Button variant=\"secondary\" id=\"with-cancel-back-button\">\n Back\n </Button>\n </ActionListItem>\n </ActionListGroup>\n <ActionListGroup>\n <ActionListItem>\n <Button variant=\"link\" id=\"with-cancel-cancel-button2\">\n Cancel\n </Button>\n </ActionListItem>\n </ActionListGroup>\n </ActionList>\n </Fragment>\n);\n","title":"Action list with cancel button","lang":"ts","className":""}}>
121
+
122
+ </Example>,
123
+ 'Vertical action list': props =>
124
+ <Example {...pageData} {...props} {...{"code":"import { ActionList, ActionListGroup, ActionListItem, Button } from '@patternfly/react-core';\nimport CheckIcon from '@patternfly/react-icons/dist/esm/icons/check-icon';\nimport RhMicronsCloseIcon from '@patternfly/react-icons/dist/esm/icons/rh-microns-close-icon';\n\nexport const ActionListVertical: React.FunctionComponent = () => (\n <>\n <h4>Multiple groups</h4>\n <ActionList isVertical>\n <ActionListGroup>\n <ActionListItem>\n <Button>Next</Button>\n </ActionListItem>\n <ActionListItem>\n <Button variant=\"secondary\">Back</Button>\n </ActionListItem>\n </ActionListGroup>\n <ActionListGroup>\n <ActionListItem>\n <Button>Submit</Button>\n </ActionListItem>\n <ActionListItem>\n <Button variant=\"link\">Cancel</Button>\n </ActionListItem>\n </ActionListGroup>\n </ActionList>\n <h4>Icons, in two groups</h4>\n <ActionList isVertical>\n <ActionListGroup>\n <ActionListItem>\n <Button aria-label=\"Close vertical action list group 1\" variant=\"plain\" icon={<RhMicronsCloseIcon />} />\n </ActionListItem>\n <ActionListItem>\n <Button aria-label=\"Toggle vertical action list example group 1\" variant=\"plain\" icon={<CheckIcon />} />\n </ActionListItem>\n </ActionListGroup>\n <ActionListGroup>\n <ActionListItem>\n <Button aria-label=\"Close vertical action list group 2\" variant=\"plain\" icon={<RhMicronsCloseIcon />} />\n </ActionListItem>\n <ActionListItem>\n <Button aria-label=\"Toggle vertical action list example group 2\" variant=\"plain\" icon={<CheckIcon />} />\n </ActionListItem>\n </ActionListGroup>\n </ActionList>\n </>\n);\n","title":"Vertical action list","lang":"ts","isBeta":true,"className":""}}>
125
+
126
+ </Example>
127
+ };
128
+
129
+ const Component = () => (
130
+ <React.Fragment>
131
+ <AutoLinkHeader {...{"id":"examples","headingLevel":"h2","className":"ws-title ws-h2"}}>
132
+ {`Examples`}
133
+ </AutoLinkHeader>
134
+ {React.createElement(pageData.examples["Action list single group"])}
135
+ {React.createElement(pageData.examples["Action list with icons"])}
136
+ {React.createElement(pageData.examples["Action list multiple groups"])}
137
+ {React.createElement(pageData.examples["Action list with cancel button"])}
138
+ {React.createElement(pageData.examples["Vertical action list"])}
139
+ </React.Fragment>
140
+ );
141
+ Component.displayName = 'ComponentsActionListReactDocs';
142
+ Component.pageData = pageData;
143
+
144
+ export default Component;
@@ -0,0 +1,56 @@
1
+ import React from 'react';
2
+ import { AutoLinkHeader, Example, Link as PatternflyThemeLink } from '@patternfly/documentation-framework/components';
3
+ import { useEffect, useState } from 'react';
4
+ import SearchIcon from '@patternfly/react-icons/dist/js/icons/search-icon';
5
+ import RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill-icon';
6
+ import { DashboardWrapper } from '@patternfly/react-core/dist/js/demos/DashboardWrapper';
7
+ import { DashboardHeader } from '@patternfly/react-core/dist/js/demos/DashboardHeader';
8
+ import srcImportalertgrouptoastwithnotificationdrawer from './react-demos/alert-group-toast-with-notification-drawer.png';
9
+ const pageData = {
10
+ "id": "Alert",
11
+ "section": "components",
12
+ "subsection": "",
13
+ "deprecated": false,
14
+ "template": false,
15
+ "beta": false,
16
+ "demo": false,
17
+ "newImplementationLink": false,
18
+ "source": "react-demos",
19
+ "tabName": null,
20
+ "slug": "/components/alert/react-demos",
21
+ "sourceLink": "https://github.com/patternfly/patternfly-react/blob/main/packages/react-core/src/demos/AlertGroup.md",
22
+ "relPath": "packages/react-core/src/demos/AlertGroup.md",
23
+ "fullscreenExamples": [
24
+ "Alert group toast with notification drawer"
25
+ ]
26
+ };
27
+ pageData.liveContext = {
28
+ useEffect,
29
+ useState,
30
+ SearchIcon,
31
+ RhUiEllipsisVerticalFillIcon,
32
+ DashboardWrapper,
33
+ DashboardHeader
34
+ };
35
+ pageData.examples = {
36
+ 'Alert group toast with notification drawer': props =>
37
+ <Example {...pageData} {...props} thumbnail={srcImportalertgrouptoastwithnotificationdrawer} {...{"code":"import { useEffect, useState } from 'react';\nimport {\n Button,\n EmptyState,\n EmptyStateBody,\n NotificationBadge,\n NotificationBadgeVariant,\n NotificationDrawer,\n NotificationDrawerBody,\n NotificationDrawerHeader,\n NotificationDrawerList,\n NotificationDrawerListItem,\n NotificationDrawerListItemBody,\n NotificationDrawerListItemHeader,\n PageSection,\n Content,\n EmptyStateVariant,\n NumberInput,\n Alert,\n AlertProps,\n AlertGroup,\n AlertActionCloseButton,\n ToolbarItem,\n Dropdown,\n DropdownList,\n DropdownItem,\n MenuToggle,\n MenuToggleElement\n} from '@patternfly/react-core';\nimport SearchIcon from '@patternfly/react-icons/dist/js/icons/search-icon';\nimport RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill-icon';\nimport { DashboardHeader } from '@patternfly/react-core/dist/js/demos/DashboardHeader';\nimport { DashboardWrapper } from '@patternfly/react-core/dist/js/demos/DashboardWrapper';\n\ninterface NotificationProps {\n title: string;\n srTitle: string;\n variant: 'custom' | 'success' | 'danger' | 'warning' | 'info';\n key: React.Key;\n timestamp: string;\n description: string;\n isNotificationRead: boolean;\n}\n\nexport const AlertGroupToastWithNotificationDrawer: React.FunctionComponent = () => {\n const maxDisplayedAlerts = 3;\n const minAlerts = 0;\n const maxAlerts = 100;\n const alertTimeout = 8000;\n\n const [isDrawerExpanded, setDrawerExpanded] = useState(false);\n const [openDropdownKey, setOpenDropdownKey] = useState<React.Key | null>(null);\n const [overflowMessage, setOverflowMessage] = useState<string>('');\n const [maxDisplayed, setMaxDisplayed] = useState(maxDisplayedAlerts);\n const [alerts, setAlerts] = useState<React.ReactElement<AlertProps>[]>([]);\n const [notifications, setNotifications] = useState<NotificationProps[]>([]);\n\n useEffect(() => {\n setOverflowMessage(buildOverflowMessage());\n }, [maxDisplayed, notifications, alerts]);\n\n const addNewNotification = (variant: NotificationProps['variant']) => {\n const variantFormatted = variant.charAt(0).toUpperCase() + variant.slice(1);\n const title = variantFormatted + ' alert notification';\n const srTitle = variantFormatted + ' alert';\n const description = variantFormatted + ' alert notification description';\n const key = getUniqueId();\n const timestamp = getTimeCreated();\n\n setNotifications((prevNotifications) => [\n { title, srTitle, variant, key, timestamp, description, isNotificationRead: false },\n ...prevNotifications\n ]);\n\n if (!isDrawerExpanded) {\n setAlerts((prevAlerts) => [\n <Alert\n variant={variant}\n title={title}\n timeout={alertTimeout}\n onTimeout={() => removeAlert(key)}\n isLiveRegion\n actionClose={\n <AlertActionCloseButton title={title} variantLabel={`${variant} alert`} onClose={() => removeAlert(key)} />\n }\n key={key}\n id={key.toString()}\n >\n <p>{description}</p>\n </Alert>,\n ...prevAlerts\n ]);\n }\n };\n\n const removeNotification = (key: React.Key) => {\n setNotifications((prevNotifications) => prevNotifications.filter((notification) => notification.key !== key));\n };\n\n const removeAllNotifications = () => {\n setNotifications([]);\n };\n\n const isNotificationRead = (key: React.Key) =>\n notifications.find((notification) => notification.key === key)?.isNotificationRead;\n\n const markNotificationRead = (key: React.Key) => {\n setNotifications((prevNotifications) =>\n prevNotifications.map((notification) =>\n notification.key === key ? { ...notification, isNotificationRead: true } : notification\n )\n );\n };\n\n const markAllNotificationsRead = () => {\n setNotifications((prevNotifications) =>\n prevNotifications.map((notification) => ({ ...notification, isNotificationRead: true }))\n );\n };\n\n const getUnreadNotificationsNumber = () =>\n notifications.filter((notification) => notification.isNotificationRead === false).length;\n\n const containsUnreadAlertNotification = () =>\n notifications.filter(\n (notification) => notification.isNotificationRead === false && notification.variant === 'danger'\n ).length > 0;\n\n const getNotificationBadgeVariant = () => {\n if (getUnreadNotificationsNumber() === 0) {\n return NotificationBadgeVariant.read;\n }\n if (containsUnreadAlertNotification()) {\n return NotificationBadgeVariant.attention;\n }\n return NotificationBadgeVariant.unread;\n };\n\n const onNotificationBadgeClick = () => {\n removeAllAlerts();\n setDrawerExpanded(!isDrawerExpanded);\n };\n\n const onDropdownToggle = (id: React.Key) => {\n if (id && openDropdownKey !== id) {\n setOpenDropdownKey(id);\n return;\n }\n setOpenDropdownKey(null);\n };\n\n const onDropdownSelect = () => {\n setOpenDropdownKey(null);\n };\n\n const buildOverflowMessage = () => {\n const overflow = alerts.length - maxDisplayed;\n if (overflow > 0 && maxDisplayed > 0) {\n return `View ${overflow} more notification(s) in notification drawer`;\n }\n return '';\n };\n\n const getUniqueId = () => new Date().getTime();\n\n const getTimeCreated = () => {\n const dateCreated = new Date();\n return (\n dateCreated.toDateString() +\n ' at ' +\n ('00' + dateCreated.getHours().toString()).slice(-2) +\n ':' +\n ('00' + dateCreated.getMinutes().toString()).slice(-2)\n );\n };\n\n const removeAlert = (key: React.Key) => {\n setAlerts((prevAlerts) => prevAlerts.filter((alert) => alert.props.id !== key.toString()));\n };\n\n const removeAllAlerts = () => {\n setAlerts([]);\n };\n\n const onAlertGroupOverflowClick = () => {\n removeAllAlerts();\n setDrawerExpanded(true);\n };\n\n const onMaxDisplayedAlertsMinus = () => {\n setMaxDisplayed(normalizeAlertsNumber(maxDisplayed - 1));\n };\n\n const onMaxDisplayedAlertsChange = (event: any) => {\n setMaxDisplayed(normalizeAlertsNumber(Number(event.target.value)));\n };\n\n const onMaxDisplayedAlertsPlus = () => {\n setMaxDisplayed(normalizeAlertsNumber(maxDisplayed + 1));\n };\n\n const normalizeAlertsNumber = (value: number) => Math.max(Math.min(value, maxAlerts), minAlerts);\n\n const alertButtonStyle = { marginRight: '8px', marginTop: '8px' };\n\n const notificationBadge = (\n <ToolbarItem>\n <NotificationBadge\n variant={getNotificationBadgeVariant()}\n onClick={onNotificationBadgeClick}\n aria-label=\"Notifications\"\n ></NotificationBadge>\n </ToolbarItem>\n );\n\n const notificationDrawerActions = (\n <>\n <DropdownItem key=\"markAllRead\" onClick={markAllNotificationsRead}>\n Mark all read\n </DropdownItem>\n <DropdownItem key=\"clearAll\" onClick={removeAllNotifications}>\n Clear all\n </DropdownItem>\n </>\n );\n const notificationDrawerDropdownItems = (key: React.Key) => [\n <DropdownItem key={`markRead-${key}`} onClick={() => markNotificationRead(key)}>\n Mark as read\n </DropdownItem>,\n <DropdownItem key={`clear-${key}`} onClick={() => removeNotification(key)}>\n Clear\n </DropdownItem>\n ];\n\n const notificationDrawer = (\n <NotificationDrawer>\n <NotificationDrawerHeader count={getUnreadNotificationsNumber()} onClose={(_event) => setDrawerExpanded(false)}>\n <Dropdown\n id=\"notification-drawer-0\"\n isOpen={openDropdownKey === 'dropdown-toggle-id-0'}\n onSelect={onDropdownSelect}\n popperProps={{ position: 'right' }}\n onOpenChange={(isOpen: boolean) => !isOpen && setOpenDropdownKey(null)}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n isExpanded={openDropdownKey === 'dropdown-toggle-id-0'}\n variant=\"plain\"\n onClick={() => onDropdownToggle('dropdown-toggle-id-0')}\n aria-label=\"Notification drawer actions\"\n icon={<RhUiEllipsisVerticalFillIcon />}\n />\n )}\n >\n <DropdownList>{notificationDrawerActions}</DropdownList>\n </Dropdown>\n </NotificationDrawerHeader>\n <NotificationDrawerBody>\n {notifications.length !== 0 && (\n <NotificationDrawerList>\n {notifications.map(({ key, variant, title, srTitle, description, timestamp }, index) => (\n <NotificationDrawerListItem\n key={key}\n variant={variant}\n isRead={isNotificationRead(key)}\n onClick={() => markNotificationRead(key)}\n >\n <NotificationDrawerListItemHeader variant={variant} title={title} srTitle={srTitle}>\n <Dropdown\n id={key.toString()}\n isOpen={openDropdownKey === key}\n onSelect={onDropdownSelect}\n popperProps={{ position: 'right' }}\n onOpenChange={(isOpen: boolean) => !isOpen && setOpenDropdownKey(null)}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n isExpanded={openDropdownKey === key}\n variant=\"plain\"\n onClick={() => onDropdownToggle(key)}\n aria-label={`Notification ${index + 1} actions`}\n icon={<RhUiEllipsisVerticalFillIcon />}\n />\n )}\n >\n <DropdownList>{notificationDrawerDropdownItems(key)}</DropdownList>\n </Dropdown>\n </NotificationDrawerListItemHeader>\n <NotificationDrawerListItemBody timestamp={timestamp}> {description} </NotificationDrawerListItemBody>\n </NotificationDrawerListItem>\n ))}\n </NotificationDrawerList>\n )}\n {notifications.length === 0 && (\n <EmptyState\n headingLevel=\"h2\"\n titleText=\"No notifications found\"\n icon={SearchIcon}\n variant={EmptyStateVariant.full}\n >\n <EmptyStateBody>There are currently no notifications.</EmptyStateBody>\n </EmptyState>\n )}\n </NotificationDrawerBody>\n </NotificationDrawer>\n );\n\n return (\n <DashboardWrapper\n masthead={<DashboardHeader notificationBadge={notificationBadge} />}\n mainContainerId=\"main-content-page-layout-default-nav\"\n notificationDrawer={notificationDrawer}\n isNotificationDrawerExpanded={isDrawerExpanded}\n >\n <PageSection aria-labelledby=\"alert-group-title\">\n <Content>\n <h1 id=\"alert-group-title\">Alert group with notification drawer demo</h1>\n <p>\n New alerts can be added with the following buttons. Each alert has a timeout of 7 seconds, however, even\n after the timeout expires, all alerts are still visible in the notification drawer. By default, only 3\n alerts are displayed. The rest can be accessed in the notification drawer after clicking on the bell icon in\n the header or by clicking on the overflow message.\n </p>\n </Content>\n </PageSection>\n\n <PageSection aria-label=\"Alert Buttons\">\n <Button variant=\"secondary\" onClick={() => addNewNotification('success')} style={alertButtonStyle}>\n Add toast success alert\n </Button>\n <Button variant=\"secondary\" onClick={() => addNewNotification('danger')} style={alertButtonStyle}>\n Add toast danger alert\n </Button>\n <Button variant=\"secondary\" onClick={() => addNewNotification('info')} style={alertButtonStyle}>\n Add toast info alert\n </Button>\n <br />\n <br />\n <Button variant=\"secondary\" onClick={() => addNewNotification('warning')} style={alertButtonStyle}>\n Add toast warning alert\n </Button>\n <Button variant=\"secondary\" onClick={() => addNewNotification('custom')} style={alertButtonStyle}>\n Add toast custom alert\n </Button>\n </PageSection>\n\n <PageSection aria-labelledby=\"max-displayed-alerts-title\">\n <Content>\n <br />\n <h2 id=\"max-displayed-alerts-title\">Max displayed alerts</h2>\n <p>Adjust the maximum number of displayed alerts.</p>\n </Content>\n <NumberInput\n value={maxDisplayed}\n min={minAlerts}\n max={maxAlerts}\n onMinus={onMaxDisplayedAlertsMinus}\n onChange={onMaxDisplayedAlertsChange}\n onPlus={onMaxDisplayedAlertsPlus}\n inputName=\"input\"\n inputAriaLabel=\"max displayed alerts number input\"\n minusBtnAriaLabel=\"minus\"\n plusBtnAriaLabel=\"plus\"\n style={{ margin: '12px 0' }}\n />\n </PageSection>\n <PageSection component=\"div\">\n <AlertGroup\n hasAnimations\n isToast\n isLiveRegion\n onOverflowClick={onAlertGroupOverflowClick}\n overflowMessage={overflowMessage}\n >\n {alerts.slice(0, maxDisplayed)}\n </AlertGroup>\n </PageSection>\n </DashboardWrapper>\n );\n};\n","title":"Alert group toast with notification drawer","lang":"ts","isFullscreen":true,"className":""}}>
38
+
39
+ </Example>
40
+ };
41
+
42
+ const Component = () => (
43
+ <React.Fragment>
44
+ <AutoLinkHeader {...{"id":"demos","headingLevel":"h2","className":"ws-title ws-h2"}}>
45
+ {`Demos`}
46
+ </AutoLinkHeader>
47
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
48
+ {`This demonstrates how you can assemble a full page view including the use of alert group toast notifications with timeout that are also displayed inside the notification drawer.`}
49
+ </p>
50
+ {React.createElement(pageData.examples["Alert group toast with notification drawer"])}
51
+ </React.Fragment>
52
+ );
53
+ Component.displayName = 'ComponentsAlertReactDemosDocs';
54
+ Component.pageData = pageData;
55
+
56
+ export default Component;