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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE +21 -0
  3. package/package.json +12 -11
  4. package/patternfly-docs/generated/components/about-modal/react.js +0 -149
  5. package/patternfly-docs/generated/components/accordion/react.js +0 -262
  6. package/patternfly-docs/generated/components/action-list/react.js +0 -144
  7. package/patternfly-docs/generated/components/alert/react-demos.js +0 -56
  8. package/patternfly-docs/generated/components/alert/react.js +0 -1433
  9. package/patternfly-docs/generated/components/avatar/react.js +0 -166
  10. package/patternfly-docs/generated/components/back-to-top/react-demos.js +0 -60
  11. package/patternfly-docs/generated/components/back-to-top/react.js +0 -77
  12. package/patternfly-docs/generated/components/backdrop/react.js +0 -64
  13. package/patternfly-docs/generated/components/background-image/react.js +0 -62
  14. package/patternfly-docs/generated/components/badge/react.js +0 -97
  15. package/patternfly-docs/generated/components/banner/react-demos.js +0 -57
  16. package/patternfly-docs/generated/components/banner/react.js +0 -148
  17. package/patternfly-docs/generated/components/brand/react.js +0 -142
  18. package/patternfly-docs/generated/components/breadcrumb/react.js +0 -206
  19. package/patternfly-docs/generated/components/button/react-demos.js +0 -57
  20. package/patternfly-docs/generated/components/button/react.js +0 -826
  21. package/patternfly-docs/generated/components/card/react-demos.js +0 -201
  22. package/patternfly-docs/generated/components/card/react.js +0 -1015
  23. package/patternfly-docs/generated/components/charts/area-chart/-Victory.js +0 -1350
  24. package/patternfly-docs/generated/components/charts/bar-chart/-Victory.js +0 -1334
  25. package/patternfly-docs/generated/components/charts/box-plot-chart/-Victory.js +0 -1282
  26. package/patternfly-docs/generated/components/charts/bullet-chart/-Victory.js +0 -848
  27. package/patternfly-docs/generated/components/charts/colors-for-charts/-Victory.js +0 -192
  28. package/patternfly-docs/generated/components/charts/donut-chart/-Victory.js +0 -426
  29. package/patternfly-docs/generated/components/charts/donut-utilization-chart/-Victory.js +0 -804
  30. package/patternfly-docs/generated/components/charts/legends/-Victory.js +0 -3230
  31. package/patternfly-docs/generated/components/charts/line-chart/-Victory.js +0 -1178
  32. package/patternfly-docs/generated/components/charts/line-chart/ECharts.js +0 -525
  33. package/patternfly-docs/generated/components/charts/patterns/-Victory.js +0 -3382
  34. package/patternfly-docs/generated/components/charts/pie-chart/-Victory.js +0 -377
  35. package/patternfly-docs/generated/components/charts/resize-observer/-Victory.js +0 -2475
  36. package/patternfly-docs/generated/components/charts/sankey-chart/ECharts.js +0 -538
  37. package/patternfly-docs/generated/components/charts/scatter-chart/-Victory.js +0 -1551
  38. package/patternfly-docs/generated/components/charts/skeletons/-Victory.js +0 -4115
  39. package/patternfly-docs/generated/components/charts/sparkline-chart/-Victory.js +0 -955
  40. package/patternfly-docs/generated/components/charts/stack-chart/-Victory.js +0 -1173
  41. package/patternfly-docs/generated/components/charts/threshold-chart/-Victory.js +0 -1166
  42. package/patternfly-docs/generated/components/charts/tooltips/-Victory.js +0 -413
  43. package/patternfly-docs/generated/components/chip/react-deprecated.js +0 -323
  44. package/patternfly-docs/generated/components/clipboard-copy/react.js +0 -373
  45. package/patternfly-docs/generated/components/code-block/react.js +0 -148
  46. package/patternfly-docs/generated/components/code-editor/react.js +0 -659
  47. package/patternfly-docs/generated/components/compass/react-demos.js +0 -147
  48. package/patternfly-docs/generated/components/compass/react.js +0 -440
  49. package/patternfly-docs/generated/components/content/react.js +0 -248
  50. package/patternfly-docs/generated/components/data-list/react-demos.js +0 -90
  51. package/patternfly-docs/generated/components/data-list/react.js +0 -709
  52. package/patternfly-docs/generated/components/date-and-time/calendar-month/react.js +0 -283
  53. package/patternfly-docs/generated/components/date-and-time/date-and-time-picker/react-demos.js +0 -64
  54. package/patternfly-docs/generated/components/date-and-time/date-picker/react-demos.js +0 -83
  55. package/patternfly-docs/generated/components/date-and-time/date-picker/react.js +0 -395
  56. package/patternfly-docs/generated/components/date-and-time/time-picker/react.js +0 -241
  57. package/patternfly-docs/generated/components/description-list/react-demos.js +0 -58
  58. package/patternfly-docs/generated/components/description-list/react.js +0 -743
  59. package/patternfly-docs/generated/components/divider/react.js +0 -126
  60. package/patternfly-docs/generated/components/drag-and-drop/react-demos.js +0 -351
  61. package/patternfly-docs/generated/components/drag-and-drop/react-deprecated.js +0 -184
  62. package/patternfly-docs/generated/components/drag-and-drop/react.js +0 -137
  63. package/patternfly-docs/generated/components/drawer/react.js +0 -598
  64. package/patternfly-docs/generated/components/dual-list-selector/react-deprecated.js +0 -772
  65. package/patternfly-docs/generated/components/dual-list-selector/react.js +0 -594
  66. package/patternfly-docs/generated/components/empty-state/react.js +0 -199
  67. package/patternfly-docs/generated/components/expandable-section/react-demos.js +0 -65
  68. package/patternfly-docs/generated/components/expandable-section/react.js +0 -408
  69. package/patternfly-docs/generated/components/file-upload/multiple-file-upload/react-demos.js +0 -52
  70. package/patternfly-docs/generated/components/file-upload/multiple-file-upload/react.js +0 -398
  71. package/patternfly-docs/generated/components/file-upload/simple-file-upload/react.js +0 -749
  72. package/patternfly-docs/generated/components/forms/checkbox/react.js +0 -222
  73. package/patternfly-docs/generated/components/forms/form/react.js +0 -1106
  74. package/patternfly-docs/generated/components/forms/form-select/react.js +0 -208
  75. package/patternfly-docs/generated/components/forms/radio/react.js +0 -212
  76. package/patternfly-docs/generated/components/forms/text-area/react.js +0 -160
  77. package/patternfly-docs/generated/components/forms/text-input/react.js +0 -216
  78. package/patternfly-docs/generated/components/helper-text/react-demos.js +0 -180
  79. package/patternfly-docs/generated/components/helper-text/react.js +0 -164
  80. package/patternfly-docs/generated/components/hero/react.js +0 -88
  81. package/patternfly-docs/generated/components/hint/react.js +0 -169
  82. package/patternfly-docs/generated/components/icon/react.js +0 -215
  83. package/patternfly-docs/generated/components/input-group/react.js +0 -182
  84. package/patternfly-docs/generated/components/jump-links/react-demos.js +0 -154
  85. package/patternfly-docs/generated/components/jump-links/react.js +0 -212
  86. package/patternfly-docs/generated/components/label/react-demos.js +0 -57
  87. package/patternfly-docs/generated/components/label/react.js +0 -417
  88. package/patternfly-docs/generated/components/list/react.js +0 -175
  89. package/patternfly-docs/generated/components/login-page/react.js +0 -587
  90. package/patternfly-docs/generated/components/masthead/react-demos.js +0 -79
  91. package/patternfly-docs/generated/components/masthead/react.js +0 -291
  92. package/patternfly-docs/generated/components/menus/application-launcher/react-demos.js +0 -769
  93. package/patternfly-docs/generated/components/menus/context-selector/react-demos.js +0 -665
  94. package/patternfly-docs/generated/components/menus/custom-menus/react-demos.js +0 -187
  95. package/patternfly-docs/generated/components/menus/dropdown/react-templates.js +0 -163
  96. package/patternfly-docs/generated/components/menus/dropdown/react.js +0 -998
  97. package/patternfly-docs/generated/components/menus/menu/react.js +0 -1540
  98. package/patternfly-docs/generated/components/menus/menu-toggle/react.js +0 -747
  99. package/patternfly-docs/generated/components/menus/options-menu/react-demos.js +0 -508
  100. package/patternfly-docs/generated/components/menus/select/react-templates.js +0 -257
  101. package/patternfly-docs/generated/components/menus/select/react.js +0 -998
  102. package/patternfly-docs/generated/components/modal/react-deprecated.js +0 -554
  103. package/patternfly-docs/generated/components/modal/react.js +0 -597
  104. package/patternfly-docs/generated/components/navigation/react-demos.js +0 -356
  105. package/patternfly-docs/generated/components/navigation/react.js +0 -409
  106. package/patternfly-docs/generated/components/notification-badge/react.js +0 -196
  107. package/patternfly-docs/generated/components/notification-drawer/react-demos.js +0 -107
  108. package/patternfly-docs/generated/components/notification-drawer/react.js +0 -394
  109. package/patternfly-docs/generated/components/number-input/react.js +0 -210
  110. package/patternfly-docs/generated/components/overflow-menu/react.js +0 -274
  111. package/patternfly-docs/generated/components/page/react-demos.js +0 -149
  112. package/patternfly-docs/generated/components/page/react.js +0 -1352
  113. package/patternfly-docs/generated/components/pagination/react.js +0 -492
  114. package/patternfly-docs/generated/components/panel/react.js +0 -236
  115. package/patternfly-docs/generated/components/popover/react.js +0 -390
  116. package/patternfly-docs/generated/components/progress/react-demos.js +0 -59
  117. package/patternfly-docs/generated/components/progress/react.js +0 -283
  118. package/patternfly-docs/generated/components/progress-stepper/react-demos.js +0 -45
  119. package/patternfly-docs/generated/components/progress-stepper/react.js +0 -219
  120. package/patternfly-docs/generated/components/search-input/react-demos.js +0 -113
  121. package/patternfly-docs/generated/components/search-input/react.js +0 -263
  122. package/patternfly-docs/generated/components/sidebar/react.js +0 -236
  123. package/patternfly-docs/generated/components/simple-list/react.js +0 -200
  124. package/patternfly-docs/generated/components/skeleton/react-demos.js +0 -44
  125. package/patternfly-docs/generated/components/skeleton/react.js +0 -122
  126. package/patternfly-docs/generated/components/skip-to-content/react.js +0 -73
  127. package/patternfly-docs/generated/components/slider/react.js +0 -309
  128. package/patternfly-docs/generated/components/spinner/react.js +0 -111
  129. package/patternfly-docs/generated/components/switch/react.js +0 -163
  130. package/patternfly-docs/generated/components/table/react-demos.js +0 -355
  131. package/patternfly-docs/generated/components/table/react-deprecated.js +0 -1350
  132. package/patternfly-docs/generated/components/table/react.js +0 -3241
  133. package/patternfly-docs/generated/components/tabs/react-demos.js +0 -108
  134. package/patternfly-docs/generated/components/tabs/react.js +0 -1359
  135. package/patternfly-docs/generated/components/text-input-group/react-demos.js +0 -152
  136. package/patternfly-docs/generated/components/text-input-group/react.js +0 -278
  137. package/patternfly-docs/generated/components/tile/react-deprecated.js +0 -242
  138. package/patternfly-docs/generated/components/timestamp/react.js +0 -283
  139. package/patternfly-docs/generated/components/title/react.js +0 -94
  140. package/patternfly-docs/generated/components/toggle-group/react.js +0 -299
  141. package/patternfly-docs/generated/components/toolbar/react-demos.js +0 -66
  142. package/patternfly-docs/generated/components/toolbar/react.js +0 -932
  143. package/patternfly-docs/generated/components/tooltip/react.js +0 -241
  144. package/patternfly-docs/generated/components/tree-view/react.js +0 -429
  145. package/patternfly-docs/generated/components/truncate/react.js +0 -211
  146. package/patternfly-docs/generated/components/wizard/react-demos.js +0 -87
  147. package/patternfly-docs/generated/components/wizard/react-deprecated.js +0 -788
  148. package/patternfly-docs/generated/components/wizard/react.js +0 -986
  149. package/patternfly-docs/generated/developer-guides/open-ui-automation/react.js +0 -285
  150. package/patternfly-docs/generated/foundations-and-styles/layouts/bullseye/react.js +0 -70
  151. package/patternfly-docs/generated/foundations-and-styles/layouts/flex/react.js +0 -506
  152. package/patternfly-docs/generated/foundations-and-styles/layouts/gallery/react.js +0 -94
  153. package/patternfly-docs/generated/foundations-and-styles/layouts/grid/react.js +0 -272
  154. package/patternfly-docs/generated/foundations-and-styles/layouts/level/react.js +0 -87
  155. package/patternfly-docs/generated/foundations-and-styles/layouts/split/react.js +0 -124
  156. package/patternfly-docs/generated/foundations-and-styles/layouts/stack/react.js +0 -112
  157. package/patternfly-docs/generated/index.js +0 -1769
  158. package/patternfly-docs/generated/patterns/card-view/react-demos.js +0 -78
  159. package/patternfly-docs/generated/patterns/filters/react-demos.js +0 -141
  160. package/patternfly-docs/generated/patterns/password-generator/react-demos.js +0 -51
  161. package/patternfly-docs/generated/patterns/password-strength/react-demos.js +0 -61
  162. package/patternfly-docs/generated/patterns/primary-detail/react-demos.js +0 -124
  163. package/patternfly-docs/generated/patterns/right-to-left/react-demos.js +0 -81
@@ -1,749 +0,0 @@
1
- import React from 'react';
2
- import { AutoLinkHeader, Example, Link as PatternflyThemeLink } from '@patternfly/documentation-framework/components';
3
- import { useState } from 'react';
4
- import FileUploadIcon from '@patternfly/react-icons/dist/esm/icons/file-upload-icon';
5
- const pageData = {
6
- "id": "Simple file upload",
7
- "section": "components",
8
- "subsection": "file-upload",
9
- "deprecated": false,
10
- "template": false,
11
- "beta": false,
12
- "demo": false,
13
- "newImplementationLink": false,
14
- "source": "react",
15
- "tabName": null,
16
- "slug": "/components/file-upload/simple-file-upload/react",
17
- "sourceLink": "https://github.com/patternfly/patternfly-react/blob/main/packages/react-core/src/components/FileUpload/examples/FileUpload.md",
18
- "relPath": "packages/react-core/src/components/FileUpload/examples/FileUpload.md",
19
- "propComponents": [
20
- {
21
- "name": "FileUpload",
22
- "description": "",
23
- "props": [
24
- {
25
- "name": "allowEditingUploadedText",
26
- "type": "boolean",
27
- "description": "Flag to allow editing of a text file's contents after it is selected from disk."
28
- },
29
- {
30
- "name": "aria-label",
31
- "type": "string",
32
- "description": "Aria-label for the text area."
33
- },
34
- {
35
- "name": "browseButtonAriaDescribedby",
36
- "type": "string",
37
- "description": "ID or ID's of elements that describe the browse button. Typically this should refer\nto elements such as helper text when there are file restrictions."
38
- },
39
- {
40
- "name": "browseButtonText",
41
- "type": "string",
42
- "description": "Text for the browse button."
43
- },
44
- {
45
- "name": "children",
46
- "type": "React.ReactNode",
47
- "description": "Additional children to render after (or instead of) the file preview.",
48
- "defaultValue": "null"
49
- },
50
- {
51
- "name": "className",
52
- "type": "string",
53
- "description": "Additional classes added to the file upload container element."
54
- },
55
- {
56
- "name": "clearButtonText",
57
- "type": "string",
58
- "description": "Text for the clear button."
59
- },
60
- {
61
- "name": "dropzoneProps",
62
- "type": "Partial<DropzoneOptions>",
63
- "description": "Optional extra props to customize react-dropzone.",
64
- "defaultValue": "{}"
65
- },
66
- {
67
- "name": "filename",
68
- "type": "string",
69
- "description": "Value to be shown in the read-only filename field.",
70
- "defaultValue": "''"
71
- },
72
- {
73
- "name": "filenameAriaLabel",
74
- "type": "string",
75
- "description": "Aria-label for the read-only filename field."
76
- },
77
- {
78
- "name": "filenamePlaceholder",
79
- "type": "string",
80
- "description": "Placeholder string to display in the empty filename field."
81
- },
82
- {
83
- "name": "hideDefaultPreview",
84
- "type": "boolean",
85
- "description": "Flag to hide the built-in preview of the file (where available). If true, you can use\nthe children property to render an alternate preview."
86
- },
87
- {
88
- "name": "id",
89
- "type": "string",
90
- "description": "Unique id for the text area. Also used to generate ids for accessible labels.",
91
- "required": true
92
- },
93
- {
94
- "name": "isDisabled",
95
- "type": "boolean",
96
- "description": "Flag to show if the field is disabled."
97
- },
98
- {
99
- "name": "isLoading",
100
- "type": "boolean",
101
- "description": "Flag to show if a file is being loaded."
102
- },
103
- {
104
- "name": "isReadOnly",
105
- "type": "boolean",
106
- "description": "Flag to show if the field is read only."
107
- },
108
- {
109
- "name": "isRequired",
110
- "type": "boolean",
111
- "description": "Flag to show if the field is required."
112
- },
113
- {
114
- "name": "onClearClick",
115
- "type": "React.MouseEventHandler<HTMLButtonElement>",
116
- "description": "Clear button was clicked."
117
- },
118
- {
119
- "name": "onClick",
120
- "type": "(event: React.MouseEvent) => void",
121
- "description": "Callback for clicking on the file upload field text area. By default, prevents a click\nin the text area from opening file dialog.",
122
- "defaultValue": "(event) => event.preventDefault()"
123
- },
124
- {
125
- "name": "onDataChange",
126
- "type": "(event: DropEvent, data: string) => void",
127
- "description": "On data changed - if type='text' or type='dataURL' and file was loaded it will call this method"
128
- },
129
- {
130
- "name": "onFileInputChange",
131
- "type": "(event: DropEvent, file: File) => void",
132
- "description": "Change event emitted from the hidden \\<input type=\"file\" \\> field associated with the component",
133
- "defaultValue": "null"
134
- },
135
- {
136
- "name": "onReadFailed",
137
- "type": "(event: DropEvent, error: DOMException, fileHandle: File) => void",
138
- "description": "A callback for when the FileReader API fails.",
139
- "defaultValue": "() => {}"
140
- },
141
- {
142
- "name": "onReadFinished",
143
- "type": "(event: DropEvent, fileHandle: File) => void",
144
- "description": "A callback for when a selected file finishes loading.",
145
- "defaultValue": "() => {}"
146
- },
147
- {
148
- "name": "onReadStarted",
149
- "type": "(event: DropEvent, fileHandle: File) => void",
150
- "description": "A callback for when a selected file starts loading.",
151
- "defaultValue": "() => {}"
152
- },
153
- {
154
- "name": "onTextChange",
155
- "type": "(event: React.ChangeEvent<HTMLTextAreaElement>, text: string) => void",
156
- "description": "Text area text changed."
157
- },
158
- {
159
- "name": "spinnerAriaValueText",
160
- "type": "string",
161
- "description": "Aria-valuetext for the loading spinner."
162
- },
163
- {
164
- "name": "type",
165
- "type": "'text' | 'dataURL'",
166
- "description": "What type of file. Determines whether 'onDataChange` is called and what is\nexpected by the value property (a string for 'text' and 'dataURL', or a File object otherwise."
167
- },
168
- {
169
- "name": "validated",
170
- "type": "'success' | 'error' | 'default'",
171
- "description": "Value to indicate if the field is modified to show that validation state.\nIf set to success, field will be modified to indicate valid state.\nIf set to error, field will be modified to indicate error state."
172
- },
173
- {
174
- "name": "value",
175
- "type": "string | File",
176
- "description": "Value of the file's contents (string if text file, File object otherwise).",
177
- "defaultValue": "type === fileReaderType.text || type === fileReaderType.dataURL ? '' : null"
178
- }
179
- ]
180
- },
181
- {
182
- "name": "FileUploadField",
183
- "description": "A more customizable file upload component for implementing custom logic. Drag and drop\nfunctionality is not built in by default.",
184
- "props": [
185
- {
186
- "name": "allowEditingUploadedText",
187
- "type": "boolean",
188
- "description": "Flag to allow editing of a text file's contents after it is selected from disk.",
189
- "defaultValue": "false"
190
- },
191
- {
192
- "name": "aria-label",
193
- "type": "string",
194
- "description": "Aria-label for the text area.",
195
- "defaultValue": "'File upload'"
196
- },
197
- {
198
- "name": "browseButtonAriaDescribedby",
199
- "type": "string",
200
- "description": "ID or ID's of elements that describe the browse button. Typically this should refer\nto elements such as helper text when there are file restrictions."
201
- },
202
- {
203
- "name": "browseButtonText",
204
- "type": "string",
205
- "description": "Text for the browse button.",
206
- "defaultValue": "'Browse...'"
207
- },
208
- {
209
- "name": "children",
210
- "type": "React.ReactNode",
211
- "description": "Additional children to render after (or instead of) the file preview.",
212
- "defaultValue": "null"
213
- },
214
- {
215
- "name": "className",
216
- "type": "string",
217
- "description": "Additional classes added to the file upload field container element.",
218
- "defaultValue": "''"
219
- },
220
- {
221
- "name": "clearButtonText",
222
- "type": "string",
223
- "description": "Text for the clear button.",
224
- "defaultValue": "'Clear'"
225
- },
226
- {
227
- "name": "containerRef",
228
- "type": "React.Ref<HTMLDivElement>",
229
- "description": "A reference object to attach to the file upload field container element.",
230
- "defaultValue": "null"
231
- },
232
- {
233
- "name": "filename",
234
- "type": "string",
235
- "description": "Value to be shown in the read-only filename field.",
236
- "defaultValue": "''"
237
- },
238
- {
239
- "name": "filenameAriaLabel",
240
- "type": "string",
241
- "description": "Aria-label for the read-only filename field.",
242
- "defaultValue": "filename ? 'Read only filename' : filenamePlaceholder"
243
- },
244
- {
245
- "name": "filenamePlaceholder",
246
- "type": "string",
247
- "description": "Placeholder string to display in the empty filename field.",
248
- "defaultValue": "'Drag a file here or browse to upload'"
249
- },
250
- {
251
- "name": "hideDefaultPreview",
252
- "type": "boolean",
253
- "description": "Flag to hide the built-in preview of the file (where available). If true, you can use\nthe children property to render an alternate preview.",
254
- "defaultValue": "false"
255
- },
256
- {
257
- "name": "id",
258
- "type": "string",
259
- "description": "Unique id for the text area. Also used to generate ids for accessible labels.",
260
- "required": true
261
- },
262
- {
263
- "name": "isBrowseButtonDisabled",
264
- "type": "boolean",
265
- "description": "Flag to disable the browse button.",
266
- "defaultValue": "false"
267
- },
268
- {
269
- "name": "isClearButtonDisabled",
270
- "type": "boolean",
271
- "description": "Flag to disable the clear button.",
272
- "defaultValue": "!filename && !value"
273
- },
274
- {
275
- "name": "isDisabled",
276
- "type": "boolean",
277
- "description": "Flag to show if the field is disabled.",
278
- "defaultValue": "false"
279
- },
280
- {
281
- "name": "isDragActive",
282
- "type": "boolean",
283
- "description": "Flag to show if a file is being dragged over the file upload field.",
284
- "defaultValue": "false"
285
- },
286
- {
287
- "name": "isLoading",
288
- "type": "boolean",
289
- "description": "Flag to show if a file is being loaded.",
290
- "defaultValue": "false"
291
- },
292
- {
293
- "name": "isReadOnly",
294
- "type": "boolean",
295
- "description": "Flag to show if the field is read only.",
296
- "defaultValue": "false"
297
- },
298
- {
299
- "name": "isRequired",
300
- "type": "boolean",
301
- "description": "Flag to show if the field is required.",
302
- "defaultValue": "false"
303
- },
304
- {
305
- "name": "name",
306
- "type": "string",
307
- "description": "Name property for the text input."
308
- },
309
- {
310
- "name": "onBrowseButtonClick",
311
- "type": "(event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void",
312
- "description": "A callback for when the browse button is clicked.",
313
- "defaultValue": "() => {}"
314
- },
315
- {
316
- "name": "onClearButtonClick",
317
- "type": "(event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void",
318
- "description": "A callback for when the clear button is clicked.",
319
- "defaultValue": "() => {}"
320
- },
321
- {
322
- "name": "onTextAreaBlur",
323
- "type": "(event?: any) => void",
324
- "description": "Callback for when focus is lost on the text area field."
325
- },
326
- {
327
- "name": "onTextAreaClick",
328
- "type": "(event: React.MouseEvent<HTMLTextAreaElement, MouseEvent>) => void",
329
- "description": "A callback for when the text area is clicked. Can also be set via the onClick property\nof the file upload component."
330
- },
331
- {
332
- "name": "onTextChange",
333
- "type": "(event: React.ChangeEvent<HTMLTextAreaElement>, text: string) => void",
334
- "description": "Text area text changed."
335
- },
336
- {
337
- "name": "spinnerAriaValueText",
338
- "type": "string",
339
- "description": "Aria-valuetext for the loading spinner."
340
- },
341
- {
342
- "name": "textAreaPlaceholder",
343
- "type": "string",
344
- "description": "Placeholder string to display in the empty text area field.",
345
- "defaultValue": "''"
346
- },
347
- {
348
- "name": "type",
349
- "type": "'text' | 'dataURL'",
350
- "description": "What type of file. Determines what is is expected by the value property (a string for\n'text' and 'dataURL', or a File object otherwise)."
351
- },
352
- {
353
- "name": "validated",
354
- "type": "'success' | 'error' | 'default'",
355
- "description": "Value to indicate if the field is modified to show that validation state.\nIf set to success, field will be modified to indicate valid state.\nIf set to error, field will be modified to indicate error state.",
356
- "defaultValue": "'default'"
357
- },
358
- {
359
- "name": "value",
360
- "type": "string | File",
361
- "description": "Value of the file's contents (string if text file, File object otherwise).",
362
- "defaultValue": "''"
363
- }
364
- ]
365
- }
366
- ],
367
- "cssPrefix": [
368
- "pf-v6-c-file-upload"
369
- ],
370
- "examples": [
371
- "Simple text file",
372
- "With helper text",
373
- "Text file with edits allowed",
374
- "Text file with restrictions",
375
- "Simple file of any format",
376
- "Custom file preview",
377
- "Custom file upload"
378
- ]
379
- };
380
- pageData.liveContext = {
381
- useState,
382
- FileUploadIcon
383
- };
384
- pageData.examples = {
385
- 'Simple text file': props =>
386
- <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { FileUpload, DropEvent } from '@patternfly/react-core';\n\nexport const SimpleTextFileUpload: React.FunctionComponent = () => {\n const [value, setValue] = useState('');\n const [filename, setFilename] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n\n const handleFileInputChange = (_, file: File) => {\n setFilename(file.name);\n };\n\n const handleTextChange = (_event: React.ChangeEvent<HTMLTextAreaElement>, value: string) => {\n setValue(value);\n };\n\n const handleDataChange = (_event: DropEvent, value: string) => {\n setValue(value);\n };\n\n const handleClear = (_event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n setFilename('');\n setValue('');\n };\n\n const handleFileReadStarted = (_event: DropEvent, _fileHandle: File) => {\n setIsLoading(true);\n };\n\n const handleFileReadFinished = (_event: DropEvent, _fileHandle: File) => {\n setIsLoading(false);\n };\n\n return (\n <FileUpload\n id=\"text-file-simple\"\n type=\"text\"\n value={value}\n filename={filename}\n filenamePlaceholder=\"Drag and drop a file or upload one\"\n onFileInputChange={handleFileInputChange}\n onDataChange={handleDataChange}\n onTextChange={handleTextChange}\n onReadStarted={handleFileReadStarted}\n onReadFinished={handleFileReadFinished}\n onClearClick={handleClear}\n isLoading={isLoading}\n allowEditingUploadedText={false}\n browseButtonText=\"Upload\"\n />\n );\n};\n","title":"Simple text file","lang":"ts","className":""}}>
387
-
388
- </Example>,
389
- 'With helper text': props =>
390
- <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { FileUpload, FileUploadHelperText, HelperText, HelperTextItem, DropEvent } from '@patternfly/react-core';\n\nexport const FileUploadWithHelperText: React.FunctionComponent = () => {\n const [value, setValue] = useState('');\n const [filename, setFilename] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n\n const handleFileInputChange = (_, file: File) => {\n setFilename(file.name);\n };\n\n const handleTextChange = (_event: React.ChangeEvent<HTMLTextAreaElement>, value: string) => {\n setValue(value);\n };\n\n const handleDataChange = (_event: DropEvent, value: string) => {\n setValue(value);\n };\n\n const handleClear = (_event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n setFilename('');\n setValue('');\n };\n\n const handleFileReadStarted = (_event: DropEvent, _fileHandle: File) => {\n setIsLoading(true);\n };\n\n const handleFileReadFinished = (_event: DropEvent, _fileHandle: File) => {\n setIsLoading(false);\n };\n\n return (\n <FileUpload\n id=\"file-upload-helper-text\"\n type=\"text\"\n value={value}\n filename={filename}\n filenamePlaceholder=\"Drag and drop a file or upload one\"\n onFileInputChange={handleFileInputChange}\n onDataChange={handleDataChange}\n onTextChange={handleTextChange}\n onReadStarted={handleFileReadStarted}\n onReadFinished={handleFileReadFinished}\n onClearClick={handleClear}\n isLoading={isLoading}\n allowEditingUploadedText={false}\n browseButtonText=\"Upload\"\n browseButtonAriaDescribedby=\"helper-text-example-helpText\"\n >\n <FileUploadHelperText>\n <HelperText>\n <HelperTextItem id=\"helper-text-example-helpText\">Upload a CSV file</HelperTextItem>\n </HelperText>\n </FileUploadHelperText>\n </FileUpload>\n );\n};\n","title":"With helper text","lang":"ts","className":""}}>
391
-
392
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
393
- {`You can pass in the `}
394
-
395
- <code {...{"className":"ws-code "}}>
396
- {`<FileUploadHelperText`}
397
- </code>
398
- {` sub-component via the `}
399
-
400
- <code {...{"className":"ws-code "}}>
401
- {`children`}
402
- </code>
403
- {` property to `}
404
-
405
- <code {...{"className":"ws-code "}}>
406
- {`<FileUpload>`}
407
- </code>
408
- {`.`}
409
- </p>
410
- </Example>,
411
- 'Text file with edits allowed': props =>
412
- <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { FileUpload, DropEvent } from '@patternfly/react-core';\n\nexport const TextFileWithEditsAllowed: React.FunctionComponent = () => {\n const [value, setValue] = useState('');\n const [filename, setFilename] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n\n const handleFileInputChange = (_, file: File) => {\n setFilename(file.name);\n };\n\n const handleTextChange = (_event: React.ChangeEvent<HTMLTextAreaElement>, value: string) => {\n setValue(value);\n };\n\n const handleDataChange = (_event: DropEvent, value: string) => {\n setValue(value);\n };\n\n const handleClear = (_event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n setFilename('');\n setValue('');\n };\n\n const handleFileReadStarted = (_event: DropEvent, _fileHandle: File) => {\n setIsLoading(true);\n };\n\n const handleFileReadFinished = (_event: DropEvent, _fileHandle: File) => {\n setIsLoading(false);\n };\n\n return (\n <FileUpload\n id=\"text-file-with-edits-allowed-example\"\n type=\"text\"\n value={value}\n filename={filename}\n filenamePlaceholder=\"Drag and drop a file or upload one\"\n onFileInputChange={handleFileInputChange}\n onDataChange={handleDataChange}\n onTextChange={handleTextChange}\n onReadStarted={handleFileReadStarted}\n onReadFinished={handleFileReadFinished}\n onClearClick={handleClear}\n isLoading={isLoading}\n allowEditingUploadedText={true}\n browseButtonText=\"Upload\"\n />\n );\n};\n","title":"Text file with edits allowed","lang":"ts","className":""}}>
413
-
414
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
415
- {`A user can always type instead of selecting a file, but by default, once a user selects a text file from their disk they are not allowed to edit it (to prevent unintended changes to a format-sensitive file). This behavior can be changed with the `}
416
-
417
- <code {...{"className":"ws-code "}}>
418
- {`allowEditingUploadedText`}
419
- </code>
420
- {` prop.
421
- Typing/pasting text in the box will call `}
422
-
423
- <code {...{"className":"ws-code "}}>
424
- {`onTextChange`}
425
- </code>
426
- {` with a string, and a string value is expected for the `}
427
-
428
- <code {...{"className":"ws-code "}}>
429
- {`value`}
430
- </code>
431
- {` prop. :`}
432
- </p>
433
- </Example>,
434
- 'Text file with restrictions': props =>
435
- <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport {\n FileUpload,\n DropzoneErrorCode,\n FileUploadHelperText,\n Form,\n FormGroup,\n HelperText,\n HelperTextItem,\n DropEvent\n} from '@patternfly/react-core';\n\nexport const TextFileUploadWithRestrictions: React.FunctionComponent = () => {\n const [value, setValue] = useState('');\n const [filename, setFilename] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [isRejected, setIsRejected] = useState(false);\n const [message, setMessage] = useState('Must be a CSV file no larger than 1 KB');\n\n const handleFileInputChange = (_, file: File) => {\n setFilename(file.name);\n };\n\n const handleTextChange = (_event: React.ChangeEvent<HTMLTextAreaElement>, value: string) => {\n setValue(value);\n };\n\n const handleDataChange = (_event: DropEvent, value: string) => {\n setValue(value);\n };\n\n const reset = () => {\n setFilename('');\n setValue('');\n };\n\n const handleClear = (_event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n reset();\n setIsRejected(false);\n };\n\n const handleFileRejected = () => {\n reset();\n setIsRejected(true);\n };\n\n const handleFileAccepted = () => {\n setIsRejected(false);\n };\n\n const handleFileReadStarted = (_event: DropEvent, _fileHandle: File) => {\n setIsLoading(true);\n };\n\n const handleFileReadFinished = (_event: DropEvent, _fileHandle: File) => {\n setIsLoading(false);\n };\n\n return (\n <Form>\n <FormGroup fieldId=\"text-file-with-restrictions-example\">\n <FileUpload\n id=\"text-file-with-restrictions-example\"\n type=\"text\"\n value={value}\n filename={filename}\n filenamePlaceholder=\"Drag and drop a file or upload one\"\n onFileInputChange={handleFileInputChange}\n onDataChange={handleDataChange}\n onTextChange={handleTextChange}\n onReadStarted={handleFileReadStarted}\n onReadFinished={handleFileReadFinished}\n onClearClick={handleClear}\n isLoading={isLoading}\n dropzoneProps={{\n accept: { 'text/csv': ['.csv'] },\n maxSize: 1024,\n onDropRejected: (rejections) => {\n const error = rejections[0].errors[0];\n if (error.code === DropzoneErrorCode.FileTooLarge) {\n setMessage('File is too big');\n } else if (error.code === DropzoneErrorCode.FileInvalidType) {\n setMessage('File is not a CSV file');\n }\n handleFileRejected();\n },\n onDropAccepted: handleFileAccepted\n }}\n validated={isRejected ? 'error' : 'default'}\n browseButtonText=\"Upload\"\n browseButtonAriaDescribedby=\"restricted-file-example-helpText\"\n >\n <FileUploadHelperText>\n <HelperText isLiveRegion>\n <HelperTextItem id=\"restricted-file-example-helpText\" variant={isRejected ? 'error' : 'default'}>\n {isRejected ? message : 'Upload a CSV file'}\n </HelperTextItem>\n </HelperText>\n </FileUploadHelperText>\n </FileUpload>\n </FormGroup>\n </Form>\n );\n};\n","title":"Text file with restrictions","lang":"ts","className":""}}>
436
-
437
- </Example>,
438
- 'Simple file of any format': props =>
439
- <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { FileUpload } from '@patternfly/react-core';\n\nexport const SimpleFileUpload: React.FunctionComponent = () => {\n const [value, setValue] = useState('');\n const [filename, setFilename] = useState('');\n\n const handleFileInputChange = (_, file: File) => {\n setFilename(file.name);\n };\n\n const handleClear = (_event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n setFilename('');\n setValue('');\n };\n\n return (\n <FileUpload\n id=\"simple-file\"\n value={value}\n filename={filename}\n filenamePlaceholder=\"Drag and drop a file or upload one\"\n onFileInputChange={handleFileInputChange}\n onClearClick={handleClear}\n browseButtonText=\"Upload\"\n />\n );\n};\n","title":"Simple file of any format","lang":"ts","className":""}}>
440
-
441
- </Example>,
442
- 'Custom file preview': props =>
443
- <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { FileUpload } from '@patternfly/react-core';\nimport FileUploadIcon from '@patternfly/react-icons/dist/esm/icons/file-upload-icon';\n\nexport const CustomPreviewFileUpload: React.FunctionComponent = () => {\n const [value, setValue] = useState<File>();\n const [filename, setFilename] = useState('');\n\n const handleFileInputChange = (_, file: File) => {\n setValue(file);\n setFilename(file.name);\n };\n\n const handleClear = (_event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n setFilename('');\n setValue(undefined);\n };\n\n return (\n <FileUpload\n id=\"customized-preview-file\"\n value={value}\n filename={filename}\n filenamePlaceholder=\"Drag and drop a file or upload one\"\n onFileInputChange={handleFileInputChange}\n onClearClick={handleClear}\n hideDefaultPreview\n browseButtonText=\"Upload\"\n >\n {value && (\n <div>\n <FileUploadIcon width=\"2em\" height=\"2em\" /> Custom preview here for your {value.size}-byte file named{' '}\n {value.name}\n </div>\n )}\n </FileUpload>\n );\n};\n","title":"Custom file preview","lang":"ts","className":""}}>
444
-
445
- </Example>,
446
- 'Custom file upload': props =>
447
- <Example {...pageData} {...props} {...{"code":"import { useState } from 'react';\nimport { FileUploadField, FileUploadHelperText, HelperText, HelperTextItem, Checkbox } from '@patternfly/react-core';\n\nexport const CustomPreviewFileUpload: React.FunctionComponent = () => {\n const properties = [\n 'filename',\n 'isBrowseButtonDisabled',\n 'isClearButtonDisabled',\n 'isDragActive',\n 'isLoading',\n 'hideDefaultPreview',\n 'hasCustomFilePreview',\n 'hasHelperText',\n 'hasPlaceholderText'\n ];\n\n const [value, setValue] = useState('');\n const [filename, setFilename] = useState(false);\n const [isBrowseButtonDisabled, setIsBrowseButtonDisabled] = useState(true);\n const [isClearButtonDisabled, setIsClearButtonDisabled] = useState(true);\n const [isLoading, setIsLoading] = useState(false);\n const [isDragActive, setIsDragActive] = useState(false);\n const [hideDefaultPreview, setHideDefaultPreview] = useState(false);\n const [hasCustomFilePreview, setHasCustomFilePreview] = useState(false);\n const [hasHelperText, setHasHelperText] = useState(false);\n const [hasPlaceholderText, setHasPlaceholderText] = useState(false);\n const [checkedState, setCheckedState] = useState([\n filename,\n isBrowseButtonDisabled,\n isClearButtonDisabled,\n isLoading,\n isDragActive,\n hideDefaultPreview,\n hasCustomFilePreview,\n hasHelperText,\n hasPlaceholderText\n ]);\n\n const handleTextAreaChange = (_event: React.ChangeEvent<HTMLTextAreaElement>, value: string) => {\n setValue(value);\n };\n\n const handleOnChange = (checked: boolean, stateKey: string, index: number) => {\n const updatedCheckedState = [...checkedState];\n switch (stateKey) {\n case 'filename':\n checked ? setFilename(true) : setFilename(false);\n break;\n\n case 'isBrowseButtonDisabled':\n checked ? setIsBrowseButtonDisabled(true) : setIsBrowseButtonDisabled(false);\n break;\n\n case 'isClearButtonDisabled':\n checked ? setIsClearButtonDisabled(true) : setIsClearButtonDisabled(false);\n break;\n\n case 'isDragActive':\n checked ? setIsDragActive(true) : setIsDragActive(false);\n break;\n\n case 'isLoading':\n checked ? setIsLoading(true) : setIsLoading(false);\n // See notes above this example\n if (checked) {\n updatedCheckedState[properties.indexOf('hideDefaultPreview')] = false;\n setHideDefaultPreview(false);\n }\n break;\n\n case 'hideDefaultPreview':\n checked ? setHideDefaultPreview(true) : setHideDefaultPreview(false);\n // See notes above this example\n if (checked) {\n updatedCheckedState[properties.indexOf('isLoading')] = false;\n setIsLoading(false);\n }\n break;\n\n case 'hasCustomFilePreview':\n checked ? setHasCustomFilePreview(true) : setHasCustomFilePreview(false);\n break;\n\n case 'hasHelperText':\n checked ? setHasHelperText(true) : setHasHelperText(false);\n break;\n\n case 'hasPlaceholderText':\n checked ? setHasPlaceholderText(true) : setHasPlaceholderText(false);\n break;\n }\n updatedCheckedState[index] = checked;\n setCheckedState(updatedCheckedState);\n };\n\n return (\n <div>\n {properties.map((stateKey, index) => (\n <Checkbox\n name={stateKey}\n key={stateKey}\n id={stateKey}\n label={stateKey}\n aria-label={stateKey}\n isChecked={checkedState[index]}\n onChange={(_event, checked) => handleOnChange(checked, stateKey, index)}\n />\n ))}\n <br />\n <FileUploadField\n id=\"custom-file-upload-example\"\n type=\"text\"\n value={value}\n filename={filename ? 'example-filename.txt' : ''}\n onTextChange={handleTextAreaChange}\n filenamePlaceholder=\"Do something custom with this!\"\n onBrowseButtonClick={() => alert('Browse button clicked!')}\n onClearButtonClick={() => alert('Clear button clicked!')}\n isBrowseButtonDisabled={isBrowseButtonDisabled}\n isClearButtonDisabled={isClearButtonDisabled}\n isLoading={isLoading}\n isDragActive={isDragActive}\n hideDefaultPreview={hideDefaultPreview}\n browseButtonText=\"Upload\"\n browseButtonAriaDescribedby={hasHelperText ? 'custom-upload-helpText' : undefined}\n textAreaPlaceholder={hasPlaceholderText ? 'File preview' : ''}\n >\n {hasCustomFilePreview && <div>(A custom preview of the uploaded file can be passed as children)</div>}\n {hasHelperText && (\n <FileUploadHelperText>\n <HelperText>\n <HelperTextItem id=\"custom-upload-helpText\">Upload a CSV file</HelperTextItem>\n </HelperText>\n </FileUploadHelperText>\n )}\n </FileUploadField>\n </div>\n );\n};\n","title":"Custom file upload","lang":"ts","className":""}}>
448
-
449
- </Example>
450
- };
451
-
452
- const Component = () => (
453
- <React.Fragment>
454
- <AutoLinkHeader {...{"id":"examples","headingLevel":"h2","className":"ws-title ws-h2"}}>
455
- {`Examples`}
456
- </AutoLinkHeader>
457
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
458
- {`The `}
459
- <code {...{"className":"ws-code "}}>
460
- {`FileUpload`}
461
- </code>
462
- {` component can accept a file via browse or drag-and-drop, and behaves like a standard form field with its `}
463
- <code {...{"className":"ws-code "}}>
464
- {`value`}
465
- </code>
466
- {` and `}
467
- <code {...{"className":"ws-code "}}>
468
- {`onFileInputChange`}
469
- </code>
470
- {` event that is similar to `}
471
- <code {...{"className":"ws-code "}}>
472
- {`<input onChange="...">`}
473
- </code>
474
- {` prop. The `}
475
- <code {...{"className":"ws-code "}}>
476
- {`type`}
477
- </code>
478
- {` prop determines how the `}
479
- <code {...{"className":"ws-code "}}>
480
- {`FileUpload`}
481
- </code>
482
- {` component behaves upon accepting a file, what type of value it passes to its `}
483
- <code {...{"className":"ws-code "}}>
484
- {`onDataChange`}
485
- </code>
486
- {` event.`}
487
- </p>
488
- <AutoLinkHeader {...{"id":"text-files","headingLevel":"h3","className":"ws-title ws-h3"}}>
489
- {`Text files`}
490
- </AutoLinkHeader>
491
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
492
- {`If `}
493
- <code {...{"className":"ws-code "}}>
494
- {`type="text"`}
495
- </code>
496
- {` is passed (and `}
497
- <code {...{"className":"ws-code "}}>
498
- {`hideDefaultPreview`}
499
- </code>
500
- {` is not), a `}
501
- <code {...{"className":"ws-code "}}>
502
- {`TextArea`}
503
- </code>
504
- {` preview will be rendered underneath the filename bar. When a file is selected, its contents will be read into memory and passed to the `}
505
- <code {...{"className":"ws-code "}}>
506
- {`onDataChange`}
507
- </code>
508
- {` event as a string. Every filename change is passed to `}
509
- <code {...{"className":"ws-code "}}>
510
- {`onFileInputChange`}
511
- </code>
512
- {` same as it would do with the `}
513
- <code {...{"className":"ws-code "}}>
514
- {`<input>`}
515
- </code>
516
- {` element.
517
- Pressing `}
518
- <em {...{"className":""}}>
519
- {`Clear`}
520
- </em>
521
- {` button triggers `}
522
- <code {...{"className":"ws-code "}}>
523
- {`onClearClick`}
524
- </code>
525
- {` event.`}
526
- </p>
527
- {React.createElement(pageData.examples["Simple text file"])}
528
- {React.createElement(pageData.examples["With helper text"])}
529
- {React.createElement(pageData.examples["Text file with edits allowed"])}
530
- <AutoLinkHeader {...{"id":"restricting-file-size-and-type","headingLevel":"h3","className":"ws-title ws-h3"}}>
531
- {`Restricting file size and type`}
532
- </AutoLinkHeader>
533
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
534
- {`Any `}
535
- <PatternflyThemeLink {...{"to":"https://react-dropzone.js.org/#!/Dropzone","className":""}}>
536
- {`props accepted by `}
537
- <code {...{"className":"ws-code "}}>
538
- {`react-dropzone`}
539
- </code>
540
- {`'s `}
541
- <code {...{"className":"ws-code "}}>
542
- {`Dropzone`}
543
- </code>
544
- {` component`}
545
- </PatternflyThemeLink>
546
- {` can be passed as a `}
547
- <code {...{"className":"ws-code "}}>
548
- {`dropzoneProps`}
549
- </code>
550
- {` object in order to customize the behavior of the Dropzone, such as restricting the size and type of files allowed. You can also capture and act upon native `}
551
- <code {...{"className":"ws-code "}}>
552
- {`react-dropzone`}
553
- </code>
554
- {` errors using the exposed `}
555
- <code {...{"className":"ws-code "}}>
556
- {`DropzoneErrorCode`}
557
- </code>
558
- {` enum. The following example will only accept CSV files smaller than 1 KB. Note that file type determination is not reliable across platforms (see the note on react-dropzone's docs about the `}
559
- <code {...{"className":"ws-code "}}>
560
- {`accept`}
561
- </code>
562
- {` prop), so be sure to test the behavior of your file upload restriction on all browsers and operating systems targeted by your application.`}
563
- </p>
564
- <AutoLinkHeader {...{"id":"important-a-note-about-security","headingLevel":"h4","className":"ws-title ws-h4"}}>
565
- {`IMPORTANT: A note about security`}
566
- </AutoLinkHeader>
567
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
568
- {`Restricting file sizes and types in this way is for user convenience only, and it cannot prevent a malicious user from submitting anything to your server. As with any user input, your application should also validate, sanitize and/or reject restricted files on the server side.`}
569
- </p>
570
- {React.createElement(pageData.examples["Text file with restrictions"])}
571
- <AutoLinkHeader {...{"id":"other-file-types","headingLevel":"h3","className":"ws-title ws-h3"}}>
572
- {`Other file types`}
573
- </AutoLinkHeader>
574
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
575
- {`If no `}
576
- <code {...{"className":"ws-code "}}>
577
- {`type`}
578
- </code>
579
- {` prop is specified, the component will not read files directly. When a file is selected, a `}
580
- <PatternflyThemeLink {...{"to":"https://developer.mozilla.org/en-US/docs/Web/API/File","className":""}}>
581
- <code {...{"className":"ws-code "}}>
582
- {`File`}
583
- </code>
584
- {` object`}
585
- </PatternflyThemeLink>
586
- {` will be passed as a second argument to `}
587
- <code {...{"className":"ws-code "}}>
588
- {`onFileInputChange`}
589
- </code>
590
- {` and your application will be responsible for reading from it (e.g. by using the `}
591
- <PatternflyThemeLink {...{"to":"https://developer.mozilla.org/en-US/docs/Web/API/FileReader","className":""}}>
592
- {`FileReader API`}
593
- </PatternflyThemeLink>
594
- {` or attaching it to a `}
595
- <PatternflyThemeLink {...{"to":"https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects","className":""}}>
596
- {`FormData object`}
597
- </PatternflyThemeLink>
598
- {`). A `}
599
- <code {...{"className":"ws-code "}}>
600
- {`File`}
601
- </code>
602
- {` object will also be expected for the `}
603
- <code {...{"className":"ws-code "}}>
604
- {`value`}
605
- </code>
606
- {` prop instead of a string, and no preview of the file contents will be shown by default. The `}
607
- <code {...{"className":"ws-code "}}>
608
- {`onReadStarted`}
609
- </code>
610
- {` and `}
611
- <code {...{"className":"ws-code "}}>
612
- {`onReadFinished`}
613
- </code>
614
- {` callbacks will also not be called since the component is not reading the file.`}
615
- </p>
616
- {React.createElement(pageData.examples["Simple file of any format"])}
617
- <AutoLinkHeader {...{"id":"customizing-the-file-preview","headingLevel":"h3","className":"ws-title ws-h3"}}>
618
- {`Customizing the file preview`}
619
- </AutoLinkHeader>
620
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
621
- {`Regardless of `}
622
- <code {...{"className":"ws-code "}}>
623
- {`type`}
624
- </code>
625
- {`, the preview area (the TextArea, or any future implementations of default previews for other types) can be removed by passing `}
626
- <code {...{"className":"ws-code "}}>
627
- {`hideDefaultPreview`}
628
- </code>
629
- {`, and a custom one can be rendered by passing `}
630
- <code {...{"className":"ws-code "}}>
631
- {`children`}
632
- </code>
633
- {`.`}
634
- </p>
635
- {React.createElement(pageData.examples["Custom file preview"])}
636
- <AutoLinkHeader {...{"id":"bringing-your-own-file-browse-logic","headingLevel":"h3","className":"ws-title ws-h3"}}>
637
- {`Bringing your own file browse logic`}
638
- </AutoLinkHeader>
639
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
640
- <code {...{"className":"ws-code "}}>
641
- {`FileUpload`}
642
- </code>
643
- {` is a thin wrapper around the `}
644
- <code {...{"className":"ws-code "}}>
645
- {`FileUploadField`}
646
- </code>
647
- {` presentational component. If you need to implement your own logic for accepting files, you can instead render a `}
648
- <code {...{"className":"ws-code "}}>
649
- {`FileUploadField`}
650
- </code>
651
- {` directly, which does not include `}
652
- <code {...{"className":"ws-code "}}>
653
- {`react-dropzone`}
654
- </code>
655
- {` and requires additional props (e.g. `}
656
- <code {...{"className":"ws-code "}}>
657
- {`onBrowseButtonClick`}
658
- </code>
659
- {`, `}
660
- <code {...{"className":"ws-code "}}>
661
- {`onClearButtonClick`}
662
- </code>
663
- {`, `}
664
- <code {...{"className":"ws-code "}}>
665
- {`isDragActive`}
666
- </code>
667
- {`).`}
668
- </p>
669
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
670
- {`Note that the `}
671
- <code {...{"className":"ws-code "}}>
672
- {`isLoading`}
673
- </code>
674
- {` prop is styled to position the spinner dead center above the entire component, so it should not be used with `}
675
- <code {...{"className":"ws-code "}}>
676
- {`hideDefaultPreview`}
677
- </code>
678
- {` unless a custom empty-state preview is provided via `}
679
- <code {...{"className":"ws-code "}}>
680
- {`children`}
681
- </code>
682
- {`. The below example prevents `}
683
- <code {...{"className":"ws-code "}}>
684
- {`isLoading`}
685
- </code>
686
- {` and `}
687
- <code {...{"className":"ws-code "}}>
688
- {`hideDefaultPreview`}
689
- </code>
690
- {` from being used at the same time. You can always provide your own spinner as part of the `}
691
- <code {...{"className":"ws-code "}}>
692
- {`children`}
693
- </code>
694
- {`!`}
695
- </p>
696
- {React.createElement(pageData.examples["Custom file upload"])}
697
- <AutoLinkHeader {...{"id":"types","headingLevel":"h2","className":"ws-title ws-h2"}}>
698
- {`Types`}
699
- </AutoLinkHeader>
700
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
701
- {`File upload uses the `}
702
- <code {...{"className":"ws-code "}}>
703
- {`DropzoneOptions`}
704
- </code>
705
- {` type from react-dropzone. It is comprised of additional props with their own types. For more information on using `}
706
- <code {...{"className":"ws-code "}}>
707
- {`DropzoneOptions`}
708
- </code>
709
- {` visit `}
710
- <PatternflyThemeLink {...{"to":"https://react-dropzone.js.org/#src","className":""}}>
711
- {`react-dropzone props and methods`}
712
- </PatternflyThemeLink>
713
- {`.`}
714
- </p>
715
- <p {...{"className":"pf-v6-c-content--p pf-m-editorial ws-p "}}>
716
- {`Additionally, it calls the `}
717
- <code {...{"className":"ws-code "}}>
718
- {`onDataChange`}
719
- </code>
720
- {`, `}
721
- <code {...{"className":"ws-code "}}>
722
- {`onReadFailed`}
723
- </code>
724
- {`, `}
725
- <code {...{"className":"ws-code "}}>
726
- {`onReadFinished`}
727
- </code>
728
- {`, and `}
729
- <code {...{"className":"ws-code "}}>
730
- {`onReadStarted`}
731
- </code>
732
- {` callbacks with an event of type `}
733
- <code {...{"className":"ws-code "}}>
734
- {`DropEvent`}
735
- </code>
736
- {`. `}
737
- <code {...{"className":"ws-code "}}>
738
- {`DropEvent`}
739
- </code>
740
- {` is a union comprised of the following types:`}
741
- </p>
742
- <Example {...{"code":"React.DragEvent<HTMLElement>\n | React.ChangeEvent<HTMLInputElement>\n | DragEvent\n | Event","lang":"noLive","className":""}}>
743
- </Example>
744
- </React.Fragment>
745
- );
746
- Component.displayName = 'ComponentsFileUploadSimpleFileUploadReactDocs';
747
- Component.pageData = pageData;
748
-
749
- export default Component;