@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,598 @@
1
+ import React from 'react';
2
+ import { AutoLinkHeader, Example, Link as PatternflyThemeLink } from '@patternfly/documentation-framework/components';
3
+ import { Fragment, useRef, useState } from 'react';
4
+ import accessibility from '@patternfly/react-styles/css/utilities/Accessibility/accessibility';
5
+ const pageData = {
6
+ "id": "Drawer",
7
+ "section": "components",
8
+ "subsection": "",
9
+ "deprecated": false,
10
+ "template": false,
11
+ "beta": false,
12
+ "demo": false,
13
+ "newImplementationLink": false,
14
+ "source": "react",
15
+ "tabName": null,
16
+ "slug": "/components/drawer/react",
17
+ "sourceLink": "https://github.com/patternfly/patternfly-react/blob/main/packages/react-core/src/components/Drawer/examples/Drawer.md",
18
+ "relPath": "packages/react-core/src/components/Drawer/examples/Drawer.md",
19
+ "propComponents": [
20
+ {
21
+ "name": "Drawer",
22
+ "description": "",
23
+ "props": [
24
+ {
25
+ "name": "children",
26
+ "type": "React.ReactNode",
27
+ "description": "Content rendered in the drawer panel"
28
+ },
29
+ {
30
+ "name": "className",
31
+ "type": "string",
32
+ "description": "Additional classes added to the Drawer.",
33
+ "defaultValue": "''"
34
+ },
35
+ {
36
+ "name": "isExpanded",
37
+ "type": "boolean",
38
+ "description": "Indicates if the drawer is expanded",
39
+ "defaultValue": "false"
40
+ },
41
+ {
42
+ "name": "isInline",
43
+ "type": "boolean",
44
+ "description": "Indicates if the content element and panel element are displayed side by side.",
45
+ "defaultValue": "false"
46
+ },
47
+ {
48
+ "name": "isPill",
49
+ "type": "boolean",
50
+ "description": "Indicates if the drawer will have pill styles",
51
+ "defaultValue": "false",
52
+ "beta": true
53
+ },
54
+ {
55
+ "name": "isStatic",
56
+ "type": "boolean",
57
+ "description": "Indicates if the drawer will always show both content and panel.",
58
+ "defaultValue": "false"
59
+ },
60
+ {
61
+ "name": "onExpand",
62
+ "type": "(event: KeyboardEvent | React.MouseEvent | React.TransitionEvent) => void",
63
+ "description": "Callback when drawer panel is expanded after waiting 250ms for animation to complete.",
64
+ "defaultValue": "() => {}"
65
+ },
66
+ {
67
+ "name": "position",
68
+ "type": "'start' | 'end' | 'bottom' | 'left' | 'right'",
69
+ "description": "Position of the drawer panel. left and right are deprecated, use start and end instead.",
70
+ "defaultValue": "'end'"
71
+ }
72
+ ]
73
+ },
74
+ {
75
+ "name": "DrawerSection",
76
+ "description": "",
77
+ "props": [
78
+ {
79
+ "name": "children",
80
+ "type": "React.ReactNode",
81
+ "description": "Content to be rendered in the drawer section."
82
+ },
83
+ {
84
+ "name": "className",
85
+ "type": "string",
86
+ "description": "Additional classes added to the drawer section.",
87
+ "defaultValue": "''"
88
+ },
89
+ {
90
+ "name": "colorVariant",
91
+ "type": "DrawerColorVariant | 'no-background' | 'default' | 'secondary'",
92
+ "description": "Color variant of the background of the drawer section.\nThe `no-background` value is deprecated; use the `isPlain` prop instead.",
93
+ "defaultValue": "DrawerColorVariant.default"
94
+ },
95
+ {
96
+ "name": "isPlain",
97
+ "type": "boolean",
98
+ "description": "Flag indicating that the drawer section should use plain styles.",
99
+ "defaultValue": "false",
100
+ "beta": true
101
+ }
102
+ ]
103
+ },
104
+ {
105
+ "name": "DrawerContent",
106
+ "description": "",
107
+ "props": [
108
+ {
109
+ "name": "children",
110
+ "type": "React.ReactNode",
111
+ "description": "Content to be rendered in the drawer."
112
+ },
113
+ {
114
+ "name": "className",
115
+ "type": "string",
116
+ "description": "Additional classes added to the Drawer."
117
+ },
118
+ {
119
+ "name": "colorVariant",
120
+ "type": "DrawerContentColorVariant | 'default' | 'primary' | 'secondary'",
121
+ "description": "Color variant of the background of the drawer panel",
122
+ "defaultValue": "DrawerContentColorVariant.default"
123
+ },
124
+ {
125
+ "name": "panelContent",
126
+ "type": "React.ReactNode",
127
+ "description": "Content rendered in the drawer panel.",
128
+ "required": true
129
+ }
130
+ ]
131
+ },
132
+ {
133
+ "name": "DrawerContentBody",
134
+ "description": "",
135
+ "props": [
136
+ {
137
+ "name": "children",
138
+ "type": "React.ReactNode",
139
+ "description": "Content to be rendered in the drawer"
140
+ },
141
+ {
142
+ "name": "className",
143
+ "type": "string",
144
+ "description": "Additional classes added to the Drawer.",
145
+ "defaultValue": "''"
146
+ },
147
+ {
148
+ "name": "hasPadding",
149
+ "type": "boolean",
150
+ "description": "Indicates if there should be padding around the drawer content body",
151
+ "defaultValue": "false"
152
+ }
153
+ ]
154
+ },
155
+ {
156
+ "name": "DrawerPanelContent",
157
+ "description": "",
158
+ "props": [
159
+ {
160
+ "name": "children",
161
+ "type": "React.ReactNode",
162
+ "description": "Content to be rendered in the drawer panel."
163
+ },
164
+ {
165
+ "name": "className",
166
+ "type": "string",
167
+ "description": "Additional classes added to the drawer."
168
+ },
169
+ {
170
+ "name": "colorVariant",
171
+ "type": "DrawerColorVariant | 'no-background' | 'default' | 'secondary'",
172
+ "description": "Color variant of the background of the drawer panel.\nThe `no-background`is deprecated; use the `isPlain` prop instead.",
173
+ "defaultValue": "DrawerColorVariant.default"
174
+ },
175
+ {
176
+ "name": "defaultSize",
177
+ "type": "string",
178
+ "description": "The starting size of a drawer."
179
+ },
180
+ {
181
+ "name": "focusTrap",
182
+ "type": "DrawerPanelFocusTrapObject",
183
+ "description": "Adds and customizes a focus trap on the drawer panel content."
184
+ },
185
+ {
186
+ "name": "hasNoBorder",
187
+ "type": "boolean",
188
+ "description": "Flag indicating that the drawer panel should not have a border.",
189
+ "defaultValue": "false"
190
+ },
191
+ {
192
+ "name": "hasNoGlass",
193
+ "type": "boolean",
194
+ "description": "Flag indicating that the drawer panel should disable glass styles. This prop is intended to work with isPill drawers.",
195
+ "defaultValue": "false",
196
+ "beta": true
197
+ },
198
+ {
199
+ "name": "id",
200
+ "type": "string",
201
+ "description": "ID of the drawer panel"
202
+ },
203
+ {
204
+ "name": "increment",
205
+ "type": "number",
206
+ "description": "The increment amount for keyboard drawer resizing.",
207
+ "defaultValue": "5"
208
+ },
209
+ {
210
+ "name": "isGlass",
211
+ "type": "boolean",
212
+ "description": "Flag indicating that the drawer panel should use glass styles when in glass theme",
213
+ "defaultValue": "false",
214
+ "beta": true
215
+ },
216
+ {
217
+ "name": "isNoPlainOnGlass",
218
+ "type": "boolean",
219
+ "description": "Flag indicating that plain styles should be disabled when glass styles are used. This only applies when the drawer is static or inline.",
220
+ "defaultValue": "false",
221
+ "beta": true
222
+ },
223
+ {
224
+ "name": "isPlain",
225
+ "type": "boolean",
226
+ "description": "Flag indicating that the drawer panel should use plain styles. This only applies when the drawer is static or inline.",
227
+ "defaultValue": "false",
228
+ "beta": true
229
+ },
230
+ {
231
+ "name": "isResizable",
232
+ "type": "boolean",
233
+ "description": "Flag indicating that the drawer panel should be resizable.",
234
+ "defaultValue": "false"
235
+ },
236
+ {
237
+ "name": "maxSize",
238
+ "type": "string",
239
+ "description": "The maximum size of a drawer."
240
+ },
241
+ {
242
+ "name": "minSize",
243
+ "type": "string",
244
+ "description": "The minimum size of a drawer."
245
+ },
246
+ {
247
+ "name": "onResize",
248
+ "type": "(event: MouseEvent | TouchEvent | React.KeyboardEvent, width: number, id: string) => void",
249
+ "description": "Callback for resize end."
250
+ },
251
+ {
252
+ "name": "resizeAriaLabel",
253
+ "type": "string",
254
+ "description": "Aria label for the resizable drawer splitter.",
255
+ "defaultValue": "'Resize'"
256
+ },
257
+ {
258
+ "name": "widths",
259
+ "type": "{\n default?: 'width_25' | 'width_33' | 'width_50' | 'width_66' | 'width_75' | 'width_100';\n lg?: 'width_25' | 'width_33' | 'width_50' | 'width_66' | 'width_75' | 'width_100';\n xl?: 'width_25' | 'width_33' | 'width_50' | 'width_66' | 'width_75' | 'width_100';\n '2xl'?: 'width_25' | 'width_33' | 'width_50' | 'width_66' | 'width_75' | 'width_100';\n}",
260
+ "description": "Width for drawer panel at various breakpoints. Overridden by resizable drawer minSize and defaultSize."
261
+ }
262
+ ]
263
+ },
264
+ {
265
+ "name": "DrawerHead",
266
+ "description": "",
267
+ "props": [
268
+ {
269
+ "name": "children",
270
+ "type": "React.ReactNode",
271
+ "description": "Content to be rendered in the drawer head"
272
+ },
273
+ {
274
+ "name": "className",
275
+ "type": "string",
276
+ "description": "Additional classes added to the drawer head.",
277
+ "defaultValue": "''"
278
+ }
279
+ ]
280
+ },
281
+ {
282
+ "name": "DrawerActions",
283
+ "description": "",
284
+ "props": [
285
+ {
286
+ "name": "children",
287
+ "type": "React.ReactNode",
288
+ "description": "Actions to be rendered in the panel head."
289
+ },
290
+ {
291
+ "name": "className",
292
+ "type": "string",
293
+ "description": "Additional classes added to the drawer actions button.",
294
+ "defaultValue": "''"
295
+ }
296
+ ]
297
+ },
298
+ {
299
+ "name": "DrawerCloseButton",
300
+ "description": "",
301
+ "props": [
302
+ {
303
+ "name": "aria-label",
304
+ "type": "string",
305
+ "description": "Accessible label for the drawer close button",
306
+ "defaultValue": "'Close drawer panel'"
307
+ },
308
+ {
309
+ "name": "className",
310
+ "type": "string",
311
+ "description": "Additional classes added to the drawer close button outer <div>.",
312
+ "defaultValue": "''"
313
+ },
314
+ {
315
+ "name": "onClose",
316
+ "type": "() => void",
317
+ "description": "A callback for when the close button is clicked",
318
+ "defaultValue": "() => undefined as any"
319
+ }
320
+ ]
321
+ },
322
+ {
323
+ "name": "DrawerPanelDescription",
324
+ "description": "Provides a description within the drawer panel. This should typically follow the drawer head.",
325
+ "props": [
326
+ {
327
+ "name": "children",
328
+ "type": "React.ReactNode",
329
+ "description": "Content to be rendered in the drawer description",
330
+ "required": true
331
+ },
332
+ {
333
+ "name": "className",
334
+ "type": "string",
335
+ "description": "Additional classes added to the drawer description."
336
+ }
337
+ ]
338
+ },
339
+ {
340
+ "name": "DrawerPanelBody",
341
+ "description": "",
342
+ "props": [
343
+ {
344
+ "name": "children",
345
+ "type": "React.ReactNode",
346
+ "description": "Content to be rendered in the drawer"
347
+ },
348
+ {
349
+ "name": "className",
350
+ "type": "string",
351
+ "description": "Additional classes added to the Drawer.",
352
+ "defaultValue": "''"
353
+ },
354
+ {
355
+ "name": "hasNoPadding",
356
+ "type": "boolean",
357
+ "description": "Indicates if there should be no padding around the drawer panel body",
358
+ "defaultValue": "false"
359
+ }
360
+ ]
361
+ },
362
+ {
363
+ "name": "DrawerPanelFocusTrapObject",
364
+ "description": "",
365
+ "props": [
366
+ {
367
+ "name": "elementToFocusOnExpand",
368
+ "type": "HTMLElement | SVGElement | string",
369
+ "description": "The element to focus when the drawer panel content expands. By default the\nfirst focusable element will receive focus. If there are no focusable elements, the\npanel itself will receive focus."
370
+ },
371
+ {
372
+ "name": "enabled",
373
+ "type": "boolean",
374
+ "description": "Enables a focus trap on the drawer panel content. This will also automatically\nhandle focus management when the panel expands and when it collapses. Do not pass\nthis prop if the isStatic prop on the drawer component is true."
375
+ },
376
+ {
377
+ "name": "Unknown",
378
+ "type": "string",
379
+ "description": "One or more id's to use for the drawer panel content's accessible label."
380
+ }
381
+ ]
382
+ }
383
+ ],
384
+ "cssPrefix": [
385
+ "pf-v6-c-drawer"
386
+ ],
387
+ "examples": [
388
+ "Basic",
389
+ "Panel at end",
390
+ "Panel at start",
391
+ "Panel on bottom",
392
+ "Basic inline",
393
+ "Inline panel at end",
394
+ "Inline panel at start",
395
+ "Stacked content body elements",
396
+ "Modified content padding",
397
+ "Modified panel padding",
398
+ "Additional section above drawer content",
399
+ "Static drawer",
400
+ "Breakpoint",
401
+ "Resizable at end",
402
+ "Resizable at start",
403
+ "Resizable on bottom",
404
+ "Resizable on inline",
405
+ "Panel with secondary background",
406
+ "With focus trap",
407
+ "Pill",
408
+ "Pill inline"
409
+ ]
410
+ };
411
+ pageData.liveContext = {
412
+ Fragment,
413
+ useRef,
414
+ useState,
415
+ accessibility
416
+ };
417
+ pageData.examples = {
418
+ 'Basic': props =>
419
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n DrawerPanelBody,\n DrawerPanelDescription,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerBasic: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n <DrawerPanelDescription>Drawer panel description</DrawerPanelDescription>\n <DrawerPanelBody>Drawer panel body</DrawerPanelBody>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} onExpand={onExpand}>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Basic","lang":"ts","className":""}}>
420
+
421
+ </Example>,
422
+ 'Panel at end': props =>
423
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerPanelEnd: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} position=\"end\" onExpand={onExpand}>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Panel at end","lang":"ts","className":""}}>
424
+
425
+ </Example>,
426
+ 'Panel at start': props =>
427
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerPanelStart: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} position=\"start\" onExpand={onExpand}>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Panel at start","lang":"ts","className":""}}>
428
+
429
+ </Example>,
430
+ 'Panel on bottom': props =>
431
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerPanelBottom: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <div style={{ height: '400px' }}>\n <Drawer isExpanded={isExpanded} position=\"bottom\" onExpand={onExpand}>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </div>\n </Fragment>\n );\n};\n","title":"Panel on bottom","lang":"ts","className":""}}>
432
+
433
+ </Example>,
434
+ 'Basic inline': props =>
435
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerBasicInline: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} isInline onExpand={onExpand}>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Basic inline","lang":"ts","className":""}}>
436
+
437
+ </Example>,
438
+ 'Inline panel at end': props =>
439
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerInlinePanelEnd: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} isInline onExpand={onExpand}>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Inline panel at end","lang":"ts","className":""}}>
440
+
441
+ </Example>,
442
+ 'Inline panel at start': props =>
443
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerInlinePanelStart: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} isInline position=\"start\" onExpand={onExpand}>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Inline panel at start","lang":"ts","className":""}}>
444
+
445
+ </Example>,
446
+ 'Stacked content body elements': props =>
447
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n DrawerPanelBody,\n Button,\n Title\n} from '@patternfly/react-core';\n\nexport const DrawerStackedContentBodyElements: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLDivElement>(undefined);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent>\n <DrawerHead>\n <Title headingLevel=\"h3\" size=\"2xl\" tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header in a Title\n </Title>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n <DrawerPanelBody hasNoPadding>Drawer panel body with no padding</DrawerPanelBody>\n <DrawerPanelBody>Drawer panel body</DrawerPanelBody>\n </DrawerPanelContent>\n );\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} onExpand={onExpand}>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>content-body</DrawerContentBody>\n <DrawerContentBody hasPadding>content-body with padding</DrawerContentBody>\n <DrawerContentBody>content-body</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Stacked content body elements","lang":"ts","className":""}}>
448
+
449
+ </Example>,
450
+ 'Modified content padding': props =>
451
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerModifiedContentPadding: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} onExpand={onExpand}>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody hasPadding>\n <b>Drawer content padding.</b> {drawerContent}\n </DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Modified content padding","lang":"ts","className":""}}>
452
+
453
+ </Example>,
454
+ 'Modified panel padding': props =>
455
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerModifiedPanelPadding: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} onExpand={onExpand}>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Modified panel padding","lang":"ts","className":""}}>
456
+
457
+ </Example>,
458
+ 'Additional section above drawer content': props =>
459
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n DrawerSection,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerAdditionalSectionAboveContent: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n drawer-panel\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} onExpand={onExpand}>\n <DrawerSection>drawer-section</DrawerSection>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Additional section above drawer content","lang":"ts","className":""}}>
460
+
461
+ </Example>,
462
+ 'Static drawer': props =>
463
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button\n} from '@patternfly/react-core';\nimport accessibility from '@patternfly/react-styles/css/utilities/Accessibility/accessibility';\n\nexport const DrawerStatic: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button className={accessibility.hiddenOnMd} aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isStatic isExpanded={isExpanded} onExpand={onExpand}>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Static drawer","lang":"ts","className":""}}>
464
+
465
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
466
+
467
+ <strong {...{"className":""}}>
468
+ {`Note:`}
469
+ </strong>
470
+ {` For mobile viewports, all drawer variants behave the same way. At the `}
471
+
472
+ <code {...{"className":"ws-code "}}>
473
+ {`md`}
474
+ </code>
475
+ {` breakpoint, or where `}
476
+
477
+ <code {...{"className":"ws-code "}}>
478
+ {`.pf-m-static{-on-[lg, xl, 2xl]}`}
479
+ </code>
480
+ {` is applied, the `}
481
+
482
+ <code {...{"className":"ws-code "}}>
483
+ {`static drawer`}
484
+ </code>
485
+ {` variant’s `}
486
+
487
+ <code {...{"className":"ws-code "}}>
488
+ {`close button`}
489
+ </code>
490
+ {` is automatically hidden because the drawer panel doesn’t close by design.`}
491
+ </p>
492
+ </Example>,
493
+ 'Breakpoint': props =>
494
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerBreakpoint: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent widths={{ default: 'width_33' }}>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} onExpand={onExpand}>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Breakpoint","lang":"ts","className":""}}>
495
+
496
+ </Example>,
497
+ 'Resizable at end': props =>
498
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerResizableAtEnd: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const onResize = (_event: MouseEvent | TouchEvent | React.KeyboardEvent, newWidth: number, id: string) => {\n // eslint-disable-next-line no-console\n console.log(`${id} has new width of: ${newWidth}`);\n };\n\n const panelContent = (\n <DrawerPanelContent isResizable onResize={onResize} id=\"end-resize-panel\" defaultSize={'500px'} minSize={'150px'}>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} onExpand={onExpand} position=\"end\">\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Resizable at end","lang":"ts","className":""}}>
499
+
500
+ </Example>,
501
+ 'Resizable at start': props =>
502
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerResizableAtStart: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent isResizable defaultSize={'500px'} minSize={'200px'}>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} onExpand={onExpand} position=\"start\">\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Resizable at start","lang":"ts","className":""}}>
503
+
504
+ </Example>,
505
+ 'Resizable on bottom': props =>
506
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button,\n DrawerContent,\n DrawerContentBody\n} from '@patternfly/react-core';\n\nexport const DrawerResizableOnBottom: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n const panelContent = (\n <DrawerPanelContent isResizable defaultSize={'200px'} minSize={'100px'}>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <div style={{ height: '400px' }}>\n <Drawer isExpanded={isExpanded} onExpand={onExpand} position=\"bottom\">\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </div>\n </Fragment>\n );\n};\n","title":"Resizable on bottom","lang":"ts","className":""}}>
507
+
508
+ </Example>,
509
+ 'Resizable on inline': props =>
510
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button,\n DrawerContent,\n DrawerContentBody\n} from '@patternfly/react-core';\n\nexport const DrawerResizableOnInline: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n const panelContent = (\n <DrawerPanelContent isResizable defaultSize={'500px'} minSize={'150px'}>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} onExpand={onExpand} isInline>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Resizable on inline","lang":"ts","className":""}}>
511
+
512
+ </Example>,
513
+ 'Panel with secondary background': props =>
514
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Checkbox,\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n DrawerSection,\n Button,\n DrawerColorVariant,\n DrawerContentColorVariant\n} from '@patternfly/react-core';\n\nexport const DrawerSecondaryBackground: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const [panelSecondary, setPanelSecondary] = useState(true);\n const [contentSecondary, setContentSecondary] = useState(false);\n const [sectionSecondary, setSectionSecondary] = useState(false);\n\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const togglePanelSecondary = (checked: boolean) => {\n setPanelSecondary(checked);\n };\n\n const toggleSectionSecondary = (checked: boolean) => {\n setSectionSecondary(checked);\n };\n\n const toggleContentSecondary = (checked: boolean) => {\n setContentSecondary(checked);\n };\n\n const panelContent = (\n <DrawerPanelContent colorVariant={panelSecondary ? DrawerColorVariant.secondary : DrawerColorVariant.default}>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Checkbox\n label=\"Secondary panel\"\n isChecked={panelSecondary}\n onChange={(_event, checked) => togglePanelSecondary(checked)}\n aria-label=\"Secondary panel checkbox\"\n id=\"toggle-secondary-panel\"\n name=\"toggle-secondary-panel\"\n />\n <Checkbox\n label=\"Secondary content\"\n isChecked={contentSecondary}\n onChange={(_event, checked) => toggleContentSecondary(checked)}\n aria-label=\"Secondary content checkbox\"\n id=\"toggle-secondary-content\"\n name=\"toggle-secondary-content\"\n />\n <Checkbox\n label=\"Secondary section\"\n isChecked={sectionSecondary}\n onChange={(_event, checked) => toggleSectionSecondary(checked)}\n aria-label=\"Secondary section checkbox\"\n id=\"toggle-secondary-section\"\n name=\"toggle-secondary-section\"\n />\n <br />\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} onExpand={onExpand}>\n <DrawerSection colorVariant={sectionSecondary ? DrawerColorVariant.secondary : DrawerColorVariant.default}>\n drawer-section\n </DrawerSection>\n <DrawerContent\n colorVariant={contentSecondary ? DrawerContentColorVariant.secondary : DrawerContentColorVariant.default}\n panelContent={panelContent}\n >\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Panel with secondary background","lang":"ts","className":""}}>
515
+
516
+ </Example>,
517
+ 'With focus trap': props =>
518
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerFocusTrap: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n // An onKeyDown property must be passed to the Drawer component to handle closing\n // the drawer panel and deactivating the focus trap via the Escape key.\n const onEscape = (event: React.KeyboardEvent) => {\n if (event.key === 'Escape') {\n setIsExpanded(false);\n }\n };\n\n const panelContent = (\n <DrawerPanelContent focusTrap={{ enabled: true }}>\n <DrawerHead>\n <span>Drawer panel header</span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer with focus trap\n </Button>\n <Drawer onKeyDown={onEscape} isExpanded={isExpanded}>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"With focus trap","lang":"ts","className":""}}>
519
+
520
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
521
+ {`When a `}
522
+
523
+ <PatternflyThemeLink {...{"to":"/accessibility/develop#trapping-focus","className":""}}>
524
+ {`focus trap`}
525
+ </PatternflyThemeLink>
526
+ {` is enabled on an element, a user will only be able to interact with the contents of that element until the focus trap is closed or deactivated.`}
527
+ </p>
528
+
529
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
530
+ {`To enable and customize a focus trap on a drawer panel, apply the `}
531
+
532
+ <code {...{"className":"ws-code "}}>
533
+ {`focusTrap`}
534
+ </code>
535
+ {` property to the `}
536
+
537
+ <code {...{"className":"ws-code "}}>
538
+ {`<DrawerPanelContent>`}
539
+ </code>
540
+ {` component. Enabling a focus trap with `}
541
+
542
+ <code {...{"className":"ws-code "}}>
543
+ {`focusTrap.enabled`}
544
+ </code>
545
+ {` will also automatically place focus on the first focusable element when the drawer panel expands, and return focus to the previously focused element when it collapses.`}
546
+ </p>
547
+
548
+ <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
549
+ {`To customize which element receives focus when the drawer panel expands, use the `}
550
+
551
+ <code {...{"className":"ws-code "}}>
552
+ {`focusTrap.elementToFocusOnExpand`}
553
+ </code>
554
+ {` property.`}
555
+ </p>
556
+ </Example>,
557
+ 'Pill': props =>
558
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerBasicPill: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} isPill onExpand={onExpand}>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Pill","lang":"ts","className":""}}>
559
+
560
+ </Example>,
561
+ 'Pill inline': props =>
562
+ <Example {...pageData} {...props} {...{"code":"import { Fragment, useRef, useState } from 'react';\nimport {\n Drawer,\n DrawerPanelContent,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerActions,\n DrawerCloseButton,\n Button\n} from '@patternfly/react-core';\n\nexport const DrawerBasicPill: React.FunctionComponent = () => {\n const [isExpanded, setIsExpanded] = useState(false);\n const drawerRef = useRef<HTMLSpanElement>(null);\n\n const onExpand = () => {\n drawerRef.current && drawerRef.current.focus();\n };\n\n const onClick = () => {\n setIsExpanded(!isExpanded);\n };\n\n const onCloseClick = () => {\n setIsExpanded(false);\n };\n\n const panelContent = (\n <DrawerPanelContent>\n <DrawerHead>\n <span tabIndex={isExpanded ? 0 : -1} ref={drawerRef}>\n Drawer panel header\n </span>\n <DrawerActions>\n <DrawerCloseButton onClick={onCloseClick} />\n </DrawerActions>\n </DrawerHead>\n </DrawerPanelContent>\n );\n\n const drawerContent =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus pretium est a porttitor vehicula. Quisque vel commodo urna. Morbi mattis rutrum ante, id vehicula ex accumsan ut. Morbi viverra, eros vel porttitor facilisis, eros purus aliquet erat,nec lobortis felis elit pulvinar sem. Vivamus vulputate, risus eget commodo eleifend, eros nibh porta quam, vitae lacinia leo libero at magna. Maecenas aliquam sagittis orci, et posuere nisi ultrices sit amet. Aliquam ex odio, malesuada sed posuere quis, pellentesque at mauris. Phasellus venenatis massa ex, eget pulvinar libero auctor pretium. Aliquam erat volutpat. Duis euismod justo in quam ullamcorper, in commodo massa vulputate.';\n\n return (\n <Fragment>\n <Button aria-expanded={isExpanded} onClick={onClick}>\n Toggle drawer\n </Button>\n <Drawer isExpanded={isExpanded} isPill isInline onExpand={onExpand}>\n <DrawerContent panelContent={panelContent}>\n <DrawerContentBody>{drawerContent}</DrawerContentBody>\n </DrawerContent>\n </Drawer>\n </Fragment>\n );\n};\n","title":"Pill inline","lang":"ts","className":""}}>
563
+
564
+ </Example>
565
+ };
566
+
567
+ const Component = () => (
568
+ <React.Fragment>
569
+ <AutoLinkHeader {...{"id":"examples","headingLevel":"h2","className":"ws-title ws-h2"}}>
570
+ {`Examples`}
571
+ </AutoLinkHeader>
572
+ {React.createElement(pageData.examples["Basic"])}
573
+ {React.createElement(pageData.examples["Panel at end"])}
574
+ {React.createElement(pageData.examples["Panel at start"])}
575
+ {React.createElement(pageData.examples["Panel on bottom"])}
576
+ {React.createElement(pageData.examples["Basic inline"])}
577
+ {React.createElement(pageData.examples["Inline panel at end"])}
578
+ {React.createElement(pageData.examples["Inline panel at start"])}
579
+ {React.createElement(pageData.examples["Stacked content body elements"])}
580
+ {React.createElement(pageData.examples["Modified content padding"])}
581
+ {React.createElement(pageData.examples["Modified panel padding"])}
582
+ {React.createElement(pageData.examples["Additional section above drawer content"])}
583
+ {React.createElement(pageData.examples["Static drawer"])}
584
+ {React.createElement(pageData.examples["Breakpoint"])}
585
+ {React.createElement(pageData.examples["Resizable at end"])}
586
+ {React.createElement(pageData.examples["Resizable at start"])}
587
+ {React.createElement(pageData.examples["Resizable on bottom"])}
588
+ {React.createElement(pageData.examples["Resizable on inline"])}
589
+ {React.createElement(pageData.examples["Panel with secondary background"])}
590
+ {React.createElement(pageData.examples["With focus trap"])}
591
+ {React.createElement(pageData.examples["Pill"])}
592
+ {React.createElement(pageData.examples["Pill inline"])}
593
+ </React.Fragment>
594
+ );
595
+ Component.displayName = 'ComponentsDrawerReactDocs';
596
+ Component.pageData = pageData;
597
+
598
+ export default Component;