@transferwise/components 46.84.1 → 46.86.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 (163) hide show
  1. package/build/avatarLayout/AvatarLayout.js +1 -0
  2. package/build/avatarLayout/AvatarLayout.js.map +1 -1
  3. package/build/avatarLayout/AvatarLayout.mjs +1 -0
  4. package/build/avatarLayout/AvatarLayout.mjs.map +1 -1
  5. package/build/circularButton/CircularButton.js +18 -21
  6. package/build/circularButton/CircularButton.js.map +1 -1
  7. package/build/circularButton/CircularButton.mjs +19 -22
  8. package/build/circularButton/CircularButton.mjs.map +1 -1
  9. package/build/definitionList/DefinitionList.js.map +1 -1
  10. package/build/definitionList/DefinitionList.mjs.map +1 -1
  11. package/build/dimmer/Dimmer.js.map +1 -1
  12. package/build/dimmer/Dimmer.mjs.map +1 -1
  13. package/build/i18n/de.json +1 -0
  14. package/build/i18n/de.json.js +1 -0
  15. package/build/i18n/de.json.js.map +1 -1
  16. package/build/i18n/de.json.mjs +1 -0
  17. package/build/i18n/de.json.mjs.map +1 -1
  18. package/build/i18n/en.json +1 -0
  19. package/build/i18n/en.json.js +1 -0
  20. package/build/i18n/en.json.js.map +1 -1
  21. package/build/i18n/en.json.mjs +1 -0
  22. package/build/i18n/en.json.mjs.map +1 -1
  23. package/build/i18n/es.json +1 -0
  24. package/build/i18n/es.json.js +1 -0
  25. package/build/i18n/es.json.js.map +1 -1
  26. package/build/i18n/es.json.mjs +1 -0
  27. package/build/i18n/es.json.mjs.map +1 -1
  28. package/build/i18n/fr.json +6 -5
  29. package/build/i18n/fr.json.js +6 -5
  30. package/build/i18n/fr.json.js.map +1 -1
  31. package/build/i18n/fr.json.mjs +6 -5
  32. package/build/i18n/fr.json.mjs.map +1 -1
  33. package/build/i18n/hu.json +1 -0
  34. package/build/i18n/hu.json.js +1 -0
  35. package/build/i18n/hu.json.js.map +1 -1
  36. package/build/i18n/hu.json.mjs +1 -0
  37. package/build/i18n/hu.json.mjs.map +1 -1
  38. package/build/i18n/id.json +1 -0
  39. package/build/i18n/id.json.js +1 -0
  40. package/build/i18n/id.json.js.map +1 -1
  41. package/build/i18n/id.json.mjs +1 -0
  42. package/build/i18n/id.json.mjs.map +1 -1
  43. package/build/i18n/it.json +1 -0
  44. package/build/i18n/it.json.js +1 -0
  45. package/build/i18n/it.json.js.map +1 -1
  46. package/build/i18n/it.json.mjs +1 -0
  47. package/build/i18n/it.json.mjs.map +1 -1
  48. package/build/i18n/pl.json +1 -0
  49. package/build/i18n/pl.json.js +1 -0
  50. package/build/i18n/pl.json.js.map +1 -1
  51. package/build/i18n/pl.json.mjs +1 -0
  52. package/build/i18n/pl.json.mjs.map +1 -1
  53. package/build/i18n/ro.json +1 -0
  54. package/build/i18n/ro.json.js +1 -0
  55. package/build/i18n/ro.json.js.map +1 -1
  56. package/build/i18n/ro.json.mjs +1 -0
  57. package/build/i18n/ro.json.mjs.map +1 -1
  58. package/build/i18n/th.json +6 -0
  59. package/build/i18n/th.json.js +6 -0
  60. package/build/i18n/th.json.js.map +1 -1
  61. package/build/i18n/th.json.mjs +6 -0
  62. package/build/i18n/th.json.mjs.map +1 -1
  63. package/build/i18n/tr.json +1 -0
  64. package/build/i18n/tr.json.js +1 -0
  65. package/build/i18n/tr.json.js.map +1 -1
  66. package/build/i18n/tr.json.mjs +1 -0
  67. package/build/i18n/tr.json.mjs.map +1 -1
  68. package/build/i18n/zh-CN.json +11 -0
  69. package/build/i18n/zh-CN.json.js +11 -0
  70. package/build/i18n/zh-CN.json.js.map +1 -1
  71. package/build/i18n/zh-CN.json.mjs +11 -0
  72. package/build/i18n/zh-CN.json.mjs.map +1 -1
  73. package/build/i18n/zh-HK.json +5 -0
  74. package/build/i18n/zh-HK.json.js +5 -0
  75. package/build/i18n/zh-HK.json.js.map +1 -1
  76. package/build/i18n/zh-HK.json.mjs +5 -0
  77. package/build/i18n/zh-HK.json.mjs.map +1 -1
  78. package/build/main.css +17 -158
  79. package/build/moneyInput/MoneyInput.js.map +1 -1
  80. package/build/moneyInput/MoneyInput.mjs.map +1 -1
  81. package/build/stepper/Stepper.js +6 -3
  82. package/build/stepper/Stepper.js.map +1 -1
  83. package/build/stepper/Stepper.mjs +6 -3
  84. package/build/stepper/Stepper.mjs.map +1 -1
  85. package/build/styles/circularButton/CircularButton.css +17 -158
  86. package/build/styles/main.css +17 -158
  87. package/build/types/avatarLayout/AvatarLayout.d.ts.map +1 -1
  88. package/build/types/circularButton/CircularButton.d.ts +11 -4
  89. package/build/types/circularButton/CircularButton.d.ts.map +1 -1
  90. package/build/types/definitionList/DefinitionList.d.ts +1 -2
  91. package/build/types/definitionList/DefinitionList.d.ts.map +1 -1
  92. package/build/types/dimmer/Dimmer.d.ts +1 -1
  93. package/build/types/dimmer/Dimmer.d.ts.map +1 -1
  94. package/build/types/moneyInput/MoneyInput.d.ts +1 -1
  95. package/build/types/moneyInput/MoneyInput.d.ts.map +1 -1
  96. package/build/types/stepper/Stepper.d.ts +2 -1
  97. package/build/types/stepper/Stepper.d.ts.map +1 -1
  98. package/build/types/test-utils/index.d.ts +2 -0
  99. package/build/types/test-utils/index.d.ts.map +1 -1
  100. package/build/types/uploadInput/uploadButton/UploadButton.messages.d.ts +5 -0
  101. package/build/types/uploadInput/uploadButton/UploadButton.messages.d.ts.map +1 -1
  102. package/build/uploadInput/uploadButton/UploadButton.js +3 -1
  103. package/build/uploadInput/uploadButton/UploadButton.js.map +1 -1
  104. package/build/uploadInput/uploadButton/UploadButton.messages.js +3 -0
  105. package/build/uploadInput/uploadButton/UploadButton.messages.js.map +1 -1
  106. package/build/uploadInput/uploadButton/UploadButton.messages.mjs +3 -0
  107. package/build/uploadInput/uploadButton/UploadButton.messages.mjs.map +1 -1
  108. package/build/uploadInput/uploadButton/UploadButton.mjs +3 -1
  109. package/build/uploadInput/uploadButton/UploadButton.mjs.map +1 -1
  110. package/package.json +5 -5
  111. package/src/avatar/Avatar.story.tsx +4 -1
  112. package/src/avatarLayout/AvatarLayout.story.tsx +2 -0
  113. package/src/avatarLayout/AvatarLayout.tsx +3 -1
  114. package/src/avatarWrapper/AvatarWrapper.story.tsx +4 -0
  115. package/src/badge/Badge.story.tsx +4 -0
  116. package/src/circularButton/CircularButton.css +17 -158
  117. package/src/circularButton/CircularButton.less +22 -91
  118. package/src/circularButton/CircularButton.story.tsx +45 -24
  119. package/src/circularButton/CircularButton.tsx +38 -25
  120. package/src/definitionList/DefinitionList.story.tsx +57 -57
  121. package/src/definitionList/DefinitionList.tsx +1 -1
  122. package/src/dimmer/{Dimmer.rtl.spec.tsx → Dimmer.spec.tsx} +33 -29
  123. package/src/dimmer/Dimmer.tsx +4 -4
  124. package/src/flowNavigation/__snapshots__/FlowNavigation.spec.js.snap +3 -1
  125. package/src/i18n/de.json +1 -0
  126. package/src/i18n/en.json +1 -0
  127. package/src/i18n/es.json +1 -0
  128. package/src/i18n/fr.json +6 -5
  129. package/src/i18n/hu.json +1 -0
  130. package/src/i18n/id.json +1 -0
  131. package/src/i18n/it.json +1 -0
  132. package/src/i18n/pl.json +1 -0
  133. package/src/i18n/ro.json +1 -0
  134. package/src/i18n/th.json +6 -0
  135. package/src/i18n/tr.json +1 -0
  136. package/src/i18n/zh-CN.json +11 -0
  137. package/src/i18n/zh-HK.json +5 -0
  138. package/src/iconButton/IconButton.story.tsx +6 -6
  139. package/src/main.css +17 -158
  140. package/src/moneyInput/MoneyInput.spec.tsx +468 -0
  141. package/src/moneyInput/MoneyInput.tsx +2 -1
  142. package/src/navigationOption/NavigationOption.spec.tsx +113 -0
  143. package/src/phoneNumberInput/PhoneNumberInput.spec.tsx +283 -0
  144. package/src/radioOption/RadioOption.spec.tsx +73 -0
  145. package/src/slidingPanel/SlidingPanel.spec.tsx +69 -0
  146. package/src/stepper/Stepper.spec.tsx +236 -0
  147. package/src/stepper/Stepper.tests.story.tsx +89 -0
  148. package/src/stepper/Stepper.tsx +9 -4
  149. package/src/stepper/{deviceDetection.spec.js → deviceDetection.spec.ts} +6 -3
  150. package/src/uploadInput/uploadButton/UploadButton.messages.ts +7 -0
  151. package/src/uploadInput/uploadButton/UploadButton.tsx +1 -1
  152. package/src/circularButton/_button-label-states.less +0 -34
  153. package/src/definitionList/DefinitionList.spec.js +0 -91
  154. package/src/dimmer/Dimmer.spec.js +0 -87
  155. package/src/moneyInput/MoneyInput.rtl.spec.tsx +0 -149
  156. package/src/moneyInput/MoneyInput.spec.js +0 -820
  157. package/src/navigationOption/NavigationOption.spec.js +0 -93
  158. package/src/phoneNumberInput/PhoneNumberInput.rtl.spec.tsx +0 -32
  159. package/src/phoneNumberInput/PhoneNumberInput.spec.js +0 -356
  160. package/src/radioOption/RadioOption.spec.js +0 -67
  161. package/src/slidingPanel/SlidingPanel.spec.js +0 -56
  162. package/src/stepper/Stepper.spec.js +0 -233
  163. /package/src/alert/{Alert.spec.story.tsx → Alert.tests.story.tsx} +0 -0
@@ -1,233 +0,0 @@
1
- import { shallow } from 'enzyme';
2
-
3
- import { Tooltip } from '..';
4
-
5
- import Stepper from './Stepper';
6
-
7
- jest.mock('./deviceDetection', () => ({
8
- isTouchDevice: jest.fn(() => false),
9
- }));
10
-
11
- describe('Stepper', () => {
12
- let props;
13
- let component;
14
- let fakeDeviceDetection;
15
-
16
- beforeEach(() => {
17
- fakeDeviceDetection = require('./deviceDetection');
18
- props = {
19
- activeStep: 0,
20
- steps: ['one', 'two', 'three'].map((label) => ({ label })),
21
- };
22
- component = shallow(<Stepper {...props} />);
23
- });
24
-
25
- const activeStep = (step) => component.setProps({ activeStep: step });
26
- const steps = (howMany) =>
27
- component.setProps({
28
- steps: new Array(...new Array(howMany)).map((_, index) => ({ label: index.toString() })),
29
- });
30
-
31
- describe('progress bar', () => {
32
- const totalWidth = () => component.find('.progress-bar').prop('style').width;
33
-
34
- describe('when no steps are passed in', () => {
35
- it('renders nothing', () => {
36
- component.setProps({ steps: [] });
37
-
38
- expect(component.isEmptyRender()).toBe(true);
39
- });
40
- });
41
-
42
- it('sets the widths of the progress bar to match where you are in the flow', () => {
43
- expect(totalWidth()).toBe('0px');
44
- activeStep(2);
45
- expect(totalWidth()).toBe(
46
- 'calc(100% + var(--progress-bar-start-shift) + var(--progress-bar-border-width))',
47
- );
48
- steps(5);
49
- expect(totalWidth()).toBe(
50
- 'calc(50% + var(--progress-bar-start-shift) + var(--progress-bar-border-width))',
51
- );
52
- activeStep(10000);
53
- expect(totalWidth()).toBe(
54
- 'calc(100% + var(--progress-bar-start-shift) + var(--progress-bar-border-width))',
55
- );
56
- activeStep(-10);
57
- expect(totalWidth()).toBe('0px');
58
- });
59
- });
60
-
61
- describe('steps', () => {
62
- it('have rendered labels', () => {
63
- steps(5);
64
- [0, 1, 2, 3, 4].forEach((step) => {
65
- expect(component.find('.tw-stepper__step').at(step).find('span').props().children).toBe(
66
- step.toString(),
67
- );
68
- });
69
- });
70
-
71
- it('are active when clickable and completed', () => {
72
- const stepActive = (index) =>
73
- component.find('.tw-stepper__step').at(index).hasClass('tw-stepper__step--clickable');
74
-
75
- component.setProps({
76
- steps: [
77
- { label: '0' },
78
- { label: '1', onClick: () => null },
79
- { label: '2', onClick: () => null },
80
- ],
81
- activeStep: 0,
82
- });
83
-
84
- expect(stepActive(0)).toBe(false);
85
- activeStep(1);
86
- expect(stepActive(0)).toBe(false);
87
- expect(stepActive(1)).toBe(false);
88
- activeStep(2);
89
- expect(stepActive(0)).toBe(false);
90
- expect(stepActive(1)).toBe(true);
91
- expect(stepActive(2)).toBe(false);
92
- });
93
-
94
- it('are not clickable when active', () => {
95
- const clickOnStep = (index) => {
96
- const buttonReference = component.find('.tw-stepper__step').at(index).find('button');
97
- if (buttonReference.exists()) {
98
- buttonReference.simulate('click');
99
- }
100
- };
101
- const buttonDisabled = (index) =>
102
- !component.find('.tw-stepper__step').at(index).find('button').exists();
103
- const clickedOnFirstStep = jest.fn();
104
- const clickedOnSecondStep = jest.fn();
105
- component.setProps({
106
- steps: [
107
- { label: '0', onClick: clickedOnFirstStep },
108
- { label: '1', onClick: clickedOnSecondStep },
109
- ],
110
- activeStep: 0,
111
- });
112
- clickOnStep(0);
113
- expect(buttonDisabled(0)).toBe(true);
114
- expect(clickedOnFirstStep).not.toHaveBeenCalled();
115
- activeStep(1);
116
- expect(buttonDisabled(0)).toBe(false);
117
- clickOnStep(0);
118
- expect(clickedOnFirstStep).toHaveBeenCalledTimes(1);
119
- clickOnStep(1);
120
- expect(clickedOnSecondStep).not.toHaveBeenCalled();
121
- });
122
-
123
- it('are active when they are the currently active step', () => {
124
- const stepActive = (index) =>
125
- component.find('.tw-stepper__step').at(index).hasClass('tw-stepper__step--active');
126
- steps(4);
127
- activeStep(1);
128
- expect(stepActive(0)).toBe(false);
129
- expect(stepActive(1)).toBe(true);
130
- expect(stepActive(2)).toBe(false);
131
- expect(stepActive(3)).toBe(false);
132
- activeStep(2);
133
- expect(stepActive(0)).toBe(false);
134
- expect(stepActive(1)).toBe(false);
135
- expect(stepActive(2)).toBe(true);
136
- expect(stepActive(3)).toBe(false);
137
- });
138
-
139
- it('are marked as visited when active index is less than or equals to current index', () => {
140
- const step = (index) => {
141
- const buttonStates = ['tw-stepper__step--active', 'tw-stepper__step--clickable'];
142
- const stepElement = component.find('.tw-stepper__step').at(index);
143
- return {
144
- active: stepElement.hasClass(buttonStates[0]),
145
- clickable: stepElement.hasClass(buttonStates[1]),
146
- clickableAndActive: buttonStates.every((c) => stepElement.hasClass(c)),
147
- disabled: !stepElement.find('button').exists(),
148
- };
149
- };
150
-
151
- component.setProps({
152
- steps: [
153
- { label: '0', onClick: () => {} },
154
- { label: '1', onClick: () => {} },
155
- { label: '2', onClick: () => {} },
156
- ],
157
- activeStep: 0,
158
- });
159
-
160
- expect(step(0).active).toBe(true);
161
- expect(step(0).disabled).toBe(true);
162
- expect(step(1).clickableAndActive).toBe(false);
163
- expect(step(2).clickableAndActive).toBe(false);
164
-
165
- activeStep(2);
166
- activeStep(0);
167
-
168
- expect(step(1).clickable).toBe(true);
169
- expect(step(2).clickable).toBe(true);
170
- });
171
-
172
- it('are aria-current=step when active', () => {
173
- const stepCurrent = (index) =>
174
- component.find('.tw-stepper__step').at(index).props()['aria-current'];
175
- steps(4);
176
- activeStep(1);
177
- expect(stepCurrent(0)).toBe(false);
178
- expect(stepCurrent(1)).toBe('step');
179
- expect(stepCurrent(2)).toBe(false);
180
- expect(stepCurrent(3)).toBe(false);
181
- activeStep(2);
182
- expect(stepCurrent(0)).toBe(false);
183
- expect(stepCurrent(1)).toBe(false);
184
- expect(stepCurrent(2)).toBe('step');
185
- expect(stepCurrent(3)).toBe(false);
186
- });
187
- });
188
-
189
- describe('hover labels', () => {
190
- const step = (index) => component.find('.tw-stepper__step').at(index);
191
- it('will be rendered when provided', () => {
192
- component.setProps({
193
- steps: [{ hoverLabel: 'hover', label: 'label' }, { label: 'label 2' }],
194
- });
195
- const firstStepHoverLabel = step(0).children();
196
- expect(firstStepHoverLabel.type()).toBe(Tooltip);
197
- expect(firstStepHoverLabel.children().render().text()).toBe('label');
198
- expect(step(1).find('span').props().children).toBe('label 2');
199
- });
200
-
201
- it('renders jsx', () => {
202
- component.setProps({
203
- steps: [
204
- {
205
- hoverLabel: (
206
- <>
207
- hover <p>label</p>
208
- </>
209
- ),
210
- label: '1',
211
- },
212
- ],
213
- });
214
-
215
- expect(step(0).children().prop('label')).toStrictEqual(
216
- <>
217
- hover <p>label</p>
218
- </>,
219
- );
220
- });
221
-
222
- it('will not be rendered if the user is on a touch device', () => {
223
- jest.spyOn(fakeDeviceDetection, 'isTouchDevice').mockImplementation(() => true);
224
- component.setProps({
225
- steps: [{ hoverLabel: 'hover', label: 'label' }, { label: 'label 2' }],
226
- });
227
- const firstStepHoverLabel = step(0).children();
228
- expect(firstStepHoverLabel.type()).toBe('span');
229
- expect(firstStepHoverLabel.props().children).toBe('label');
230
- expect(step(1).children().props().children).toBe('label 2');
231
- });
232
- });
233
- });