@transferwise/components 46.14.0 → 46.16.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 (63) hide show
  1. package/build/index.esm.js +97 -196
  2. package/build/index.esm.js.map +1 -1
  3. package/build/index.js +100 -199
  4. package/build/index.js.map +1 -1
  5. package/build/types/actionButton/ActionButton.d.ts +1 -1
  6. package/build/types/common/Option/Option.d.ts.map +1 -1
  7. package/build/types/common/RadioButton/RadioButton.d.ts +10 -34
  8. package/build/types/common/RadioButton/RadioButton.d.ts.map +1 -1
  9. package/build/types/common/RadioButton/index.d.ts +1 -1
  10. package/build/types/common/RadioButton/index.d.ts.map +1 -1
  11. package/build/types/index.d.ts +4 -0
  12. package/build/types/index.d.ts.map +1 -1
  13. package/build/types/instructionsList/InstructionsList.d.ts +4 -2
  14. package/build/types/instructionsList/InstructionsList.d.ts.map +1 -1
  15. package/build/types/instructionsList/index.d.ts +2 -2
  16. package/build/types/instructionsList/index.d.ts.map +1 -1
  17. package/build/types/moneyInput/MoneyInput.d.ts +1 -0
  18. package/build/types/moneyInput/MoneyInput.d.ts.map +1 -1
  19. package/build/types/radio/Radio.d.ts +10 -21
  20. package/build/types/radio/Radio.d.ts.map +1 -1
  21. package/build/types/radio/index.d.ts +2 -2
  22. package/build/types/radio/index.d.ts.map +1 -1
  23. package/build/types/radioGroup/RadioGroup.d.ts +10 -26
  24. package/build/types/radioGroup/RadioGroup.d.ts.map +1 -1
  25. package/build/types/radioGroup/index.d.ts +2 -1
  26. package/build/types/radioGroup/index.d.ts.map +1 -1
  27. package/build/types/radioOption/RadioOption.d.ts +15 -23
  28. package/build/types/radioOption/RadioOption.d.ts.map +1 -1
  29. package/build/types/radioOption/index.d.ts +2 -1
  30. package/build/types/radioOption/index.d.ts.map +1 -1
  31. package/package.json +1 -1
  32. package/src/common/Option/Option.tsx +0 -1
  33. package/src/common/RadioButton/RadioButton.tsx +43 -0
  34. package/src/index.ts +4 -0
  35. package/src/instructionsList/InstructionsList.spec.tsx +14 -0
  36. package/src/instructionsList/{InstructionList.story.tsx → InstructionsList.story.tsx} +14 -2
  37. package/src/instructionsList/InstructionsList.tsx +31 -17
  38. package/src/instructionsList/index.ts +3 -0
  39. package/src/moneyInput/MoneyInput.rtl.spec.tsx +12 -0
  40. package/src/moneyInput/MoneyInput.tsx +12 -2
  41. package/src/radio/{Radio.story.js → Radio.story.tsx} +0 -3
  42. package/src/radio/{Radio.js → Radio.tsx} +18 -28
  43. package/src/radio/index.ts +2 -0
  44. package/src/radioGroup/RadioGroup.spec.js +24 -26
  45. package/src/radioGroup/{RadioGroup.story.js → RadioGroup.story.tsx} +0 -3
  46. package/src/radioGroup/RadioGroup.tsx +39 -0
  47. package/src/radioGroup/index.ts +2 -0
  48. package/src/radioOption/RadioOption.spec.js +4 -4
  49. package/src/radioOption/{RadioOption.story.js → RadioOption.story.tsx} +4 -4
  50. package/src/radioOption/RadioOption.tsx +60 -0
  51. package/src/radioOption/index.ts +2 -0
  52. package/src/common/RadioButton/RadioButton.js +0 -41
  53. package/src/instructionsList/index.js +0 -3
  54. package/src/radio/index.js +0 -3
  55. package/src/radioGroup/RadioGroup.js +0 -66
  56. package/src/radioGroup/index.js +0 -1
  57. package/src/radioOption/RadioOption.js +0 -81
  58. package/src/radioOption/index.js +0 -1
  59. /package/src/common/RadioButton/{RadioButton.spec.js → RadioButton.spec.tsx} +0 -0
  60. /package/src/common/RadioButton/__snapshots__/{RadioButton.spec.js.snap → RadioButton.spec.tsx.snap} +0 -0
  61. /package/src/common/RadioButton/{index.js → index.ts} +0 -0
  62. /package/src/radio/{Radio.rtl.spec.js → Radio.rtl.spec.tsx} +0 -0
  63. /package/src/radio/__snapshots__/{Radio.rtl.spec.js.snap → Radio.rtl.spec.tsx.snap} +0 -0
package/build/index.js CHANGED
@@ -7416,23 +7416,31 @@ const InputWithDisplayFormat = props => /*#__PURE__*/jsxRuntime.jsx(WithDisplayF
7416
7416
 
7417
7417
  const InstructionsList = ({
7418
7418
  dos,
7419
- donts
7419
+ donts,
7420
+ sort = 'dosFirst'
7420
7421
  }) => {
7421
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
7422
+ const dosInstructions = dos?.map((doThis, index) =>
7423
+ /*#__PURE__*/
7424
+ // eslint-disable-next-line react/no-array-index-key
7425
+ jsxRuntime.jsx(Instruction, {
7426
+ item: doThis,
7427
+ type: "do"
7428
+ }, index)) ?? null;
7429
+ const dontsInstructions = donts?.map((dont, index) =>
7430
+ /*#__PURE__*/
7431
+ // eslint-disable-next-line react/no-array-index-key
7432
+ jsxRuntime.jsx(Instruction, {
7433
+ item: dont,
7434
+ type: "dont"
7435
+ }, index)) ?? null;
7436
+ const orderedInstructions = sort === 'dosFirst' ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
7437
+ children: [dosInstructions, dontsInstructions]
7438
+ }) : /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
7439
+ children: [dontsInstructions, dosInstructions]
7440
+ });
7441
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
7422
7442
  className: "tw-instructions",
7423
- children: [dos && dos.map((doThis, index) =>
7424
- /*#__PURE__*/
7425
- // eslint-disable-next-line react/no-array-index-key
7426
- jsxRuntime.jsx(Instruction, {
7427
- item: doThis,
7428
- type: "do"
7429
- }, index)), donts && donts.map((dont, index) =>
7430
- /*#__PURE__*/
7431
- // eslint-disable-next-line react/no-array-index-key
7432
- jsxRuntime.jsx(Instruction, {
7433
- item: dont,
7434
- type: "dont"
7435
- }, index))]
7443
+ children: orderedInstructions
7436
7444
  });
7437
7445
  };
7438
7446
  function Instruction({
@@ -7456,7 +7464,6 @@ function Instruction({
7456
7464
  })]
7457
7465
  });
7458
7466
  }
7459
- var InstructionsList$1 = InstructionsList;
7460
7467
 
7461
7468
  const Loader = ({
7462
7469
  small = false,
@@ -7791,6 +7798,7 @@ class MoneyInput extends React.Component {
7791
7798
  size,
7792
7799
  addon,
7793
7800
  id,
7801
+ 'aria-labelledby': ariaLabelledBy,
7794
7802
  selectProps,
7795
7803
  maxLengthOverride
7796
7804
  } = this.props;
@@ -7814,6 +7822,7 @@ class MoneyInput extends React.Component {
7814
7822
  const isFixedCurrency = !this.state.searchQuery && hasSingleCurrency() || !onCurrencyChange;
7815
7823
  const disabled = !this.props.onAmountChange;
7816
7824
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
7825
+ "aria-labelledby": ariaLabelledBy,
7817
7826
  className: classNames__default.default(this.style('tw-money-input'), this.style('input-group'), this.style(`input-group-${size}`)),
7818
7827
  children: [/*#__PURE__*/jsxRuntime.jsx(Input, {
7819
7828
  id: id,
@@ -9972,54 +9981,42 @@ Provider.defaultProps = {
9972
9981
  };
9973
9982
  var Provider$1 = Provider;
9974
9983
 
9975
- const RadioButton = ({
9984
+ function RadioButton({
9976
9985
  id,
9977
- value,
9986
+ value = '',
9978
9987
  name,
9979
9988
  checked,
9980
9989
  onChange,
9981
9990
  disabled,
9982
9991
  readOnly
9983
- }) => /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
9984
- children: [/*#__PURE__*/jsxRuntime.jsx("input", {
9985
- type: "radio",
9986
- className: "sr-only",
9987
- id: id,
9988
- value: value,
9989
- name: name,
9990
- checked: checked,
9991
- disabled: disabled || readOnly,
9992
- onChange: () => !checked ? onChange(value) : null
9993
- }), /*#__PURE__*/jsxRuntime.jsx("span", {
9994
- className: classNames__default.default('tw-radio-button', {
9995
- checked,
9996
- disabled: disabled || readOnly
9997
- }),
9998
- children: /*#__PURE__*/jsxRuntime.jsx("span", {
9999
- className: "tw-radio-check"
10000
- })
10001
- })]
10002
- });
10003
- RadioButton.propTypes = {
10004
- id: PropTypes__default.default.string,
10005
- name: PropTypes__default.default.string.isRequired,
10006
- checked: PropTypes__default.default.bool,
10007
- onChange: PropTypes__default.default.func,
10008
- disabled: PropTypes__default.default.bool,
10009
- value: PropTypes__default.default.oneOfType([PropTypes__default.default.number, PropTypes__default.default.string]),
10010
- readOnly: PropTypes__default.default.bool
10011
- };
10012
- RadioButton.defaultProps = {
10013
- checked: false,
10014
- onChange: () => {},
10015
- disabled: false,
10016
- id: null,
10017
- value: '',
10018
- readOnly: false
10019
- };
10020
- var RadioButton$1 = RadioButton;
9992
+ }) {
9993
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
9994
+ children: [/*#__PURE__*/jsxRuntime.jsx("input", {
9995
+ type: "radio",
9996
+ className: "sr-only",
9997
+ id: id,
9998
+ value: value,
9999
+ name: name,
10000
+ checked: checked,
10001
+ disabled: disabled || readOnly,
10002
+ onChange: () => {
10003
+ if (!checked) {
10004
+ onChange?.(value);
10005
+ }
10006
+ }
10007
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
10008
+ className: classNames__default.default('tw-radio-button', {
10009
+ checked,
10010
+ disabled: disabled || readOnly
10011
+ }),
10012
+ children: /*#__PURE__*/jsxRuntime.jsx("span", {
10013
+ className: "tw-radio-check"
10014
+ })
10015
+ })]
10016
+ });
10017
+ }
10021
10018
 
10022
- const Radio = ({
10019
+ function Radio({
10023
10020
  label,
10024
10021
  id,
10025
10022
  disabled,
@@ -10027,7 +10024,7 @@ const Radio = ({
10027
10024
  avatar,
10028
10025
  secondary,
10029
10026
  ...otherProps
10030
- }) => {
10027
+ }) {
10031
10028
  const {
10032
10029
  isModern
10033
10030
  } = componentsTheming.useTheme();
@@ -10043,7 +10040,7 @@ const Radio = ({
10043
10040
  htmlFor: id,
10044
10041
  children: [/*#__PURE__*/jsxRuntime.jsx("span", {
10045
10042
  className: classNames__default.default(isModern ? 'm-r-2' : 'p-r-2', 'np-radio-button'),
10046
- children: /*#__PURE__*/jsxRuntime.jsx(RadioButton$1, {
10043
+ children: /*#__PURE__*/jsxRuntime.jsx(RadioButton, {
10047
10044
  id: id,
10048
10045
  disabled: disabled,
10049
10046
  ...otherProps
@@ -10065,100 +10062,36 @@ const Radio = ({
10065
10062
  })]
10066
10063
  })
10067
10064
  });
10068
- };
10069
- Radio.propTypes = {
10070
- avatar: PropTypes__default.default.element,
10071
- checked: PropTypes__default.default.bool,
10072
- disabled: PropTypes__default.default.bool,
10073
- id: PropTypes__default.default.string,
10074
- label: PropTypes__default.default.string.isRequired,
10075
- name: PropTypes__default.default.string.isRequired,
10076
- onChange: PropTypes__default.default.func.isRequired,
10077
- secondary: PropTypes__default.default.string,
10078
- value: PropTypes__default.default.oneOfType([PropTypes__default.default.number, PropTypes__default.default.string]),
10079
- className: PropTypes__default.default.string
10080
- };
10081
- Radio.defaultProps = {
10082
- avatar: undefined,
10083
- checked: false,
10084
- disabled: false,
10085
- id: null,
10086
- secondary: null,
10087
- value: '',
10088
- className: undefined
10089
- };
10090
- var Radio$1 = Radio;
10065
+ }
10091
10066
 
10092
- class RadioGroup extends React.Component {
10093
- constructor(props) {
10094
- super(props);
10095
- this.state = {
10096
- selectedValue: props.selectedValue
10097
- };
10098
- }
10099
- handleOnChange = selectedValue => {
10100
- const {
10101
- onChange
10102
- } = this.props;
10103
- this.setState({
10104
- selectedValue
10105
- }, onChange && onChange(selectedValue));
10106
- };
10107
- render() {
10108
- const {
10109
- radios,
10110
- name
10111
- } = this.props;
10112
- const {
10113
- selectedValue
10114
- } = this.state;
10115
- return radios && radios.length > 0 ? /*#__PURE__*/jsxRuntime.jsx("div", {
10116
- role: "radiogroup",
10117
- children: radios.map(({
10118
- id,
10119
- avatar,
10120
- value,
10121
- label,
10122
- disabled,
10123
- secondary,
10124
- readOnly
10125
- }, index) => /*#__PURE__*/jsxRuntime.jsx(Radio$1
10126
- // eslint-disable-next-line react/no-array-index-key
10127
- , {
10128
- id: id,
10129
- value: value,
10130
- label: label,
10131
- name: name,
10132
- disabled: disabled,
10133
- checked: selectedValue === value,
10134
- secondary: secondary,
10135
- readOnly: readOnly,
10136
- avatar: avatar,
10137
- onChange: value_ => this.handleOnChange(value_)
10138
- }, index))
10139
- }) : null;
10140
- }
10067
+ function RadioGroup({
10068
+ name,
10069
+ radios,
10070
+ selectedValue: controlledValue,
10071
+ onChange
10072
+ }) {
10073
+ const [uncontrolledValue, setUncontrolledValue] = React.useState(controlledValue);
10074
+ return radios.length > 0 ? /*#__PURE__*/jsxRuntime.jsx("div", {
10075
+ role: "radiogroup",
10076
+ children: radios.map(({
10077
+ value = '',
10078
+ ...restProps
10079
+ }, index) => /*#__PURE__*/jsxRuntime.jsx(Radio
10080
+ // eslint-disable-next-line react/no-array-index-key
10081
+ , {
10082
+ ...restProps,
10083
+ name: name,
10084
+ value: value,
10085
+ checked: value === uncontrolledValue,
10086
+ onChange: nextValue => {
10087
+ setUncontrolledValue(nextValue);
10088
+ onChange(nextValue);
10089
+ }
10090
+ }, index))
10091
+ }) : null;
10141
10092
  }
10142
- RadioGroup.propTypes = {
10143
- radios: PropTypes__default.default.arrayOf(PropTypes__default.default.shape({
10144
- id: PropTypes__default.default.string,
10145
- avatar: PropTypes__default.default.element,
10146
- value: PropTypes__default.default.oneOfType([PropTypes__default.default.number, PropTypes__default.default.string]),
10147
- secondary: PropTypes__default.default.string,
10148
- label: PropTypes__default.default.string.isRequired,
10149
- disabled: PropTypes__default.default.bool,
10150
- readOnly: PropTypes__default.default.bool
10151
- })).isRequired,
10152
- onChange: PropTypes__default.default.func.isRequired,
10153
- selectedValue: PropTypes__default.default.oneOfType([PropTypes__default.default.number, PropTypes__default.default.string]),
10154
- name: PropTypes__default.default.string.isRequired
10155
- };
10156
- RadioGroup.defaultProps = {
10157
- selectedValue: null
10158
- };
10159
- var RadioGroup$1 = RadioGroup;
10160
10093
 
10161
- const RadioOption = ({
10094
+ function RadioOption({
10162
10095
  'aria-label': ariaLabel,
10163
10096
  media,
10164
10097
  title,
@@ -10173,22 +10106,19 @@ const RadioOption = ({
10173
10106
  showMediaCircle,
10174
10107
  showMediaAtAllSizes,
10175
10108
  isContainerAligned
10176
- }) => {
10177
- const sharedProps = {
10178
- 'aria-label': ariaLabel,
10179
- media,
10180
- title,
10181
- content,
10182
- name,
10183
- complex,
10184
- disabled,
10185
- showMediaCircle,
10186
- showMediaAtAllSizes,
10187
- isContainerAligned
10188
- };
10109
+ }) {
10189
10110
  return /*#__PURE__*/jsxRuntime.jsx(Option$2, {
10190
- ...sharedProps,
10191
- button: /*#__PURE__*/jsxRuntime.jsx(RadioButton$1, {
10111
+ "aria-label": ariaLabel,
10112
+ media: media,
10113
+ title: title,
10114
+ content: content,
10115
+ name: name,
10116
+ complex: complex,
10117
+ disabled: disabled,
10118
+ showMediaCircle: showMediaCircle,
10119
+ showMediaAtAllSizes: showMediaAtAllSizes,
10120
+ isContainerAligned: isContainerAligned,
10121
+ button: /*#__PURE__*/jsxRuntime.jsx(RadioButton, {
10192
10122
  id: id,
10193
10123
  name: name,
10194
10124
  checked: checked,
@@ -10197,36 +10127,7 @@ const RadioOption = ({
10197
10127
  onChange: onChange
10198
10128
  })
10199
10129
  });
10200
- };
10201
- RadioOption.propTypes = {
10202
- 'aria-label': PropTypes__default.default.string,
10203
- media: PropTypes__default.default.node,
10204
- id: PropTypes__default.default.string.isRequired,
10205
- name: PropTypes__default.default.string.isRequired,
10206
- title: PropTypes__default.default.node.isRequired,
10207
- content: PropTypes__default.default.node,
10208
- checked: PropTypes__default.default.bool,
10209
- onChange: PropTypes__default.default.func.isRequired,
10210
- complex: PropTypes__default.default.bool,
10211
- disabled: PropTypes__default.default.bool,
10212
- value: PropTypes__default.default.string,
10213
- showMediaCircle: PropTypes__default.default.bool,
10214
- showMediaAtAllSizes: PropTypes__default.default.bool,
10215
- isContainerAligned: PropTypes__default.default.bool
10216
- };
10217
- RadioOption.defaultProps = {
10218
- 'aria-label': undefined,
10219
- media: null,
10220
- content: null,
10221
- checked: false,
10222
- complex: false,
10223
- disabled: false,
10224
- showMediaCircle: true,
10225
- showMediaAtAllSizes: false,
10226
- isContainerAligned: false,
10227
- value: ''
10228
- };
10229
- var RadioOption$1 = RadioOption;
10130
+ }
10230
10131
 
10231
10132
  const Section = ({
10232
10133
  children,
@@ -15331,7 +15232,7 @@ exports.InlineAlert = InlineAlert;
15331
15232
  exports.Input = Input;
15332
15233
  exports.InputGroup = InputGroup;
15333
15234
  exports.InputWithDisplayFormat = InputWithDisplayFormat;
15334
- exports.InstructionsList = InstructionsList$1;
15235
+ exports.InstructionsList = InstructionsList;
15335
15236
  exports.LanguageProvider = LanguageProvider;
15336
15237
  exports.Link = Link;
15337
15238
  exports.ListItem = ListItem$1;
@@ -15355,9 +15256,9 @@ exports.PromoCard = PromoCard$1;
15355
15256
  exports.PromoCardGroup = PromoCard$1;
15356
15257
  exports.Provider = Provider$1;
15357
15258
  exports.RTL_LANGUAGES = RTL_LANGUAGES;
15358
- exports.Radio = Radio$1;
15359
- exports.RadioGroup = RadioGroup$1;
15360
- exports.RadioOption = RadioOption$1;
15259
+ exports.Radio = Radio;
15260
+ exports.RadioGroup = RadioGroup;
15261
+ exports.RadioOption = RadioOption;
15361
15262
  exports.SUPPORTED_LANGUAGES = SUPPORTED_LANGUAGES;
15362
15263
  exports.SearchInput = SearchInput;
15363
15264
  exports.Section = Section;