@transferwise/components 46.64.0 → 46.66.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 (62) hide show
  1. package/build/common/bottomSheet/BottomSheet.js +8 -2
  2. package/build/common/bottomSheet/BottomSheet.js.map +1 -1
  3. package/build/common/bottomSheet/BottomSheet.mjs +8 -2
  4. package/build/common/bottomSheet/BottomSheet.mjs.map +1 -1
  5. package/build/decision/Decision.js +4 -0
  6. package/build/decision/Decision.js.map +1 -1
  7. package/build/decision/Decision.mjs +4 -0
  8. package/build/decision/Decision.mjs.map +1 -1
  9. package/build/drawer/Drawer.js +5 -3
  10. package/build/drawer/Drawer.js.map +1 -1
  11. package/build/drawer/Drawer.mjs +5 -3
  12. package/build/drawer/Drawer.mjs.map +1 -1
  13. package/build/flowNavigation/FlowNavigation.js +1 -1
  14. package/build/flowNavigation/FlowNavigation.js.map +1 -1
  15. package/build/flowNavigation/FlowNavigation.mjs +1 -1
  16. package/build/flowNavigation/FlowNavigation.mjs.map +1 -1
  17. package/build/flowNavigation/animatedLabel/AnimatedLabel.js +89 -15
  18. package/build/flowNavigation/animatedLabel/AnimatedLabel.js.map +1 -1
  19. package/build/flowNavigation/animatedLabel/AnimatedLabel.mjs +90 -16
  20. package/build/flowNavigation/animatedLabel/AnimatedLabel.mjs.map +1 -1
  21. package/build/main.css +10 -1
  22. package/build/styles/flowNavigation/animatedLabel/AnimatedLabel.css +10 -1
  23. package/build/styles/main.css +10 -1
  24. package/build/switch/Switch.js +3 -27
  25. package/build/switch/Switch.js.map +1 -1
  26. package/build/switch/Switch.mjs +3 -27
  27. package/build/switch/Switch.mjs.map +1 -1
  28. package/build/tile/Tile.js +2 -0
  29. package/build/tile/Tile.js.map +1 -1
  30. package/build/tile/Tile.mjs +2 -0
  31. package/build/tile/Tile.mjs.map +1 -1
  32. package/build/types/common/bottomSheet/BottomSheet.d.ts +3 -3
  33. package/build/types/common/bottomSheet/BottomSheet.d.ts.map +1 -1
  34. package/build/types/decision/Decision.d.ts +1 -0
  35. package/build/types/decision/Decision.d.ts.map +1 -1
  36. package/build/types/drawer/Drawer.d.ts +4 -3
  37. package/build/types/drawer/Drawer.d.ts.map +1 -1
  38. package/build/types/flowNavigation/FlowNavigation.d.ts.map +1 -1
  39. package/build/types/flowNavigation/animatedLabel/AnimatedLabel.d.ts +3 -3
  40. package/build/types/flowNavigation/animatedLabel/AnimatedLabel.d.ts.map +1 -1
  41. package/build/types/switch/Switch.d.ts.map +1 -1
  42. package/build/types/tile/Tile.d.ts +3 -1
  43. package/build/types/tile/Tile.d.ts.map +1 -1
  44. package/package.json +1 -1
  45. package/src/common/bottomSheet/BottomSheet.tsx +13 -4
  46. package/src/decision/Decision.spec.tsx +166 -0
  47. package/src/decision/Decision.story.tsx +208 -202
  48. package/src/decision/Decision.tsx +26 -2
  49. package/src/drawer/Drawer.tsx +7 -5
  50. package/src/flowNavigation/FlowNavigation.story.js +69 -17
  51. package/src/flowNavigation/FlowNavigation.tsx +1 -5
  52. package/src/flowNavigation/animatedLabel/AnimatedLabel.css +10 -1
  53. package/src/flowNavigation/animatedLabel/AnimatedLabel.less +10 -1
  54. package/src/flowNavigation/animatedLabel/AnimatedLabel.spec.js +64 -27
  55. package/src/flowNavigation/animatedLabel/AnimatedLabel.tsx +102 -20
  56. package/src/main.css +10 -1
  57. package/src/switch/Switch.story.tsx +4 -7
  58. package/src/switch/Switch.tsx +1 -24
  59. package/src/switch/__snapshots__/Switch.spec.tsx.snap +2 -44
  60. package/src/tile/Tile.tsx +4 -0
  61. package/src/decision/Decision.spec.js +0 -127
  62. package/src/flowNavigation/animatedLabel/__snapshots__/AnimatedLabel.spec.js.snap +0 -25
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../../src/common/bottomSheet/BottomSheet.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,iBAAiB,EACjB,cAAc,EAIf,MAAM,OAAO,CAAC;AAOf,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAa7C,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,CAC9C;IACE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,KAAK,IAAI,CAAC;IAClD,IAAI,EAAE,OAAO,CAAC;CACf,GAAG,WAAW,CAChB,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,WAAW,UAAW,gBAAgB,gCAoL3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../../src/common/bottomSheet/BottomSheet.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,cAAc,EACd,iBAAiB,EACjB,cAAc,EAIf,MAAM,OAAO,CAAC;AAOf,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAa7C,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,CAC9C;IACE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,KAAK,IAAI,CAAC;IAClD,IAAI,EAAE,OAAO,CAAC;CACf,GAAG,WAAW,GACb,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,CACnE,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,WAAW,uBAAmC,gBAAgB,gCA2LnE,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { SizeSmall, SizeMedium } from '../common';
2
2
  interface DecisionOption {
3
+ 'aria-label'?: string;
3
4
  description?: React.ReactNode;
4
5
  disabled?: boolean;
5
6
  href?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Decision.d.ts","sourceRoot":"","sources":["../../../src/decision/Decision.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAoB,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAKpE,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,KAAK,CAAC,yBAAyB,CAAC;IACzC,KAAK,EAAE;QACL,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;QACvB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;KACvB,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC1D,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,oBAAY,oBAAoB;IAC9B,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,eAAe,oBAAoB;CACpC;AAED,oBAAY,YAAY;IACtB,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IACnC,iDAAiD;IACjD,YAAY,CAAC,EAAE,GAAG,oBAAoB,EAAE,CAAC;IACzC,iDAAiD;IACjD,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IAC9B,+HAA+H;IAC/H,IAAI,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC;IAEzB,qDAAqD;IACrD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,sEAAsE;IACtE,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,QAAA,MAAM,QAAQ,sFAOX,aAAa,uCA4Ef,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Decision.d.ts","sourceRoot":"","sources":["../../../src/decision/Decision.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAoB,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAKpE,UAAU,cAAc;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,KAAK,CAAC,yBAAyB,CAAC;IACzC,KAAK,EAAE;QACL,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;QACvB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;KACvB,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC1D,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,oBAAY,oBAAoB;IAC9B,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,eAAe,oBAAoB;CACpC;AAED,oBAAY,YAAY;IACtB,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IACnC,iDAAiD;IACjD,YAAY,CAAC,EAAE,GAAG,oBAAoB,EAAE,CAAC;IACzC,iDAAiD;IACjD,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IAC9B,+HAA+H;IAC/H,IAAI,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC;IAEzB,qDAAqD;IACrD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,sEAAsE;IACtE,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,QAAA,MAAM,QAAQ,sFAOX,aAAa,uCAmGf,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1,5 +1,6 @@
1
+ import { HTMLAttributes } from 'react';
1
2
  import { Position } from '../common';
2
- export interface DrawerProps {
3
+ export type DrawerProps = {
3
4
  /** The content to appear in the drawer body. */
4
5
  children?: React.ReactNode;
5
6
  className?: string;
@@ -13,6 +14,6 @@ export interface DrawerProps {
13
14
  position?: `${Position.LEFT | Position.RIGHT | Position.BOTTOM}`;
14
15
  /** The action to perform on close click. */
15
16
  onClose?: (event: KeyboardEvent | React.MouseEvent) => void;
16
- }
17
- export default function Drawer({ children, className, footerContent, headerTitle, onClose, open, position, }: DrawerProps): import("react").JSX.Element;
17
+ } & Pick<HTMLAttributes<HTMLDivElement>, 'role' | 'aria-labelledby'>;
18
+ export default function Drawer({ children, className, footerContent, headerTitle, onClose, open, position, role, 'aria-labelledby': ariaLabelledBy, }: DrawerProps): import("react").JSX.Element;
18
19
  //# sourceMappingURL=Drawer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../src/drawer/Drawer.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAc,MAAM,WAAW,CAAC;AASjD,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,kDAAkD;IAClD,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,+CAA+C;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uGAAuG;IACvG,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;IACjE,4CAA4C;IAC5C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;CAC7D;AAED,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,QAAQ,EACR,SAAS,EACT,aAAa,EACb,WAAW,EACX,OAAO,EACP,IAAY,EACZ,QAAkB,GACnB,EAAE,WAAW,+BAuCb"}
1
+ {"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../src/drawer/Drawer.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAqB,MAAM,OAAO,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAc,MAAM,WAAW,CAAC;AASjD,MAAM,MAAM,WAAW,GAAG;IACxB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,kDAAkD;IAClD,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,+CAA+C;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uGAAuG;IACvG,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;IACjE,4CAA4C;IAC5C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;CAC7D,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,CAAC;AAErE,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,QAAQ,EACR,SAAS,EACT,aAAa,EACb,WAAW,EACX,OAAO,EACP,IAAY,EACZ,QAAkB,EAClB,IAAe,EACf,iBAAiB,EAAE,cAAc,GAClC,EAAE,WAAW,+BAuCb"}
@@ -1 +1 @@
1
- {"version":3,"file":"FlowNavigation.d.ts","sourceRoot":"","sources":["../../../src/flowNavigation/FlowNavigation.tsx"],"names":[],"mappings":"AAOA,OAAgB,EAAE,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAOxD,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,sIAAsI;IACtI,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,wGAAwG;IACxG,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;CACxB;AAED,QAAA,MAAM,cAAc,kEAQjB,mBAAmB,gCAkErB,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"FlowNavigation.d.ts","sourceRoot":"","sources":["../../../src/flowNavigation/FlowNavigation.tsx"],"names":[],"mappings":"AAOA,OAAgB,EAAE,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAOxD,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,sIAAsI;IACtI,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,wGAAwG;IACxG,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;CACxB;AAED,QAAA,MAAM,cAAc,kEAQjB,mBAAmB,gCA8DrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,9 +1,9 @@
1
- import React from 'react';
1
+ import type { Step } from '../../stepper/Stepper';
2
2
  export interface AnimatedLabelProps {
3
3
  activeLabel: number;
4
4
  className?: string;
5
- labels: readonly React.ReactNode[];
5
+ steps: readonly Step[];
6
6
  }
7
- declare const AnimatedLabel: ({ activeLabel, className, labels }: AnimatedLabelProps) => React.JSX.Element;
7
+ declare const AnimatedLabel: ({ activeLabel, className, steps }: AnimatedLabelProps) => import("react").JSX.Element;
8
8
  export default AnimatedLabel;
9
9
  //# sourceMappingURL=AnimatedLabel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnimatedLabel.d.ts","sourceRoot":"","sources":["../../../../src/flowNavigation/animatedLabel/AnimatedLabel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,KAAK,CAAC,SAAS,EAAE,CAAC;CACpC;AAED,QAAA,MAAM,aAAa,uCAAwC,kBAAkB,sBAkB5E,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"AnimatedLabel.d.ts","sourceRoot":"","sources":["../../../../src/flowNavigation/animatedLabel/AnimatedLabel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAOlD,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;CACxB;AAED,QAAA,MAAM,aAAa,sCAAuC,kBAAkB,gCAgG3E,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/switch/Switch.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAwB,UAAU,EAAE,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG;IACtC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yGAAyG;IACzG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;CACxD,CAAC;AAEF,QAAA,MAAM,MAAM,UAAW,WAAW,gCAsEjC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/switch/Switch.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAwB,UAAU,EAAE,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG;IACtC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yGAAyG;IACzG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;CACxD,CAAC;AAEF,QAAA,MAAM,MAAM,UAAW,WAAW,gCAiDjC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { Size } from '../common';
2
2
  export interface TileProps {
3
3
  /** Classes to apply to the Tile container */
4
+ /** A label for the accordion item, used for accessibility purposes. */
5
+ 'aria-label'?: string;
4
6
  className?: string;
5
7
  description?: React.ReactNode;
6
8
  disabled?: boolean;
@@ -14,5 +16,5 @@ export interface TileProps {
14
16
  size?: `${Size.SMALL | Size.MEDIUM}`;
15
17
  title: React.ReactNode;
16
18
  }
17
- export default function Tile({ className, description, disabled, href, target, media, onClick, size, title, }: TileProps): import("react").JSX.Element;
19
+ export default function Tile({ 'aria-label': ariaLabel, className, description, disabled, href, target, media, onClick, size, title, }: TileProps): import("react").JSX.Element;
18
20
  //# sourceMappingURL=Tile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tile.d.ts","sourceRoot":"","sources":["../../../src/tile/Tile.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAc,MAAM,WAAW,CAAC;AAG7C,MAAM,WAAW,SAAS;IACxB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,KAAK,CAAC,yBAAyB,CAAC;IACzC,qCAAqC;IACrC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACpF,+BAA+B;IAC/B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IACrC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAC3B,SAAS,EACT,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,KAAK,EACL,OAAO,EACP,IAAW,EACX,KAAK,GACN,EAAE,SAAS,+BA2CX"}
1
+ {"version":3,"file":"Tile.d.ts","sourceRoot":"","sources":["../../../src/tile/Tile.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAc,MAAM,WAAW,CAAC;AAG7C,MAAM,WAAW,SAAS;IACxB,6CAA6C;IAC7C,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,KAAK,CAAC,yBAAyB,CAAC;IACzC,qCAAqC;IACrC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACpF,+BAA+B;IAC/B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IACrC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAC3B,YAAY,EAAE,SAAS,EACvB,SAAS,EACT,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,KAAK,EACL,OAAO,EACP,IAAW,EACX,KAAK,GACN,EAAE,SAAS,+BA4CX"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@transferwise/components",
3
- "version": "46.64.0",
3
+ "version": "46.66.0",
4
4
  "description": "Neptune React components",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -1,6 +1,7 @@
1
1
  import { clsx } from 'clsx';
2
2
  import {
3
3
  CSSProperties,
4
+ HTMLAttributes,
4
5
  PropsWithChildren,
5
6
  SyntheticEvent,
6
7
  useContext,
@@ -30,7 +31,8 @@ export type BottomSheetProps = PropsWithChildren<
30
31
  {
31
32
  onClose?: (event: Event | SyntheticEvent) => void;
32
33
  open: boolean;
33
- } & CommonProps
34
+ } & CommonProps &
35
+ Pick<HTMLAttributes<HTMLDivElement>, 'role' | 'aria-labelledby'>
34
36
  >;
35
37
 
36
38
  /**
@@ -39,7 +41,7 @@ export type BottomSheetProps = PropsWithChildren<
39
41
  * Neptune Web: https://transferwise.github.io/neptune-web/components/overlays/BottomSheet
40
42
  *
41
43
  */
42
- const BottomSheet = (props: BottomSheetProps) => {
44
+ const BottomSheet = ({ role = 'dialog', ...props }: BottomSheetProps) => {
43
45
  const bottomSheetReference = useRef<HTMLDivElement>(null);
44
46
  const topBarReference = useRef<HTMLDivElement>(null);
45
47
  const contentReference = useRef<HTMLDivElement>(null);
@@ -181,7 +183,13 @@ const BottomSheet = (props: BottomSheetProps) => {
181
183
  const overlayId = useContext(OverlayIdContext);
182
184
 
183
185
  return is400Zoom ? (
184
- <Drawer open={props.open} className={props.className} onClose={close}>
186
+ <Drawer
187
+ aria-labelledby={props['aria-labelledby']}
188
+ role={role}
189
+ open={props.open}
190
+ className={props.className}
191
+ onClose={close}
192
+ >
185
193
  {props.children}
186
194
  </Drawer>
187
195
  ) : (
@@ -195,7 +203,8 @@ const BottomSheet = (props: BottomSheetProps) => {
195
203
  {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}
196
204
  <div
197
205
  id={overlayId}
198
- role="dialog"
206
+ aria-labelledby={props['aria-labelledby']}
207
+ role={role}
199
208
  aria-modal
200
209
  onTouchStart={onSwipeStart}
201
210
  onTouchMove={onSwipeMove}
@@ -0,0 +1,166 @@
1
+ import Avatar from '../avatar';
2
+ import { Breakpoint, Size } from '../common';
3
+ import { mockMatchMedia } from '../mocks';
4
+ import { render, screen } from '../test-utils';
5
+
6
+ import Decision, { DecisionPresentation, DecisionType } from '.';
7
+ import { DecisionProps } from './Decision';
8
+
9
+ mockMatchMedia(jest);
10
+
11
+ describe('Decision', () => {
12
+ const commonProps: DecisionProps = {
13
+ options: [
14
+ {
15
+ media: {
16
+ list: <Avatar type="initials">HM</Avatar>,
17
+ block: <img src="img.jpg" alt="alt" />,
18
+ },
19
+ href: '#href',
20
+ title: 'title',
21
+ description: 'description',
22
+ 'aria-label': 'A label',
23
+ onClick: jest.fn(),
24
+ },
25
+ ],
26
+ presentation: DecisionPresentation.LIST_BLOCK,
27
+ type: DecisionType.NAVIGATION,
28
+ };
29
+
30
+ const initialInnerWidth = window.innerWidth;
31
+ const resetClientWidth = (width: number) => {
32
+ window.innerWidth = width;
33
+ };
34
+
35
+ afterAll(() => {
36
+ window.innerWidth = initialInnerWidth;
37
+ });
38
+
39
+ beforeEach(() => {
40
+ resetClientWidth(Breakpoint.EXTRA_SMALL - 1);
41
+ });
42
+
43
+ describe(`when presentation is ${DecisionPresentation.LIST_BLOCK}`, () => {
44
+ const props = { ...commonProps };
45
+
46
+ it('renders only Navigation Option before first breakpoint', () => {
47
+ render(<Decision {...props} />);
48
+ const element = screen.getByLabelText('A label');
49
+ expect(element).toBeInTheDocument();
50
+
51
+ expectElementToBeNavigationOption(element);
52
+ expectElementNotToBeTile(element);
53
+ });
54
+
55
+ it('renders only Tile after first breakpoint', () => {
56
+ resetClientWidth(Breakpoint.SMALL);
57
+
58
+ render(<Decision {...props} />);
59
+ const element = screen.getByLabelText('A label');
60
+ expect(element).toBeInTheDocument();
61
+
62
+ expectElementNotToBeNavigationOption(element);
63
+ expectElementToBeTile(element);
64
+ expectElementNotToBeSmallTile(element);
65
+ });
66
+ });
67
+
68
+ describe(`when presentation is ${DecisionPresentation.LIST_BLOCK_GRID}`, () => {
69
+ const props = { ...commonProps, presentation: DecisionPresentation.LIST_BLOCK_GRID };
70
+
71
+ it('renders only Navigation Option before first breakpoint', () => {
72
+ render(<Decision {...props} />);
73
+ const element = screen.getByLabelText('A label');
74
+ expect(element).toBeInTheDocument();
75
+
76
+ expectElementToBeNavigationOption(element);
77
+ expectElementNotToBeTile(element);
78
+ });
79
+
80
+ it('renders only Tile after first breakpoint', () => {
81
+ resetClientWidth(Breakpoint.SMALL);
82
+
83
+ render(<Decision {...props} />);
84
+ const element = screen.getByLabelText('A label');
85
+ expect(element).toBeInTheDocument();
86
+
87
+ expectElementNotToBeNavigationOption(element);
88
+ expectElementToBeTile(element);
89
+ expectElementNotToBeSmallTile(element);
90
+ });
91
+
92
+ it('renders container as a grid', () => {
93
+ resetClientWidth(Breakpoint.SMALL);
94
+
95
+ render(<Decision {...props} />);
96
+ const element = screen.getByLabelText('A label').parentElement;
97
+
98
+ expect(element).toHaveClass('np-decision');
99
+ expect(element).toHaveClass('np-decision--grid');
100
+ expect(element).toHaveClass('flex-wrap');
101
+ });
102
+ });
103
+
104
+ describe(`when presentation is ${DecisionPresentation.LIST_BLOCK} and size is Small`, () => {
105
+ const props: DecisionProps = {
106
+ ...commonProps,
107
+ presentation: DecisionPresentation.LIST_BLOCK,
108
+ size: Size.SMALL,
109
+ };
110
+
111
+ it('renders only Navigation Option before breakpoint', () => {
112
+ render(<Decision {...props} />);
113
+ const element = screen.getByLabelText('A label');
114
+ expect(element).toBeInTheDocument();
115
+
116
+ expectElementToBeNavigationOption(element);
117
+ expectElementNotToBeTile(element);
118
+ });
119
+
120
+ it('renders Small Tile after breakpoint', () => {
121
+ resetClientWidth(Breakpoint.EXTRA_SMALL);
122
+
123
+ render(<Decision {...props} />);
124
+ const element = screen.getByLabelText('A label');
125
+ expect(element).toBeInTheDocument();
126
+
127
+ expectElementNotToBeNavigationOption(element);
128
+ expectElementToBeTile(element);
129
+ expectElementToBeSmallTile(element);
130
+ });
131
+ });
132
+
133
+ describe(`when presentation is ${DecisionPresentation.LIST}`, () => {
134
+ const props = { ...commonProps, presentation: DecisionPresentation.LIST };
135
+
136
+ it('renders Navigation Option before breakpoint', () => {
137
+ render(<Decision {...props} />);
138
+ const element = screen.getByLabelText('A label');
139
+ expect(element).toBeInTheDocument();
140
+
141
+ expectElementToBeNavigationOption(element);
142
+ expectElementNotToBeTile(element);
143
+ });
144
+ });
145
+
146
+ const expectElementToBeNavigationOption = (element: HTMLElement) => {
147
+ expect(element).toHaveClass('np-navigation-option');
148
+ };
149
+ const expectElementNotToBeNavigationOption = (element: HTMLElement) => {
150
+ expect(element).not.toHaveClass('np-navigation-option');
151
+ };
152
+
153
+ const expectElementToBeTile = (element: HTMLElement) => {
154
+ expect(element).toHaveClass('np-tile');
155
+ };
156
+ const expectElementNotToBeTile = (element: HTMLElement) => {
157
+ expect(element).not.toHaveClass('np-tile');
158
+ };
159
+
160
+ const expectElementToBeSmallTile = (element: HTMLElement) => {
161
+ expect(element).toHaveClass('np-tile--small');
162
+ };
163
+ const expectElementNotToBeSmallTile = (element: HTMLElement) => {
164
+ expect(element).not.toHaveClass('np-tile--small');
165
+ };
166
+ });