@faststore/components 3.98.0-dev.3 → 3.98.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.
- package/dist/cjs/atoms/Link/Link.d.ts +1 -1
- package/dist/cjs/atoms/Link/Link.d.ts.map +1 -1
- package/dist/cjs/atoms/Link/Link.js.map +1 -1
- package/dist/cjs/atoms/List/List.d.ts.map +1 -1
- package/dist/cjs/atoms/List/List.js.map +1 -1
- package/dist/cjs/hooks/index.d.ts +7 -3
- package/dist/cjs/hooks/index.d.ts.map +1 -1
- package/dist/cjs/hooks/index.js +12 -6
- package/dist/cjs/hooks/index.js.map +1 -1
- package/dist/cjs/hooks/useCSVParser.d.ts +43 -0
- package/dist/cjs/hooks/useCSVParser.d.ts.map +1 -0
- package/dist/cjs/hooks/useCSVParser.js +264 -0
- package/dist/cjs/hooks/useCSVParser.js.map +1 -0
- package/dist/cjs/hooks/useFileUpload.d.ts +26 -0
- package/dist/cjs/hooks/useFileUpload.d.ts.map +1 -0
- package/dist/cjs/hooks/useFileUpload.js +68 -0
- package/dist/cjs/hooks/useFileUpload.js.map +1 -0
- package/dist/cjs/index.d.ts +58 -50
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +47 -32
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/molecules/Accordion/AccordionItem.d.ts.map +1 -1
- package/dist/cjs/molecules/Accordion/AccordionItem.js.map +1 -1
- package/dist/cjs/molecules/Dropzone/Dropzone.d.ts +87 -0
- package/dist/cjs/molecules/Dropzone/Dropzone.d.ts.map +1 -0
- package/dist/cjs/molecules/Dropzone/Dropzone.js +85 -0
- package/dist/cjs/molecules/Dropzone/Dropzone.js.map +1 -0
- package/dist/cjs/molecules/Dropzone/index.d.ts +3 -0
- package/dist/cjs/molecules/Dropzone/index.d.ts.map +1 -0
- package/dist/cjs/molecules/Dropzone/index.js +9 -0
- package/dist/cjs/molecules/Dropzone/index.js.map +1 -0
- package/dist/cjs/molecules/FileUploadCard/FileUploadCard.d.ts +113 -0
- package/dist/cjs/molecules/FileUploadCard/FileUploadCard.d.ts.map +1 -0
- package/dist/cjs/molecules/FileUploadCard/FileUploadCard.js +169 -0
- package/dist/cjs/molecules/FileUploadCard/FileUploadCard.js.map +1 -0
- package/dist/cjs/molecules/FileUploadCard/index.d.ts +3 -0
- package/dist/cjs/molecules/FileUploadCard/index.d.ts.map +1 -0
- package/dist/cjs/molecules/FileUploadCard/index.js +9 -0
- package/dist/cjs/molecules/FileUploadCard/index.js.map +1 -0
- package/dist/cjs/molecules/FileUploadStatus/FileUploadStatus.d.ts +93 -0
- package/dist/cjs/molecules/FileUploadStatus/FileUploadStatus.d.ts.map +1 -0
- package/dist/cjs/molecules/FileUploadStatus/FileUploadStatus.js +77 -0
- package/dist/cjs/molecules/FileUploadStatus/FileUploadStatus.js.map +1 -0
- package/dist/cjs/molecules/FileUploadStatus/index.d.ts +3 -0
- package/dist/cjs/molecules/FileUploadStatus/index.d.ts.map +1 -0
- package/dist/cjs/molecules/FileUploadStatus/index.js +11 -0
- package/dist/cjs/molecules/FileUploadStatus/index.js.map +1 -0
- package/dist/cjs/molecules/SearchInputField/SearchInputField.d.ts +23 -1
- package/dist/cjs/molecules/SearchInputField/SearchInputField.d.ts.map +1 -1
- package/dist/cjs/molecules/SearchInputField/SearchInputField.js +9 -4
- package/dist/cjs/molecules/SearchInputField/SearchInputField.js.map +1 -1
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawer.d.ts +24 -0
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawer.d.ts.map +1 -0
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawer.js +14 -0
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawer.js.map +1 -0
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.d.ts +16 -0
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.d.ts.map +1 -0
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.js +37 -0
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.js.map +1 -0
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.d.ts +9 -0
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.d.ts.map +1 -0
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.js +24 -0
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.js.map +1 -0
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.d.ts +35 -0
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.d.ts.map +1 -0
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.js +91 -0
- package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.js.map +1 -0
- package/dist/cjs/organisms/QuickOrderDrawer/index.d.ts +11 -0
- package/dist/cjs/organisms/QuickOrderDrawer/index.d.ts.map +1 -0
- package/dist/cjs/organisms/QuickOrderDrawer/index.js +18 -0
- package/dist/cjs/organisms/QuickOrderDrawer/index.js.map +1 -0
- package/dist/cjs/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.d.ts +61 -0
- package/dist/cjs/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.d.ts.map +1 -0
- package/dist/cjs/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.js +86 -0
- package/dist/cjs/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.js.map +1 -0
- package/dist/esm/atoms/Link/Link.d.ts +1 -1
- package/dist/esm/atoms/Link/Link.d.ts.map +1 -1
- package/dist/esm/atoms/Link/Link.js.map +1 -1
- package/dist/esm/atoms/List/List.d.ts.map +1 -1
- package/dist/esm/atoms/List/List.js.map +1 -1
- package/dist/esm/hooks/index.d.ts +7 -3
- package/dist/esm/hooks/index.d.ts.map +1 -1
- package/dist/esm/hooks/index.js +6 -3
- package/dist/esm/hooks/index.js.map +1 -1
- package/dist/esm/hooks/useCSVParser.d.ts +43 -0
- package/dist/esm/hooks/useCSVParser.d.ts.map +1 -0
- package/dist/esm/hooks/useCSVParser.js +259 -0
- package/dist/esm/hooks/useCSVParser.js.map +1 -0
- package/dist/esm/hooks/useFileUpload.d.ts +26 -0
- package/dist/esm/hooks/useFileUpload.d.ts.map +1 -0
- package/dist/esm/hooks/useFileUpload.js +64 -0
- package/dist/esm/hooks/useFileUpload.js.map +1 -0
- package/dist/esm/index.d.ts +58 -50
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +24 -20
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/molecules/Accordion/AccordionItem.d.ts.map +1 -1
- package/dist/esm/molecules/Accordion/AccordionItem.js.map +1 -1
- package/dist/esm/molecules/Dropzone/Dropzone.d.ts +87 -0
- package/dist/esm/molecules/Dropzone/Dropzone.d.ts.map +1 -0
- package/dist/esm/molecules/Dropzone/Dropzone.js +82 -0
- package/dist/esm/molecules/Dropzone/Dropzone.js.map +1 -0
- package/dist/esm/molecules/Dropzone/index.d.ts +3 -0
- package/dist/esm/molecules/Dropzone/index.d.ts.map +1 -0
- package/dist/esm/molecules/Dropzone/index.js +2 -0
- package/dist/esm/molecules/Dropzone/index.js.map +1 -0
- package/dist/esm/molecules/FileUploadCard/FileUploadCard.d.ts +113 -0
- package/dist/esm/molecules/FileUploadCard/FileUploadCard.d.ts.map +1 -0
- package/dist/esm/molecules/FileUploadCard/FileUploadCard.js +166 -0
- package/dist/esm/molecules/FileUploadCard/FileUploadCard.js.map +1 -0
- package/dist/esm/molecules/FileUploadCard/index.d.ts +3 -0
- package/dist/esm/molecules/FileUploadCard/index.d.ts.map +1 -0
- package/dist/esm/molecules/FileUploadCard/index.js +2 -0
- package/dist/esm/molecules/FileUploadCard/index.js.map +1 -0
- package/dist/esm/molecules/FileUploadStatus/FileUploadStatus.d.ts +93 -0
- package/dist/esm/molecules/FileUploadStatus/FileUploadStatus.d.ts.map +1 -0
- package/dist/esm/molecules/FileUploadStatus/FileUploadStatus.js +73 -0
- package/dist/esm/molecules/FileUploadStatus/FileUploadStatus.js.map +1 -0
- package/dist/esm/molecules/FileUploadStatus/index.d.ts +3 -0
- package/dist/esm/molecules/FileUploadStatus/index.d.ts.map +1 -0
- package/dist/esm/molecules/FileUploadStatus/index.js +2 -0
- package/dist/esm/molecules/FileUploadStatus/index.js.map +1 -0
- package/dist/esm/molecules/SearchInputField/SearchInputField.d.ts +23 -1
- package/dist/esm/molecules/SearchInputField/SearchInputField.d.ts.map +1 -1
- package/dist/esm/molecules/SearchInputField/SearchInputField.js +9 -4
- package/dist/esm/molecules/SearchInputField/SearchInputField.js.map +1 -1
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawer.d.ts +24 -0
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawer.d.ts.map +1 -0
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawer.js +11 -0
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawer.js.map +1 -0
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.d.ts +16 -0
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.d.ts.map +1 -0
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.js +34 -0
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.js.map +1 -0
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.d.ts +9 -0
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.d.ts.map +1 -0
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.js +21 -0
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.js.map +1 -0
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.d.ts +35 -0
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.d.ts.map +1 -0
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.js +88 -0
- package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.js.map +1 -0
- package/dist/esm/organisms/QuickOrderDrawer/index.d.ts +11 -0
- package/dist/esm/organisms/QuickOrderDrawer/index.d.ts.map +1 -0
- package/dist/esm/organisms/QuickOrderDrawer/index.js +6 -0
- package/dist/esm/organisms/QuickOrderDrawer/index.js.map +1 -0
- package/dist/esm/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.d.ts +61 -0
- package/dist/esm/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.d.ts.map +1 -0
- package/dist/esm/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.js +80 -0
- package/dist/esm/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.js.map +1 -0
- package/package.json +5 -2
- package/src/atoms/Link/Link.tsx +4 -1
- package/src/atoms/List/List.tsx +18 -16
- package/src/hooks/index.ts +11 -3
- package/src/hooks/useCSVParser.ts +367 -0
- package/src/hooks/useFileUpload.ts +88 -0
- package/src/index.ts +97 -66
- package/src/molecules/Accordion/AccordionItem.tsx +4 -3
- package/src/molecules/Dropzone/Dropzone.tsx +248 -0
- package/src/molecules/Dropzone/index.ts +2 -0
- package/src/molecules/FileUploadCard/FileUploadCard.tsx +406 -0
- package/src/molecules/FileUploadCard/index.tsx +2 -0
- package/src/molecules/FileUploadStatus/FileUploadStatus.tsx +258 -0
- package/src/molecules/FileUploadStatus/index.tsx +6 -0
- package/src/molecules/SearchInputField/SearchInputField.tsx +72 -23
- package/src/organisms/QuickOrderDrawer/QuickOrderDrawer.tsx +58 -0
- package/src/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.tsx +72 -0
- package/src/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.tsx +43 -0
- package/src/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.tsx +323 -0
- package/src/organisms/QuickOrderDrawer/index.ts +19 -0
- package/src/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.tsx +205 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/molecules/Dropzone/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/molecules/Dropzone/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { FileUploadErrorType } from '../FileUploadStatus/FileUploadStatus';
|
|
4
|
+
export interface FileUploadCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onDrop'> {
|
|
5
|
+
/**
|
|
6
|
+
* ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
|
|
7
|
+
*/
|
|
8
|
+
testId?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Controls whether the component is visible.
|
|
11
|
+
*/
|
|
12
|
+
isOpen: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Callback function when the component should be closed.
|
|
15
|
+
*/
|
|
16
|
+
onDismiss?: () => void;
|
|
17
|
+
/**
|
|
18
|
+
* Callback function when a file is selected.
|
|
19
|
+
*/
|
|
20
|
+
onFileSelect?: (files: File[]) => void;
|
|
21
|
+
/**
|
|
22
|
+
* Callback function when download template is clicked.
|
|
23
|
+
*/
|
|
24
|
+
onDownloadTemplate?: () => void;
|
|
25
|
+
/**
|
|
26
|
+
* Callback function when search button is clicked after file upload.
|
|
27
|
+
*/
|
|
28
|
+
onSearch?: (file: File) => void;
|
|
29
|
+
/**
|
|
30
|
+
* Accepted file types.
|
|
31
|
+
* @default '.csv'
|
|
32
|
+
*/
|
|
33
|
+
accept?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Allow multiple file selection.
|
|
36
|
+
* @default false
|
|
37
|
+
*/
|
|
38
|
+
multiple?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Card title (e.g. from CMS).
|
|
41
|
+
*/
|
|
42
|
+
title: string;
|
|
43
|
+
/**
|
|
44
|
+
* Aria-label for the file input (e.g. from CMS).
|
|
45
|
+
*/
|
|
46
|
+
fileInputAriaLabel: string;
|
|
47
|
+
/**
|
|
48
|
+
* Aria-label for the dropzone region (e.g. from CMS).
|
|
49
|
+
*/
|
|
50
|
+
dropzoneAriaLabel: string;
|
|
51
|
+
/**
|
|
52
|
+
* Dropzone title text (e.g. from CMS).
|
|
53
|
+
*/
|
|
54
|
+
dropzoneTitle: string;
|
|
55
|
+
/**
|
|
56
|
+
* Label for the select file button (e.g. from CMS).
|
|
57
|
+
*/
|
|
58
|
+
selectFileButtonLabel: string;
|
|
59
|
+
/**
|
|
60
|
+
* Label for the download template button (e.g. from CMS).
|
|
61
|
+
*/
|
|
62
|
+
downloadTemplateButtonLabel: string;
|
|
63
|
+
/**
|
|
64
|
+
* Aria-label for the remove button in FileUploadStatus (e.g. from CMS).
|
|
65
|
+
*/
|
|
66
|
+
removeButtonAriaLabel: string;
|
|
67
|
+
/**
|
|
68
|
+
* Label for the search button in FileUploadStatus (e.g. from CMS).
|
|
69
|
+
*/
|
|
70
|
+
searchButtonLabel: string;
|
|
71
|
+
/**
|
|
72
|
+
* Status text when uploading in FileUploadStatus (e.g. from CMS).
|
|
73
|
+
*/
|
|
74
|
+
uploadingStatusText: string;
|
|
75
|
+
/**
|
|
76
|
+
* Status text when completed in FileUploadStatus (e.g. from CMS). Receives file size in bytes.
|
|
77
|
+
*/
|
|
78
|
+
getCompletedStatusText: (fileSize: number) => string;
|
|
79
|
+
/**
|
|
80
|
+
* Error messages per error type for FileUploadStatus (e.g. from CMS).
|
|
81
|
+
*/
|
|
82
|
+
errorMessages: Partial<Record<FileUploadErrorType, {
|
|
83
|
+
title: string;
|
|
84
|
+
description: string;
|
|
85
|
+
}>>;
|
|
86
|
+
/**
|
|
87
|
+
* Formatter for file size display.
|
|
88
|
+
*/
|
|
89
|
+
formatterFileSize?: (size: number) => string;
|
|
90
|
+
/**
|
|
91
|
+
* Formatter for file name display.
|
|
92
|
+
*/
|
|
93
|
+
formatterFileName?: (name: string) => string;
|
|
94
|
+
/**
|
|
95
|
+
* Indicates if the file is being uploaded.
|
|
96
|
+
*/
|
|
97
|
+
isUploading?: boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Indicates if there was an error during file upload.
|
|
100
|
+
*/
|
|
101
|
+
hasError?: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Type of error when hasError is true.
|
|
104
|
+
*/
|
|
105
|
+
errorType?: FileUploadErrorType;
|
|
106
|
+
/**
|
|
107
|
+
* Custom error message to display when hasError is true.
|
|
108
|
+
*/
|
|
109
|
+
errorMessage?: string;
|
|
110
|
+
}
|
|
111
|
+
declare const FileUploadCard: ({ testId, isOpen, onDismiss, onFileSelect, onDownloadTemplate, onSearch, accept, multiple, title, fileInputAriaLabel, dropzoneAriaLabel, dropzoneTitle, selectFileButtonLabel, downloadTemplateButtonLabel, removeButtonAriaLabel, searchButtonLabel, uploadingStatusText, getCompletedStatusText, errorMessages, formatterFileSize, formatterFileName, isUploading, hasError, errorType: errorTypeProp, errorMessage, ...otherProps }: FileUploadCardProps) => React.JSX.Element;
|
|
112
|
+
export default FileUploadCard;
|
|
113
|
+
//# sourceMappingURL=FileUploadCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUploadCard.d.ts","sourceRoot":"","sources":["../../../../src/molecules/FileUploadCard/FileUploadCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA0B,cAAc,EAAE,MAAM,OAAO,CAAA;AACnE,OAAO,KAAsC,MAAM,OAAO,CAAA;AAI1D,OAAyB,EACvB,mBAAmB,EAEpB,MAAM,sCAAsC,CAAA;AAE7C,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC;IACtD;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAA;IACtC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC/B;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAA;IAC1B;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAA;IAC7B;;OAEG;IACH,2BAA2B,EAAE,MAAM,CAAA;IACnC;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAA;IAC7B;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAA;IAC3B;;OAEG;IACH,sBAAsB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IACpD;;OAEG;IACH,aAAa,EAAE,OAAO,CACpB,MAAM,CAAC,mBAAmB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CACpE,CAAA;IACD;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAC5C;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAC5C;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,mBAAmB,CAAA;IAC/B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,QAAA,MAAM,cAAc,2aA2BjB,mBAAmB,sBAkQrB,CAAA;AAED,eAAe,cAAc,CAAA"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { Button, Card, Icon, Input } from '../..';
|
|
3
|
+
import { useOnClickOutside } from '../../hooks';
|
|
4
|
+
import FileUploadStatus, { FileUploadErrorType, FileUploadState, } from '../FileUploadStatus/FileUploadStatus';
|
|
5
|
+
const FileUploadCard = ({ testId = 'fs-file-upload-card', isOpen, onDismiss, onFileSelect, onDownloadTemplate, onSearch, accept = '.csv', multiple = false, title, fileInputAriaLabel, dropzoneAriaLabel, dropzoneTitle, selectFileButtonLabel, downloadTemplateButtonLabel, removeButtonAriaLabel, searchButtonLabel, uploadingStatusText, getCompletedStatusText, errorMessages, formatterFileSize, formatterFileName, isUploading = false, hasError = false, errorType: errorTypeProp, errorMessage, ...otherProps }) => {
|
|
6
|
+
const fileInputRef = useRef(null);
|
|
7
|
+
const containerRef = useRef(null);
|
|
8
|
+
const [dragActive, setDragActive] = useState(false);
|
|
9
|
+
const [selectedFile, setSelectedFile] = useState(null);
|
|
10
|
+
const [uploadState, setUploadState] = useState(FileUploadState.Uploading);
|
|
11
|
+
const [errorType, setErrorType] = useState(undefined);
|
|
12
|
+
useOnClickOutside(isOpen ? containerRef : undefined, () => {
|
|
13
|
+
if (isOpen) {
|
|
14
|
+
onDismiss?.();
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
const handleEscape = (e) => {
|
|
19
|
+
if (e.key === 'Escape' && isOpen) {
|
|
20
|
+
onDismiss?.();
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
window.addEventListener('keydown', handleEscape);
|
|
24
|
+
return () => window.removeEventListener('keydown', handleEscape);
|
|
25
|
+
}, [isOpen, onDismiss]);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (!selectedFile)
|
|
28
|
+
return;
|
|
29
|
+
if (hasError) {
|
|
30
|
+
setUploadState(FileUploadState.Error);
|
|
31
|
+
setErrorType(errorTypeProp ?? FileUploadErrorType.InvalidStructure);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (isUploading) {
|
|
35
|
+
setUploadState(FileUploadState.Uploading);
|
|
36
|
+
setErrorType(undefined);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
setUploadState(FileUploadState.Completed);
|
|
40
|
+
setErrorType(undefined);
|
|
41
|
+
}, [hasError, selectedFile, isUploading, errorTypeProp]);
|
|
42
|
+
const isValidFileType = (file) => {
|
|
43
|
+
const fileName = file.name.toLowerCase();
|
|
44
|
+
const acceptedTypes = accept
|
|
45
|
+
.split(',')
|
|
46
|
+
.map((value) => value.trim().toLowerCase())
|
|
47
|
+
.filter(Boolean);
|
|
48
|
+
if (acceptedTypes.length === 0) {
|
|
49
|
+
return fileName.endsWith('.csv');
|
|
50
|
+
}
|
|
51
|
+
return acceptedTypes.some((value) => value.startsWith('.')
|
|
52
|
+
? fileName.endsWith(value)
|
|
53
|
+
: file.type.toLowerCase() === value);
|
|
54
|
+
};
|
|
55
|
+
const handleFileChange = (e) => {
|
|
56
|
+
const files = Array.from(e.target.files || []);
|
|
57
|
+
if (files.length > 0) {
|
|
58
|
+
const file = files[0];
|
|
59
|
+
setSelectedFile(file);
|
|
60
|
+
if (!isValidFileType(file)) {
|
|
61
|
+
setUploadState(FileUploadState.Error);
|
|
62
|
+
setErrorType(FileUploadErrorType.Unsupported);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
setErrorType(undefined);
|
|
66
|
+
if (isUploading) {
|
|
67
|
+
setUploadState(FileUploadState.Uploading);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
setUploadState(FileUploadState.Completed);
|
|
71
|
+
}
|
|
72
|
+
if (onFileSelect) {
|
|
73
|
+
onFileSelect(files);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
const handleDrag = (e) => {
|
|
78
|
+
if (!isOpen)
|
|
79
|
+
return;
|
|
80
|
+
e.preventDefault();
|
|
81
|
+
e.stopPropagation();
|
|
82
|
+
if (e.type === 'dragenter' || e.type === 'dragover') {
|
|
83
|
+
setDragActive(true);
|
|
84
|
+
}
|
|
85
|
+
else if (e.type === 'dragleave') {
|
|
86
|
+
setDragActive(false);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const handleDrop = (e) => {
|
|
90
|
+
if (!isOpen)
|
|
91
|
+
return;
|
|
92
|
+
e.preventDefault();
|
|
93
|
+
e.stopPropagation();
|
|
94
|
+
setDragActive(false);
|
|
95
|
+
if (e.dataTransfer.files && e.dataTransfer.files[0]) {
|
|
96
|
+
const files = Array.from(e.dataTransfer.files);
|
|
97
|
+
const file = files[0];
|
|
98
|
+
setSelectedFile(file);
|
|
99
|
+
if (!isValidFileType(file)) {
|
|
100
|
+
setUploadState(FileUploadState.Error);
|
|
101
|
+
setErrorType(FileUploadErrorType.Unsupported);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
setErrorType(undefined);
|
|
105
|
+
if (isUploading) {
|
|
106
|
+
setUploadState(FileUploadState.Uploading);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
setUploadState(FileUploadState.Completed);
|
|
110
|
+
}
|
|
111
|
+
if (onFileSelect) {
|
|
112
|
+
onFileSelect(files);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const triggerFileInput = () => {
|
|
117
|
+
if (fileInputRef.current) {
|
|
118
|
+
fileInputRef.current.value = '';
|
|
119
|
+
}
|
|
120
|
+
fileInputRef.current?.click();
|
|
121
|
+
};
|
|
122
|
+
const handleDownloadTemplate = () => {
|
|
123
|
+
if (onDownloadTemplate) {
|
|
124
|
+
onDownloadTemplate();
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
const csvContent = 'SKU,Quantity\nAB001,2\nAB100,5\nAB999,49';
|
|
128
|
+
const blob = new Blob([csvContent], { type: 'text/csv' });
|
|
129
|
+
const url = window.URL.createObjectURL(blob);
|
|
130
|
+
const a = document.createElement('a');
|
|
131
|
+
a.href = url;
|
|
132
|
+
a.download = 'template.csv';
|
|
133
|
+
a.click();
|
|
134
|
+
window.URL.revokeObjectURL(url);
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
const handleRemoveFile = () => {
|
|
138
|
+
setSelectedFile(null);
|
|
139
|
+
setUploadState(FileUploadState.Uploading);
|
|
140
|
+
setErrorType(undefined);
|
|
141
|
+
if (fileInputRef.current) {
|
|
142
|
+
fileInputRef.current.value = '';
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
const handleSearch = () => {
|
|
146
|
+
if (selectedFile && onSearch) {
|
|
147
|
+
onSearch(selectedFile);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
return (React.createElement(Card, { ref: containerRef, title: title, "data-fs-file-upload-card": true, "data-fs-file-upload-card-open": isOpen, "data-fs-file-upload-card-has-file": selectedFile !== null, testId: testId, "aria-hidden": !isOpen, ...otherProps },
|
|
151
|
+
React.createElement(Input, { ref: fileInputRef, type: "file", onChange: handleFileChange, accept: accept, multiple: multiple, style: { display: 'none' }, "aria-label": fileInputAriaLabel }),
|
|
152
|
+
selectedFile ? (React.createElement(FileUploadStatus, { file: selectedFile, state: uploadState, errorType: errorTypeProp ?? errorType, errorMessages: errorMessages, errorMessage: errorMessage, onRemove: handleRemoveFile, onSearch: handleSearch, onDownloadTemplate: handleDownloadTemplate, onSelectFile: triggerFileInput, removeButtonAriaLabel: removeButtonAriaLabel, searchButtonLabel: searchButtonLabel, downloadTemplateButtonLabel: downloadTemplateButtonLabel, selectFileButtonLabel: selectFileButtonLabel, uploadingStatusText: uploadingStatusText, completedStatusText: getCompletedStatusText(selectedFile.size), fileName: formatterFileName
|
|
153
|
+
? formatterFileName(selectedFile.name)
|
|
154
|
+
: selectedFile.name })) : (React.createElement("div", { "data-fs-file-upload-card-dropzone": true, "data-fs-file-upload-card-dragging": dragActive, onDragEnter: handleDrag, onDragLeave: handleDrag, onDragOver: handleDrag, onDrop: handleDrop, role: "region", "aria-label": dropzoneAriaLabel },
|
|
155
|
+
React.createElement("div", { "data-fs-file-upload-card-icon": true },
|
|
156
|
+
React.createElement("div", { "data-fs-file-upload-card-icon-shadow": true }),
|
|
157
|
+
React.createElement("div", { "data-fs-file-upload-card-icon-wrapper": true },
|
|
158
|
+
React.createElement(Icon, { name: "Paperclip", width: 24, height: 32 })),
|
|
159
|
+
React.createElement("div", { "data-fs-file-upload-card-icon-badge": true },
|
|
160
|
+
React.createElement(Icon, { name: "Plus", width: 16, height: 16 }))),
|
|
161
|
+
React.createElement("p", { "data-fs-file-upload-card-title": true }, dropzoneTitle),
|
|
162
|
+
React.createElement(Button, { variant: "secondary", size: "regular", onClick: triggerFileInput, "data-fs-file-upload-card-select-button": true }, selectFileButtonLabel),
|
|
163
|
+
React.createElement(Button, { type: "button", onClick: handleDownloadTemplate, "data-fs-file-upload-card-template-link": true }, downloadTemplateButtonLabel)))));
|
|
164
|
+
};
|
|
165
|
+
export default FileUploadCard;
|
|
166
|
+
//# sourceMappingURL=FileUploadCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUploadCard.js","sourceRoot":"","sources":["../../../../src/molecules/FileUploadCard/FileUploadCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/molecules/FileUploadCard/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/molecules/FileUploadCard/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
export declare enum FileUploadState {
|
|
4
|
+
Uploading = "uploading",
|
|
5
|
+
Completed = "completed",
|
|
6
|
+
Error = "error"
|
|
7
|
+
}
|
|
8
|
+
export declare enum FileUploadErrorType {
|
|
9
|
+
Unexpected = "unexpected",
|
|
10
|
+
Unsupported = "unsupported",
|
|
11
|
+
Unreadable = "unreadable",
|
|
12
|
+
InvalidStructure = "invalid-structure",
|
|
13
|
+
Empty = "empty",
|
|
14
|
+
TooLarge = "too-large",
|
|
15
|
+
NoProductsFound = "no-products-found"
|
|
16
|
+
}
|
|
17
|
+
export interface FileUploadStatusProps extends HTMLAttributes<HTMLDivElement> {
|
|
18
|
+
/**
|
|
19
|
+
* ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
|
|
20
|
+
*/
|
|
21
|
+
testId?: string;
|
|
22
|
+
/**
|
|
23
|
+
* The file being uploaded.
|
|
24
|
+
*/
|
|
25
|
+
file: File;
|
|
26
|
+
/**
|
|
27
|
+
* Current upload state.
|
|
28
|
+
* @default 'uploading'
|
|
29
|
+
*/
|
|
30
|
+
state?: FileUploadState;
|
|
31
|
+
/**
|
|
32
|
+
* Type of error when state is 'error'.
|
|
33
|
+
*/
|
|
34
|
+
errorType?: FileUploadErrorType;
|
|
35
|
+
/**
|
|
36
|
+
* Custom error message. If provided, overrides the default error message for the errorType.
|
|
37
|
+
*/
|
|
38
|
+
errorMessage?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Callback when the remove/cancel button is clicked.
|
|
41
|
+
*/
|
|
42
|
+
onRemove?: () => void;
|
|
43
|
+
/**
|
|
44
|
+
* Callback when the search button is clicked (only shown when state is 'completed').
|
|
45
|
+
*/
|
|
46
|
+
onSearch?: () => void;
|
|
47
|
+
/**
|
|
48
|
+
* Callback when download template is clicked (only shown when state is 'error').
|
|
49
|
+
*/
|
|
50
|
+
onDownloadTemplate?: () => void;
|
|
51
|
+
/**
|
|
52
|
+
* Callback when select file is clicked (only shown when state is 'error').
|
|
53
|
+
*/
|
|
54
|
+
onSelectFile?: () => void;
|
|
55
|
+
/**
|
|
56
|
+
* Aria-label for the remove button (e.g. from CMS).
|
|
57
|
+
*/
|
|
58
|
+
removeButtonAriaLabel: string;
|
|
59
|
+
/**
|
|
60
|
+
* Label for the search button when state is 'completed' (e.g. from CMS).
|
|
61
|
+
*/
|
|
62
|
+
searchButtonLabel: string;
|
|
63
|
+
/**
|
|
64
|
+
* Label for the download template button (e.g. from CMS).
|
|
65
|
+
*/
|
|
66
|
+
downloadTemplateButtonLabel: string;
|
|
67
|
+
/**
|
|
68
|
+
* Label for the select file button (e.g. from CMS).
|
|
69
|
+
*/
|
|
70
|
+
selectFileButtonLabel: string;
|
|
71
|
+
/**
|
|
72
|
+
* Error messages per error type (e.g. from CMS). Required when state is Error to show messages.
|
|
73
|
+
*/
|
|
74
|
+
errorMessages: Partial<Record<FileUploadErrorType, {
|
|
75
|
+
title: string;
|
|
76
|
+
description: string;
|
|
77
|
+
}>>;
|
|
78
|
+
/**
|
|
79
|
+
* Status text when state is Uploading (e.g. from CMS).
|
|
80
|
+
*/
|
|
81
|
+
uploadingStatusText: string;
|
|
82
|
+
/**
|
|
83
|
+
* Status text when state is Completed (e.g. from CMS). May include file size.
|
|
84
|
+
*/
|
|
85
|
+
completedStatusText: string;
|
|
86
|
+
/**
|
|
87
|
+
* Custom file name display (optional).
|
|
88
|
+
*/
|
|
89
|
+
fileName?: string;
|
|
90
|
+
}
|
|
91
|
+
declare const FileUploadStatus: ({ testId, file, state, errorType, errorMessage, onRemove, onSearch, onDownloadTemplate, onSelectFile, removeButtonAriaLabel, searchButtonLabel, downloadTemplateButtonLabel, selectFileButtonLabel, errorMessages, uploadingStatusText, completedStatusText, fileName, ...otherProps }: FileUploadStatusProps) => React.JSX.Element;
|
|
92
|
+
export default FileUploadStatus;
|
|
93
|
+
//# sourceMappingURL=FileUploadStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUploadStatus.d.ts","sourceRoot":"","sources":["../../../../src/molecules/FileUploadStatus/FileUploadStatus.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,oBAAY,eAAe;IACzB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,KAAK,UAAU;CAChB;AAED,oBAAY,mBAAmB;IAC7B,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,UAAU,eAAe;IACzB,gBAAgB,sBAAsB;IACtC,KAAK,UAAU;IACf,QAAQ,cAAc;IACtB,eAAe,sBAAsB;CACtC;AAED,MAAM,WAAW,qBAAsB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC3E;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,IAAI,EAAE,IAAI,CAAA;IACV;;;OAGG;IACH,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,mBAAmB,CAAA;IAC/B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC/B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAA;IAC7B;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,2BAA2B,EAAE,MAAM,CAAA;IACnC;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAA;IAC7B;;OAEG;IACH,aAAa,EAAE,OAAO,CACpB,MAAM,CAAC,mBAAmB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CACpE,CAAA;IACD;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAA;IAC3B;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAA;IAC3B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,QAAA,MAAM,gBAAgB,2RAmBnB,qBAAqB,sBA6IvB,CAAA;AAED,eAAe,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Button, Icon } from '../..';
|
|
3
|
+
export var FileUploadState;
|
|
4
|
+
(function (FileUploadState) {
|
|
5
|
+
FileUploadState["Uploading"] = "uploading";
|
|
6
|
+
FileUploadState["Completed"] = "completed";
|
|
7
|
+
FileUploadState["Error"] = "error";
|
|
8
|
+
})(FileUploadState || (FileUploadState = {}));
|
|
9
|
+
export var FileUploadErrorType;
|
|
10
|
+
(function (FileUploadErrorType) {
|
|
11
|
+
FileUploadErrorType["Unexpected"] = "unexpected";
|
|
12
|
+
FileUploadErrorType["Unsupported"] = "unsupported";
|
|
13
|
+
FileUploadErrorType["Unreadable"] = "unreadable";
|
|
14
|
+
FileUploadErrorType["InvalidStructure"] = "invalid-structure";
|
|
15
|
+
FileUploadErrorType["Empty"] = "empty";
|
|
16
|
+
FileUploadErrorType["TooLarge"] = "too-large";
|
|
17
|
+
FileUploadErrorType["NoProductsFound"] = "no-products-found";
|
|
18
|
+
})(FileUploadErrorType || (FileUploadErrorType = {}));
|
|
19
|
+
const FileUploadStatus = ({ testId = 'fs-file-upload-status', file, state = FileUploadState.Uploading, errorType, errorMessage, onRemove, onSearch, onDownloadTemplate, onSelectFile, removeButtonAriaLabel, searchButtonLabel, downloadTemplateButtonLabel, selectFileButtonLabel, errorMessages, uploadingStatusText, completedStatusText, fileName, ...otherProps }) => {
|
|
20
|
+
const getErrorMessage = () => {
|
|
21
|
+
if (errorMessage) {
|
|
22
|
+
return { title: errorMessage, description: '' };
|
|
23
|
+
}
|
|
24
|
+
if (errorType && errorMessages?.[errorType]) {
|
|
25
|
+
return errorMessages[errorType];
|
|
26
|
+
}
|
|
27
|
+
return (errorMessages?.[FileUploadErrorType.Unexpected] ?? {
|
|
28
|
+
title: '',
|
|
29
|
+
description: '',
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
const getStatusText = () => {
|
|
33
|
+
switch (state) {
|
|
34
|
+
case FileUploadState.Uploading:
|
|
35
|
+
return uploadingStatusText;
|
|
36
|
+
case FileUploadState.Completed:
|
|
37
|
+
return completedStatusText;
|
|
38
|
+
default:
|
|
39
|
+
return '';
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const getIcon = () => {
|
|
43
|
+
switch (state) {
|
|
44
|
+
case FileUploadState.Uploading:
|
|
45
|
+
return (React.createElement("div", { "data-fs-file-upload-status-icon-loading": true },
|
|
46
|
+
React.createElement(Icon, { name: "CircleNotch", width: 24, height: 24, strokeWidth: 5 })));
|
|
47
|
+
case FileUploadState.Completed:
|
|
48
|
+
return (React.createElement("div", { "data-fs-file-upload-status-icon-completed": true },
|
|
49
|
+
React.createElement(Icon, { name: "Table", width: 24, height: 24, strokeWidth: 5 })));
|
|
50
|
+
case FileUploadState.Error:
|
|
51
|
+
return (React.createElement("div", { "data-fs-file-upload-status-icon-error": true },
|
|
52
|
+
React.createElement(Icon, { name: "WarningOctagon", width: 24, height: 24, strokeWidth: 5 })));
|
|
53
|
+
default:
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
return (React.createElement("div", { "data-fs-file-upload-status": true, "data-fs-file-upload-status-state": state, "data-testid": testId, ...otherProps },
|
|
58
|
+
React.createElement("div", { "data-fs-file-upload-status-file-info": true, "data-fs-file-upload-state": state },
|
|
59
|
+
React.createElement("div", { "data-fs-file-upload-status-icon": true }, getIcon()),
|
|
60
|
+
React.createElement("div", { "data-fs-file-upload-status-details": true }, state === FileUploadState.Error ? (React.createElement(React.Fragment, null,
|
|
61
|
+
React.createElement("p", { "data-fs-file-upload-status-text-error": true }, getErrorMessage().title),
|
|
62
|
+
React.createElement("p", { "data-fs-file-upload-status-text-error": true }, getErrorMessage().description))) : (React.createElement(React.Fragment, null,
|
|
63
|
+
React.createElement("p", { "data-fs-file-upload-status-filename": true }, fileName ?? file.name),
|
|
64
|
+
React.createElement("p", { "data-fs-file-upload-status-text": true }, getStatusText())))),
|
|
65
|
+
onRemove && (React.createElement(Button, { type: "button", onClick: onRemove, "data-fs-file-upload-status-remove": true, "aria-label": removeButtonAriaLabel },
|
|
66
|
+
React.createElement(Icon, { name: "X", width: 16, height: 16 })))),
|
|
67
|
+
state === FileUploadState.Completed && onSearch && (React.createElement(Button, { type: "button", variant: "primary", size: "regular", onClick: onSearch, "data-fs-file-upload-status-search-button": true }, searchButtonLabel)),
|
|
68
|
+
state === FileUploadState.Error && (React.createElement("div", { "data-fs-file-upload-status-error-actions": true },
|
|
69
|
+
onDownloadTemplate && (React.createElement(Button, { type: "button", variant: "secondary", size: "regular", onClick: onDownloadTemplate, "data-fs-file-upload-status-download-button": true }, downloadTemplateButtonLabel)),
|
|
70
|
+
onSelectFile && (React.createElement(Button, { type: "button", variant: "primary", size: "regular", onClick: onSelectFile, "data-fs-file-upload-status-select-button": true }, selectFileButtonLabel))))));
|
|
71
|
+
};
|
|
72
|
+
export default FileUploadStatus;
|
|
73
|
+
//# sourceMappingURL=FileUploadStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUploadStatus.js","sourceRoot":"","sources":["../../../../src/molecules/FileUploadStatus/FileUploadStatus.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/molecules/FileUploadStatus/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,eAAe,EACf,mBAAmB,GACpB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/molecules/FileUploadStatus/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,eAAe,EACf,mBAAmB,GACpB,MAAM,oBAAoB,CAAA"}
|
|
@@ -20,7 +20,29 @@ export interface SearchInputFieldProps extends InputProps {
|
|
|
20
20
|
*/
|
|
21
21
|
buttonIcon?: ReactNode;
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* Whether to show the attachment button.
|
|
24
|
+
* @default false
|
|
25
|
+
*/
|
|
26
|
+
showAttachmentButton?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Props for the paperclip button inside the input.
|
|
29
|
+
*/
|
|
30
|
+
attachmentButtonProps?: ButtonProps;
|
|
31
|
+
/**
|
|
32
|
+
* Aria-label for the attachment button (e.g. from CMS).
|
|
33
|
+
*/
|
|
34
|
+
attachmentButtonAriaLabel?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Aria-label for the submit button (e.g. from CMS).
|
|
37
|
+
*/
|
|
38
|
+
submitButtonAriaLabel?: string;
|
|
39
|
+
/**
|
|
40
|
+
* A React component that will be rendered as an icon (attachment button).
|
|
41
|
+
* @default <Icon name="Paperclip" />
|
|
42
|
+
*/
|
|
43
|
+
attachmentButtonIcon?: ReactNode;
|
|
44
|
+
/**
|
|
45
|
+
* Aria-label for the search input (e.g. from CMS).
|
|
24
46
|
*/
|
|
25
47
|
'aria-label'?: AriaAttributes['aria-label'];
|
|
26
48
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchInputField.d.ts","sourceRoot":"","sources":["../../../../src/molecules/SearchInputField/SearchInputField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEd,mBAAmB,EACnB,SAAS,EACV,MAAM,OAAO,CAAA;AACd,OAAO,KAAkD,MAAM,OAAO,CAAA;AAItE,KAAK,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAA;AAEzE,KAAK,WAAW,GAAG;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;
|
|
1
|
+
{"version":3,"file":"SearchInputField.d.ts","sourceRoot":"","sources":["../../../../src/molecules/SearchInputField/SearchInputField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEd,mBAAmB,EACnB,SAAS,EACV,MAAM,OAAO,CAAA;AACd,OAAO,KAAkD,MAAM,OAAO,CAAA;AAItE,KAAK,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAA;AAEzE,KAAK,WAAW,GAAG;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACvD;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;OAEG;IACH,qBAAqB,CAAC,EAAE,WAAW,CAAA;IACnC;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,SAAS,CAAA;IAChC;;OAEG;IACH,YAAY,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,CAAA;IAC3C;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAClC,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;CACjC;AAED,QAAA,MAAM,gBAAgB,0GA+EpB,CAAA;AAEF,eAAe,gBAAgB,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { forwardRef, useImperativeHandle, useRef } from 'react';
|
|
2
2
|
import { Icon, IconButton, Input } from '../..';
|
|
3
|
-
const SearchInputField = forwardRef(function SearchInputField({ onSubmit, buttonIcon, 'aria-label': ariaLabel
|
|
3
|
+
const SearchInputField = forwardRef(function SearchInputField({ onSubmit, buttonIcon, showAttachmentButton = false, attachmentButtonAriaLabel, attachmentButtonIcon, attachmentButtonProps, submitButtonAriaLabel, 'aria-label': ariaLabel, testId = 'fs-search-input', buttonProps, ...otherProps }, ref) {
|
|
4
4
|
const inputRef = useRef(null);
|
|
5
5
|
const formRef = useRef(null);
|
|
6
6
|
const handleSubmit = (event) => {
|
|
@@ -13,9 +13,14 @@ const SearchInputField = forwardRef(function SearchInputField({ onSubmit, button
|
|
|
13
13
|
inputRef: inputRef.current,
|
|
14
14
|
formRef: formRef.current,
|
|
15
15
|
}));
|
|
16
|
-
return (React.createElement("
|
|
17
|
-
React.createElement(
|
|
18
|
-
|
|
16
|
+
return (React.createElement("div", { "data-fs-search-input-field-wrapper": true },
|
|
17
|
+
React.createElement("form", { ref: formRef, "data-fs-search-input-field": true, "data-testid": testId, onSubmit: handleSubmit, role: "search" },
|
|
18
|
+
React.createElement(Input, { ref: inputRef, "aria-label": ariaLabel, "data-fs-search-input-field-input": true, ...otherProps }),
|
|
19
|
+
React.createElement("div", { "data-fs-search-input-field-actions": true },
|
|
20
|
+
showAttachmentButton && (React.createElement(React.Fragment, null,
|
|
21
|
+
React.createElement(IconButton, { type: "button", "aria-label": attachmentButtonAriaLabel, icon: attachmentButtonIcon ?? React.createElement(Icon, { name: "Paperclip" }), size: "small", "data-fs-search-input-field-attachment-button": true, ...attachmentButtonProps }),
|
|
22
|
+
React.createElement("span", { "data-fs-search-input-field-separator": true }))),
|
|
23
|
+
React.createElement(IconButton, { type: "submit", "aria-label": submitButtonAriaLabel, icon: buttonIcon ?? React.createElement(Icon, { name: "MagnifyingGlass" }), size: "small", "data-fs-search-input-field-submit-button": true, ...buttonProps })))));
|
|
19
24
|
});
|
|
20
25
|
export default SearchInputField;
|
|
21
26
|
//# sourceMappingURL=SearchInputField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchInputField.js","sourceRoot":"","sources":["../../../../src/molecules/SearchInputField/SearchInputField.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEtE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"SearchInputField.js","sourceRoot":"","sources":["../../../../src/molecules/SearchInputField/SearchInputField.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEtE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AA4D/C,MAAM,gBAAgB,GAAG,UAAU,CAGjC,SAAS,gBAAgB,CACzB,EACE,QAAQ,EACR,UAAU,EACV,oBAAoB,GAAG,KAAK,EAC5B,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EAAE,SAAS,EACvB,MAAM,GAAG,iBAAiB,EAC1B,WAAW,EACX,GAAG,UAAU,EACd,EACD,GAAG;IAEH,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAA;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAA;IAE7C,MAAM,YAAY,GAAG,CAAC,KAAgB,EAAE,EAAE;QACxC,KAAK,CAAC,cAAc,EAAE,CAAA;QAEtB,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,KAAK,EAAE,EAAE,CAAC;YACnC,QAAQ,CAAC,QAAQ,CAAC,OAAQ,CAAC,KAAK,CAAC,CAAA;QACnC,CAAC;IACH,CAAC,CAAA;IAED,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,QAAQ,EAAE,QAAQ,CAAC,OAAO;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC,CAAA;IAEH,OAAO,CACL;QACE,8BACE,GAAG,EAAE,OAAO,qDAEC,MAAM,EACnB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAC,QAAQ;YAEb,oBAAC,KAAK,IACJ,GAAG,EAAE,QAAQ,gBACD,SAAS,+CAEjB,UAAU,GACd;YAEF;gBACG,oBAAoB,IAAI,CACvB;oBACE,oBAAC,UAAU,IACT,IAAI,EAAC,QAAQ,gBACD,yBAAyB,EACrC,IAAI,EAAE,oBAAoB,IAAI,oBAAC,IAAI,IAAC,IAAI,EAAC,WAAW,GAAG,EACvD,IAAI,EAAC,OAAO,2DAER,qBAAqB,GACzB;oBAEF,6EAA6C,CAC5C,CACJ;gBAED,oBAAC,UAAU,IACT,IAAI,EAAC,QAAQ,gBACD,qBAAqB,EACjC,IAAI,EAAE,UAAU,IAAI,oBAAC,IAAI,IAAC,IAAI,EAAC,iBAAiB,GAAG,EACnD,IAAI,EAAC,OAAO,uDAER,WAAW,GACf,CACE,CACD,CACH,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React, { type PropsWithChildren } from 'react';
|
|
2
|
+
import type { OverlayProps } from '../../atoms/Overlay';
|
|
3
|
+
import { type QuickOrderDrawerProviderProps } from './provider/QuickOrderDrawerProvider';
|
|
4
|
+
export type QuickOrderDrawerProps = {
|
|
5
|
+
/**
|
|
6
|
+
* ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
|
|
7
|
+
*/
|
|
8
|
+
testId?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Controls the state
|
|
11
|
+
*/
|
|
12
|
+
isOpen: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Props forwarded to the `Overlay` component.
|
|
15
|
+
*/
|
|
16
|
+
overlayProps?: OverlayProps;
|
|
17
|
+
/**
|
|
18
|
+
* Props forwarded to the `QuickOrderDrawerProvider` component.
|
|
19
|
+
*/
|
|
20
|
+
providerProps?: Omit<QuickOrderDrawerProviderProps, 'children'>;
|
|
21
|
+
};
|
|
22
|
+
declare const QuickOrderDrawer: ({ testId, isOpen, overlayProps, providerProps, children, }: PropsWithChildren<QuickOrderDrawerProps>) => React.JSX.Element;
|
|
23
|
+
export default QuickOrderDrawer;
|
|
24
|
+
//# sourceMappingURL=QuickOrderDrawer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuickOrderDrawer.d.ts","sourceRoot":"","sources":["../../../../src/organisms/QuickOrderDrawer/QuickOrderDrawer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIvD,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,qCAAqC,CAAA;AAE5C,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,MAAM,EAAE,OAAO,CAAA;IAEf;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAE,IAAI,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAA;CAChE,CAAA;AAED,QAAA,MAAM,gBAAgB,+DAMnB,kBAAkB,qBAAqB,CAAC,sBAiB1C,CAAA;AAED,eAAe,gBAAgB,CAAA"}
|