@transferwise/components 46.39.0 → 46.41.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 (146) hide show
  1. package/build/index.js +244 -493
  2. package/build/index.js.map +1 -1
  3. package/build/index.mjs +245 -494
  4. package/build/index.mjs.map +1 -1
  5. package/build/main.css +4 -2
  6. package/build/styles/main.css +4 -2
  7. package/build/styles/statusIcon/StatusIcon.css +4 -2
  8. package/build/types/dateInput/DateInput.d.ts.map +1 -1
  9. package/build/types/field/Field.d.ts +6 -1
  10. package/build/types/field/Field.d.ts.map +1 -1
  11. package/build/types/index.d.ts +2 -1
  12. package/build/types/index.d.ts.map +1 -1
  13. package/build/types/inlineAlert/InlineAlert.d.ts +2 -2
  14. package/build/types/inlineAlert/InlineAlert.d.ts.map +1 -1
  15. package/build/types/processIndicator/ProcessIndicator.d.ts +1 -1
  16. package/build/types/processIndicator/ProcessIndicator.d.ts.map +1 -1
  17. package/build/types/upload/Upload.d.ts +91 -55
  18. package/build/types/upload/Upload.d.ts.map +1 -1
  19. package/build/types/upload/Upload.messages.d.ts +42 -60
  20. package/build/types/upload/Upload.messages.d.ts.map +1 -1
  21. package/build/types/upload/index.d.ts +2 -2
  22. package/build/types/upload/index.d.ts.map +1 -1
  23. package/build/types/upload/steps/completeStep/completeStep.d.ts +11 -18
  24. package/build/types/upload/steps/completeStep/completeStep.d.ts.map +1 -1
  25. package/build/types/upload/steps/completeStep/index.d.ts +2 -1
  26. package/build/types/upload/steps/completeStep/index.d.ts.map +1 -1
  27. package/build/types/upload/steps/index.d.ts +3 -4
  28. package/build/types/upload/steps/index.d.ts.map +1 -1
  29. package/build/types/upload/steps/processingStep/index.d.ts +2 -1
  30. package/build/types/upload/steps/processingStep/index.d.ts.map +1 -1
  31. package/build/types/upload/steps/processingStep/processingStep.d.ts +11 -13
  32. package/build/types/upload/steps/processingStep/processingStep.d.ts.map +1 -1
  33. package/build/types/upload/steps/uploadImageStep/index.d.ts +2 -1
  34. package/build/types/upload/steps/uploadImageStep/index.d.ts.map +1 -1
  35. package/build/types/upload/steps/uploadImageStep/uploadImageStep.d.ts +14 -18
  36. package/build/types/upload/steps/uploadImageStep/uploadImageStep.d.ts.map +1 -1
  37. package/build/types/upload/utils/asyncFileRead/asyncFileRead.d.ts +1 -1
  38. package/build/types/upload/utils/asyncFileRead/asyncFileRead.d.ts.map +1 -1
  39. package/build/types/upload/utils/asyncFileRead/index.d.ts +1 -1
  40. package/build/types/upload/utils/asyncFileRead/index.d.ts.map +1 -1
  41. package/build/types/upload/utils/getFileType/getFileType.d.ts +1 -1
  42. package/build/types/upload/utils/getFileType/getFileType.d.ts.map +1 -1
  43. package/build/types/upload/utils/getFileType/index.d.ts +1 -1
  44. package/build/types/upload/utils/getFileType/index.d.ts.map +1 -1
  45. package/build/types/upload/utils/index.d.ts +5 -7
  46. package/build/types/upload/utils/index.d.ts.map +1 -1
  47. package/build/types/upload/utils/isSizeValid/index.d.ts +1 -1
  48. package/build/types/upload/utils/isSizeValid/index.d.ts.map +1 -1
  49. package/build/types/upload/utils/isSizeValid/isSizeValid.d.ts +1 -1
  50. package/build/types/upload/utils/isSizeValid/isSizeValid.d.ts.map +1 -1
  51. package/build/types/upload/utils/isTypeValid/index.d.ts +1 -1
  52. package/build/types/upload/utils/isTypeValid/index.d.ts.map +1 -1
  53. package/build/types/upload/utils/isTypeValid/isTypeValid.d.ts +1 -1
  54. package/build/types/upload/utils/isTypeValid/isTypeValid.d.ts.map +1 -1
  55. package/build/types/upload/utils/postData/index.d.ts +1 -1
  56. package/build/types/upload/utils/postData/index.d.ts.map +1 -1
  57. package/build/types/upload/utils/postData/postData.d.ts +11 -1
  58. package/build/types/upload/utils/postData/postData.d.ts.map +1 -1
  59. package/package.json +2 -2
  60. package/src/dateInput/DateInput.spec.tsx +220 -0
  61. package/src/dateInput/DateInput.story.tsx +3 -76
  62. package/src/dateInput/DateInput.tests.story.tsx +238 -0
  63. package/src/dateInput/DateInput.tsx +50 -53
  64. package/src/field/Field.story.tsx +17 -36
  65. package/src/field/Field.tests.story.tsx +33 -0
  66. package/src/field/Field.tsx +23 -13
  67. package/src/index.ts +2 -1
  68. package/src/inlineAlert/InlineAlert.story.tsx +13 -5
  69. package/src/inlineAlert/InlineAlert.tsx +14 -7
  70. package/src/main.css +4 -2
  71. package/src/processIndicator/ProcessIndicator.tsx +1 -1
  72. package/src/statusIcon/StatusIcon.css +4 -2
  73. package/src/statusIcon/StatusIcon.less +4 -2
  74. package/src/statusIcon/StatusIcon.tsx +1 -1
  75. package/src/upload/Upload.spec.js +3 -14
  76. package/src/upload/Upload.story.tsx +37 -0
  77. package/src/upload/{Upload.js → Upload.tsx} +164 -169
  78. package/src/upload/index.ts +2 -0
  79. package/src/upload/steps/completeStep/completeStep.spec.js +3 -2
  80. package/src/upload/steps/completeStep/completeStep.tsx +74 -0
  81. package/src/upload/steps/completeStep/index.ts +2 -0
  82. package/src/upload/steps/{index.js → index.ts} +0 -1
  83. package/src/upload/steps/processingStep/index.ts +2 -0
  84. package/src/upload/steps/processingStep/processingStep.tsx +53 -0
  85. package/src/upload/steps/uploadImageStep/index.ts +2 -0
  86. package/src/upload/steps/uploadImageStep/{uploadImageStep.js → uploadImageStep.tsx} +17 -23
  87. package/src/upload/utils/asyncFileRead/asyncFileRead.spec.ts +14 -0
  88. package/src/upload/utils/asyncFileRead/asyncFileRead.ts +12 -0
  89. package/src/upload/utils/getFileType/getFileType.spec.ts +22 -0
  90. package/src/upload/utils/getFileType/getFileType.ts +16 -0
  91. package/src/upload/utils/{index.js → index.ts} +0 -2
  92. package/src/upload/utils/isSizeValid/{isSizeValid.spec.js → isSizeValid.spec.ts} +3 -3
  93. package/src/upload/utils/isSizeValid/isSizeValid.ts +3 -0
  94. package/src/upload/utils/isTypeValid/isTypeValid.spec.ts +62 -0
  95. package/src/upload/utils/isTypeValid/isTypeValid.ts +19 -0
  96. package/src/upload/utils/postData/postData.spec.ts +65 -0
  97. package/src/upload/utils/postData/postData.ts +36 -0
  98. package/src/uploadInput/UploadInput.tsx +1 -1
  99. package/build/types/upload/steps/mediaUploadStep/index.d.ts +0 -2
  100. package/build/types/upload/steps/mediaUploadStep/index.d.ts.map +0 -1
  101. package/build/types/upload/steps/mediaUploadStep/mediaUploadStep.d.ts +0 -24
  102. package/build/types/upload/steps/mediaUploadStep/mediaUploadStep.d.ts.map +0 -1
  103. package/build/types/upload/uploadSteps.d.ts +0 -5
  104. package/build/types/upload/uploadSteps.d.ts.map +0 -1
  105. package/build/types/upload/utils/getSupportedSpotMimeTypes/getSupportedSpotMimeTypes.d.ts +0 -2
  106. package/build/types/upload/utils/getSupportedSpotMimeTypes/getSupportedSpotMimeTypes.d.ts.map +0 -1
  107. package/build/types/upload/utils/getSupportedSpotMimeTypes/index.d.ts +0 -2
  108. package/build/types/upload/utils/getSupportedSpotMimeTypes/index.d.ts.map +0 -1
  109. package/build/types/upload/utils/requestMedia/index.d.ts +0 -2
  110. package/build/types/upload/utils/requestMedia/index.d.ts.map +0 -1
  111. package/build/types/upload/utils/requestMedia/requestMedia.d.ts +0 -2
  112. package/build/types/upload/utils/requestMedia/requestMedia.d.ts.map +0 -1
  113. package/src/dateInput/DateInput.rtl.spec.tsx +0 -17
  114. package/src/dateInput/DateInput.spec.js +0 -477
  115. package/src/upload/Upload.story.js +0 -36
  116. package/src/upload/index.js +0 -2
  117. package/src/upload/steps/completeStep/completeStep.js +0 -98
  118. package/src/upload/steps/completeStep/index.js +0 -1
  119. package/src/upload/steps/mediaUploadStep/index.js +0 -1
  120. package/src/upload/steps/mediaUploadStep/mediaUploadStep.js +0 -80
  121. package/src/upload/steps/mediaUploadStep/mediaUploadStep.spec.js +0 -77
  122. package/src/upload/steps/processingStep/index.js +0 -1
  123. package/src/upload/steps/processingStep/processingStep.js +0 -73
  124. package/src/upload/steps/uploadImageStep/index.js +0 -1
  125. package/src/upload/uploadSteps.ts +0 -5
  126. package/src/upload/utils/asyncFileRead/asyncFileRead.js +0 -11
  127. package/src/upload/utils/asyncFileRead/asyncFileRead.spec.js +0 -17
  128. package/src/upload/utils/getFileType/getFileType.js +0 -19
  129. package/src/upload/utils/getFileType/getFileType.spec.js +0 -33
  130. package/src/upload/utils/getSupportedSpotMimeTypes/getSupportedSpotMimeTypes.js +0 -18
  131. package/src/upload/utils/getSupportedSpotMimeTypes/getSupportedSpotMimeTypes.spec.js +0 -22
  132. package/src/upload/utils/getSupportedSpotMimeTypes/index.js +0 -1
  133. package/src/upload/utils/isSizeValid/isSizeValid.js +0 -1
  134. package/src/upload/utils/isTypeValid/isTypeValid.js +0 -26
  135. package/src/upload/utils/isTypeValid/isTypeValid.spec.js +0 -68
  136. package/src/upload/utils/postData/postData.js +0 -18
  137. package/src/upload/utils/postData/postData.spec.js +0 -109
  138. package/src/upload/utils/requestMedia/index.js +0 -1
  139. package/src/upload/utils/requestMedia/requestMedia.js +0 -26
  140. package/src/upload/utils/requestMedia/requestMedia.spec.js +0 -44
  141. /package/src/upload/{Upload.messages.js → Upload.messages.ts} +0 -0
  142. /package/src/upload/utils/asyncFileRead/{index.js → index.ts} +0 -0
  143. /package/src/upload/utils/getFileType/{index.js → index.ts} +0 -0
  144. /package/src/upload/utils/isSizeValid/{index.js → index.ts} +0 -0
  145. /package/src/upload/utils/isTypeValid/{index.js → index.ts} +0 -0
  146. /package/src/upload/utils/postData/{index.js → index.ts} +0 -0
@@ -1,8 +1,8 @@
1
- import { AlertCircle as AlertCircleIcon } from '@transferwise/icons';
2
1
  import classNames from 'classnames';
3
- import { ReactNode } from 'react';
2
+ import React, { ReactNode } from 'react';
4
3
 
5
- import { Sentiment } from '../common';
4
+ import { Sentiment, Size } from '../common';
5
+ import StatusIcon from '../statusIcon';
6
6
 
7
7
  export interface InlineAlertProps {
8
8
  id?: string;
@@ -17,15 +17,22 @@ export default function InlineAlert({
17
17
  className,
18
18
  children,
19
19
  }: InlineAlertProps) {
20
- const danger = type === 'negative' || type === 'error';
21
20
  return (
22
21
  <div
23
22
  role="alert"
24
23
  id={id}
25
- className={classNames('alert alert-detach', `alert-${danger ? 'danger' : type}`, className)}
24
+ className={classNames(
25
+ 'alert alert-detach',
26
+ `alert-${type === Sentiment.NEGATIVE || type === Sentiment.ERROR ? 'danger' : type}`,
27
+ className,
28
+ )}
26
29
  >
27
- {danger && <AlertCircleIcon />}
28
- <div>{children}</div>
30
+ <div className="d-inline-flex">
31
+ {type !== Sentiment.NEUTRAL && type !== Sentiment.PENDING && (
32
+ <StatusIcon sentiment={type} size={Size.SMALL} />
33
+ )}
34
+ <div className="np-text-body-default">{children}</div>
35
+ </div>
29
36
  </div>
30
37
  );
31
38
  }
package/src/main.css CHANGED
@@ -4208,14 +4208,16 @@ html:not([dir="rtl"]) .np-navigation-option {
4208
4208
  height: var(--size-32);
4209
4209
  }
4210
4210
  }
4211
- .status-circle.negative {
4211
+ .status-circle.negative,
4212
+ .status-circle.error {
4212
4213
  background-color: var(--color-sentiment-negative);
4213
4214
  }
4214
4215
  .status-circle.neutral {
4215
4216
  background-color: #5d7079;
4216
4217
  background-color: var(--color-content-secondary);
4217
4218
  }
4218
- .status-circle.positive {
4219
+ .status-circle.positive,
4220
+ .status-circle.success {
4219
4221
  background-color: var(--color-sentiment-positive);
4220
4222
  }
4221
4223
  .tw-stepper {
@@ -7,7 +7,7 @@ const radius = { xxs: 6, xs: 11, sm: 22, xl: 61 };
7
7
 
8
8
  const ANIMATION_DURATION_IN_MS = 1500;
9
9
 
10
- type ProcessIndicatorStatus =
10
+ export type ProcessIndicatorStatus =
11
11
  `${Status.PROCESSING | Status.FAILED | Status.SUCCEEDED | Status.HIDDEN}`;
12
12
 
13
13
  export interface ProcessIndicatorProps {
@@ -66,13 +66,15 @@
66
66
  height: var(--size-32);
67
67
  }
68
68
  }
69
- .status-circle.negative {
69
+ .status-circle.negative,
70
+ .status-circle.error {
70
71
  background-color: var(--color-sentiment-negative);
71
72
  }
72
73
  .status-circle.neutral {
73
74
  background-color: #5d7079;
74
75
  background-color: var(--color-content-secondary);
75
76
  }
76
- .status-circle.positive {
77
+ .status-circle.positive,
78
+ .status-circle.success {
77
79
  background-color: var(--color-sentiment-positive);
78
80
  }
@@ -60,7 +60,8 @@
60
60
  }
61
61
  }
62
62
 
63
- .status-circle.negative {
63
+ .status-circle.negative,
64
+ .status-circle.error {
64
65
  background-color: var(--color-sentiment-negative);
65
66
  }
66
67
 
@@ -68,6 +69,7 @@
68
69
  background-color: var(--color-content-secondary);
69
70
  }
70
71
 
71
- .status-circle.positive {
72
+ .status-circle.positive,
73
+ .status-circle.success {
72
74
  background-color: var(--color-sentiment-positive);
73
75
  }
@@ -26,7 +26,7 @@ const StatusIcon = ({ sentiment = 'neutral', size = 'md' }: StatusIconProps) =>
26
26
  return (
27
27
  <span
28
28
  data-testid="status-icon"
29
- className={classNames('status-circle', 'status-circle-' + size, sentiment)}
29
+ className={classNames('status-circle', `status-circle-${size}`, sentiment)}
30
30
  >
31
31
  <Icon className={classNames('status-icon', iconColor)} />
32
32
  </span>
@@ -3,7 +3,7 @@ import { act } from 'react';
3
3
 
4
4
  import { ANIMATION_DURATION_IN_MS } from '../processIndicator';
5
5
 
6
- import { CompleteStep, UploadImageStep, MediaUploadStep, ProcessingStep } from './steps';
6
+ import { CompleteStep, UploadImageStep, ProcessingStep } from './steps';
7
7
 
8
8
  import Upload from '.';
9
9
 
@@ -56,7 +56,7 @@ const UPLOADIMAGE_STEP_PROPS = {
56
56
  usAccept: props.usAccept,
57
57
  usButtonText: props.usButtonText,
58
58
  usDisabled: false,
59
- usHelpImage: '',
59
+ usHelpImage: undefined,
60
60
  usLabel: '',
61
61
  usPlaceholder: props.usPlaceholder,
62
62
  };
@@ -105,17 +105,6 @@ describe('Upload', () => {
105
105
 
106
106
  it('renders the UploadImageStep by default', () => {
107
107
  expect(component.find(UploadImageStep)).toHaveLength(1);
108
- expect(component.find(MediaUploadStep)).toHaveLength(0);
109
- expect(component.find(ProcessingStep)).toHaveLength(0);
110
- expect(component.find(CompleteStep)).toHaveLength(0);
111
- expect(component.find('.droppable-dropping-card')).toHaveLength(1);
112
- });
113
-
114
- it(`renders the MediaUploadStep by default is it's the uploadStep in props`, () => {
115
- component.setProps({ uploadStep: 'mediaUploadStep' });
116
-
117
- expect(component.find(MediaUploadStep)).toHaveLength(1);
118
- expect(component.find(UploadImageStep)).toHaveLength(0);
119
108
  expect(component.find(ProcessingStep)).toHaveLength(0);
120
109
  expect(component.find(CompleteStep)).toHaveLength(0);
121
110
  expect(component.find('.droppable-dropping-card')).toHaveLength(1);
@@ -260,7 +249,7 @@ describe('Upload', () => {
260
249
  isImage: false,
261
250
  isComplete: true,
262
251
  isError: true,
263
- uploadedImage: null,
252
+ uploadedImage: undefined,
264
253
  });
265
254
  });
266
255
 
@@ -0,0 +1,37 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { fn } from '@storybook/test';
3
+
4
+ import Upload from '.';
5
+ import { MAX_SIZE_DEFAULT } from './Upload';
6
+
7
+ const meta = {
8
+ component: Upload,
9
+ tags: ['autodocs'],
10
+ argTypes: {
11
+ maxSize: {
12
+ control: {
13
+ type: 'number',
14
+ min: 0,
15
+ },
16
+ },
17
+ },
18
+ } satisfies Meta<typeof Upload>;
19
+
20
+ export default meta;
21
+ type Story = StoryObj<typeof meta>;
22
+
23
+ export const Basic = {
24
+ args: {
25
+ maxSize: MAX_SIZE_DEFAULT,
26
+ usAccept: 'image/*',
27
+ usLabel: 'Front of your ID document',
28
+ httpOptions: {
29
+ url: 'https://httpbin.org/post',
30
+ method: 'POST',
31
+ },
32
+ onStart: fn(),
33
+ onSuccess: fn(),
34
+ onFailure: fn(),
35
+ onCancel: fn(),
36
+ },
37
+ } satisfies Story;