@transferwise/components 0.0.0-experimental-11c630d → 0.0.0-experimental-50dbef7

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 (59) hide show
  1. package/build/common/card/Card.js.map +1 -1
  2. package/build/common/card/Card.mjs.map +1 -1
  3. package/build/field/Field.js +1 -1
  4. package/build/field/Field.js.map +1 -1
  5. package/build/field/Field.mjs +1 -1
  6. package/build/field/Field.mjs.map +1 -1
  7. package/build/index.js +1 -2
  8. package/build/index.js.map +1 -1
  9. package/build/index.mjs +1 -1
  10. package/build/moneyInput/MoneyInput.js +3 -8
  11. package/build/moneyInput/MoneyInput.js.map +1 -1
  12. package/build/moneyInput/MoneyInput.mjs +3 -8
  13. package/build/moneyInput/MoneyInput.mjs.map +1 -1
  14. package/build/promoCard/PromoCardGroup.js.map +1 -1
  15. package/build/promoCard/PromoCardGroup.mjs.map +1 -1
  16. package/build/promoCard/PromoCardIndicator.js.map +1 -1
  17. package/build/promoCard/PromoCardIndicator.mjs.map +1 -1
  18. package/build/sticky/Sticky.js.map +1 -1
  19. package/build/sticky/Sticky.mjs.map +1 -1
  20. package/build/types/common/card/Card.d.ts +1 -1
  21. package/build/types/index.d.ts +0 -4
  22. package/build/types/index.d.ts.map +1 -1
  23. package/build/types/moneyInput/MoneyInput.d.ts +3 -7
  24. package/build/types/moneyInput/MoneyInput.d.ts.map +1 -1
  25. package/build/types/promoCard/PromoCardIndicator.d.ts +1 -1
  26. package/build/types/sticky/Sticky.d.ts +1 -1
  27. package/build/types/uploadInput/uploadItem/UploadItem.d.ts +1 -1
  28. package/build/types/uploadInput/uploadItem/UploadItem.d.ts.map +1 -1
  29. package/build/uploadInput/uploadItem/UploadItem.js.map +1 -1
  30. package/build/uploadInput/uploadItem/UploadItem.mjs.map +1 -1
  31. package/package.json +3 -3
  32. package/src/common/card/Card.tsx +1 -1
  33. package/src/field/Field.spec.tsx +1 -1
  34. package/src/field/Field.story.tsx +19 -8
  35. package/src/field/Field.tsx +1 -1
  36. package/src/index.ts +2 -5
  37. package/src/moneyInput/MoneyInput.spec.js +6 -19
  38. package/src/moneyInput/MoneyInput.story.tsx +9 -7
  39. package/src/moneyInput/MoneyInput.tsx +5 -8
  40. package/src/promoCard/PromoCardGroup.tsx +1 -1
  41. package/src/promoCard/PromoCardIndicator.tsx +1 -1
  42. package/src/sticky/Sticky.tsx +1 -1
  43. package/src/uploadInput/uploadItem/UploadItem.tsx +1 -1
  44. package/build/types/withId/index.d.ts +0 -3
  45. package/build/types/withId/index.d.ts.map +0 -1
  46. package/build/types/withId/story/source.d.ts +0 -2
  47. package/build/types/withId/story/source.d.ts.map +0 -1
  48. package/build/types/withId/withId.d.ts +0 -17
  49. package/build/types/withId/withId.d.ts.map +0 -1
  50. package/build/withId/withId.js +0 -19
  51. package/build/withId/withId.js.map +0 -1
  52. package/build/withId/withId.mjs +0 -17
  53. package/build/withId/withId.mjs.map +0 -1
  54. package/src/withId/index.ts +0 -2
  55. package/src/withId/story/source.tsx +0 -22
  56. package/src/withId/withId.docs.mdx +0 -24
  57. package/src/withId/withId.spec.tsx +0 -26
  58. package/src/withId/withId.story.tsx +0 -38
  59. package/src/withId/withId.tsx +0 -29
@@ -1 +1 @@
1
- {"version":3,"file":"Card.js","sources":["../../../src/common/card/Card.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { MouseEvent, type ReactNode, forwardRef, useRef } from 'react';\n\nimport { CloseButton } from '../closeButton';\nimport { stopPropagation } from '../domHelpers';\n\nexport interface CardProps {\n /** Content to display inside Card. */\n children: ReactNode;\n\n /** Optional prop to specify classNames onto the Card */\n className?: string;\n\n /** Optional prop to specify the ID on to Card */\n id?: string;\n\n /** Specify whether the Card is disabled, or not */\n isDisabled?: boolean;\n\n /** Specify whether the Card is sized small or not */\n isSmall?: boolean;\n\n /** Optionally specify Card onDismiss function */\n onDismiss?: () => void;\n\n /** Optional prop to specify the ID used for testing */\n testId?: string;\n}\n\n/**\n * Card component.\n *\n * A card is a container for content that is used to group related information.\n * It can be used to display information in a structured way, and can be\n * customized with various props to suit different use cases.\n *\n * @param {Object} props - The component props.\n * @param {ReactNode} children - The content to display inside the card.\n * @param {string} className - Optional class name(s) to add to the card container.\n * @param {string} id - Optional ID to add to the card container.\n * @param {boolean} isDisabled - Whether the card is disabled or not.\n * @param {boolean} isSmall - Whether the card is small or not.\n * @param {(event_: MouseEvent<HTMLButtonElement>) => void} onDismiss - Optional function to call when the card is dismissed.\n * @param {string} testId - Optional ID to add to the card container for testing purposes.\n * @returns {JSX.Element} - The card component.\n * @example\n * <Card>\n * <p>Hello World!</p>\n * </Card>\n */\nconst Card = forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n children = null,\n id,\n isDisabled = false,\n isSmall = false,\n onDismiss,\n testId,\n ...props\n },\n ref,\n ) => {\n const closeButtonReference = useRef(null);\n\n return (\n <div\n ref={ref}\n className={clsx(\n 'np-Card',\n {\n 'np-Card--small': !!isSmall,\n 'is-disabled': !!isDisabled,\n },\n className,\n )}\n id={id}\n data-testid={testId}\n {...props}\n >\n {onDismiss && (\n <CloseButton\n ref={closeButtonReference}\n className=\"np-Card-closeButton\"\n size={isSmall ? 'sm' : 'md'}\n isDisabled={isDisabled}\n testId=\"close-button\"\n onClick={(e) => {\n stopPropagation(e);\n onDismiss();\n }}\n />\n )}\n {children}\n </div>\n );\n },\n);\n\nCard.displayName = 'Card';\n\nexport default Card;\n"],"names":["Card","forwardRef","className","children","id","isDisabled","isSmall","onDismiss","testId","props","ref","closeButtonReference","useRef","_jsxs","clsx","_jsx","CloseButton","size","onClick","e","stopPropagation","displayName"],"mappings":";;;;;;;;AAkDA,MAAMA,IAAI,gBAAGC,gBAAU,CACrB,CACE;EACEC,SAAS;AACTC,EAAAA,QAAQ,GAAG,IAAI;EACfC,EAAE;AACFC,EAAAA,UAAU,GAAG,KAAK;AAClBC,EAAAA,OAAO,GAAG,KAAK;EACfC,SAAS;EACTC,MAAM;EACN,GAAGC,KAAAA;AAAK,CACT,EACDC,GAAG,KACD;AACF,EAAA,MAAMC,oBAAoB,GAAGC,YAAM,CAAC,IAAI,CAAC,CAAA;AAEzC,EAAA,oBACEC,eAAA,CAAA,KAAA,EAAA;AACEH,IAAAA,GAAG,EAAEA,GAAI;AACTR,IAAAA,SAAS,EAAEY,SAAI,CACb,SAAS,EACT;MACE,gBAAgB,EAAE,CAAC,CAACR,OAAO;MAC3B,aAAa,EAAE,CAAC,CAACD,UAAAA;KAClB,EACDH,SAAS,CACT;AACFE,IAAAA,EAAE,EAAEA,EAAG;AACP,IAAA,aAAA,EAAaI,MAAO;AAAA,IAAA,GAChBC,KAAK;AAAAN,IAAAA,QAAA,EAERI,CAAAA,SAAS,iBACRQ,cAAA,CAACC,uBAAW,EAAA;AACVN,MAAAA,GAAG,EAAEC,oBAAqB;AAC1BT,MAAAA,SAAS,EAAC,qBAAqB;AAC/Be,MAAAA,IAAI,EAAEX,OAAO,GAAG,IAAI,GAAG,IAAK;AAC5BD,MAAAA,UAAU,EAAEA,UAAW;AACvBG,MAAAA,MAAM,EAAC,cAAc;MACrBU,OAAO,EAAGC,CAAC,IAAI;QACbC,gCAAe,CAACD,CAAC,CAAC,CAAA;AAClBZ,QAAAA,SAAS,EAAE,CAAA;AACb,OAAA;KACA,CACH,EACAJ,QAAQ,CAAA;AAAA,GACN,CAAC,CAAA;AAEV,CAAC,EACF;AAEDH,IAAI,CAACqB,WAAW,GAAG,MAAM;;;;"}
1
+ {"version":3,"file":"Card.js","sources":["../../../src/common/card/Card.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { MouseEvent, type ReactNode, forwardRef, useRef } from 'react';\n\nimport { CloseButton } from '../closeButton';\nimport { stopPropagation } from '../domHelpers';\n\nexport interface CardProps {\n /** Content to display inside Card. */\n children: ReactNode;\n\n /** Optional prop to specify classNames onto the Card */\n className?: string;\n\n /** Optional prop to specify the ID on to Card */\n id?: string;\n\n /** Specify whether the Card is disabled, or not */\n isDisabled?: boolean;\n\n /** Specify whether the Card is sized small or not */\n isSmall?: boolean;\n\n /** Optionally specify Card onDismiss function */\n onDismiss?: () => void;\n\n /** Optional prop to specify the ID used for testing */\n testId?: string;\n}\n\n/**\n * Card component.\n *\n * A card is a container for content that is used to group related information.\n * It can be used to display information in a structured way, and can be\n * customized with various props to suit different use cases.\n *\n * @param {Object} props - The component props.\n * @param {ReactNode} children - The content to display inside the card.\n * @param {string} className - Optional class name(s) to add to the card container.\n * @param {string} id - Optional ID to add to the card container.\n * @param {boolean} isDisabled - Whether the card is disabled or not.\n * @param {boolean} isSmall - Whether the card is small or not.\n * @param {(event_: MouseEvent<HTMLButtonElement>) => void} onDismiss - Optional function to call when the card is dismissed.\n * @param {string} testId - Optional ID to add to the card container for testing purposes.\n * @returns {React.JSX.Element} - The card component.\n * @example\n * <Card>\n * <p>Hello World!</p>\n * </Card>\n */\nconst Card = forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n children = null,\n id,\n isDisabled = false,\n isSmall = false,\n onDismiss,\n testId,\n ...props\n },\n ref,\n ) => {\n const closeButtonReference = useRef(null);\n\n return (\n <div\n ref={ref}\n className={clsx(\n 'np-Card',\n {\n 'np-Card--small': !!isSmall,\n 'is-disabled': !!isDisabled,\n },\n className,\n )}\n id={id}\n data-testid={testId}\n {...props}\n >\n {onDismiss && (\n <CloseButton\n ref={closeButtonReference}\n className=\"np-Card-closeButton\"\n size={isSmall ? 'sm' : 'md'}\n isDisabled={isDisabled}\n testId=\"close-button\"\n onClick={(e) => {\n stopPropagation(e);\n onDismiss();\n }}\n />\n )}\n {children}\n </div>\n );\n },\n);\n\nCard.displayName = 'Card';\n\nexport default Card;\n"],"names":["Card","forwardRef","className","children","id","isDisabled","isSmall","onDismiss","testId","props","ref","closeButtonReference","useRef","_jsxs","clsx","_jsx","CloseButton","size","onClick","e","stopPropagation","displayName"],"mappings":";;;;;;;;AAkDA,MAAMA,IAAI,gBAAGC,gBAAU,CACrB,CACE;EACEC,SAAS;AACTC,EAAAA,QAAQ,GAAG,IAAI;EACfC,EAAE;AACFC,EAAAA,UAAU,GAAG,KAAK;AAClBC,EAAAA,OAAO,GAAG,KAAK;EACfC,SAAS;EACTC,MAAM;EACN,GAAGC,KAAAA;AAAK,CACT,EACDC,GAAG,KACD;AACF,EAAA,MAAMC,oBAAoB,GAAGC,YAAM,CAAC,IAAI,CAAC,CAAA;AAEzC,EAAA,oBACEC,eAAA,CAAA,KAAA,EAAA;AACEH,IAAAA,GAAG,EAAEA,GAAI;AACTR,IAAAA,SAAS,EAAEY,SAAI,CACb,SAAS,EACT;MACE,gBAAgB,EAAE,CAAC,CAACR,OAAO;MAC3B,aAAa,EAAE,CAAC,CAACD,UAAAA;KAClB,EACDH,SAAS,CACT;AACFE,IAAAA,EAAE,EAAEA,EAAG;AACP,IAAA,aAAA,EAAaI,MAAO;AAAA,IAAA,GAChBC,KAAK;AAAAN,IAAAA,QAAA,EAERI,CAAAA,SAAS,iBACRQ,cAAA,CAACC,uBAAW,EAAA;AACVN,MAAAA,GAAG,EAAEC,oBAAqB;AAC1BT,MAAAA,SAAS,EAAC,qBAAqB;AAC/Be,MAAAA,IAAI,EAAEX,OAAO,GAAG,IAAI,GAAG,IAAK;AAC5BD,MAAAA,UAAU,EAAEA,UAAW;AACvBG,MAAAA,MAAM,EAAC,cAAc;MACrBU,OAAO,EAAGC,CAAC,IAAI;QACbC,gCAAe,CAACD,CAAC,CAAC,CAAA;AAClBZ,QAAAA,SAAS,EAAE,CAAA;AACb,OAAA;KACA,CACH,EACAJ,QAAQ,CAAA;AAAA,GACN,CAAC,CAAA;AAEV,CAAC,EACF;AAEDH,IAAI,CAACqB,WAAW,GAAG,MAAM;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Card.mjs","sources":["../../../src/common/card/Card.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { MouseEvent, type ReactNode, forwardRef, useRef } from 'react';\n\nimport { CloseButton } from '../closeButton';\nimport { stopPropagation } from '../domHelpers';\n\nexport interface CardProps {\n /** Content to display inside Card. */\n children: ReactNode;\n\n /** Optional prop to specify classNames onto the Card */\n className?: string;\n\n /** Optional prop to specify the ID on to Card */\n id?: string;\n\n /** Specify whether the Card is disabled, or not */\n isDisabled?: boolean;\n\n /** Specify whether the Card is sized small or not */\n isSmall?: boolean;\n\n /** Optionally specify Card onDismiss function */\n onDismiss?: () => void;\n\n /** Optional prop to specify the ID used for testing */\n testId?: string;\n}\n\n/**\n * Card component.\n *\n * A card is a container for content that is used to group related information.\n * It can be used to display information in a structured way, and can be\n * customized with various props to suit different use cases.\n *\n * @param {Object} props - The component props.\n * @param {ReactNode} children - The content to display inside the card.\n * @param {string} className - Optional class name(s) to add to the card container.\n * @param {string} id - Optional ID to add to the card container.\n * @param {boolean} isDisabled - Whether the card is disabled or not.\n * @param {boolean} isSmall - Whether the card is small or not.\n * @param {(event_: MouseEvent<HTMLButtonElement>) => void} onDismiss - Optional function to call when the card is dismissed.\n * @param {string} testId - Optional ID to add to the card container for testing purposes.\n * @returns {JSX.Element} - The card component.\n * @example\n * <Card>\n * <p>Hello World!</p>\n * </Card>\n */\nconst Card = forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n children = null,\n id,\n isDisabled = false,\n isSmall = false,\n onDismiss,\n testId,\n ...props\n },\n ref,\n ) => {\n const closeButtonReference = useRef(null);\n\n return (\n <div\n ref={ref}\n className={clsx(\n 'np-Card',\n {\n 'np-Card--small': !!isSmall,\n 'is-disabled': !!isDisabled,\n },\n className,\n )}\n id={id}\n data-testid={testId}\n {...props}\n >\n {onDismiss && (\n <CloseButton\n ref={closeButtonReference}\n className=\"np-Card-closeButton\"\n size={isSmall ? 'sm' : 'md'}\n isDisabled={isDisabled}\n testId=\"close-button\"\n onClick={(e) => {\n stopPropagation(e);\n onDismiss();\n }}\n />\n )}\n {children}\n </div>\n );\n },\n);\n\nCard.displayName = 'Card';\n\nexport default Card;\n"],"names":["Card","forwardRef","className","children","id","isDisabled","isSmall","onDismiss","testId","props","ref","closeButtonReference","useRef","_jsxs","clsx","_jsx","CloseButton","size","onClick","e","stopPropagation","displayName"],"mappings":";;;;;;AAkDA,MAAMA,IAAI,gBAAGC,UAAU,CACrB,CACE;EACEC,SAAS;AACTC,EAAAA,QAAQ,GAAG,IAAI;EACfC,EAAE;AACFC,EAAAA,UAAU,GAAG,KAAK;AAClBC,EAAAA,OAAO,GAAG,KAAK;EACfC,SAAS;EACTC,MAAM;EACN,GAAGC,KAAAA;AAAK,CACT,EACDC,GAAG,KACD;AACF,EAAA,MAAMC,oBAAoB,GAAGC,MAAM,CAAC,IAAI,CAAC,CAAA;AAEzC,EAAA,oBACEC,IAAA,CAAA,KAAA,EAAA;AACEH,IAAAA,GAAG,EAAEA,GAAI;AACTR,IAAAA,SAAS,EAAEY,IAAI,CACb,SAAS,EACT;MACE,gBAAgB,EAAE,CAAC,CAACR,OAAO;MAC3B,aAAa,EAAE,CAAC,CAACD,UAAAA;KAClB,EACDH,SAAS,CACT;AACFE,IAAAA,EAAE,EAAEA,EAAG;AACP,IAAA,aAAA,EAAaI,MAAO;AAAA,IAAA,GAChBC,KAAK;AAAAN,IAAAA,QAAA,EAERI,CAAAA,SAAS,iBACRQ,GAAA,CAACC,WAAW,EAAA;AACVN,MAAAA,GAAG,EAAEC,oBAAqB;AAC1BT,MAAAA,SAAS,EAAC,qBAAqB;AAC/Be,MAAAA,IAAI,EAAEX,OAAO,GAAG,IAAI,GAAG,IAAK;AAC5BD,MAAAA,UAAU,EAAEA,UAAW;AACvBG,MAAAA,MAAM,EAAC,cAAc;MACrBU,OAAO,EAAGC,CAAC,IAAI;QACbC,eAAe,CAACD,CAAC,CAAC,CAAA;AAClBZ,QAAAA,SAAS,EAAE,CAAA;AACb,OAAA;KACA,CACH,EACAJ,QAAQ,CAAA;AAAA,GACN,CAAC,CAAA;AAEV,CAAC,EACF;AAEDH,IAAI,CAACqB,WAAW,GAAG,MAAM;;;;"}
1
+ {"version":3,"file":"Card.mjs","sources":["../../../src/common/card/Card.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { MouseEvent, type ReactNode, forwardRef, useRef } from 'react';\n\nimport { CloseButton } from '../closeButton';\nimport { stopPropagation } from '../domHelpers';\n\nexport interface CardProps {\n /** Content to display inside Card. */\n children: ReactNode;\n\n /** Optional prop to specify classNames onto the Card */\n className?: string;\n\n /** Optional prop to specify the ID on to Card */\n id?: string;\n\n /** Specify whether the Card is disabled, or not */\n isDisabled?: boolean;\n\n /** Specify whether the Card is sized small or not */\n isSmall?: boolean;\n\n /** Optionally specify Card onDismiss function */\n onDismiss?: () => void;\n\n /** Optional prop to specify the ID used for testing */\n testId?: string;\n}\n\n/**\n * Card component.\n *\n * A card is a container for content that is used to group related information.\n * It can be used to display information in a structured way, and can be\n * customized with various props to suit different use cases.\n *\n * @param {Object} props - The component props.\n * @param {ReactNode} children - The content to display inside the card.\n * @param {string} className - Optional class name(s) to add to the card container.\n * @param {string} id - Optional ID to add to the card container.\n * @param {boolean} isDisabled - Whether the card is disabled or not.\n * @param {boolean} isSmall - Whether the card is small or not.\n * @param {(event_: MouseEvent<HTMLButtonElement>) => void} onDismiss - Optional function to call when the card is dismissed.\n * @param {string} testId - Optional ID to add to the card container for testing purposes.\n * @returns {React.JSX.Element} - The card component.\n * @example\n * <Card>\n * <p>Hello World!</p>\n * </Card>\n */\nconst Card = forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n children = null,\n id,\n isDisabled = false,\n isSmall = false,\n onDismiss,\n testId,\n ...props\n },\n ref,\n ) => {\n const closeButtonReference = useRef(null);\n\n return (\n <div\n ref={ref}\n className={clsx(\n 'np-Card',\n {\n 'np-Card--small': !!isSmall,\n 'is-disabled': !!isDisabled,\n },\n className,\n )}\n id={id}\n data-testid={testId}\n {...props}\n >\n {onDismiss && (\n <CloseButton\n ref={closeButtonReference}\n className=\"np-Card-closeButton\"\n size={isSmall ? 'sm' : 'md'}\n isDisabled={isDisabled}\n testId=\"close-button\"\n onClick={(e) => {\n stopPropagation(e);\n onDismiss();\n }}\n />\n )}\n {children}\n </div>\n );\n },\n);\n\nCard.displayName = 'Card';\n\nexport default Card;\n"],"names":["Card","forwardRef","className","children","id","isDisabled","isSmall","onDismiss","testId","props","ref","closeButtonReference","useRef","_jsxs","clsx","_jsx","CloseButton","size","onClick","e","stopPropagation","displayName"],"mappings":";;;;;;AAkDA,MAAMA,IAAI,gBAAGC,UAAU,CACrB,CACE;EACEC,SAAS;AACTC,EAAAA,QAAQ,GAAG,IAAI;EACfC,EAAE;AACFC,EAAAA,UAAU,GAAG,KAAK;AAClBC,EAAAA,OAAO,GAAG,KAAK;EACfC,SAAS;EACTC,MAAM;EACN,GAAGC,KAAAA;AAAK,CACT,EACDC,GAAG,KACD;AACF,EAAA,MAAMC,oBAAoB,GAAGC,MAAM,CAAC,IAAI,CAAC,CAAA;AAEzC,EAAA,oBACEC,IAAA,CAAA,KAAA,EAAA;AACEH,IAAAA,GAAG,EAAEA,GAAI;AACTR,IAAAA,SAAS,EAAEY,IAAI,CACb,SAAS,EACT;MACE,gBAAgB,EAAE,CAAC,CAACR,OAAO;MAC3B,aAAa,EAAE,CAAC,CAACD,UAAAA;KAClB,EACDH,SAAS,CACT;AACFE,IAAAA,EAAE,EAAEA,EAAG;AACP,IAAA,aAAA,EAAaI,MAAO;AAAA,IAAA,GAChBC,KAAK;AAAAN,IAAAA,QAAA,EAERI,CAAAA,SAAS,iBACRQ,GAAA,CAACC,WAAW,EAAA;AACVN,MAAAA,GAAG,EAAEC,oBAAqB;AAC1BT,MAAAA,SAAS,EAAC,qBAAqB;AAC/Be,MAAAA,IAAI,EAAEX,OAAO,GAAG,IAAI,GAAG,IAAK;AAC5BD,MAAAA,UAAU,EAAEA,UAAW;AACvBG,MAAAA,MAAM,EAAC,cAAc;MACrBU,OAAO,EAAGC,CAAC,IAAI;QACbC,eAAe,CAACD,CAAC,CAAC,CAAA;AAClBZ,QAAAA,SAAS,EAAE,CAAA;AACb,OAAA;KACA,CACH,EACAJ,QAAQ,CAAA;AAAA,GACN,CAAC,CAAA;AAEV,CAAC,EACF;AAEDH,IAAI,CAACqB,WAAW,GAAG,MAAM;;;;"}
@@ -11,7 +11,7 @@ var sentiment = require('../common/propsValues/sentiment.js');
11
11
  const Field = ({
12
12
  id,
13
13
  label,
14
- required = false,
14
+ required = true,
15
15
  message: propMessage,
16
16
  hint,
17
17
  description = hint,
@@ -1 +1 @@
1
- {"version":3,"file":"Field.js","sources":["../../src/field/Field.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useId } from 'react';\n\nimport { Sentiment } from '../common';\nimport InlineAlert from '../inlineAlert/InlineAlert';\nimport {\n FieldLabelIdContextProvider,\n InputDescribedByProvider,\n InputIdContextProvider,\n InputInvalidProvider,\n} from '../inputs/contexts';\nimport { Label } from '../label';\n\nexport type FieldProps = {\n /** `null` disables auto-generating the `id` attribute, falling back to nesting-based label association over setting `htmlFor` explicitly. */\n id?: string | null;\n /** Should be specified unless the wrapped control has its own labeling mechanism, e.g. `Checkbox`. */\n label?: React.ReactNode;\n required?: boolean;\n /** @deprecated use `description` prop instead */\n hint?: React.ReactNode;\n message?: React.ReactNode;\n description?: React.ReactNode;\n /** @deprecated use `message` and `type={Sentiment.NEGATIVE}` prop instead */\n error?: React.ReactNode;\n sentiment?: `${Sentiment.NEGATIVE | Sentiment.NEUTRAL | Sentiment.POSITIVE | Sentiment.WARNING}`;\n className?: string;\n children?: React.ReactNode;\n};\n\nexport const Field = ({\n id,\n label,\n required = false,\n message: propMessage,\n hint,\n description = hint,\n sentiment: propType = Sentiment.NEUTRAL,\n className,\n children,\n ...props\n}: FieldProps) => {\n const sentiment = props.error ? Sentiment.NEGATIVE : propType;\n const message = propMessage || props.error;\n const hasError = sentiment === Sentiment.NEGATIVE;\n\n const labelId = useId();\n\n const fallbackInputId = useId();\n const inputId = id !== null ? (id ?? fallbackInputId) : undefined;\n\n const messageId = useId();\n const descriptionId = useId();\n\n /**\n * form control can have multiple messages to describe it,\n * e.g the description underneath the label and inline alert\n */\n function ariaDescribedbyByIds() {\n const messageIds = [];\n if (description) {\n messageIds.push(descriptionId);\n }\n if (message) {\n messageIds.push(messageId);\n }\n return messageIds.length > 0 ? messageIds.join(' ') : undefined;\n }\n\n return (\n <FieldLabelIdContextProvider value={labelId}>\n <InputIdContextProvider value={inputId}>\n <InputDescribedByProvider value={ariaDescribedbyByIds()}>\n <InputInvalidProvider value={hasError}>\n <div\n className={clsx(\n 'np-field form-group d-block',\n {\n 'has-success': sentiment === Sentiment.POSITIVE,\n 'has-warning': sentiment === Sentiment.WARNING,\n 'has-error': hasError,\n 'has-info': sentiment === Sentiment.NEUTRAL,\n },\n className,\n )}\n >\n {label != null ? (\n <>\n <Label id={labelId} htmlFor={inputId}>\n {required ? label : <Label.Optional>{label}</Label.Optional>}\n </Label>\n <Label.Description id={descriptionId}>{description}</Label.Description>\n <div className=\"np-field-control\">{children}</div>\n </>\n ) : (\n children\n )}\n\n {message && (\n <InlineAlert type={sentiment} id={messageId}>\n {message}\n </InlineAlert>\n )}\n </div>\n </InputInvalidProvider>\n </InputDescribedByProvider>\n </InputIdContextProvider>\n </FieldLabelIdContextProvider>\n );\n};\n"],"names":["Field","id","label","required","message","propMessage","hint","description","sentiment","propType","Sentiment","NEUTRAL","className","children","props","error","NEGATIVE","hasError","labelId","useId","fallbackInputId","inputId","undefined","messageId","descriptionId","ariaDescribedbyByIds","messageIds","push","length","join","_jsx","FieldLabelIdContextProvider","value","InputIdContextProvider","InputDescribedByProvider","InputInvalidProvider","_jsxs","clsx","POSITIVE","WARNING","_Fragment","Label","htmlFor","Optional","Description","InlineAlert","type"],"mappings":"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"}
1
+ {"version":3,"file":"Field.js","sources":["../../src/field/Field.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useId } from 'react';\n\nimport { Sentiment } from '../common';\nimport InlineAlert from '../inlineAlert/InlineAlert';\nimport {\n FieldLabelIdContextProvider,\n InputDescribedByProvider,\n InputIdContextProvider,\n InputInvalidProvider,\n} from '../inputs/contexts';\nimport { Label } from '../label';\n\nexport type FieldProps = {\n /** `null` disables auto-generating the `id` attribute, falling back to nesting-based label association over setting `htmlFor` explicitly. */\n id?: string | null;\n /** Should be specified unless the wrapped control has its own labeling mechanism, e.g. `Checkbox`. */\n label?: React.ReactNode;\n required?: boolean;\n /** @deprecated use `description` prop instead */\n hint?: React.ReactNode;\n message?: React.ReactNode;\n description?: React.ReactNode;\n /** @deprecated use `message` and `type={Sentiment.NEGATIVE}` prop instead */\n error?: React.ReactNode;\n sentiment?: `${Sentiment.NEGATIVE | Sentiment.NEUTRAL | Sentiment.POSITIVE | Sentiment.WARNING}`;\n className?: string;\n children?: React.ReactNode;\n};\n\nexport const Field = ({\n id,\n label,\n required = true,\n message: propMessage,\n hint,\n description = hint,\n sentiment: propType = Sentiment.NEUTRAL,\n className,\n children,\n ...props\n}: FieldProps) => {\n const sentiment = props.error ? Sentiment.NEGATIVE : propType;\n const message = propMessage || props.error;\n const hasError = sentiment === Sentiment.NEGATIVE;\n\n const labelId = useId();\n\n const fallbackInputId = useId();\n const inputId = id !== null ? (id ?? fallbackInputId) : undefined;\n\n const messageId = useId();\n const descriptionId = useId();\n\n /**\n * form control can have multiple messages to describe it,\n * e.g the description underneath the label and inline alert\n */\n function ariaDescribedbyByIds() {\n const messageIds = [];\n if (description) {\n messageIds.push(descriptionId);\n }\n if (message) {\n messageIds.push(messageId);\n }\n return messageIds.length > 0 ? messageIds.join(' ') : undefined;\n }\n\n return (\n <FieldLabelIdContextProvider value={labelId}>\n <InputIdContextProvider value={inputId}>\n <InputDescribedByProvider value={ariaDescribedbyByIds()}>\n <InputInvalidProvider value={hasError}>\n <div\n className={clsx(\n 'np-field form-group d-block',\n {\n 'has-success': sentiment === Sentiment.POSITIVE,\n 'has-warning': sentiment === Sentiment.WARNING,\n 'has-error': hasError,\n 'has-info': sentiment === Sentiment.NEUTRAL,\n },\n className,\n )}\n >\n {label != null ? (\n <>\n <Label id={labelId} htmlFor={inputId}>\n {required ? label : <Label.Optional>{label}</Label.Optional>}\n </Label>\n <Label.Description id={descriptionId}>{description}</Label.Description>\n <div className=\"np-field-control\">{children}</div>\n </>\n ) : (\n children\n )}\n\n {message && (\n <InlineAlert type={sentiment} id={messageId}>\n {message}\n </InlineAlert>\n )}\n </div>\n </InputInvalidProvider>\n </InputDescribedByProvider>\n </InputIdContextProvider>\n </FieldLabelIdContextProvider>\n );\n};\n"],"names":["Field","id","label","required","message","propMessage","hint","description","sentiment","propType","Sentiment","NEUTRAL","className","children","props","error","NEGATIVE","hasError","labelId","useId","fallbackInputId","inputId","undefined","messageId","descriptionId","ariaDescribedbyByIds","messageIds","push","length","join","_jsx","FieldLabelIdContextProvider","value","InputIdContextProvider","InputDescribedByProvider","InputInvalidProvider","_jsxs","clsx","POSITIVE","WARNING","_Fragment","Label","htmlFor","Optional","Description","InlineAlert","type"],"mappings":"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"}
@@ -9,7 +9,7 @@ import { Sentiment } from '../common/propsValues/sentiment.mjs';
9
9
  const Field = ({
10
10
  id,
11
11
  label,
12
- required = false,
12
+ required = true,
13
13
  message: propMessage,
14
14
  hint,
15
15
  description = hint,
@@ -1 +1 @@
1
- {"version":3,"file":"Field.mjs","sources":["../../src/field/Field.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useId } from 'react';\n\nimport { Sentiment } from '../common';\nimport InlineAlert from '../inlineAlert/InlineAlert';\nimport {\n FieldLabelIdContextProvider,\n InputDescribedByProvider,\n InputIdContextProvider,\n InputInvalidProvider,\n} from '../inputs/contexts';\nimport { Label } from '../label';\n\nexport type FieldProps = {\n /** `null` disables auto-generating the `id` attribute, falling back to nesting-based label association over setting `htmlFor` explicitly. */\n id?: string | null;\n /** Should be specified unless the wrapped control has its own labeling mechanism, e.g. `Checkbox`. */\n label?: React.ReactNode;\n required?: boolean;\n /** @deprecated use `description` prop instead */\n hint?: React.ReactNode;\n message?: React.ReactNode;\n description?: React.ReactNode;\n /** @deprecated use `message` and `type={Sentiment.NEGATIVE}` prop instead */\n error?: React.ReactNode;\n sentiment?: `${Sentiment.NEGATIVE | Sentiment.NEUTRAL | Sentiment.POSITIVE | Sentiment.WARNING}`;\n className?: string;\n children?: React.ReactNode;\n};\n\nexport const Field = ({\n id,\n label,\n required = false,\n message: propMessage,\n hint,\n description = hint,\n sentiment: propType = Sentiment.NEUTRAL,\n className,\n children,\n ...props\n}: FieldProps) => {\n const sentiment = props.error ? Sentiment.NEGATIVE : propType;\n const message = propMessage || props.error;\n const hasError = sentiment === Sentiment.NEGATIVE;\n\n const labelId = useId();\n\n const fallbackInputId = useId();\n const inputId = id !== null ? (id ?? fallbackInputId) : undefined;\n\n const messageId = useId();\n const descriptionId = useId();\n\n /**\n * form control can have multiple messages to describe it,\n * e.g the description underneath the label and inline alert\n */\n function ariaDescribedbyByIds() {\n const messageIds = [];\n if (description) {\n messageIds.push(descriptionId);\n }\n if (message) {\n messageIds.push(messageId);\n }\n return messageIds.length > 0 ? messageIds.join(' ') : undefined;\n }\n\n return (\n <FieldLabelIdContextProvider value={labelId}>\n <InputIdContextProvider value={inputId}>\n <InputDescribedByProvider value={ariaDescribedbyByIds()}>\n <InputInvalidProvider value={hasError}>\n <div\n className={clsx(\n 'np-field form-group d-block',\n {\n 'has-success': sentiment === Sentiment.POSITIVE,\n 'has-warning': sentiment === Sentiment.WARNING,\n 'has-error': hasError,\n 'has-info': sentiment === Sentiment.NEUTRAL,\n },\n className,\n )}\n >\n {label != null ? (\n <>\n <Label id={labelId} htmlFor={inputId}>\n {required ? label : <Label.Optional>{label}</Label.Optional>}\n </Label>\n <Label.Description id={descriptionId}>{description}</Label.Description>\n <div className=\"np-field-control\">{children}</div>\n </>\n ) : (\n children\n )}\n\n {message && (\n <InlineAlert type={sentiment} id={messageId}>\n {message}\n </InlineAlert>\n )}\n </div>\n </InputInvalidProvider>\n </InputDescribedByProvider>\n </InputIdContextProvider>\n </FieldLabelIdContextProvider>\n );\n};\n"],"names":["Field","id","label","required","message","propMessage","hint","description","sentiment","propType","Sentiment","NEUTRAL","className","children","props","error","NEGATIVE","hasError","labelId","useId","fallbackInputId","inputId","undefined","messageId","descriptionId","ariaDescribedbyByIds","messageIds","push","length","join","_jsx","FieldLabelIdContextProvider","value","InputIdContextProvider","InputDescribedByProvider","InputInvalidProvider","_jsxs","clsx","POSITIVE","WARNING","_Fragment","Label","htmlFor","Optional","Description","InlineAlert","type"],"mappings":"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"}
1
+ {"version":3,"file":"Field.mjs","sources":["../../src/field/Field.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useId } from 'react';\n\nimport { Sentiment } from '../common';\nimport InlineAlert from '../inlineAlert/InlineAlert';\nimport {\n FieldLabelIdContextProvider,\n InputDescribedByProvider,\n InputIdContextProvider,\n InputInvalidProvider,\n} from '../inputs/contexts';\nimport { Label } from '../label';\n\nexport type FieldProps = {\n /** `null` disables auto-generating the `id` attribute, falling back to nesting-based label association over setting `htmlFor` explicitly. */\n id?: string | null;\n /** Should be specified unless the wrapped control has its own labeling mechanism, e.g. `Checkbox`. */\n label?: React.ReactNode;\n required?: boolean;\n /** @deprecated use `description` prop instead */\n hint?: React.ReactNode;\n message?: React.ReactNode;\n description?: React.ReactNode;\n /** @deprecated use `message` and `type={Sentiment.NEGATIVE}` prop instead */\n error?: React.ReactNode;\n sentiment?: `${Sentiment.NEGATIVE | Sentiment.NEUTRAL | Sentiment.POSITIVE | Sentiment.WARNING}`;\n className?: string;\n children?: React.ReactNode;\n};\n\nexport const Field = ({\n id,\n label,\n required = true,\n message: propMessage,\n hint,\n description = hint,\n sentiment: propType = Sentiment.NEUTRAL,\n className,\n children,\n ...props\n}: FieldProps) => {\n const sentiment = props.error ? Sentiment.NEGATIVE : propType;\n const message = propMessage || props.error;\n const hasError = sentiment === Sentiment.NEGATIVE;\n\n const labelId = useId();\n\n const fallbackInputId = useId();\n const inputId = id !== null ? (id ?? fallbackInputId) : undefined;\n\n const messageId = useId();\n const descriptionId = useId();\n\n /**\n * form control can have multiple messages to describe it,\n * e.g the description underneath the label and inline alert\n */\n function ariaDescribedbyByIds() {\n const messageIds = [];\n if (description) {\n messageIds.push(descriptionId);\n }\n if (message) {\n messageIds.push(messageId);\n }\n return messageIds.length > 0 ? messageIds.join(' ') : undefined;\n }\n\n return (\n <FieldLabelIdContextProvider value={labelId}>\n <InputIdContextProvider value={inputId}>\n <InputDescribedByProvider value={ariaDescribedbyByIds()}>\n <InputInvalidProvider value={hasError}>\n <div\n className={clsx(\n 'np-field form-group d-block',\n {\n 'has-success': sentiment === Sentiment.POSITIVE,\n 'has-warning': sentiment === Sentiment.WARNING,\n 'has-error': hasError,\n 'has-info': sentiment === Sentiment.NEUTRAL,\n },\n className,\n )}\n >\n {label != null ? (\n <>\n <Label id={labelId} htmlFor={inputId}>\n {required ? label : <Label.Optional>{label}</Label.Optional>}\n </Label>\n <Label.Description id={descriptionId}>{description}</Label.Description>\n <div className=\"np-field-control\">{children}</div>\n </>\n ) : (\n children\n )}\n\n {message && (\n <InlineAlert type={sentiment} id={messageId}>\n {message}\n </InlineAlert>\n )}\n </div>\n </InputInvalidProvider>\n </InputDescribedByProvider>\n </InputIdContextProvider>\n </FieldLabelIdContextProvider>\n );\n};\n"],"names":["Field","id","label","required","message","propMessage","hint","description","sentiment","propType","Sentiment","NEUTRAL","className","children","props","error","NEGATIVE","hasError","labelId","useId","fallbackInputId","inputId","undefined","messageId","descriptionId","ariaDescribedbyByIds","messageIds","push","length","join","_jsx","FieldLabelIdContextProvider","value","InputIdContextProvider","InputDescribedByProvider","InputInvalidProvider","_jsxs","clsx","POSITIVE","WARNING","_Fragment","Label","htmlFor","Optional","Description","InlineAlert","type"],"mappings":"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"}
package/build/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ 'use client';
1
2
  'use strict';
2
3
 
3
4
  var Accordion = require('./accordion/Accordion.js');
@@ -94,7 +95,6 @@ var UploadInput = require('./uploadInput/UploadInput.js');
94
95
  var useScreenSize = require('./common/hooks/useScreenSize.js');
95
96
  var useSnackbar = require('./snackbar/useSnackbar.js');
96
97
  var index$1 = require('./i18n/index.js');
97
- var withId = require('./withId/withId.js');
98
98
  var CheckboxButton = require('./checkboxButton/CheckboxButton.js');
99
99
  var ListItem = require('./listItem/ListItem.js');
100
100
  var useDirection = require('./common/hooks/useDirection/useDirection.js');
@@ -246,7 +246,6 @@ exports.UploadInput = UploadInput;
246
246
  exports.useScreenSize = useScreenSize.useScreenSize;
247
247
  exports.useSnackbar = useSnackbar;
248
248
  exports.translations = index$1;
249
- exports.withId = withId;
250
249
  exports.CheckboxButton = CheckboxButton;
251
250
  exports.ListItem = ListItem;
252
251
  exports.useDirection = useDirection.useDirection;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/build/index.mjs CHANGED
@@ -1,3 +1,4 @@
1
+ 'use client';
1
2
  export { default as Accordion } from './accordion/Accordion.mjs';
2
3
  export { default as ActionButton } from './actionButton/ActionButton.mjs';
3
4
  export { default as ActionOption } from './actionOption/ActionOption.mjs';
@@ -92,7 +93,6 @@ export { default as UploadInput } from './uploadInput/UploadInput.mjs';
92
93
  export { useScreenSize } from './common/hooks/useScreenSize.mjs';
93
94
  export { default as useSnackbar } from './snackbar/useSnackbar.mjs';
94
95
  export { default as translations } from './i18n/index.mjs';
95
- export { default as withId } from './withId/withId.mjs';
96
96
  export { default as CheckboxButton } from './checkboxButton/CheckboxButton.mjs';
97
97
  export { default as ListItem } from './listItem/ListItem.mjs';
98
98
  export { useDirection } from './common/hooks/useDirection/useDirection.mjs';
@@ -5,15 +5,14 @@ var art = require('@wise/art');
5
5
  var clsx = require('clsx');
6
6
  var React = require('react');
7
7
  var reactIntl = require('react-intl');
8
+ var size = require('../common/propsValues/size.js');
8
9
  var contexts = require('../inputs/contexts.js');
9
10
  var Input = require('../inputs/Input.js');
10
11
  var SelectInput = require('../inputs/SelectInput.js');
11
12
  var Title = require('../title/Title.js');
12
13
  var MoneyInput_messages = require('./MoneyInput.messages.js');
13
14
  var currencyFormatting = require('./currencyFormatting.js');
14
- var withId = require('../withId/withId.js');
15
15
  var jsxRuntime = require('react/jsx-runtime');
16
- var size = require('../common/propsValues/size.js');
17
16
  var typography = require('../common/propsValues/typography.js');
18
17
  var formatting = require('@transferwise/formatting');
19
18
 
@@ -217,7 +216,6 @@ class MoneyInput extends React.Component {
217
216
  };
218
217
  const isFixedCurrency = !this.state.searchQuery && hasSingleCurrency() || !onCurrencyChange;
219
218
  const disabled = !this.props.onAmountChange;
220
- const currencyCurrencyElementId = `${amountInputId}currentCurrency:`;
221
219
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
222
220
  role: "group",
223
221
  ...inputAttributes,
@@ -234,7 +232,6 @@ class MoneyInput extends React.Component {
234
232
  locale: this.state.locale
235
233
  }),
236
234
  autoComplete: "off",
237
- "aria-describedby": currencyCurrencyElementId,
238
235
  onKeyDown: this.handleKeyDown,
239
236
  onChange: this.onAmountChange,
240
237
  onFocus: this.onAmountFocus,
@@ -245,7 +242,6 @@ class MoneyInput extends React.Component {
245
242
  children: addon
246
243
  }), isFixedCurrency ? /*#__PURE__*/jsxRuntime.jsxs("div", {
247
244
  className: clsx.clsx(this.style('input-group-addon'), this.style(`input-${size}`), this.style('tw-money-input__fixed-currency'), disabled ? this.style('disabled') : ''),
248
- id: currencyCurrencyElementId,
249
245
  children: [(size === 'lg' || size === 'md') && /*#__PURE__*/jsxRuntime.jsx("span", {
250
246
  className: clsx.clsx(this.style('money-input-currency-flag'), this.style('m-r-2')),
251
247
  children: /*#__PURE__*/jsxRuntime.jsx(art.Flag, {
@@ -261,7 +257,6 @@ class MoneyInput extends React.Component {
261
257
  }) : /*#__PURE__*/jsxRuntime.jsx("div", {
262
258
  className: clsx.clsx(this.style('input-group-btn'), this.style('amount-currency-select-btn')),
263
259
  children: /*#__PURE__*/jsxRuntime.jsx(SelectInput.SelectInput, {
264
- id: currencyCurrencyElementId,
265
260
  items: selectOptions,
266
261
  value: selectedCurrency,
267
262
  compareValues: "currency",
@@ -344,9 +339,9 @@ function sortOptionsLabelsToFirst(options, query) {
344
339
  return 0;
345
340
  });
346
341
  }
347
- var MoneyInput$1 = reactIntl.injectIntl(withId(contexts.withInputAttributes(MoneyInput, {
342
+ var MoneyInput$1 = reactIntl.injectIntl(contexts.withInputAttributes(MoneyInput, {
348
343
  nonLabelable: true
349
- })));
344
+ }));
350
345
 
351
346
  module.exports = MoneyInput$1;
352
347
  //# sourceMappingURL=MoneyInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MoneyInput.js","sources":["../../src/moneyInput/MoneyInput.tsx"],"sourcesContent":["import { isEmpty, isNumber, isNull } from '@transferwise/neptune-validation';\nimport { Flag } from '@wise/art';\nimport { clsx } from 'clsx';\nimport { Component } from 'react';\nimport { injectIntl, WrappedComponentProps } from 'react-intl';\n\nimport { Typography, Size, SizeLarge, SizeMedium, SizeSmall } from '../common';\nimport { withInputAttributes, WithInputAttributesProps } from '../inputs/contexts';\nimport { Input } from '../inputs/Input';\nimport {\n SelectInput,\n SelectInputItem,\n SelectInputOptionContent,\n SelectInputOptionItem,\n SelectInputProps,\n} from '../inputs/SelectInput';\nimport Title from '../title';\n\nimport messages from './MoneyInput.messages';\nimport { formatAmount, parseAmount } from './currencyFormatting';\nimport withId from '../withId';\n\nexport interface CurrencyOptionItem {\n header?: never;\n value: string;\n label: string;\n currency: string;\n note?: string;\n searchable?: string;\n}\n\nexport interface CurrencyHeaderItem {\n header: string;\n}\n\nexport type CurrencyItem = CurrencyOptionItem | CurrencyHeaderItem;\n\nconst isNumberOrNull = (v: unknown): v is number | null => isNumber(v) || isNull(v);\n\nconst formatAmountIfSet = ({\n amount,\n currency,\n locale,\n}: {\n amount: number | null | undefined;\n currency: string;\n locale: string;\n}) => {\n return typeof amount === 'number' ? formatAmount(amount, currency, locale) : '';\n};\n\nconst parseNumber = ({\n amount,\n currency,\n locale,\n}: {\n amount: string;\n currency: string;\n locale: string;\n}) => {\n return parseAmount(amount, currency, locale);\n};\n\nconst allowedInputKeys = new Set([\n 'Backspace',\n 'Delete',\n ',',\n '.',\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Enter',\n 'Escape',\n 'Tab',\n]);\n\nexport interface MoneyInputProps extends WrappedComponentProps {\n id?: string;\n 'aria-labelledby'?: string;\n currencies: readonly CurrencyItem[];\n selectedCurrency: CurrencyOptionItem;\n onCurrencyChange?: (value: CurrencyOptionItem) => void;\n placeholder?: number;\n amount: number | null;\n size?: SizeSmall | SizeMedium | SizeLarge;\n onAmountChange?: (value: number | null) => void;\n addon?: React.ReactNode;\n searchPlaceholder?: string;\n /**\n * Allows the consumer to react to searching, while the search itself is handled internally.\n */\n onSearchChange?: (value: { searchQuery: string; filteredOptions: CurrencyItem[] }) => void;\n customActionLabel?: React.ReactNode;\n onCustomAction?: () => void;\n classNames?: Record<string, string>;\n selectProps?: Partial<SelectInputProps<CurrencyOptionItem>>;\n}\n\ntype MoneyInputPropsWithInputAttributes = MoneyInputProps & Partial<WithInputAttributesProps>;\n\ninterface MoneyInputState {\n searchQuery: string;\n formattedAmount: string;\n locale: string;\n}\n\nclass MoneyInput extends Component<MoneyInputPropsWithInputAttributes, MoneyInputState> {\n declare props: MoneyInputPropsWithInputAttributes &\n Required<Pick<MoneyInputPropsWithInputAttributes, keyof typeof MoneyInput.defaultProps>>;\n\n static defaultProps = {\n size: Size.LARGE,\n classNames: {},\n selectProps: {},\n } satisfies Partial<MoneyInputPropsWithInputAttributes>;\n\n amountFocused = false;\n\n constructor(props: MoneyInputProps) {\n super(props);\n this.state = {\n searchQuery: '',\n formattedAmount: formatAmountIfSet({\n amount: props.amount,\n currency: props.selectedCurrency.currency,\n locale: props.intl.locale,\n }),\n locale: props.intl.locale,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps: MoneyInputProps) {\n this.setState({ locale: nextProps.intl.locale });\n\n if (!this.amountFocused) {\n this.setState({\n formattedAmount: formatAmountIfSet({\n amount: nextProps.amount,\n currency: nextProps.selectedCurrency.currency,\n locale: nextProps.intl.locale,\n }),\n });\n }\n }\n\n isInputAllowedForKeyEvent = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const { metaKey, key, ctrlKey } = event;\n const isNumberKey = isNumber(Number.parseInt(key, 10));\n\n return isNumberKey || metaKey || ctrlKey || allowedInputKeys.has(key);\n };\n\n handleKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (event) => {\n if (!this.isInputAllowedForKeyEvent(event)) {\n event.preventDefault();\n }\n };\n\n handlePaste: React.ClipboardEventHandler<HTMLInputElement> = (event) => {\n const paste = event.clipboardData.getData('text');\n const { locale } = this.state;\n const parsed = isEmpty(paste)\n ? null\n : parseNumber({\n amount: paste,\n currency: this.props.selectedCurrency.currency,\n locale,\n });\n\n if (isNumberOrNull(parsed)) {\n this.setState({\n formattedAmount: formatAmountIfSet({\n amount: parsed,\n currency: this.props.selectedCurrency.currency,\n locale,\n }),\n });\n this.props.onAmountChange?.(parsed);\n }\n\n event.preventDefault();\n };\n\n onAmountChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const { value } = event.target;\n this.setState({\n formattedAmount: value,\n });\n const parsed = isEmpty(value)\n ? null\n : parseNumber({\n amount: value,\n currency: this.props.selectedCurrency.currency,\n locale: this.state.locale,\n });\n if (isNumberOrNull(parsed)) {\n this.props.onAmountChange?.(parsed);\n }\n };\n\n onAmountBlur = () => {\n this.amountFocused = false;\n this.setAmount();\n };\n\n onAmountFocus = () => {\n this.amountFocused = true;\n };\n\n getSelectOptions() {\n const selectOptions = filterCurrenciesForQuery(this.props.currencies, this.state.searchQuery);\n\n const formattedOptions: SelectInputItem<CurrencyOptionItem>[] = [];\n let currentGroupOptions: SelectInputOptionItem<CurrencyOptionItem>[] | undefined;\n\n selectOptions.forEach((item) => {\n if (item.header != null) {\n currentGroupOptions = [];\n formattedOptions.push({\n type: 'group',\n label: item.header,\n options: currentGroupOptions,\n });\n } else {\n (currentGroupOptions ?? formattedOptions).push({\n type: 'option',\n value: item,\n filterMatchers: [item.value, item.label, item.note ?? '', item.searchable ?? ''],\n });\n }\n });\n\n return formattedOptions;\n }\n\n setAmount() {\n this.setState((previousState) => {\n const parsed = parseNumber({\n amount: previousState.formattedAmount,\n currency: this.props.selectedCurrency.currency,\n locale: previousState.locale,\n });\n if (!isNumberOrNull(parsed)) {\n return {\n formattedAmount: previousState.formattedAmount,\n };\n }\n return {\n formattedAmount: formatAmountIfSet({\n amount: parsed,\n currency: this.props.selectedCurrency.currency,\n locale: previousState.locale,\n }),\n };\n });\n }\n\n handleSelectChange = (value: CurrencyOptionItem) => {\n this.handleSearchChange('');\n this.props.onCurrencyChange?.(value);\n };\n\n handleCustomAction = () => {\n this.handleSearchChange('');\n this.props.onCustomAction?.();\n };\n\n handleSearchChange = (searchQuery: string) => {\n this.setState({ searchQuery });\n this.props.onSearchChange?.({\n searchQuery,\n filteredOptions: filterCurrenciesForQuery(this.props.currencies, searchQuery),\n });\n };\n\n style = (className: string) => this.props.classNames[className] || className;\n\n render() {\n const {\n inputAttributes,\n id: amountInputId,\n 'aria-labelledby': ariaLabelledByProp,\n selectedCurrency,\n onCurrencyChange,\n size,\n addon,\n selectProps,\n } = this.props;\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes?.['aria-labelledby'];\n const selectOptions = this.getSelectOptions();\n\n const hasSingleCurrency = () => {\n if (selectOptions.length !== 0) {\n const firstItem = selectOptions[0];\n\n if (selectOptions.length === 1) {\n if (firstItem.type === 'option') {\n return firstItem.value.currency === selectedCurrency.currency;\n }\n if (firstItem.type === 'group') {\n return (\n firstItem.options.length === 1 &&\n !(this.props.onCustomAction && this.props.customActionLabel)\n );\n }\n }\n } else if (selectedCurrency?.currency) {\n return true;\n }\n\n return false;\n };\n\n const isFixedCurrency = (!this.state.searchQuery && hasSingleCurrency()) || !onCurrencyChange;\n const disabled = !this.props.onAmountChange;\n const currencyCurrencyElementId = `${amountInputId}currentCurrency:`;\n\n return (\n <div\n role=\"group\"\n {...inputAttributes}\n aria-labelledby={ariaLabelledBy}\n className={clsx(\n this.style('tw-money-input'),\n this.style('input-group'),\n this.style(`input-group-${size}`),\n )}\n >\n <Input\n id={amountInputId}\n value={this.state.formattedAmount}\n inputMode=\"decimal\"\n disabled={disabled}\n placeholder={formatAmountIfSet({\n amount: this.props.placeholder,\n currency: this.props.selectedCurrency.currency,\n locale: this.state.locale,\n })}\n autoComplete=\"off\"\n aria-describedby={currencyCurrencyElementId}\n onKeyDown={this.handleKeyDown}\n onChange={this.onAmountChange}\n onFocus={this.onAmountFocus}\n onBlur={this.onAmountBlur}\n onPaste={this.handlePaste}\n />\n {addon && (\n <span\n className={clsx(\n this.style('input-group-addon'),\n this.style(`input-${size}`),\n disabled ? this.style('disabled') : '',\n )}\n >\n {addon}\n </span>\n )}\n {isFixedCurrency ? (\n <div\n className={clsx(\n this.style('input-group-addon'),\n this.style(`input-${size}`),\n this.style('tw-money-input__fixed-currency'),\n disabled ? this.style('disabled') : '',\n )}\n id={currencyCurrencyElementId}\n >\n {(size === 'lg' || size === 'md') && (\n <span className={clsx(this.style('money-input-currency-flag'), this.style('m-r-2'))}>\n <Flag code={selectedCurrency.currency.toLowerCase()} intrinsicSize={24} />\n </span>\n )}\n <Title\n as=\"span\"\n type={Typography.TITLE_SUBSECTION}\n className={size === 'lg' ? this.style('m-r-1') : ''}\n >\n {selectedCurrency.currency.toUpperCase()}\n </Title>\n </div>\n ) : (\n <div\n className={clsx(\n this.style('input-group-btn'),\n this.style('amount-currency-select-btn'),\n )}\n >\n <SelectInput\n id={currencyCurrencyElementId}\n items={selectOptions}\n value={selectedCurrency}\n compareValues=\"currency\"\n renderValue={(currency, withinTrigger) => {\n return (\n <SelectInputOptionContent\n title={withinTrigger ? currency.currency.toUpperCase() : currency.label}\n note={withinTrigger ? undefined : currency.note}\n icon={<Flag code={currency.currency} intrinsicSize={24} />}\n />\n );\n }}\n renderFooter={\n this.props.onCustomAction\n ? () => (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n <div role=\"button\" tabIndex={0} onClick={this.handleCustomAction}>\n {this.props.customActionLabel}\n </div>\n )\n : undefined\n }\n placeholder={this.props.intl.formatMessage(messages.selectPlaceholder)}\n filterable\n filterPlaceholder={this.props.searchPlaceholder}\n disabled={disabled}\n size={size}\n onChange={this.handleSelectChange}\n onFilterChange={({ queryNormalized }) => {\n this.handleSearchChange(queryNormalized ?? '');\n }}\n {...selectProps}\n />\n </div>\n )}\n </div>\n );\n }\n}\n\nfunction filterCurrenciesForQuery(\n currencies: readonly CurrencyItem[],\n query: string,\n): CurrencyItem[] {\n if (!query) {\n return [...currencies];\n }\n\n const options = currencies.filter(\n (option): option is CurrencyOptionItem => option.header == null,\n );\n const filteredOptions = removeDuplicateValueOptions(options).filter((option) =>\n currencyOptionFitsQuery(option, query),\n );\n\n return sortOptionsLabelsToFirst(filteredOptions, query);\n}\n\nfunction removeDuplicateValueOptions(options: readonly CurrencyOptionItem[]) {\n const uniqueValues = new Set<string>();\n return options.filter((option) => {\n if (!uniqueValues.has(option.value)) {\n uniqueValues.add(option.value);\n return true;\n }\n return false;\n });\n}\n\nfunction currencyOptionFitsQuery(option: CurrencyOptionItem, query: string) {\n if (!option.value) {\n return false;\n }\n\n return (\n contains(option.label, query) ||\n contains(option.searchable, query) ||\n contains(option.note, query)\n );\n}\n\nfunction contains(property: string | undefined, query: string) {\n return property?.toLowerCase().includes(query.toLowerCase());\n}\n\nfunction sortOptionsLabelsToFirst(options: readonly CurrencyOptionItem[], query: string) {\n return [...options].sort((first, second) => {\n const firstContains = contains(first.label, query);\n const secondContains = contains(second.label, query);\n\n if (firstContains && secondContains) {\n return 0;\n }\n if (firstContains) {\n return -1;\n }\n if (secondContains) {\n return 1;\n }\n return 0;\n });\n}\n\nexport default injectIntl(withId(withInputAttributes(MoneyInput, { nonLabelable: true })));\n"],"names":["isNumberOrNull","v","isNumber","isNull","formatAmountIfSet","amount","currency","locale","formatAmount","parseNumber","parseAmount","allowedInputKeys","Set","MoneyInput","Component","defaultProps","size","Size","LARGE","classNames","selectProps","amountFocused","constructor","props","state","searchQuery","formattedAmount","selectedCurrency","intl","UNSAFE_componentWillReceiveProps","nextProps","setState","isInputAllowedForKeyEvent","event","metaKey","key","ctrlKey","isNumberKey","Number","parseInt","has","handleKeyDown","preventDefault","handlePaste","paste","clipboardData","getData","parsed","isEmpty","onAmountChange","value","target","onAmountBlur","setAmount","onAmountFocus","getSelectOptions","selectOptions","filterCurrenciesForQuery","currencies","formattedOptions","currentGroupOptions","forEach","item","header","push","type","label","options","filterMatchers","note","searchable","previousState","handleSelectChange","handleSearchChange","onCurrencyChange","handleCustomAction","onCustomAction","onSearchChange","filteredOptions","style","className","render","inputAttributes","id","amountInputId","ariaLabelledByProp","addon","ariaLabelledBy","hasSingleCurrency","length","firstItem","customActionLabel","isFixedCurrency","disabled","currencyCurrencyElementId","_jsxs","role","clsx","children","_jsx","Input","inputMode","placeholder","autoComplete","onKeyDown","onChange","onFocus","onBlur","onPaste","Flag","code","toLowerCase","intrinsicSize","Title","as","Typography","TITLE_SUBSECTION","toUpperCase","SelectInput","items","compareValues","renderValue","withinTrigger","SelectInputOptionContent","title","undefined","icon","renderFooter","tabIndex","onClick","formatMessage","messages","selectPlaceholder","filterable","filterPlaceholder","searchPlaceholder","onFilterChange","queryNormalized","query","filter","option","removeDuplicateValueOptions","currencyOptionFitsQuery","sortOptionsLabelsToFirst","uniqueValues","add","contains","property","includes","sort","first","second","firstContains","secondContains","injectIntl","withId","withInputAttributes","nonLabelable"],"mappings":"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"}
1
+ {"version":3,"file":"MoneyInput.js","sources":["../../src/moneyInput/MoneyInput.tsx"],"sourcesContent":["import { isEmpty, isNumber, isNull } from '@transferwise/neptune-validation';\nimport { Flag } from '@wise/art';\nimport { clsx } from 'clsx';\nimport { Component } from 'react';\nimport { injectIntl, WrappedComponentProps } from 'react-intl';\n\nimport { Typography } from '../common';\nimport { Size, SizeLarge, SizeMedium, SizeSmall } from '../common/propsValues/size';\nimport { withInputAttributes, WithInputAttributesProps } from '../inputs/contexts';\nimport { Input } from '../inputs/Input';\nimport {\n SelectInput,\n SelectInputItem,\n SelectInputOptionContent,\n SelectInputOptionItem,\n SelectInputProps,\n} from '../inputs/SelectInput';\nimport Title from '../title';\n\nimport messages from './MoneyInput.messages';\nimport { formatAmount, parseAmount } from './currencyFormatting';\n\nexport interface CurrencyOptionItem {\n header?: never;\n value: string;\n label: string;\n currency: string;\n note?: string;\n searchable?: string;\n}\n\nexport interface CurrencyHeaderItem {\n header: string;\n}\n\nexport type CurrencyItem = CurrencyOptionItem | CurrencyHeaderItem;\n\nconst isNumberOrNull = (v: unknown): v is number | null => isNumber(v) || isNull(v);\n\nconst formatAmountIfSet = ({\n amount,\n currency,\n locale,\n}: {\n amount: number | null | undefined;\n currency: string;\n locale: string;\n}) => {\n return typeof amount === 'number' ? formatAmount(amount, currency, locale) : '';\n};\n\nconst parseNumber = ({\n amount,\n currency,\n locale,\n}: {\n amount: string;\n currency: string;\n locale: string;\n}) => {\n return parseAmount(amount, currency, locale);\n};\n\nconst allowedInputKeys = new Set([\n 'Backspace',\n 'Delete',\n ',',\n '.',\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Enter',\n 'Escape',\n 'Tab',\n]);\n\nexport interface MoneyInputProps extends WrappedComponentProps {\n id?: string;\n 'aria-labelledby'?: string;\n currencies: readonly CurrencyItem[];\n selectedCurrency: CurrencyOptionItem;\n onCurrencyChange?: (value: CurrencyOptionItem) => void;\n placeholder?: number;\n amount: number | null;\n size?: SizeSmall | SizeMedium | SizeLarge;\n onAmountChange?: (value: number | null) => void;\n addon?: React.ReactNode;\n searchPlaceholder?: string;\n /**\n * Allows the consumer to react to searching, while the search itself is handled internally.\n */\n onSearchChange?: (value: { searchQuery: string; filteredOptions: CurrencyItem[] }) => void;\n customActionLabel?: React.ReactNode;\n onCustomAction?: () => void;\n classNames?: Record<string, string>;\n selectProps?: Partial<SelectInputProps<CurrencyOptionItem>>;\n}\n\ntype MoneyInputPropsWithInputAttributes = MoneyInputProps & Partial<WithInputAttributesProps>;\n\ninterface MoneyInputState {\n searchQuery: string;\n formattedAmount: string;\n locale: string;\n}\n\nclass MoneyInput extends Component<MoneyInputPropsWithInputAttributes, MoneyInputState> {\n declare props: MoneyInputPropsWithInputAttributes &\n Required<Pick<MoneyInputPropsWithInputAttributes, keyof typeof MoneyInput.defaultProps>>;\n\n static defaultProps = {\n size: Size.LARGE,\n classNames: {},\n selectProps: {},\n } satisfies Partial<MoneyInputPropsWithInputAttributes>;\n\n amountFocused = false;\n\n constructor(props: MoneyInputProps) {\n super(props);\n this.state = {\n searchQuery: '',\n formattedAmount: formatAmountIfSet({\n amount: props.amount,\n currency: props.selectedCurrency.currency,\n locale: props.intl.locale,\n }),\n locale: props.intl.locale,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps: MoneyInputProps) {\n this.setState({ locale: nextProps.intl.locale });\n\n if (!this.amountFocused) {\n this.setState({\n formattedAmount: formatAmountIfSet({\n amount: nextProps.amount,\n currency: nextProps.selectedCurrency.currency,\n locale: nextProps.intl.locale,\n }),\n });\n }\n }\n\n isInputAllowedForKeyEvent = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const { metaKey, key, ctrlKey } = event;\n const isNumberKey = isNumber(Number.parseInt(key, 10));\n\n return isNumberKey || metaKey || ctrlKey || allowedInputKeys.has(key);\n };\n\n handleKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (event) => {\n if (!this.isInputAllowedForKeyEvent(event)) {\n event.preventDefault();\n }\n };\n\n handlePaste: React.ClipboardEventHandler<HTMLInputElement> = (event) => {\n const paste = event.clipboardData.getData('text');\n const { locale } = this.state;\n const parsed = isEmpty(paste)\n ? null\n : parseNumber({\n amount: paste,\n currency: this.props.selectedCurrency.currency,\n locale,\n });\n\n if (isNumberOrNull(parsed)) {\n this.setState({\n formattedAmount: formatAmountIfSet({\n amount: parsed,\n currency: this.props.selectedCurrency.currency,\n locale,\n }),\n });\n this.props.onAmountChange?.(parsed);\n }\n\n event.preventDefault();\n };\n\n onAmountChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const { value } = event.target;\n this.setState({\n formattedAmount: value,\n });\n const parsed = isEmpty(value)\n ? null\n : parseNumber({\n amount: value,\n currency: this.props.selectedCurrency.currency,\n locale: this.state.locale,\n });\n if (isNumberOrNull(parsed)) {\n this.props.onAmountChange?.(parsed);\n }\n };\n\n onAmountBlur = () => {\n this.amountFocused = false;\n this.setAmount();\n };\n\n onAmountFocus = () => {\n this.amountFocused = true;\n };\n\n getSelectOptions() {\n const selectOptions = filterCurrenciesForQuery(this.props.currencies, this.state.searchQuery);\n\n const formattedOptions: SelectInputItem<CurrencyOptionItem>[] = [];\n let currentGroupOptions: SelectInputOptionItem<CurrencyOptionItem>[] | undefined;\n\n selectOptions.forEach((item) => {\n if (item.header != null) {\n currentGroupOptions = [];\n formattedOptions.push({\n type: 'group',\n label: item.header,\n options: currentGroupOptions,\n });\n } else {\n (currentGroupOptions ?? formattedOptions).push({\n type: 'option',\n value: item,\n filterMatchers: [item.value, item.label, item.note ?? '', item.searchable ?? ''],\n });\n }\n });\n\n return formattedOptions;\n }\n\n setAmount() {\n this.setState((previousState) => {\n const parsed = parseNumber({\n amount: previousState.formattedAmount,\n currency: this.props.selectedCurrency.currency,\n locale: previousState.locale,\n });\n if (!isNumberOrNull(parsed)) {\n return {\n formattedAmount: previousState.formattedAmount,\n };\n }\n return {\n formattedAmount: formatAmountIfSet({\n amount: parsed,\n currency: this.props.selectedCurrency.currency,\n locale: previousState.locale,\n }),\n };\n });\n }\n\n handleSelectChange = (value: CurrencyOptionItem) => {\n this.handleSearchChange('');\n this.props.onCurrencyChange?.(value);\n };\n\n handleCustomAction = () => {\n this.handleSearchChange('');\n this.props.onCustomAction?.();\n };\n\n handleSearchChange = (searchQuery: string) => {\n this.setState({ searchQuery });\n this.props.onSearchChange?.({\n searchQuery,\n filteredOptions: filterCurrenciesForQuery(this.props.currencies, searchQuery),\n });\n };\n\n style = (className: string) => this.props.classNames[className] || className;\n\n render() {\n const {\n inputAttributes,\n id: amountInputId,\n 'aria-labelledby': ariaLabelledByProp,\n selectedCurrency,\n onCurrencyChange,\n size,\n addon,\n selectProps,\n } = this.props;\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes?.['aria-labelledby'];\n\n const selectOptions = this.getSelectOptions();\n\n const hasSingleCurrency = () => {\n if (selectOptions.length !== 0) {\n const firstItem = selectOptions[0];\n\n if (selectOptions.length === 1) {\n if (firstItem.type === 'option') {\n return firstItem.value.currency === selectedCurrency.currency;\n }\n if (firstItem.type === 'group') {\n return (\n firstItem.options.length === 1 &&\n !(this.props.onCustomAction && this.props.customActionLabel)\n );\n }\n }\n } else if (selectedCurrency?.currency) {\n return true;\n }\n\n return false;\n };\n\n const isFixedCurrency = (!this.state.searchQuery && hasSingleCurrency()) || !onCurrencyChange;\n\n const disabled = !this.props.onAmountChange;\n return (\n <div\n role=\"group\"\n {...inputAttributes}\n aria-labelledby={ariaLabelledBy}\n className={clsx(\n this.style('tw-money-input'),\n this.style('input-group'),\n this.style(`input-group-${size}`),\n )}\n >\n <Input\n id={amountInputId}\n value={this.state.formattedAmount}\n inputMode=\"decimal\"\n disabled={disabled}\n placeholder={formatAmountIfSet({\n amount: this.props.placeholder,\n currency: this.props.selectedCurrency.currency,\n locale: this.state.locale,\n })}\n autoComplete=\"off\"\n onKeyDown={this.handleKeyDown}\n onChange={this.onAmountChange}\n onFocus={this.onAmountFocus}\n onBlur={this.onAmountBlur}\n onPaste={this.handlePaste}\n />\n {addon && (\n <span\n className={clsx(\n this.style('input-group-addon'),\n this.style(`input-${size}`),\n disabled ? this.style('disabled') : '',\n )}\n >\n {addon}\n </span>\n )}\n {isFixedCurrency ? (\n <div\n className={clsx(\n this.style('input-group-addon'),\n this.style(`input-${size}`),\n this.style('tw-money-input__fixed-currency'),\n disabled ? this.style('disabled') : '',\n )}\n >\n {(size === 'lg' || size === 'md') && (\n <span className={clsx(this.style('money-input-currency-flag'), this.style('m-r-2'))}>\n <Flag code={selectedCurrency.currency.toLowerCase()} intrinsicSize={24} />\n </span>\n )}\n <Title\n as=\"span\"\n type={Typography.TITLE_SUBSECTION}\n className={size === 'lg' ? this.style('m-r-1') : ''}\n >\n {selectedCurrency.currency.toUpperCase()}\n </Title>\n </div>\n ) : (\n <div\n className={clsx(\n this.style('input-group-btn'),\n this.style('amount-currency-select-btn'),\n )}\n >\n <SelectInput\n items={selectOptions}\n value={selectedCurrency}\n compareValues=\"currency\"\n renderValue={(currency, withinTrigger) => {\n return (\n <SelectInputOptionContent\n title={withinTrigger ? currency.currency.toUpperCase() : currency.label}\n note={withinTrigger ? undefined : currency.note}\n icon={<Flag code={currency.currency} intrinsicSize={24} />}\n />\n );\n }}\n renderFooter={\n this.props.onCustomAction\n ? () => (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n <div role=\"button\" tabIndex={0} onClick={this.handleCustomAction}>\n {this.props.customActionLabel}\n </div>\n )\n : undefined\n }\n placeholder={this.props.intl.formatMessage(messages.selectPlaceholder)}\n filterable\n filterPlaceholder={this.props.searchPlaceholder}\n disabled={disabled}\n size={size}\n onChange={this.handleSelectChange}\n onFilterChange={({ queryNormalized }) => {\n this.handleSearchChange(queryNormalized ?? '');\n }}\n {...selectProps}\n />\n </div>\n )}\n </div>\n );\n }\n}\n\nfunction filterCurrenciesForQuery(\n currencies: readonly CurrencyItem[],\n query: string,\n): CurrencyItem[] {\n if (!query) {\n return [...currencies];\n }\n\n const options = currencies.filter(\n (option): option is CurrencyOptionItem => option.header == null,\n );\n const filteredOptions = removeDuplicateValueOptions(options).filter((option) =>\n currencyOptionFitsQuery(option, query),\n );\n\n return sortOptionsLabelsToFirst(filteredOptions, query);\n}\n\nfunction removeDuplicateValueOptions(options: readonly CurrencyOptionItem[]) {\n const uniqueValues = new Set<string>();\n return options.filter((option) => {\n if (!uniqueValues.has(option.value)) {\n uniqueValues.add(option.value);\n return true;\n }\n return false;\n });\n}\n\nfunction currencyOptionFitsQuery(option: CurrencyOptionItem, query: string) {\n if (!option.value) {\n return false;\n }\n\n return (\n contains(option.label, query) ||\n contains(option.searchable, query) ||\n contains(option.note, query)\n );\n}\n\nfunction contains(property: string | undefined, query: string) {\n return property?.toLowerCase().includes(query.toLowerCase());\n}\n\nfunction sortOptionsLabelsToFirst(options: readonly CurrencyOptionItem[], query: string) {\n return [...options].sort((first, second) => {\n const firstContains = contains(first.label, query);\n const secondContains = contains(second.label, query);\n\n if (firstContains && secondContains) {\n return 0;\n }\n if (firstContains) {\n return -1;\n }\n if (secondContains) {\n return 1;\n }\n return 0;\n });\n}\n\nexport default injectIntl(withInputAttributes(MoneyInput, { nonLabelable: true }));\n"],"names":["isNumberOrNull","v","isNumber","isNull","formatAmountIfSet","amount","currency","locale","formatAmount","parseNumber","parseAmount","allowedInputKeys","Set","MoneyInput","Component","defaultProps","size","Size","LARGE","classNames","selectProps","amountFocused","constructor","props","state","searchQuery","formattedAmount","selectedCurrency","intl","UNSAFE_componentWillReceiveProps","nextProps","setState","isInputAllowedForKeyEvent","event","metaKey","key","ctrlKey","isNumberKey","Number","parseInt","has","handleKeyDown","preventDefault","handlePaste","paste","clipboardData","getData","parsed","isEmpty","onAmountChange","value","target","onAmountBlur","setAmount","onAmountFocus","getSelectOptions","selectOptions","filterCurrenciesForQuery","currencies","formattedOptions","currentGroupOptions","forEach","item","header","push","type","label","options","filterMatchers","note","searchable","previousState","handleSelectChange","handleSearchChange","onCurrencyChange","handleCustomAction","onCustomAction","onSearchChange","filteredOptions","style","className","render","inputAttributes","id","amountInputId","ariaLabelledByProp","addon","ariaLabelledBy","hasSingleCurrency","length","firstItem","customActionLabel","isFixedCurrency","disabled","_jsxs","role","clsx","children","_jsx","Input","inputMode","placeholder","autoComplete","onKeyDown","onChange","onFocus","onBlur","onPaste","Flag","code","toLowerCase","intrinsicSize","Title","as","Typography","TITLE_SUBSECTION","toUpperCase","SelectInput","items","compareValues","renderValue","withinTrigger","SelectInputOptionContent","title","undefined","icon","renderFooter","tabIndex","onClick","formatMessage","messages","selectPlaceholder","filterable","filterPlaceholder","searchPlaceholder","onFilterChange","queryNormalized","query","filter","option","removeDuplicateValueOptions","currencyOptionFitsQuery","sortOptionsLabelsToFirst","uniqueValues","add","contains","property","includes","sort","first","second","firstContains","secondContains","injectIntl","withInputAttributes","nonLabelable"],"mappings":"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"}
@@ -3,15 +3,14 @@ import { Flag } from '@wise/art';
3
3
  import { clsx } from 'clsx';
4
4
  import { Component } from 'react';
5
5
  import { injectIntl } from 'react-intl';
6
+ import { Size } from '../common/propsValues/size.mjs';
6
7
  import { withInputAttributes } from '../inputs/contexts.mjs';
7
8
  import { Input } from '../inputs/Input.mjs';
8
9
  import { SelectInput, SelectInputOptionContent } from '../inputs/SelectInput.mjs';
9
10
  import Title from '../title/Title.mjs';
10
11
  import messages from './MoneyInput.messages.mjs';
11
12
  import { parseAmount } from './currencyFormatting.mjs';
12
- import withId from '../withId/withId.mjs';
13
13
  import { jsxs, jsx } from 'react/jsx-runtime';
14
- import { Size } from '../common/propsValues/size.mjs';
15
14
  import { Typography } from '../common/propsValues/typography.mjs';
16
15
  import { formatAmount } from '@transferwise/formatting';
17
16
 
@@ -215,7 +214,6 @@ class MoneyInput extends Component {
215
214
  };
216
215
  const isFixedCurrency = !this.state.searchQuery && hasSingleCurrency() || !onCurrencyChange;
217
216
  const disabled = !this.props.onAmountChange;
218
- const currencyCurrencyElementId = `${amountInputId}currentCurrency:`;
219
217
  return /*#__PURE__*/jsxs("div", {
220
218
  role: "group",
221
219
  ...inputAttributes,
@@ -232,7 +230,6 @@ class MoneyInput extends Component {
232
230
  locale: this.state.locale
233
231
  }),
234
232
  autoComplete: "off",
235
- "aria-describedby": currencyCurrencyElementId,
236
233
  onKeyDown: this.handleKeyDown,
237
234
  onChange: this.onAmountChange,
238
235
  onFocus: this.onAmountFocus,
@@ -243,7 +240,6 @@ class MoneyInput extends Component {
243
240
  children: addon
244
241
  }), isFixedCurrency ? /*#__PURE__*/jsxs("div", {
245
242
  className: clsx(this.style('input-group-addon'), this.style(`input-${size}`), this.style('tw-money-input__fixed-currency'), disabled ? this.style('disabled') : ''),
246
- id: currencyCurrencyElementId,
247
243
  children: [(size === 'lg' || size === 'md') && /*#__PURE__*/jsx("span", {
248
244
  className: clsx(this.style('money-input-currency-flag'), this.style('m-r-2')),
249
245
  children: /*#__PURE__*/jsx(Flag, {
@@ -259,7 +255,6 @@ class MoneyInput extends Component {
259
255
  }) : /*#__PURE__*/jsx("div", {
260
256
  className: clsx(this.style('input-group-btn'), this.style('amount-currency-select-btn')),
261
257
  children: /*#__PURE__*/jsx(SelectInput, {
262
- id: currencyCurrencyElementId,
263
258
  items: selectOptions,
264
259
  value: selectedCurrency,
265
260
  compareValues: "currency",
@@ -342,9 +337,9 @@ function sortOptionsLabelsToFirst(options, query) {
342
337
  return 0;
343
338
  });
344
339
  }
345
- var MoneyInput$1 = injectIntl(withId(withInputAttributes(MoneyInput, {
340
+ var MoneyInput$1 = injectIntl(withInputAttributes(MoneyInput, {
346
341
  nonLabelable: true
347
- })));
342
+ }));
348
343
 
349
344
  export { MoneyInput$1 as default };
350
345
  //# sourceMappingURL=MoneyInput.mjs.map