@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.
Files changed (171) hide show
  1. package/dist/cjs/atoms/Link/Link.d.ts +1 -1
  2. package/dist/cjs/atoms/Link/Link.d.ts.map +1 -1
  3. package/dist/cjs/atoms/Link/Link.js.map +1 -1
  4. package/dist/cjs/atoms/List/List.d.ts.map +1 -1
  5. package/dist/cjs/atoms/List/List.js.map +1 -1
  6. package/dist/cjs/hooks/index.d.ts +7 -3
  7. package/dist/cjs/hooks/index.d.ts.map +1 -1
  8. package/dist/cjs/hooks/index.js +12 -6
  9. package/dist/cjs/hooks/index.js.map +1 -1
  10. package/dist/cjs/hooks/useCSVParser.d.ts +43 -0
  11. package/dist/cjs/hooks/useCSVParser.d.ts.map +1 -0
  12. package/dist/cjs/hooks/useCSVParser.js +264 -0
  13. package/dist/cjs/hooks/useCSVParser.js.map +1 -0
  14. package/dist/cjs/hooks/useFileUpload.d.ts +26 -0
  15. package/dist/cjs/hooks/useFileUpload.d.ts.map +1 -0
  16. package/dist/cjs/hooks/useFileUpload.js +68 -0
  17. package/dist/cjs/hooks/useFileUpload.js.map +1 -0
  18. package/dist/cjs/index.d.ts +58 -50
  19. package/dist/cjs/index.d.ts.map +1 -1
  20. package/dist/cjs/index.js +47 -32
  21. package/dist/cjs/index.js.map +1 -1
  22. package/dist/cjs/molecules/Accordion/AccordionItem.d.ts.map +1 -1
  23. package/dist/cjs/molecules/Accordion/AccordionItem.js.map +1 -1
  24. package/dist/cjs/molecules/Dropzone/Dropzone.d.ts +87 -0
  25. package/dist/cjs/molecules/Dropzone/Dropzone.d.ts.map +1 -0
  26. package/dist/cjs/molecules/Dropzone/Dropzone.js +85 -0
  27. package/dist/cjs/molecules/Dropzone/Dropzone.js.map +1 -0
  28. package/dist/cjs/molecules/Dropzone/index.d.ts +3 -0
  29. package/dist/cjs/molecules/Dropzone/index.d.ts.map +1 -0
  30. package/dist/cjs/molecules/Dropzone/index.js +9 -0
  31. package/dist/cjs/molecules/Dropzone/index.js.map +1 -0
  32. package/dist/cjs/molecules/FileUploadCard/FileUploadCard.d.ts +113 -0
  33. package/dist/cjs/molecules/FileUploadCard/FileUploadCard.d.ts.map +1 -0
  34. package/dist/cjs/molecules/FileUploadCard/FileUploadCard.js +169 -0
  35. package/dist/cjs/molecules/FileUploadCard/FileUploadCard.js.map +1 -0
  36. package/dist/cjs/molecules/FileUploadCard/index.d.ts +3 -0
  37. package/dist/cjs/molecules/FileUploadCard/index.d.ts.map +1 -0
  38. package/dist/cjs/molecules/FileUploadCard/index.js +9 -0
  39. package/dist/cjs/molecules/FileUploadCard/index.js.map +1 -0
  40. package/dist/cjs/molecules/FileUploadStatus/FileUploadStatus.d.ts +93 -0
  41. package/dist/cjs/molecules/FileUploadStatus/FileUploadStatus.d.ts.map +1 -0
  42. package/dist/cjs/molecules/FileUploadStatus/FileUploadStatus.js +77 -0
  43. package/dist/cjs/molecules/FileUploadStatus/FileUploadStatus.js.map +1 -0
  44. package/dist/cjs/molecules/FileUploadStatus/index.d.ts +3 -0
  45. package/dist/cjs/molecules/FileUploadStatus/index.d.ts.map +1 -0
  46. package/dist/cjs/molecules/FileUploadStatus/index.js +11 -0
  47. package/dist/cjs/molecules/FileUploadStatus/index.js.map +1 -0
  48. package/dist/cjs/molecules/SearchInputField/SearchInputField.d.ts +23 -1
  49. package/dist/cjs/molecules/SearchInputField/SearchInputField.d.ts.map +1 -1
  50. package/dist/cjs/molecules/SearchInputField/SearchInputField.js +9 -4
  51. package/dist/cjs/molecules/SearchInputField/SearchInputField.js.map +1 -1
  52. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawer.d.ts +24 -0
  53. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawer.d.ts.map +1 -0
  54. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawer.js +14 -0
  55. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawer.js.map +1 -0
  56. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.d.ts +16 -0
  57. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.d.ts.map +1 -0
  58. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.js +37 -0
  59. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.js.map +1 -0
  60. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.d.ts +9 -0
  61. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.d.ts.map +1 -0
  62. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.js +24 -0
  63. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.js.map +1 -0
  64. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.d.ts +35 -0
  65. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.d.ts.map +1 -0
  66. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.js +91 -0
  67. package/dist/cjs/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.js.map +1 -0
  68. package/dist/cjs/organisms/QuickOrderDrawer/index.d.ts +11 -0
  69. package/dist/cjs/organisms/QuickOrderDrawer/index.d.ts.map +1 -0
  70. package/dist/cjs/organisms/QuickOrderDrawer/index.js +18 -0
  71. package/dist/cjs/organisms/QuickOrderDrawer/index.js.map +1 -0
  72. package/dist/cjs/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.d.ts +61 -0
  73. package/dist/cjs/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.d.ts.map +1 -0
  74. package/dist/cjs/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.js +86 -0
  75. package/dist/cjs/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.js.map +1 -0
  76. package/dist/esm/atoms/Link/Link.d.ts +1 -1
  77. package/dist/esm/atoms/Link/Link.d.ts.map +1 -1
  78. package/dist/esm/atoms/Link/Link.js.map +1 -1
  79. package/dist/esm/atoms/List/List.d.ts.map +1 -1
  80. package/dist/esm/atoms/List/List.js.map +1 -1
  81. package/dist/esm/hooks/index.d.ts +7 -3
  82. package/dist/esm/hooks/index.d.ts.map +1 -1
  83. package/dist/esm/hooks/index.js +6 -3
  84. package/dist/esm/hooks/index.js.map +1 -1
  85. package/dist/esm/hooks/useCSVParser.d.ts +43 -0
  86. package/dist/esm/hooks/useCSVParser.d.ts.map +1 -0
  87. package/dist/esm/hooks/useCSVParser.js +259 -0
  88. package/dist/esm/hooks/useCSVParser.js.map +1 -0
  89. package/dist/esm/hooks/useFileUpload.d.ts +26 -0
  90. package/dist/esm/hooks/useFileUpload.d.ts.map +1 -0
  91. package/dist/esm/hooks/useFileUpload.js +64 -0
  92. package/dist/esm/hooks/useFileUpload.js.map +1 -0
  93. package/dist/esm/index.d.ts +58 -50
  94. package/dist/esm/index.d.ts.map +1 -1
  95. package/dist/esm/index.js +24 -20
  96. package/dist/esm/index.js.map +1 -1
  97. package/dist/esm/molecules/Accordion/AccordionItem.d.ts.map +1 -1
  98. package/dist/esm/molecules/Accordion/AccordionItem.js.map +1 -1
  99. package/dist/esm/molecules/Dropzone/Dropzone.d.ts +87 -0
  100. package/dist/esm/molecules/Dropzone/Dropzone.d.ts.map +1 -0
  101. package/dist/esm/molecules/Dropzone/Dropzone.js +82 -0
  102. package/dist/esm/molecules/Dropzone/Dropzone.js.map +1 -0
  103. package/dist/esm/molecules/Dropzone/index.d.ts +3 -0
  104. package/dist/esm/molecules/Dropzone/index.d.ts.map +1 -0
  105. package/dist/esm/molecules/Dropzone/index.js +2 -0
  106. package/dist/esm/molecules/Dropzone/index.js.map +1 -0
  107. package/dist/esm/molecules/FileUploadCard/FileUploadCard.d.ts +113 -0
  108. package/dist/esm/molecules/FileUploadCard/FileUploadCard.d.ts.map +1 -0
  109. package/dist/esm/molecules/FileUploadCard/FileUploadCard.js +166 -0
  110. package/dist/esm/molecules/FileUploadCard/FileUploadCard.js.map +1 -0
  111. package/dist/esm/molecules/FileUploadCard/index.d.ts +3 -0
  112. package/dist/esm/molecules/FileUploadCard/index.d.ts.map +1 -0
  113. package/dist/esm/molecules/FileUploadCard/index.js +2 -0
  114. package/dist/esm/molecules/FileUploadCard/index.js.map +1 -0
  115. package/dist/esm/molecules/FileUploadStatus/FileUploadStatus.d.ts +93 -0
  116. package/dist/esm/molecules/FileUploadStatus/FileUploadStatus.d.ts.map +1 -0
  117. package/dist/esm/molecules/FileUploadStatus/FileUploadStatus.js +73 -0
  118. package/dist/esm/molecules/FileUploadStatus/FileUploadStatus.js.map +1 -0
  119. package/dist/esm/molecules/FileUploadStatus/index.d.ts +3 -0
  120. package/dist/esm/molecules/FileUploadStatus/index.d.ts.map +1 -0
  121. package/dist/esm/molecules/FileUploadStatus/index.js +2 -0
  122. package/dist/esm/molecules/FileUploadStatus/index.js.map +1 -0
  123. package/dist/esm/molecules/SearchInputField/SearchInputField.d.ts +23 -1
  124. package/dist/esm/molecules/SearchInputField/SearchInputField.d.ts.map +1 -1
  125. package/dist/esm/molecules/SearchInputField/SearchInputField.js +9 -4
  126. package/dist/esm/molecules/SearchInputField/SearchInputField.js.map +1 -1
  127. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawer.d.ts +24 -0
  128. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawer.d.ts.map +1 -0
  129. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawer.js +11 -0
  130. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawer.js.map +1 -0
  131. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.d.ts +16 -0
  132. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.d.ts.map +1 -0
  133. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.js +34 -0
  134. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.js.map +1 -0
  135. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.d.ts +9 -0
  136. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.d.ts.map +1 -0
  137. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.js +21 -0
  138. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.js.map +1 -0
  139. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.d.ts +35 -0
  140. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.d.ts.map +1 -0
  141. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.js +88 -0
  142. package/dist/esm/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.js.map +1 -0
  143. package/dist/esm/organisms/QuickOrderDrawer/index.d.ts +11 -0
  144. package/dist/esm/organisms/QuickOrderDrawer/index.d.ts.map +1 -0
  145. package/dist/esm/organisms/QuickOrderDrawer/index.js +6 -0
  146. package/dist/esm/organisms/QuickOrderDrawer/index.js.map +1 -0
  147. package/dist/esm/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.d.ts +61 -0
  148. package/dist/esm/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.d.ts.map +1 -0
  149. package/dist/esm/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.js +80 -0
  150. package/dist/esm/organisms/QuickOrderDrawer/provider/QuickOrderDrawerProvider.js.map +1 -0
  151. package/package.json +5 -2
  152. package/src/atoms/Link/Link.tsx +4 -1
  153. package/src/atoms/List/List.tsx +18 -16
  154. package/src/hooks/index.ts +11 -3
  155. package/src/hooks/useCSVParser.ts +367 -0
  156. package/src/hooks/useFileUpload.ts +88 -0
  157. package/src/index.ts +97 -66
  158. package/src/molecules/Accordion/AccordionItem.tsx +4 -3
  159. package/src/molecules/Dropzone/Dropzone.tsx +248 -0
  160. package/src/molecules/Dropzone/index.ts +2 -0
  161. package/src/molecules/FileUploadCard/FileUploadCard.tsx +406 -0
  162. package/src/molecules/FileUploadCard/index.tsx +2 -0
  163. package/src/molecules/FileUploadStatus/FileUploadStatus.tsx +258 -0
  164. package/src/molecules/FileUploadStatus/index.tsx +6 -0
  165. package/src/molecules/SearchInputField/SearchInputField.tsx +72 -23
  166. package/src/organisms/QuickOrderDrawer/QuickOrderDrawer.tsx +58 -0
  167. package/src/organisms/QuickOrderDrawer/QuickOrderDrawerFooter.tsx +72 -0
  168. package/src/organisms/QuickOrderDrawer/QuickOrderDrawerHeader.tsx +43 -0
  169. package/src/organisms/QuickOrderDrawer/QuickOrderDrawerProducts.tsx +323 -0
  170. package/src/organisms/QuickOrderDrawer/index.ts +19 -0
  171. 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,2 @@
1
+ export { default } from './Dropzone';
2
+ //# sourceMappingURL=index.js.map
@@ -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,3 @@
1
+ export { default } from './FileUploadCard';
2
+ export type { FileUploadCardProps } from './FileUploadCard';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export { default } from './FileUploadCard';
2
+ //# sourceMappingURL=index.js.map
@@ -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,3 @@
1
+ export { default, FileUploadState, FileUploadErrorType, } from './FileUploadStatus';
2
+ export type { FileUploadStatusProps } from './FileUploadStatus';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export { default, FileUploadState, FileUploadErrorType, } from './FileUploadStatus';
2
+ //# sourceMappingURL=index.js.map
@@ -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
- * Custom aria-label for input and button.
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;AACD,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;;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,0GAqDpB,CAAA;AAEF,eAAe,gBAAgB,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 = 'search', testId = 'fs-search-input', buttonProps, ...otherProps }, ref) {
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("form", { ref: formRef, "data-fs-search-input-field": true, "data-testid": testId, onSubmit: handleSubmit, role: "search" },
17
- React.createElement(Input, { ref: inputRef, "aria-label": ariaLabel, "data-fs-search-input-field-input": true, ...otherProps }),
18
- React.createElement(IconButton, { type: "submit", "aria-label": "Submit Search", icon: buttonIcon ?? React.createElement(Icon, { name: "MagnifyingGlass" }), size: "small", ...buttonProps })));
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;AAqC/C,MAAM,gBAAgB,GAAG,UAAU,CAGjC,SAAS,gBAAgB,CACzB,EACE,QAAQ,EACR,UAAU,EACV,YAAY,EAAE,SAAS,GAAG,QAAQ,EAClC,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,8BACE,GAAG,EAAE,OAAO,qDAEC,MAAM,EACnB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAC,QAAQ;QAEb,oBAAC,KAAK,IACJ,GAAG,EAAE,QAAQ,gBACD,SAAS,+CAEjB,UAAU,GACd;QACF,oBAAC,UAAU,IACT,IAAI,EAAC,QAAQ,gBACF,eAAe,EAC1B,IAAI,EAAE,UAAU,IAAI,oBAAC,IAAI,IAAC,IAAI,EAAC,iBAAiB,GAAG,EACnD,IAAI,EAAC,OAAO,KACR,WAAW,GACf,CACG,CACR,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,gBAAgB,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"}