@transferwise/components 0.0.0-experimental-a9f68ee → 0.0.0-experimental-fe362df

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.
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { Position, SizeSmall, SizeLarge } from '../common';
3
3
  export interface Props {
4
- 'aria-label': string;
4
+ 'aria-label'?: string;
5
5
  /**
6
6
  * Extra classes applied to Info
7
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Info.d.ts","sourceRoot":"","sources":["../../../src/info/Info.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAQ,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAMjE,MAAM,WAAW,KAAK;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,kBAAkB,CAAC,EAAE,QAAQ,CAAC;CAC/B;AAED,QAAA,MAAM,IAAI,6GASP,KAAK,gCAgDP,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Info.d.ts","sourceRoot":"","sources":["../../../src/info/Info.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAQ,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAOjE,MAAM,WAAW,KAAK;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,kBAAkB,CAAC,EAAE,QAAQ,CAAC;CAC/B;AAED,QAAA,MAAM,IAAI,6GASP,KAAK,gCAiDP,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -0,0 +1,8 @@
1
+ declare const _default: {
2
+ ariaLabel: {
3
+ id: string;
4
+ defaultMessage: string;
5
+ };
6
+ };
7
+ export default _default;
8
+ //# sourceMappingURL=Info.messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Info.messages.d.ts","sourceRoot":"","sources":["../../../src/info/Info.messages.ts"],"names":[],"mappings":";;;;;;AAEA,wBAKG"}
@@ -1 +1 @@
1
- {"version":3,"file":"Summary.d.ts","sourceRoot":"","sources":["../../../src/summary/Summary.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAgB,SAAS,EAAE,MAAM,OAAO,CAAC;AAI7D,OAAO,EAEL,UAAU,EACV,aAAa,EACb,aAAa,EAId,MAAM,WAAW,CAAC;AACnB,OAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAqB1C,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC,GAAG;QACvE,IAAI,EAAE,SAAS,CAAC;KACjB,CAAC;IACF;;OAEG;IACH,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,SAAS,CAAC;QACnB,KAAK,CAAC,EAAE,SAAS,CAAC;KACnB,CAAC;IACF;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,OAAO,CAAC,CAAC;IACxF;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,aAAa,GAAG,UAAU,GAAG,aAAa,CAAC;IACpD;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,QAAA,MAAM,OAAO,6GAaV,KAAK,gCAoFP,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"Summary.d.ts","sourceRoot":"","sources":["../../../src/summary/Summary.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAgB,SAAS,EAAE,MAAM,OAAO,CAAC;AAI7D,OAAO,EAEL,UAAU,EACV,aAAa,EACb,aAAa,EAId,MAAM,WAAW,CAAC;AACnB,OAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAqB1C,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC,GAAG;QACvE,IAAI,EAAE,SAAS,CAAC;KACjB,CAAC;IACF;;OAEG;IACH,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,SAAS,CAAC;QACnB,KAAK,CAAC,EAAE,SAAS,CAAC;KACnB,CAAC;IACF;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,OAAO,CAAC,CAAC;IACxF;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,aAAa,GAAG,UAAU,GAAG,aAAa,CAAC;IACpD;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,QAAA,MAAM,OAAO,6GAYV,KAAK,gCAoFP,CAAC;AAEF,eAAe,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@transferwise/components",
3
- "version": "0.0.0-experimental-a9f68ee",
3
+ "version": "0.0.0-experimental-fe362df",
4
4
  "description": "Neptune React components",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
package/src/i18n/en.json CHANGED
@@ -15,6 +15,7 @@
15
15
  "neptune.DateLookup.twentyYears": "20 years",
16
16
  "neptune.DateLookup.year": "year",
17
17
  "neptune.FlowNavigation.back": "back to previous step",
18
+ "neptune.Info.ariaLabel": "More information",
18
19
  "neptune.Link.opensInNewTab": "(opens in new tab)",
19
20
  "neptune.MoneyInput.Select.placeholder": "Select an option...",
20
21
  "neptune.Select.searchPlaceholder": "Search...",
@@ -0,0 +1,8 @@
1
+ import { defineMessages } from 'react-intl';
2
+
3
+ export default defineMessages({
4
+ ariaLabel: {
5
+ id: 'neptune.Info.ariaLabel',
6
+ defaultMessage: 'More information',
7
+ },
8
+ });
@@ -3,11 +3,11 @@ import { act, render, fireEvent, waitFor, screen } from '../test-utils';
3
3
  import Info, { InfoPresentation } from '.';
4
4
 
5
5
  describe('Info', () => {
6
+ const defaultScreenReaderLabel = 'More information';
6
7
  const props = {
7
8
  content: 'content',
8
9
  className: 'className',
9
10
  title: 'title',
10
- 'aria-label': 'aria-label',
11
11
  };
12
12
 
13
13
  it('calls onClick on click event', async () => {
@@ -57,9 +57,15 @@ describe('Info', () => {
57
57
  });
58
58
  });
59
59
 
60
- const getTriggerButton = () => screen.queryByLabelText('aria-label');
61
- const getSvgIcon = () => document.querySelector('.tw-icon-help-circle > svg');
62
- const getPopover = () => screen.queryByRole('tooltip');
60
+ it('accepts custom label for screen readers', () => {
61
+ const customScreenReaderLabel = 'Custom message';
62
+ render(<Info {...props} aria-label={customScreenReaderLabel} />);
63
+
64
+ expect(screen.getByLabelText(customScreenReaderLabel)).toBeInTheDocument();
65
+ });
66
+
67
+ const getTriggerButton = () => screen.queryByLabelText(defaultScreenReaderLabel);
68
+ const getPopover = () => screen.queryByRole('dialog');
63
69
  const getModal = () => screen.queryByRole('dialog');
64
70
 
65
71
  const openPopover = async () => {
package/src/info/Info.tsx CHANGED
@@ -1,15 +1,17 @@
1
1
  import { QuestionMarkCircle as HelpCircleIcon } from '@transferwise/icons';
2
2
  import classNames from 'classnames';
3
3
  import { useState } from 'react';
4
+ import { useIntl } from 'react-intl';
4
5
 
5
6
  import { Size, Position, SizeSmall, SizeLarge } from '../common';
6
7
  import Modal from '../modal';
7
8
  import Popover from '../popover';
8
9
 
10
+ import messages from './Info.messages';
9
11
  import { InfoPresentation } from './infoPresentations';
10
12
 
11
13
  export interface Props {
12
- 'aria-label': string;
14
+ 'aria-label'?: string;
13
15
  /**
14
16
  * Extra classes applied to Info
15
17
  */
@@ -47,8 +49,9 @@ const Info = ({
47
49
  'aria-label': ariaLabel,
48
50
  preferredPlacement = Position.BOTTOM,
49
51
  }: Props) => {
52
+ const intl = useIntl();
50
53
  const [open, setOpen] = useState(false);
51
-
54
+ ariaLabel ??= intl.formatMessage(messages.ariaLabel);
52
55
  const isModal = presentation === InfoPresentation.MODAL;
53
56
  const isSmall = size === Size.SMALL;
54
57
 
@@ -39,7 +39,7 @@ const Popover = ({ children, className, content, preferredPlacement, title }) =>
39
39
  <div
40
40
  className={isModern ? 'np-popover__content np-text-default-body' : 'np-popover__content'}
41
41
  aria-hidden={!open}
42
- role="tooltip"
42
+ role="dialog"
43
43
  >
44
44
  {title && (
45
45
  <Title type={Typography.TITLE_BODY} className="m-b-1">
@@ -14,7 +14,7 @@ exports[`Popover on desktop renders when is open 1`] = `
14
14
  <div
15
15
  aria-hidden="false"
16
16
  class="np-popover__content"
17
- role="tooltip"
17
+ role="dialog"
18
18
  >
19
19
  <h4
20
20
  class="np-text-title-body m-b-1"
@@ -89,7 +89,7 @@ exports[`Popover on mobile renders when is open 1`] = `
89
89
  <div
90
90
  aria-hidden="false"
91
91
  class="np-popover__content"
92
- role="tooltip"
92
+ role="dialog"
93
93
  >
94
94
  <h4
95
95
  class="np-text-title-body m-b-1"
@@ -100,7 +100,6 @@ const Summary = ({
100
100
  help,
101
101
  icon,
102
102
  illustration = null,
103
- // @ts-expect-error help is old and deprecated prop
104
103
  info = help,
105
104
  status,
106
105
  title,
@@ -114,3 +114,9 @@ export const Basic = () => {
114
114
  />
115
115
  );
116
116
  };
117
+
118
+ Basic.play = async ({ canvasElement }) => {
119
+ const canvas = within(canvasElement);
120
+ userEvent.type(canvas.getByRole('combobox'), 'abc');
121
+ userEvent.type(canvas.getByRole('combobox'), '{arrowDown}');
122
+ };
@@ -16,7 +16,7 @@ const Option = (props) => {
16
16
  'tw-dropdown-item--focused': selected,
17
17
  })}
18
18
  >
19
- <a className="dropdown-item" href="#" onClick={onClick}>
19
+ <a className="dropdown-item" href="#" tabIndex={-1} onClick={onClick}>
20
20
  <span>{hightlight(label, query)}</span>
21
21
  {note && <span className="np-text-body-default m-l-1">{note}</span>}
22
22
  {secondary && <span className="np-text-body-default text-ellipsis">{secondary}</span>}