@patternfly/react-docs 7.6.0-prerelease.7 → 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 (162) hide show
  1. package/package.json +12 -13
  2. package/patternfly-docs/generated/components/about-modal/react.js +149 -0
  3. package/patternfly-docs/generated/components/accordion/react.js +262 -0
  4. package/patternfly-docs/generated/components/action-list/react.js +144 -0
  5. package/patternfly-docs/generated/components/alert/react-demos.js +56 -0
  6. package/patternfly-docs/generated/components/alert/react.js +1433 -0
  7. package/patternfly-docs/generated/components/avatar/react.js +166 -0
  8. package/patternfly-docs/generated/components/back-to-top/react-demos.js +60 -0
  9. package/patternfly-docs/generated/components/back-to-top/react.js +77 -0
  10. package/patternfly-docs/generated/components/backdrop/react.js +64 -0
  11. package/patternfly-docs/generated/components/background-image/react.js +62 -0
  12. package/patternfly-docs/generated/components/badge/react.js +97 -0
  13. package/patternfly-docs/generated/components/banner/react-demos.js +57 -0
  14. package/patternfly-docs/generated/components/banner/react.js +148 -0
  15. package/patternfly-docs/generated/components/brand/react.js +142 -0
  16. package/patternfly-docs/generated/components/breadcrumb/react.js +206 -0
  17. package/patternfly-docs/generated/components/button/react-demos.js +57 -0
  18. package/patternfly-docs/generated/components/button/react.js +826 -0
  19. package/patternfly-docs/generated/components/card/react-demos.js +201 -0
  20. package/patternfly-docs/generated/components/card/react.js +1015 -0
  21. package/patternfly-docs/generated/components/charts/area-chart/-Victory.js +1350 -0
  22. package/patternfly-docs/generated/components/charts/bar-chart/-Victory.js +1334 -0
  23. package/patternfly-docs/generated/components/charts/box-plot-chart/-Victory.js +1282 -0
  24. package/patternfly-docs/generated/components/charts/bullet-chart/-Victory.js +848 -0
  25. package/patternfly-docs/generated/components/charts/colors-for-charts/-Victory.js +192 -0
  26. package/patternfly-docs/generated/components/charts/donut-chart/-Victory.js +426 -0
  27. package/patternfly-docs/generated/components/charts/donut-utilization-chart/-Victory.js +804 -0
  28. package/patternfly-docs/generated/components/charts/legends/-Victory.js +3230 -0
  29. package/patternfly-docs/generated/components/charts/line-chart/-Victory.js +1178 -0
  30. package/patternfly-docs/generated/components/charts/line-chart/ECharts.js +525 -0
  31. package/patternfly-docs/generated/components/charts/patterns/-Victory.js +3382 -0
  32. package/patternfly-docs/generated/components/charts/pie-chart/-Victory.js +377 -0
  33. package/patternfly-docs/generated/components/charts/resize-observer/-Victory.js +2475 -0
  34. package/patternfly-docs/generated/components/charts/sankey-chart/ECharts.js +538 -0
  35. package/patternfly-docs/generated/components/charts/scatter-chart/-Victory.js +1551 -0
  36. package/patternfly-docs/generated/components/charts/skeletons/-Victory.js +4115 -0
  37. package/patternfly-docs/generated/components/charts/sparkline-chart/-Victory.js +955 -0
  38. package/patternfly-docs/generated/components/charts/stack-chart/-Victory.js +1173 -0
  39. package/patternfly-docs/generated/components/charts/threshold-chart/-Victory.js +1166 -0
  40. package/patternfly-docs/generated/components/charts/tooltips/-Victory.js +413 -0
  41. package/patternfly-docs/generated/components/chip/react-deprecated.js +323 -0
  42. package/patternfly-docs/generated/components/clipboard-copy/react.js +373 -0
  43. package/patternfly-docs/generated/components/code-block/react.js +148 -0
  44. package/patternfly-docs/generated/components/code-editor/react.js +659 -0
  45. package/patternfly-docs/generated/components/compass/react-demos.js +147 -0
  46. package/patternfly-docs/generated/components/compass/react.js +440 -0
  47. package/patternfly-docs/generated/components/content/react.js +248 -0
  48. package/patternfly-docs/generated/components/data-list/react-demos.js +90 -0
  49. package/patternfly-docs/generated/components/data-list/react.js +709 -0
  50. package/patternfly-docs/generated/components/date-and-time/calendar-month/react.js +283 -0
  51. package/patternfly-docs/generated/components/date-and-time/date-and-time-picker/react-demos.js +64 -0
  52. package/patternfly-docs/generated/components/date-and-time/date-picker/react-demos.js +83 -0
  53. package/patternfly-docs/generated/components/date-and-time/date-picker/react.js +395 -0
  54. package/patternfly-docs/generated/components/date-and-time/time-picker/react.js +241 -0
  55. package/patternfly-docs/generated/components/description-list/react-demos.js +58 -0
  56. package/patternfly-docs/generated/components/description-list/react.js +743 -0
  57. package/patternfly-docs/generated/components/divider/react.js +126 -0
  58. package/patternfly-docs/generated/components/drag-and-drop/react-demos.js +351 -0
  59. package/patternfly-docs/generated/components/drag-and-drop/react-deprecated.js +184 -0
  60. package/patternfly-docs/generated/components/drag-and-drop/react.js +137 -0
  61. package/patternfly-docs/generated/components/drawer/react.js +598 -0
  62. package/patternfly-docs/generated/components/dual-list-selector/react-deprecated.js +772 -0
  63. package/patternfly-docs/generated/components/dual-list-selector/react.js +594 -0
  64. package/patternfly-docs/generated/components/empty-state/react.js +199 -0
  65. package/patternfly-docs/generated/components/expandable-section/react-demos.js +65 -0
  66. package/patternfly-docs/generated/components/expandable-section/react.js +408 -0
  67. package/patternfly-docs/generated/components/file-upload/multiple-file-upload/react-demos.js +52 -0
  68. package/patternfly-docs/generated/components/file-upload/multiple-file-upload/react.js +398 -0
  69. package/patternfly-docs/generated/components/file-upload/simple-file-upload/react.js +749 -0
  70. package/patternfly-docs/generated/components/forms/checkbox/react.js +222 -0
  71. package/patternfly-docs/generated/components/forms/form/react.js +1106 -0
  72. package/patternfly-docs/generated/components/forms/form-select/react.js +208 -0
  73. package/patternfly-docs/generated/components/forms/radio/react.js +212 -0
  74. package/patternfly-docs/generated/components/forms/text-area/react.js +160 -0
  75. package/patternfly-docs/generated/components/forms/text-input/react.js +216 -0
  76. package/patternfly-docs/generated/components/helper-text/react-demos.js +180 -0
  77. package/patternfly-docs/generated/components/helper-text/react.js +164 -0
  78. package/patternfly-docs/generated/components/hero/react.js +88 -0
  79. package/patternfly-docs/generated/components/hint/react.js +169 -0
  80. package/patternfly-docs/generated/components/icon/react.js +215 -0
  81. package/patternfly-docs/generated/components/input-group/react.js +182 -0
  82. package/patternfly-docs/generated/components/jump-links/react-demos.js +154 -0
  83. package/patternfly-docs/generated/components/jump-links/react.js +212 -0
  84. package/patternfly-docs/generated/components/label/react-demos.js +57 -0
  85. package/patternfly-docs/generated/components/label/react.js +417 -0
  86. package/patternfly-docs/generated/components/list/react.js +175 -0
  87. package/patternfly-docs/generated/components/login-page/react.js +587 -0
  88. package/patternfly-docs/generated/components/masthead/react-demos.js +79 -0
  89. package/patternfly-docs/generated/components/masthead/react.js +291 -0
  90. package/patternfly-docs/generated/components/menus/application-launcher/react-demos.js +769 -0
  91. package/patternfly-docs/generated/components/menus/context-selector/react-demos.js +665 -0
  92. package/patternfly-docs/generated/components/menus/custom-menus/react-demos.js +187 -0
  93. package/patternfly-docs/generated/components/menus/dropdown/react-templates.js +163 -0
  94. package/patternfly-docs/generated/components/menus/dropdown/react.js +998 -0
  95. package/patternfly-docs/generated/components/menus/menu/react.js +1540 -0
  96. package/patternfly-docs/generated/components/menus/menu-toggle/react.js +747 -0
  97. package/patternfly-docs/generated/components/menus/options-menu/react-demos.js +508 -0
  98. package/patternfly-docs/generated/components/menus/select/react-templates.js +257 -0
  99. package/patternfly-docs/generated/components/menus/select/react.js +998 -0
  100. package/patternfly-docs/generated/components/modal/react-deprecated.js +554 -0
  101. package/patternfly-docs/generated/components/modal/react.js +597 -0
  102. package/patternfly-docs/generated/components/navigation/react-demos.js +356 -0
  103. package/patternfly-docs/generated/components/navigation/react.js +409 -0
  104. package/patternfly-docs/generated/components/notification-badge/react.js +196 -0
  105. package/patternfly-docs/generated/components/notification-drawer/react-demos.js +107 -0
  106. package/patternfly-docs/generated/components/notification-drawer/react.js +394 -0
  107. package/patternfly-docs/generated/components/number-input/react.js +210 -0
  108. package/patternfly-docs/generated/components/overflow-menu/react.js +274 -0
  109. package/patternfly-docs/generated/components/page/react-demos.js +149 -0
  110. package/patternfly-docs/generated/components/page/react.js +1352 -0
  111. package/patternfly-docs/generated/components/pagination/react.js +492 -0
  112. package/patternfly-docs/generated/components/panel/react.js +236 -0
  113. package/patternfly-docs/generated/components/popover/react.js +390 -0
  114. package/patternfly-docs/generated/components/progress/react-demos.js +59 -0
  115. package/patternfly-docs/generated/components/progress/react.js +283 -0
  116. package/patternfly-docs/generated/components/progress-stepper/react-demos.js +45 -0
  117. package/patternfly-docs/generated/components/progress-stepper/react.js +219 -0
  118. package/patternfly-docs/generated/components/search-input/react-demos.js +113 -0
  119. package/patternfly-docs/generated/components/search-input/react.js +263 -0
  120. package/patternfly-docs/generated/components/sidebar/react.js +236 -0
  121. package/patternfly-docs/generated/components/simple-list/react.js +200 -0
  122. package/patternfly-docs/generated/components/skeleton/react-demos.js +44 -0
  123. package/patternfly-docs/generated/components/skeleton/react.js +122 -0
  124. package/patternfly-docs/generated/components/skip-to-content/react.js +73 -0
  125. package/patternfly-docs/generated/components/slider/react.js +309 -0
  126. package/patternfly-docs/generated/components/spinner/react.js +111 -0
  127. package/patternfly-docs/generated/components/switch/react.js +163 -0
  128. package/patternfly-docs/generated/components/table/react-demos.js +355 -0
  129. package/patternfly-docs/generated/components/table/react-deprecated.js +1350 -0
  130. package/patternfly-docs/generated/components/table/react.js +3241 -0
  131. package/patternfly-docs/generated/components/tabs/react-demos.js +108 -0
  132. package/patternfly-docs/generated/components/tabs/react.js +1359 -0
  133. package/patternfly-docs/generated/components/text-input-group/react-demos.js +152 -0
  134. package/patternfly-docs/generated/components/text-input-group/react.js +278 -0
  135. package/patternfly-docs/generated/components/tile/react-deprecated.js +242 -0
  136. package/patternfly-docs/generated/components/timestamp/react.js +283 -0
  137. package/patternfly-docs/generated/components/title/react.js +94 -0
  138. package/patternfly-docs/generated/components/toggle-group/react.js +299 -0
  139. package/patternfly-docs/generated/components/toolbar/react-demos.js +66 -0
  140. package/patternfly-docs/generated/components/toolbar/react.js +932 -0
  141. package/patternfly-docs/generated/components/tooltip/react.js +241 -0
  142. package/patternfly-docs/generated/components/tree-view/react.js +429 -0
  143. package/patternfly-docs/generated/components/truncate/react.js +211 -0
  144. package/patternfly-docs/generated/components/wizard/react-demos.js +87 -0
  145. package/patternfly-docs/generated/components/wizard/react-deprecated.js +788 -0
  146. package/patternfly-docs/generated/components/wizard/react.js +986 -0
  147. package/patternfly-docs/generated/developer-guides/open-ui-automation/react.js +285 -0
  148. package/patternfly-docs/generated/foundations-and-styles/layouts/bullseye/react.js +70 -0
  149. package/patternfly-docs/generated/foundations-and-styles/layouts/flex/react.js +506 -0
  150. package/patternfly-docs/generated/foundations-and-styles/layouts/gallery/react.js +94 -0
  151. package/patternfly-docs/generated/foundations-and-styles/layouts/grid/react.js +272 -0
  152. package/patternfly-docs/generated/foundations-and-styles/layouts/level/react.js +87 -0
  153. package/patternfly-docs/generated/foundations-and-styles/layouts/split/react.js +124 -0
  154. package/patternfly-docs/generated/foundations-and-styles/layouts/stack/react.js +112 -0
  155. package/patternfly-docs/generated/index.js +1769 -0
  156. package/patternfly-docs/generated/patterns/card-view/react-demos.js +78 -0
  157. package/patternfly-docs/generated/patterns/filters/react-demos.js +141 -0
  158. package/patternfly-docs/generated/patterns/password-generator/react-demos.js +51 -0
  159. package/patternfly-docs/generated/patterns/password-strength/react-demos.js +61 -0
  160. package/patternfly-docs/generated/patterns/primary-detail/react-demos.js +124 -0
  161. package/patternfly-docs/generated/patterns/right-to-left/react-demos.js +81 -0
  162. package/LICENSE +0 -21
@@ -0,0 +1,998 @@
1
+ import React from 'react';
2
+ import { AutoLinkHeader, Example, Link as PatternflyThemeLink } from '@patternfly/documentation-framework/components';
3
+ import { useState, useRef } from 'react';
4
+ import RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill-icon';
5
+ const pageData = {
6
+ "id": "Dropdown",
7
+ "section": "components",
8
+ "subsection": "menus",
9
+ "deprecated": false,
10
+ "template": false,
11
+ "beta": false,
12
+ "demo": false,
13
+ "newImplementationLink": false,
14
+ "source": "react",
15
+ "tabName": null,
16
+ "slug": "/components/menus/dropdown/react",
17
+ "sourceLink": "https://github.com/patternfly/patternfly-react/blob/main/packages/react-core/src/components/Dropdown/examples/Dropdown.md",
18
+ "relPath": "packages/react-core/src/components/Dropdown/examples/Dropdown.md",
19
+ "propComponents": [
20
+ {
21
+ "name": "Dropdown",
22
+ "description": "See the Menu documentation for additional props that may be passed.",
23
+ "props": [
24
+ {
25
+ "name": "activeItemId",
26
+ "type": "string | number",
27
+ "description": "itemId of the currently active item. You can also specify isActive on the MenuItem."
28
+ },
29
+ {
30
+ "name": "activeMenu",
31
+ "type": "string",
32
+ "description": "ID of the currently active menu for the drilldown variant"
33
+ },
34
+ {
35
+ "name": "children",
36
+ "type": "React.ReactNode",
37
+ "description": "Anything that can be rendered inside of the Menu"
38
+ },
39
+ {
40
+ "name": "className",
41
+ "type": "string",
42
+ "description": "Additional classes added to the Menu"
43
+ },
44
+ {
45
+ "name": "containerComponent",
46
+ "type": "React.ReactNode",
47
+ "description": "Sets the base component to render for the container. Defaults to <span>"
48
+ },
49
+ {
50
+ "name": "containerOuiaId",
51
+ "type": "number | string",
52
+ "description": "When applied, wraps dropdown in a container with a data-ouia-component-id."
53
+ },
54
+ {
55
+ "name": "containerOuiaSafe",
56
+ "type": "boolean",
57
+ "description": "Set the value of data-ouia-safe for the container when containerOuiaId is applied. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false."
58
+ },
59
+ {
60
+ "name": "containsDrilldown",
61
+ "type": "boolean",
62
+ "description": "Indicates if menu contains a drilldown menu"
63
+ },
64
+ {
65
+ "name": "containsFlyout",
66
+ "type": "boolean",
67
+ "description": "Indicates if menu contains a flyout menu"
68
+ },
69
+ {
70
+ "name": "drilldownItemPath",
71
+ "type": "string[]",
72
+ "description": "Indicates the path of drilled in menu itemIds"
73
+ },
74
+ {
75
+ "name": "drilledInMenus",
76
+ "type": "string[]",
77
+ "description": "Array of menus that are drilled in"
78
+ },
79
+ {
80
+ "name": "focusTimeoutDelay",
81
+ "type": "number",
82
+ "description": "Time in ms to wait before firing the toggles' focus event. Defaults to 0"
83
+ },
84
+ {
85
+ "name": "id",
86
+ "type": "string",
87
+ "description": "ID of the menu"
88
+ },
89
+ {
90
+ "name": "isMenuDrilledIn",
91
+ "type": "boolean",
92
+ "description": "Indicates if a menu is drilled into"
93
+ },
94
+ {
95
+ "name": "isNavFlyout",
96
+ "type": "boolean",
97
+ "description": "Indicating that the menu should have nav flyout styling"
98
+ },
99
+ {
100
+ "name": "isOpen",
101
+ "type": "boolean",
102
+ "description": "Flag to indicate if menu is opened."
103
+ },
104
+ {
105
+ "name": "isPlain",
106
+ "type": "boolean",
107
+ "description": "Indicates if the menu should be without the outer box-shadow"
108
+ },
109
+ {
110
+ "name": "isRootMenu",
111
+ "type": "boolean",
112
+ "description": "Internal flag indicating if the Menu is the root of a menu tree"
113
+ },
114
+ {
115
+ "name": "isScrollable",
116
+ "type": "boolean",
117
+ "description": "Indicates if the menu should be srollable"
118
+ },
119
+ {
120
+ "name": "maxMenuHeight",
121
+ "type": "string",
122
+ "description": "Maximum height of dropdown menu"
123
+ },
124
+ {
125
+ "name": "menuHeight",
126
+ "type": "string",
127
+ "description": "Height of the dropdown menu"
128
+ },
129
+ {
130
+ "name": "onActionClick",
131
+ "type": "(event?: any, itemId?: any, actionId?: any) => void",
132
+ "description": "Callback called when an MenuItems's action button is clicked. You can also specify it within a MenuItemAction."
133
+ },
134
+ {
135
+ "name": "onDrillIn",
136
+ "type": "(\n event: React.KeyboardEvent | React.MouseEvent,\n fromItemId: string,\n toItemId: string,\n itemId: string\n) => void",
137
+ "description": "Callback for drilling into a submenu"
138
+ },
139
+ {
140
+ "name": "onDrillOut",
141
+ "type": "(event: React.KeyboardEvent | React.MouseEvent, toItemId: string, itemId: string) => void",
142
+ "description": "Callback for drilling out of a submenu"
143
+ },
144
+ {
145
+ "name": "onGetMenuHeight",
146
+ "type": "(menuId: string, height: number) => void",
147
+ "description": "Callback for collecting menu heights"
148
+ },
149
+ {
150
+ "name": "onOpenChange",
151
+ "type": "(isOpen: boolean) => void",
152
+ "description": "Callback to allow the dropdown component to change the open state of the menu.\nTriggered by clicking outside of the menu, or by pressing any keys specified in onOpenChangeKeys."
153
+ },
154
+ {
155
+ "name": "onOpenChangeKeys",
156
+ "type": "string[]",
157
+ "description": "Keys that trigger onOpenChange, defaults to tab and escape. It is highly recommended to include Escape in the array, while Tab may be omitted if the menu contains non-menu items that are focusable."
158
+ },
159
+ {
160
+ "name": "onSelect",
161
+ "type": "(event?: React.MouseEvent<Element, MouseEvent>, value?: DropdownItemProps['value']) => void",
162
+ "description": "Callback for updating when item selection changes. You can also specify onClick on the MenuItem."
163
+ },
164
+ {
165
+ "name": "onToggleKeydown",
166
+ "type": "(event: KeyboardEvent) => void",
167
+ "description": "Callback to override the toggle keydown behavior. By default, when the toggle has focus and the menu is open, pressing the up/down arrow keys will focus a valid non-disabled menu item - the first item for the down arrow key and last item for the up arrow key."
168
+ },
169
+ {
170
+ "name": "ouiaId",
171
+ "type": "number | string",
172
+ "description": "Value to overwrite the randomly generated data-ouia-component-id."
173
+ },
174
+ {
175
+ "name": "ouiaSafe",
176
+ "type": "boolean",
177
+ "description": "Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false."
178
+ },
179
+ {
180
+ "name": "parentMenu",
181
+ "type": "string",
182
+ "description": "ID of parent menu for drilldown menus"
183
+ },
184
+ {
185
+ "name": "popperProps",
186
+ "type": "PopperOptions",
187
+ "description": "Additional properties to pass to the Popper"
188
+ },
189
+ {
190
+ "name": "role",
191
+ "type": "string",
192
+ "description": "Determines the accessible role of the menu. For a non-checkbox menu that can have\none or more items selected, pass in \"listbox\"."
193
+ },
194
+ {
195
+ "name": "selected",
196
+ "type": "any | any[]",
197
+ "description": "Single itemId for single select menus, or array of itemIds for multi select. You can also specify isSelected on the MenuItem."
198
+ },
199
+ {
200
+ "name": "shouldFocusFirstItemOnOpen",
201
+ "type": "boolean",
202
+ "description": "Flag indicating the first menu item should be focused after opening the dropdown.",
203
+ "beta": true
204
+ },
205
+ {
206
+ "name": "shouldFocusToggleOnSelect",
207
+ "type": "boolean",
208
+ "description": "Flag indicating the toggle should be focused after a selection. If this use case is too restrictive, the optional toggleRef property with a node toggle may be used to control focus."
209
+ },
210
+ {
211
+ "name": "shouldPreventScrollOnItemFocus",
212
+ "type": "boolean",
213
+ "description": "Flag indicating if scroll on focus of the first menu item should occur."
214
+ },
215
+ {
216
+ "name": "toggle",
217
+ "type": "DropdownToggleProps | ((toggleRef: React.RefObject<any>) => React.ReactNode)",
218
+ "description": "Dropdown toggle. The toggle should either be a renderer function which forwards the given toggle ref, or a direct ReactNode that should be passed along with the toggleRef property.",
219
+ "required": true
220
+ },
221
+ {
222
+ "name": "zIndex",
223
+ "type": "number",
224
+ "description": "z-index of the dropdown menu"
225
+ }
226
+ ]
227
+ },
228
+ {
229
+ "name": "DropdownGroup",
230
+ "description": "See the MenuGroup section of the Menu documentation for additional props that may be passed.",
231
+ "props": [
232
+ {
233
+ "name": "children",
234
+ "type": "React.ReactNode",
235
+ "description": "Anything which can be rendered in a dropdown group.",
236
+ "required": true
237
+ },
238
+ {
239
+ "name": "className",
240
+ "type": "string",
241
+ "description": "Classes applied to root element of dropdown group"
242
+ },
243
+ {
244
+ "name": "label",
245
+ "type": "React.ReactNode",
246
+ "description": "Label of the dropdown group"
247
+ },
248
+ {
249
+ "name": "labelHeadingLevel",
250
+ "type": "No type info",
251
+ "defaultValue": "'h1'"
252
+ }
253
+ ]
254
+ },
255
+ {
256
+ "name": "DropdownItem",
257
+ "description": "See the MenuItem section of the Menu documentation for additional props that may be passed.",
258
+ "props": [
259
+ {
260
+ "name": "children",
261
+ "type": "React.ReactNode",
262
+ "description": "Anything which can be rendered in a dropdown item"
263
+ },
264
+ {
265
+ "name": "className",
266
+ "type": "string",
267
+ "description": "Classes applied to root element of dropdown item"
268
+ },
269
+ {
270
+ "name": "description",
271
+ "type": "React.ReactNode",
272
+ "description": "Description of the dropdown item"
273
+ },
274
+ {
275
+ "name": "isAriaDisabled",
276
+ "type": "boolean",
277
+ "description": "Render item as aria-disabled option"
278
+ },
279
+ {
280
+ "name": "isDisabled",
281
+ "type": "boolean",
282
+ "description": "Render item as disabled option"
283
+ },
284
+ {
285
+ "name": "onClick",
286
+ "type": "(event?: any) => void",
287
+ "description": "Callback for item click"
288
+ },
289
+ {
290
+ "name": "ouiaId",
291
+ "type": "number | string",
292
+ "description": "Value to overwrite the randomly generated data-ouia-component-id."
293
+ },
294
+ {
295
+ "name": "ouiaSafe",
296
+ "type": "boolean",
297
+ "description": "Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false."
298
+ },
299
+ {
300
+ "name": "tooltipProps",
301
+ "type": "TooltipProps",
302
+ "description": "Props for adding a tooltip to a menu item"
303
+ },
304
+ {
305
+ "name": "value",
306
+ "type": "any",
307
+ "description": "Identifies the component in the dropdown onSelect callback"
308
+ }
309
+ ]
310
+ },
311
+ {
312
+ "name": "DropdownList",
313
+ "description": "",
314
+ "props": [
315
+ {
316
+ "name": "aria-label",
317
+ "type": "string",
318
+ "description": "Adds an accessible name to the menu."
319
+ },
320
+ {
321
+ "name": "children",
322
+ "type": "React.ReactNode",
323
+ "description": "Anything that can be rendered inside of menu list",
324
+ "required": true
325
+ },
326
+ {
327
+ "name": "className",
328
+ "type": "string",
329
+ "description": "Additional classes added to the menu list"
330
+ },
331
+ {
332
+ "name": "isAriaMultiselectable",
333
+ "type": "boolean",
334
+ "description": "Indicates to assistive technologies whether more than one item can be selected\nfor a non-checkbox menu. Only applies when the menu's role is \"listbox\"."
335
+ }
336
+ ]
337
+ },
338
+ {
339
+ "name": "MenuToggle",
340
+ "description": "",
341
+ "props": [
342
+ {
343
+ "name": "badge",
344
+ "type": "BadgeProps | React.ReactNode",
345
+ "description": "Optional badge rendered inside the toggle, after the children content"
346
+ },
347
+ {
348
+ "name": "children",
349
+ "type": "React.ReactNode",
350
+ "description": "Content rendered inside the toggle"
351
+ },
352
+ {
353
+ "name": "className",
354
+ "type": "string",
355
+ "description": "Additional classes added to the toggle"
356
+ },
357
+ {
358
+ "name": "icon",
359
+ "type": "React.ReactNode",
360
+ "description": "Optional icon or image rendered inside the toggle, before the children content. It is\nrecommended to wrap most basic icons in our icon component."
361
+ },
362
+ {
363
+ "name": "isCircle",
364
+ "type": "boolean",
365
+ "description": "Flag indicating the toggle has circular styling. Can only be applied to plain toggles.",
366
+ "beta": true
367
+ },
368
+ {
369
+ "name": "isDisabled",
370
+ "type": "boolean",
371
+ "description": "Flag indicating the toggle is disabled"
372
+ },
373
+ {
374
+ "name": "isDocked",
375
+ "type": "boolean",
376
+ "description": "Flag indicating the menu toggle is a docked variant. For use in docked navigation.",
377
+ "beta": true
378
+ },
379
+ {
380
+ "name": "isExpanded",
381
+ "type": "boolean",
382
+ "description": "Flag indicating the toggle has expanded styling"
383
+ },
384
+ {
385
+ "name": "isFullHeight",
386
+ "type": "boolean",
387
+ "description": "Flag indicating the toggle is full height"
388
+ },
389
+ {
390
+ "name": "isFullWidth",
391
+ "type": "boolean",
392
+ "description": "Flag indicating the toggle takes up the full width of its parent"
393
+ },
394
+ {
395
+ "name": "isInForm",
396
+ "type": "boolean",
397
+ "description": "Flag indicating the toggle is placed inside a form",
398
+ "beta": true
399
+ },
400
+ {
401
+ "name": "isPlaceholder",
402
+ "type": "boolean",
403
+ "description": "Flag indicating the toggle contains placeholder text"
404
+ },
405
+ {
406
+ "name": "isSettings",
407
+ "type": "boolean",
408
+ "description": "Flag indicating whether the toggle is a settings toggle. This will override the icon property"
409
+ },
410
+ {
411
+ "name": "isTextExpanded",
412
+ "type": "boolean",
413
+ "description": "Flag indicating the docked toggle should display text. Only applies when isDocked is true.",
414
+ "beta": true
415
+ },
416
+ {
417
+ "name": "ouiaId",
418
+ "type": "number | string",
419
+ "description": "Value to overwrite the randomly generated data-ouia-component-id. It will always target the toggle button."
420
+ },
421
+ {
422
+ "name": "ouiaSafe",
423
+ "type": "boolean",
424
+ "description": "Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false."
425
+ },
426
+ {
427
+ "name": "size",
428
+ "type": "'default' | 'sm'",
429
+ "description": "Adds styling which affects the size of the menu toggle"
430
+ },
431
+ {
432
+ "name": "splitButtonItems",
433
+ "type": "React.ReactNode[]",
434
+ "description": "Elements to display before the toggle button. When included, renders the menu toggle as a split button."
435
+ },
436
+ {
437
+ "name": "status",
438
+ "type": "'success' | 'warning' | 'danger'",
439
+ "description": "Status styles of the menu toggle"
440
+ },
441
+ {
442
+ "name": "statusIcon",
443
+ "type": "React.ReactNode",
444
+ "description": "Overrides the status icon"
445
+ },
446
+ {
447
+ "name": "variant",
448
+ "type": "'default' | 'plain' | 'primary' | 'plainText' | 'secondary' | 'typeahead'",
449
+ "description": "Variant styles of the menu toggle"
450
+ }
451
+ ]
452
+ },
453
+ {
454
+ "name": "DropdownToggleProps",
455
+ "description": "",
456
+ "props": [
457
+ {
458
+ "name": "toggleNode",
459
+ "type": "React.ReactNode",
460
+ "description": "Dropdown toggle node.",
461
+ "required": true
462
+ },
463
+ {
464
+ "name": "toggleRef",
465
+ "type": "React.RefObject<HTMLButtonElement | null>",
466
+ "description": "Reference to the toggle."
467
+ }
468
+ ]
469
+ },
470
+ {
471
+ "name": "TooltipProps",
472
+ "description": "",
473
+ "props": [
474
+ {
475
+ "name": "animationDuration",
476
+ "type": "number",
477
+ "description": "CSS fade transition animation duration"
478
+ },
479
+ {
480
+ "name": "appendTo",
481
+ "type": "HTMLElement | ((ref?: HTMLElement) => HTMLElement)",
482
+ "description": "The element to append the tooltip to, defaults to body"
483
+ },
484
+ {
485
+ "name": "aria",
486
+ "type": "'describedby' | 'labelledby' | 'none'",
487
+ "description": "aria-labelledby or aria-describedby for tooltip.\nThe trigger will be cloned to add the aria attribute, and the corresponding id in the form of 'pf-tooltip-#' is added to the content container.\nIf you don't want that or prefer to add the aria attribute yourself on the trigger, set aria to 'none'."
488
+ },
489
+ {
490
+ "name": "children",
491
+ "type": "ReactElement<any>",
492
+ "description": "The trigger reference element to which the Tooltip is relatively placed to.\nIf you cannot wrap the element with the Tooltip, you can use the triggerRef prop instead.\nUsage: <Tooltip><Button>Reference</Button></Tooltip>"
493
+ },
494
+ {
495
+ "name": "className",
496
+ "type": "string",
497
+ "description": "Tooltip additional class"
498
+ },
499
+ {
500
+ "name": "content",
501
+ "type": "React.ReactNode",
502
+ "description": "Tooltip content",
503
+ "required": true
504
+ },
505
+ {
506
+ "name": "distance",
507
+ "type": "number",
508
+ "description": "Distance of the tooltip to its target, defaults to 15"
509
+ },
510
+ {
511
+ "name": "enableFlip",
512
+ "type": "boolean",
513
+ "description": "If true, tries to keep the tooltip in view by flipping it if necessary"
514
+ },
515
+ {
516
+ "name": "entryDelay",
517
+ "type": "number",
518
+ "description": "Delay in ms before the tooltip appears"
519
+ },
520
+ {
521
+ "name": "exitDelay",
522
+ "type": "number",
523
+ "description": "Delay in ms before the tooltip disappears, Avoid passing in a value of \"0\", as users should\nbe given ample time to move their mouse from the trigger to the tooltip content without the content\nbeing hidden."
524
+ },
525
+ {
526
+ "name": "flipBehavior",
527
+ "type": "| 'flip'\n | (\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'top-start'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'left-start'\n | 'left-end'\n | 'right-start'\n | 'right-end'\n )[]",
528
+ "description": "The desired position to flip the tooltip to if the initial position is not possible.\nBy setting this prop to 'flip' it attempts to flip the tooltip to the opposite side if there is no space.\nYou can also pass an array of positions that determines the flip order. It should contain the initial position\nfollowed by alternative positions if that position is unavailable.\nExample: Initial position is 'top'. Button with tooltip is in the top right corner. 'flipBehavior' is set to\n['top', 'right', 'left']. Since there is no space to the top, it checks if right is available. There's also no\nspace to the right, so it finally shows the tooltip on the left."
529
+ },
530
+ {
531
+ "name": "id",
532
+ "type": "string",
533
+ "description": "id of the tooltip"
534
+ },
535
+ {
536
+ "name": "isContentLeftAligned",
537
+ "type": "boolean",
538
+ "description": "Flag to indicate that the text content is left aligned"
539
+ },
540
+ {
541
+ "name": "isVisible",
542
+ "type": "boolean",
543
+ "description": "value for visibility when trigger is 'manual'"
544
+ },
545
+ {
546
+ "name": "maxWidth",
547
+ "type": "string",
548
+ "description": "Maximum width of the tooltip (default 18.75rem)"
549
+ },
550
+ {
551
+ "name": "minWidth",
552
+ "type": "string | 'trigger'",
553
+ "description": "Minimum width of the tooltip. If set to \"trigger\", the minimum width will be set to the reference element width."
554
+ },
555
+ {
556
+ "name": "onTooltipHidden",
557
+ "type": "() => void",
558
+ "description": "Callback when tooltip's hide transition has finished executing"
559
+ },
560
+ {
561
+ "name": "position",
562
+ "type": "| TooltipPosition\n | 'auto'\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'top-start'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'left-start'\n | 'left-end'\n | 'right-start'\n | 'right-end'",
563
+ "description": "Tooltip position. Note: With 'enableFlip' set to true,\nit will change the position if there is not enough space for the starting position.\nThe behavior of where it flips to can be controlled through the flipBehavior prop.\nThe 'auto' position chooses the side with the most space.\nThe 'auto' position requires the 'enableFlip' prop to be true."
564
+ },
565
+ {
566
+ "name": "trigger",
567
+ "type": "string",
568
+ "description": "Tooltip trigger: click, mouseenter, focus, manual\nSet to manual to trigger tooltip programmatically (through the isVisible prop)"
569
+ },
570
+ {
571
+ "name": "triggerRef",
572
+ "type": "HTMLElement | (() => HTMLElement) | React.RefObject<any>",
573
+ "description": "The trigger reference element to which the Tooltip is relatively placed to.\nIf you can wrap the element with the Tooltip, you can use the children prop instead, or both props together.\nWhen passed along with the trigger prop, the div element that wraps the trigger will be removed.\nUsage: <Tooltip triggerRef={() => document.getElementById('reference-element')} />"
574
+ },
575
+ {
576
+ "name": "Unknown",
577
+ "type": "'off' | 'polite'",
578
+ "description": "Determines whether the tooltip is an aria-live region. If the triggerRef prop is passed in the\ndefault behavior is 'polite' in order to ensure the tooltip contents is announced to\nassistive technologies. Otherwise the default behavior is 'off'."
579
+ },
580
+ {
581
+ "name": "zIndex",
582
+ "type": "number",
583
+ "description": "z-index of the tooltip"
584
+ }
585
+ ]
586
+ },
587
+ {
588
+ "name": "PopperOptions",
589
+ "description": "Properties of Popper that can be used to customize its behavior.",
590
+ "props": [
591
+ {
592
+ "name": "animationDuration",
593
+ "type": "number",
594
+ "description": "The duration of the CSS fade transition animation."
595
+ },
596
+ {
597
+ "name": "appendTo",
598
+ "type": "HTMLElement | (() => HTMLElement) | 'inline'",
599
+ "description": "The container to append the popper to. Defaults to 'inline'."
600
+ },
601
+ {
602
+ "name": "direction",
603
+ "type": "'up' | 'down'",
604
+ "description": "popper direction"
605
+ },
606
+ {
607
+ "name": "distance",
608
+ "type": "number",
609
+ "description": "Distance of the popper to the trigger"
610
+ },
611
+ {
612
+ "name": "enableFlip",
613
+ "type": "boolean",
614
+ "description": "Enable to flip the popper when it reaches the boundary"
615
+ },
616
+ {
617
+ "name": "entryDelay",
618
+ "type": "number",
619
+ "description": "Delay in ms before the popper appears"
620
+ },
621
+ {
622
+ "name": "exitDelay",
623
+ "type": "number",
624
+ "description": "Delay in ms before the popper disappears"
625
+ },
626
+ {
627
+ "name": "flipBehavior",
628
+ "type": "| 'flip'\n | (\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'top-start'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'left-start'\n | 'left-end'\n | 'right-start'\n | 'right-end'\n )[]",
629
+ "description": "The behavior of how the popper flips when it reaches the boundary"
630
+ },
631
+ {
632
+ "name": "maxWidth",
633
+ "type": "string | 'trigger'",
634
+ "description": "Maximum width of the popper. If the value is \"trigger\", it will set the max width to the trigger element's width"
635
+ },
636
+ {
637
+ "name": "minWidth",
638
+ "type": "string | 'trigger'",
639
+ "description": "Minimum width of the popper. If the value is \"trigger\", it will set the min width to the trigger element's width"
640
+ },
641
+ {
642
+ "name": "offset",
643
+ "type": "OffsetOptions['offset']",
644
+ "description": "Override for the popper's offset"
645
+ },
646
+ {
647
+ "name": "onBlur",
648
+ "type": "(event?: FocusEvent) => void",
649
+ "description": "Callback function when trigger is blurred (focus leaves)"
650
+ },
651
+ {
652
+ "name": "onDocumentClick",
653
+ "type": "(event?: MouseEvent, triggerElement?: HTMLElement, popperElement?: HTMLElement) => void",
654
+ "description": "Callback function when document is clicked"
655
+ },
656
+ {
657
+ "name": "onDocumentKeyDown",
658
+ "type": "(event?: KeyboardEvent) => void",
659
+ "description": "Callback function when keydown event occurs on document"
660
+ },
661
+ {
662
+ "name": "onFocus",
663
+ "type": "(event?: FocusEvent) => void",
664
+ "description": "Callback function when trigger is focused"
665
+ },
666
+ {
667
+ "name": "onHidden",
668
+ "type": "() => void",
669
+ "description": "Callback when popper's hide transition has finished executing"
670
+ },
671
+ {
672
+ "name": "onHide",
673
+ "type": "() => void",
674
+ "description": "Lifecycle function invoked when the popper begins to transition out."
675
+ },
676
+ {
677
+ "name": "onMount",
678
+ "type": "() => void",
679
+ "description": "Lifecycle function invoked when the popper has been mounted to the DOM."
680
+ },
681
+ {
682
+ "name": "onMouseEnter",
683
+ "type": "(event?: MouseEvent) => void",
684
+ "description": "Callback function when mouse enters trigger"
685
+ },
686
+ {
687
+ "name": "onMouseLeave",
688
+ "type": "(event?: MouseEvent) => void",
689
+ "description": "Callback function when mouse leaves trigger"
690
+ },
691
+ {
692
+ "name": "onPopperClick",
693
+ "type": "(event?: MouseEvent) => void",
694
+ "description": "Callback function when popper is clicked"
695
+ },
696
+ {
697
+ "name": "onPopperMouseEnter",
698
+ "type": "(event?: MouseEvent) => void",
699
+ "description": "Callback function when mouse enters popper content"
700
+ },
701
+ {
702
+ "name": "onPopperMouseLeave",
703
+ "type": "(event?: MouseEvent) => void",
704
+ "description": "Callback function when mouse leaves popper content"
705
+ },
706
+ {
707
+ "name": "onShow",
708
+ "type": "() => void",
709
+ "description": "Lifecycle function invoked when the popper begins to transition in."
710
+ },
711
+ {
712
+ "name": "onShown",
713
+ "type": "() => void",
714
+ "description": "Lifecycle function invoked when the popper has fully transitioned in."
715
+ },
716
+ {
717
+ "name": "onTriggerClick",
718
+ "type": "(event?: MouseEvent) => void",
719
+ "description": "Callback function when trigger is clicked"
720
+ },
721
+ {
722
+ "name": "onTriggerEnter",
723
+ "type": "(event?: KeyboardEvent) => void",
724
+ "description": "Callback function when Enter key is used on trigger"
725
+ },
726
+ {
727
+ "name": "placement",
728
+ "type": "Placement",
729
+ "description": "Instead of direction and position can set the placement of the popper"
730
+ },
731
+ {
732
+ "name": "position",
733
+ "type": "'right' | 'left' | 'center' | 'start' | 'end'",
734
+ "description": "Horizontal position of the popper. Use the additional prop preventOverflow if seeing clipping."
735
+ },
736
+ {
737
+ "name": "positionModifiers",
738
+ "type": "{\n top?: string;\n right?: string;\n bottom?: string;\n left?: string;\n topStart?: string;\n topEnd?: string;\n bottomStart?: string;\n bottomEnd?: string;\n leftStart?: string;\n leftEnd?: string;\n rightStart?: string;\n rightEnd?: string;\n }",
739
+ "description": "Map class names to positions, for example:\n{\n top: styles.modifiers.top,\n bottom: styles.modifiers.bottom,\n left: styles.modifiers.left,\n right: styles.modifiers.right\n}"
740
+ },
741
+ {
742
+ "name": "preventOverflow",
743
+ "type": "boolean",
744
+ "description": "Flag to prevent the popper from overflowing its container and becoming partially obscured."
745
+ },
746
+ {
747
+ "name": "width",
748
+ "type": "string | 'trigger'",
749
+ "description": "Custom width of the popper. If the value is \"trigger\", it will set the width to the trigger element's width"
750
+ },
751
+ {
752
+ "name": "zIndex",
753
+ "type": "number",
754
+ "description": "z-index of the popper element"
755
+ }
756
+ ]
757
+ }
758
+ ],
759
+ "cssPrefix": [
760
+ "pf-v6-c-menu"
761
+ ],
762
+ "examples": [
763
+ "Basic dropdowns",
764
+ "With kebab toggle",
765
+ "With groups of items",
766
+ "With item descriptions",
767
+ "Split toggle with checkbox"
768
+ ]
769
+ };
770
+ pageData.liveContext = {
771
+ useState,
772
+ useRef,
773
+ RhUiEllipsisVerticalFillIcon
774
+ };
775
+ pageData.examples = {
776
+ 'Basic dropdowns': props =>
777
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Dropdown, DropdownItem, DropdownList, Divider, MenuToggle, MenuToggleElement } from '@patternfly/react-core';\n\nexport const DropdownBasic: React.FunctionComponent = () => {\n const [isOpen, setIsOpen] = useState(false);\n\n const onToggleClick = () => {\n setIsOpen(!isOpen);\n };\n\n const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, value: string | number | undefined) => {\n // eslint-disable-next-line no-console\n console.log('selected', value);\n setIsOpen(false);\n };\n\n return (\n <Dropdown\n isOpen={isOpen}\n onSelect={onSelect}\n onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle ref={toggleRef} onClick={onToggleClick} isExpanded={isOpen}>\n Dropdown\n </MenuToggle>\n )}\n ouiaId=\"BasicDropdown\"\n shouldFocusToggleOnSelect\n >\n <DropdownList>\n <DropdownItem value={0} key=\"action\">\n Action\n </DropdownItem>\n <DropdownItem\n value={1}\n key=\"link\"\n to=\"#default-link2\"\n // Prevent the default onClick functionality for example purposes\n onClick={(ev: any) => ev.preventDefault()}\n >\n Link\n </DropdownItem>\n <DropdownItem value={2} isDisabled key=\"disabled action\">\n Disabled Action\n </DropdownItem>\n <DropdownItem value={3} isDisabled key=\"disabled link\" to=\"#default-link4\">\n Disabled Link\n </DropdownItem>\n <DropdownItem\n value={4}\n isAriaDisabled\n key=\"aria-disabled link\"\n to=\"#default-link5\"\n tooltipProps={{ content: 'aria-disabled link', position: 'top' }}\n >\n Aria-disabled Link\n </DropdownItem>\n <Divider component=\"li\" key=\"separator\" />\n <DropdownItem value={5} key=\"separated action\">\n Separated Action\n </DropdownItem>\n <DropdownItem value={6} key=\"separated link\" to=\"#default-link6\" onClick={(ev) => ev.preventDefault()}>\n Separated Link\n </DropdownItem>\n </DropdownList>\n </Dropdown>\n );\n};\n","title":"Basic dropdowns","lang":"ts","className":""}}>
778
+
779
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
780
+ {`Basic dropdowns present users with a menu of items upon clicking a dropdown toggle.`}
781
+ </p>
782
+
783
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
784
+ {`A `}
785
+
786
+ <code {...{"className":"ws-code "}}>
787
+ {`<Dropdown>`}
788
+ </code>
789
+ {` uses a `}
790
+
791
+ <PatternflyThemeLink {...{"to":"/components/menus/menu-toggle","className":""}}>
792
+ {`menu toggle`}
793
+ </PatternflyThemeLink>
794
+ {`, which is passed to the `}
795
+
796
+ <code {...{"className":"ws-code "}}>
797
+ {`toggle`}
798
+ </code>
799
+ {` property, as well as a `}
800
+
801
+ <code {...{"className":"ws-code "}}>
802
+ {`<DropdownList>`}
803
+ </code>
804
+ {` with multiple `}
805
+
806
+ <code {...{"className":"ws-code "}}>
807
+ {`<DropdownItem>`}
808
+ </code>
809
+ {` components. To allow a dropdown to change the open state of the menu, pass the `}
810
+
811
+ <code {...{"className":"ws-code "}}>
812
+ {`isOpen`}
813
+ </code>
814
+ {` property into the `}
815
+
816
+ <code {...{"className":"ws-code "}}>
817
+ {`onOpenChange`}
818
+ </code>
819
+ {` callback.`}
820
+ </p>
821
+
822
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
823
+ {`The following example shows a few different states of dropdown items. As shown in this example, dropdown items may:`}
824
+ </p>
825
+
826
+ <ul {...{"className":"pf-v6-c-content--ul pf-m-editorial ws-ul "}}>
827
+
828
+
829
+
830
+ <li {...{"className":"pf-v6-c-content--li pf-m-editorial ws-li "}}>
831
+ {`Use the `}
832
+
833
+ <code {...{"className":"ws-code "}}>
834
+ {`isDisabled`}
835
+ </code>
836
+ {` property to disable an item.`}
837
+ </li>
838
+
839
+
840
+
841
+ <li {...{"className":"pf-v6-c-content--li pf-m-editorial ws-li "}}>
842
+ {`Use the `}
843
+
844
+ <code {...{"className":"ws-code "}}>
845
+ {`onClick`}
846
+ </code>
847
+ {` property to trigger a callback for an action.`}
848
+ </li>
849
+
850
+
851
+ </ul>
852
+
853
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
854
+ {`This example also uses a `}
855
+
856
+ <code {...{"className":"ws-code "}}>
857
+ {`<Divider>`}
858
+ </code>
859
+ {` which passes in `}
860
+
861
+ <code {...{"className":"ws-code "}}>
862
+ {`key=”separator”`}
863
+ </code>
864
+ {` to split the menu into 2 sections with a horizontal line.`}
865
+ </p>
866
+ </Example>,
867
+ 'With kebab toggle': props =>
868
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Dropdown, DropdownItem, DropdownList, Divider, MenuToggle, MenuToggleElement } from '@patternfly/react-core';\nimport RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill-icon';\n\nexport const DropdownWithKebab: React.FunctionComponent = () => {\n const [isOpen, setIsOpen] = useState(false);\n\n const onToggleClick = () => {\n setIsOpen(!isOpen);\n };\n\n const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, value: string | number | undefined) => {\n // eslint-disable-next-line no-console\n console.log('selected', value);\n setIsOpen(false);\n };\n\n return (\n <Dropdown\n isOpen={isOpen}\n onSelect={onSelect}\n onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={toggleRef}\n aria-label=\"kebab dropdown toggle\"\n variant=\"plain\"\n onClick={onToggleClick}\n isExpanded={isOpen}\n icon={<RhUiEllipsisVerticalFillIcon />}\n />\n )}\n shouldFocusToggleOnSelect\n >\n <DropdownList>\n <DropdownItem value={0} key=\"action\">\n Action\n </DropdownItem>\n <DropdownItem\n value={1}\n key=\"link\"\n to=\"#default-link2\"\n // Prevent the default onClick functionality for example purposes\n onClick={(ev: any) => ev.preventDefault()}\n >\n Link\n </DropdownItem>\n <DropdownItem value={2} isDisabled key=\"disabled action\">\n Disabled Action\n </DropdownItem>\n <DropdownItem value={3} isDisabled key=\"disabled link\" to=\"#default-link4\">\n Disabled Link\n </DropdownItem>\n <Divider component=\"li\" key=\"separator\" />\n <DropdownItem value={4} key=\"separated action\">\n Separated Action\n </DropdownItem>\n <DropdownItem value={5} key=\"separated link\" to=\"#default-link6\" onClick={(ev) => ev.preventDefault()}>\n Separated Link\n </DropdownItem>\n </DropdownList>\n </Dropdown>\n );\n};\n","title":"With kebab toggle","lang":"ts","className":""}}>
869
+
870
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
871
+ {`To style a dropdown menu's toggle with a kebab icon, pass a "plain" `}
872
+
873
+ <code {...{"className":"ws-code "}}>
874
+ {`<MenuToggle>`}
875
+ </code>
876
+ {` to the `}
877
+
878
+ <code {...{"className":"ws-code "}}>
879
+ {`toggle`}
880
+ </code>
881
+ {` property. When there isn't enough space for a labeled button, a kebab icon can be used to toggle the dropdown menu open or closed.`}
882
+ </p>
883
+ </Example>,
884
+ 'With groups of items': props =>
885
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport {\n Dropdown,\n DropdownGroup,\n DropdownItem,\n DropdownList,\n MenuToggle,\n MenuToggleElement,\n Divider\n} from '@patternfly/react-core';\n\nexport const DropdownWithGroups: React.FunctionComponent = () => {\n const [isOpen, setIsOpen] = useState(false);\n\n const onToggleClick = () => {\n setIsOpen(!isOpen);\n };\n\n const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, value: string | number | undefined) => {\n // eslint-disable-next-line no-console\n console.log('selected', value);\n setIsOpen(false);\n };\n\n return (\n <Dropdown\n isOpen={isOpen}\n onSelect={onSelect}\n onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle ref={toggleRef} onClick={onToggleClick} isExpanded={isOpen}>\n Dropdown\n </MenuToggle>\n )}\n shouldFocusToggleOnSelect\n >\n <DropdownGroup>\n <DropdownList>\n <DropdownItem value={0} key=\"action\">\n Action\n </DropdownItem>\n <DropdownItem\n value={1}\n key=\"link\"\n to=\"#default-link2\"\n // Prevent the default onClick functionality for example purposes\n onClick={(ev: any) => ev.preventDefault()}\n >\n Link\n </DropdownItem>\n </DropdownList>\n </DropdownGroup>\n <Divider component=\"li\" />\n <DropdownGroup label=\"Group 2\" labelHeadingLevel=\"h3\">\n <DropdownList>\n <DropdownItem value={2} key=\"group2 action\">\n Group 2 action\n </DropdownItem>\n <DropdownItem value={3} key=\"group2 link\" to=\"#default-link4\" onClick={(ev: any) => ev.preventDefault()}>\n Group 2 link\n </DropdownItem>\n </DropdownList>\n </DropdownGroup>\n <Divider />\n <DropdownGroup label=\"Group 3\" labelHeadingLevel=\"h3\">\n <DropdownList>\n <DropdownItem value={4} key=\"group3 action\">\n Group 3 action\n </DropdownItem>\n <DropdownItem value={5} key=\"group3 link\" to=\"#default-link6\" onClick={(ev: any) => ev.preventDefault()}>\n Group 3 link\n </DropdownItem>\n </DropdownList>\n </DropdownGroup>\n </Dropdown>\n );\n};\n","title":"With groups of items","lang":"ts","className":""}}>
886
+
887
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
888
+ {`To group sets of related dropdown items together, use a `}
889
+
890
+ <code {...{"className":"ws-code "}}>
891
+ {`<DropdownGroup>`}
892
+ </code>
893
+ {`. When more than 1 `}
894
+
895
+ <code {...{"className":"ws-code "}}>
896
+ {`<DropdownGroup>`}
897
+ </code>
898
+ {` is created in a menu, use the `}
899
+
900
+ <code {...{"className":"ws-code "}}>
901
+ {`label`}
902
+ </code>
903
+ {` and `}
904
+
905
+ <code {...{"className":"ws-code "}}>
906
+ {`labelHeadingLevel`}
907
+ </code>
908
+ {` properties to assign a name and heading level to each group.`}
909
+ </p>
910
+ </Example>,
911
+ 'With item descriptions': props =>
912
+ <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { Dropdown, DropdownItem, DropdownList, MenuToggle, MenuToggleElement } from '@patternfly/react-core';\n\nexport const DropdownWithDescriptions: React.FunctionComponent = () => {\n const [isOpen, setIsOpen] = useState(false);\n\n const onToggleClick = () => {\n setIsOpen(!isOpen);\n };\n\n const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, value: string | number | undefined) => {\n // eslint-disable-next-line no-console\n console.log('selected', value);\n setIsOpen(false);\n };\n\n return (\n <Dropdown\n isOpen={isOpen}\n onSelect={onSelect}\n onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)}\n toggle={(toggleRef: React.Ref<MenuToggleElement>) => (\n <MenuToggle ref={toggleRef} isFullWidth onClick={onToggleClick} isExpanded={isOpen}>\n Dropdown\n </MenuToggle>\n )}\n shouldFocusToggleOnSelect\n >\n <DropdownList>\n <DropdownItem value={0} key=\"action\" description=\"This is a description\">\n Action\n </DropdownItem>\n <DropdownItem\n value={1}\n key=\"link\"\n description=\"This is a very long description that describes the menu item\"\n to=\"#default-link2\"\n // Prevent the default onClick functionality for example purposes\n onClick={(ev: any) => ev.preventDefault()}\n >\n Link\n </DropdownItem>\n <DropdownItem value={2} isDisabled description=\"Disabled link description\" key=\"disabled action\">\n Disabled action\n </DropdownItem>\n <DropdownItem value={3} isDisabled description=\"This is a description\" key=\"disabled link\" to=\"#default-link4\">\n Disabled link\n </DropdownItem>\n </DropdownList>\n </Dropdown>\n );\n};\n","title":"With item descriptions","lang":"ts","className":""}}>
913
+
914
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
915
+ {`To provide users with more context about a `}
916
+
917
+ <code {...{"className":"ws-code "}}>
918
+ {`<DropdownItem>`}
919
+ </code>
920
+ {`, pass a short message to `}
921
+
922
+ <code {...{"className":"ws-code "}}>
923
+ {`description`}
924
+ </code>
925
+ {` property. As shown in the example below, an item's description will appear below its label.`}
926
+ </p>
927
+ </Example>,
928
+ 'Split toggle with checkbox': props =>
929
+ <Example {...pageData} {...props} {...{"code":"import {\n Dropdown,\n MenuToggle,\n MenuToggleCheckbox,\n DropdownItem,\n DropdownList,\n Divider,\n MenuToggleElement\n} from '@patternfly/react-core';\nimport { useRef, useState } from 'react';\n\nexport const DropdownSplitButtonText: React.FunctionComponent = () => {\n const [isOpen, setIsOpen] = useState(false);\n const toggleRef = useRef<MenuToggleElement>(null);\n\n const onFocus = () => {\n if (!toggleRef.current) {\n return;\n }\n\n const toggleButton = toggleRef.current.querySelector('button[aria-expanded]');\n toggleButton?.focus();\n };\n\n const onSelect = () => {\n setIsOpen(false);\n onFocus();\n };\n\n const onToggleClick = () => {\n setIsOpen(!isOpen);\n };\n\n return (\n <Dropdown\n onSelect={onSelect}\n onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)}\n toggle={(toggleRefCallback: React.Ref<MenuToggleElement>) => (\n <MenuToggle\n ref={(node) => {\n // Handle both callback ref and useRef\n if (typeof toggleRefCallback === 'function') {\n toggleRefCallback(node);\n } else if (toggleRefCallback) {\n (toggleRefCallback as React.MutableRefObject<MenuToggleElement | null>).current = node;\n }\n (toggleRef as React.MutableRefObject<MenuToggleElement | null>).current = node;\n }}\n splitButtonItems={[\n <MenuToggleCheckbox id=\"split-button-checkbox-example\" key=\"split-checkbox\" aria-label=\"Select all\" />\n ]}\n aria-label=\"Dropdown with checkbox split button\"\n onClick={onToggleClick}\n isExpanded={isOpen}\n />\n )}\n isOpen={isOpen}\n >\n <DropdownList>\n <DropdownItem value={0} key=\"action\">\n Action\n </DropdownItem>\n <DropdownItem\n value={1}\n key=\"link\"\n to=\"#default-link2\"\n // Prevent the default onClick functionality for example purposes\n onClick={(ev: any) => ev.preventDefault()}\n >\n Link\n </DropdownItem>\n <DropdownItem value={2} isDisabled key=\"disabled action\">\n Disabled Action\n </DropdownItem>\n <DropdownItem value={3} isDisabled key=\"disabled link\" to=\"#default-link4\">\n Disabled Link\n </DropdownItem>\n <DropdownItem\n value={4}\n isAriaDisabled\n key=\"aria-disabled link\"\n to=\"#default-link5\"\n tooltipProps={{ content: 'aria-disabled link', position: 'top' }}\n >\n Aria-disabled Link\n </DropdownItem>\n <Divider component=\"li\" key=\"separator\" />\n <DropdownItem value={5} key=\"separated action\">\n Separated Action\n </DropdownItem>\n <DropdownItem value={6} key=\"separated link\" to=\"#default-link6\" onClick={(ev) => ev.preventDefault()}>\n Separated Link\n </DropdownItem>\n </DropdownList>\n </Dropdown>\n );\n};\n","title":"Split toggle with checkbox","lang":"ts","className":""}}>
930
+
931
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
932
+ {`To combine a checkbox or other control with a dropdown menu, use a split button.`}
933
+ </p>
934
+
935
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
936
+ {`A `}
937
+
938
+ <code {...{"className":"ws-code "}}>
939
+ {`<MenuToggle>`}
940
+ </code>
941
+ {` can be rendered as a split button via `}
942
+
943
+ <code {...{"className":"ws-code "}}>
944
+ {`splitButtonItems`}
945
+ </code>
946
+ {`. Elements to be displayed before the dropdown toggle button (like the `}
947
+
948
+ <code {...{"className":"ws-code "}}>
949
+ {`<MenuToggleCheckbox>`}
950
+ </code>
951
+ {`) must be included in the `}
952
+
953
+ <code {...{"className":"ws-code "}}>
954
+ {`splitButtonItems`}
955
+ </code>
956
+ {`.`}
957
+ </p>
958
+
959
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
960
+ {`If the dropdown menu closes upon selection, you will need to manually shift focus back to the toggle element after a user selects an item from the menu.`}
961
+ </p>
962
+ </Example>
963
+ };
964
+
965
+ const Component = () => (
966
+ <React.Fragment>
967
+ <AutoLinkHeader {...{"id":"examples","headingLevel":"h2","className":"ws-title ws-h2"}}>
968
+ {`Examples`}
969
+ </AutoLinkHeader>
970
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
971
+ <code {...{"className":"ws-code "}}>
972
+ {`Dropdown`}
973
+ </code>
974
+ {` builds off of the Menu component suite to wrap commonly used properties and functions for a dropdown menu. See the `}
975
+ <PatternflyThemeLink {...{"to":"/components/menus/menu","className":""}}>
976
+ {`Menu documentation`}
977
+ </PatternflyThemeLink>
978
+ {` for a full list of properties that may be passed through `}
979
+ <code {...{"className":"ws-code "}}>
980
+ {`Dropdown`}
981
+ </code>
982
+ {` to further customize the dropdown menu, or the `}
983
+ <PatternflyThemeLink {...{"to":"/components/menus/custom-menus","className":""}}>
984
+ {`custom menu examples`}
985
+ </PatternflyThemeLink>
986
+ {` for additional examples of fully functional menus.`}
987
+ </p>
988
+ {React.createElement(pageData.examples["Basic dropdowns"])}
989
+ {React.createElement(pageData.examples["With kebab toggle"])}
990
+ {React.createElement(pageData.examples["With groups of items"])}
991
+ {React.createElement(pageData.examples["With item descriptions"])}
992
+ {React.createElement(pageData.examples["Split toggle with checkbox"])}
993
+ </React.Fragment>
994
+ );
995
+ Component.displayName = 'ComponentsMenusDropdownReactDocs';
996
+ Component.pageData = pageData;
997
+
998
+ export default Component;