@transferwise/components 0.0.0-experimental-33bba78 → 0.0.0-experimental-43d536d

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 (135) hide show
  1. package/build/i18n/de.json +0 -1
  2. package/build/i18n/de.json.js +0 -1
  3. package/build/i18n/de.json.js.map +1 -1
  4. package/build/i18n/de.json.mjs +0 -1
  5. package/build/i18n/de.json.mjs.map +1 -1
  6. package/build/i18n/en.json +1 -0
  7. package/build/i18n/en.json.js +1 -0
  8. package/build/i18n/en.json.js.map +1 -1
  9. package/build/i18n/en.json.mjs +1 -0
  10. package/build/i18n/en.json.mjs.map +1 -1
  11. package/build/i18n/es.json +0 -1
  12. package/build/i18n/es.json.js +0 -1
  13. package/build/i18n/es.json.js.map +1 -1
  14. package/build/i18n/es.json.mjs +0 -1
  15. package/build/i18n/es.json.mjs.map +1 -1
  16. package/build/i18n/fr.json +0 -1
  17. package/build/i18n/fr.json.js +0 -1
  18. package/build/i18n/fr.json.js.map +1 -1
  19. package/build/i18n/fr.json.mjs +0 -1
  20. package/build/i18n/fr.json.mjs.map +1 -1
  21. package/build/i18n/hu.json +0 -1
  22. package/build/i18n/hu.json.js +0 -1
  23. package/build/i18n/hu.json.js.map +1 -1
  24. package/build/i18n/hu.json.mjs +0 -1
  25. package/build/i18n/hu.json.mjs.map +1 -1
  26. package/build/i18n/id.json +0 -1
  27. package/build/i18n/id.json.js +0 -1
  28. package/build/i18n/id.json.js.map +1 -1
  29. package/build/i18n/id.json.mjs +0 -1
  30. package/build/i18n/id.json.mjs.map +1 -1
  31. package/build/i18n/it.json +0 -1
  32. package/build/i18n/it.json.js +0 -1
  33. package/build/i18n/it.json.js.map +1 -1
  34. package/build/i18n/it.json.mjs +0 -1
  35. package/build/i18n/it.json.mjs.map +1 -1
  36. package/build/i18n/ja.json +0 -1
  37. package/build/i18n/ja.json.js +0 -1
  38. package/build/i18n/ja.json.js.map +1 -1
  39. package/build/i18n/ja.json.mjs +0 -1
  40. package/build/i18n/ja.json.mjs.map +1 -1
  41. package/build/i18n/pl.json +0 -1
  42. package/build/i18n/pl.json.js +0 -1
  43. package/build/i18n/pl.json.js.map +1 -1
  44. package/build/i18n/pl.json.mjs +0 -1
  45. package/build/i18n/pl.json.mjs.map +1 -1
  46. package/build/i18n/pt.json +0 -1
  47. package/build/i18n/pt.json.js +0 -1
  48. package/build/i18n/pt.json.js.map +1 -1
  49. package/build/i18n/pt.json.mjs +0 -1
  50. package/build/i18n/pt.json.mjs.map +1 -1
  51. package/build/i18n/ro.json +0 -1
  52. package/build/i18n/ro.json.js +0 -1
  53. package/build/i18n/ro.json.js.map +1 -1
  54. package/build/i18n/ro.json.mjs +0 -1
  55. package/build/i18n/ro.json.mjs.map +1 -1
  56. package/build/i18n/ru.json +0 -1
  57. package/build/i18n/ru.json.js +0 -1
  58. package/build/i18n/ru.json.js.map +1 -1
  59. package/build/i18n/ru.json.mjs +0 -1
  60. package/build/i18n/ru.json.mjs.map +1 -1
  61. package/build/i18n/th.json +0 -1
  62. package/build/i18n/th.json.js +0 -1
  63. package/build/i18n/th.json.js.map +1 -1
  64. package/build/i18n/th.json.mjs +0 -1
  65. package/build/i18n/th.json.mjs.map +1 -1
  66. package/build/i18n/tr.json +0 -1
  67. package/build/i18n/tr.json.js +0 -1
  68. package/build/i18n/tr.json.js.map +1 -1
  69. package/build/i18n/tr.json.mjs +0 -1
  70. package/build/i18n/tr.json.mjs.map +1 -1
  71. package/build/i18n/zh-CN.json +0 -1
  72. package/build/i18n/zh-CN.json.js +0 -1
  73. package/build/i18n/zh-CN.json.js.map +1 -1
  74. package/build/i18n/zh-CN.json.mjs +0 -1
  75. package/build/i18n/zh-CN.json.mjs.map +1 -1
  76. package/build/i18n/zh-HK.json +0 -1
  77. package/build/i18n/zh-HK.json.js +0 -1
  78. package/build/i18n/zh-HK.json.js.map +1 -1
  79. package/build/i18n/zh-HK.json.mjs +0 -1
  80. package/build/i18n/zh-HK.json.mjs.map +1 -1
  81. package/build/main.css +10 -0
  82. package/build/styles/main.css +10 -0
  83. package/build/styles/upload/Upload.css +10 -0
  84. package/build/types/upload/Upload.d.ts +1 -0
  85. package/build/types/upload/Upload.d.ts.map +1 -1
  86. package/build/types/upload/Upload.messages.d.ts +4 -0
  87. package/build/types/upload/Upload.messages.d.ts.map +1 -1
  88. package/build/types/upload/steps/completeStep/completeStep.d.ts +1 -3
  89. package/build/types/upload/steps/completeStep/completeStep.d.ts.map +1 -1
  90. package/build/types/upload/steps/uploadImageStep/uploadImageStep.d.ts +1 -0
  91. package/build/types/upload/steps/uploadImageStep/uploadImageStep.d.ts.map +1 -1
  92. package/build/upload/Upload.js +26 -12
  93. package/build/upload/Upload.js.map +1 -1
  94. package/build/upload/Upload.messages.js +3 -0
  95. package/build/upload/Upload.messages.js.map +1 -1
  96. package/build/upload/Upload.messages.mjs +3 -0
  97. package/build/upload/Upload.messages.mjs.map +1 -1
  98. package/build/upload/Upload.mjs +26 -12
  99. package/build/upload/Upload.mjs.map +1 -1
  100. package/build/upload/steps/completeStep/completeStep.js +15 -30
  101. package/build/upload/steps/completeStep/completeStep.js.map +1 -1
  102. package/build/upload/steps/completeStep/completeStep.mjs +16 -31
  103. package/build/upload/steps/completeStep/completeStep.mjs.map +1 -1
  104. package/build/upload/steps/uploadImageStep/uploadImageStep.js +56 -32
  105. package/build/upload/steps/uploadImageStep/uploadImageStep.js.map +1 -1
  106. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs +56 -32
  107. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs.map +1 -1
  108. package/package.json +3 -3
  109. package/src/i18n/de.json +0 -1
  110. package/src/i18n/en.json +1 -0
  111. package/src/i18n/es.json +0 -1
  112. package/src/i18n/fr.json +0 -1
  113. package/src/i18n/hu.json +0 -1
  114. package/src/i18n/id.json +0 -1
  115. package/src/i18n/it.json +0 -1
  116. package/src/i18n/ja.json +0 -1
  117. package/src/i18n/pl.json +0 -1
  118. package/src/i18n/pt.json +0 -1
  119. package/src/i18n/ro.json +0 -1
  120. package/src/i18n/ru.json +0 -1
  121. package/src/i18n/th.json +0 -1
  122. package/src/i18n/tr.json +0 -1
  123. package/src/i18n/zh-CN.json +0 -1
  124. package/src/i18n/zh-HK.json +0 -1
  125. package/src/main.css +10 -0
  126. package/src/upload/Upload.css +10 -0
  127. package/src/upload/Upload.less +9 -0
  128. package/src/upload/Upload.messages.ts +4 -0
  129. package/src/upload/Upload.spec.js +8 -7
  130. package/src/upload/Upload.story.tsx +1 -0
  131. package/src/upload/Upload.tsx +39 -20
  132. package/src/upload/steps/completeStep/completeStep.spec.js +0 -9
  133. package/src/upload/steps/completeStep/completeStep.tsx +14 -29
  134. package/src/upload/steps/uploadImageStep/uploadImageStep.spec.js +12 -0
  135. package/src/upload/steps/uploadImageStep/uploadImageStep.tsx +43 -24
@@ -3,20 +3,15 @@
3
3
  var icons = require('@transferwise/icons');
4
4
  var Body = require('../../../body/Body.js');
5
5
  var Button = require('../../../button/Button.js');
6
- var StatusIcon = require('../../../statusIcon/StatusIcon.js');
7
6
  var Title = require('../../../title/Title.js');
8
7
  var jsxRuntime = require('react/jsx-runtime');
9
- var sentiment = require('../../../common/propsValues/sentiment.js');
10
- var size = require('../../../common/propsValues/size.js');
11
8
  var typography = require('../../../common/propsValues/typography.js');
12
9
 
13
10
  function CompleteStep({
14
11
  csButtonText,
15
- csFailureText,
16
12
  csSuccessText,
17
13
  fileName,
18
14
  isComplete,
19
- isError,
20
15
  isImage,
21
16
  onClear,
22
17
  uploadedImage
@@ -26,34 +21,24 @@ function CompleteStep({
26
21
  "aria-hidden": !isComplete,
27
22
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
28
23
  className: "droppable-card-content",
29
- children: [/*#__PURE__*/jsxRuntime.jsx("div", {
24
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
30
25
  className: "droppable-card-content d-flex flex-column align-items-center",
31
26
  "aria-live": "polite",
32
- children: isError ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
33
- children: [/*#__PURE__*/jsxRuntime.jsx(StatusIcon, {
34
- size: size.Size.LARGE,
35
- sentiment: sentiment.Sentiment.NEGATIVE
36
- }), csFailureText && /*#__PURE__*/jsxRuntime.jsx("p", {
37
- className: "m-t-2 m-b-0",
38
- children: csFailureText
39
- })]
40
- }) : /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
41
- children: [isImage && uploadedImage ? /*#__PURE__*/jsxRuntime.jsx("img", {
42
- src: uploadedImage,
43
- alt: "OK",
44
- className: "thumbnail "
45
- }) : /*#__PURE__*/jsxRuntime.jsx(icons.Document, {}), fileName && /*#__PURE__*/jsxRuntime.jsx(Body, {
46
- as: "p",
47
- className: "m-b-0",
48
- children: fileName
49
- }), csSuccessText && /*#__PURE__*/jsxRuntime.jsx(Title, {
50
- className: "caption m-t-1",
51
- type: typography.Typography.TITLE_BODY,
52
- children: csSuccessText
53
- })]
54
- })
27
+ children: [isImage && uploadedImage ? /*#__PURE__*/jsxRuntime.jsx("img", {
28
+ src: uploadedImage,
29
+ alt: "OK",
30
+ className: "thumbnail "
31
+ }) : /*#__PURE__*/jsxRuntime.jsx(icons.Document, {}), fileName && /*#__PURE__*/jsxRuntime.jsx(Body, {
32
+ as: "p",
33
+ className: "m-b-0",
34
+ children: fileName
35
+ }), csSuccessText && /*#__PURE__*/jsxRuntime.jsx(Title, {
36
+ className: "caption m-t-1",
37
+ type: typography.Typography.TITLE_BODY,
38
+ children: csSuccessText
39
+ })]
55
40
  }), csButtonText && /*#__PURE__*/jsxRuntime.jsx(Button, {
56
- className: isError ? 'm-t-2' : 'm-t-1',
41
+ className: "m-t-1",
57
42
  onClick: onClear,
58
43
  children: csButtonText
59
44
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"completeStep.js","sources":["../../../../src/upload/steps/completeStep/completeStep.tsx"],"sourcesContent":["import { Document as DocumentIcon } from '@transferwise/icons';\n\nimport { Typography } from '../../..';\nimport Body from '../../../body';\nimport Button from '../../../button';\nimport { Sentiment, Size } from '../../../common';\nimport StatusIcon from '../../../statusIcon';\nimport Title from '../../../title';\n\nexport interface CompleteStepProps {\n csButtonText: string;\n csSuccessText: string;\n csFailureText: string;\n fileName: string;\n isComplete: boolean;\n isError: boolean;\n isImage: boolean;\n uploadedImage?: string;\n onClear: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nexport default function CompleteStep({\n csButtonText,\n csFailureText,\n csSuccessText,\n fileName,\n isComplete,\n isError,\n isImage,\n onClear,\n uploadedImage,\n}: CompleteStepProps) {\n return (\n <div className=\"droppable-complete-card droppable-card\" aria-hidden={!isComplete}>\n <div className=\"droppable-card-content\">\n <div\n className=\"droppable-card-content d-flex flex-column align-items-center\"\n aria-live=\"polite\"\n >\n {isError ? (\n <>\n <StatusIcon size={Size.LARGE} sentiment={Sentiment.NEGATIVE} />\n {csFailureText && <p className=\"m-t-2 m-b-0\">{csFailureText}</p>}\n </>\n ) : (\n <>\n {isImage && uploadedImage ? (\n <img src={uploadedImage} alt=\"OK\" className=\"thumbnail \" />\n ) : (\n <DocumentIcon />\n )}\n\n {fileName && (\n <Body as=\"p\" className=\"m-b-0\">\n {fileName}\n </Body>\n )}\n {csSuccessText && (\n <Title className=\"caption m-t-1\" type={Typography.TITLE_BODY}>\n {csSuccessText}\n </Title>\n )}\n </>\n )}\n </div>\n {csButtonText && (\n <Button className={isError ? 'm-t-2' : 'm-t-1'} onClick={onClear}>\n {csButtonText}\n </Button>\n )}\n </div>\n </div>\n );\n}\n"],"names":["CompleteStep","csButtonText","csFailureText","csSuccessText","fileName","isComplete","isError","isImage","onClear","uploadedImage","_jsx","className","children","_jsxs","_Fragment","StatusIcon","size","Size","LARGE","sentiment","Sentiment","NEGATIVE","src","alt","DocumentIcon","Body","as","Title","type","Typography","TITLE_BODY","Button","onClick"],"mappings":";;;;;;;;;;;;AAqBwB,SAAAA,YAAYA,CAAC;EACnCC,YAAY;EACZC,aAAa;EACbC,aAAa;EACbC,QAAQ;EACRC,UAAU;EACVC,OAAO;EACPC,OAAO;EACPC,OAAO;AACPC,EAAAA,aAAAA;AACkB,CAAA,EAAA;AAClB,EAAA,oBACEC,cAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,wCAAwC;AAAC,IAAA,aAAA,EAAa,CAACN,UAAW;AAAAO,IAAAA,QAAA,eAC/EC,eAAA,CAAA,KAAA,EAAA;AAAKF,MAAAA,SAAS,EAAC,wBAAwB;AAAAC,MAAAA,QAAA,gBACrCF,cAAA,CAAA,KAAA,EAAA;AACEC,QAAAA,SAAS,EAAC,8DAA8D;AACxE,QAAA,WAAA,EAAU,QAAQ;AAAAC,QAAAA,QAAA,EAEjBN,OAAO,gBACNO,eAAA,CAAAC,mBAAA,EAAA;UAAAF,QAAA,EAAA,cACEF,cAAA,CAACK,UAAU,EAAA;YAACC,IAAI,EAAEC,SAAI,CAACC,KAAM;YAACC,SAAS,EAAEC,mBAAS,CAACC,QAAAA;AAAS,WAC5D,CAAA,EAACnB,aAAa,iBAAIQ,cAAA,CAAA,GAAA,EAAA;AAAGC,YAAAA,SAAS,EAAC,aAAa;AAAAC,YAAAA,QAAA,EAAEV,aAAAA;AAAa,WAAI,CAAC,CAAA;AAAA,SAClE,CAAG,gBAEHW,eAAA,CAAAC,mBAAA,EAAA;AAAAF,UAAAA,QAAA,EACGL,CAAAA,OAAO,IAAIE,aAAa,gBACvBC,cAAA,CAAA,KAAA,EAAA;AAAKY,YAAAA,GAAG,EAAEb,aAAc;AAACc,YAAAA,GAAG,EAAC,IAAI;AAACZ,YAAAA,SAAS,EAAC,YAAA;AAAY,WAAA,CAAG,gBAE3DD,cAAA,CAACc,cAAY,EAAA,EAAA,CACd,EAEApB,QAAQ,iBACPM,cAAA,CAACe,IAAI,EAAA;AAACC,YAAAA,EAAE,EAAC,GAAG;AAACf,YAAAA,SAAS,EAAC,OAAO;AAAAC,YAAAA,QAAA,EAC3BR,QAAAA;AAAQ,WACL,CACP,EACAD,aAAa,iBACZO,cAAA,CAACiB,KAAK,EAAA;AAAChB,YAAAA,SAAS,EAAC,eAAe;YAACiB,IAAI,EAAEC,qBAAU,CAACC,UAAW;AAAAlB,YAAAA,QAAA,EAC1DT,aAAAA;AAAa,WACT,CACR,CAAA;SACH,CAAA;AACD,OACE,CACL,EAACF,YAAY,iBACXS,cAAA,CAACqB,MAAM,EAAA;AAACpB,QAAAA,SAAS,EAAEL,OAAO,GAAG,OAAO,GAAG,OAAQ;AAAC0B,QAAAA,OAAO,EAAExB,OAAQ;AAAAI,QAAAA,QAAA,EAC9DX,YAAAA;AAAY,OACP,CACT,CAAA;KACE,CAAA;AACP,GAAK,CAAC,CAAA;AAEV;;;;"}
1
+ {"version":3,"file":"completeStep.js","sources":["../../../../src/upload/steps/completeStep/completeStep.tsx"],"sourcesContent":["import { Document as DocumentIcon } from '@transferwise/icons';\n\nimport { Typography } from '../../..';\nimport Body from '../../../body';\nimport Button from '../../../button';\nimport Title from '../../../title';\n\nexport interface CompleteStepProps {\n csButtonText: string;\n csSuccessText: string;\n fileName: string;\n isComplete: boolean;\n isImage: boolean;\n uploadedImage?: string;\n onClear: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nexport default function CompleteStep({\n csButtonText,\n csSuccessText,\n fileName,\n isComplete,\n isImage,\n onClear,\n uploadedImage,\n}: CompleteStepProps) {\n return (\n <div className=\"droppable-complete-card droppable-card\" aria-hidden={!isComplete}>\n <div className=\"droppable-card-content\">\n <div\n className=\"droppable-card-content d-flex flex-column align-items-center\"\n aria-live=\"polite\"\n >\n {isImage && uploadedImage ? (\n <img src={uploadedImage} alt=\"OK\" className=\"thumbnail \" />\n ) : (\n <DocumentIcon />\n )}\n\n {fileName && (\n <Body as=\"p\" className=\"m-b-0\">\n {fileName}\n </Body>\n )}\n {csSuccessText && (\n <Title className=\"caption m-t-1\" type={Typography.TITLE_BODY}>\n {csSuccessText}\n </Title>\n )}\n </div>\n {csButtonText && (\n <Button className=\"m-t-1\" onClick={onClear}>\n {csButtonText}\n </Button>\n )}\n </div>\n </div>\n );\n}\n"],"names":["CompleteStep","csButtonText","csSuccessText","fileName","isComplete","isImage","onClear","uploadedImage","_jsx","className","children","_jsxs","src","alt","DocumentIcon","Body","as","Title","type","Typography","TITLE_BODY","Button","onClick"],"mappings":";;;;;;;;;AAiBc,SAAUA,YAAYA,CAAC;EACnCC,YAAY;EACZC,aAAa;EACbC,QAAQ;EACRC,UAAU;EACVC,OAAO;EACPC,OAAO;AACPC,EAAAA,aAAAA;AACkB,CAAA,EAAA;AAClB,EAAA,oBACEC,cAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,wCAAwC;AAAC,IAAA,aAAA,EAAa,CAACL,UAAW;AAAAM,IAAAA,QAAA,eAC/EC,eAAA,CAAA,KAAA,EAAA;AAAKF,MAAAA,SAAS,EAAC,wBAAwB;AAAAC,MAAAA,QAAA,gBACrCC,eAAA,CAAA,KAAA,EAAA;AACEF,QAAAA,SAAS,EAAC,8DAA8D;AACxE,QAAA,WAAA,EAAU,QAAQ;AAAAC,QAAAA,QAAA,EAEjBL,CAAAA,OAAO,IAAIE,aAAa,gBACvBC,cAAA,CAAA,KAAA,EAAA;AAAKI,UAAAA,GAAG,EAAEL,aAAc;AAACM,UAAAA,GAAG,EAAC,IAAI;AAACJ,UAAAA,SAAS,EAAC,YAAA;AAAY,SAAA,CAAG,gBAE3DD,cAAA,CAACM,cAAY,EAAA,EAAA,CACd,EAEAX,QAAQ,iBACPK,cAAA,CAACO,IAAI,EAAA;AAACC,UAAAA,EAAE,EAAC,GAAG;AAACP,UAAAA,SAAS,EAAC,OAAO;AAAAC,UAAAA,QAAA,EAC3BP,QAAAA;AAAQ,SACL,CACP,EACAD,aAAa,iBACZM,cAAA,CAACS,KAAK,EAAA;AAACR,UAAAA,SAAS,EAAC,eAAe;UAACS,IAAI,EAAEC,qBAAU,CAACC,UAAW;AAAAV,UAAAA,QAAA,EAC1DR,aAAAA;AAAa,SACT,CACR,CAAA;AAAA,OACE,CACL,EAACD,YAAY,iBACXO,cAAA,CAACa,MAAM,EAAA;AAACZ,QAAAA,SAAS,EAAC,OAAO;AAACa,QAAAA,OAAO,EAAEhB,OAAQ;AAAAI,QAAAA,QAAA,EACxCT,YAAAA;AAAY,OACP,CACT,CAAA;KACE,CAAA;AACP,GAAK,CAAC,CAAA;AAEV;;;;"}
@@ -1,20 +1,15 @@
1
1
  import { Document } from '@transferwise/icons';
2
2
  import Body from '../../../body/Body.mjs';
3
3
  import Button from '../../../button/Button.mjs';
4
- import StatusIcon from '../../../statusIcon/StatusIcon.mjs';
5
4
  import Title from '../../../title/Title.mjs';
6
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
- import { Sentiment } from '../../../common/propsValues/sentiment.mjs';
8
- import { Size } from '../../../common/propsValues/size.mjs';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
9
6
  import { Typography } from '../../../common/propsValues/typography.mjs';
10
7
 
11
8
  function CompleteStep({
12
9
  csButtonText,
13
- csFailureText,
14
10
  csSuccessText,
15
11
  fileName,
16
12
  isComplete,
17
- isError,
18
13
  isImage,
19
14
  onClear,
20
15
  uploadedImage
@@ -24,34 +19,24 @@ function CompleteStep({
24
19
  "aria-hidden": !isComplete,
25
20
  children: /*#__PURE__*/jsxs("div", {
26
21
  className: "droppable-card-content",
27
- children: [/*#__PURE__*/jsx("div", {
22
+ children: [/*#__PURE__*/jsxs("div", {
28
23
  className: "droppable-card-content d-flex flex-column align-items-center",
29
24
  "aria-live": "polite",
30
- children: isError ? /*#__PURE__*/jsxs(Fragment, {
31
- children: [/*#__PURE__*/jsx(StatusIcon, {
32
- size: Size.LARGE,
33
- sentiment: Sentiment.NEGATIVE
34
- }), csFailureText && /*#__PURE__*/jsx("p", {
35
- className: "m-t-2 m-b-0",
36
- children: csFailureText
37
- })]
38
- }) : /*#__PURE__*/jsxs(Fragment, {
39
- children: [isImage && uploadedImage ? /*#__PURE__*/jsx("img", {
40
- src: uploadedImage,
41
- alt: "OK",
42
- className: "thumbnail "
43
- }) : /*#__PURE__*/jsx(Document, {}), fileName && /*#__PURE__*/jsx(Body, {
44
- as: "p",
45
- className: "m-b-0",
46
- children: fileName
47
- }), csSuccessText && /*#__PURE__*/jsx(Title, {
48
- className: "caption m-t-1",
49
- type: Typography.TITLE_BODY,
50
- children: csSuccessText
51
- })]
52
- })
25
+ children: [isImage && uploadedImage ? /*#__PURE__*/jsx("img", {
26
+ src: uploadedImage,
27
+ alt: "OK",
28
+ className: "thumbnail "
29
+ }) : /*#__PURE__*/jsx(Document, {}), fileName && /*#__PURE__*/jsx(Body, {
30
+ as: "p",
31
+ className: "m-b-0",
32
+ children: fileName
33
+ }), csSuccessText && /*#__PURE__*/jsx(Title, {
34
+ className: "caption m-t-1",
35
+ type: Typography.TITLE_BODY,
36
+ children: csSuccessText
37
+ })]
53
38
  }), csButtonText && /*#__PURE__*/jsx(Button, {
54
- className: isError ? 'm-t-2' : 'm-t-1',
39
+ className: "m-t-1",
55
40
  onClick: onClear,
56
41
  children: csButtonText
57
42
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"completeStep.mjs","sources":["../../../../src/upload/steps/completeStep/completeStep.tsx"],"sourcesContent":["import { Document as DocumentIcon } from '@transferwise/icons';\n\nimport { Typography } from '../../..';\nimport Body from '../../../body';\nimport Button from '../../../button';\nimport { Sentiment, Size } from '../../../common';\nimport StatusIcon from '../../../statusIcon';\nimport Title from '../../../title';\n\nexport interface CompleteStepProps {\n csButtonText: string;\n csSuccessText: string;\n csFailureText: string;\n fileName: string;\n isComplete: boolean;\n isError: boolean;\n isImage: boolean;\n uploadedImage?: string;\n onClear: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nexport default function CompleteStep({\n csButtonText,\n csFailureText,\n csSuccessText,\n fileName,\n isComplete,\n isError,\n isImage,\n onClear,\n uploadedImage,\n}: CompleteStepProps) {\n return (\n <div className=\"droppable-complete-card droppable-card\" aria-hidden={!isComplete}>\n <div className=\"droppable-card-content\">\n <div\n className=\"droppable-card-content d-flex flex-column align-items-center\"\n aria-live=\"polite\"\n >\n {isError ? (\n <>\n <StatusIcon size={Size.LARGE} sentiment={Sentiment.NEGATIVE} />\n {csFailureText && <p className=\"m-t-2 m-b-0\">{csFailureText}</p>}\n </>\n ) : (\n <>\n {isImage && uploadedImage ? (\n <img src={uploadedImage} alt=\"OK\" className=\"thumbnail \" />\n ) : (\n <DocumentIcon />\n )}\n\n {fileName && (\n <Body as=\"p\" className=\"m-b-0\">\n {fileName}\n </Body>\n )}\n {csSuccessText && (\n <Title className=\"caption m-t-1\" type={Typography.TITLE_BODY}>\n {csSuccessText}\n </Title>\n )}\n </>\n )}\n </div>\n {csButtonText && (\n <Button className={isError ? 'm-t-2' : 'm-t-1'} onClick={onClear}>\n {csButtonText}\n </Button>\n )}\n </div>\n </div>\n );\n}\n"],"names":["CompleteStep","csButtonText","csFailureText","csSuccessText","fileName","isComplete","isError","isImage","onClear","uploadedImage","_jsx","className","children","_jsxs","_Fragment","StatusIcon","size","Size","LARGE","sentiment","Sentiment","NEGATIVE","src","alt","DocumentIcon","Body","as","Title","type","Typography","TITLE_BODY","Button","onClick"],"mappings":";;;;;;;;;;AAqBwB,SAAAA,YAAYA,CAAC;EACnCC,YAAY;EACZC,aAAa;EACbC,aAAa;EACbC,QAAQ;EACRC,UAAU;EACVC,OAAO;EACPC,OAAO;EACPC,OAAO;AACPC,EAAAA,aAAAA;AACkB,CAAA,EAAA;AAClB,EAAA,oBACEC,GAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,wCAAwC;AAAC,IAAA,aAAA,EAAa,CAACN,UAAW;AAAAO,IAAAA,QAAA,eAC/EC,IAAA,CAAA,KAAA,EAAA;AAAKF,MAAAA,SAAS,EAAC,wBAAwB;AAAAC,MAAAA,QAAA,gBACrCF,GAAA,CAAA,KAAA,EAAA;AACEC,QAAAA,SAAS,EAAC,8DAA8D;AACxE,QAAA,WAAA,EAAU,QAAQ;AAAAC,QAAAA,QAAA,EAEjBN,OAAO,gBACNO,IAAA,CAAAC,QAAA,EAAA;UAAAF,QAAA,EAAA,cACEF,GAAA,CAACK,UAAU,EAAA;YAACC,IAAI,EAAEC,IAAI,CAACC,KAAM;YAACC,SAAS,EAAEC,SAAS,CAACC,QAAAA;AAAS,WAC5D,CAAA,EAACnB,aAAa,iBAAIQ,GAAA,CAAA,GAAA,EAAA;AAAGC,YAAAA,SAAS,EAAC,aAAa;AAAAC,YAAAA,QAAA,EAAEV,aAAAA;AAAa,WAAI,CAAC,CAAA;AAAA,SAClE,CAAG,gBAEHW,IAAA,CAAAC,QAAA,EAAA;AAAAF,UAAAA,QAAA,EACGL,CAAAA,OAAO,IAAIE,aAAa,gBACvBC,GAAA,CAAA,KAAA,EAAA;AAAKY,YAAAA,GAAG,EAAEb,aAAc;AAACc,YAAAA,GAAG,EAAC,IAAI;AAACZ,YAAAA,SAAS,EAAC,YAAA;AAAY,WAAA,CAAG,gBAE3DD,GAAA,CAACc,QAAY,EAAA,EAAA,CACd,EAEApB,QAAQ,iBACPM,GAAA,CAACe,IAAI,EAAA;AAACC,YAAAA,EAAE,EAAC,GAAG;AAACf,YAAAA,SAAS,EAAC,OAAO;AAAAC,YAAAA,QAAA,EAC3BR,QAAAA;AAAQ,WACL,CACP,EACAD,aAAa,iBACZO,GAAA,CAACiB,KAAK,EAAA;AAAChB,YAAAA,SAAS,EAAC,eAAe;YAACiB,IAAI,EAAEC,UAAU,CAACC,UAAW;AAAAlB,YAAAA,QAAA,EAC1DT,aAAAA;AAAa,WACT,CACR,CAAA;SACH,CAAA;AACD,OACE,CACL,EAACF,YAAY,iBACXS,GAAA,CAACqB,MAAM,EAAA;AAACpB,QAAAA,SAAS,EAAEL,OAAO,GAAG,OAAO,GAAG,OAAQ;AAAC0B,QAAAA,OAAO,EAAExB,OAAQ;AAAAI,QAAAA,QAAA,EAC9DX,YAAAA;AAAY,OACP,CACT,CAAA;KACE,CAAA;AACP,GAAK,CAAC,CAAA;AAEV;;;;"}
1
+ {"version":3,"file":"completeStep.mjs","sources":["../../../../src/upload/steps/completeStep/completeStep.tsx"],"sourcesContent":["import { Document as DocumentIcon } from '@transferwise/icons';\n\nimport { Typography } from '../../..';\nimport Body from '../../../body';\nimport Button from '../../../button';\nimport Title from '../../../title';\n\nexport interface CompleteStepProps {\n csButtonText: string;\n csSuccessText: string;\n fileName: string;\n isComplete: boolean;\n isImage: boolean;\n uploadedImage?: string;\n onClear: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nexport default function CompleteStep({\n csButtonText,\n csSuccessText,\n fileName,\n isComplete,\n isImage,\n onClear,\n uploadedImage,\n}: CompleteStepProps) {\n return (\n <div className=\"droppable-complete-card droppable-card\" aria-hidden={!isComplete}>\n <div className=\"droppable-card-content\">\n <div\n className=\"droppable-card-content d-flex flex-column align-items-center\"\n aria-live=\"polite\"\n >\n {isImage && uploadedImage ? (\n <img src={uploadedImage} alt=\"OK\" className=\"thumbnail \" />\n ) : (\n <DocumentIcon />\n )}\n\n {fileName && (\n <Body as=\"p\" className=\"m-b-0\">\n {fileName}\n </Body>\n )}\n {csSuccessText && (\n <Title className=\"caption m-t-1\" type={Typography.TITLE_BODY}>\n {csSuccessText}\n </Title>\n )}\n </div>\n {csButtonText && (\n <Button className=\"m-t-1\" onClick={onClear}>\n {csButtonText}\n </Button>\n )}\n </div>\n </div>\n );\n}\n"],"names":["CompleteStep","csButtonText","csSuccessText","fileName","isComplete","isImage","onClear","uploadedImage","_jsx","className","children","_jsxs","src","alt","DocumentIcon","Body","as","Title","type","Typography","TITLE_BODY","Button","onClick"],"mappings":";;;;;;;AAiBc,SAAUA,YAAYA,CAAC;EACnCC,YAAY;EACZC,aAAa;EACbC,QAAQ;EACRC,UAAU;EACVC,OAAO;EACPC,OAAO;AACPC,EAAAA,aAAAA;AACkB,CAAA,EAAA;AAClB,EAAA,oBACEC,GAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,wCAAwC;AAAC,IAAA,aAAA,EAAa,CAACL,UAAW;AAAAM,IAAAA,QAAA,eAC/EC,IAAA,CAAA,KAAA,EAAA;AAAKF,MAAAA,SAAS,EAAC,wBAAwB;AAAAC,MAAAA,QAAA,gBACrCC,IAAA,CAAA,KAAA,EAAA;AACEF,QAAAA,SAAS,EAAC,8DAA8D;AACxE,QAAA,WAAA,EAAU,QAAQ;AAAAC,QAAAA,QAAA,EAEjBL,CAAAA,OAAO,IAAIE,aAAa,gBACvBC,GAAA,CAAA,KAAA,EAAA;AAAKI,UAAAA,GAAG,EAAEL,aAAc;AAACM,UAAAA,GAAG,EAAC,IAAI;AAACJ,UAAAA,SAAS,EAAC,YAAA;AAAY,SAAA,CAAG,gBAE3DD,GAAA,CAACM,QAAY,EAAA,EAAA,CACd,EAEAX,QAAQ,iBACPK,GAAA,CAACO,IAAI,EAAA;AAACC,UAAAA,EAAE,EAAC,GAAG;AAACP,UAAAA,SAAS,EAAC,OAAO;AAAAC,UAAAA,QAAA,EAC3BP,QAAAA;AAAQ,SACL,CACP,EACAD,aAAa,iBACZM,GAAA,CAACS,KAAK,EAAA;AAACR,UAAAA,SAAS,EAAC,eAAe;UAACS,IAAI,EAAEC,UAAU,CAACC,UAAW;AAAAV,UAAAA,QAAA,EAC1DR,aAAAA;AAAa,SACT,CACR,CAAA;AAAA,OACE,CACL,EAACD,YAAY,iBACXO,GAAA,CAACa,MAAM,EAAA;AAACZ,QAAAA,SAAS,EAAC,OAAO;AAACa,QAAAA,OAAO,EAAEhB,OAAQ;AAAAI,QAAAA,QAAA,EACxCT,YAAAA;AAAY,OACP,CACT,CAAA;KACE,CAAA;AACP,GAAK,CAAC,CAAA;AAEV;;;;"}
@@ -2,7 +2,11 @@
2
2
 
3
3
  var icons = require('@transferwise/icons');
4
4
  var React = require('react');
5
+ var StatusIcon = require('../../../statusIcon/StatusIcon.js');
6
+ var InlineAlert = require('../../../inlineAlert/InlineAlert.js');
5
7
  var jsxRuntime = require('react/jsx-runtime');
8
+ var sentiment = require('../../../common/propsValues/sentiment.js');
9
+ var size = require('../../../common/propsValues/size.js');
6
10
 
7
11
  class UploadImageStep extends React.PureComponent {
8
12
  uploadInputRef = /*#__PURE__*/React.createRef();
@@ -20,6 +24,18 @@ class UploadImageStep extends React.PureComponent {
20
24
  usHelpImage,
21
25
  usLabel
22
26
  } = this.props;
27
+ const {
28
+ errorMessage
29
+ } = this.props;
30
+ if (errorMessage) {
31
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
32
+ className: "d-flex flex-column align-items-center",
33
+ children: /*#__PURE__*/jsxRuntime.jsx(StatusIcon, {
34
+ size: size.Size.LARGE,
35
+ sentiment: sentiment.Sentiment.NEGATIVE
36
+ })
37
+ });
38
+ }
23
39
  if (!usHelpImage) {
24
40
  return /*#__PURE__*/jsxRuntime.jsx("div", {
25
41
  className: "circle circle-sm circle-inverse p-t-1",
@@ -44,41 +60,49 @@ class UploadImageStep extends React.PureComponent {
44
60
  usButtonText,
45
61
  usDisabled,
46
62
  usLabel,
47
- usPlaceholder
63
+ usPlaceholder,
64
+ errorMessage
48
65
  } = this.props;
49
66
  return /*#__PURE__*/jsxRuntime.jsx("div", {
50
- children: /*#__PURE__*/jsxRuntime.jsx("div", {
51
- className: "droppable-default-card",
52
- "aria-hidden": isComplete,
53
- children: /*#__PURE__*/jsxRuntime.jsxs("div", {
54
- className: "droppable-card-content",
55
- children: [/*#__PURE__*/jsxRuntime.jsx("div", {
56
- className: "m-b-3",
57
- children: this.getImage()
58
- }), usLabel && /*#__PURE__*/jsxRuntime.jsx("h4", {
59
- className: "np-text-title-body m-b-1",
60
- children: usLabel
61
- }), usPlaceholder && /*#__PURE__*/jsxRuntime.jsx("p", {
62
- className: "np-text-body-large m-b-3",
63
- children: String(usPlaceholder)
64
- }), /*#__PURE__*/jsxRuntime.jsxs("label", {
65
- className: `btn btn-primary btn-md ${usDisabled ? 'disabled' : ''}`,
66
- children: [usButtonText ? /*#__PURE__*/jsxRuntime.jsx("span", {
67
- children: usButtonText
68
- }) : /*#__PURE__*/jsxRuntime.jsx(icons.Upload, {
69
- size: 24,
70
- className: "m-r-0"
71
- }), /*#__PURE__*/jsxRuntime.jsx("input", {
72
- ref: this.uploadInputRef,
73
- type: "file",
74
- accept: usAccept === '*' ? undefined : usAccept,
75
- className: "tw-droppable-input hidden",
76
- disabled: usDisabled,
77
- name: "file-upload",
78
- onChange: () => this.onManualUpload()
79
- })]
67
+ className: "droppable-default-card",
68
+ "aria-hidden": isComplete,
69
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
70
+ className: "droppable-card-content",
71
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
72
+ className: "m-b-3",
73
+ children: this.getImage()
74
+ }), usLabel && /*#__PURE__*/jsxRuntime.jsx("h4", {
75
+ className: "np-text-title-body m-b-1",
76
+ children: usLabel
77
+ }), usPlaceholder && /*#__PURE__*/jsxRuntime.jsx("p", {
78
+ className: "np-text-body-large m-b-3",
79
+ children: String(usPlaceholder)
80
+ }), /*#__PURE__*/jsxRuntime.jsxs("label", {
81
+ className: `btn btn-primary btn-md ${usDisabled ? 'disabled' : ''}`,
82
+ children: [usButtonText ? /*#__PURE__*/jsxRuntime.jsx("span", {
83
+ children: usButtonText
84
+ }) : /*#__PURE__*/jsxRuntime.jsx(icons.Upload, {
85
+ size: 24,
86
+ className: "m-r-0"
87
+ }), /*#__PURE__*/jsxRuntime.jsx("input", {
88
+ ref: this.uploadInputRef,
89
+ type: "file",
90
+ accept: usAccept === '*' ? undefined : usAccept,
91
+ className: "tw-droppable-input hidden",
92
+ disabled: usDisabled,
93
+ name: "file-upload",
94
+ onChange: () => this.onManualUpload()
80
95
  })]
81
- })
96
+ }), errorMessage && /*#__PURE__*/jsxRuntime.jsx("div", {
97
+ className: "upload-error-message",
98
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
99
+ className: "m-t-3 has-error",
100
+ children: /*#__PURE__*/jsxRuntime.jsx(InlineAlert, {
101
+ type: sentiment.Sentiment.NEGATIVE,
102
+ children: errorMessage
103
+ })
104
+ })
105
+ })]
82
106
  })
83
107
  });
84
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"uploadImageStep.js","sources":["../../../../src/upload/steps/uploadImageStep/uploadImageStep.tsx"],"sourcesContent":["import { Upload as UploadIcon } from '@transferwise/icons';\nimport { createRef, PureComponent } from 'react';\n\nexport interface UploadImageStepProps {\n fileDropped: (file: File) => void;\n isComplete: boolean;\n usAccept: string;\n usButtonText: string;\n usDisabled: boolean;\n usHelpImage: React.ReactNode;\n usLabel: string;\n usPlaceholder: string;\n}\n\nexport default class UploadImageStep extends PureComponent<UploadImageStepProps> {\n uploadInputRef = createRef<HTMLInputElement>();\n\n onManualUpload = () => {\n const { fileDropped } = this.props;\n const file = this.uploadInputRef.current?.files?.[0];\n if (file != null) {\n fileDropped(file);\n }\n };\n\n getImage = () => {\n const { usHelpImage, usLabel } = this.props;\n\n if (!usHelpImage) {\n return (\n <div className=\"circle circle-sm circle-inverse p-t-1\">\n <UploadIcon size={24} />\n </div>\n );\n }\n\n if (typeof usHelpImage === 'string') {\n return <img src={usHelpImage} alt={usLabel} className=\"thumbnail text-xs-center\" />;\n }\n\n return usHelpImage;\n };\n\n render() {\n const { isComplete, usAccept, usButtonText, usDisabled, usLabel, usPlaceholder } = this.props;\n\n return (\n <div>\n <div className=\"droppable-default-card\" aria-hidden={isComplete}>\n <div className=\"droppable-card-content\">\n <div className=\"m-b-3\">{this.getImage()}</div>\n {usLabel && <h4 className=\"np-text-title-body m-b-1\">{usLabel}</h4>}\n {usPlaceholder && <p className=\"np-text-body-large m-b-3\">{String(usPlaceholder)}</p>}\n <label className={`btn btn-primary btn-md ${usDisabled ? 'disabled' : ''}`}>\n {usButtonText ? (\n <span>{usButtonText}</span>\n ) : (\n <UploadIcon size={24} className=\"m-r-0\" />\n )}\n <input\n ref={this.uploadInputRef}\n type=\"file\"\n accept={usAccept === '*' ? undefined : usAccept}\n className=\"tw-droppable-input hidden\"\n disabled={usDisabled}\n name=\"file-upload\"\n onChange={() => this.onManualUpload()}\n />\n </label>\n </div>\n </div>\n </div>\n );\n }\n}\n"],"names":["UploadImageStep","PureComponent","uploadInputRef","createRef","onManualUpload","fileDropped","props","file","current","files","getImage","usHelpImage","usLabel","_jsx","className","children","UploadIcon","size","src","alt","render","isComplete","usAccept","usButtonText","usDisabled","usPlaceholder","_jsxs","String","ref","type","accept","undefined","disabled","name","onChange"],"mappings":"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"}
1
+ {"version":3,"file":"uploadImageStep.js","sources":["../../../../src/upload/steps/uploadImageStep/uploadImageStep.tsx"],"sourcesContent":["import { Upload as UploadIcon } from '@transferwise/icons';\nimport { createRef, PureComponent } from 'react';\nimport StatusIcon from '../../../statusIcon';\nimport { Sentiment, Size } from '../../../common';\nimport InlineAlert from '../../../inlineAlert';\n\nexport interface UploadImageStepProps {\n fileDropped: (file: File) => void;\n isComplete: boolean;\n usAccept: string;\n usButtonText: string;\n usDisabled: boolean;\n usHelpImage: React.ReactNode;\n usLabel: string;\n usPlaceholder: string;\n errorMessage?: string | string[];\n}\n\nexport default class UploadImageStep extends PureComponent<UploadImageStepProps> {\n uploadInputRef = createRef<HTMLInputElement>();\n\n onManualUpload = () => {\n const { fileDropped } = this.props;\n const file = this.uploadInputRef.current?.files?.[0];\n if (file != null) {\n fileDropped(file);\n }\n };\n\n getImage = () => {\n const { usHelpImage, usLabel } = this.props;\n const { errorMessage } = this.props;\n\n if (errorMessage) {\n return (\n <div className=\"d-flex flex-column align-items-center\">\n <StatusIcon size={Size.LARGE} sentiment={Sentiment.NEGATIVE} />\n </div>\n );\n }\n\n if (!usHelpImage) {\n return (\n <div className=\"circle circle-sm circle-inverse p-t-1\">\n <UploadIcon size={24} />\n </div>\n );\n }\n\n if (typeof usHelpImage === 'string') {\n return <img src={usHelpImage} alt={usLabel} className=\"thumbnail text-xs-center\" />;\n }\n\n return usHelpImage;\n };\n\n render() {\n const { isComplete, usAccept, usButtonText, usDisabled, usLabel, usPlaceholder, errorMessage } =\n this.props;\n\n return (\n <div className=\"droppable-default-card\" aria-hidden={isComplete}>\n <div className=\"droppable-card-content\">\n <div className=\"m-b-3\">{this.getImage()}</div>\n {usLabel && <h4 className=\"np-text-title-body m-b-1\">{usLabel}</h4>}\n {usPlaceholder && <p className=\"np-text-body-large m-b-3\">{String(usPlaceholder)}</p>}\n <label className={`btn btn-primary btn-md ${usDisabled ? 'disabled' : ''}`}>\n {usButtonText ? (\n <span>{usButtonText}</span>\n ) : (\n <UploadIcon size={24} className=\"m-r-0\" />\n )}\n <input\n ref={this.uploadInputRef}\n type=\"file\"\n accept={usAccept === '*' ? undefined : usAccept}\n className=\"tw-droppable-input hidden\"\n disabled={usDisabled}\n name=\"file-upload\"\n onChange={() => this.onManualUpload()}\n />\n </label>\n {errorMessage && (\n <div className=\"upload-error-message\">\n <div className=\"m-t-3 has-error\">\n <InlineAlert type={Sentiment.NEGATIVE}>{errorMessage}</InlineAlert>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n}\n"],"names":["UploadImageStep","PureComponent","uploadInputRef","createRef","onManualUpload","fileDropped","props","file","current","files","getImage","usHelpImage","usLabel","errorMessage","_jsx","className","children","StatusIcon","size","Size","LARGE","sentiment","Sentiment","NEGATIVE","UploadIcon","src","alt","render","isComplete","usAccept","usButtonText","usDisabled","usPlaceholder","_jsxs","String","ref","type","accept","undefined","disabled","name","onChange","InlineAlert"],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  import { Upload } from '@transferwise/icons';
2
2
  import { PureComponent, createRef } from 'react';
3
+ import StatusIcon from '../../../statusIcon/StatusIcon.mjs';
4
+ import InlineAlert from '../../../inlineAlert/InlineAlert.mjs';
3
5
  import { jsx, jsxs } from 'react/jsx-runtime';
6
+ import { Sentiment } from '../../../common/propsValues/sentiment.mjs';
7
+ import { Size } from '../../../common/propsValues/size.mjs';
4
8
 
5
9
  class UploadImageStep extends PureComponent {
6
10
  uploadInputRef = /*#__PURE__*/createRef();
@@ -18,6 +22,18 @@ class UploadImageStep extends PureComponent {
18
22
  usHelpImage,
19
23
  usLabel
20
24
  } = this.props;
25
+ const {
26
+ errorMessage
27
+ } = this.props;
28
+ if (errorMessage) {
29
+ return /*#__PURE__*/jsx("div", {
30
+ className: "d-flex flex-column align-items-center",
31
+ children: /*#__PURE__*/jsx(StatusIcon, {
32
+ size: Size.LARGE,
33
+ sentiment: Sentiment.NEGATIVE
34
+ })
35
+ });
36
+ }
21
37
  if (!usHelpImage) {
22
38
  return /*#__PURE__*/jsx("div", {
23
39
  className: "circle circle-sm circle-inverse p-t-1",
@@ -42,41 +58,49 @@ class UploadImageStep extends PureComponent {
42
58
  usButtonText,
43
59
  usDisabled,
44
60
  usLabel,
45
- usPlaceholder
61
+ usPlaceholder,
62
+ errorMessage
46
63
  } = this.props;
47
64
  return /*#__PURE__*/jsx("div", {
48
- children: /*#__PURE__*/jsx("div", {
49
- className: "droppable-default-card",
50
- "aria-hidden": isComplete,
51
- children: /*#__PURE__*/jsxs("div", {
52
- className: "droppable-card-content",
53
- children: [/*#__PURE__*/jsx("div", {
54
- className: "m-b-3",
55
- children: this.getImage()
56
- }), usLabel && /*#__PURE__*/jsx("h4", {
57
- className: "np-text-title-body m-b-1",
58
- children: usLabel
59
- }), usPlaceholder && /*#__PURE__*/jsx("p", {
60
- className: "np-text-body-large m-b-3",
61
- children: String(usPlaceholder)
62
- }), /*#__PURE__*/jsxs("label", {
63
- className: `btn btn-primary btn-md ${usDisabled ? 'disabled' : ''}`,
64
- children: [usButtonText ? /*#__PURE__*/jsx("span", {
65
- children: usButtonText
66
- }) : /*#__PURE__*/jsx(Upload, {
67
- size: 24,
68
- className: "m-r-0"
69
- }), /*#__PURE__*/jsx("input", {
70
- ref: this.uploadInputRef,
71
- type: "file",
72
- accept: usAccept === '*' ? undefined : usAccept,
73
- className: "tw-droppable-input hidden",
74
- disabled: usDisabled,
75
- name: "file-upload",
76
- onChange: () => this.onManualUpload()
77
- })]
65
+ className: "droppable-default-card",
66
+ "aria-hidden": isComplete,
67
+ children: /*#__PURE__*/jsxs("div", {
68
+ className: "droppable-card-content",
69
+ children: [/*#__PURE__*/jsx("div", {
70
+ className: "m-b-3",
71
+ children: this.getImage()
72
+ }), usLabel && /*#__PURE__*/jsx("h4", {
73
+ className: "np-text-title-body m-b-1",
74
+ children: usLabel
75
+ }), usPlaceholder && /*#__PURE__*/jsx("p", {
76
+ className: "np-text-body-large m-b-3",
77
+ children: String(usPlaceholder)
78
+ }), /*#__PURE__*/jsxs("label", {
79
+ className: `btn btn-primary btn-md ${usDisabled ? 'disabled' : ''}`,
80
+ children: [usButtonText ? /*#__PURE__*/jsx("span", {
81
+ children: usButtonText
82
+ }) : /*#__PURE__*/jsx(Upload, {
83
+ size: 24,
84
+ className: "m-r-0"
85
+ }), /*#__PURE__*/jsx("input", {
86
+ ref: this.uploadInputRef,
87
+ type: "file",
88
+ accept: usAccept === '*' ? undefined : usAccept,
89
+ className: "tw-droppable-input hidden",
90
+ disabled: usDisabled,
91
+ name: "file-upload",
92
+ onChange: () => this.onManualUpload()
78
93
  })]
79
- })
94
+ }), errorMessage && /*#__PURE__*/jsx("div", {
95
+ className: "upload-error-message",
96
+ children: /*#__PURE__*/jsx("div", {
97
+ className: "m-t-3 has-error",
98
+ children: /*#__PURE__*/jsx(InlineAlert, {
99
+ type: Sentiment.NEGATIVE,
100
+ children: errorMessage
101
+ })
102
+ })
103
+ })]
80
104
  })
81
105
  });
82
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"uploadImageStep.mjs","sources":["../../../../src/upload/steps/uploadImageStep/uploadImageStep.tsx"],"sourcesContent":["import { Upload as UploadIcon } from '@transferwise/icons';\nimport { createRef, PureComponent } from 'react';\n\nexport interface UploadImageStepProps {\n fileDropped: (file: File) => void;\n isComplete: boolean;\n usAccept: string;\n usButtonText: string;\n usDisabled: boolean;\n usHelpImage: React.ReactNode;\n usLabel: string;\n usPlaceholder: string;\n}\n\nexport default class UploadImageStep extends PureComponent<UploadImageStepProps> {\n uploadInputRef = createRef<HTMLInputElement>();\n\n onManualUpload = () => {\n const { fileDropped } = this.props;\n const file = this.uploadInputRef.current?.files?.[0];\n if (file != null) {\n fileDropped(file);\n }\n };\n\n getImage = () => {\n const { usHelpImage, usLabel } = this.props;\n\n if (!usHelpImage) {\n return (\n <div className=\"circle circle-sm circle-inverse p-t-1\">\n <UploadIcon size={24} />\n </div>\n );\n }\n\n if (typeof usHelpImage === 'string') {\n return <img src={usHelpImage} alt={usLabel} className=\"thumbnail text-xs-center\" />;\n }\n\n return usHelpImage;\n };\n\n render() {\n const { isComplete, usAccept, usButtonText, usDisabled, usLabel, usPlaceholder } = this.props;\n\n return (\n <div>\n <div className=\"droppable-default-card\" aria-hidden={isComplete}>\n <div className=\"droppable-card-content\">\n <div className=\"m-b-3\">{this.getImage()}</div>\n {usLabel && <h4 className=\"np-text-title-body m-b-1\">{usLabel}</h4>}\n {usPlaceholder && <p className=\"np-text-body-large m-b-3\">{String(usPlaceholder)}</p>}\n <label className={`btn btn-primary btn-md ${usDisabled ? 'disabled' : ''}`}>\n {usButtonText ? (\n <span>{usButtonText}</span>\n ) : (\n <UploadIcon size={24} className=\"m-r-0\" />\n )}\n <input\n ref={this.uploadInputRef}\n type=\"file\"\n accept={usAccept === '*' ? undefined : usAccept}\n className=\"tw-droppable-input hidden\"\n disabled={usDisabled}\n name=\"file-upload\"\n onChange={() => this.onManualUpload()}\n />\n </label>\n </div>\n </div>\n </div>\n );\n }\n}\n"],"names":["UploadImageStep","PureComponent","uploadInputRef","createRef","onManualUpload","fileDropped","props","file","current","files","getImage","usHelpImage","usLabel","_jsx","className","children","UploadIcon","size","src","alt","render","isComplete","usAccept","usButtonText","usDisabled","usPlaceholder","_jsxs","String","ref","type","accept","undefined","disabled","name","onChange"],"mappings":"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"}
1
+ {"version":3,"file":"uploadImageStep.mjs","sources":["../../../../src/upload/steps/uploadImageStep/uploadImageStep.tsx"],"sourcesContent":["import { Upload as UploadIcon } from '@transferwise/icons';\nimport { createRef, PureComponent } from 'react';\nimport StatusIcon from '../../../statusIcon';\nimport { Sentiment, Size } from '../../../common';\nimport InlineAlert from '../../../inlineAlert';\n\nexport interface UploadImageStepProps {\n fileDropped: (file: File) => void;\n isComplete: boolean;\n usAccept: string;\n usButtonText: string;\n usDisabled: boolean;\n usHelpImage: React.ReactNode;\n usLabel: string;\n usPlaceholder: string;\n errorMessage?: string | string[];\n}\n\nexport default class UploadImageStep extends PureComponent<UploadImageStepProps> {\n uploadInputRef = createRef<HTMLInputElement>();\n\n onManualUpload = () => {\n const { fileDropped } = this.props;\n const file = this.uploadInputRef.current?.files?.[0];\n if (file != null) {\n fileDropped(file);\n }\n };\n\n getImage = () => {\n const { usHelpImage, usLabel } = this.props;\n const { errorMessage } = this.props;\n\n if (errorMessage) {\n return (\n <div className=\"d-flex flex-column align-items-center\">\n <StatusIcon size={Size.LARGE} sentiment={Sentiment.NEGATIVE} />\n </div>\n );\n }\n\n if (!usHelpImage) {\n return (\n <div className=\"circle circle-sm circle-inverse p-t-1\">\n <UploadIcon size={24} />\n </div>\n );\n }\n\n if (typeof usHelpImage === 'string') {\n return <img src={usHelpImage} alt={usLabel} className=\"thumbnail text-xs-center\" />;\n }\n\n return usHelpImage;\n };\n\n render() {\n const { isComplete, usAccept, usButtonText, usDisabled, usLabel, usPlaceholder, errorMessage } =\n this.props;\n\n return (\n <div className=\"droppable-default-card\" aria-hidden={isComplete}>\n <div className=\"droppable-card-content\">\n <div className=\"m-b-3\">{this.getImage()}</div>\n {usLabel && <h4 className=\"np-text-title-body m-b-1\">{usLabel}</h4>}\n {usPlaceholder && <p className=\"np-text-body-large m-b-3\">{String(usPlaceholder)}</p>}\n <label className={`btn btn-primary btn-md ${usDisabled ? 'disabled' : ''}`}>\n {usButtonText ? (\n <span>{usButtonText}</span>\n ) : (\n <UploadIcon size={24} className=\"m-r-0\" />\n )}\n <input\n ref={this.uploadInputRef}\n type=\"file\"\n accept={usAccept === '*' ? undefined : usAccept}\n className=\"tw-droppable-input hidden\"\n disabled={usDisabled}\n name=\"file-upload\"\n onChange={() => this.onManualUpload()}\n />\n </label>\n {errorMessage && (\n <div className=\"upload-error-message\">\n <div className=\"m-t-3 has-error\">\n <InlineAlert type={Sentiment.NEGATIVE}>{errorMessage}</InlineAlert>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n}\n"],"names":["UploadImageStep","PureComponent","uploadInputRef","createRef","onManualUpload","fileDropped","props","file","current","files","getImage","usHelpImage","usLabel","errorMessage","_jsx","className","children","StatusIcon","size","Size","LARGE","sentiment","Sentiment","NEGATIVE","UploadIcon","src","alt","render","isComplete","usAccept","usButtonText","usDisabled","usPlaceholder","_jsxs","String","ref","type","accept","undefined","disabled","name","onChange","InlineAlert"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@transferwise/components",
3
- "version": "0.0.0-experimental-33bba78",
3
+ "version": "0.0.0-experimental-43d536d",
4
4
  "description": "Neptune React components",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -93,12 +93,12 @@
93
93
  "rollup-preserve-directives": "^1.1.1",
94
94
  "storybook": "^8.2.2",
95
95
  "@transferwise/less-config": "3.1.0",
96
- "@transferwise/neptune-css": "0.0.0-experimental-33bba78",
96
+ "@transferwise/neptune-css": "0.0.0-experimental-43d536d",
97
97
  "@wise/components-theming": "1.5.0"
98
98
  },
99
99
  "peerDependencies": {
100
100
  "@transferwise/icons": "^3.7.0",
101
- "@transferwise/neptune-css": "0.0.0-experimental-33bba78",
101
+ "@transferwise/neptune-css": "0.0.0-experimental-43d536d",
102
102
  "@wise/art": "^2.7.0",
103
103
  "@wise/components-theming": "^1.0.0",
104
104
  "react": ">=18",
package/src/i18n/de.json CHANGED
@@ -18,7 +18,6 @@
18
18
  "neptune.DateLookup.year": "Jahr",
19
19
  "neptune.FlowNavigation.back": "zurück zum vorherigen Schritt",
20
20
  "neptune.Info.ariaLabel": "Weitere Informationen",
21
- "neptune.Label.optional": "(Optional)",
22
21
  "neptune.Link.opensInNewTab": "(wird in einem neuen Tab geöffnet)",
23
22
  "neptune.MoneyInput.Select.placeholder": "Wähle eine der Möglichkeiten aus...",
24
23
  "neptune.PhoneNumberInput.SelectInput.placeholder": "Wähle eine Option...",
package/src/i18n/en.json CHANGED
@@ -36,6 +36,7 @@
36
36
  "neptune.Upload.csWrongTypeMessage": "File type not supported. Please try again with a different file",
37
37
  "neptune.Upload.psButtonText": "Cancel",
38
38
  "neptune.Upload.psProcessingText": "Uploading...",
39
+ "neptune.Upload.retry": "Retry",
39
40
  "neptune.Upload.usButtonText": "Or select a file",
40
41
  "neptune.Upload.usDropMessage": "Drop file to start upload",
41
42
  "neptune.Upload.usPlaceholder": "Drag and drop a file less than {maxSize}MB",
package/src/i18n/es.json CHANGED
@@ -18,7 +18,6 @@
18
18
  "neptune.DateLookup.year": "año",
19
19
  "neptune.FlowNavigation.back": "volver al paso anterior",
20
20
  "neptune.Info.ariaLabel": "Más información",
21
- "neptune.Label.optional": "(Opcional)",
22
21
  "neptune.Link.opensInNewTab": "(se abre en una pestaña nueva)",
23
22
  "neptune.MoneyInput.Select.placeholder": "Selecciona una opción...",
24
23
  "neptune.PhoneNumberInput.SelectInput.placeholder": "Selecciona una opción...",
package/src/i18n/fr.json CHANGED
@@ -18,7 +18,6 @@
18
18
  "neptune.DateLookup.year": "année",
19
19
  "neptune.FlowNavigation.back": "revenir à l'étape précédente",
20
20
  "neptune.Info.ariaLabel": "Plus d'informations",
21
- "neptune.Label.optional": "(Facultatif)",
22
21
  "neptune.Link.opensInNewTab": "(ouvre dans un nouvel onglet)",
23
22
  "neptune.MoneyInput.Select.placeholder": "Sélectionner une option...",
24
23
  "neptune.PhoneNumberInput.SelectInput.placeholder": "Sélectionnez une option…",
package/src/i18n/hu.json CHANGED
@@ -18,7 +18,6 @@
18
18
  "neptune.DateLookup.year": "év",
19
19
  "neptune.FlowNavigation.back": "vissza az előző lépéshez",
20
20
  "neptune.Info.ariaLabel": "További információ",
21
- "neptune.Label.optional": "(Válaszható)",
22
21
  "neptune.Link.opensInNewTab": "(új lapon nyílik meg)",
23
22
  "neptune.MoneyInput.Select.placeholder": "Válassz ki egy lehetőséget...",
24
23
  "neptune.PhoneNumberInput.SelectInput.placeholder": "Válassz ki egy lehetőséget...",
package/src/i18n/id.json CHANGED
@@ -18,7 +18,6 @@
18
18
  "neptune.DateLookup.year": "tahun",
19
19
  "neptune.FlowNavigation.back": "kembali ke langkah sebelumnya",
20
20
  "neptune.Info.ariaLabel": "Informasi lebih lanjut",
21
- "neptune.Label.optional": "(Opsional)",
22
21
  "neptune.Link.opensInNewTab": "(terbuka di tab baru)",
23
22
  "neptune.MoneyInput.Select.placeholder": "Pilih opsi...",
24
23
  "neptune.PhoneNumberInput.SelectInput.placeholder": "Pilih opsi...",
package/src/i18n/it.json CHANGED
@@ -18,7 +18,6 @@
18
18
  "neptune.DateLookup.year": "anno",
19
19
  "neptune.FlowNavigation.back": "torna al passaggio precedente",
20
20
  "neptune.Info.ariaLabel": "Maggiori informazioni",
21
- "neptune.Label.optional": "(Facoltativo)",
22
21
  "neptune.Link.opensInNewTab": "(si apre in una nuova scheda)",
23
22
  "neptune.MoneyInput.Select.placeholder": "Seleziona un'opzione...",
24
23
  "neptune.PhoneNumberInput.SelectInput.placeholder": "Seleziona un'opzione...",
package/src/i18n/ja.json CHANGED
@@ -18,7 +18,6 @@
18
18
  "neptune.DateLookup.year": "年",
19
19
  "neptune.FlowNavigation.back": "前のステップに戻る",
20
20
  "neptune.Info.ariaLabel": "詳細",
21
- "neptune.Label.optional": "(省略可)",
22
21
  "neptune.Link.opensInNewTab": "(新しいタブで開きます)",
23
22
  "neptune.MoneyInput.Select.placeholder": "選択してください...",
24
23
  "neptune.PhoneNumberInput.SelectInput.placeholder": "選択してください…",
package/src/i18n/pl.json CHANGED
@@ -18,7 +18,6 @@
18
18
  "neptune.DateLookup.year": "rok",
19
19
  "neptune.FlowNavigation.back": "wróć do poprzedniego kroku",
20
20
  "neptune.Info.ariaLabel": "Więcej informacji",
21
- "neptune.Label.optional": "(opcjonalne)",
22
21
  "neptune.Link.opensInNewTab": "(otworzy się w nowej zakładce)",
23
22
  "neptune.MoneyInput.Select.placeholder": "Wybierz opcję...",
24
23
  "neptune.PhoneNumberInput.SelectInput.placeholder": "Wybierz opcję...",
package/src/i18n/pt.json CHANGED
@@ -18,7 +18,6 @@
18
18
  "neptune.DateLookup.year": "ano",
19
19
  "neptune.FlowNavigation.back": "voltar à etapa anterior",
20
20
  "neptune.Info.ariaLabel": "Mais informações",
21
- "neptune.Label.optional": "(Opcional)",
22
21
  "neptune.Link.opensInNewTab": "(abre em uma nova aba)",
23
22
  "neptune.MoneyInput.Select.placeholder": "Escolha uma opção...",
24
23
  "neptune.PhoneNumberInput.SelectInput.placeholder": "Escolha uma opção...",