@transferwise/components 46.124.1 → 46.126.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 (401) hide show
  1. package/build/avatarView/AvatarView.js.map +1 -1
  2. package/build/avatarView/AvatarView.mjs.map +1 -1
  3. package/build/common/locale/index.js +13 -0
  4. package/build/common/locale/index.js.map +1 -1
  5. package/build/common/locale/index.mjs +13 -1
  6. package/build/common/locale/index.mjs.map +1 -1
  7. package/build/expressiveMoneyInput/currencySelector/CurrencySelector.js +31 -1
  8. package/build/expressiveMoneyInput/currencySelector/CurrencySelector.js.map +1 -1
  9. package/build/expressiveMoneyInput/currencySelector/CurrencySelector.mjs +32 -2
  10. package/build/expressiveMoneyInput/currencySelector/CurrencySelector.mjs.map +1 -1
  11. package/build/field/Field.js +11 -0
  12. package/build/field/Field.js.map +1 -1
  13. package/build/field/Field.mjs +11 -0
  14. package/build/field/Field.mjs.map +1 -1
  15. package/build/index.js +5 -0
  16. package/build/index.js.map +1 -1
  17. package/build/index.mjs +3 -1
  18. package/build/index.mjs.map +1 -1
  19. package/build/inputs/Input.js.map +1 -1
  20. package/build/inputs/Input.mjs.map +1 -1
  21. package/build/inputs/SearchInput.js.map +1 -1
  22. package/build/inputs/SearchInput.mjs.map +1 -1
  23. package/build/inputs/SelectInput.js.map +1 -1
  24. package/build/inputs/SelectInput.mjs.map +1 -1
  25. package/build/inputs/TextArea.js.map +1 -1
  26. package/build/inputs/TextArea.mjs.map +1 -1
  27. package/build/listItem/ListItem.js +2 -2
  28. package/build/listItem/ListItem.js.map +1 -1
  29. package/build/listItem/ListItem.mjs +2 -2
  30. package/build/listItem/ListItem.mjs.map +1 -1
  31. package/build/listItem/Prompt/ListItemPrompt.js +11 -0
  32. package/build/listItem/Prompt/ListItemPrompt.js.map +1 -1
  33. package/build/listItem/Prompt/ListItemPrompt.mjs +11 -0
  34. package/build/listItem/Prompt/ListItemPrompt.mjs.map +1 -1
  35. package/build/main.css +63 -2
  36. package/build/moneyInput/MoneyInput.js +6 -1
  37. package/build/moneyInput/MoneyInput.js.map +1 -1
  38. package/build/moneyInput/MoneyInput.mjs +6 -1
  39. package/build/moneyInput/MoneyInput.mjs.map +1 -1
  40. package/build/prompt/ActionPrompt/ActionPrompt.js +146 -0
  41. package/build/prompt/ActionPrompt/ActionPrompt.js.map +1 -0
  42. package/build/prompt/ActionPrompt/ActionPrompt.mjs +141 -0
  43. package/build/prompt/ActionPrompt/ActionPrompt.mjs.map +1 -0
  44. package/build/prompt/InfoPrompt/InfoPrompt.js +113 -0
  45. package/build/prompt/InfoPrompt/InfoPrompt.js.map +1 -0
  46. package/build/prompt/InfoPrompt/InfoPrompt.mjs +111 -0
  47. package/build/prompt/InfoPrompt/InfoPrompt.mjs.map +1 -0
  48. package/build/prompt/PrimitivePrompt/PrimitivePrompt.js +13 -11
  49. package/build/prompt/PrimitivePrompt/PrimitivePrompt.js.map +1 -1
  50. package/build/prompt/PrimitivePrompt/PrimitivePrompt.mjs +14 -12
  51. package/build/prompt/PrimitivePrompt/PrimitivePrompt.mjs.map +1 -1
  52. package/build/radioOption/RadioOption.js.map +1 -1
  53. package/build/radioOption/RadioOption.mjs.map +1 -1
  54. package/build/slidingPanel/SlidingPanel.js.map +1 -1
  55. package/build/slidingPanel/SlidingPanel.mjs.map +1 -1
  56. package/build/statusIcon/StatusIcon.js +2 -0
  57. package/build/statusIcon/StatusIcon.js.map +1 -1
  58. package/build/statusIcon/StatusIcon.mjs +2 -0
  59. package/build/statusIcon/StatusIcon.mjs.map +1 -1
  60. package/build/styles/main.css +63 -2
  61. package/build/styles/prompt/ActionPrompt/ActionPrompt.css +21 -0
  62. package/build/styles/prompt/InfoPrompt/InfoPrompt.css +31 -0
  63. package/build/styles/prompt/PrimitivePrompt/PrimitivePrompt.css +11 -2
  64. package/build/table/TableCell.js.map +1 -1
  65. package/build/table/TableCell.mjs.map +1 -1
  66. package/build/tabs/Tabs.js +14 -171
  67. package/build/tabs/Tabs.js.map +1 -1
  68. package/build/tabs/Tabs.mjs +16 -173
  69. package/build/tabs/Tabs.mjs.map +1 -1
  70. package/build/tabs/utils.js +0 -18
  71. package/build/tabs/utils.js.map +1 -1
  72. package/build/tabs/utils.mjs +1 -17
  73. package/build/tabs/utils.mjs.map +1 -1
  74. package/build/typeahead/Typeahead.js +11 -0
  75. package/build/typeahead/Typeahead.js.map +1 -1
  76. package/build/typeahead/Typeahead.mjs +11 -0
  77. package/build/typeahead/Typeahead.mjs.map +1 -1
  78. package/build/types/avatarView/AvatarView.d.ts +1 -1
  79. package/build/types/avatarView/AvatarView.d.ts.map +1 -1
  80. package/build/types/common/locale/index.d.ts +8 -0
  81. package/build/types/common/locale/index.d.ts.map +1 -1
  82. package/build/types/expressiveMoneyInput/currencySelector/CurrencySelector.d.ts.map +1 -1
  83. package/build/types/index.d.ts +4 -3
  84. package/build/types/index.d.ts.map +1 -1
  85. package/build/types/inputs/Input.d.ts.map +1 -1
  86. package/build/types/inputs/SearchInput.d.ts.map +1 -1
  87. package/build/types/inputs/SelectInput.d.ts +1 -1
  88. package/build/types/inputs/SelectInput.d.ts.map +1 -1
  89. package/build/types/inputs/TextArea.d.ts.map +1 -1
  90. package/build/types/moneyInput/MoneyInput.d.ts.map +1 -1
  91. package/build/types/primitives/PrimitiveAnchor/PrimitiveAnchor.types.d.ts.map +1 -1
  92. package/build/types/primitives/PrimitiveButton/PrimitiveButton.types.d.ts.map +1 -1
  93. package/build/types/prompt/ActionPrompt/ActionPrompt.d.ts +28 -0
  94. package/build/types/prompt/ActionPrompt/ActionPrompt.d.ts.map +1 -0
  95. package/build/types/prompt/ActionPrompt/index.d.ts +3 -0
  96. package/build/types/prompt/ActionPrompt/index.d.ts.map +1 -0
  97. package/build/types/prompt/InfoPrompt/InfoPrompt.d.ts +56 -0
  98. package/build/types/prompt/InfoPrompt/InfoPrompt.d.ts.map +1 -0
  99. package/build/types/prompt/InfoPrompt/index.d.ts +3 -0
  100. package/build/types/prompt/InfoPrompt/index.d.ts.map +1 -0
  101. package/build/types/prompt/PrimitivePrompt/PrimitivePrompt.d.ts +5 -5
  102. package/build/types/prompt/PrimitivePrompt/PrimitivePrompt.d.ts.map +1 -1
  103. package/build/types/prompt/index.d.ts +4 -0
  104. package/build/types/prompt/index.d.ts.map +1 -1
  105. package/build/types/radioOption/RadioOption.d.ts.map +1 -1
  106. package/build/types/slidingPanel/SlidingPanel.d.ts.map +1 -1
  107. package/build/types/statusIcon/StatusIcon.d.ts +2 -1
  108. package/build/types/statusIcon/StatusIcon.d.ts.map +1 -1
  109. package/build/types/table/TableCell.d.ts.map +1 -1
  110. package/build/types/tabs/Tabs.d.ts +2 -24
  111. package/build/types/tabs/Tabs.d.ts.map +1 -1
  112. package/build/types/tabs/utils.d.ts +0 -2
  113. package/build/types/tabs/utils.d.ts.map +1 -1
  114. package/build/types/withDisplayFormat/WithDisplayFormat.d.ts.map +1 -1
  115. package/build/withDisplayFormat/WithDisplayFormat.js.map +1 -1
  116. package/build/withDisplayFormat/WithDisplayFormat.mjs.map +1 -1
  117. package/package.json +2 -3
  118. package/src/actionButton/ActionButton.story.tsx +2 -9
  119. package/src/avatar/Avatar.story.tsx +2 -8
  120. package/src/avatarLayout/AvatarLayout.story.tsx +3 -3
  121. package/src/avatarView/AvatarView.story.tsx +29 -24
  122. package/src/avatarView/AvatarView.tsx +1 -1
  123. package/src/button/_stories/{Button.tests.story.tsx → Button.test.story.tsx} +5 -10
  124. package/src/checkbox/Checkbox.story.tsx +3 -16
  125. package/src/circularButton/CircularButton.story.tsx +2 -7
  126. package/src/common/bottomSheet/BottomSheet.story.tsx +6 -32
  127. package/src/common/bottomSheet/BottomSheet.test.story.tsx +98 -0
  128. package/src/common/circle/Circle.story.tsx +3 -14
  129. package/src/common/locale/{index.spec.ts → index.test.ts} +36 -1
  130. package/src/common/locale/index.ts +13 -0
  131. package/src/criticalBanner/CriticalCommsBanner.story.tsx +3 -16
  132. package/src/dateInput/{DateInput.tests.story.tsx → DateInput.test.story.tsx} +3 -13
  133. package/src/dateLookup/DateLookup.story.tsx +9 -7
  134. package/src/expressiveMoneyInput/currencySelector/CurrencySelector.tsx +5 -1
  135. package/src/header/{Header.tests.story.tsx → Header.test.story.tsx} +5 -10
  136. package/src/index.ts +4 -2
  137. package/src/info/Info.story.tsx +4 -20
  138. package/src/inputs/Input.tsx +8 -9
  139. package/src/inputs/SearchInput.tsx +8 -9
  140. package/src/inputs/SelectInput.test.story.tsx +86 -0
  141. package/src/inputs/SelectInput.tsx +1 -1
  142. package/src/inputs/TextArea.tsx +6 -7
  143. package/src/listItem/ListItem.tsx +2 -2
  144. package/src/listItem/_stories/variants/ListItem.brightGreen.test.story.tsx +2 -7
  145. package/src/listItem/_stories/variants/ListItem.dark.test.story.tsx +2 -7
  146. package/src/listItem/_stories/variants/ListItem.forestGreen.test.story.tsx +2 -7
  147. package/src/listItem/_stories/variants/ListItem.rtl.test.story.tsx +2 -7
  148. package/src/main.css +63 -2
  149. package/src/main.less +3 -1
  150. package/src/modal/Modal.story.tsx +6 -31
  151. package/src/moneyInput/MoneyInput.test.story.tsx +104 -0
  152. package/src/moneyInput/MoneyInput.tsx +20 -2
  153. package/src/primitives/PrimitiveAnchor/PrimitiveAnchor.types.ts +1 -3
  154. package/src/primitives/PrimitiveButton/PrimitiveButton.types.ts +1 -3
  155. package/src/prompt/ActionPrompt/ActionPrompt.accessibility.docs.mdx +65 -0
  156. package/src/prompt/ActionPrompt/ActionPrompt.css +21 -0
  157. package/src/prompt/ActionPrompt/ActionPrompt.less +23 -0
  158. package/src/prompt/ActionPrompt/ActionPrompt.story.tsx +187 -0
  159. package/src/prompt/ActionPrompt/ActionPrompt.test.story.tsx +147 -0
  160. package/src/prompt/ActionPrompt/ActionPrompt.test.tsx +251 -0
  161. package/src/prompt/ActionPrompt/ActionPrompt.tsx +170 -0
  162. package/src/prompt/ActionPrompt/index.ts +2 -0
  163. package/src/prompt/InfoPrompt/InfoPrompt.css +31 -0
  164. package/src/prompt/InfoPrompt/InfoPrompt.less +37 -0
  165. package/src/prompt/InfoPrompt/InfoPrompt.story.tsx +312 -0
  166. package/src/prompt/InfoPrompt/InfoPrompt.test.story.tsx +246 -0
  167. package/src/prompt/InfoPrompt/InfoPrompt.test.tsx +224 -0
  168. package/src/prompt/InfoPrompt/InfoPrompt.tsx +148 -0
  169. package/src/prompt/InfoPrompt/index.ts +2 -0
  170. package/src/prompt/InlinePrompt/{InlinePrompt.spec.tsx → InlinePrompt.test.tsx} +3 -38
  171. package/src/prompt/PrimitivePrompt/PrimitivePrompt.css +11 -2
  172. package/src/prompt/PrimitivePrompt/PrimitivePrompt.less +13 -3
  173. package/src/prompt/PrimitivePrompt/PrimitivePrompt.test.tsx +161 -0
  174. package/src/prompt/PrimitivePrompt/PrimitivePrompt.tsx +20 -16
  175. package/src/prompt/index.ts +8 -0
  176. package/src/radioOption/RadioOption.tsx +2 -1
  177. package/src/slidingPanel/SlidingPanel.tsx +4 -2
  178. package/src/snackbar/{Snackbar.tests.story.tsx → Snackbar.test.story.tsx} +6 -32
  179. package/src/{ssr.spec.tsx → ssr.test.tsx} +3 -0
  180. package/src/statusIcon/StatusIcon.story.tsx +5 -9
  181. package/src/statusIcon/StatusIcon.tsx +8 -1
  182. package/src/table/TableCell.tsx +1 -3
  183. package/src/tabs/Tabs.story.tsx +1 -45
  184. package/src/tabs/{Tabs.spec.tsx → Tabs.test.tsx} +0 -22
  185. package/src/tabs/Tabs.tsx +23 -240
  186. package/src/tabs/utils.test.ts +68 -0
  187. package/src/tabs/utils.ts +0 -20
  188. package/src/tooltip/Tooltip.story.tsx +2 -7
  189. package/src/withDisplayFormat/WithDisplayFormat.tsx +13 -14
  190. package/src/tabs/utils.spec.ts +0 -126
  191. /package/src/accordion/{Accordion.spec.js → Accordion.test.js} +0 -0
  192. /package/src/accordion/AccordionItem/{AccordionItem.spec.js → AccordionItem.test.js} +0 -0
  193. /package/src/accordion/AccordionItem/__snapshots__/{AccordionItem.spec.js.snap → AccordionItem.test.js.snap} +0 -0
  194. /package/src/accordion/__snapshots__/{Accordion.spec.js.snap → Accordion.test.js.snap} +0 -0
  195. /package/src/actionButton/{ActionButton.spec.tsx → ActionButton.test.tsx} +0 -0
  196. /package/src/actionButton/__snapshots__/{ActionButton.spec.tsx.snap → ActionButton.test.tsx.snap} +0 -0
  197. /package/src/actionOption/{ActionOption.spec.tsx → ActionOption.test.tsx} +0 -0
  198. /package/src/alert/{Alert.tests.story.tsx → Alert.test.story.tsx} +0 -0
  199. /package/src/alert/{Alert.spec.tsx → Alert.test.tsx} +0 -0
  200. /package/src/avatar/{Avatar.spec.tsx → Avatar.test.tsx} +0 -0
  201. /package/src/avatarWrapper/{AvatarWrapper.spec.tsx → AvatarWrapper.test.tsx} +0 -0
  202. /package/src/avatarWrapper/__snapshots__/{AvatarWrapper.spec.tsx.snap → AvatarWrapper.test.tsx.snap} +0 -0
  203. /package/src/badge/{Badge.spec.tsx → Badge.test.tsx} +0 -0
  204. /package/src/body/{Body.spec.tsx → Body.test.tsx} +0 -0
  205. /package/src/button/{Button.spec.tsx → Button.test.tsx} +0 -0
  206. /package/src/button/{LegacyButton.spec.tsx → LegacyButton.test.tsx} +0 -0
  207. /package/src/button/_stories/{Button.brightGreen.tests.story.tsx → Button.brightGreen.test.story.tsx} +0 -0
  208. /package/src/button/_stories/{Button.dark.tests.story.tsx → Button.dark.test.story.tsx} +0 -0
  209. /package/src/button/_stories/{Button.default.tests.story.tsx → Button.default.test.story.tsx} +0 -0
  210. /package/src/button/_stories/{Button.forestGreen.tests.story.tsx → Button.forestGreen.test.story.tsx} +0 -0
  211. /package/src/button/legacyUtils/{legacyUtils.spec.tsx → legacyUtils.test.tsx} +0 -0
  212. /package/src/card/{Card.spec.tsx → Card.test.tsx} +0 -0
  213. /package/src/carousel/{Carousel.spec.tsx → Carousel.test.tsx} +0 -0
  214. /package/src/checkbox/{Checkbox.spec.tsx → Checkbox.test.tsx} +0 -0
  215. /package/src/checkbox/__snapshots__/{Checkbox.spec.tsx.snap → Checkbox.test.tsx.snap} +0 -0
  216. /package/src/checkboxButton/{CheckboxButton.spec.tsx → CheckboxButton.test.tsx} +0 -0
  217. /package/src/checkboxOption/{CheckboxOption.spec.tsx → CheckboxOption.test.tsx} +0 -0
  218. /package/src/chevron/{Chevron.spec.tsx → Chevron.test.tsx} +0 -0
  219. /package/src/chevron/__snapshots__/{Chevron.spec.tsx.snap → Chevron.test.tsx.snap} +0 -0
  220. /package/src/chips/{Chips.spec.tsx → Chips.test.tsx} +0 -0
  221. /package/src/chips/__snapshots__/{Chips.spec.tsx.snap → Chips.test.tsx.snap} +0 -0
  222. /package/src/circularButton/{CircularButton.tests.story.tsx → CircularButton.test.story.tsx} +0 -0
  223. /package/src/circularButton/{CircularButton.spec.tsx → CircularButton.test.tsx} +0 -0
  224. /package/src/common/DOMOperations/{DOMOperations.spec.tsx → DOMOperations.test.tsx} +0 -0
  225. /package/src/common/Option/{Option.spec.tsx → Option.test.tsx} +0 -0
  226. /package/src/common/RadioButton/{RadioButton.spec.tsx → RadioButton.test.tsx} +0 -0
  227. /package/src/common/RadioButton/__snapshots__/{RadioButton.spec.tsx.snap → RadioButton.test.tsx.snap} +0 -0
  228. /package/src/common/bottomSheet/{BottomSheet.spec.tsx → BottomSheet.test.tsx} +0 -0
  229. /package/src/common/bottomSheet/__snapshots__/{BottomSheet.spec.tsx.snap → BottomSheet.test.tsx.snap} +0 -0
  230. /package/src/common/card/{Card.spec.tsx → Card.test.tsx} +0 -0
  231. /package/src/common/card/__snapshots__/{Card.spec.tsx.snap → Card.test.tsx.snap} +0 -0
  232. /package/src/common/closeButton/{CloseButton.spec.tsx → CloseButton.test.tsx} +0 -0
  233. /package/src/common/closeButton/__snapshots__/{CloseButton.spec.tsx.snap → CloseButton.test.tsx.snap} +0 -0
  234. /package/src/common/dateUtils/getDayNames/{getDayNames.spec.js → getDayNames.test.js} +0 -0
  235. /package/src/common/dateUtils/getMonthNames/{getMonthNames.spec.js → getMonthNames.test.js} +0 -0
  236. /package/src/common/dateUtils/isDateValid/{isDateValid.spec.ts → isDateValid.test.ts} +0 -0
  237. /package/src/common/dateUtils/isMonthAndYearFormat/{isMonthAndYearFormat.spec.js → isMonthAndYearFormat.test.js} +0 -0
  238. /package/src/common/dateUtils/isWithinRange/{isWithinRange.spec.ts → isWithinRange.test.ts} +0 -0
  239. /package/src/common/dateUtils/moveToWithinRange/{moveToWithinRange.spec.js → moveToWithinRange.test.js} +0 -0
  240. /package/src/common/deviceDetection/{deviceDetection.spec.ts → deviceDetection.test.ts} +0 -0
  241. /package/src/common/domHelpers/{documentIosClick.spec.ts → documentIosClick.test.ts} +0 -0
  242. /package/src/common/flowHeader/{FlowHeader.spec.tsx → FlowHeader.test.tsx} +0 -0
  243. /package/src/common/flowHeader/__snapshots__/{FlowHeader.spec.tsx.snap → FlowHeader.test.tsx.snap} +0 -0
  244. /package/src/common/historyNavigator/{historyNavigator.spec.ts → historyNavigator.test.ts} +0 -0
  245. /package/src/common/hooks/useConditionalListener/{useConditionalListener.spec.js → useConditionalListener.test.js} +0 -0
  246. /package/src/common/hooks/useDirection/{useDirection.spec.js → useDirection.test.js} +0 -0
  247. /package/src/common/hooks/useHasIntersected/{useHasIntersected.spec.js → useHasIntersected.test.js} +0 -0
  248. /package/src/common/hooks/{useMedia.spec.ts → useMedia.test.ts} +0 -0
  249. /package/src/common/{initials.spec.tsx → initials.test.tsx} +0 -0
  250. /package/src/common/panel/{Panel.spec.tsx → Panel.test.tsx} +0 -0
  251. /package/src/common/panel/__snapshots__/{Panel.spec.tsx.snap → Panel.test.tsx.snap} +0 -0
  252. /package/src/common/responsivePanel/{ResponsivePanel.spec.js → ResponsivePanel.test.js} +0 -0
  253. /package/src/common/textFormat/formatWithPattern/{formatWithPattern.spec.ts → formatWithPattern.test.ts} +0 -0
  254. /package/src/common/textFormat/getCountOfSymbolsInSelection/{getCountOfSymbolsInSelection.spec.ts → getCountOfSymbolsInSelection.test.ts} +0 -0
  255. /package/src/common/textFormat/getCursorPositionAfterKeystroke/{getCursorPositionAfterKeystroke.spec.ts → getCursorPositionAfterKeystroke.test.ts} +0 -0
  256. /package/src/common/textFormat/getDistanceToSymbol/{getDistanceToSymbol.spec.ts → getDistanceToSymbol.test.ts} +0 -0
  257. /package/src/common/textFormat/getSymbolsInPatternWithPosition/{getSymbolsInPatternWithPosition.spec.ts → getSymbolsInPatternWithPosition.test.ts} +0 -0
  258. /package/src/common/textFormat/unformatWithPattern/{unformatWithPattern.spec.ts → unformatWithPattern.test.ts} +0 -0
  259. /package/src/dateInput/{DateInput.spec.tsx → DateInput.test.tsx} +0 -0
  260. /package/src/dateInput/utils/convertToLocalMidnight/{convertToLocalMidnight.spec.ts → convertToLocalMidnight.test.ts} +0 -0
  261. /package/src/dateLookup/{DateLookup.tests.story.tsx → DateLookup.test.story.tsx} +0 -0
  262. /package/src/dateLookup/{DateLookup.spec.tsx → DateLookup.test.tsx} +0 -0
  263. /package/src/dateLookup/getFocusableTime/{getFocusable.spec.ts → getFocusable.test.ts} +0 -0
  264. /package/src/dateLookup/getStartOfDay/{getStartOfDay.spec.js → getStartOfDay.test.js} +0 -0
  265. /package/src/decision/{Decision.spec.tsx → Decision.test.tsx} +0 -0
  266. /package/src/dimmer/{Dimmer.spec.tsx → Dimmer.test.tsx} +0 -0
  267. /package/src/divider/{Divider.spec.tsx → Divider.test.tsx} +0 -0
  268. /package/src/drawer/{Drawer.spec.tsx → Drawer.test.tsx} +0 -0
  269. /package/src/emphasis/{Emphasis.spec.tsx → Emphasis.test.tsx} +0 -0
  270. /package/src/emphasis/{EmphasisHtmlTransformer.spec.tsx → EmphasisHtmlTransformer.test.tsx} +0 -0
  271. /package/src/expressiveMoneyInput/{ExpressiveMoneyInput.spec.tsx → ExpressiveMoneyInput.test.tsx} +0 -0
  272. /package/src/expressiveMoneyInput/amountInput/{AmountInput.spec.tsx → AmountInput.test.tsx} +0 -0
  273. /package/src/expressiveMoneyInput/amountInput/{utils.spec.ts → utils.test.ts} +0 -0
  274. /package/src/expressiveMoneyInput/currencySelector/{CurrencySelector.spec.tsx → CurrencySelector.test.tsx} +0 -0
  275. /package/src/field/{Field.spec.tsx → Field.test.tsx} +0 -0
  276. /package/src/flowNavigation/{FlowNavigation.spec.js → FlowNavigation.test.js} +0 -0
  277. /package/src/flowNavigation/__snapshots__/{FlowNavigation.spec.js.snap → FlowNavigation.test.js.snap} +0 -0
  278. /package/src/flowNavigation/animatedLabel/{AnimatedLabel.spec.js → AnimatedLabel.test.js} +0 -0
  279. /package/src/header/{Header.spec.tsx → Header.test.tsx} +0 -0
  280. /package/src/iconButton/{iconButton.spec.tsx → iconButton.test.tsx} +0 -0
  281. /package/src/image/{Image.spec.tsx → Image.test.tsx} +0 -0
  282. /package/src/info/{Info.spec.jsx → Info.test.jsx} +0 -0
  283. /package/src/inlineAlert/{InlineAlert.spec.tsx → InlineAlert.test.tsx} +0 -0
  284. /package/src/inputWithDisplayFormat/{InputWithDisplayFormat.spec.js → InputWithDisplayFormat.test.js} +0 -0
  285. /package/src/inputs/{InputGroup.spec.tsx → InputGroup.test.tsx} +0 -0
  286. /package/src/inputs/{SearchInput.spec.tsx → SearchInput.test.tsx} +0 -0
  287. /package/src/inputs/{SelectInput.spec.tsx → SelectInput.test.tsx} +0 -0
  288. /package/src/instructionsList/{InstructionsList.spec.tsx → InstructionsList.test.tsx} +0 -0
  289. /package/src/label/{Label.spec.tsx → Label.test.tsx} +0 -0
  290. /package/src/legacylistItem/{LegacyListItem.tests.story.tsx → LegacyListItem.test.story.tsx} +0 -0
  291. /package/src/legacylistItem/{LegacyListItem.spec.tsx → LegacyListItem.test.tsx} +0 -0
  292. /package/src/link/{Link.spec.tsx → Link.test.tsx} +0 -0
  293. /package/src/list/{List.spec.tsx → List.test.tsx} +0 -0
  294. /package/src/listItem/AdditionalInfo/{ListItemAdditionalInfo.spec.tsx → ListItemAdditionalInfo.test.tsx} +0 -0
  295. /package/src/listItem/AvatarLayout/{ListItemAvatarLayout.spec.tsx → ListItemAvatarLayout.test.tsx} +0 -0
  296. /package/src/listItem/AvatarView/{ListItemAvatarView.spec.tsx → ListItemAvatarView.test.tsx} +0 -0
  297. /package/src/listItem/Button/{ListItemButton.spec.tsx → ListItemButton.test.tsx} +0 -0
  298. /package/src/listItem/Checkbox/{ListItemCheckbox.spec.tsx → ListItemCheckbox.test.tsx} +0 -0
  299. /package/src/listItem/IconButton/{ListItemIconButton.spec.tsx → ListItemIconButton.test.tsx} +0 -0
  300. /package/src/listItem/Image/{ListItemImage.spec.tsx → ListItemImage.test.tsx} +0 -0
  301. /package/src/listItem/{ListItem.spec.tsx → ListItem.test.tsx} +0 -0
  302. /package/src/listItem/Navigation/{ListItemNavigation.spec.tsx → ListItemNavigation.test.tsx} +0 -0
  303. /package/src/listItem/Prompt/{ListItemPrompt.spec.tsx → ListItemPrompt.test.tsx} +0 -0
  304. /package/src/listItem/Radio/{ListItemRadio.spec.tsx → ListItemRadio.test.tsx} +0 -0
  305. /package/src/listItem/Switch/{ListItemSwitch.spec.tsx → ListItemSwitch.test.tsx} +0 -0
  306. /package/src/loader/{Loader.spec.tsx → Loader.test.tsx} +0 -0
  307. /package/src/logo/{Logo.spec.tsx → Logo.test.tsx} +0 -0
  308. /package/src/logo/__snapshots__/{Logo.spec.tsx.snap → Logo.test.tsx.snap} +0 -0
  309. /package/src/markdown/{Markdown.spec.tsx → Markdown.test.tsx} +0 -0
  310. /package/src/modal/{Modal.spec.tsx → Modal.test.tsx} +0 -0
  311. /package/src/money/{Money.spec.tsx → Money.test.tsx} +0 -0
  312. /package/src/moneyInput/{MoneyInput.spec.tsx → MoneyInput.test.tsx} +0 -0
  313. /package/src/moneyInput/{currencyFormatting.spec.ts → currencyFormatting.test.ts} +0 -0
  314. /package/src/navigationOption/{NavigationOption.spec.tsx → NavigationOption.test.tsx} +0 -0
  315. /package/src/navigationOptionsList/{NavigationOptionsList.spec.tsx → NavigationOptionsList.test.tsx} +0 -0
  316. /package/src/nudge/{Nudge.spec.tsx → Nudge.test.tsx} +0 -0
  317. /package/src/overlayHeader/{OverlayHeader.spec.tsx → OverlayHeader.test.tsx} +0 -0
  318. /package/src/overlayHeader/__snapshots__/{OverlayHeader.spec.tsx.snap → OverlayHeader.test.tsx.snap} +0 -0
  319. /package/src/phoneNumberInput/{PhoneNumberInput.spec.tsx → PhoneNumberInput.test.tsx} +0 -0
  320. /package/src/phoneNumberInput/utils/cleanNumber/{cleanNumber.spec.ts → cleanNumber.test.ts} +0 -0
  321. /package/src/phoneNumberInput/utils/excludeCountries/{excludeCountries.spec.ts → excludeCountries.test.ts} +0 -0
  322. /package/src/phoneNumberInput/utils/explodeNumberModel/{explodeNumberModel.spec.ts → explodeNumberModel.test.ts} +0 -0
  323. /package/src/phoneNumberInput/utils/findCountryByCode/{findCountryByCode.spec.ts → findCountryByCode.test.ts} +0 -0
  324. /package/src/phoneNumberInput/utils/findCountryByPrefix/{findCountryByPrefix.spec.ts → findCountryByPrefix.test.ts} +0 -0
  325. /package/src/phoneNumberInput/utils/groupCountriesByPrefix/{groupCountriesByPrefix.spec.ts → groupCountriesByPrefix.test.ts} +0 -0
  326. /package/src/phoneNumberInput/utils/isStringNumeric/{isStringNumeric.spec.ts → isStringNumeric.test.ts} +0 -0
  327. /package/src/phoneNumberInput/utils/isValidPhoneNumber/{isValidPhoneNumber.spec.ts → isValidPhoneNumber.test.ts} +0 -0
  328. /package/src/phoneNumberInput/utils/longestMatchingPrefix/{longestMatchingPrefix.spec.ts → longestMatchingPrefix.test.ts} +0 -0
  329. /package/src/phoneNumberInput/utils/setDefaultPrefix/{setDefaultPrefix.spec.ts → setDefaultPrefix.test.ts} +0 -0
  330. /package/src/phoneNumberInput/utils/sortArrayByProperty/{sortArrayByProperty.spec.ts → sortArrayByProperty.test.ts} +0 -0
  331. /package/src/popover/{Popover.spec.tsx → Popover.test.tsx} +0 -0
  332. /package/src/popover/__snapshots__/{Popover.spec.tsx.snap → Popover.test.tsx.snap} +0 -0
  333. /package/src/primitives/PrimitiveAnchor/stories/{PrimitiveAnchor.tests.story.tsx → PrimitiveAnchor.test.story.tsx} +0 -0
  334. /package/src/primitives/PrimitiveAnchor/test/{PrimitiveAnchor.spec.tsx → PrimitiveAnchor.test.tsx} +0 -0
  335. /package/src/primitives/PrimitiveButton/stories/{PrimitiveButton.tests.story.tsx → PrimitiveButton.test.story.tsx} +0 -0
  336. /package/src/primitives/PrimitiveButton/test/{PrimitiveButton.spec.tsx → PrimitiveButton.test.tsx} +0 -0
  337. /package/src/processIndicator/{ProcessIndicator.rtl.spec.tsx → ProcessIndicator.rtl.test.tsx} +0 -0
  338. /package/src/progress/{Progress.spec.tsx → Progress.test.tsx} +0 -0
  339. /package/src/progressBar/{ProgressBar.spec.tsx → ProgressBar.test.tsx} +0 -0
  340. /package/src/promoCard/{PromoCard.spec.tsx → PromoCard.test.tsx} +0 -0
  341. /package/src/promoCard/{PromoCardContext.spec.tsx → PromoCardContext.test.tsx} +0 -0
  342. /package/src/promoCard/{PromoCardGroup.spec.tsx → PromoCardGroup.test.tsx} +0 -0
  343. /package/src/promoCard/__snapshots__/{PromoCard.spec.tsx.snap → PromoCard.test.tsx.snap} +0 -0
  344. /package/src/promoCard/__snapshots__/{PromoCardGroup.spec.tsx.snap → PromoCardGroup.test.tsx.snap} +0 -0
  345. /package/src/provider/{Provider.spec.tsx → Provider.test.tsx} +0 -0
  346. /package/src/provider/direction/{DirectionProvider.spec.tsx → DirectionProvider.test.tsx} +0 -0
  347. /package/src/provider/language/{LanguageProvider.spec.tsx → LanguageProvider.test.tsx} +0 -0
  348. /package/src/radio/{Radio.spec.tsx → Radio.test.tsx} +0 -0
  349. /package/src/radioGroup/{RadioGroup.spec.tsx → RadioGroup.test.tsx} +0 -0
  350. /package/src/radioOption/{RadioOption.spec.tsx → RadioOption.test.tsx} +0 -0
  351. /package/src/section/{Section.spec.tsx → Section.test.tsx} +0 -0
  352. /package/src/segmentedControl/{SegmentedControl.spec.tsx → SegmentedControl.test.tsx} +0 -0
  353. /package/src/select/{Select.rtl.spec.tsx → Select.rtl.test.tsx} +0 -0
  354. /package/src/select/{Select.spec.tsx → Select.test.tsx} +0 -0
  355. /package/src/select/option/{Option.spec.tsx → Option.test.tsx} +0 -0
  356. /package/src/select/searchBox/{SearchBox.spec.tsx → SearchBox.test.tsx} +0 -0
  357. /package/src/sentimentSurface/{SentimentSurface.tests.story.tsx → SentimentSurface.test.story.tsx} +0 -0
  358. /package/src/sentimentSurface/{SentimentSurface.spec.tsx → SentimentSurface.test.tsx} +0 -0
  359. /package/src/slidingPanel/{SlidingPanel.spec.tsx → SlidingPanel.test.tsx} +0 -0
  360. /package/src/statusIcon/{StatusIcon.spec.tsx → StatusIcon.test.tsx} +0 -0
  361. /package/src/stepper/{Stepper.tests.story.tsx → Stepper.test.story.tsx} +0 -0
  362. /package/src/stepper/{Stepper.spec.tsx → Stepper.test.tsx} +0 -0
  363. /package/src/stepper/{deviceDetection.spec.ts → deviceDetection.test.ts} +0 -0
  364. /package/src/sticky/{Sticky.spec.tsx → Sticky.test.tsx} +0 -0
  365. /package/src/summary/{Summary.tests.story.tsx → Summary.test.story.tsx} +0 -0
  366. /package/src/summary/{Summary.spec.tsx → Summary.test.tsx} +0 -0
  367. /package/src/switch/{Switch.spec.tsx → Switch.test.tsx} +0 -0
  368. /package/src/switchOption/{SwitchOption.spec.tsx → SwitchOption.test.tsx} +0 -0
  369. /package/src/table/{Table.spec.tsx → Table.test.tsx} +0 -0
  370. /package/src/table/{TableCell.spec.tsx → TableCell.test.tsx} +0 -0
  371. /package/src/table/{TableHeader.spec.tsx → TableHeader.test.tsx} +0 -0
  372. /package/src/table/{TableRow.spec.tsx → TableRow.test.tsx} +0 -0
  373. /package/src/table/{TableStatusText.spec.tsx → TableStatusText.test.tsx} +0 -0
  374. /package/src/textareaWithDisplayFormat/{TextareaWithDisplayFormat.spec.js → TextareaWithDisplayFormat.test.js} +0 -0
  375. /package/src/tile/{Tile.spec.tsx → Tile.test.tsx} +0 -0
  376. /package/src/tile/__snapshots__/{Tile.spec.tsx.snap → Tile.test.tsx.snap} +0 -0
  377. /package/src/title/{Title.spec.tsx → Title.test.tsx} +0 -0
  378. /package/src/tooltip/{Tooltip.spec.tsx → Tooltip.test.tsx} +0 -0
  379. /package/src/tooltip/__snapshots__/{Tooltip.spec.tsx.snap → Tooltip.test.tsx.snap} +0 -0
  380. /package/src/typeahead/{Typeahead.spec.tsx → Typeahead.test.tsx} +0 -0
  381. /package/src/typeahead/typeaheadInput/{TypeaheadInput.spec.tsx → TypeaheadInput.test.tsx} +0 -0
  382. /package/src/typeahead/util/{highlight.spec.tsx → highlight.test.tsx} +0 -0
  383. /package/src/upload/{Upload.tests.story.tsx → Upload.test.story.tsx} +0 -0
  384. /package/src/upload/{Upload.spec.tsx → Upload.test.tsx} +0 -0
  385. /package/src/upload/steps/completeStep/{completeStep.spec.tsx → completeStep.test.tsx} +0 -0
  386. /package/src/upload/steps/processingStep/{processingStep.spec.tsx → processingStep.test.tsx} +0 -0
  387. /package/src/upload/steps/uploadImageStep/{uploadImageStep.spec.tsx → uploadImageStep.test.tsx} +0 -0
  388. /package/src/upload/utils/asyncFileRead/{asyncFileRead.spec.ts → asyncFileRead.test.ts} +0 -0
  389. /package/src/upload/utils/getFileType/{getFileType.spec.ts → getFileType.test.ts} +0 -0
  390. /package/src/upload/utils/isSizeValid/{isSizeValid.spec.ts → isSizeValid.test.ts} +0 -0
  391. /package/src/upload/utils/isTypeValid/{isTypeValid.spec.ts → isTypeValid.test.ts} +0 -0
  392. /package/src/upload/utils/postData/{postData.spec.ts → postData.test.ts} +0 -0
  393. /package/src/uploadInput/{UploadInput.tests.story.tsx → UploadInput.test.story.tsx} +0 -0
  394. /package/src/uploadInput/{UploadInput.spec.tsx → UploadInput.test.tsx} +0 -0
  395. /package/src/uploadInput/uploadButton/{UploadButton.spec.tsx → UploadButton.test.tsx} +0 -0
  396. /package/src/uploadInput/uploadButton/{getAllowedFileTypes.spec.ts → getAllowedFileTypes.test.ts} +0 -0
  397. /package/src/uploadInput/uploadItem/{UploadItem.spec.tsx → UploadItem.test.tsx} +0 -0
  398. /package/src/utilities/deprecatedProperty/{deprecatedProperty.spec.ts → deprecatedProperty.test.ts} +0 -0
  399. /package/src/withDisplayFormat/{WithDisplayFormat.spec.js → WithDisplayFormat.test.js} +0 -0
  400. /package/src/withId/{withId.spec.tsx → withId.test.tsx} +0 -0
  401. /package/src/withNextPortal/{withNextPortal.spec.tsx → withNextPortal.test.tsx} +0 -0
@@ -4,7 +4,7 @@ import { userEvent, within } from 'storybook/test';
4
4
  import { lorem10 } from '../test-utils';
5
5
 
6
6
  import Info, { InfoPresentation } from '.';
7
- import { allModes } from '../../.storybook/modes';
7
+ import { withVariantConfig } from '../../.storybook/helpers';
8
8
 
9
9
  const meta = {
10
10
  component: Info,
@@ -27,13 +27,7 @@ export default meta;
27
27
  type Story = StoryObj<typeof meta>;
28
28
 
29
29
  export const Basic: Story = {
30
- parameters: {
31
- variants: ['default', 'dark', 'rtl'],
32
- chromatic: {
33
- dark: allModes.dark,
34
- rtl: allModes.rtl,
35
- },
36
- },
30
+ ...withVariantConfig(['default', 'dark', 'rtl']),
37
31
  };
38
32
 
39
33
  export const OpenedPopover = {
@@ -50,12 +44,7 @@ export const OpenedPopover = {
50
44
 
51
45
  export const OpenedPopoverMobile: Story = {
52
46
  ...OpenedPopover,
53
- parameters: {
54
- variants: ['mobile'],
55
- chromatic: {
56
- mobile: allModes.largeMobile,
57
- },
58
- },
47
+ ...withVariantConfig(['mobile'], OpenedPopover),
59
48
  };
60
49
 
61
50
  export const OpenedModal = {
@@ -67,10 +56,5 @@ export const OpenedModal = {
67
56
 
68
57
  export const OpenedModalMobile: Story = {
69
58
  ...OpenedModal,
70
- parameters: {
71
- variants: ['mobile'],
72
- chromatic: {
73
- mobile: allModes.largeMobile,
74
- },
75
- },
59
+ ...withVariantConfig(['mobile'], OpenedModal),
76
60
  };
@@ -7,15 +7,14 @@ import { inputClassNameBase } from './_common';
7
7
  import { useInputAttributes } from './contexts';
8
8
  import { useInputPaddings } from './InputGroup';
9
9
 
10
- export interface InputProps
11
- extends Merge<
12
- React.ComponentPropsWithRef<'input'>,
13
- {
14
- size?: 'auto' | SizeSmall | SizeMedium | SizeLarge;
15
- shape?: 'rectangle' | 'pill';
16
- 'aria-invalid'?: boolean;
17
- }
18
- > {}
10
+ export interface InputProps extends Merge<
11
+ React.ComponentPropsWithRef<'input'>,
12
+ {
13
+ size?: 'auto' | SizeSmall | SizeMedium | SizeLarge;
14
+ shape?: 'rectangle' | 'pill';
15
+ 'aria-invalid'?: boolean;
16
+ }
17
+ > {}
19
18
 
20
19
  export const Input = forwardRef(function Input(
21
20
  { size = 'auto', shape = 'rectangle', className, ...restProps }: InputProps,
@@ -7,15 +7,14 @@ import { Merge } from '../utils';
7
7
  import { Input } from './Input';
8
8
  import { InputGroup } from './InputGroup';
9
9
 
10
- export interface SearchInputProps
11
- extends Merge<
12
- React.ComponentPropsWithRef<'input'>,
13
- {
14
- size?: Size.SMALL | Size.MEDIUM;
15
- shape?: 'rectangle' | 'pill';
16
- 'aria-invalid'?: boolean;
17
- }
18
- > {}
10
+ export interface SearchInputProps extends Merge<
11
+ React.ComponentPropsWithRef<'input'>,
12
+ {
13
+ size?: Size.SMALL | Size.MEDIUM;
14
+ shape?: 'rectangle' | 'pill';
15
+ 'aria-invalid'?: boolean;
16
+ }
17
+ > {}
19
18
 
20
19
  export const SearchInput = forwardRef(function SearchInput(
21
20
  { shape = 'pill', size = Size.MEDIUM, disabled, className, ...restProps }: SearchInputProps,
@@ -0,0 +1,86 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-webpack5';
2
+ import { fireEvent, fn, type Mock, within } from 'storybook/test';
3
+ import { allModes } from '../../.storybook/modes';
4
+ import { lorem5, lorem500 } from '../test-utils';
5
+ import { Field } from '../field/Field';
6
+ import Body from '../body';
7
+ import { SelectInput, type SelectInputProps } from './SelectInput';
8
+
9
+ const meta = {
10
+ title: 'Forms/SelectInput/tests',
11
+ component: SelectInput,
12
+ args: {
13
+ onFilterChange: fn() satisfies Mock,
14
+ onChange: fn() satisfies Mock,
15
+ onClose: fn() satisfies Mock,
16
+ onOpen: fn() satisfies Mock,
17
+ },
18
+ tags: ['!autodocs'],
19
+ } satisfies Meta<typeof SelectInput>;
20
+ export default meta;
21
+
22
+ type Story<T, M extends boolean = false> = StoryObj<SelectInputProps<T, M>>;
23
+
24
+ const wait = async (duration = 500) =>
25
+ new Promise<void>((resolve) => {
26
+ setTimeout(resolve, duration);
27
+ });
28
+
29
+ /**
30
+ * This test ensures that when the SelectInput is used within a scrollable page,
31
+ * opening the dropdown does not cause any unwanted scrolling or layout shifts.
32
+ * Expected preview should start with green bar at the top, with yellow section
33
+ * not in the viewport. The issue is particularly prominent on iOS Safari.
34
+ *
35
+ * NB: This test is disabled in Chromatic as there's no obvious way to control
36
+ * <html/> element of a snapshot. It's to be primarily used in manual testing
37
+ * on an actual device or a simulator as it cannot be reproduced with mobile
38
+ * emulation modes on desktop browsers.
39
+ */
40
+ export const SmoothScrollReset: Story<string> = {
41
+ args: {
42
+ items: Array.from({ length: 15 }).map((_, id) => ({
43
+ type: 'option',
44
+ value: `option ${id + 1}`,
45
+ })),
46
+ placeholder: 'Select option',
47
+ },
48
+ decorators: [
49
+ (Story) => (
50
+ <>
51
+ <style>{`html { scroll-behavior: smooth; }`}</style>
52
+ <div>
53
+ <div
54
+ className="d-flex align-items-center justify-content-center"
55
+ style={{
56
+ backgroundColor: 'var(--color-bright-yellow)',
57
+ height: 400,
58
+ }}
59
+ >
60
+ This block should not be in the viewport.
61
+ </div>
62
+ <div style={{ height: 10, backgroundColor: 'var(--color-bright-green)' }} />
63
+ <Field id="el1" label={lorem5}>
64
+ <Story />
65
+ </Field>
66
+ <Body as="p">{lorem500}</Body>
67
+ </div>
68
+ </>
69
+ ),
70
+ ],
71
+ play: async ({ canvasElement }) => {
72
+ document.documentElement.scrollTop = 400;
73
+ await wait();
74
+ const canvas = within(canvasElement);
75
+ // cannot use userEvent.click as it crashes on iOS Safari in the simulator
76
+ await fireEvent.click(canvas.getByRole('combobox'));
77
+ },
78
+ globals: {
79
+ viewport: { value: allModes.largeMobile.viewport, isRotated: false },
80
+ },
81
+ parameters: {
82
+ chromatic: {
83
+ disableSnapshot: true,
84
+ },
85
+ },
86
+ };
@@ -1127,7 +1127,7 @@ function SelectInputOption<T = string>({ value, disabled, children }: SelectInpu
1127
1127
  const SelectInputOptionContentWithinTriggerContext = createContext(false);
1128
1128
 
1129
1129
  export interface SelectInputOptionContentProps {
1130
- title: string;
1130
+ title: React.ReactNode;
1131
1131
  note?: string;
1132
1132
  description?: string;
1133
1133
  icon?: React.ReactNode;
@@ -5,13 +5,12 @@ import { Merge } from '../utils';
5
5
  import { inputClassNameBase } from './_common';
6
6
  import { useInputAttributes } from './contexts';
7
7
 
8
- export interface TextAreaProps
9
- extends Merge<
10
- React.ComponentPropsWithRef<'textarea'>,
11
- {
12
- 'aria-invalid'?: boolean;
13
- }
14
- > {}
8
+ export interface TextAreaProps extends Merge<
9
+ React.ComponentPropsWithRef<'textarea'>,
10
+ {
11
+ 'aria-invalid'?: boolean;
12
+ }
13
+ > {}
15
14
 
16
15
  export const TextArea = forwardRef(function TextArea(
17
16
  { className, ...restProps }: TextAreaProps,
@@ -406,7 +406,7 @@ function View({
406
406
  aria-describedby={describedByIds}
407
407
  href={(controlProps as ListItemNavigationProps)?.href}
408
408
  target={(controlProps as ListItemNavigationProps)?.target}
409
- className={clsx('wds-list-item-view d-flex flex-row', {
409
+ className={clsx('wds-list-item-view', {
410
410
  'wds-list-item-control': controlType === 'navigation',
411
411
  fullyInteractive: !isPartiallyInteractive,
412
412
  })}
@@ -424,7 +424,7 @@ function View({
424
424
  if (isPartiallyInteractive || controlType === 'non-interactive') {
425
425
  return (
426
426
  <div className={clsx('wds-list-item-gridWrapper', className)}>
427
- <div className={clsx('wds-list-item-view d-flex flex-row')}>{children}</div>
427
+ <div className="wds-list-item-view">{children}</div>
428
428
 
429
429
  {renderExtras()}
430
430
  </div>
@@ -1,7 +1,7 @@
1
1
  import { Meta } from '@storybook/react-webpack5';
2
2
  import { ListItem, type ListItemProps } from '../../ListItem';
3
3
  import { VariantStory } from './helpers';
4
- import { allModes } from '../../../../.storybook/modes';
4
+ import { withVariantConfig } from '../../../../.storybook/helpers';
5
5
 
6
6
  export default {
7
7
  component: ListItem,
@@ -16,12 +16,7 @@ export default {
16
16
 
17
17
  const Default = {
18
18
  ...VariantStory,
19
- parameters: {
20
- variants: ['bright-green'],
21
- chromatic: {
22
- 'bright-green': allModes.brightGreen,
23
- },
24
- },
19
+ ...withVariantConfig(['bright-green'], VariantStory),
25
20
  args: { variant: 'bright-green' },
26
21
  };
27
22
 
@@ -1,7 +1,7 @@
1
1
  import { Meta } from '@storybook/react-webpack5';
2
2
  import { ListItem, type ListItemProps } from '../../ListItem';
3
3
  import { VariantStory } from './helpers';
4
- import { allModes } from '../../../../.storybook/modes';
4
+ import { withVariantConfig } from '../../../../.storybook/helpers';
5
5
 
6
6
  export default {
7
7
  component: ListItem,
@@ -16,12 +16,7 @@ export default {
16
16
 
17
17
  const Default = {
18
18
  ...VariantStory,
19
- parameters: {
20
- variants: ['dark'],
21
- chromatic: {
22
- dark: allModes.dark,
23
- },
24
- },
19
+ ...withVariantConfig(['dark'], VariantStory),
25
20
  args: { variant: 'dark' },
26
21
  };
27
22
 
@@ -1,7 +1,7 @@
1
1
  import { Meta } from '@storybook/react-webpack5';
2
2
  import { ListItem, type ListItemProps } from '../../ListItem';
3
3
  import { VariantStory } from './helpers';
4
- import { allModes } from '../../../../.storybook/modes';
4
+ import { withVariantConfig } from '../../../../.storybook/helpers';
5
5
 
6
6
  export default {
7
7
  component: ListItem,
@@ -16,12 +16,7 @@ export default {
16
16
 
17
17
  const Default = {
18
18
  ...VariantStory,
19
- parameters: {
20
- variants: ['forest-green'],
21
- chromatic: {
22
- forestGreen: allModes.forestGreen,
23
- },
24
- },
19
+ ...withVariantConfig(['forest-green'], VariantStory),
25
20
  args: { variant: 'forest-green' },
26
21
  };
27
22
 
@@ -1,7 +1,7 @@
1
1
  import { Meta } from '@storybook/react-webpack5';
2
2
  import { ListItem, type ListItemProps } from '../../ListItem';
3
3
  import { VariantStory } from './helpers';
4
- import { allModes } from '../../../../.storybook/modes';
4
+ import { withVariantConfig } from '../../../../.storybook/helpers';
5
5
 
6
6
  export default {
7
7
  component: ListItem,
@@ -16,12 +16,7 @@ export default {
16
16
 
17
17
  const Default = {
18
18
  ...VariantStory,
19
- parameters: {
20
- variants: ['rtl'],
21
- chromatic: {
22
- rtl: allModes.rtl,
23
- },
24
- },
19
+ ...withVariantConfig(['rtl'], VariantStory),
25
20
  args: { variant: 'rtl' },
26
21
  };
27
22
 
package/src/main.css CHANGED
@@ -5337,8 +5337,10 @@ html:not([dir="rtl"]) .np-navigation-option {
5337
5337
  }
5338
5338
  .wds-prompt {
5339
5339
  border-radius: 10px;
5340
- border-radius: var(--radius-small);
5340
+ border-radius: var(--Prompt-border-radius, var(--radius-small));
5341
5341
  display: flex;
5342
+ gap: 16px;
5343
+ gap: var(--Prompt-gap, var(--size-16));
5342
5344
  word-wrap: break-word;
5343
5345
  padding: 8px;
5344
5346
  padding: var(--Prompt-padding, var(--padding-x-small));
@@ -5354,6 +5356,9 @@ html:not([dir="rtl"]) .np-navigation-option {
5354
5356
  grid-template-columns: auto 1fr;
5355
5357
  width: 100%;
5356
5358
  }
5359
+ .wds-prompt__content-wrapper--with-dismiss {
5360
+ grid-template-columns: auto 1fr auto;
5361
+ }
5357
5362
  .wds-prompt__media-wrapper {
5358
5363
  align-self: flex-start;
5359
5364
  padding-top: calc(4px - 1px);
@@ -5369,12 +5374,16 @@ html:not([dir="rtl"]) .np-navigation-option {
5369
5374
  gap: 8px;
5370
5375
  gap: var(--Prompt-actions-gap, var(--size-8));
5371
5376
  grid-column-start: 2;
5377
+ grid-column-end: 3;
5372
5378
  }
5373
- @media (max-width: 991px) {
5379
+ @media (max-width: 767px) {
5374
5380
  .wds-prompt__actions-wrapper {
5375
5381
  grid-column: span 2;
5376
5382
  width: 100%;
5377
5383
  }
5384
+ .wds-prompt__content-wrapper--with-dismiss .wds-prompt__actions-wrapper {
5385
+ grid-column: span 3;
5386
+ }
5378
5387
  }
5379
5388
  .wds-inline-prompt {
5380
5389
  --Prompt-gap: calc(var(--size-12) / 2);
@@ -5432,6 +5441,37 @@ html:not([dir="rtl"]) .np-navigation-option {
5432
5441
  .wds-inline-prompt .wds-inline-prompt-process-indicator .process-circle {
5433
5442
  stroke: currentColor;
5434
5443
  }
5444
+ .wds-info-prompt {
5445
+ --Prompt-gap: var(--size-8);
5446
+ --Prompt-padding: 12px;
5447
+ }
5448
+ .wds-info-prompt__content {
5449
+ display: flex;
5450
+ flex-direction: column;
5451
+ justify-content: center;
5452
+ }
5453
+ .wds-info-prompt__content:has(.wds-info-prompt__title) {
5454
+ justify-content: flex-start;
5455
+ /* Top align when title exists */
5456
+ }
5457
+ .wds-info-prompt__title,
5458
+ .wds-info-prompt__description {
5459
+ display: block;
5460
+ color: var(--color-sentiment-primary);
5461
+ }
5462
+ .wds-info-prompt__action {
5463
+ margin-top: var(--Prompt-gap);
5464
+ }
5465
+ .wds-info-prompt__media {
5466
+ display: flex;
5467
+ }
5468
+ .wds-info-prompt__media svg {
5469
+ width: 24px;
5470
+ height: 24px;
5471
+ }
5472
+ .wds-info-prompt .wds-prompt__media-wrapper {
5473
+ padding: 0;
5474
+ }
5435
5475
  .wds-radio-group .np-radio:last-child label {
5436
5476
  margin-bottom: 0;
5437
5477
  }
@@ -7423,3 +7463,24 @@ html:not([dir="rtl"]) .np-navigation-option {
7423
7463
  .np-list-item__action {
7424
7464
  flex-shrink: 0;
7425
7465
  }
7466
+ .wds-action-prompt {
7467
+ --Prompt-padding: var(--size-16);
7468
+ --Prompt-actions-gap: var(--size-8);
7469
+ --Prompt-gap: var(--size-10) var(--size-16);
7470
+ --Prompt-border-radius: var(--radius-large);
7471
+ }
7472
+ .wds-action-prompt--media-image {
7473
+ width: 48px;
7474
+ width: var(--size-48);
7475
+ height: 48px;
7476
+ height: var(--size-48);
7477
+ -o-object-fit: contain;
7478
+ object-fit: contain;
7479
+ }
7480
+ @media (max-width: 767px) {
7481
+ .wds-action-prompt--with-two-actions .wds-prompt__actions-wrapper .wds-Button {
7482
+ flex: 1 1 calc(50% - (var(--Prompt-actions-gap) / 2));
7483
+ min-width: -moz-fit-content;
7484
+ min-width: fit-content;
7485
+ }
7486
+ }
package/src/main.less CHANGED
@@ -62,6 +62,7 @@
62
62
  @import "./promoCard/PromoCard.less";
63
63
  @import "./prompt/PrimitivePrompt/PrimitivePrompt.less";
64
64
  @import "./prompt/InlinePrompt/InlinePrompt.less";
65
+ @import "./prompt/InfoPrompt/InfoPrompt.less";
65
66
  @import "./radioGroup/RadioGroup.less";
66
67
  @import "./section/Section.less";
67
68
  @import "./slidingPanel/SlidingPanel.less";
@@ -86,6 +87,7 @@
86
87
  @import "./progress/Progress.less";
87
88
  @import "./progressBar/ProgressBar.less";
88
89
  @import "./legacylistItem/LegacyListItem.less";
90
+ @import "./prompt/ActionPrompt/ActionPrompt.less";
89
91
 
90
92
  // List all less files in src in alphabetical order: find -s src -type f -name '*.less' ! -name 'main.less'
91
- // Make sure you are not referencing main.less itself in this file!
93
+ // Make sure you are not referencing main.less itself in this file!
@@ -6,7 +6,7 @@ import { useState } from 'react';
6
6
  import { Button, Modal, ModalProps } from '..';
7
7
  import { CommonProps, Scroll } from '../common';
8
8
  import { lorem10, lorem100, lorem1000 } from '../test-utils';
9
- import { allModes } from '../../.storybook/modes';
9
+ import { withVariantConfig } from '../../.storybook/helpers';
10
10
 
11
11
  export default {
12
12
  component: Modal,
@@ -78,12 +78,7 @@ export const Basic: Story = {
78
78
 
79
79
  export const BasicMobile: Story = {
80
80
  ...Basic,
81
- parameters: {
82
- variants: ['mobile'],
83
- chromatic: {
84
- mobile: allModes.largeMobile,
85
- },
86
- },
81
+ ...withVariantConfig(['mobile'], Basic),
87
82
  };
88
83
 
89
84
  export const ContentScroll: Story = {
@@ -97,12 +92,7 @@ export const ContentScroll: Story = {
97
92
 
98
93
  export const ContentScrollMobile: Story = {
99
94
  ...ContentScroll,
100
- parameters: {
101
- variants: ['mobile'],
102
- chromatic: {
103
- mobile: allModes.largeMobile,
104
- },
105
- },
95
+ ...withVariantConfig(['mobile'], ContentScroll),
106
96
  };
107
97
 
108
98
  export const ViewportScroll: Story = {
@@ -116,12 +106,7 @@ export const ViewportScroll: Story = {
116
106
 
117
107
  export const ViewportScrollMobile: Story = {
118
108
  ...ViewportScroll,
119
- parameters: {
120
- variants: ['mobile'],
121
- chromatic: {
122
- mobile: allModes.largeMobile,
123
- },
124
- },
109
+ ...withVariantConfig(['mobile'], ViewportScroll),
125
110
  };
126
111
 
127
112
  export const WithoutTitle: Story = {
@@ -134,12 +119,7 @@ export const WithoutTitle: Story = {
134
119
 
135
120
  export const WithoutTitleMobile: Story = {
136
121
  ...WithoutTitle,
137
- parameters: {
138
- variants: ['mobile'],
139
- chromatic: {
140
- mobile: allModes.largeMobile,
141
- },
142
- },
122
+ ...withVariantConfig(['mobile'], WithoutTitle),
143
123
  };
144
124
 
145
125
  export const WithThemeProviderInContent: Story = {
@@ -161,10 +141,5 @@ export const WithThemeProviderInContent: Story = {
161
141
 
162
142
  export const WithThemeProviderInContentMobile: Story = {
163
143
  ...WithThemeProviderInContent,
164
- parameters: {
165
- variants: ['mobile'],
166
- chromatic: {
167
- mobile: allModes.largeMobile,
168
- },
169
- },
144
+ ...withVariantConfig(['mobile'], WithThemeProviderInContent),
170
145
  };
@@ -0,0 +1,104 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-webpack5';
2
+ import { within, fireEvent } from 'storybook/test';
3
+ import { allModes } from '../../.storybook/modes';
4
+ import { lorem500 } from '../test-utils';
5
+ import { Field } from '../field/Field';
6
+ import Body from '../body';
7
+ import MoneyInput from './MoneyInput';
8
+
9
+ const meta = {
10
+ title: 'Forms/MoneyInput/tests',
11
+ component: MoneyInput,
12
+ args: {
13
+ amount: 1000,
14
+ id: 'moneyInput',
15
+ currencies: [
16
+ {
17
+ value: 'EUR',
18
+ label: 'EUR',
19
+ note: 'Euro',
20
+ currency: 'eur',
21
+ searchable: 'Spain, Germany, France, Austria',
22
+ },
23
+ {
24
+ value: 'GBP',
25
+ label: 'GBP',
26
+ note: 'British pound',
27
+ currency: 'gbp',
28
+ searchable: 'England, Scotland, Wales',
29
+ },
30
+ ],
31
+ selectedCurrency: {
32
+ value: 'EUR',
33
+ label: 'EUR',
34
+ note: 'Euro',
35
+ currency: 'eur',
36
+ searchable: 'Spain, Germany, France, Austria',
37
+ },
38
+ searchPlaceholder: '',
39
+ onAmountChange: () => {},
40
+ onCurrencyChange: () => {},
41
+ },
42
+ tags: ['!autodocs'],
43
+ } satisfies Meta<typeof MoneyInput>;
44
+ export default meta;
45
+
46
+ type Story = StoryObj<typeof MoneyInput>;
47
+
48
+ const wait = async (duration = 500) =>
49
+ new Promise<void>((resolve) => {
50
+ setTimeout(resolve, duration);
51
+ });
52
+
53
+ /**
54
+ * This test ensures that when the SelectInput is used within a scrollable page,
55
+ * opening the dropdown does not cause any unwanted scrolling or layout shifts.
56
+ * Expected preview should start with green bar at the top, with yellow section
57
+ * not in the viewport. The issue is particularly prominent on iOS Safari.
58
+ *
59
+ * NB: This test is disabled in Chromatic as there's no obvious way to control
60
+ * <html/> element of a snapshot. It's to be primarily used in manual testing
61
+ * on an actual device or a simulator as it cannot be reproduced with mobile
62
+ * emulation modes on desktop browsers.
63
+ */
64
+ export const SmoothScrollReset: Story = {
65
+ decorators: [
66
+ (Story) => (
67
+ <>
68
+ <style>{`html { scroll-behavior: smooth; }`}</style>
69
+ <div>
70
+ <div
71
+ className="d-flex align-items-center justify-content-center"
72
+ style={{
73
+ backgroundColor: 'var(--color-bright-yellow)',
74
+ height: 400,
75
+ }}
76
+ >
77
+ This block should not be in the viewport.
78
+ </div>
79
+ <div style={{ height: 10, backgroundColor: 'var(--color-bright-green)' }} />
80
+ <Field id="el1" label="Select currency">
81
+ <Story />
82
+ </Field>
83
+ <Body as="p">{lorem500}</Body>
84
+ </div>
85
+ </>
86
+ ),
87
+ ],
88
+ play: async ({ canvasElement }) => {
89
+ await wait();
90
+ document.documentElement.scrollTop = 400;
91
+ await wait();
92
+ const canvas = within(canvasElement);
93
+ // cannot use userEvent.click as it crashes on iOS Safari in the simulator
94
+ await fireEvent.click(canvas.getByRole('combobox'));
95
+ },
96
+ globals: {
97
+ viewport: { value: allModes.largeMobile.viewport, isRotated: false },
98
+ },
99
+ parameters: {
100
+ chromatic: {
101
+ disableSnapshot: true,
102
+ },
103
+ },
104
+ };
@@ -4,7 +4,14 @@ import { clsx } from 'clsx';
4
4
  import { Component } from 'react';
5
5
  import { injectIntl, WrappedComponentProps } from 'react-intl';
6
6
 
7
- import { Typography, Size, SizeLarge, SizeMedium, SizeSmall } from '../common';
7
+ import {
8
+ Typography,
9
+ Size,
10
+ SizeLarge,
11
+ SizeMedium,
12
+ SizeSmall,
13
+ getLocaleCurrencyName,
14
+ } from '../common';
8
15
  import { withInputAttributes, WithInputAttributesProps } from '../inputs/contexts';
9
16
  import { Input } from '../inputs/Input';
10
17
  import {
@@ -372,6 +379,7 @@ class MoneyInput extends Component<MoneyInputPropsWithInputAttributes, MoneyInpu
372
379
  as="span"
373
380
  type={Typography.TITLE_SUBSECTION}
374
381
  className={size === 'lg' ? this.style('m-r-1') : ''}
382
+ aria-label={getLocaleCurrencyName(this.props.intl, selectedCurrency.currency)}
375
383
  >
376
384
  {selectedCurrency.currency.toUpperCase()}
377
385
  </Title>
@@ -399,7 +407,17 @@ class MoneyInput extends Component<MoneyInputPropsWithInputAttributes, MoneyInpu
399
407
  renderValue={(currency, withinTrigger) => {
400
408
  return (
401
409
  <SelectInputOptionContent
402
- title={withinTrigger ? currency.currency.toUpperCase() : currency.label}
410
+ title={
411
+ withinTrigger ? (
412
+ <span
413
+ aria-label={getLocaleCurrencyName(this.props.intl, currency.currency)}
414
+ >
415
+ {currency.currency.toUpperCase()}
416
+ </span>
417
+ ) : (
418
+ currency.label
419
+ )
420
+ }
403
421
  note={withinTrigger ? undefined : currency.note}
404
422
  icon={<Flag code={currency.currency} intrinsicSize={24} />}
405
423
  />
@@ -11,9 +11,7 @@ export type PrimitiveAnchorElementRef = React.Ref<HTMLAnchorElement>;
11
11
  * Properties for the anchor component.
12
12
  */
13
13
  export interface PrimitiveAnchorProps
14
- extends BasePrimitiveProps,
15
- StyleProp,
16
- Omit<PrimitiveAnchorAttributes, 'role' | 'type'> {
14
+ extends BasePrimitiveProps, StyleProp, Omit<PrimitiveAnchorAttributes, 'role' | 'type'> {
17
15
  /** Content of the anchor */
18
16
  children?: ReactNode;
19
17