@infineon/infineon-design-system-stencil 33.3.1--canary.1824.9e747abc2c6c3dcc35abd2895ce37d503bd1f141.0 → 33.3.1--canary.1824.e1559ee81653274f5bb99ff7cef4239151a38f75.0
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.
@@ -1,4 +1,38 @@
|
|
1
1
|
import { action } from "@storybook/addon-actions";
|
2
|
+
const hideAllControlsExcept = (allowedKeys) => {
|
3
|
+
const allProps = [
|
4
|
+
'dragAndDrop', 'label', 'required', 'labelRequiredError', 'disabled', 'maxFiles', 'maxFileSizeMB',
|
5
|
+
'allowedFileTypes', 'additionalAllowedFileTypes', 'labelBrowseFiles', 'labelDragAndDrop',
|
6
|
+
'labelUploadedFilesHeading', 'labelFileTooLarge', 'labelUnsupportedFileType', 'labelUploaded',
|
7
|
+
'labelSupportedFormatsTemplate', 'labelFileSingular', 'labelFilePlural', 'labelMaxFilesInfo',
|
8
|
+
'labelMaxFilesExceeded', 'labelUploadFailed', 'ariaLabelBrowseFiles', 'ariaLabelDropzone',
|
9
|
+
'ariaLabelFileInput', 'ariaLabelRemoveFile', 'ariaLabelCancelUpload', 'ariaLabelRetryUpload',
|
10
|
+
'ariaLabelUploadingStatus', 'ariaLabelUploadedStatus', 'ariaLabelUploadFailedStatus'
|
11
|
+
];
|
12
|
+
const argTypes = {};
|
13
|
+
for (const prop of allProps) {
|
14
|
+
if (!allowedKeys.includes(prop)) {
|
15
|
+
argTypes[prop] = { table: { disable: true } };
|
16
|
+
}
|
17
|
+
}
|
18
|
+
return argTypes;
|
19
|
+
};
|
20
|
+
const disableCustomEventControls = {
|
21
|
+
ifxFileUploadAdd: { table: { disable: true } },
|
22
|
+
ifxFileUploadRemove: { table: { disable: true } },
|
23
|
+
ifxFileUploadChange: { table: { disable: true } },
|
24
|
+
ifxFileUploadError: { table: { disable: true } },
|
25
|
+
ifxFileUploadInvalid: { table: { disable: true } },
|
26
|
+
ifxFileUploadStart: { table: { disable: true } },
|
27
|
+
ifxFileUploadComplete: { table: { disable: true } },
|
28
|
+
ifxFileUploadAllComplete: { table: { disable: true } },
|
29
|
+
ifxFileUploadAbort: { table: { disable: true } },
|
30
|
+
ifxFileUploadDrop: { table: { disable: true } },
|
31
|
+
ifxFileUploadClick: { table: { disable: true } },
|
32
|
+
ifxFileUploadMaxFilesExceeded: { table: { disable: true } },
|
33
|
+
ifxFileUploadValidation: { table: { disable: true } },
|
34
|
+
ifxFileUploadRetry: { table: { disable: true } }
|
35
|
+
};
|
2
36
|
const meta = {
|
3
37
|
title: 'Components/File Upload',
|
4
38
|
tags: ['autodocs'],
|
@@ -6,232 +40,230 @@ const meta = {
|
|
6
40
|
controls: { expanded: true },
|
7
41
|
docs: {
|
8
42
|
description: {
|
9
|
-
component: 'Upload component with different interaction styles: button or drag-and-drop area.'
|
10
|
-
}
|
11
|
-
}
|
43
|
+
component: 'Upload component with different interaction styles: button or drag-and-drop area.',
|
44
|
+
},
|
45
|
+
},
|
12
46
|
},
|
13
47
|
argTypes: {
|
14
|
-
//
|
48
|
+
// --- FUNCTION ---
|
15
49
|
dragAndDrop: {
|
50
|
+
description: 'Enables drag-and-drop upload area.',
|
16
51
|
control: 'boolean',
|
17
|
-
|
52
|
+
table: { category: 'Function', defaultValue: { summary: 'false' } },
|
18
53
|
},
|
19
54
|
required: {
|
55
|
+
description: 'Marks the upload as required.',
|
20
56
|
control: 'boolean',
|
21
|
-
|
57
|
+
table: { category: 'Function', defaultValue: { summary: 'false' } },
|
22
58
|
},
|
23
59
|
disabled: {
|
60
|
+
description: 'Disables the upload input.',
|
24
61
|
control: 'boolean',
|
25
|
-
|
62
|
+
table: { category: 'Function', defaultValue: { summary: 'false' } },
|
26
63
|
},
|
27
64
|
maxFileSizeMB: {
|
65
|
+
description: 'Maximum file size in MB.',
|
28
66
|
control: 'number',
|
29
|
-
|
67
|
+
table: { category: 'Function', defaultValue: { summary: '7' } },
|
30
68
|
},
|
31
69
|
allowedFileTypes: {
|
32
70
|
control: { type: 'check' },
|
33
71
|
options: ['jpg', 'png', 'pdf', 'mov', 'mp3', 'mp4'],
|
34
|
-
description: 'Select one or more allowed file extensions. Internally mapped to MIME types.'
|
72
|
+
description: 'Select one or more allowed file extensions. Internally mapped to MIME types.',
|
73
|
+
table: { category: 'Function' },
|
35
74
|
},
|
36
75
|
additionalAllowedFileTypes: {
|
76
|
+
description: 'Custom MIME types (comma-separated).',
|
37
77
|
control: 'text',
|
38
|
-
|
78
|
+
table: { category: 'Function' },
|
39
79
|
},
|
40
80
|
maxFiles: {
|
41
|
-
|
42
|
-
|
81
|
+
description: 'Maximum number of allowed files.',
|
82
|
+
control: 'number',
|
83
|
+
table: { category: 'Function' },
|
43
84
|
},
|
44
|
-
// LABELS
|
85
|
+
// --- LABELS ---
|
45
86
|
label: {
|
46
87
|
control: 'text',
|
47
|
-
description: '
|
48
|
-
table: { category: '
|
88
|
+
description: 'Main label shown above input.',
|
89
|
+
table: { category: 'Label' },
|
49
90
|
},
|
50
91
|
labelRequiredError: {
|
51
92
|
control: 'text',
|
52
|
-
description: '
|
53
|
-
table: { category: '
|
93
|
+
description: 'Shown when required and no file selected.',
|
94
|
+
table: { category: 'Label' },
|
54
95
|
},
|
55
96
|
labelBrowseFiles: {
|
56
97
|
control: 'text',
|
57
|
-
|
58
|
-
table: { category: 'LABELS' }
|
98
|
+
table: { category: 'Label' },
|
59
99
|
},
|
60
100
|
labelDragAndDrop: {
|
61
101
|
control: 'text',
|
62
|
-
|
63
|
-
table: { category: 'LABELS' }
|
102
|
+
table: { category: 'Label' },
|
64
103
|
},
|
65
104
|
labelUploadedFilesHeading: {
|
66
105
|
control: 'text',
|
67
|
-
|
68
|
-
table: { category: 'LABELS' }
|
106
|
+
table: { category: 'Label' },
|
69
107
|
},
|
70
108
|
labelFileTooLarge: {
|
71
109
|
control: 'text',
|
72
|
-
|
73
|
-
table: { category: 'LABELS' }
|
110
|
+
table: { category: 'Label' },
|
74
111
|
},
|
75
112
|
labelUnsupportedFileType: {
|
76
113
|
control: 'text',
|
77
|
-
|
78
|
-
table: { category: 'LABELS' }
|
114
|
+
table: { category: 'Label' },
|
79
115
|
},
|
80
116
|
labelUploaded: {
|
81
117
|
control: 'text',
|
82
|
-
|
83
|
-
table: { category: 'LABELS' }
|
84
|
-
},
|
85
|
-
labelUploadFailed: {
|
86
|
-
control: 'text',
|
87
|
-
description: 'Text shown when a file upload fails.',
|
88
|
-
table: { category: 'LABELS' }
|
118
|
+
table: { category: 'Label' },
|
89
119
|
},
|
90
120
|
labelSupportedFormatsTemplate: {
|
91
121
|
control: 'text',
|
92
|
-
|
93
|
-
table: { category: 'LABELS' }
|
122
|
+
table: { category: 'Label' },
|
94
123
|
},
|
95
124
|
labelFileSingular: {
|
96
125
|
control: 'text',
|
97
|
-
|
98
|
-
table: { category: 'LABELS' }
|
126
|
+
table: { category: 'Label' },
|
99
127
|
},
|
100
128
|
labelFilePlural: {
|
101
129
|
control: 'text',
|
102
|
-
|
103
|
-
table: { category: 'LABELS' }
|
130
|
+
table: { category: 'Label' },
|
104
131
|
},
|
105
132
|
labelMaxFilesInfo: {
|
106
133
|
control: 'text',
|
107
|
-
|
108
|
-
table: { category: 'LABELS' }
|
134
|
+
table: { category: 'Label' },
|
109
135
|
},
|
110
136
|
labelMaxFilesExceeded: {
|
111
137
|
control: 'text',
|
112
|
-
|
113
|
-
|
138
|
+
table: { category: 'Label' },
|
139
|
+
},
|
140
|
+
labelUploadFailed: {
|
141
|
+
control: 'text',
|
142
|
+
table: { category: 'Label' },
|
114
143
|
},
|
115
|
-
// ARIA LABELS
|
144
|
+
// --- ARIA LABELS ---
|
116
145
|
ariaLabelBrowseFiles: {
|
117
146
|
control: 'text',
|
118
|
-
|
119
|
-
table: { category: 'ARIA LABELS' }
|
147
|
+
table: { category: 'Aria Labels' },
|
120
148
|
},
|
121
149
|
ariaLabelDropzone: {
|
122
150
|
control: 'text',
|
123
|
-
|
124
|
-
table: { category: 'ARIA LABELS' }
|
151
|
+
table: { category: 'Aria Labels' },
|
125
152
|
},
|
126
153
|
ariaLabelFileInput: {
|
127
154
|
control: 'text',
|
128
|
-
|
129
|
-
table: { category: 'ARIA LABELS' }
|
155
|
+
table: { category: 'Aria Labels' },
|
130
156
|
},
|
131
157
|
ariaLabelRemoveFile: {
|
132
158
|
control: 'text',
|
133
|
-
|
134
|
-
table: { category: 'ARIA LABELS' }
|
159
|
+
table: { category: 'Aria Labels' },
|
135
160
|
},
|
136
161
|
ariaLabelCancelUpload: {
|
137
162
|
control: 'text',
|
138
|
-
|
139
|
-
table: { category: 'ARIA LABELS' }
|
163
|
+
table: { category: 'Aria Labels' },
|
140
164
|
},
|
141
165
|
ariaLabelRetryUpload: {
|
142
166
|
control: 'text',
|
143
|
-
|
144
|
-
table: { category: 'ARIA LABELS' }
|
167
|
+
table: { category: 'Aria Labels' },
|
145
168
|
},
|
146
169
|
ariaLabelUploadingStatus: {
|
147
170
|
control: 'text',
|
148
|
-
|
149
|
-
table: { category: 'ARIA LABELS' }
|
171
|
+
table: { category: 'Aria Labels' },
|
150
172
|
},
|
151
173
|
ariaLabelUploadedStatus: {
|
152
174
|
control: 'text',
|
153
|
-
|
154
|
-
table: { category: 'ARIA LABELS' }
|
175
|
+
table: { category: 'Aria Labels' },
|
155
176
|
},
|
156
177
|
ariaLabelUploadFailedStatus: {
|
157
178
|
control: 'text',
|
158
|
-
|
159
|
-
table: { category: 'ARIA LABELS' }
|
179
|
+
table: { category: 'Aria Labels' },
|
160
180
|
},
|
161
|
-
// CUSTOM EVENTS
|
181
|
+
// --- CUSTOM EVENTS ---
|
162
182
|
ifxFileUploadAdd: {
|
163
|
-
|
164
|
-
table: { category: '
|
183
|
+
action: 'ifxFileUploadAdd',
|
184
|
+
table: { category: 'Custom Events' },
|
185
|
+
description: 'Triggered when valid files are added (via browse or drop).',
|
165
186
|
},
|
166
187
|
ifxFileUploadRemove: {
|
167
|
-
|
168
|
-
table: { category: '
|
188
|
+
action: 'ifxFileUploadRemove',
|
189
|
+
table: { category: 'Custom Events' },
|
190
|
+
description: 'Fired when a user removes a file from the list.',
|
169
191
|
},
|
170
192
|
ifxFileUploadChange: {
|
171
|
-
|
172
|
-
table: { category: '
|
193
|
+
action: 'ifxFileUploadChange',
|
194
|
+
table: { category: 'Custom Events' },
|
195
|
+
description: 'Fired whenever the file list changes (add, remove, retry).',
|
173
196
|
},
|
174
197
|
ifxFileUploadError: {
|
175
|
-
|
176
|
-
table: { category: '
|
198
|
+
action: 'ifxFileUploadError',
|
199
|
+
table: { category: 'Custom Events' },
|
200
|
+
description: 'Fired when a file is rejected or an upload fails.',
|
177
201
|
},
|
178
202
|
ifxFileUploadInvalid: {
|
179
|
-
|
180
|
-
table: { category: '
|
203
|
+
action: 'ifxFileUploadInvalid',
|
204
|
+
table: { category: 'Custom Events' },
|
205
|
+
description: 'Fired for invalid files (e.g., wrong type or size).',
|
181
206
|
},
|
182
207
|
ifxFileUploadStart: {
|
183
|
-
|
184
|
-
table: { category: '
|
208
|
+
action: 'ifxFileUploadStart',
|
209
|
+
table: { category: 'Custom Events' },
|
210
|
+
description: 'Fired when an upload starts for a file.',
|
185
211
|
},
|
186
212
|
ifxFileUploadComplete: {
|
187
|
-
|
188
|
-
table: { category: '
|
213
|
+
action: 'ifxFileUploadComplete',
|
214
|
+
table: { category: 'Custom Events' },
|
215
|
+
description: 'Fired when a single file upload finishes successfully.',
|
189
216
|
},
|
190
217
|
ifxFileUploadAllComplete: {
|
191
|
-
|
192
|
-
table: { category: '
|
218
|
+
action: 'ifxFileUploadAllComplete',
|
219
|
+
table: { category: 'Custom Events' },
|
220
|
+
description: 'Fired when all current uploads have completed.',
|
193
221
|
},
|
194
222
|
ifxFileUploadAbort: {
|
195
|
-
|
196
|
-
table: { category: '
|
223
|
+
action: 'ifxFileUploadAbort',
|
224
|
+
table: { category: 'Custom Events' },
|
225
|
+
description: 'Fired when a user cancels an in-progress upload.',
|
197
226
|
},
|
198
227
|
ifxFileUploadDrop: {
|
199
|
-
|
200
|
-
table: { category: '
|
228
|
+
action: 'ifxFileUploadDrop',
|
229
|
+
table: { category: 'Custom Events' },
|
230
|
+
description: 'Fired when files are dropped via drag-and-drop.',
|
201
231
|
},
|
202
232
|
ifxFileUploadClick: {
|
203
|
-
|
204
|
-
table: { category: '
|
233
|
+
action: 'ifxFileUploadClick',
|
234
|
+
table: { category: 'Custom Events' },
|
235
|
+
description: 'Fired when the upload button or dropzone is clicked.',
|
205
236
|
},
|
206
237
|
ifxFileUploadMaxFilesExceeded: {
|
207
|
-
|
208
|
-
table: { category: '
|
238
|
+
action: 'ifxFileUploadMaxFilesExceeded',
|
239
|
+
table: { category: 'Custom Events' },
|
240
|
+
description: 'Fired when the selected files exceed the maxFiles limit.',
|
209
241
|
},
|
210
242
|
ifxFileUploadValidation: {
|
211
|
-
|
212
|
-
table: { category: '
|
243
|
+
action: 'ifxFileUploadValidation',
|
244
|
+
table: { category: 'Custom Events' },
|
245
|
+
description: 'Fired after required validation is checked.',
|
213
246
|
},
|
214
247
|
ifxFileUploadRetry: {
|
215
|
-
|
216
|
-
table: { category: '
|
217
|
-
|
248
|
+
action: 'ifxFileUploadRetry',
|
249
|
+
table: { category: 'Custom Events' },
|
250
|
+
description: 'Fired when the retry button is clicked for a failed upload.',
|
251
|
+
},
|
218
252
|
}
|
219
253
|
};
|
220
254
|
export default meta;
|
221
|
-
const
|
255
|
+
const BaseTemplate = (args) => {
|
256
|
+
var _a;
|
222
257
|
const el = document.createElement('ifx-file-upload');
|
223
258
|
if (args.dragAndDrop)
|
224
259
|
el.setAttribute('drag-and-drop', '');
|
225
260
|
el.setAttribute('max-file-size-m-b', args.maxFileSizeMB);
|
226
261
|
const rawTypes = Array.isArray(args.allowedFileTypes)
|
227
262
|
? args.allowedFileTypes
|
228
|
-
: args.allowedFileTypes.split(',');
|
229
|
-
|
230
|
-
const
|
231
|
-
|
232
|
-
return ['jpg', 'jpeg'];
|
233
|
-
return [type];
|
234
|
-
});
|
263
|
+
: ((_a = args.allowedFileTypes) === null || _a === void 0 ? void 0 : _a.split(',')) || [];
|
264
|
+
const mappedTypes = rawTypes.flatMap(type => type === 'jpg' ? ['jpg', 'jpeg'] : [type]);
|
265
|
+
const uniqueTypes = Array.from(new Set(mappedTypes));
|
266
|
+
el.setAttribute('allowed-file-types', uniqueTypes.join(','));
|
235
267
|
if (args.additionalAllowedFileTypes) {
|
236
268
|
const value = Array.isArray(args.additionalAllowedFileTypes)
|
237
269
|
? args.additionalAllowedFileTypes.join(',')
|
@@ -241,20 +273,8 @@ const renderFileUpload = (args) => {
|
|
241
273
|
if (args.maxFiles !== undefined && args.maxFiles !== null) {
|
242
274
|
el.setAttribute('max-files', String(args.maxFiles));
|
243
275
|
}
|
244
|
-
|
245
|
-
|
246
|
-
}
|
247
|
-
else {
|
248
|
-
el.removeAttribute('required');
|
249
|
-
}
|
250
|
-
if (args.disabled) {
|
251
|
-
el.setAttribute('disabled', '');
|
252
|
-
}
|
253
|
-
else {
|
254
|
-
el.removeAttribute('disabled');
|
255
|
-
}
|
256
|
-
const uniqueTypes = Array.from(new Set(mappedTypes));
|
257
|
-
el.setAttribute('allowed-file-types', uniqueTypes.join(','));
|
276
|
+
args.required ? el.setAttribute('required', '') : el.removeAttribute('required');
|
277
|
+
args.disabled ? el.setAttribute('disabled', '') : el.removeAttribute('disabled');
|
258
278
|
el.setAttribute('label', args.label);
|
259
279
|
el.setAttribute('label-required-error', args.labelRequiredError);
|
260
280
|
el.setAttribute('label-browse-files', args.labelBrowseFiles);
|
@@ -293,225 +313,74 @@ const renderFileUpload = (args) => {
|
|
293
313
|
el.addEventListener('ifxFileUploadRetry', action('ifxFileUploadRetry'));
|
294
314
|
return el;
|
295
315
|
};
|
296
|
-
export const
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
ariaLabelUploadFailedStatus: 'Upload failed'
|
328
|
-
},
|
329
|
-
render: renderFileUpload
|
316
|
+
export const Default = BaseTemplate.bind({});
|
317
|
+
Default.args = {
|
318
|
+
dragAndDrop: false,
|
319
|
+
label: 'Label',
|
320
|
+
required: false,
|
321
|
+
labelRequiredError: 'You must upload at least one file.',
|
322
|
+
disabled: false,
|
323
|
+
maxFileSizeMB: 7,
|
324
|
+
allowedFileTypes: ['jpg', 'png', 'pdf'],
|
325
|
+
additionalAllowedFileTypes: 'application/zip,text/csv',
|
326
|
+
labelBrowseFiles: 'Browse files',
|
327
|
+
labelDragAndDrop: 'Drag & Drop or browse files to upload',
|
328
|
+
labelUploadedFilesHeading: 'Uploaded files',
|
329
|
+
labelFileTooLarge: 'Upload failed. Max file size: {{size}}MB.',
|
330
|
+
labelUnsupportedFileType: 'Unsupported file type.',
|
331
|
+
labelUploaded: 'Successfully uploaded',
|
332
|
+
labelSupportedFormatsTemplate: 'Supported file formats: {{types}}. Max file size: {{size}}MB.',
|
333
|
+
labelFileSingular: 'file',
|
334
|
+
labelFilePlural: 'files',
|
335
|
+
labelMaxFilesInfo: 'You can upload up to {{count}} {{files}}.',
|
336
|
+
labelMaxFilesExceeded: 'You have exceeded the maximum of {{count}} {{files}}.',
|
337
|
+
labelUploadFailed: 'Upload failed. Please try again.',
|
338
|
+
ariaLabelBrowseFiles: 'Browse files',
|
339
|
+
ariaLabelDropzone: 'Upload area. Click to browse or drag and drop files.',
|
340
|
+
ariaLabelFileInput: 'Upload file',
|
341
|
+
ariaLabelRemoveFile: 'Remove file',
|
342
|
+
ariaLabelCancelUpload: 'Cancel upload',
|
343
|
+
ariaLabelRetryUpload: 'Retry upload',
|
344
|
+
ariaLabelUploadingStatus: 'Upload in progress',
|
345
|
+
ariaLabelUploadedStatus: 'Upload completed',
|
346
|
+
ariaLabelUploadFailedStatus: 'Upload failed'
|
330
347
|
};
|
331
|
-
export const UploadAreaDragDrop = {
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
allowedFileTypes: ['jpg', 'png', 'pdf'],
|
341
|
-
additionalAllowedFileTypes: 'application/zip,text/csv',
|
342
|
-
labelBrowseFiles: 'Browse files',
|
343
|
-
labelDragAndDrop: 'Drag & Drop or browse files to upload',
|
344
|
-
labelUploadedFilesHeading: 'Uploaded files',
|
345
|
-
labelFileTooLarge: 'Upload failed. Max file size: {{size}}MB.',
|
346
|
-
labelUnsupportedFileType: 'Unsupported file type.',
|
347
|
-
labelUploaded: 'Successfully uploaded',
|
348
|
-
labelSupportedFormatsTemplate: 'Supported file formats: {{types}}. Max file size: {{size}}MB.',
|
349
|
-
labelFileSingular: 'file',
|
350
|
-
labelFilePlural: 'files',
|
351
|
-
labelMaxFilesInfo: 'You can upload up to {{count}} {{files}}.',
|
352
|
-
labelMaxFilesExceeded: 'You have exceeded the maximum of {{count}} {{files}}.',
|
353
|
-
labelUploadFailed: 'Upload failed. Please try again.',
|
354
|
-
ariaLabelBrowseFiles: 'Browse files',
|
355
|
-
ariaLabelDropzone: 'Upload area. Click to browse or drag and drop files.',
|
356
|
-
ariaLabelFileInput: 'Upload file',
|
357
|
-
ariaLabelRemoveFile: 'Remove file',
|
358
|
-
ariaLabelCancelUpload: 'Cancel upload',
|
359
|
-
ariaLabelRetryUpload: 'Retry upload',
|
360
|
-
ariaLabelUploadingStatus: 'Upload in progress',
|
361
|
-
ariaLabelUploadedStatus: 'Upload completed',
|
362
|
-
ariaLabelUploadFailedStatus: 'Upload failed'
|
363
|
-
},
|
364
|
-
render: renderFileUpload
|
365
|
-
};
|
366
|
-
export const UploadStatesDemo = {
|
367
|
-
name: 'Upload States (Demo)',
|
368
|
-
args: {
|
369
|
-
dragAndDrop: false
|
370
|
-
},
|
371
|
-
parameters: {
|
372
|
-
docs: {
|
373
|
-
description: {
|
374
|
-
story: 'Visual preview of all file states (success, upload in progress, rejected). Only the `dragAndDrop` control is available.'
|
375
|
-
}
|
376
|
-
},
|
377
|
-
previewTabs: {
|
378
|
-
'canvas': { hidden: false },
|
379
|
-
'storybook/docs/panel': { hidden: false },
|
380
|
-
'storybook/actions/panel': { hidden: true },
|
381
|
-
'storybook/interactions/panel': { hidden: true }
|
348
|
+
export const UploadAreaDragDrop = BaseTemplate.bind({});
|
349
|
+
UploadAreaDragDrop.args = Object.assign(Object.assign({}, Default.args), { dragAndDrop: true });
|
350
|
+
// Demo UploadStatesDemo
|
351
|
+
export const UploadStatesDemo = BaseTemplate.bind({});
|
352
|
+
UploadStatesDemo.args = Object.assign(Object.assign({}, Default.args), { dragAndDrop: true });
|
353
|
+
UploadStatesDemo.parameters = {
|
354
|
+
docs: {
|
355
|
+
description: {
|
356
|
+
story: 'Visual preview of all file states (success, upload in progress, rejected).'
|
382
357
|
}
|
383
|
-
},
|
384
|
-
argTypes: {
|
385
|
-
dragAndDrop: { control: 'boolean' },
|
386
|
-
// Disable all other controls
|
387
|
-
disabled: { table: { disable: true } },
|
388
|
-
labelUploadFailed: { table: { disable: true } },
|
389
|
-
required: { table: { disable: true } },
|
390
|
-
label: { table: { disable: true } },
|
391
|
-
labelRequiredError: { table: { disable: true } },
|
392
|
-
maxFileSizeMB: { table: { disable: true } },
|
393
|
-
allowedFileTypes: { table: { disable: true } },
|
394
|
-
additionalAllowedFileTypes: { table: { disable: true } },
|
395
|
-
labelBrowseFiles: { table: { disable: true } },
|
396
|
-
labelDragAndDrop: { table: { disable: true } },
|
397
|
-
labelFileSingular: { table: { disable: true } },
|
398
|
-
labelFilePlural: { table: { disable: true } },
|
399
|
-
maxFiles: { table: { disable: true } },
|
400
|
-
labelMaxFilesInfo: { table: { disable: true } },
|
401
|
-
labelMaxFilesExceeded: { table: { disable: true } },
|
402
|
-
labelUploadedFilesHeading: { table: { disable: true } },
|
403
|
-
labelFileTooLarge: { table: { disable: true } },
|
404
|
-
labelUnsupportedFileType: { table: { disable: true } },
|
405
|
-
labelUploaded: { table: { disable: true } },
|
406
|
-
labelSupportedFormatsTemplate: { table: { disable: true } },
|
407
|
-
ifxFileUploadAdd: { table: { disable: true } },
|
408
|
-
ifxFileUploadRemove: { table: { disable: true } },
|
409
|
-
ifxFileUploadChange: { table: { disable: true } },
|
410
|
-
ifxFileUploadError: { table: { disable: true } },
|
411
|
-
ifxFileUploadInvalid: { table: { disable: true } },
|
412
|
-
ifxFileUploadStart: { table: { disable: true } },
|
413
|
-
ifxFileUploadComplete: { table: { disable: true } },
|
414
|
-
ifxFileUploadAllComplete: { table: { disable: true } },
|
415
|
-
ifxFileUploadAbort: { table: { disable: true } },
|
416
|
-
ifxFileUploadDrop: { table: { disable: true } },
|
417
|
-
ifxFileUploadClick: { table: { disable: true } },
|
418
|
-
ifxFileUploadMaxFilesExceeded: { table: { disable: true } },
|
419
|
-
ifxFileUploadValidation: { table: { disable: true } },
|
420
|
-
ifxFileUploadRetry: { table: { disable: true } },
|
421
|
-
// ARIA labels – disabled in demo
|
422
|
-
ariaLabelBrowseFiles: { table: { disable: true } },
|
423
|
-
ariaLabelDropzone: { table: { disable: true } },
|
424
|
-
ariaLabelFileInput: { table: { disable: true } },
|
425
|
-
ariaLabelRemoveFile: { table: { disable: true } },
|
426
|
-
ariaLabelCancelUpload: { table: { disable: true } },
|
427
|
-
ariaLabelRetryUpload: { table: { disable: true } },
|
428
|
-
ariaLabelUploadingStatus: { table: { disable: true } },
|
429
|
-
ariaLabelUploadedStatus: { table: { disable: true } },
|
430
|
-
ariaLabelUploadFailedStatus: { table: { disable: true } },
|
431
|
-
},
|
432
|
-
render: (args) => {
|
433
|
-
const el = document.createElement('ifx-file-upload');
|
434
|
-
if (args.dragAndDrop) {
|
435
|
-
el.setAttribute('drag-and-drop', '');
|
436
|
-
}
|
437
|
-
setTimeout(() => {
|
438
|
-
var _a, _b;
|
439
|
-
(_b = (_a = el).injectDemoState) === null || _b === void 0 ? void 0 : _b.call(_a);
|
440
|
-
}, 0);
|
441
|
-
return el;
|
442
358
|
}
|
443
359
|
};
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
},
|
449
|
-
parameters: {
|
450
|
-
docs: {
|
451
|
-
description: {
|
452
|
-
story: 'Demonstrates the error state when the upload is required but no files have been added. Only `dragAndDrop` is controllable in this demo.'
|
453
|
-
}
|
454
|
-
}
|
455
|
-
},
|
456
|
-
argTypes: {
|
457
|
-
dragAndDrop: { control: 'boolean' },
|
458
|
-
// Disable all other controls
|
459
|
-
disabled: { table: { disable: true } },
|
460
|
-
labelUploadFailed: { table: { disable: true } },
|
461
|
-
required: { table: { disable: true } },
|
462
|
-
label: { table: { disable: true } },
|
463
|
-
labelRequiredError: { table: { disable: true } },
|
464
|
-
maxFileSizeMB: { table: { disable: true } },
|
465
|
-
allowedFileTypes: { table: { disable: true } },
|
466
|
-
additionalAllowedFileTypes: { table: { disable: true } },
|
467
|
-
labelBrowseFiles: { table: { disable: true } },
|
468
|
-
labelDragAndDrop: { table: { disable: true } },
|
469
|
-
labelFileSingular: { table: { disable: true } },
|
470
|
-
labelFilePlural: { table: { disable: true } },
|
471
|
-
maxFiles: { table: { disable: true } },
|
472
|
-
labelMaxFilesInfo: { table: { disable: true } },
|
473
|
-
labelMaxFilesExceeded: { table: { disable: true } },
|
474
|
-
labelUploadedFilesHeading: { table: { disable: true } },
|
475
|
-
labelFileTooLarge: { table: { disable: true } },
|
476
|
-
labelUnsupportedFileType: { table: { disable: true } },
|
477
|
-
labelUploaded: { table: { disable: true } },
|
478
|
-
labelSupportedFormatsTemplate: { table: { disable: true } },
|
479
|
-
ifxFileUploadAdd: { table: { disable: true } },
|
480
|
-
ifxFileUploadRemove: { table: { disable: true } },
|
481
|
-
ifxFileUploadChange: { table: { disable: true } },
|
482
|
-
ifxFileUploadError: { table: { disable: true } },
|
483
|
-
ifxFileUploadInvalid: { table: { disable: true } },
|
484
|
-
ifxFileUploadStart: { table: { disable: true } },
|
485
|
-
ifxFileUploadComplete: { table: { disable: true } },
|
486
|
-
ifxFileUploadAllComplete: { table: { disable: true } },
|
487
|
-
ifxFileUploadAbort: { table: { disable: true } },
|
488
|
-
ifxFileUploadDrop: { table: { disable: true } },
|
489
|
-
ifxFileUploadClick: { table: { disable: true } },
|
490
|
-
ifxFileUploadMaxFilesExceeded: { table: { disable: true } },
|
491
|
-
ifxFileUploadValidation: { table: { disable: true } },
|
492
|
-
ifxFileUploadRetry: { table: { disable: true } },
|
493
|
-
// ARIA labels – disabled in demo
|
494
|
-
ariaLabelBrowseFiles: { table: { disable: true } },
|
495
|
-
ariaLabelDropzone: { table: { disable: true } },
|
496
|
-
ariaLabelFileInput: { table: { disable: true } },
|
497
|
-
ariaLabelRemoveFile: { table: { disable: true } },
|
498
|
-
ariaLabelCancelUpload: { table: { disable: true } },
|
499
|
-
ariaLabelRetryUpload: { table: { disable: true } },
|
500
|
-
ariaLabelUploadingStatus: { table: { disable: true } },
|
501
|
-
ariaLabelUploadedStatus: { table: { disable: true } },
|
502
|
-
ariaLabelUploadFailedStatus: { table: { disable: true } },
|
503
|
-
},
|
504
|
-
render: (args) => {
|
505
|
-
const el = document.createElement('ifx-file-upload');
|
506
|
-
if (args.dragAndDrop)
|
507
|
-
el.setAttribute('drag-and-drop', '');
|
508
|
-
el.setAttribute('required', '');
|
509
|
-
// Fehlerzustand gezielt triggern
|
510
|
-
setTimeout(() => {
|
511
|
-
var _a, _b;
|
512
|
-
(_b = (_a = el).triggerDemoValidation) === null || _b === void 0 ? void 0 : _b.call(_a);
|
513
|
-
}, 100);
|
360
|
+
UploadStatesDemo.decorators = [
|
361
|
+
(storyFn) => {
|
362
|
+
const el = storyFn();
|
363
|
+
setTimeout(() => { var _a; return (_a = el === null || el === void 0 ? void 0 : el.injectDemoState) === null || _a === void 0 ? void 0 : _a.call(el); }, 0);
|
514
364
|
return el;
|
515
365
|
}
|
366
|
+
];
|
367
|
+
UploadStatesDemo.argTypes = Object.assign(Object.assign({}, hideAllControlsExcept(['dragAndDrop'])), disableCustomEventControls);
|
368
|
+
// Demo UploadRequiredError
|
369
|
+
export const UploadRequiredError = BaseTemplate.bind({});
|
370
|
+
UploadRequiredError.args = Object.assign(Object.assign({}, Default.args), { required: true });
|
371
|
+
UploadRequiredError.parameters = {
|
372
|
+
docs: {
|
373
|
+
description: {
|
374
|
+
story: 'Demonstrates the error state when the upload is required but no files have been added.'
|
375
|
+
}
|
376
|
+
}
|
516
377
|
};
|
378
|
+
UploadRequiredError.decorators = [
|
379
|
+
(storyFn) => {
|
380
|
+
const el = storyFn();
|
381
|
+
setTimeout(() => { var _a; return (_a = el === null || el === void 0 ? void 0 : el.triggerDemoValidation) === null || _a === void 0 ? void 0 : _a.call(el); }, 100);
|
382
|
+
return el;
|
383
|
+
}
|
384
|
+
];
|
385
|
+
UploadRequiredError.argTypes = Object.assign(Object.assign({}, hideAllControlsExcept(['dragAndDrop'])), disableCustomEventControls);
|
517
386
|
//# sourceMappingURL=file-upload.stories.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"file-upload.stories.js","sourceRoot":"","sources":["../../../src/components/file-upload/file-upload.stories.ts"],"names":[],"mappings":"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","sourcesContent":["import { action } from '@storybook/addon-actions';\nimport type { Meta, StoryObj } from '@storybook/html';\n\nconst meta: Meta = {\n title: 'Components/File Upload',\n tags: ['autodocs'],\n parameters: {\n controls: { expanded: true },\n docs: {\n description: {\n component: 'Upload component with different interaction styles: button or drag-and-drop area.'\n }\n }\n },\n argTypes: {\n // GENERAL\n dragAndDrop: {\n control: 'boolean',\n description: 'Enables drag-and-drop area. If false, a button-based upload is shown instead.'\n },\n required: {\n control: 'boolean',\n description: 'If set to true, at least one file must be uploaded. Validation fails if empty.'\n },\n disabled: {\n control: 'boolean',\n description: 'Disables the component and prevents all interaction (upload, drag-and-drop, removal, etc.).',\n },\n maxFileSizeMB: {\n control: 'number',\n description: 'Maximum file size allowed per file (in MB). Files larger than this will be rejected.'\n },\n allowedFileTypes: {\n control: { type: 'check' },\n options: ['jpg', 'png', 'pdf', 'mov', 'mp3', 'mp4'],\n description: 'Select one or more allowed file extensions. Internally mapped to MIME types.'\n },\n additionalAllowedFileTypes: {\n control: 'text',\n description: 'Adds additional allowed file types using exact MIME types. Example: application/zip'\n },\n maxFiles: {\n control: { type: 'number', min: 1, step: 1 },\n description: 'Maximum number of files that can be uploaded in total. Must be at least 1. If unset, unlimited.'\n },\n\n // LABELS\n label: {\n control: 'text',\n description: 'Label shown above the upload area.',\n table: { category: 'LABELS' }\n },\n labelRequiredError: {\n control: 'text',\n description: 'Error message shown when no file is uploaded and `required` is true.',\n table: { category: 'LABELS' }\n },\n labelBrowseFiles: {\n control: 'text',\n description: 'Text for the file selection button.',\n table: { category: 'LABELS' }\n },\n labelDragAndDrop: {\n control: 'text',\n description: 'Text shown inside the drag-and-drop area.',\n table: { category: 'LABELS' }\n },\n labelUploadedFilesHeading: {\n control: 'text',\n description: 'Heading above the uploaded files list.',\n table: { category: 'LABELS' }\n },\n labelFileTooLarge: {\n control: 'text',\n description: 'Shown when a file exceeds the allowed size. Use {{size}}.',\n table: { category: 'LABELS' }\n },\n labelUnsupportedFileType: {\n control: 'text',\n description: 'Shown when an unsupported file type is uploaded.',\n table: { category: 'LABELS' }\n },\n labelUploaded: {\n control: 'text',\n description: 'Label shown after successful upload.',\n table: { category: 'LABELS' }\n },\n labelUploadFailed: {\n control: 'text',\n description: 'Text shown when a file upload fails.',\n table: { category: 'LABELS' }\n },\n labelSupportedFormatsTemplate: {\n control: 'text',\n description: 'Template showing supported file formats. Use {{types}} and {{size}}.',\n table: { category: 'LABELS' }\n },\n labelFileSingular: {\n control: 'text',\n description: 'Singular word for file.',\n table: { category: 'LABELS' }\n },\n labelFilePlural: {\n control: 'text',\n description: 'Plural word for file.',\n table: { category: 'LABELS' }\n },\n labelMaxFilesInfo: {\n control: 'text',\n description: 'Message for max file info. Use {{count}}.',\n table: { category: 'LABELS' }\n },\n labelMaxFilesExceeded: {\n control: 'text',\n description: 'Error when exceeding max files. Use {{count}}.',\n table: { category: 'LABELS' }\n },\n\n // ARIA LABELS\n ariaLabelBrowseFiles: {\n control: 'text',\n description: 'ARIA label for the file upload button.',\n table: { category: 'ARIA LABELS' }\n },\n ariaLabelDropzone: {\n control: 'text',\n description: 'ARIA label for the dropzone.',\n table: { category: 'ARIA LABELS' }\n },\n ariaLabelFileInput: {\n control: 'text',\n description: 'ARIA label for the file input.',\n table: { category: 'ARIA LABELS' }\n },\n ariaLabelRemoveFile: {\n control: 'text',\n description: 'ARIA label for remove button.',\n table: { category: 'ARIA LABELS' }\n },\n ariaLabelCancelUpload: {\n control: 'text',\n description: 'ARIA label for cancel button.',\n table: { category: 'ARIA LABELS' }\n },\n ariaLabelRetryUpload: {\n control: 'text',\n description: 'ARIA label for retry button.',\n table: { category: 'ARIA LABELS' }\n },\n ariaLabelUploadingStatus: {\n control: 'text',\n description: 'ARIA status for uploading.',\n table: { category: 'ARIA LABELS' }\n },\n ariaLabelUploadedStatus: {\n control: 'text',\n description: 'ARIA status for success.',\n table: { category: 'ARIA LABELS' }\n },\n ariaLabelUploadFailedStatus: {\n control: 'text',\n description: 'ARIA status for failed upload.',\n table: { category: 'ARIA LABELS' }\n },\n\n // CUSTOM EVENTS\n ifxFileUploadAdd: {\n description: 'Emitted when files are added.',\n table: { category: 'CUSTOM EVENTS' }\n },\n ifxFileUploadRemove: {\n description: 'Emitted when a file is removed.',\n table: { category: 'CUSTOM EVENTS' }\n },\n ifxFileUploadChange: {\n description: 'Emitted when file list changes.',\n table: { category: 'CUSTOM EVENTS' }\n },\n ifxFileUploadError: {\n description: 'Emitted when an upload error occurs.',\n table: { category: 'CUSTOM EVENTS' }\n },\n ifxFileUploadInvalid: {\n description: 'Emitted when file is invalid.',\n table: { category: 'CUSTOM EVENTS' }\n },\n ifxFileUploadStart: {\n description: 'Emitted when upload starts.',\n table: { category: 'CUSTOM EVENTS' }\n },\n ifxFileUploadComplete: {\n description: 'Emitted when upload completes.',\n table: { category: 'CUSTOM EVENTS' }\n },\n ifxFileUploadAllComplete: {\n description: 'Emitted when all uploads are done.',\n table: { category: 'CUSTOM EVENTS' }\n },\n ifxFileUploadAbort: {\n description: 'Emitted when an upload is cancelled.',\n table: { category: 'CUSTOM EVENTS' }\n },\n ifxFileUploadDrop: {\n description: 'Emitted on file drop.',\n table: { category: 'CUSTOM EVENTS' }\n },\n ifxFileUploadClick: {\n description: 'Emitted on click.',\n table: { category: 'CUSTOM EVENTS' }\n },\n ifxFileUploadMaxFilesExceeded: {\n description: 'Emitted when too many files added.',\n table: { category: 'CUSTOM EVENTS' }\n },\n ifxFileUploadValidation: {\n description: 'Emitted after required validation.',\n table: { category: 'CUSTOM EVENTS' }\n },\n ifxFileUploadRetry: {\n description: 'Emitted when retry is triggered.',\n table: { category: 'CUSTOM EVENTS' }\n }\n }\n};\n\nexport default meta;\n\ntype Story = StoryObj;\n\nconst renderFileUpload = (args: any) => {\n const el = document.createElement('ifx-file-upload');\n\n if (args.dragAndDrop) el.setAttribute('drag-and-drop', '');\n el.setAttribute('max-file-size-m-b', args.maxFileSizeMB);\n\n const rawTypes = Array.isArray(args.allowedFileTypes)\n ? args.allowedFileTypes\n : args.allowedFileTypes.split(',');\n\n // Map 'jpg' ➜ ['jpg', 'jpeg']\n const mappedTypes = rawTypes.flatMap(type => {\n if (type === 'jpg') return ['jpg', 'jpeg'];\n return [type];\n });\n\n if (args.additionalAllowedFileTypes) {\n const value = Array.isArray(args.additionalAllowedFileTypes)\n ? args.additionalAllowedFileTypes.join(',')\n : args.additionalAllowedFileTypes;\n el.setAttribute('additional-allowed-file-types', value);\n }\n\n if (args.maxFiles !== undefined && args.maxFiles !== null) {\n el.setAttribute('max-files', String(args.maxFiles));\n }\n\n if (args.required) {\n el.setAttribute('required', '');\n } else {\n el.removeAttribute('required');\n }\n\n if (args.disabled) {\n el.setAttribute('disabled', '');\n } else {\n el.removeAttribute('disabled');\n }\n\n const uniqueTypes = Array.from(new Set(mappedTypes));\n el.setAttribute('allowed-file-types', uniqueTypes.join(','));\n\n el.setAttribute('label', args.label);\n el.setAttribute('label-required-error', args.labelRequiredError);\n el.setAttribute('label-browse-files', args.labelBrowseFiles);\n el.setAttribute('label-drag-and-drop', args.labelDragAndDrop);\n el.setAttribute('label-uploaded-files-heading', args.labelUploadedFilesHeading);\n el.setAttribute('label-file-too-large', args.labelFileTooLarge);\n el.setAttribute('label-unsupported-file-type', args.labelUnsupportedFileType);\n el.setAttribute('label-uploaded', args.labelUploaded);\n el.setAttribute('label-supported-formats-template', args.labelSupportedFormatsTemplate);\n el.setAttribute('label-file-singular', args.labelFileSingular);\n el.setAttribute('label-file-plural', args.labelFilePlural);\n el.setAttribute('label-max-files-info', args.labelMaxFilesInfo);\n el.setAttribute('label-max-files-exceeded', args.labelMaxFilesExceeded);\n el.setAttribute('label-upload-failed', args.labelUploadFailed);\n\n el.setAttribute('aria-label-browse-files', args.ariaLabelBrowseFiles);\n el.setAttribute('aria-label-dropzone', args.ariaLabelDropzone);\n el.setAttribute('aria-label-file-input', args.ariaLabelFileInput);\n el.setAttribute('aria-label-remove-file', args.ariaLabelRemoveFile);\n el.setAttribute('aria-label-cancel-upload', args.ariaLabelCancelUpload);\n el.setAttribute('aria-label-retry-upload', args.ariaLabelRetryUpload);\n el.setAttribute('aria-label-uploading-status', args.ariaLabelUploadingStatus);\n el.setAttribute('aria-label-uploaded-status', args.ariaLabelUploadedStatus);\n el.setAttribute('aria-label-upload-failed-status', args.ariaLabelUploadFailedStatus);\n\n el.addEventListener('ifxFileUploadAdd', action('ifxFileUploadAdd'));\n el.addEventListener('ifxFileUploadRemove', action('ifxFileUploadRemove'));\n el.addEventListener('ifxFileUploadChange', action('ifxFileUploadChange'));\n el.addEventListener('ifxFileUploadError', action('ifxFileUploadError'));\n el.addEventListener('ifxFileUploadInvalid', action('ifxFileUploadInvalid'));\n el.addEventListener('ifxFileUploadStart', action('ifxFileUploadStart'));\n el.addEventListener('ifxFileUploadComplete', action('ifxFileUploadComplete'));\n el.addEventListener('ifxFileUploadAbort', action('ifxFileUploadAbort'));\n el.addEventListener('ifxFileUploadDrop', action('ifxFileUploadDrop'));\n el.addEventListener('ifxFileUploadClick', action('ifxFileUploadClick'));\n el.addEventListener('ifxFileUploadMaxFilesExceeded', action('ifxFileUploadMaxFilesExceeded'));\n el.addEventListener('ifxFileUploadValidation', action('ifxFileUploadValidation'));\n el.addEventListener('ifxFileUploadRetry', action('ifxFileUploadRetry'));\n\n return el;\n};\n\nexport const UploadFileButton: Story = {\n name: 'Upload File (Button)',\n args: {\n dragAndDrop: false,\n label: 'Label',\n required: false,\n labelRequiredError: 'You must upload at least one file.',\n disabled: false,\n maxFileSizeMB: 7,\n allowedFileTypes: ['jpg', 'png', 'pdf'],\n additionalAllowedFileTypes: 'application/zip,text/csv',\n labelBrowseFiles: 'Browse files',\n labelDragAndDrop: 'Drag & Drop or browse files to upload',\n labelUploadedFilesHeading: 'Uploaded files',\n labelFileTooLarge: 'Upload failed. Max file size: {{size}}MB.',\n labelUnsupportedFileType: 'Unsupported file type.',\n labelUploaded: 'Successfully uploaded',\n labelSupportedFormatsTemplate: 'Supported file formats: {{types}}. Max file size: {{size}}MB.',\n labelFileSingular: 'file',\n labelFilePlural: 'files',\n labelMaxFilesInfo: 'You can upload up to {{count}} {{files}}.',\n labelMaxFilesExceeded: 'You have exceeded the maximum of {{count}} {{files}}.',\n labelUploadFailed: 'Upload failed. Please try again.',\n ariaLabelBrowseFiles: 'Browse files',\n ariaLabelDropzone: 'Upload area. Click to browse or drag and drop files.',\n ariaLabelFileInput: 'Upload file',\n ariaLabelRemoveFile: 'Remove file',\n ariaLabelCancelUpload: 'Cancel upload',\n ariaLabelRetryUpload: 'Retry upload',\n ariaLabelUploadingStatus: 'Upload in progress',\n ariaLabelUploadedStatus: 'Upload completed',\n ariaLabelUploadFailedStatus: 'Upload failed'\n },\n render: renderFileUpload\n};\n\nexport const UploadAreaDragDrop: Story = {\n name: 'Upload Area (Drag&Drop)',\n args: {\n dragAndDrop: true,\n label: 'Label',\n required: false,\n labelRequiredError: 'You must upload at least one file.',\n disabled: false,\n maxFileSizeMB: 7,\n allowedFileTypes: ['jpg', 'png', 'pdf'],\n additionalAllowedFileTypes: 'application/zip,text/csv',\n labelBrowseFiles: 'Browse files',\n labelDragAndDrop: 'Drag & Drop or browse files to upload',\n labelUploadedFilesHeading: 'Uploaded files',\n labelFileTooLarge: 'Upload failed. Max file size: {{size}}MB.',\n labelUnsupportedFileType: 'Unsupported file type.',\n labelUploaded: 'Successfully uploaded',\n labelSupportedFormatsTemplate: 'Supported file formats: {{types}}. Max file size: {{size}}MB.',\n labelFileSingular: 'file',\n labelFilePlural: 'files',\n labelMaxFilesInfo: 'You can upload up to {{count}} {{files}}.',\n labelMaxFilesExceeded: 'You have exceeded the maximum of {{count}} {{files}}.',\n labelUploadFailed: 'Upload failed. Please try again.',\n ariaLabelBrowseFiles: 'Browse files',\n ariaLabelDropzone: 'Upload area. Click to browse or drag and drop files.',\n ariaLabelFileInput: 'Upload file',\n ariaLabelRemoveFile: 'Remove file',\n ariaLabelCancelUpload: 'Cancel upload',\n ariaLabelRetryUpload: 'Retry upload',\n ariaLabelUploadingStatus: 'Upload in progress',\n ariaLabelUploadedStatus: 'Upload completed',\n ariaLabelUploadFailedStatus: 'Upload failed'\n },\n render: renderFileUpload\n};\n\nexport const UploadStatesDemo: Story = {\n name: 'Upload States (Demo)',\n args: {\n dragAndDrop: false\n },\n parameters: {\n docs: {\n description: {\n story: 'Visual preview of all file states (success, upload in progress, rejected). Only the `dragAndDrop` control is available.'\n }\n },\n previewTabs: {\n 'canvas': { hidden: false },\n 'storybook/docs/panel': { hidden: false },\n 'storybook/actions/panel': { hidden: true },\n 'storybook/interactions/panel': { hidden: true }\n }\n },\n argTypes: {\n dragAndDrop: { control: 'boolean' },\n // Disable all other controls\n disabled: { table: { disable: true } },\n labelUploadFailed: { table: { disable: true } },\n required: { table: { disable: true } },\n label: { table: { disable: true } },\n labelRequiredError: { table: { disable: true } },\n maxFileSizeMB: { table: { disable: true } },\n allowedFileTypes: { table: { disable: true } },\n additionalAllowedFileTypes: { table: { disable: true } },\n labelBrowseFiles: { table: { disable: true } },\n labelDragAndDrop: { table: { disable: true } },\n labelFileSingular: { table: { disable: true } },\n labelFilePlural: { table: { disable: true } },\n maxFiles: { table: { disable: true } },\n labelMaxFilesInfo: { table: { disable: true } },\n labelMaxFilesExceeded: { table: { disable: true } },\n labelUploadedFilesHeading: { table: { disable: true } },\n labelFileTooLarge: { table: { disable: true } },\n labelUnsupportedFileType: { table: { disable: true } },\n labelUploaded: { table: { disable: true } },\n labelSupportedFormatsTemplate: { table: { disable: true } },\n ifxFileUploadAdd: { table: { disable: true } },\n ifxFileUploadRemove: { table: { disable: true } },\n ifxFileUploadChange: { table: { disable: true } },\n ifxFileUploadError: { table: { disable: true } },\n ifxFileUploadInvalid: { table: { disable: true } },\n ifxFileUploadStart: { table: { disable: true } },\n ifxFileUploadComplete: { table: { disable: true } },\n ifxFileUploadAllComplete: { table: { disable: true } },\n ifxFileUploadAbort: { table: { disable: true } },\n ifxFileUploadDrop: { table: { disable: true } },\n ifxFileUploadClick: { table: { disable: true } },\n ifxFileUploadMaxFilesExceeded: { table: { disable: true } },\n ifxFileUploadValidation: { table: { disable: true } },\n ifxFileUploadRetry: { table: { disable: true } },\n // ARIA labels – disabled in demo\n ariaLabelBrowseFiles: { table: { disable: true } },\n ariaLabelDropzone: { table: { disable: true } },\n ariaLabelFileInput: { table: { disable: true } },\n ariaLabelRemoveFile: { table: { disable: true } },\n ariaLabelCancelUpload: { table: { disable: true } },\n ariaLabelRetryUpload: { table: { disable: true } },\n ariaLabelUploadingStatus: { table: { disable: true } },\n ariaLabelUploadedStatus: { table: { disable: true } },\n ariaLabelUploadFailedStatus: { table: { disable: true } },\n },\n render: (args) => {\n const el = document.createElement('ifx-file-upload');\n\n if (args.dragAndDrop) {\n el.setAttribute('drag-and-drop', '');\n }\n\n setTimeout(() => {\n (el as any).injectDemoState?.();\n }, 0);\n\n return el;\n }\n};\n\nexport const UploadRequiredError: Story = {\n name: 'Upload Required Error (Demo)',\n args: {\n dragAndDrop: false\n },\n parameters: {\n docs: {\n description: {\n story: 'Demonstrates the error state when the upload is required but no files have been added. Only `dragAndDrop` is controllable in this demo.'\n }\n }\n },\n argTypes: {\n dragAndDrop: { control: 'boolean' },\n // Disable all other controls\n disabled: { table: { disable: true } },\n labelUploadFailed: { table: { disable: true } },\n required: { table: { disable: true } },\n label: { table: { disable: true } },\n labelRequiredError: { table: { disable: true } },\n maxFileSizeMB: { table: { disable: true } },\n allowedFileTypes: { table: { disable: true } },\n additionalAllowedFileTypes: { table: { disable: true } },\n labelBrowseFiles: { table: { disable: true } },\n labelDragAndDrop: { table: { disable: true } },\n labelFileSingular: { table: { disable: true } },\n labelFilePlural: { table: { disable: true } },\n maxFiles: { table: { disable: true } },\n labelMaxFilesInfo: { table: { disable: true } },\n labelMaxFilesExceeded: { table: { disable: true } },\n labelUploadedFilesHeading: { table: { disable: true } },\n labelFileTooLarge: { table: { disable: true } },\n labelUnsupportedFileType: { table: { disable: true } },\n labelUploaded: { table: { disable: true } },\n labelSupportedFormatsTemplate: { table: { disable: true } },\n ifxFileUploadAdd: { table: { disable: true } },\n ifxFileUploadRemove: { table: { disable: true } },\n ifxFileUploadChange: { table: { disable: true } },\n ifxFileUploadError: { table: { disable: true } },\n ifxFileUploadInvalid: { table: { disable: true } },\n ifxFileUploadStart: { table: { disable: true } },\n ifxFileUploadComplete: { table: { disable: true } },\n ifxFileUploadAllComplete: { table: { disable: true } },\n ifxFileUploadAbort: { table: { disable: true } },\n ifxFileUploadDrop: { table: { disable: true } },\n ifxFileUploadClick: { table: { disable: true } },\n ifxFileUploadMaxFilesExceeded: { table: { disable: true } },\n ifxFileUploadValidation: { table: { disable: true } },\n ifxFileUploadRetry: { table: { disable: true } },\n // ARIA labels – disabled in demo\n ariaLabelBrowseFiles: { table: { disable: true } },\n ariaLabelDropzone: { table: { disable: true } },\n ariaLabelFileInput: { table: { disable: true } },\n ariaLabelRemoveFile: { table: { disable: true } },\n ariaLabelCancelUpload: { table: { disable: true } },\n ariaLabelRetryUpload: { table: { disable: true } },\n ariaLabelUploadingStatus: { table: { disable: true } },\n ariaLabelUploadedStatus: { table: { disable: true } },\n ariaLabelUploadFailedStatus: { table: { disable: true } },\n },\n render: (args) => {\n const el = document.createElement('ifx-file-upload');\n\n if (args.dragAndDrop) el.setAttribute('drag-and-drop', '');\n\n el.setAttribute('required', '');\n\n // Fehlerzustand gezielt triggern\n setTimeout(() => {\n (el as any).triggerDemoValidation?.();\n }, 100);\n\n return el;\n }\n};\n"]}
|
1
|
+
{"version":3,"file":"file-upload.stories.js","sourceRoot":"","sources":["../../../src/components/file-upload/file-upload.stories.ts"],"names":[],"mappings":"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","sourcesContent":["import { action } from '@storybook/addon-actions';\nimport type { Meta, StoryFn } from '@storybook/html';\n\nconst hideAllControlsExcept = (allowedKeys: string[]) => {\n const allProps = [\n 'dragAndDrop', 'label', 'required', 'labelRequiredError', 'disabled', 'maxFiles', 'maxFileSizeMB',\n 'allowedFileTypes', 'additionalAllowedFileTypes', 'labelBrowseFiles', 'labelDragAndDrop',\n 'labelUploadedFilesHeading', 'labelFileTooLarge', 'labelUnsupportedFileType', 'labelUploaded',\n 'labelSupportedFormatsTemplate', 'labelFileSingular', 'labelFilePlural', 'labelMaxFilesInfo',\n 'labelMaxFilesExceeded', 'labelUploadFailed', 'ariaLabelBrowseFiles', 'ariaLabelDropzone',\n 'ariaLabelFileInput', 'ariaLabelRemoveFile', 'ariaLabelCancelUpload', 'ariaLabelRetryUpload',\n 'ariaLabelUploadingStatus', 'ariaLabelUploadedStatus', 'ariaLabelUploadFailedStatus'\n ];\n\n const argTypes: Record<string, any> = {};\n for (const prop of allProps) {\n if (!allowedKeys.includes(prop)) {\n argTypes[prop] = { table: { disable: true } };\n }\n }\n return argTypes;\n};\n\nconst disableCustomEventControls = {\n ifxFileUploadAdd: { table: { disable: true } },\n ifxFileUploadRemove: { table: { disable: true } },\n ifxFileUploadChange: { table: { disable: true } },\n ifxFileUploadError: { table: { disable: true } },\n ifxFileUploadInvalid: { table: { disable: true } },\n ifxFileUploadStart: { table: { disable: true } },\n ifxFileUploadComplete: { table: { disable: true } },\n ifxFileUploadAllComplete: { table: { disable: true } },\n ifxFileUploadAbort: { table: { disable: true } },\n ifxFileUploadDrop: { table: { disable: true } },\n ifxFileUploadClick: { table: { disable: true } },\n ifxFileUploadMaxFilesExceeded: { table: { disable: true } },\n ifxFileUploadValidation: { table: { disable: true } },\n ifxFileUploadRetry: { table: { disable: true } }\n};\n\nconst meta: Meta = {\n title: 'Components/File Upload',\n tags: ['autodocs'],\n parameters: {\n controls: { expanded: true },\n docs: {\n description: {\n component: 'Upload component with different interaction styles: button or drag-and-drop area.',\n },\n },\n },\n argTypes: {\n // --- FUNCTION ---\n dragAndDrop: {\n description: 'Enables drag-and-drop upload area.',\n control: 'boolean',\n table: { category: 'Function', defaultValue: { summary: 'false' } },\n },\n required: {\n description: 'Marks the upload as required.',\n control: 'boolean',\n table: { category: 'Function', defaultValue: { summary: 'false' } },\n },\n disabled: {\n description: 'Disables the upload input.',\n control: 'boolean',\n table: { category: 'Function', defaultValue: { summary: 'false' } },\n },\n maxFileSizeMB: {\n description: 'Maximum file size in MB.',\n control: 'number',\n table: { category: 'Function', defaultValue: { summary: '7' } },\n },\n allowedFileTypes: {\n control: { type: 'check' },\n options: ['jpg', 'png', 'pdf', 'mov', 'mp3', 'mp4'],\n description: 'Select one or more allowed file extensions. Internally mapped to MIME types.',\n table: { category: 'Function' },\n },\n additionalAllowedFileTypes: {\n description: 'Custom MIME types (comma-separated).',\n control: 'text',\n table: { category: 'Function' },\n },\n maxFiles: {\n description: 'Maximum number of allowed files.',\n control: 'number',\n table: { category: 'Function' },\n },\n\n // --- LABELS ---\n label: {\n control: 'text',\n description: 'Main label shown above input.',\n table: { category: 'Label' },\n },\n labelRequiredError: {\n control: 'text',\n description: 'Shown when required and no file selected.',\n table: { category: 'Label' },\n },\n labelBrowseFiles: {\n control: 'text',\n table: { category: 'Label' },\n },\n labelDragAndDrop: {\n control: 'text',\n table: { category: 'Label' },\n },\n labelUploadedFilesHeading: {\n control: 'text',\n table: { category: 'Label' },\n },\n labelFileTooLarge: {\n control: 'text',\n table: { category: 'Label' },\n },\n labelUnsupportedFileType: {\n control: 'text',\n table: { category: 'Label' },\n },\n labelUploaded: {\n control: 'text',\n table: { category: 'Label' },\n },\n labelSupportedFormatsTemplate: {\n control: 'text',\n table: { category: 'Label' },\n },\n labelFileSingular: {\n control: 'text',\n table: { category: 'Label' },\n },\n labelFilePlural: {\n control: 'text',\n table: { category: 'Label' },\n },\n labelMaxFilesInfo: {\n control: 'text',\n table: { category: 'Label' },\n },\n labelMaxFilesExceeded: {\n control: 'text',\n table: { category: 'Label' },\n },\n labelUploadFailed: {\n control: 'text',\n table: { category: 'Label' },\n },\n\n // --- ARIA LABELS ---\n ariaLabelBrowseFiles: {\n control: 'text',\n table: { category: 'Aria Labels' },\n },\n ariaLabelDropzone: {\n control: 'text',\n table: { category: 'Aria Labels' },\n },\n ariaLabelFileInput: {\n control: 'text',\n table: { category: 'Aria Labels' },\n },\n ariaLabelRemoveFile: {\n control: 'text',\n table: { category: 'Aria Labels' },\n },\n ariaLabelCancelUpload: {\n control: 'text',\n table: { category: 'Aria Labels' },\n },\n ariaLabelRetryUpload: {\n control: 'text',\n table: { category: 'Aria Labels' },\n },\n ariaLabelUploadingStatus: {\n control: 'text',\n table: { category: 'Aria Labels' },\n },\n ariaLabelUploadedStatus: {\n control: 'text',\n table: { category: 'Aria Labels' },\n },\n ariaLabelUploadFailedStatus: {\n control: 'text',\n table: { category: 'Aria Labels' },\n },\n // --- CUSTOM EVENTS ---\n ifxFileUploadAdd: {\n action: 'ifxFileUploadAdd',\n table: { category: 'Custom Events' },\n description: 'Triggered when valid files are added (via browse or drop).',\n },\n ifxFileUploadRemove: {\n action: 'ifxFileUploadRemove',\n table: { category: 'Custom Events' },\n description: 'Fired when a user removes a file from the list.',\n },\n ifxFileUploadChange: {\n action: 'ifxFileUploadChange',\n table: { category: 'Custom Events' },\n description: 'Fired whenever the file list changes (add, remove, retry).',\n },\n ifxFileUploadError: {\n action: 'ifxFileUploadError',\n table: { category: 'Custom Events' },\n description: 'Fired when a file is rejected or an upload fails.',\n },\n ifxFileUploadInvalid: {\n action: 'ifxFileUploadInvalid',\n table: { category: 'Custom Events' },\n description: 'Fired for invalid files (e.g., wrong type or size).',\n },\n ifxFileUploadStart: {\n action: 'ifxFileUploadStart',\n table: { category: 'Custom Events' },\n description: 'Fired when an upload starts for a file.',\n },\n ifxFileUploadComplete: {\n action: 'ifxFileUploadComplete',\n table: { category: 'Custom Events' },\n description: 'Fired when a single file upload finishes successfully.',\n },\n ifxFileUploadAllComplete: {\n action: 'ifxFileUploadAllComplete',\n table: { category: 'Custom Events' },\n description: 'Fired when all current uploads have completed.',\n },\n ifxFileUploadAbort: {\n action: 'ifxFileUploadAbort',\n table: { category: 'Custom Events' },\n description: 'Fired when a user cancels an in-progress upload.',\n },\n ifxFileUploadDrop: {\n action: 'ifxFileUploadDrop',\n table: { category: 'Custom Events' },\n description: 'Fired when files are dropped via drag-and-drop.',\n },\n ifxFileUploadClick: {\n action: 'ifxFileUploadClick',\n table: { category: 'Custom Events' },\n description: 'Fired when the upload button or dropzone is clicked.',\n },\n ifxFileUploadMaxFilesExceeded: {\n action: 'ifxFileUploadMaxFilesExceeded',\n table: { category: 'Custom Events' },\n description: 'Fired when the selected files exceed the maxFiles limit.',\n },\n ifxFileUploadValidation: {\n action: 'ifxFileUploadValidation',\n table: { category: 'Custom Events' },\n description: 'Fired after required validation is checked.',\n },\n ifxFileUploadRetry: {\n action: 'ifxFileUploadRetry',\n table: { category: 'Custom Events' },\n description: 'Fired when the retry button is clicked for a failed upload.',\n },\n }\n};\n\nexport default meta;\n\nconst BaseTemplate: StoryFn = (args) => {\n const el = document.createElement('ifx-file-upload');\n\n if (args.dragAndDrop) el.setAttribute('drag-and-drop', '');\n el.setAttribute('max-file-size-m-b', args.maxFileSizeMB);\n\n const rawTypes = Array.isArray(args.allowedFileTypes)\n ? args.allowedFileTypes\n : args.allowedFileTypes?.split(',') || [];\n\n const mappedTypes = rawTypes.flatMap(type => type === 'jpg' ? ['jpg', 'jpeg'] : [type]);\n const uniqueTypes = Array.from(new Set(mappedTypes));\n el.setAttribute('allowed-file-types', uniqueTypes.join(','));\n\n if (args.additionalAllowedFileTypes) {\n const value = Array.isArray(args.additionalAllowedFileTypes)\n ? args.additionalAllowedFileTypes.join(',')\n : args.additionalAllowedFileTypes;\n el.setAttribute('additional-allowed-file-types', value);\n }\n\n if (args.maxFiles !== undefined && args.maxFiles !== null) {\n el.setAttribute('max-files', String(args.maxFiles));\n }\n\n args.required ? el.setAttribute('required', '') : el.removeAttribute('required');\n args.disabled ? el.setAttribute('disabled', '') : el.removeAttribute('disabled');\n\n el.setAttribute('label', args.label);\n el.setAttribute('label-required-error', args.labelRequiredError);\n el.setAttribute('label-browse-files', args.labelBrowseFiles);\n el.setAttribute('label-drag-and-drop', args.labelDragAndDrop);\n el.setAttribute('label-uploaded-files-heading', args.labelUploadedFilesHeading);\n el.setAttribute('label-file-too-large', args.labelFileTooLarge);\n el.setAttribute('label-unsupported-file-type', args.labelUnsupportedFileType);\n el.setAttribute('label-uploaded', args.labelUploaded);\n el.setAttribute('label-supported-formats-template', args.labelSupportedFormatsTemplate);\n el.setAttribute('label-file-singular', args.labelFileSingular);\n el.setAttribute('label-file-plural', args.labelFilePlural);\n el.setAttribute('label-max-files-info', args.labelMaxFilesInfo);\n el.setAttribute('label-max-files-exceeded', args.labelMaxFilesExceeded);\n el.setAttribute('label-upload-failed', args.labelUploadFailed);\n\n el.setAttribute('aria-label-browse-files', args.ariaLabelBrowseFiles);\n el.setAttribute('aria-label-dropzone', args.ariaLabelDropzone);\n el.setAttribute('aria-label-file-input', args.ariaLabelFileInput);\n el.setAttribute('aria-label-remove-file', args.ariaLabelRemoveFile);\n el.setAttribute('aria-label-cancel-upload', args.ariaLabelCancelUpload);\n el.setAttribute('aria-label-retry-upload', args.ariaLabelRetryUpload);\n el.setAttribute('aria-label-uploading-status', args.ariaLabelUploadingStatus);\n el.setAttribute('aria-label-uploaded-status', args.ariaLabelUploadedStatus);\n el.setAttribute('aria-label-upload-failed-status', args.ariaLabelUploadFailedStatus);\n\n el.addEventListener('ifxFileUploadAdd', action('ifxFileUploadAdd'));\n el.addEventListener('ifxFileUploadRemove', action('ifxFileUploadRemove'));\n el.addEventListener('ifxFileUploadChange', action('ifxFileUploadChange'));\n el.addEventListener('ifxFileUploadError', action('ifxFileUploadError'));\n el.addEventListener('ifxFileUploadInvalid', action('ifxFileUploadInvalid'));\n el.addEventListener('ifxFileUploadStart', action('ifxFileUploadStart'));\n el.addEventListener('ifxFileUploadComplete', action('ifxFileUploadComplete'));\n el.addEventListener('ifxFileUploadAbort', action('ifxFileUploadAbort'));\n el.addEventListener('ifxFileUploadDrop', action('ifxFileUploadDrop'));\n el.addEventListener('ifxFileUploadClick', action('ifxFileUploadClick'));\n el.addEventListener('ifxFileUploadMaxFilesExceeded', action('ifxFileUploadMaxFilesExceeded'));\n el.addEventListener('ifxFileUploadValidation', action('ifxFileUploadValidation'));\n el.addEventListener('ifxFileUploadRetry', action('ifxFileUploadRetry'));\n\n return el;\n};\n\nexport const Default = BaseTemplate.bind({});\nDefault.args = {\n dragAndDrop: false,\n label: 'Label',\n required: false,\n labelRequiredError: 'You must upload at least one file.',\n disabled: false,\n maxFileSizeMB: 7,\n allowedFileTypes: ['jpg', 'png', 'pdf'],\n additionalAllowedFileTypes: 'application/zip,text/csv',\n labelBrowseFiles: 'Browse files',\n labelDragAndDrop: 'Drag & Drop or browse files to upload',\n labelUploadedFilesHeading: 'Uploaded files',\n labelFileTooLarge: 'Upload failed. Max file size: {{size}}MB.',\n labelUnsupportedFileType: 'Unsupported file type.',\n labelUploaded: 'Successfully uploaded',\n labelSupportedFormatsTemplate: 'Supported file formats: {{types}}. Max file size: {{size}}MB.',\n labelFileSingular: 'file',\n labelFilePlural: 'files',\n labelMaxFilesInfo: 'You can upload up to {{count}} {{files}}.',\n labelMaxFilesExceeded: 'You have exceeded the maximum of {{count}} {{files}}.',\n labelUploadFailed: 'Upload failed. Please try again.',\n ariaLabelBrowseFiles: 'Browse files',\n ariaLabelDropzone: 'Upload area. Click to browse or drag and drop files.',\n ariaLabelFileInput: 'Upload file',\n ariaLabelRemoveFile: 'Remove file',\n ariaLabelCancelUpload: 'Cancel upload',\n ariaLabelRetryUpload: 'Retry upload',\n ariaLabelUploadingStatus: 'Upload in progress',\n ariaLabelUploadedStatus: 'Upload completed',\n ariaLabelUploadFailedStatus: 'Upload failed'\n};\n\nexport const UploadAreaDragDrop = BaseTemplate.bind({});\nUploadAreaDragDrop.args = {\n ...Default.args,\n dragAndDrop: true\n};\n\n// Demo UploadStatesDemo\nexport const UploadStatesDemo = BaseTemplate.bind({});\nUploadStatesDemo.args = {\n ...Default.args,\n dragAndDrop: true\n};\nUploadStatesDemo.parameters = {\n docs: {\n description: {\n story: 'Visual preview of all file states (success, upload in progress, rejected).'\n }\n }\n};\nUploadStatesDemo.decorators = [\n (storyFn) => {\n const el = storyFn();\n setTimeout(() => (el as any)?.injectDemoState?.(), 0);\n return el;\n }\n];\n\nUploadStatesDemo.argTypes = {\n ...hideAllControlsExcept(['dragAndDrop']),\n ...disableCustomEventControls\n};\n\n// Demo UploadRequiredError\nexport const UploadRequiredError = BaseTemplate.bind({});\nUploadRequiredError.args = {\n ...Default.args,\n required: true\n};\nUploadRequiredError.parameters = {\n docs: {\n description: {\n story: 'Demonstrates the error state when the upload is required but no files have been added.'\n }\n }\n};\nUploadRequiredError.decorators = [\n (storyFn) => {\n const el = storyFn();\n setTimeout(() => (el as any)?.triggerDemoValidation?.(), 100);\n return el;\n }\n];\n\nUploadRequiredError.argTypes = {\n ...hideAllControlsExcept(['dragAndDrop']),\n ...disableCustomEventControls\n};\n"]}
|
@@ -1,8 +1,7 @@
|
|
1
|
-
import type { Meta
|
1
|
+
import type { Meta } from '@storybook/html';
|
2
2
|
declare const meta: Meta;
|
3
3
|
export default meta;
|
4
|
-
|
5
|
-
export declare const
|
6
|
-
export declare const
|
7
|
-
export declare const
|
8
|
-
export declare const UploadRequiredError: Story;
|
4
|
+
export declare const Default: any;
|
5
|
+
export declare const UploadAreaDragDrop: any;
|
6
|
+
export declare const UploadStatesDemo: any;
|
7
|
+
export declare const UploadRequiredError: any;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@infineon/infineon-design-system-stencil",
|
3
|
-
"version": "33.3.1--canary.1824.
|
3
|
+
"version": "33.3.1--canary.1824.e1559ee81653274f5bb99ff7cef4239151a38f75.0",
|
4
4
|
"private": false,
|
5
5
|
"description": "Infineon design system Stencil web components",
|
6
6
|
"homepage": "https://infineon.github.io/infineon-design-system-stencil",
|