@transferwise/components 46.97.4 → 46.98.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 (869) hide show
  1. package/build/accordion/Accordion.js.map +1 -1
  2. package/build/accordion/Accordion.mjs.map +1 -1
  3. package/build/accordion/AccordionItem/AccordionItem.js.map +1 -1
  4. package/build/accordion/AccordionItem/AccordionItem.mjs.map +1 -1
  5. package/build/actionButton/ActionButton.js.map +1 -1
  6. package/build/actionButton/ActionButton.mjs.map +1 -1
  7. package/build/actionOption/ActionOption.js.map +1 -1
  8. package/build/actionOption/ActionOption.mjs.map +1 -1
  9. package/build/alert/Alert.js +8 -0
  10. package/build/alert/Alert.js.map +1 -1
  11. package/build/alert/Alert.mjs +8 -0
  12. package/build/alert/Alert.mjs.map +1 -1
  13. package/build/alert/inlineMarkdown/InlineMarkdown.js.map +1 -1
  14. package/build/alert/inlineMarkdown/InlineMarkdown.mjs.map +1 -1
  15. package/build/avatar/Avatar.js.map +1 -1
  16. package/build/avatar/Avatar.mjs.map +1 -1
  17. package/build/avatar/avatarTypes.js.map +1 -1
  18. package/build/avatar/avatarTypes.mjs.map +1 -1
  19. package/build/avatarLayout/AvatarLayout.js.map +1 -1
  20. package/build/avatarLayout/AvatarLayout.mjs.map +1 -1
  21. package/build/avatarView/AvatarView.js.map +1 -1
  22. package/build/avatarView/AvatarView.mjs.map +1 -1
  23. package/build/avatarView/NotificationDot.js.map +1 -1
  24. package/build/avatarView/NotificationDot.mjs.map +1 -1
  25. package/build/avatarWrapper/AvatarWrapper.js.map +1 -1
  26. package/build/avatarWrapper/AvatarWrapper.mjs.map +1 -1
  27. package/build/badge/Badge.js.map +1 -1
  28. package/build/badge/Badge.mjs.map +1 -1
  29. package/build/badge/BadgeAssets.js.map +1 -1
  30. package/build/badge/BadgeAssets.mjs.map +1 -1
  31. package/build/body/Body.js.map +1 -1
  32. package/build/body/Body.mjs.map +1 -1
  33. package/build/button/Button.js.map +1 -1
  34. package/build/button/Button.mjs.map +1 -1
  35. package/build/button/Button.resolver.js.map +1 -1
  36. package/build/button/Button.resolver.mjs.map +1 -1
  37. package/build/button/LegacyButton.js.map +1 -1
  38. package/build/button/LegacyButton.mjs +1 -1
  39. package/build/button/LegacyButton.mjs.map +1 -1
  40. package/build/button/classMap.js.map +1 -1
  41. package/build/button/classMap.mjs.map +1 -1
  42. package/build/button/legacyUtils/legacyUtils.js.map +1 -1
  43. package/build/button/legacyUtils/legacyUtils.mjs.map +1 -1
  44. package/build/card/Card.js.map +1 -1
  45. package/build/card/Card.mjs.map +1 -1
  46. package/build/carousel/Carousel.js.map +1 -1
  47. package/build/carousel/Carousel.mjs.map +1 -1
  48. package/build/checkbox/Checkbox.js.map +1 -1
  49. package/build/checkbox/Checkbox.mjs.map +1 -1
  50. package/build/checkboxButton/CheckboxButton.js.map +1 -1
  51. package/build/checkboxButton/CheckboxButton.mjs.map +1 -1
  52. package/build/checkboxOption/CheckboxOption.js.map +1 -1
  53. package/build/checkboxOption/CheckboxOption.mjs.map +1 -1
  54. package/build/chevron/Chevron.js.map +1 -1
  55. package/build/chevron/Chevron.mjs.map +1 -1
  56. package/build/chips/Chip.js.map +1 -1
  57. package/build/chips/Chip.mjs.map +1 -1
  58. package/build/chips/Chips.js.map +1 -1
  59. package/build/chips/Chips.messages.js.map +1 -1
  60. package/build/chips/Chips.messages.mjs.map +1 -1
  61. package/build/chips/Chips.mjs.map +1 -1
  62. package/build/circularButton/CircularButton.js.map +1 -1
  63. package/build/circularButton/CircularButton.mjs.map +1 -1
  64. package/build/common/DOMOperations/DOMOperations.js.map +1 -1
  65. package/build/common/DOMOperations/DOMOperations.mjs.map +1 -1
  66. package/build/common/Option/Option.js.map +1 -1
  67. package/build/common/Option/Option.mjs.map +1 -1
  68. package/build/common/RadioButton/RadioButton.js.map +1 -1
  69. package/build/common/RadioButton/RadioButton.mjs.map +1 -1
  70. package/build/common/bottomSheet/BottomSheet.js.map +1 -1
  71. package/build/common/bottomSheet/BottomSheet.mjs.map +1 -1
  72. package/build/common/card/Card.js.map +1 -1
  73. package/build/common/card/Card.mjs.map +1 -1
  74. package/build/common/circle/Circle.js.map +1 -1
  75. package/build/common/circle/Circle.mjs.map +1 -1
  76. package/build/common/closeButton/CloseButton.js +3 -1
  77. package/build/common/closeButton/CloseButton.js.map +1 -1
  78. package/build/common/closeButton/CloseButton.messages.js.map +1 -1
  79. package/build/common/closeButton/CloseButton.messages.mjs.map +1 -1
  80. package/build/common/closeButton/CloseButton.mjs +3 -1
  81. package/build/common/closeButton/CloseButton.mjs.map +1 -1
  82. package/build/common/colors.js.map +1 -1
  83. package/build/common/colors.mjs.map +1 -1
  84. package/build/common/dateUtils/getDateView/getDateView.js.map +1 -1
  85. package/build/common/dateUtils/getDateView/getDateView.mjs.map +1 -1
  86. package/build/common/dateUtils/getDayNames/getDayNames.js.map +1 -1
  87. package/build/common/dateUtils/getDayNames/getDayNames.mjs.map +1 -1
  88. package/build/common/dateUtils/getFormatForLocale/getFormatForLocale.js.map +1 -1
  89. package/build/common/dateUtils/getFormatForLocale/getFormatForLocale.mjs.map +1 -1
  90. package/build/common/dateUtils/getMonthNames/getMonthNames.js.map +1 -1
  91. package/build/common/dateUtils/getMonthNames/getMonthNames.mjs.map +1 -1
  92. package/build/common/dateUtils/isDateValid/isDateValid.js.map +1 -1
  93. package/build/common/dateUtils/isDateValid/isDateValid.mjs.map +1 -1
  94. package/build/common/dateUtils/isWithinRange/isWithinRange.js.map +1 -1
  95. package/build/common/dateUtils/isWithinRange/isWithinRange.mjs.map +1 -1
  96. package/build/common/dateUtils/moveToWithinRange/moveToWithinRange.js.map +1 -1
  97. package/build/common/dateUtils/moveToWithinRange/moveToWithinRange.mjs.map +1 -1
  98. package/build/common/deviceDetection/deviceDetection.js.map +1 -1
  99. package/build/common/deviceDetection/deviceDetection.mjs.map +1 -1
  100. package/build/common/direction.js.map +1 -1
  101. package/build/common/direction.mjs.map +1 -1
  102. package/build/common/domHelpers/documentIosClick.js.map +1 -1
  103. package/build/common/domHelpers/documentIosClick.mjs.map +1 -1
  104. package/build/common/fileType.js.map +1 -1
  105. package/build/common/fileType.mjs.map +1 -1
  106. package/build/common/flowHeader/FlowHeader.js.map +1 -1
  107. package/build/common/flowHeader/FlowHeader.mjs.map +1 -1
  108. package/build/common/focusBoundary/FocusBoundary.js.map +1 -1
  109. package/build/common/focusBoundary/FocusBoundary.mjs.map +1 -1
  110. package/build/common/historyNavigator/historyNavigator.js.map +1 -1
  111. package/build/common/historyNavigator/historyNavigator.mjs.map +1 -1
  112. package/build/common/hooks/useConditionalListener/useConditionalListener.js.map +1 -1
  113. package/build/common/hooks/useConditionalListener/useConditionalListener.mjs.map +1 -1
  114. package/build/common/hooks/useDirection/useDirection.js.map +1 -1
  115. package/build/common/hooks/useDirection/useDirection.mjs.map +1 -1
  116. package/build/common/hooks/useEffectEvent.js.map +1 -1
  117. package/build/common/hooks/useEffectEvent.mjs.map +1 -1
  118. package/build/common/hooks/useHasIntersected/useHasIntersected.js.map +1 -1
  119. package/build/common/hooks/useHasIntersected/useHasIntersected.mjs.map +1 -1
  120. package/build/common/hooks/useLayout/useLayout.js.map +1 -1
  121. package/build/common/hooks/useLayout/useLayout.mjs.map +1 -1
  122. package/build/common/hooks/useMedia.js.map +1 -1
  123. package/build/common/hooks/useMedia.mjs.map +1 -1
  124. package/build/common/hooks/useResizeObserver.js.map +1 -1
  125. package/build/common/hooks/useResizeObserver.mjs.map +1 -1
  126. package/build/common/hooks/useScreenSize.js.map +1 -1
  127. package/build/common/hooks/useScreenSize.mjs.map +1 -1
  128. package/build/common/hooks/useVirtualKeyboard.js.map +1 -1
  129. package/build/common/hooks/useVirtualKeyboard.mjs.map +1 -1
  130. package/build/common/initials.js +3 -0
  131. package/build/common/initials.js.map +1 -1
  132. package/build/common/initials.mjs +3 -0
  133. package/build/common/initials.mjs.map +1 -1
  134. package/build/common/locale/index.js.map +1 -1
  135. package/build/common/locale/index.mjs.map +1 -1
  136. package/build/common/panel/Panel.js.map +1 -1
  137. package/build/common/panel/Panel.mjs.map +1 -1
  138. package/build/common/polymorphicWithOverrides/PolymorphicWithOverrides.js.map +1 -1
  139. package/build/common/polymorphicWithOverrides/PolymorphicWithOverrides.mjs.map +1 -1
  140. package/build/common/preventScroll/PreventScroll.js.map +1 -1
  141. package/build/common/preventScroll/PreventScroll.mjs.map +1 -1
  142. package/build/common/propsValues/breakpoint.js.map +1 -1
  143. package/build/common/propsValues/breakpoint.mjs.map +1 -1
  144. package/build/common/propsValues/control.js.map +1 -1
  145. package/build/common/propsValues/control.mjs.map +1 -1
  146. package/build/common/propsValues/dateMode.js.map +1 -1
  147. package/build/common/propsValues/dateMode.mjs.map +1 -1
  148. package/build/common/propsValues/layouts.js.map +1 -1
  149. package/build/common/propsValues/layouts.mjs.map +1 -1
  150. package/build/common/propsValues/markdownNodeType.js.map +1 -1
  151. package/build/common/propsValues/markdownNodeType.mjs.map +1 -1
  152. package/build/common/propsValues/monthFormat.js.map +1 -1
  153. package/build/common/propsValues/monthFormat.mjs.map +1 -1
  154. package/build/common/propsValues/position.js.map +1 -1
  155. package/build/common/propsValues/position.mjs.map +1 -1
  156. package/build/common/propsValues/profileType.js.map +1 -1
  157. package/build/common/propsValues/profileType.mjs.map +1 -1
  158. package/build/common/propsValues/scroll.js.map +1 -1
  159. package/build/common/propsValues/scroll.mjs.map +1 -1
  160. package/build/common/propsValues/sentiment.js.map +1 -1
  161. package/build/common/propsValues/sentiment.mjs.map +1 -1
  162. package/build/common/propsValues/size.js.map +1 -1
  163. package/build/common/propsValues/size.mjs.map +1 -1
  164. package/build/common/propsValues/status.js.map +1 -1
  165. package/build/common/propsValues/status.mjs.map +1 -1
  166. package/build/common/propsValues/type.js.map +1 -1
  167. package/build/common/propsValues/type.mjs.map +1 -1
  168. package/build/common/propsValues/typography.js.map +1 -1
  169. package/build/common/propsValues/typography.mjs.map +1 -1
  170. package/build/common/propsValues/variant.js.map +1 -1
  171. package/build/common/propsValues/variant.mjs.map +1 -1
  172. package/build/common/propsValues/width.js.map +1 -1
  173. package/build/common/propsValues/width.mjs.map +1 -1
  174. package/build/common/responsivePanel/ResponsivePanel.js.map +1 -1
  175. package/build/common/responsivePanel/ResponsivePanel.mjs.map +1 -1
  176. package/build/common/textFormat/formatWithPattern/formatWithPattern.js.map +1 -1
  177. package/build/common/textFormat/formatWithPattern/formatWithPattern.mjs.map +1 -1
  178. package/build/common/textFormat/getCursorPositionAfterKeystroke/getCursorPositionAfterKeystroke.js.map +1 -1
  179. package/build/common/textFormat/getCursorPositionAfterKeystroke/getCursorPositionAfterKeystroke.mjs.map +1 -1
  180. package/build/common/textFormat/getDistanceToSymbol/getDistanceToSymbol.js.map +1 -1
  181. package/build/common/textFormat/getDistanceToSymbol/getDistanceToSymbol.mjs.map +1 -1
  182. package/build/common/textFormat/getSymbolsInPatternWithPosition/getSymbolsInPatternWithPosition.js.map +1 -1
  183. package/build/common/textFormat/getSymbolsInPatternWithPosition/getSymbolsInPatternWithPosition.mjs.map +1 -1
  184. package/build/common/textFormat/unformatWithPattern/unformatWithPattern.js.map +1 -1
  185. package/build/common/textFormat/unformatWithPattern/unformatWithPattern.mjs.map +1 -1
  186. package/build/common/theme.js.map +1 -1
  187. package/build/common/theme.mjs.map +1 -1
  188. package/build/criticalBanner/CriticalCommsBanner.js.map +1 -1
  189. package/build/criticalBanner/CriticalCommsBanner.mjs.map +1 -1
  190. package/build/dateInput/DateInput.js.map +1 -1
  191. package/build/dateInput/DateInput.messages.js.map +1 -1
  192. package/build/dateInput/DateInput.messages.mjs.map +1 -1
  193. package/build/dateInput/DateInput.mjs.map +1 -1
  194. package/build/dateInput/utils/convertToLocalMidnight/convertToLocalMidnight.js.map +1 -1
  195. package/build/dateInput/utils/convertToLocalMidnight/convertToLocalMidnight.mjs.map +1 -1
  196. package/build/dateLookup/DateLookup.js +4 -4
  197. package/build/dateLookup/DateLookup.js.map +1 -1
  198. package/build/dateLookup/DateLookup.messages.js.map +1 -1
  199. package/build/dateLookup/DateLookup.messages.mjs.map +1 -1
  200. package/build/dateLookup/DateLookup.mjs +4 -4
  201. package/build/dateLookup/DateLookup.mjs.map +1 -1
  202. package/build/dateLookup/dateHeader/DateHeader.js.map +1 -1
  203. package/build/dateLookup/dateHeader/DateHeader.mjs.map +1 -1
  204. package/build/dateLookup/dateTrigger/DateTrigger.js.map +1 -1
  205. package/build/dateLookup/dateTrigger/DateTrigger.messages.js.map +1 -1
  206. package/build/dateLookup/dateTrigger/DateTrigger.messages.mjs.map +1 -1
  207. package/build/dateLookup/dateTrigger/DateTrigger.mjs.map +1 -1
  208. package/build/dateLookup/dayCalendar/DayCalendar.js.map +1 -1
  209. package/build/dateLookup/dayCalendar/DayCalendar.mjs.map +1 -1
  210. package/build/dateLookup/dayCalendar/table/DayCalendarTable.js +3 -3
  211. package/build/dateLookup/dayCalendar/table/DayCalendarTable.js.map +1 -1
  212. package/build/dateLookup/dayCalendar/table/DayCalendarTable.mjs +3 -3
  213. package/build/dateLookup/dayCalendar/table/DayCalendarTable.mjs.map +1 -1
  214. package/build/dateLookup/getFocusableTime/getFocusableTime.js.map +1 -1
  215. package/build/dateLookup/getFocusableTime/getFocusableTime.mjs.map +1 -1
  216. package/build/dateLookup/getStartOfDay/getStartOfDay.js.map +1 -1
  217. package/build/dateLookup/getStartOfDay/getStartOfDay.mjs.map +1 -1
  218. package/build/dateLookup/monthCalendar/MonthCalendar.js.map +1 -1
  219. package/build/dateLookup/monthCalendar/MonthCalendar.mjs.map +1 -1
  220. package/build/dateLookup/monthCalendar/table/MonthCalendarTable.js.map +1 -1
  221. package/build/dateLookup/monthCalendar/table/MonthCalendarTable.mjs.map +1 -1
  222. package/build/dateLookup/tableLink/TableLink.js.map +1 -1
  223. package/build/dateLookup/tableLink/TableLink.mjs.map +1 -1
  224. package/build/dateLookup/yearCalendar/YearCalendar.js.map +1 -1
  225. package/build/dateLookup/yearCalendar/YearCalendar.mjs.map +1 -1
  226. package/build/dateLookup/yearCalendar/table/YearCalendarTable.js.map +1 -1
  227. package/build/dateLookup/yearCalendar/table/YearCalendarTable.mjs.map +1 -1
  228. package/build/decision/Decision.js.map +1 -1
  229. package/build/decision/Decision.mjs.map +1 -1
  230. package/build/definitionList/DefinitionList.js.map +1 -1
  231. package/build/definitionList/DefinitionList.mjs.map +1 -1
  232. package/build/dimmer/Dimmer.js.map +1 -1
  233. package/build/dimmer/Dimmer.mjs.map +1 -1
  234. package/build/dimmer/dimmerManager/DimmerManager.js.map +1 -1
  235. package/build/dimmer/dimmerManager/DimmerManager.mjs.map +1 -1
  236. package/build/display/Display.js.map +1 -1
  237. package/build/display/Display.mjs.map +1 -1
  238. package/build/divider/Divider.js.map +1 -1
  239. package/build/divider/Divider.mjs.map +1 -1
  240. package/build/drawer/Drawer.js.map +1 -1
  241. package/build/drawer/Drawer.mjs.map +1 -1
  242. package/build/dropFade/DropFade.js.map +1 -1
  243. package/build/dropFade/DropFade.mjs.map +1 -1
  244. package/build/emphasis/Emphasis.js.map +1 -1
  245. package/build/emphasis/Emphasis.mjs.map +1 -1
  246. package/build/emphasis/EmphasisHtmlTransformer.js.map +1 -1
  247. package/build/emphasis/EmphasisHtmlTransformer.mjs.map +1 -1
  248. package/build/field/Field.js.map +1 -1
  249. package/build/field/Field.mjs.map +1 -1
  250. package/build/flowNavigation/FlowNavigation.js.map +1 -1
  251. package/build/flowNavigation/FlowNavigation.messages.js.map +1 -1
  252. package/build/flowNavigation/FlowNavigation.messages.mjs.map +1 -1
  253. package/build/flowNavigation/FlowNavigation.mjs.map +1 -1
  254. package/build/flowNavigation/animatedLabel/AnimatedLabel.js.map +1 -1
  255. package/build/flowNavigation/animatedLabel/AnimatedLabel.mjs.map +1 -1
  256. package/build/header/Header.js.map +1 -1
  257. package/build/header/Header.mjs.map +1 -1
  258. package/build/i18n/commonMessages/Button.messages.js.map +1 -1
  259. package/build/i18n/commonMessages/Button.messages.mjs.map +1 -1
  260. package/build/i18n/cs.json +12 -9
  261. package/build/i18n/cs.json.js +12 -9
  262. package/build/i18n/cs.json.js.map +1 -1
  263. package/build/i18n/cs.json.mjs +12 -9
  264. package/build/i18n/cs.json.mjs.map +1 -1
  265. package/build/i18n/de.json +3 -0
  266. package/build/i18n/de.json.js +3 -0
  267. package/build/i18n/de.json.js.map +1 -1
  268. package/build/i18n/de.json.mjs +3 -0
  269. package/build/i18n/de.json.mjs.map +1 -1
  270. package/build/i18n/en.json +3 -0
  271. package/build/i18n/en.json.js +3 -0
  272. package/build/i18n/en.json.js.map +1 -1
  273. package/build/i18n/en.json.mjs +3 -0
  274. package/build/i18n/en.json.mjs.map +1 -1
  275. package/build/i18n/es.json +3 -0
  276. package/build/i18n/es.json.js +3 -0
  277. package/build/i18n/es.json.js.map +1 -1
  278. package/build/i18n/es.json.mjs +3 -0
  279. package/build/i18n/es.json.mjs.map +1 -1
  280. package/build/i18n/fr.json +3 -0
  281. package/build/i18n/fr.json.js +3 -0
  282. package/build/i18n/fr.json.js.map +1 -1
  283. package/build/i18n/fr.json.mjs +3 -0
  284. package/build/i18n/fr.json.mjs.map +1 -1
  285. package/build/i18n/hu.json +3 -0
  286. package/build/i18n/hu.json.js +3 -0
  287. package/build/i18n/hu.json.js.map +1 -1
  288. package/build/i18n/hu.json.mjs +3 -0
  289. package/build/i18n/hu.json.mjs.map +1 -1
  290. package/build/i18n/id.json +3 -0
  291. package/build/i18n/id.json.js +3 -0
  292. package/build/i18n/id.json.js.map +1 -1
  293. package/build/i18n/id.json.mjs +3 -0
  294. package/build/i18n/id.json.mjs.map +1 -1
  295. package/build/i18n/index.js.map +1 -1
  296. package/build/i18n/index.mjs.map +1 -1
  297. package/build/i18n/it.json +3 -0
  298. package/build/i18n/it.json.js +3 -0
  299. package/build/i18n/it.json.js.map +1 -1
  300. package/build/i18n/it.json.mjs +3 -0
  301. package/build/i18n/it.json.mjs.map +1 -1
  302. package/build/i18n/ja.json +3 -0
  303. package/build/i18n/ja.json.js +3 -0
  304. package/build/i18n/ja.json.js.map +1 -1
  305. package/build/i18n/ja.json.mjs +3 -0
  306. package/build/i18n/ja.json.mjs.map +1 -1
  307. package/build/i18n/nl.json +6 -3
  308. package/build/i18n/pl.json +3 -0
  309. package/build/i18n/pl.json.js +3 -0
  310. package/build/i18n/pl.json.js.map +1 -1
  311. package/build/i18n/pl.json.mjs +3 -0
  312. package/build/i18n/pl.json.mjs.map +1 -1
  313. package/build/i18n/pt.json +3 -0
  314. package/build/i18n/pt.json.js +3 -0
  315. package/build/i18n/pt.json.js.map +1 -1
  316. package/build/i18n/pt.json.mjs +3 -0
  317. package/build/i18n/pt.json.mjs.map +1 -1
  318. package/build/i18n/ro.json +3 -0
  319. package/build/i18n/ro.json.js +3 -0
  320. package/build/i18n/ro.json.js.map +1 -1
  321. package/build/i18n/ro.json.mjs +3 -0
  322. package/build/i18n/ro.json.mjs.map +1 -1
  323. package/build/i18n/ru.json +3 -0
  324. package/build/i18n/ru.json.js +3 -0
  325. package/build/i18n/ru.json.js.map +1 -1
  326. package/build/i18n/ru.json.mjs +3 -0
  327. package/build/i18n/ru.json.mjs.map +1 -1
  328. package/build/i18n/th.json +3 -0
  329. package/build/i18n/th.json.js +3 -0
  330. package/build/i18n/th.json.js.map +1 -1
  331. package/build/i18n/th.json.mjs +3 -0
  332. package/build/i18n/th.json.mjs.map +1 -1
  333. package/build/i18n/tr.json +3 -0
  334. package/build/i18n/tr.json.js +3 -0
  335. package/build/i18n/tr.json.js.map +1 -1
  336. package/build/i18n/tr.json.mjs +3 -0
  337. package/build/i18n/tr.json.mjs.map +1 -1
  338. package/build/i18n/zh-CN.json +3 -0
  339. package/build/i18n/zh-CN.json.js +3 -0
  340. package/build/i18n/zh-CN.json.js.map +1 -1
  341. package/build/i18n/zh-CN.json.mjs +3 -0
  342. package/build/i18n/zh-CN.json.mjs.map +1 -1
  343. package/build/i18n/zh-HK.json +3 -0
  344. package/build/i18n/zh-HK.json.js +3 -0
  345. package/build/i18n/zh-HK.json.js.map +1 -1
  346. package/build/i18n/zh-HK.json.mjs +3 -0
  347. package/build/i18n/zh-HK.json.mjs.map +1 -1
  348. package/build/iconButton/IconButton.js.map +1 -1
  349. package/build/iconButton/IconButton.mjs.map +1 -1
  350. package/build/image/Image.js +9 -10
  351. package/build/image/Image.js.map +1 -1
  352. package/build/image/Image.mjs +11 -11
  353. package/build/image/Image.mjs.map +1 -1
  354. package/build/info/Info.js.map +1 -1
  355. package/build/info/Info.messages.js.map +1 -1
  356. package/build/info/Info.messages.mjs.map +1 -1
  357. package/build/info/Info.mjs.map +1 -1
  358. package/build/info/infoPresentations.js.map +1 -1
  359. package/build/info/infoPresentations.mjs.map +1 -1
  360. package/build/inlineAlert/InlineAlert.js.map +1 -1
  361. package/build/inlineAlert/InlineAlert.mjs.map +1 -1
  362. package/build/inputWithDisplayFormat/InputWithDisplayFormat.js.map +1 -1
  363. package/build/inputWithDisplayFormat/InputWithDisplayFormat.mjs.map +1 -1
  364. package/build/inputs/Input.js.map +1 -1
  365. package/build/inputs/Input.mjs.map +1 -1
  366. package/build/inputs/InputGroup.js +16 -20
  367. package/build/inputs/InputGroup.js.map +1 -1
  368. package/build/inputs/InputGroup.mjs +17 -21
  369. package/build/inputs/InputGroup.mjs.map +1 -1
  370. package/build/inputs/SearchInput.js.map +1 -1
  371. package/build/inputs/SearchInput.mjs.map +1 -1
  372. package/build/inputs/SelectInput.js +6 -1
  373. package/build/inputs/SelectInput.js.map +1 -1
  374. package/build/inputs/SelectInput.messages.js.map +1 -1
  375. package/build/inputs/SelectInput.messages.mjs.map +1 -1
  376. package/build/inputs/SelectInput.mjs +6 -1
  377. package/build/inputs/SelectInput.mjs.map +1 -1
  378. package/build/inputs/TextArea.js.map +1 -1
  379. package/build/inputs/TextArea.mjs.map +1 -1
  380. package/build/inputs/_BottomSheet.js.map +1 -1
  381. package/build/inputs/_BottomSheet.mjs.map +1 -1
  382. package/build/inputs/_ButtonInput.js.map +1 -1
  383. package/build/inputs/_ButtonInput.mjs.map +1 -1
  384. package/build/inputs/_Popover.js.map +1 -1
  385. package/build/inputs/_Popover.mjs +1 -1
  386. package/build/inputs/_Popover.mjs.map +1 -1
  387. package/build/inputs/_common.js.map +1 -1
  388. package/build/inputs/_common.mjs.map +1 -1
  389. package/build/inputs/contexts.js.map +1 -1
  390. package/build/inputs/contexts.mjs.map +1 -1
  391. package/build/instructionsList/InstructionsList.js.map +1 -1
  392. package/build/instructionsList/InstructionsList.mjs.map +1 -1
  393. package/build/label/Label.js.map +1 -1
  394. package/build/label/Label.messages.js.map +1 -1
  395. package/build/label/Label.messages.mjs.map +1 -1
  396. package/build/label/Label.mjs.map +1 -1
  397. package/build/legacylistItem/LegacyListItem.js.map +1 -1
  398. package/build/legacylistItem/LegacyListItem.mjs.map +1 -1
  399. package/build/legacylistItem/List.js.map +1 -1
  400. package/build/legacylistItem/List.mjs.map +1 -1
  401. package/build/link/Link.js.map +1 -1
  402. package/build/link/Link.messages.js.map +1 -1
  403. package/build/link/Link.messages.mjs.map +1 -1
  404. package/build/link/Link.mjs.map +1 -1
  405. package/build/loader/Loader.js.map +1 -1
  406. package/build/loader/Loader.mjs.map +1 -1
  407. package/build/logo/Logo.js.map +1 -1
  408. package/build/logo/Logo.mjs +1 -1
  409. package/build/logo/Logo.mjs.map +1 -1
  410. package/build/logo/logo-assets.js.map +1 -1
  411. package/build/logo/logo-assets.mjs.map +1 -1
  412. package/build/main.css +20 -2
  413. package/build/markdown/Markdown.js +20 -4
  414. package/build/markdown/Markdown.js.map +1 -1
  415. package/build/markdown/Markdown.mjs +1 -1
  416. package/build/markdown/Markdown.mjs.map +1 -1
  417. package/build/mocks.js.map +1 -1
  418. package/build/mocks.mjs.map +1 -1
  419. package/build/modal/Modal.js.map +1 -1
  420. package/build/modal/Modal.mjs.map +1 -1
  421. package/build/money/Money.js.map +1 -1
  422. package/build/money/Money.mjs.map +1 -1
  423. package/build/moneyInput/MoneyInput.js +4 -8
  424. package/build/moneyInput/MoneyInput.js.map +1 -1
  425. package/build/moneyInput/MoneyInput.messages.js +3 -0
  426. package/build/moneyInput/MoneyInput.messages.js.map +1 -1
  427. package/build/moneyInput/MoneyInput.messages.mjs +3 -0
  428. package/build/moneyInput/MoneyInput.messages.mjs.map +1 -1
  429. package/build/moneyInput/MoneyInput.mjs +4 -8
  430. package/build/moneyInput/MoneyInput.mjs.map +1 -1
  431. package/build/moneyInput/currencyFormatting.js.map +1 -1
  432. package/build/moneyInput/currencyFormatting.mjs.map +1 -1
  433. package/build/navigationOption/NavigationOption.js.map +1 -1
  434. package/build/navigationOption/NavigationOption.mjs.map +1 -1
  435. package/build/navigationOptionsList/NavigationOptionsList.js.map +1 -1
  436. package/build/navigationOptionsList/NavigationOptionsList.mjs.map +1 -1
  437. package/build/nudge/Nudge.js.map +1 -1
  438. package/build/nudge/Nudge.mjs.map +1 -1
  439. package/build/overlayHeader/OverlayHeader.js.map +1 -1
  440. package/build/overlayHeader/OverlayHeader.mjs.map +1 -1
  441. package/build/phoneNumberInput/PhoneNumberInput.js +38 -4
  442. package/build/phoneNumberInput/PhoneNumberInput.js.map +1 -1
  443. package/build/phoneNumberInput/PhoneNumberInput.messages.js +6 -0
  444. package/build/phoneNumberInput/PhoneNumberInput.messages.js.map +1 -1
  445. package/build/phoneNumberInput/PhoneNumberInput.messages.mjs +6 -0
  446. package/build/phoneNumberInput/PhoneNumberInput.messages.mjs.map +1 -1
  447. package/build/phoneNumberInput/PhoneNumberInput.mjs +38 -4
  448. package/build/phoneNumberInput/PhoneNumberInput.mjs.map +1 -1
  449. package/build/phoneNumberInput/data/countries.js.map +1 -1
  450. package/build/phoneNumberInput/data/countries.mjs.map +1 -1
  451. package/build/phoneNumberInput/utils/cleanNumber/cleanNumber.js.map +1 -1
  452. package/build/phoneNumberInput/utils/cleanNumber/cleanNumber.mjs.map +1 -1
  453. package/build/phoneNumberInput/utils/excludeCountries/excludeCountries.js.map +1 -1
  454. package/build/phoneNumberInput/utils/excludeCountries/excludeCountries.mjs.map +1 -1
  455. package/build/phoneNumberInput/utils/explodeNumberModel/index.js.map +1 -1
  456. package/build/phoneNumberInput/utils/explodeNumberModel/index.mjs.map +1 -1
  457. package/build/phoneNumberInput/utils/findCountryByCode/index.js.map +1 -1
  458. package/build/phoneNumberInput/utils/findCountryByCode/index.mjs.map +1 -1
  459. package/build/phoneNumberInput/utils/findCountryByPrefix/index.js.map +1 -1
  460. package/build/phoneNumberInput/utils/findCountryByPrefix/index.mjs.map +1 -1
  461. package/build/phoneNumberInput/utils/groupCountriesByPrefix/groupCountriesByPrefix.js.map +1 -1
  462. package/build/phoneNumberInput/utils/groupCountriesByPrefix/groupCountriesByPrefix.mjs.map +1 -1
  463. package/build/phoneNumberInput/utils/setDefaultPrefix/index.js.map +1 -1
  464. package/build/phoneNumberInput/utils/setDefaultPrefix/index.mjs.map +1 -1
  465. package/build/phoneNumberInput/utils/sortArrayByProperty/sortArrayByProperty.js.map +1 -1
  466. package/build/phoneNumberInput/utils/sortArrayByProperty/sortArrayByProperty.mjs.map +1 -1
  467. package/build/popover/Popover.js.map +1 -1
  468. package/build/popover/Popover.mjs +1 -1
  469. package/build/popover/Popover.mjs.map +1 -1
  470. package/build/primitives/PrimitiveAnchor/PrimitiveAnchor.js.map +1 -1
  471. package/build/primitives/PrimitiveAnchor/PrimitiveAnchor.mjs.map +1 -1
  472. package/build/primitives/PrimitiveButton/PrimitiveButton.js.map +1 -1
  473. package/build/primitives/PrimitiveButton/PrimitiveButton.mjs.map +1 -1
  474. package/build/processIndicator/ProcessIndicator.js.map +1 -1
  475. package/build/processIndicator/ProcessIndicator.mjs.map +1 -1
  476. package/build/progress/Progress.js.map +1 -1
  477. package/build/progress/Progress.mjs.map +1 -1
  478. package/build/progressBar/ProgressBar.js.map +1 -1
  479. package/build/progressBar/ProgressBar.mjs.map +1 -1
  480. package/build/promoCard/PromoCard.js.map +1 -1
  481. package/build/promoCard/PromoCard.mjs.map +1 -1
  482. package/build/promoCard/PromoCardContext.js.map +1 -1
  483. package/build/promoCard/PromoCardContext.mjs.map +1 -1
  484. package/build/promoCard/PromoCardGroup.js +1 -1
  485. package/build/promoCard/PromoCardGroup.js.map +1 -1
  486. package/build/promoCard/PromoCardGroup.mjs +1 -1
  487. package/build/promoCard/PromoCardGroup.mjs.map +1 -1
  488. package/build/promoCard/PromoCardIndicator.js.map +1 -1
  489. package/build/promoCard/PromoCardIndicator.mjs +1 -1
  490. package/build/promoCard/PromoCardIndicator.mjs.map +1 -1
  491. package/build/provider/Provider.js.map +1 -1
  492. package/build/provider/Provider.mjs.map +1 -1
  493. package/build/provider/direction/DirectionProvider.js.map +1 -1
  494. package/build/provider/direction/DirectionProvider.mjs.map +1 -1
  495. package/build/provider/language/LanguageProvider.js.map +1 -1
  496. package/build/provider/language/LanguageProvider.mjs.map +1 -1
  497. package/build/provider/overlay/OverlayIdProvider.js.map +1 -1
  498. package/build/provider/overlay/OverlayIdProvider.mjs +1 -1
  499. package/build/provider/overlay/OverlayIdProvider.mjs.map +1 -1
  500. package/build/radio/Radio.js.map +1 -1
  501. package/build/radio/Radio.mjs.map +1 -1
  502. package/build/radioGroup/RadioGroup.js.map +1 -1
  503. package/build/radioGroup/RadioGroup.mjs.map +1 -1
  504. package/build/radioOption/RadioOption.js.map +1 -1
  505. package/build/radioOption/RadioOption.mjs.map +1 -1
  506. package/build/section/Section.js.map +1 -1
  507. package/build/section/Section.mjs.map +1 -1
  508. package/build/segmentedControl/SegmentedControl.js.map +1 -1
  509. package/build/segmentedControl/SegmentedControl.mjs.map +1 -1
  510. package/build/select/Select.js +14 -22
  511. package/build/select/Select.js.map +1 -1
  512. package/build/select/Select.messages.js.map +1 -1
  513. package/build/select/Select.messages.mjs.map +1 -1
  514. package/build/select/Select.mjs +14 -22
  515. package/build/select/Select.mjs.map +1 -1
  516. package/build/select/option/Option.js.map +1 -1
  517. package/build/select/option/Option.mjs.map +1 -1
  518. package/build/select/searchBox/SearchBox.js.map +1 -1
  519. package/build/select/searchBox/SearchBox.mjs.map +1 -1
  520. package/build/selectOption/SelectOption.js.map +1 -1
  521. package/build/selectOption/SelectOption.messages.js.map +1 -1
  522. package/build/selectOption/SelectOption.messages.mjs.map +1 -1
  523. package/build/selectOption/SelectOption.mjs +1 -1
  524. package/build/selectOption/SelectOption.mjs.map +1 -1
  525. package/build/slidingPanel/SlidingPanel.js.map +1 -1
  526. package/build/slidingPanel/SlidingPanel.mjs.map +1 -1
  527. package/build/snackbar/Snackbar.js +1 -1
  528. package/build/snackbar/Snackbar.js.map +1 -1
  529. package/build/snackbar/Snackbar.mjs +1 -1
  530. package/build/snackbar/Snackbar.mjs.map +1 -1
  531. package/build/snackbar/SnackbarContext.js.map +1 -1
  532. package/build/snackbar/SnackbarContext.mjs.map +1 -1
  533. package/build/snackbar/SnackbarProvider.js.map +1 -1
  534. package/build/snackbar/SnackbarProvider.mjs.map +1 -1
  535. package/build/snackbar/useSnackbar.js.map +1 -1
  536. package/build/snackbar/useSnackbar.mjs.map +1 -1
  537. package/build/statusIcon/StatusIcon.js.map +1 -1
  538. package/build/statusIcon/StatusIcon.messages.js.map +1 -1
  539. package/build/statusIcon/StatusIcon.messages.mjs.map +1 -1
  540. package/build/statusIcon/StatusIcon.mjs +1 -1
  541. package/build/statusIcon/StatusIcon.mjs.map +1 -1
  542. package/build/stepper/Stepper.js.map +1 -1
  543. package/build/stepper/Stepper.mjs.map +1 -1
  544. package/build/stepper/deviceDetection.js.map +1 -1
  545. package/build/stepper/deviceDetection.mjs.map +1 -1
  546. package/build/sticky/Sticky.js.map +1 -1
  547. package/build/sticky/Sticky.mjs.map +1 -1
  548. package/build/styles/circularButton/CircularButton.css +1 -0
  549. package/build/styles/dateInput/DateInput.css +2 -1
  550. package/build/styles/inputs/Input.css +10 -0
  551. package/build/styles/inputs/TextArea.css +10 -0
  552. package/build/styles/main.css +20 -2
  553. package/build/styles/upload/Upload.css +3 -0
  554. package/build/styles/uploadInput/uploadItem/UploadItem.css +2 -1
  555. package/build/summary/Summary.js.map +1 -1
  556. package/build/summary/Summary.messages.js.map +1 -1
  557. package/build/summary/Summary.messages.mjs.map +1 -1
  558. package/build/summary/Summary.mjs +1 -1
  559. package/build/summary/Summary.mjs.map +1 -1
  560. package/build/switch/Switch.js.map +1 -1
  561. package/build/switch/Switch.mjs.map +1 -1
  562. package/build/switchOption/SwitchOption.js.map +1 -1
  563. package/build/switchOption/SwitchOption.mjs.map +1 -1
  564. package/build/table/Table.js.map +1 -1
  565. package/build/table/Table.messages.js.map +1 -1
  566. package/build/table/Table.messages.mjs.map +1 -1
  567. package/build/table/Table.mjs.map +1 -1
  568. package/build/table/TableCell.js.map +1 -1
  569. package/build/table/TableCell.mjs.map +1 -1
  570. package/build/table/TableHeader.js.map +1 -1
  571. package/build/table/TableHeader.mjs.map +1 -1
  572. package/build/table/TableRow.js.map +1 -1
  573. package/build/table/TableRow.mjs.map +1 -1
  574. package/build/table/TableStatusText.js.map +1 -1
  575. package/build/table/TableStatusText.mjs.map +1 -1
  576. package/build/tabs/Tab.js.map +1 -1
  577. package/build/tabs/Tab.mjs.map +1 -1
  578. package/build/tabs/TabList.js.map +1 -1
  579. package/build/tabs/TabList.mjs.map +1 -1
  580. package/build/tabs/TabPanel.js.map +1 -1
  581. package/build/tabs/TabPanel.mjs.map +1 -1
  582. package/build/tabs/Tabs.js +3 -3
  583. package/build/tabs/Tabs.js.map +1 -1
  584. package/build/tabs/Tabs.mjs +4 -4
  585. package/build/tabs/Tabs.mjs.map +1 -1
  586. package/build/tabs/utils.js +1 -1
  587. package/build/tabs/utils.js.map +1 -1
  588. package/build/tabs/utils.mjs +1 -1
  589. package/build/tabs/utils.mjs.map +1 -1
  590. package/build/textareaWithDisplayFormat/TextareaWithDisplayFormat.js.map +1 -1
  591. package/build/textareaWithDisplayFormat/TextareaWithDisplayFormat.mjs.map +1 -1
  592. package/build/tile/Tile.js.map +1 -1
  593. package/build/tile/Tile.mjs.map +1 -1
  594. package/build/title/Title.js.map +1 -1
  595. package/build/title/Title.mjs.map +1 -1
  596. package/build/tooltip/Tooltip.js.map +1 -1
  597. package/build/tooltip/Tooltip.mjs.map +1 -1
  598. package/build/typeahead/Typeahead.js +57 -61
  599. package/build/typeahead/Typeahead.js.map +1 -1
  600. package/build/typeahead/Typeahead.messages.js.map +1 -1
  601. package/build/typeahead/Typeahead.messages.mjs.map +1 -1
  602. package/build/typeahead/Typeahead.mjs +57 -61
  603. package/build/typeahead/Typeahead.mjs.map +1 -1
  604. package/build/typeahead/typeaheadInput/TypeaheadInput.js +2 -2
  605. package/build/typeahead/typeaheadInput/TypeaheadInput.js.map +1 -1
  606. package/build/typeahead/typeaheadInput/TypeaheadInput.mjs +2 -2
  607. package/build/typeahead/typeaheadInput/TypeaheadInput.mjs.map +1 -1
  608. package/build/typeahead/typeaheadOption/TypeaheadOption.js.map +1 -1
  609. package/build/typeahead/typeaheadOption/TypeaheadOption.mjs.map +1 -1
  610. package/build/typeahead/util/highlight.js.map +1 -1
  611. package/build/typeahead/util/highlight.mjs.map +1 -1
  612. package/build/types/actionOption/ActionOption.d.ts.map +1 -1
  613. package/build/types/alert/Alert.d.ts.map +1 -1
  614. package/build/types/avatarWrapper/AvatarWrapper.d.ts.map +1 -1
  615. package/build/types/badge/Badge.d.ts.map +1 -1
  616. package/build/types/chevron/Chevron.d.ts.map +1 -1
  617. package/build/types/chips/Chip.d.ts.map +1 -1
  618. package/build/types/chips/Chips.d.ts.map +1 -1
  619. package/build/types/circularButton/CircularButton.d.ts.map +1 -1
  620. package/build/types/common/bottomSheet/BottomSheet.d.ts.map +1 -1
  621. package/build/types/common/closeButton/CloseButton.d.ts +2 -0
  622. package/build/types/common/closeButton/CloseButton.d.ts.map +1 -1
  623. package/build/types/common/colors.d.ts.map +1 -1
  624. package/build/types/common/dateUtils/getDateView/getDateView.d.ts.map +1 -1
  625. package/build/types/common/dateUtils/getMonthNames/getMonthNames.d.ts.map +1 -1
  626. package/build/types/common/dateUtils/isDateValid/isDateValid.d.ts.map +1 -1
  627. package/build/types/common/dateUtils/isMonthAndYearFormat/isMonthAndYearFormat.d.ts.map +1 -1
  628. package/build/types/common/fakeEvents.d.ts.map +1 -1
  629. package/build/types/common/focusBoundary/FocusBoundary.d.ts.map +1 -1
  630. package/build/types/common/historyNavigator/historyNavigator.d.ts.map +1 -1
  631. package/build/types/common/hooks/useConditionalListener/useConditionalListener.d.ts.map +1 -1
  632. package/build/types/common/hooks/useHasIntersected/useHasIntersected.d.ts.map +1 -1
  633. package/build/types/common/initials.d.ts.map +1 -1
  634. package/build/types/common/textFormat/formatWithPattern/formatWithPattern.d.ts.map +1 -1
  635. package/build/types/common/textFormat/getCountOfSymbolsInSelection/getCountOfSymbolsInSelection.d.ts.map +1 -1
  636. package/build/types/common/textFormat/getCursorPositionAfterKeystroke/getCursorPositionAfterKeystroke.d.ts.map +1 -1
  637. package/build/types/common/textFormat/getDistanceToSymbol/getDistanceToSymbol.d.ts.map +1 -1
  638. package/build/types/common/textFormat/getSymbolsInPatternWithPosition/getSymbolsInPatternWithPosition.d.ts.map +1 -1
  639. package/build/types/common/textFormat/unformatWithPattern/unformatWithPattern.d.ts.map +1 -1
  640. package/build/types/common/theme.d.ts.map +1 -1
  641. package/build/types/dateInput/DateInput.d.ts.map +1 -1
  642. package/build/types/dateInput/utils/convertToLocalMidnight/convertToLocalMidnight.d.ts.map +1 -1
  643. package/build/types/dateLookup/DateLookup.d.ts.map +1 -1
  644. package/build/types/dateLookup/monthCalendar/table/MonthCalendarTable.d.ts.map +1 -1
  645. package/build/types/dateLookup/tableLink/TableLink.d.ts.map +1 -1
  646. package/build/types/dateLookup/yearCalendar/table/YearCalendarTable.d.ts.map +1 -1
  647. package/build/types/decision/Decision.d.ts.map +1 -1
  648. package/build/types/dimmer/Dimmer.d.ts.map +1 -1
  649. package/build/types/dropFade/DropFade.d.ts.map +1 -1
  650. package/build/types/emphasis/Emphasis.d.ts.map +1 -1
  651. package/build/types/field/Field.d.ts.map +1 -1
  652. package/build/types/flowNavigation/FlowNavigation.d.ts.map +1 -1
  653. package/build/types/flowNavigation/animatedLabel/AnimatedLabel.d.ts.map +1 -1
  654. package/build/types/header/Header.d.ts.map +1 -1
  655. package/build/types/image/Image.d.ts +0 -1
  656. package/build/types/image/Image.d.ts.map +1 -1
  657. package/build/types/info/Info.d.ts.map +1 -1
  658. package/build/types/inputWithDisplayFormat/InputWithDisplayFormat.d.ts.map +1 -1
  659. package/build/types/inputs/SelectInput.d.ts.map +1 -1
  660. package/build/types/instructionsList/InstructionsList.d.ts.map +1 -1
  661. package/build/types/link/Link.d.ts.map +1 -1
  662. package/build/types/loader/Loader.d.ts.map +1 -1
  663. package/build/types/markdown/Markdown.d.ts.map +1 -1
  664. package/build/types/modal/Modal.d.ts.map +1 -1
  665. package/build/types/money/Money.d.ts.map +1 -1
  666. package/build/types/moneyInput/MoneyInput.d.ts.map +1 -1
  667. package/build/types/moneyInput/MoneyInput.messages.d.ts +5 -0
  668. package/build/types/moneyInput/MoneyInput.messages.d.ts.map +1 -1
  669. package/build/types/navigationOptionsList/NavigationOptionsList.d.ts.map +1 -1
  670. package/build/types/nudge/Nudge.d.ts.map +1 -1
  671. package/build/types/phoneNumberInput/PhoneNumberInput.d.ts.map +1 -1
  672. package/build/types/phoneNumberInput/PhoneNumberInput.messages.d.ts +8 -0
  673. package/build/types/phoneNumberInput/PhoneNumberInput.messages.d.ts.map +1 -1
  674. package/build/types/phoneNumberInput/utils/cleanNumber/cleanNumber.d.ts.map +1 -1
  675. package/build/types/phoneNumberInput/utils/excludeCountries/excludeCountries.d.ts.map +1 -1
  676. package/build/types/phoneNumberInput/utils/explodeNumberModel/index.d.ts.map +1 -1
  677. package/build/types/phoneNumberInput/utils/findCountryByCode/index.d.ts.map +1 -1
  678. package/build/types/phoneNumberInput/utils/findCountryByPrefix/index.d.ts.map +1 -1
  679. package/build/types/phoneNumberInput/utils/groupCountriesByPrefix/groupCountriesByPrefix.d.ts.map +1 -1
  680. package/build/types/phoneNumberInput/utils/isStringNumeric/isStringNumeric.d.ts.map +1 -1
  681. package/build/types/phoneNumberInput/utils/isValidPhoneNumber/isValidPhoneNumber.d.ts.map +1 -1
  682. package/build/types/phoneNumberInput/utils/longestMatchingPrefix/index.d.ts.map +1 -1
  683. package/build/types/phoneNumberInput/utils/setDefaultPrefix/index.d.ts.map +1 -1
  684. package/build/types/progress/Progress.d.ts.map +1 -1
  685. package/build/types/progressBar/ProgressBar.d.ts.map +1 -1
  686. package/build/types/provider/direction/DirectionProvider.d.ts.map +1 -1
  687. package/build/types/provider/language/LanguageProvider.d.ts.map +1 -1
  688. package/build/types/provider/overlay/OverlayIdProvider.d.ts.map +1 -1
  689. package/build/types/section/Section.d.ts.map +1 -1
  690. package/build/types/segmentedControl/SegmentedControl.d.ts.map +1 -1
  691. package/build/types/statusIcon/StatusIcon.d.ts.map +1 -1
  692. package/build/types/stepper/Stepper.d.ts.map +1 -1
  693. package/build/types/summary/Summary.d.ts.map +1 -1
  694. package/build/types/switch/Switch.d.ts.map +1 -1
  695. package/build/types/switchOption/SwitchOption.d.ts.map +1 -1
  696. package/build/types/table/Table.d.ts.map +1 -1
  697. package/build/types/table/TableCell.d.ts.map +1 -1
  698. package/build/types/table/TableHeader.d.ts.map +1 -1
  699. package/build/types/table/TableRow.d.ts.map +1 -1
  700. package/build/types/table/TableStatusText.d.ts.map +1 -1
  701. package/build/types/tabs/Tabs.d.ts.map +1 -1
  702. package/build/types/tabs/utils.d.ts.map +1 -1
  703. package/build/types/test-utils/index.d.ts +6 -0
  704. package/build/types/test-utils/index.d.ts.map +1 -1
  705. package/build/types/test-utils/story-config.d.ts.map +1 -1
  706. package/build/types/textareaWithDisplayFormat/TextareaWithDisplayFormat.d.ts.map +1 -1
  707. package/build/types/tooltip/Tooltip.d.ts.map +1 -1
  708. package/build/types/upload/Upload.d.ts +1 -2
  709. package/build/types/upload/Upload.d.ts.map +1 -1
  710. package/build/types/upload/steps/processingStep/processingStep.d.ts +1 -3
  711. package/build/types/upload/steps/processingStep/processingStep.d.ts.map +1 -1
  712. package/build/types/upload/steps/uploadImageStep/uploadImageStep.d.ts +1 -0
  713. package/build/types/upload/steps/uploadImageStep/uploadImageStep.d.ts.map +1 -1
  714. package/build/types/uploadInput/UploadInput.d.ts.map +1 -1
  715. package/build/types/uploadInput/uploadButton/getAllowedFileTypes.d.ts.map +1 -1
  716. package/build/types/uploadInput/uploadItem/UploadItem.d.ts +1 -1
  717. package/build/types/uploadInput/uploadItem/UploadItem.d.ts.map +1 -1
  718. package/build/types/utilities/deprecatedProperty/deprecatedProperty.d.ts.map +1 -1
  719. package/build/types/withDisplayFormat/WithDisplayFormat.d.ts.map +1 -1
  720. package/build/types/withNextPortal/withNextPortal.d.ts.map +1 -1
  721. package/build/upload/Upload.js +29 -45
  722. package/build/upload/Upload.js.map +1 -1
  723. package/build/upload/Upload.messages.js.map +1 -1
  724. package/build/upload/Upload.messages.mjs.map +1 -1
  725. package/build/upload/Upload.mjs +29 -45
  726. package/build/upload/Upload.mjs.map +1 -1
  727. package/build/upload/steps/completeStep/completeStep.js.map +1 -1
  728. package/build/upload/steps/completeStep/completeStep.mjs.map +1 -1
  729. package/build/upload/steps/processingStep/processingStep.js +1 -3
  730. package/build/upload/steps/processingStep/processingStep.js.map +1 -1
  731. package/build/upload/steps/processingStep/processingStep.mjs +1 -3
  732. package/build/upload/steps/processingStep/processingStep.mjs.map +1 -1
  733. package/build/upload/steps/uploadImageStep/uploadImageStep.js +8 -1
  734. package/build/upload/steps/uploadImageStep/uploadImageStep.js.map +1 -1
  735. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs +8 -1
  736. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs.map +1 -1
  737. package/build/upload/utils/asyncFileRead/asyncFileRead.js.map +1 -1
  738. package/build/upload/utils/asyncFileRead/asyncFileRead.mjs.map +1 -1
  739. package/build/upload/utils/getFileType/getFileType.js.map +1 -1
  740. package/build/upload/utils/getFileType/getFileType.mjs.map +1 -1
  741. package/build/upload/utils/isSizeValid/isSizeValid.js.map +1 -1
  742. package/build/upload/utils/isSizeValid/isSizeValid.mjs.map +1 -1
  743. package/build/upload/utils/isTypeValid/isTypeValid.js.map +1 -1
  744. package/build/upload/utils/isTypeValid/isTypeValid.mjs.map +1 -1
  745. package/build/upload/utils/postData/postData.js.map +1 -1
  746. package/build/upload/utils/postData/postData.mjs.map +1 -1
  747. package/build/uploadInput/UploadInput.js +55 -6
  748. package/build/uploadInput/UploadInput.js.map +1 -1
  749. package/build/uploadInput/UploadInput.messages.js.map +1 -1
  750. package/build/uploadInput/UploadInput.messages.mjs.map +1 -1
  751. package/build/uploadInput/UploadInput.mjs +57 -8
  752. package/build/uploadInput/UploadInput.mjs.map +1 -1
  753. package/build/uploadInput/uploadButton/UploadButton.js.map +1 -1
  754. package/build/uploadInput/uploadButton/UploadButton.messages.js.map +1 -1
  755. package/build/uploadInput/uploadButton/UploadButton.messages.mjs.map +1 -1
  756. package/build/uploadInput/uploadButton/UploadButton.mjs.map +1 -1
  757. package/build/uploadInput/uploadButton/defaults.js.map +1 -1
  758. package/build/uploadInput/uploadButton/defaults.mjs.map +1 -1
  759. package/build/uploadInput/uploadButton/getAllowedFileTypes.js.map +1 -1
  760. package/build/uploadInput/uploadButton/getAllowedFileTypes.mjs.map +1 -1
  761. package/build/uploadInput/uploadItem/UploadItem.js +12 -6
  762. package/build/uploadInput/uploadItem/UploadItem.js.map +1 -1
  763. package/build/uploadInput/uploadItem/UploadItem.messages.js.map +1 -1
  764. package/build/uploadInput/uploadItem/UploadItem.messages.mjs.map +1 -1
  765. package/build/uploadInput/uploadItem/UploadItem.mjs +12 -6
  766. package/build/uploadInput/uploadItem/UploadItem.mjs.map +1 -1
  767. package/build/uploadInput/uploadItem/UploadItemLink.js.map +1 -1
  768. package/build/uploadInput/uploadItem/UploadItemLink.mjs.map +1 -1
  769. package/build/utilities/cssValueWithUnit.js.map +1 -1
  770. package/build/utilities/cssValueWithUnit.mjs.map +1 -1
  771. package/build/utilities/logActionRequired.js.map +1 -1
  772. package/build/utilities/logActionRequired.mjs.map +1 -1
  773. package/build/withDisplayFormat/WithDisplayFormat.js +6 -7
  774. package/build/withDisplayFormat/WithDisplayFormat.js.map +1 -1
  775. package/build/withDisplayFormat/WithDisplayFormat.mjs +6 -7
  776. package/build/withDisplayFormat/WithDisplayFormat.mjs.map +1 -1
  777. package/build/withId/withId.js.map +1 -1
  778. package/build/withId/withId.mjs.map +1 -1
  779. package/build/withNextPortal/withNextPortal.js +1 -1
  780. package/build/withNextPortal/withNextPortal.js.map +1 -1
  781. package/build/withNextPortal/withNextPortal.mjs +1 -1
  782. package/build/withNextPortal/withNextPortal.mjs.map +1 -1
  783. package/package.json +56 -59
  784. package/src/alert/Alert.spec.tsx +13 -4
  785. package/src/alert/Alert.story.tsx +23 -9
  786. package/src/alert/Alert.tsx +14 -1
  787. package/src/card/Card.story.tsx +4 -2
  788. package/src/checkbox/Checkbox.story.tsx +3 -2
  789. package/src/circularButton/CircularButton.css +1 -0
  790. package/src/circularButton/CircularButton.less +1 -0
  791. package/src/circularButton/CircularButton.tests.story.tsx +23 -0
  792. package/src/common/closeButton/CloseButton.spec.tsx +13 -1
  793. package/src/common/closeButton/CloseButton.tsx +3 -0
  794. package/src/common/initials.spec.tsx +42 -0
  795. package/src/common/initials.ts +4 -0
  796. package/src/dateInput/DateInput.css +2 -1
  797. package/src/dateInput/DateInput.less +7 -4
  798. package/src/dateInput/DateInput.story.tsx +2 -2
  799. package/src/dateInput/DateInput.tests.story.tsx +11 -10
  800. package/src/i18n/cs.json +12 -9
  801. package/src/i18n/de.json +3 -0
  802. package/src/i18n/en.json +3 -0
  803. package/src/i18n/es.json +3 -0
  804. package/src/i18n/fr.json +3 -0
  805. package/src/i18n/hu.json +3 -0
  806. package/src/i18n/id.json +3 -0
  807. package/src/i18n/it.json +3 -0
  808. package/src/i18n/ja.json +3 -0
  809. package/src/i18n/nl.json +6 -3
  810. package/src/i18n/pl.json +3 -0
  811. package/src/i18n/pt.json +3 -0
  812. package/src/i18n/ro.json +3 -0
  813. package/src/i18n/ru.json +3 -0
  814. package/src/i18n/th.json +3 -0
  815. package/src/i18n/tr.json +3 -0
  816. package/src/i18n/zh-CN.json +3 -0
  817. package/src/i18n/zh-HK.json +3 -0
  818. package/src/image/Image.spec.tsx +3 -3
  819. package/src/image/Image.tsx +10 -12
  820. package/src/inputWithDisplayFormat/InputWithDisplayFormat.story.tsx +1 -1
  821. package/src/inputs/Input.css +10 -0
  822. package/src/inputs/SelectInput.tsx +11 -2
  823. package/src/inputs/TextArea.css +10 -0
  824. package/src/inputs/_common.less +6 -0
  825. package/src/main.css +20 -2
  826. package/src/markdown/Markdown.tsx +2 -1
  827. package/src/moneyInput/MoneyInput.messages.ts +5 -0
  828. package/src/moneyInput/MoneyInput.spec.tsx +42 -5
  829. package/src/moneyInput/MoneyInput.story.tsx +11 -2
  830. package/src/moneyInput/MoneyInput.tsx +5 -7
  831. package/src/phoneNumberInput/PhoneNumberInput.messages.ts +8 -0
  832. package/src/phoneNumberInput/PhoneNumberInput.spec.tsx +77 -43
  833. package/src/phoneNumberInput/PhoneNumberInput.tsx +36 -4
  834. package/src/primitives/PrimitiveAnchor/stories/PrimitiveAnchor.story.tsx +3 -2
  835. package/src/primitives/PrimitiveButton/stories/PrimitiveButton.story.tsx +3 -2
  836. package/src/promoCard/__snapshots__/PromoCard.spec.tsx.snap +1 -0
  837. package/src/promoCard/__snapshots__/PromoCardGroup.spec.tsx.snap +2 -0
  838. package/src/radioGroup/RadioGroup.story.tsx +2 -2
  839. package/src/tabs/Tabs.spec.tsx +137 -0
  840. package/src/tabs/Tabs.story.tsx +1 -0
  841. package/src/tabs/Tabs.tsx +0 -1
  842. package/src/test-utils/jest.setup.ts +0 -4
  843. package/src/textareaWithDisplayFormat/TextareaWithDisplayFormat.spec.js +9 -8
  844. package/src/typeahead/Typeahead.spec.tsx +182 -0
  845. package/src/typeahead/Typeahead.story.tsx +3 -2
  846. package/src/typeahead/typeaheadInput/TypeaheadInput.spec.tsx +103 -0
  847. package/src/typeahead/util/highlight.spec.tsx +43 -0
  848. package/src/upload/Upload.css +3 -0
  849. package/src/upload/Upload.less +7 -1
  850. package/src/upload/Upload.spec.tsx +63 -0
  851. package/src/upload/Upload.story.tsx +1 -52
  852. package/src/upload/Upload.tests.story.tsx +93 -0
  853. package/src/upload/Upload.tsx +28 -49
  854. package/src/upload/steps/processingStep/processingStep.tsx +2 -7
  855. package/src/upload/steps/uploadImageStep/uploadImageStep.spec.tsx +15 -0
  856. package/src/upload/steps/uploadImageStep/uploadImageStep.tsx +8 -0
  857. package/src/uploadInput/UploadInput.tsx +81 -8
  858. package/src/uploadInput/uploadItem/UploadItem.css +2 -1
  859. package/src/uploadInput/uploadItem/UploadItem.less +1 -1
  860. package/src/uploadInput/uploadItem/UploadItem.tsx +11 -6
  861. package/src/withDisplayFormat/WithDisplayFormat.spec.js +123 -216
  862. package/src/withDisplayFormat/WithDisplayFormat.tsx +7 -8
  863. package/src/tabs/Tabs.spec.js +0 -423
  864. package/src/typeahead/Typeahead.rtl.spec.tsx +0 -54
  865. package/src/typeahead/Typeahead.spec.js +0 -404
  866. package/src/typeahead/typeaheadInput/TypeaheadInput.spec.js +0 -74
  867. package/src/typeahead/typeaheadOption/TypeaheadOption.spec.js +0 -75
  868. package/src/typeahead/util/highlight.spec.js +0 -34
  869. package/src/withDisplayFormat/WithDisplayFormat.state.spec.js +0 -42
@@ -1 +1 @@
1
- {"version":3,"file":"Nudge.mjs","sources":["../../src/nudge/Nudge.tsx"],"sourcesContent":["import { Illustration, Assets, IllustrationNames } from '@wise/art';\nimport { clsx } from 'clsx';\nimport { ReactNode, useEffect, useState, MouseEvent } from 'react';\n\nimport Body from '../body';\nimport { Typography } from '../common';\nimport { CloseButton } from '../common/closeButton';\nimport Link from '../link';\nimport type { AlertAction } from '../alert';\n\n// WARNING: Changing this will cause nudges to reappear wherever persist nudge is used and privacy team will need to be updated too\nexport const STORAGE_NAME = 'dismissedNudges';\n\nconst getLocalStorage = (): string[] => {\n try {\n const storageItem = localStorage.getItem(STORAGE_NAME);\n\n if (storageItem) {\n const storage: unknown = JSON.parse(storageItem);\n\n if (Array.isArray(storage)) {\n return storage.map((item) => String(item));\n }\n }\n } catch (error) {}\n\n return [];\n};\n\ntype MediaNameType =\n | `${Assets.GLOBE}`\n | `${Assets.LOCK}`\n | `${Assets.WALLET}`\n | `${Assets.GEAR}`\n | `${Assets.INVITE_LETTER}`\n | `${Assets.PERSONAL_CARD}`\n | `${Assets.BUSINESS_CARD}`\n | `${Assets.HEART}`\n | `${Assets.MULTI_CURRENCY}`\n | `${Assets.SHOPPING_BAG}`\n | `${Assets.FLOWER}`;\n\ntype BaseProps = {\n /** @deprecated use `mediaName` property instead */\n media?: ReactNode;\n /** Media name */\n mediaName?: MediaNameType;\n title: ReactNode;\n link?: ReactNode;\n href?: string;\n onClick?: (event?: MouseEvent<HTMLSpanElement>) => void;\n /** Fired when the user clicks on close button */\n onDismiss?: () => void;\n /** An optional call to action to sit under the main body of the nudge. If your label is short, use aria-label to provide more context */\n action?: AlertAction;\n className?: string;\n};\n\nexport interface OptionalId extends BaseProps {\n id?: string;\n persistDismissal?: false;\n isPreviouslyDismissed?: undefined;\n}\n\nexport interface RequiredPersistProps extends BaseProps {\n /** This ID should be completely unique to the page and feature as it uses a shared array which could conflict with other nudges in Wise */\n id: string;\n /** Use persist dismissal to keep the nudge dismissed using the browser's localStorage */\n persistDismissal: true;\n /**\n * Fired on mount for determining if nudge has been dismissed before\n *\n * @param {boolean} value - set to true if dismissed previously\n */\n isPreviouslyDismissed?: (value: boolean) => void;\n}\n\nexport type Props = OptionalId | RequiredPersistProps;\n\nconst Nudge = ({\n media,\n mediaName,\n title,\n link,\n href,\n onClick,\n onDismiss,\n persistDismissal,\n isPreviouslyDismissed,\n id,\n className,\n action,\n}: Props) => {\n const [isDismissed, setIsDismissed] = useState(false);\n const [isMounted, setIsMounted] = useState(false);\n\n const handleOnDismiss = () => {\n const dismissedNudgesStorage = getLocalStorage();\n\n if (persistDismissal && id) {\n try {\n localStorage.setItem(STORAGE_NAME, JSON.stringify([...dismissedNudgesStorage, id]));\n } catch (error) {}\n\n setIsDismissed(true);\n }\n\n if (onDismiss) {\n onDismiss();\n }\n };\n\n useEffect(() => {\n if (persistDismissal && id) {\n const dismissedNudgesStorage = getLocalStorage();\n let isDismissed = false;\n\n if (dismissedNudgesStorage?.find((item) => item === id)) {\n setIsDismissed(true);\n isDismissed = true;\n }\n\n if (isPreviouslyDismissed) {\n isPreviouslyDismissed(isDismissed);\n }\n }\n\n setIsMounted(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [id, persistDismissal]);\n\n if (persistDismissal && (isDismissed || !isMounted)) {\n return null;\n }\n\n return (\n <div className={clsx('wds-nudge', className)} id={id}>\n {!!mediaName && (\n <div className=\"wds-nudge-media\">\n <Illustration\n name={mediaName as IllustrationNames}\n className={clsx(`wds-nudge-media-${mediaName}`)}\n size=\"small\"\n disablePadding\n alt=\"\"\n />\n </div>\n )}\n <div className=\"wds-nudge-container\">\n <div className=\"wds-nudge-content\">\n <Body type={Typography.BODY_LARGE} className={clsx('wds-nudge-body')}>\n {title}\n </Body>\n {/* Merge these two Link instances into one */}\n {link && (\n <Link\n href={href}\n type={Typography.LINK_LARGE}\n className=\"wds-nudge-link\"\n onClick={onClick}\n >\n {link}\n </Link>\n )}\n {action && (\n <Link\n href={action.href}\n target={action.target}\n className=\"m-t-1\"\n aria-label={action['aria-label']}\n type={Typography.LINK_LARGE}\n onClick={action.onClick}\n >\n {action.text}\n </Link>\n )}\n </div>\n {onDismiss || persistDismissal ? (\n <CloseButton className=\"wds-nudge-control\" size=\"sm\" onClick={handleOnDismiss} />\n ) : null}\n </div>\n </div>\n );\n};\n\nexport default Nudge;\n"],"names":["STORAGE_NAME","getLocalStorage","storageItem","localStorage","getItem","storage","JSON","parse","Array","isArray","map","item","String","error","Nudge","media","mediaName","title","link","href","onClick","onDismiss","persistDismissal","isPreviouslyDismissed","id","className","action","isDismissed","setIsDismissed","useState","isMounted","setIsMounted","handleOnDismiss","dismissedNudgesStorage","setItem","stringify","useEffect","find","_jsxs","clsx","children","_jsx","Illustration","name","size","disablePadding","alt","Body","type","Typography","BODY_LARGE","Link","LINK_LARGE","target","text","CloseButton"],"mappings":"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"}
1
+ {"version":3,"file":"Nudge.mjs","sources":["../../src/nudge/Nudge.tsx"],"sourcesContent":["import { Illustration, Assets, IllustrationNames } from '@wise/art';\nimport { clsx } from 'clsx';\nimport { ReactNode, useEffect, useState, MouseEvent } from 'react';\n\nimport Body from '../body';\nimport { Typography } from '../common';\nimport { CloseButton } from '../common/closeButton';\nimport Link from '../link';\nimport type { AlertAction } from '../alert';\n\n// WARNING: Changing this will cause nudges to reappear wherever persist nudge is used and privacy team will need to be updated too\nexport const STORAGE_NAME = 'dismissedNudges';\n\nconst getLocalStorage = (): string[] => {\n try {\n const storageItem = localStorage.getItem(STORAGE_NAME);\n\n if (storageItem) {\n const storage: unknown = JSON.parse(storageItem);\n\n if (Array.isArray(storage)) {\n return storage.map((item) => String(item));\n }\n }\n } catch (error) {}\n\n return [];\n};\n\ntype MediaNameType =\n | `${Assets.GLOBE}`\n | `${Assets.LOCK}`\n | `${Assets.WALLET}`\n | `${Assets.GEAR}`\n | `${Assets.INVITE_LETTER}`\n | `${Assets.PERSONAL_CARD}`\n | `${Assets.BUSINESS_CARD}`\n | `${Assets.HEART}`\n | `${Assets.MULTI_CURRENCY}`\n | `${Assets.SHOPPING_BAG}`\n | `${Assets.FLOWER}`;\n\ntype BaseProps = {\n /** @deprecated use `mediaName` property instead */\n media?: ReactNode;\n /** Media name */\n mediaName?: MediaNameType;\n title: ReactNode;\n link?: ReactNode;\n href?: string;\n onClick?: (event?: MouseEvent<HTMLSpanElement>) => void;\n /** Fired when the user clicks on close button */\n onDismiss?: () => void;\n /** An optional call to action to sit under the main body of the nudge. If your label is short, use aria-label to provide more context */\n action?: AlertAction;\n className?: string;\n};\n\nexport interface OptionalId extends BaseProps {\n id?: string;\n persistDismissal?: false;\n isPreviouslyDismissed?: undefined;\n}\n\nexport interface RequiredPersistProps extends BaseProps {\n /** This ID should be completely unique to the page and feature as it uses a shared array which could conflict with other nudges in Wise */\n id: string;\n /** Use persist dismissal to keep the nudge dismissed using the browser's localStorage */\n persistDismissal: true;\n /**\n * Fired on mount for determining if nudge has been dismissed before\n *\n * @param {boolean} value - set to true if dismissed previously\n */\n isPreviouslyDismissed?: (value: boolean) => void;\n}\n\nexport type Props = OptionalId | RequiredPersistProps;\n\nconst Nudge = ({\n media,\n mediaName,\n title,\n link,\n href,\n onClick,\n onDismiss,\n persistDismissal,\n isPreviouslyDismissed,\n id,\n className,\n action,\n}: Props) => {\n const [isDismissed, setIsDismissed] = useState(false);\n const [isMounted, setIsMounted] = useState(false);\n\n const handleOnDismiss = () => {\n const dismissedNudgesStorage = getLocalStorage();\n\n if (persistDismissal && id) {\n try {\n localStorage.setItem(STORAGE_NAME, JSON.stringify([...dismissedNudgesStorage, id]));\n } catch (error) {}\n\n setIsDismissed(true);\n }\n\n if (onDismiss) {\n onDismiss();\n }\n };\n\n useEffect(() => {\n if (persistDismissal && id) {\n const dismissedNudgesStorage = getLocalStorage();\n let isDismissed = false;\n\n if (dismissedNudgesStorage?.find((item) => item === id)) {\n setIsDismissed(true);\n isDismissed = true;\n }\n\n if (isPreviouslyDismissed) {\n isPreviouslyDismissed(isDismissed);\n }\n }\n\n setIsMounted(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [id, persistDismissal]);\n\n if (persistDismissal && (isDismissed || !isMounted)) {\n return null;\n }\n\n return (\n <div className={clsx('wds-nudge', className)} id={id}>\n {!!mediaName && (\n <div className=\"wds-nudge-media\">\n <Illustration\n name={mediaName as IllustrationNames}\n className={clsx(`wds-nudge-media-${mediaName}`)}\n size=\"small\"\n disablePadding\n alt=\"\"\n />\n </div>\n )}\n <div className=\"wds-nudge-container\">\n <div className=\"wds-nudge-content\">\n <Body type={Typography.BODY_LARGE} className={clsx('wds-nudge-body')}>\n {title}\n </Body>\n {/* Merge these two Link instances into one */}\n {link && (\n <Link\n href={href}\n type={Typography.LINK_LARGE}\n className=\"wds-nudge-link\"\n onClick={onClick}\n >\n {link}\n </Link>\n )}\n {action && (\n <Link\n href={action.href}\n target={action.target}\n className=\"m-t-1\"\n aria-label={action['aria-label']}\n type={Typography.LINK_LARGE}\n onClick={action.onClick}\n >\n {action.text}\n </Link>\n )}\n </div>\n {onDismiss || persistDismissal ? (\n <CloseButton className=\"wds-nudge-control\" size=\"sm\" onClick={handleOnDismiss} />\n ) : null}\n </div>\n </div>\n );\n};\n\nexport default Nudge;\n"],"names":["STORAGE_NAME","getLocalStorage","storageItem","localStorage","getItem","storage","JSON","parse","Array","isArray","map","item","String","error","Nudge","media","mediaName","title","link","href","onClick","onDismiss","persistDismissal","isPreviouslyDismissed","id","className","action","isDismissed","setIsDismissed","useState","isMounted","setIsMounted","handleOnDismiss","dismissedNudgesStorage","setItem","stringify","useEffect","find","_jsxs","clsx","children","_jsx","Illustration","name","size","disablePadding","alt","Body","type","Typography","BODY_LARGE","Link","LINK_LARGE","target","text","CloseButton"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayHeader.js","sources":["../../src/overlayHeader/OverlayHeader.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nimport { Size } from '../common';\nimport { CloseButton } from '../common/closeButton';\nimport FlowHeader from '../common/flowHeader';\nimport Logo from '../logo';\n\nexport interface OverlayHeaderProps {\n /** An Avatar */\n avatar?: React.ReactNode;\n logo?: React.ReactNode;\n /** Function called when the close is clicked */\n onClose?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nconst defaultLogo = <Logo />;\n\nexport default function OverlayHeader({ avatar, onClose, logo = defaultLogo }: OverlayHeaderProps) {\n const closeButton = onClose && <CloseButton size={Size.LARGE} onClick={onClose} />;\n return (\n <div className=\"np-overlay-header d-flex justify-content-center\">\n <FlowHeader\n className=\"np-overlay-header__content p-a-3\"\n leftContent={logo}\n rightContent={\n <div className={clsx('d-flex', 'align-items-center', 'order-2')}>\n {avatar}\n {avatar && closeButton && <span className={clsx('m-x-1')} />}\n {closeButton}\n </div>\n }\n />\n </div>\n );\n}\n"],"names":["defaultLogo","_jsx","Logo","OverlayHeader","avatar","onClose","logo","closeButton","CloseButton","size","Size","LARGE","onClick","className","children","FlowHeader","leftContent","rightContent","_jsxs","clsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAMA,WAAW,gBAAGC,cAAA,CAACC,YAAI,KAAG,CAAA;AAEJ,SAAAC,aAAaA,CAAC;EAAEC,MAAM;EAAEC,OAAO;AAAEC,EAAAA,IAAI,GAAGN,WAAAA;AAAiC,CAAA,EAAA;AAC/F,EAAA,MAAMO,WAAW,GAAGF,OAAO,iBAAIJ,cAAA,CAACO,uBAAW,EAAA;IAACC,IAAI,EAAEC,SAAI,CAACC,KAAM;AAACC,IAAAA,OAAO,EAAEP,OAAAA;AAAQ,GAAA,CAAG,CAAA;AAClF,EAAA,oBACEJ,cAAA,CAAA,KAAA,EAAA;AAAKY,IAAAA,SAAS,EAAC,iDAAiD;IAAAC,QAAA,eAC9Db,cAAA,CAACc,kBAAU,EAAA;AACTF,MAAAA,SAAS,EAAC,kCAAkC;AAC5CG,MAAAA,WAAW,EAAEV,IAAK;AAClBW,MAAAA,YAAY,eACVC,eAAA,CAAA,KAAA,EAAA;QAAKL,SAAS,EAAEM,SAAI,CAAC,QAAQ,EAAE,oBAAoB,EAAE,SAAS,CAAE;AAAAL,QAAAA,QAAA,GAC7DV,MAAM,EACNA,MAAM,IAAIG,WAAW,iBAAIN,cAAA,CAAA,MAAA,EAAA;UAAMY,SAAS,EAAEM,SAAI,CAAC,OAAO,CAAA;UAAK,EAC3DZ,WAAW,CAAA;OACT,CAAA;KAGX,CAAA;AAAA,GAAK,CAAC,CAAA;AAEV;;;;"}
1
+ {"version":3,"file":"OverlayHeader.js","sources":["../../src/overlayHeader/OverlayHeader.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nimport { Size } from '../common';\nimport { CloseButton } from '../common/closeButton';\nimport FlowHeader from '../common/flowHeader';\nimport Logo from '../logo';\n\nexport interface OverlayHeaderProps {\n /** An Avatar */\n avatar?: React.ReactNode;\n logo?: React.ReactNode;\n /** Function called when the close is clicked */\n onClose?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nconst defaultLogo = <Logo />;\n\nexport default function OverlayHeader({ avatar, onClose, logo = defaultLogo }: OverlayHeaderProps) {\n const closeButton = onClose && <CloseButton size={Size.LARGE} onClick={onClose} />;\n return (\n <div className=\"np-overlay-header d-flex justify-content-center\">\n <FlowHeader\n className=\"np-overlay-header__content p-a-3\"\n leftContent={logo}\n rightContent={\n <div className={clsx('d-flex', 'align-items-center', 'order-2')}>\n {avatar}\n {avatar && closeButton && <span className={clsx('m-x-1')} />}\n {closeButton}\n </div>\n }\n />\n </div>\n );\n}\n"],"names":["defaultLogo","_jsx","Logo","OverlayHeader","avatar","onClose","logo","closeButton","CloseButton","size","Size","LARGE","onClick","className","children","FlowHeader","leftContent","rightContent","_jsxs","clsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAMA,WAAW,gBAAGC,cAAA,CAACC,YAAI,KAAG;AAEJ,SAAAC,aAAaA,CAAC;EAAEC,MAAM;EAAEC,OAAO;AAAEC,EAAAA,IAAI,GAAGN;AAAiC,CAAA,EAAA;AAC/F,EAAA,MAAMO,WAAW,GAAGF,OAAO,iBAAIJ,cAAA,CAACO,uBAAW,EAAA;IAACC,IAAI,EAAEC,SAAI,CAACC,KAAM;AAACC,IAAAA,OAAO,EAAEP;AAAQ,GAAA,CAAG;AAClF,EAAA,oBACEJ,cAAA,CAAA,KAAA,EAAA;AAAKY,IAAAA,SAAS,EAAC,iDAAiD;IAAAC,QAAA,eAC9Db,cAAA,CAACc,kBAAU,EAAA;AACTF,MAAAA,SAAS,EAAC,kCAAkC;AAC5CG,MAAAA,WAAW,EAAEV,IAAK;AAClBW,MAAAA,YAAY,eACVC,eAAA,CAAA,KAAA,EAAA;QAAKL,SAAS,EAAEM,SAAI,CAAC,QAAQ,EAAE,oBAAoB,EAAE,SAAS,CAAE;AAAAL,QAAAA,QAAA,GAC7DV,MAAM,EACNA,MAAM,IAAIG,WAAW,iBAAIN,cAAA,CAAA,MAAA,EAAA;UAAMY,SAAS,EAAEM,SAAI,CAAC,OAAO;UAAK,EAC3DZ,WAAW;OACT;KAGX;AAAA,GAAK,CAAC;AAEV;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayHeader.mjs","sources":["../../src/overlayHeader/OverlayHeader.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nimport { Size } from '../common';\nimport { CloseButton } from '../common/closeButton';\nimport FlowHeader from '../common/flowHeader';\nimport Logo from '../logo';\n\nexport interface OverlayHeaderProps {\n /** An Avatar */\n avatar?: React.ReactNode;\n logo?: React.ReactNode;\n /** Function called when the close is clicked */\n onClose?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nconst defaultLogo = <Logo />;\n\nexport default function OverlayHeader({ avatar, onClose, logo = defaultLogo }: OverlayHeaderProps) {\n const closeButton = onClose && <CloseButton size={Size.LARGE} onClick={onClose} />;\n return (\n <div className=\"np-overlay-header d-flex justify-content-center\">\n <FlowHeader\n className=\"np-overlay-header__content p-a-3\"\n leftContent={logo}\n rightContent={\n <div className={clsx('d-flex', 'align-items-center', 'order-2')}>\n {avatar}\n {avatar && closeButton && <span className={clsx('m-x-1')} />}\n {closeButton}\n </div>\n }\n />\n </div>\n );\n}\n"],"names":["defaultLogo","_jsx","Logo","OverlayHeader","avatar","onClose","logo","closeButton","CloseButton","size","Size","LARGE","onClick","className","children","FlowHeader","leftContent","rightContent","_jsxs","clsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAMA,WAAW,gBAAGC,GAAA,CAACC,IAAI,KAAG,CAAA;AAEJ,SAAAC,aAAaA,CAAC;EAAEC,MAAM;EAAEC,OAAO;AAAEC,EAAAA,IAAI,GAAGN,WAAAA;AAAiC,CAAA,EAAA;AAC/F,EAAA,MAAMO,WAAW,GAAGF,OAAO,iBAAIJ,GAAA,CAACO,WAAW,EAAA;IAACC,IAAI,EAAEC,IAAI,CAACC,KAAM;AAACC,IAAAA,OAAO,EAAEP,OAAAA;AAAQ,GAAA,CAAG,CAAA;AAClF,EAAA,oBACEJ,GAAA,CAAA,KAAA,EAAA;AAAKY,IAAAA,SAAS,EAAC,iDAAiD;IAAAC,QAAA,eAC9Db,GAAA,CAACc,UAAU,EAAA;AACTF,MAAAA,SAAS,EAAC,kCAAkC;AAC5CG,MAAAA,WAAW,EAAEV,IAAK;AAClBW,MAAAA,YAAY,eACVC,IAAA,CAAA,KAAA,EAAA;QAAKL,SAAS,EAAEM,IAAI,CAAC,QAAQ,EAAE,oBAAoB,EAAE,SAAS,CAAE;AAAAL,QAAAA,QAAA,GAC7DV,MAAM,EACNA,MAAM,IAAIG,WAAW,iBAAIN,GAAA,CAAA,MAAA,EAAA;UAAMY,SAAS,EAAEM,IAAI,CAAC,OAAO,CAAA;UAAK,EAC3DZ,WAAW,CAAA;OACT,CAAA;KAGX,CAAA;AAAA,GAAK,CAAC,CAAA;AAEV;;;;"}
1
+ {"version":3,"file":"OverlayHeader.mjs","sources":["../../src/overlayHeader/OverlayHeader.tsx"],"sourcesContent":["import { clsx } from 'clsx';\n\nimport { Size } from '../common';\nimport { CloseButton } from '../common/closeButton';\nimport FlowHeader from '../common/flowHeader';\nimport Logo from '../logo';\n\nexport interface OverlayHeaderProps {\n /** An Avatar */\n avatar?: React.ReactNode;\n logo?: React.ReactNode;\n /** Function called when the close is clicked */\n onClose?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nconst defaultLogo = <Logo />;\n\nexport default function OverlayHeader({ avatar, onClose, logo = defaultLogo }: OverlayHeaderProps) {\n const closeButton = onClose && <CloseButton size={Size.LARGE} onClick={onClose} />;\n return (\n <div className=\"np-overlay-header d-flex justify-content-center\">\n <FlowHeader\n className=\"np-overlay-header__content p-a-3\"\n leftContent={logo}\n rightContent={\n <div className={clsx('d-flex', 'align-items-center', 'order-2')}>\n {avatar}\n {avatar && closeButton && <span className={clsx('m-x-1')} />}\n {closeButton}\n </div>\n }\n />\n </div>\n );\n}\n"],"names":["defaultLogo","_jsx","Logo","OverlayHeader","avatar","onClose","logo","closeButton","CloseButton","size","Size","LARGE","onClick","className","children","FlowHeader","leftContent","rightContent","_jsxs","clsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAMA,WAAW,gBAAGC,GAAA,CAACC,IAAI,KAAG;AAEJ,SAAAC,aAAaA,CAAC;EAAEC,MAAM;EAAEC,OAAO;AAAEC,EAAAA,IAAI,GAAGN;AAAiC,CAAA,EAAA;AAC/F,EAAA,MAAMO,WAAW,GAAGF,OAAO,iBAAIJ,GAAA,CAACO,WAAW,EAAA;IAACC,IAAI,EAAEC,IAAI,CAACC,KAAM;AAACC,IAAAA,OAAO,EAAEP;AAAQ,GAAA,CAAG;AAClF,EAAA,oBACEJ,GAAA,CAAA,KAAA,EAAA;AAAKY,IAAAA,SAAS,EAAC,iDAAiD;IAAAC,QAAA,eAC9Db,GAAA,CAACc,UAAU,EAAA;AACTF,MAAAA,SAAS,EAAC,kCAAkC;AAC5CG,MAAAA,WAAW,EAAEV,IAAK;AAClBW,MAAAA,YAAY,eACVC,IAAA,CAAA,KAAA,EAAA;QAAKL,SAAS,EAAEM,IAAI,CAAC,QAAQ,EAAE,oBAAoB,EAAE,SAAS,CAAE;AAAAL,QAAAA,QAAA,GAC7DV,MAAM,EACNA,MAAM,IAAIG,WAAW,iBAAIN,GAAA,CAAA,MAAA,EAAA;UAAMY,SAAS,EAAEM,IAAI,CAAC,OAAO;UAAK,EAC3DZ,WAAW;OACT;KAGX;AAAA,GAAK,CAAC;AAEV;;;;"}
@@ -39,6 +39,7 @@ var cleanNumber = require('./utils/cleanNumber/cleanNumber.js');
39
39
  var sortArrayByProperty = require('./utils/sortArrayByProperty/sortArrayByProperty.js');
40
40
  var groupCountriesByPrefix = require('./utils/groupCountriesByPrefix/groupCountriesByPrefix.js');
41
41
  var excludeCountries = require('./utils/excludeCountries/excludeCountries.js');
42
+ var Input = require('../inputs/Input.js');
42
43
 
43
44
  const ALLOWED_PHONE_CHARS = /^$|^[\d-\s]+$/;
44
45
  const defaultSelectProps = {};
@@ -67,6 +68,23 @@ const PhoneNumberInput = ({
67
68
  locale,
68
69
  formatMessage
69
70
  } = reactIntl.useIntl();
71
+ const createId = (customID, backup) => {
72
+ if (customID) {
73
+ return customID + (backup ? `-${backup}` : '');
74
+ }
75
+ const random = Math.random().toString(36).slice(2, 8);
76
+ return `${backup}-${random}`;
77
+ };
78
+ const ids = {
79
+ countryCode: {
80
+ label: createId(id, 'country-code-label'),
81
+ select: createId(id, 'country-code-select')
82
+ },
83
+ phoneNumber: {
84
+ label: createId(id, 'phone-number-label'),
85
+ input: createId(id, id ? '' : 'phone-number-input')
86
+ }
87
+ };
70
88
  const [internalValue, setInternalValue] = React.useState(() => {
71
89
  const cleanValue = initialValue ? cleanNumber.cleanNumber(initialValue) : null;
72
90
  if (!cleanValue || !isValidPhoneNumber.isValidPhoneNumber(cleanValue, 1)) {
@@ -123,7 +141,11 @@ const PhoneNumberInput = ({
123
141
  ...inputAttributes,
124
142
  "aria-labelledby": ariaLabelledBy,
125
143
  className: "tw-telephone",
126
- children: [/*#__PURE__*/jsxRuntime.jsx("div", {
144
+ children: [/*#__PURE__*/jsxRuntime.jsx("label", {
145
+ className: "sr-only",
146
+ id: ids.countryCode.label,
147
+ children: formatMessage(PhoneNumberInput_messages.default.countryCodeLabel)
148
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
127
149
  className: "tw-telephone__country-select",
128
150
  children: /*#__PURE__*/jsxRuntime.jsx(SelectInput.SelectInput, {
129
151
  placeholder: formatMessage(PhoneNumberInput_messages.default.selectInputPlaceholder),
@@ -141,6 +163,13 @@ const PhoneNumberInput = ({
141
163
  filterPlaceholder: searchPlaceholder,
142
164
  disabled: disabled,
143
165
  size: size$1,
166
+ id: ids.countryCode.select,
167
+ UNSAFE_triggerButtonProps: {
168
+ id: ids.countryCode.select,
169
+ 'aria-labelledby': ids.countryCode.label,
170
+ 'aria-describedby': undefined,
171
+ 'aria-invalid': undefined
172
+ },
144
173
  onChange: prefix => {
145
174
  const country = prefix != null ? index$2.findCountryByPrefix(prefix) : null;
146
175
  setInternalValue(prev => ({
@@ -156,20 +185,25 @@ const PhoneNumberInput = ({
156
185
  },
157
186
  ...selectProps
158
187
  })
188
+ }), /*#__PURE__*/jsxRuntime.jsx("label", {
189
+ className: "sr-only",
190
+ id: ids.phoneNumber.label,
191
+ htmlFor: ids.phoneNumber.input,
192
+ children: formatMessage(PhoneNumberInput_messages.default.phoneNumberLabel)
159
193
  }), /*#__PURE__*/jsxRuntime.jsx("div", {
160
194
  className: "tw-telephone__number-input",
161
195
  children: /*#__PURE__*/jsxRuntime.jsx("div", {
162
196
  className: `input-group input-group-${size$1}`,
163
- children: /*#__PURE__*/jsxRuntime.jsx("input", {
164
- id: id,
197
+ children: /*#__PURE__*/jsxRuntime.jsx(Input.Input, {
198
+ id: ids.phoneNumber.input,
165
199
  autoComplete: "tel-national",
166
200
  name: "phoneNumber",
167
201
  inputMode: "numeric",
168
202
  value: internalValue.suffix,
169
- className: "form-control",
170
203
  disabled: disabled,
171
204
  required: required,
172
205
  placeholder: placeholder,
206
+ "aria-labelledby": ids.phoneNumber.label,
173
207
  onChange: onSuffixChange,
174
208
  onPaste: onPaste,
175
209
  onFocus: onFocus,
@@ -1 +1 @@
1
- {"version":3,"file":"PhoneNumberInput.js","sources":["../../src/phoneNumberInput/PhoneNumberInput.tsx"],"sourcesContent":["import { useState, useEffect, useMemo } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport { Size, SizeLarge, SizeMedium, SizeSmall } from '../common';\nimport { useInputAttributes } from '../inputs/contexts';\nimport { SelectInput, SelectInputOptionContent, SelectInputProps } from '../inputs/SelectInput';\n\nimport messages from './PhoneNumberInput.messages';\nimport countries from './data/countries';\nimport {\n explodeNumberModel,\n isValidPhoneNumber,\n cleanNumber,\n setDefaultPrefix,\n sortArrayByProperty,\n groupCountriesByPrefix,\n excludeCountries,\n findCountryByPrefix,\n} from './utils';\nimport { PhoneNumber } from './utils/explodeNumberModel';\n\nconst ALLOWED_PHONE_CHARS = /^$|^[\\d-\\s]+$/;\n\nexport interface PhoneNumberInputProps {\n id?: string;\n 'aria-labelledby'?: string;\n required?: boolean;\n disabled?: boolean;\n initialValue?: string;\n onChange: (value: string | null, prefix: string) => void;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: () => void;\n countryCode?: string;\n searchPlaceholder?: string;\n size?: SizeSmall | SizeMedium | SizeLarge;\n placeholder?: string;\n selectProps?: Partial<SelectInputProps<string | null>>;\n /** List of iso3 codes of countries to remove from the list */\n disabledCountries?: readonly string[];\n}\n\nconst defaultSelectProps = {} satisfies PhoneNumberInputProps['selectProps'];\nconst defaultDisabledCountries = [] satisfies PhoneNumberInputProps['disabledCountries'];\n\nconst PhoneNumberInput = ({\n id,\n 'aria-labelledby': ariaLabelledByProp,\n required,\n disabled,\n initialValue,\n onChange,\n onFocus,\n onBlur,\n countryCode,\n searchPlaceholder = 'Prefix',\n size = Size.MEDIUM,\n placeholder,\n selectProps = defaultSelectProps,\n disabledCountries = defaultDisabledCountries,\n}: PhoneNumberInputProps) => {\n const inputAttributes = useInputAttributes({ nonLabelable: true });\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes['aria-labelledby'];\n\n const { locale, formatMessage } = useIntl();\n\n const [internalValue, setInternalValue] = useState<PhoneNumber>(() => {\n const cleanValue = initialValue ? cleanNumber(initialValue) : null;\n\n if (!cleanValue || !isValidPhoneNumber(cleanValue, 1)) {\n return {\n prefix: setDefaultPrefix(locale, countryCode),\n suffix: '',\n };\n }\n\n return explodeNumberModel(cleanValue);\n });\n const [broadcastedValue, setBroadcastedValue] = useState<PhoneNumber | null>(null);\n\n const [suffixDirty, setSuffixDirty] = useState(false);\n useEffect(() => {\n if (internalValue.suffix) {\n setSuffixDirty(true);\n }\n }, [internalValue.suffix]);\n\n const countriesByPrefix = useMemo(\n () =>\n groupCountriesByPrefix(\n sortArrayByProperty(excludeCountries(countries, disabledCountries), 'iso3'),\n ),\n [disabledCountries],\n );\n\n const onSuffixChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const suffix = event.target.value;\n if (ALLOWED_PHONE_CHARS.test(suffix)) {\n setInternalValue((prev) => ({ ...prev, suffix }));\n }\n };\n\n const onPaste: React.ClipboardEventHandler<HTMLInputElement> = (event) => {\n if (!event.nativeEvent.clipboardData) {\n return;\n }\n\n const pastedValue = (event.nativeEvent.clipboardData.getData('text/plain') || '').replace(\n /(\\s|-)+/g,\n '',\n );\n const pastedNumber = explodeNumberModel(pastedValue);\n\n if (\n pastedNumber.prefix != null &&\n countriesByPrefix.has(pastedNumber.prefix) &&\n ALLOWED_PHONE_CHARS.test(pastedNumber.suffix)\n ) {\n setInternalValue(pastedNumber);\n }\n };\n\n useEffect(() => {\n if (broadcastedValue === null) {\n setBroadcastedValue(internalValue);\n return;\n }\n\n const internalPhoneNumber = `${internalValue.prefix ?? ''}${internalValue.suffix}`;\n const broadcastedPhoneNumber = `${broadcastedValue.prefix ?? ''}${broadcastedValue.suffix}`;\n\n if (internalPhoneNumber === broadcastedPhoneNumber) {\n return;\n }\n\n const newValue = isValidPhoneNumber(internalPhoneNumber)\n ? cleanNumber(internalPhoneNumber)\n : null;\n\n onChange(\n newValue,\n internalValue.prefix ?? '', // TODO: Allow `null` in public API\n );\n setBroadcastedValue(internalValue);\n }, [onChange, broadcastedValue, internalValue]);\n\n return (\n <div\n role=\"group\"\n {...inputAttributes}\n aria-labelledby={ariaLabelledBy}\n className=\"tw-telephone\"\n >\n <div className=\"tw-telephone__country-select\">\n <SelectInput\n placeholder={formatMessage(messages.selectInputPlaceholder)}\n items={[...countriesByPrefix].map(([prefix, countries]) => ({\n type: 'option',\n value: prefix,\n filterMatchers: [\n prefix,\n ...countries.map((country) => country.name),\n ...countries.map((country) => country.iso3),\n ],\n }))}\n value={internalValue.prefix}\n renderValue={(prefix, withinTrigger) => (\n <SelectInputOptionContent\n title={prefix}\n note={\n withinTrigger\n ? undefined\n : countriesByPrefix\n .get(prefix)\n ?.map((country) => country.iso3)\n .join(', ')\n }\n />\n )}\n filterable\n filterPlaceholder={searchPlaceholder}\n disabled={disabled}\n size={size}\n onChange={(prefix) => {\n const country = prefix != null ? findCountryByPrefix(prefix) : null;\n setInternalValue((prev) => ({ ...prev, prefix, format: country?.phoneFormat }));\n }}\n onClose={() => {\n if (suffixDirty) {\n onBlur?.();\n }\n }}\n {...selectProps}\n />\n </div>\n <div className=\"tw-telephone__number-input\">\n <div className={`input-group input-group-${size}`}>\n <input\n id={id}\n autoComplete=\"tel-national\"\n name=\"phoneNumber\"\n inputMode=\"numeric\"\n value={internalValue.suffix}\n className=\"form-control\"\n disabled={disabled}\n required={required}\n placeholder={placeholder}\n onChange={onSuffixChange}\n onPaste={onPaste}\n onFocus={onFocus}\n onBlur={() => onBlur?.()}\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default PhoneNumberInput;\n"],"names":["ALLOWED_PHONE_CHARS","defaultSelectProps","defaultDisabledCountries","PhoneNumberInput","id","ariaLabelledByProp","required","disabled","initialValue","onChange","onFocus","onBlur","countryCode","searchPlaceholder","size","Size","MEDIUM","placeholder","selectProps","disabledCountries","inputAttributes","useInputAttributes","nonLabelable","ariaLabelledBy","locale","formatMessage","useIntl","internalValue","setInternalValue","useState","cleanValue","cleanNumber","isValidPhoneNumber","prefix","setDefaultPrefix","suffix","explodeNumberModel","broadcastedValue","setBroadcastedValue","suffixDirty","setSuffixDirty","useEffect","countriesByPrefix","useMemo","groupCountriesByPrefix","sortArrayByProperty","excludeCountries","countries","onSuffixChange","event","target","value","test","prev","onPaste","nativeEvent","clipboardData","pastedValue","getData","replace","pastedNumber","has","internalPhoneNumber","broadcastedPhoneNumber","newValue","_jsxs","role","className","children","_jsx","SelectInput","messages","selectInputPlaceholder","items","map","type","filterMatchers","country","name","iso3","renderValue","withinTrigger","SelectInputOptionContent","title","note","undefined","get","join","filterable","filterPlaceholder","findCountryByPrefix","format","phoneFormat","onClose","autoComplete","inputMode"],"mappings":"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"}
1
+ {"version":3,"file":"PhoneNumberInput.js","sources":["../../src/phoneNumberInput/PhoneNumberInput.tsx"],"sourcesContent":["import { useState, useEffect, useMemo } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport { Size, SizeLarge, SizeMedium, SizeSmall } from '../common';\nimport { useInputAttributes } from '../inputs/contexts';\nimport { SelectInput, SelectInputOptionContent, SelectInputProps } from '../inputs/SelectInput';\nimport messages from './PhoneNumberInput.messages';\nimport countries from './data/countries';\nimport {\n explodeNumberModel,\n isValidPhoneNumber,\n cleanNumber,\n setDefaultPrefix,\n sortArrayByProperty,\n groupCountriesByPrefix,\n excludeCountries,\n findCountryByPrefix,\n} from './utils';\nimport { PhoneNumber } from './utils/explodeNumberModel';\nimport { Input } from '../inputs/Input';\n\nconst ALLOWED_PHONE_CHARS = /^$|^[\\d-\\s]+$/;\n\nexport interface PhoneNumberInputProps {\n id?: string;\n 'aria-labelledby'?: string;\n required?: boolean;\n disabled?: boolean;\n initialValue?: string;\n onChange: (value: string | null, prefix: string) => void;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: () => void;\n countryCode?: string;\n searchPlaceholder?: string;\n size?: SizeSmall | SizeMedium | SizeLarge;\n placeholder?: string;\n selectProps?: Partial<SelectInputProps<string | null>>;\n /** List of iso3 codes of countries to remove from the list */\n disabledCountries?: readonly string[];\n}\n\nconst defaultSelectProps = {} satisfies PhoneNumberInputProps['selectProps'];\nconst defaultDisabledCountries = [] satisfies PhoneNumberInputProps['disabledCountries'];\n\nconst PhoneNumberInput = ({\n id,\n 'aria-labelledby': ariaLabelledByProp,\n required,\n disabled,\n initialValue,\n onChange,\n onFocus,\n onBlur,\n countryCode,\n searchPlaceholder = 'Prefix',\n size = Size.MEDIUM,\n placeholder,\n selectProps = defaultSelectProps,\n disabledCountries = defaultDisabledCountries,\n}: PhoneNumberInputProps) => {\n const inputAttributes = useInputAttributes({ nonLabelable: true });\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes['aria-labelledby'];\n\n const { locale, formatMessage } = useIntl();\n\n const createId = (customID: string | undefined, backup: string): string => {\n if (customID) {\n return customID + (backup ? `-${backup}` : '');\n }\n const random = Math.random().toString(36).slice(2, 8);\n return `${backup}-${random}`;\n };\n\n const ids = {\n countryCode: {\n label: createId(id, 'country-code-label'),\n select: createId(id, 'country-code-select'),\n },\n phoneNumber: {\n label: createId(id, 'phone-number-label'),\n input: createId(id, id ? '' : 'phone-number-input'),\n },\n };\n\n const [internalValue, setInternalValue] = useState<PhoneNumber>(() => {\n const cleanValue = initialValue ? cleanNumber(initialValue) : null;\n\n if (!cleanValue || !isValidPhoneNumber(cleanValue, 1)) {\n return {\n prefix: setDefaultPrefix(locale, countryCode),\n suffix: '',\n };\n }\n\n return explodeNumberModel(cleanValue);\n });\n const [broadcastedValue, setBroadcastedValue] = useState<PhoneNumber | null>(null);\n\n const [suffixDirty, setSuffixDirty] = useState(false);\n useEffect(() => {\n if (internalValue.suffix) {\n setSuffixDirty(true);\n }\n }, [internalValue.suffix]);\n\n const countriesByPrefix = useMemo(\n () =>\n groupCountriesByPrefix(\n sortArrayByProperty(excludeCountries(countries, disabledCountries), 'iso3'),\n ),\n [disabledCountries],\n );\n\n const onSuffixChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const suffix = event.target.value;\n if (ALLOWED_PHONE_CHARS.test(suffix)) {\n setInternalValue((prev) => ({ ...prev, suffix }));\n }\n };\n\n const onPaste: React.ClipboardEventHandler<HTMLInputElement> = (event) => {\n if (!event.nativeEvent.clipboardData) {\n return;\n }\n\n const pastedValue = (event.nativeEvent.clipboardData.getData('text/plain') || '').replace(\n /(\\s|-)+/g,\n '',\n );\n const pastedNumber = explodeNumberModel(pastedValue);\n\n if (\n pastedNumber.prefix != null &&\n countriesByPrefix.has(pastedNumber.prefix) &&\n ALLOWED_PHONE_CHARS.test(pastedNumber.suffix)\n ) {\n setInternalValue(pastedNumber);\n }\n };\n\n useEffect(() => {\n if (broadcastedValue === null) {\n setBroadcastedValue(internalValue);\n return;\n }\n\n const internalPhoneNumber = `${internalValue.prefix ?? ''}${internalValue.suffix}`;\n const broadcastedPhoneNumber = `${broadcastedValue.prefix ?? ''}${broadcastedValue.suffix}`;\n\n if (internalPhoneNumber === broadcastedPhoneNumber) {\n return;\n }\n\n const newValue = isValidPhoneNumber(internalPhoneNumber)\n ? cleanNumber(internalPhoneNumber)\n : null;\n\n onChange(\n newValue,\n internalValue.prefix ?? '', // TODO: Allow `null` in public API\n );\n setBroadcastedValue(internalValue);\n }, [onChange, broadcastedValue, internalValue]);\n\n return (\n <div\n role=\"group\"\n {...inputAttributes}\n aria-labelledby={ariaLabelledBy}\n className=\"tw-telephone\"\n >\n <label className=\"sr-only\" id={ids.countryCode.label}>\n {formatMessage(messages.countryCodeLabel)}\n </label>\n <div className=\"tw-telephone__country-select\">\n <SelectInput\n placeholder={formatMessage(messages.selectInputPlaceholder)}\n items={[...countriesByPrefix].map(([prefix, countries]) => ({\n type: 'option',\n value: prefix,\n filterMatchers: [\n prefix,\n ...countries.map((country) => country.name),\n ...countries.map((country) => country.iso3),\n ],\n }))}\n value={internalValue.prefix}\n renderValue={(prefix, withinTrigger) => (\n <SelectInputOptionContent\n title={prefix}\n note={\n withinTrigger\n ? undefined\n : countriesByPrefix\n .get(prefix)\n ?.map((country) => country.iso3)\n .join(', ')\n }\n />\n )}\n filterable\n filterPlaceholder={searchPlaceholder}\n disabled={disabled}\n size={size}\n id={ids.countryCode.select}\n UNSAFE_triggerButtonProps={{\n id: ids.countryCode.select,\n 'aria-labelledby': ids.countryCode.label,\n 'aria-describedby': undefined,\n 'aria-invalid': undefined,\n }}\n onChange={(prefix) => {\n const country = prefix != null ? findCountryByPrefix(prefix) : null;\n setInternalValue((prev) => ({ ...prev, prefix, format: country?.phoneFormat }));\n }}\n onClose={() => {\n if (suffixDirty) {\n onBlur?.();\n }\n }}\n {...selectProps}\n />\n </div>\n <label className=\"sr-only\" id={ids.phoneNumber.label} htmlFor={ids.phoneNumber.input}>\n {formatMessage(messages.phoneNumberLabel)}\n </label>\n <div className=\"tw-telephone__number-input\">\n <div className={`input-group input-group-${size}`}>\n <Input\n id={ids.phoneNumber.input}\n autoComplete=\"tel-national\"\n name=\"phoneNumber\"\n inputMode=\"numeric\"\n value={internalValue.suffix}\n disabled={disabled}\n required={required}\n placeholder={placeholder}\n aria-labelledby={ids.phoneNumber.label}\n onChange={onSuffixChange}\n onPaste={onPaste}\n onFocus={onFocus}\n onBlur={() => onBlur?.()}\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default PhoneNumberInput;\n"],"names":["ALLOWED_PHONE_CHARS","defaultSelectProps","defaultDisabledCountries","PhoneNumberInput","id","ariaLabelledByProp","required","disabled","initialValue","onChange","onFocus","onBlur","countryCode","searchPlaceholder","size","Size","MEDIUM","placeholder","selectProps","disabledCountries","inputAttributes","useInputAttributes","nonLabelable","ariaLabelledBy","locale","formatMessage","useIntl","createId","customID","backup","random","Math","toString","slice","ids","label","select","phoneNumber","input","internalValue","setInternalValue","useState","cleanValue","cleanNumber","isValidPhoneNumber","prefix","setDefaultPrefix","suffix","explodeNumberModel","broadcastedValue","setBroadcastedValue","suffixDirty","setSuffixDirty","useEffect","countriesByPrefix","useMemo","groupCountriesByPrefix","sortArrayByProperty","excludeCountries","countries","onSuffixChange","event","target","value","test","prev","onPaste","nativeEvent","clipboardData","pastedValue","getData","replace","pastedNumber","has","internalPhoneNumber","broadcastedPhoneNumber","newValue","_jsxs","role","className","children","_jsx","messages","countryCodeLabel","SelectInput","selectInputPlaceholder","items","map","type","filterMatchers","country","name","iso3","renderValue","withinTrigger","SelectInputOptionContent","title","note","undefined","get","join","filterable","filterPlaceholder","UNSAFE_triggerButtonProps","findCountryByPrefix","format","phoneFormat","onClose","htmlFor","phoneNumberLabel","Input","autoComplete","inputMode"],"mappings":"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"}
@@ -7,6 +7,12 @@ var reactIntl = require('react-intl');
7
7
  var messages = reactIntl.defineMessages({
8
8
  selectInputPlaceholder: {
9
9
  id: "neptune.PhoneNumberInput.SelectInput.placeholder"
10
+ },
11
+ countryCodeLabel: {
12
+ id: "neptune.PhoneNumberInput.countryCodeLabel"
13
+ },
14
+ phoneNumberLabel: {
15
+ id: "neptune.PhoneNumberInput.phoneNumberLabel"
10
16
  }
11
17
  });
12
18
 
@@ -1 +1 @@
1
- {"version":3,"file":"PhoneNumberInput.messages.js","sources":["../../src/phoneNumberInput/PhoneNumberInput.messages.ts"],"sourcesContent":["import { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n selectInputPlaceholder: {\n id: 'neptune.PhoneNumberInput.SelectInput.placeholder',\n defaultMessage: 'Select an option...',\n },\n});\n"],"names":["defineMessages","selectInputPlaceholder","id"],"mappings":";;;;;;AAEA,eAAeA,wBAAc,CAAC;AAC5BC,EAAAA,sBAAsB,EAAE;IACtBC,EAAE,EAAA,kDAAA;AAEH,GAAA;AACF,CAAA,CAAC;;;;"}
1
+ {"version":3,"file":"PhoneNumberInput.messages.js","sources":["../../src/phoneNumberInput/PhoneNumberInput.messages.ts"],"sourcesContent":["import { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n selectInputPlaceholder: {\n id: 'neptune.PhoneNumberInput.SelectInput.placeholder',\n defaultMessage: 'Select an option...',\n },\n countryCodeLabel: {\n id: 'neptune.PhoneNumberInput.countryCodeLabel',\n defaultMessage: 'Country code',\n },\n phoneNumberLabel: {\n id: 'neptune.PhoneNumberInput.phoneNumberLabel',\n defaultMessage: 'Phone number',\n },\n});\n"],"names":["defineMessages","selectInputPlaceholder","id","countryCodeLabel","phoneNumberLabel"],"mappings":";;;;;;AAEA,eAAeA,wBAAc,CAAC;AAC5BC,EAAAA,sBAAsB,EAAE;IACtBC,EAAE,EAAA;GAEH;AACDC,EAAAA,gBAAgB,EAAE;IAChBD,EAAE,EAAA;GAEH;AACDE,EAAAA,gBAAgB,EAAE;IAChBF,EAAE,EAAA;AAEH;AACF,CAAA,CAAC;;;;"}
@@ -3,6 +3,12 @@ import { defineMessages } from 'react-intl';
3
3
  var messages = defineMessages({
4
4
  selectInputPlaceholder: {
5
5
  id: "neptune.PhoneNumberInput.SelectInput.placeholder"
6
+ },
7
+ countryCodeLabel: {
8
+ id: "neptune.PhoneNumberInput.countryCodeLabel"
9
+ },
10
+ phoneNumberLabel: {
11
+ id: "neptune.PhoneNumberInput.phoneNumberLabel"
6
12
  }
7
13
  });
8
14
 
@@ -1 +1 @@
1
- {"version":3,"file":"PhoneNumberInput.messages.mjs","sources":["../../src/phoneNumberInput/PhoneNumberInput.messages.ts"],"sourcesContent":["import { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n selectInputPlaceholder: {\n id: 'neptune.PhoneNumberInput.SelectInput.placeholder',\n defaultMessage: 'Select an option...',\n },\n});\n"],"names":["defineMessages","selectInputPlaceholder","id"],"mappings":";;AAEA,eAAeA,cAAc,CAAC;AAC5BC,EAAAA,sBAAsB,EAAE;IACtBC,EAAE,EAAA,kDAAA;AAEH,GAAA;AACF,CAAA,CAAC;;;;"}
1
+ {"version":3,"file":"PhoneNumberInput.messages.mjs","sources":["../../src/phoneNumberInput/PhoneNumberInput.messages.ts"],"sourcesContent":["import { defineMessages } from 'react-intl';\n\nexport default defineMessages({\n selectInputPlaceholder: {\n id: 'neptune.PhoneNumberInput.SelectInput.placeholder',\n defaultMessage: 'Select an option...',\n },\n countryCodeLabel: {\n id: 'neptune.PhoneNumberInput.countryCodeLabel',\n defaultMessage: 'Country code',\n },\n phoneNumberLabel: {\n id: 'neptune.PhoneNumberInput.phoneNumberLabel',\n defaultMessage: 'Phone number',\n },\n});\n"],"names":["defineMessages","selectInputPlaceholder","id","countryCodeLabel","phoneNumberLabel"],"mappings":";;AAEA,eAAeA,cAAc,CAAC;AAC5BC,EAAAA,sBAAsB,EAAE;IACtBC,EAAE,EAAA;GAEH;AACDC,EAAAA,gBAAgB,EAAE;IAChBD,EAAE,EAAA;GAEH;AACDE,EAAAA,gBAAgB,EAAE;IAChBF,EAAE,EAAA;AAEH;AACF,CAAA,CAAC;;;;"}
@@ -35,6 +35,7 @@ import { cleanNumber } from './utils/cleanNumber/cleanNumber.mjs';
35
35
  import { sortArrayByProperty } from './utils/sortArrayByProperty/sortArrayByProperty.mjs';
36
36
  import { groupCountriesByPrefix } from './utils/groupCountriesByPrefix/groupCountriesByPrefix.mjs';
37
37
  import { excludeCountries } from './utils/excludeCountries/excludeCountries.mjs';
38
+ import { Input } from '../inputs/Input.mjs';
38
39
 
39
40
  const ALLOWED_PHONE_CHARS = /^$|^[\d-\s]+$/;
40
41
  const defaultSelectProps = {};
@@ -63,6 +64,23 @@ const PhoneNumberInput = ({
63
64
  locale,
64
65
  formatMessage
65
66
  } = useIntl();
67
+ const createId = (customID, backup) => {
68
+ if (customID) {
69
+ return customID + (backup ? `-${backup}` : '');
70
+ }
71
+ const random = Math.random().toString(36).slice(2, 8);
72
+ return `${backup}-${random}`;
73
+ };
74
+ const ids = {
75
+ countryCode: {
76
+ label: createId(id, 'country-code-label'),
77
+ select: createId(id, 'country-code-select')
78
+ },
79
+ phoneNumber: {
80
+ label: createId(id, 'phone-number-label'),
81
+ input: createId(id, id ? '' : 'phone-number-input')
82
+ }
83
+ };
66
84
  const [internalValue, setInternalValue] = useState(() => {
67
85
  const cleanValue = initialValue ? cleanNumber(initialValue) : null;
68
86
  if (!cleanValue || !isValidPhoneNumber(cleanValue, 1)) {
@@ -119,7 +137,11 @@ const PhoneNumberInput = ({
119
137
  ...inputAttributes,
120
138
  "aria-labelledby": ariaLabelledBy,
121
139
  className: "tw-telephone",
122
- children: [/*#__PURE__*/jsx("div", {
140
+ children: [/*#__PURE__*/jsx("label", {
141
+ className: "sr-only",
142
+ id: ids.countryCode.label,
143
+ children: formatMessage(messages.countryCodeLabel)
144
+ }), /*#__PURE__*/jsx("div", {
123
145
  className: "tw-telephone__country-select",
124
146
  children: /*#__PURE__*/jsx(SelectInput, {
125
147
  placeholder: formatMessage(messages.selectInputPlaceholder),
@@ -137,6 +159,13 @@ const PhoneNumberInput = ({
137
159
  filterPlaceholder: searchPlaceholder,
138
160
  disabled: disabled,
139
161
  size: size,
162
+ id: ids.countryCode.select,
163
+ UNSAFE_triggerButtonProps: {
164
+ id: ids.countryCode.select,
165
+ 'aria-labelledby': ids.countryCode.label,
166
+ 'aria-describedby': undefined,
167
+ 'aria-invalid': undefined
168
+ },
140
169
  onChange: prefix => {
141
170
  const country = prefix != null ? findCountryByPrefix(prefix) : null;
142
171
  setInternalValue(prev => ({
@@ -152,20 +181,25 @@ const PhoneNumberInput = ({
152
181
  },
153
182
  ...selectProps
154
183
  })
184
+ }), /*#__PURE__*/jsx("label", {
185
+ className: "sr-only",
186
+ id: ids.phoneNumber.label,
187
+ htmlFor: ids.phoneNumber.input,
188
+ children: formatMessage(messages.phoneNumberLabel)
155
189
  }), /*#__PURE__*/jsx("div", {
156
190
  className: "tw-telephone__number-input",
157
191
  children: /*#__PURE__*/jsx("div", {
158
192
  className: `input-group input-group-${size}`,
159
- children: /*#__PURE__*/jsx("input", {
160
- id: id,
193
+ children: /*#__PURE__*/jsx(Input, {
194
+ id: ids.phoneNumber.input,
161
195
  autoComplete: "tel-national",
162
196
  name: "phoneNumber",
163
197
  inputMode: "numeric",
164
198
  value: internalValue.suffix,
165
- className: "form-control",
166
199
  disabled: disabled,
167
200
  required: required,
168
201
  placeholder: placeholder,
202
+ "aria-labelledby": ids.phoneNumber.label,
169
203
  onChange: onSuffixChange,
170
204
  onPaste: onPaste,
171
205
  onFocus: onFocus,
@@ -1 +1 @@
1
- {"version":3,"file":"PhoneNumberInput.mjs","sources":["../../src/phoneNumberInput/PhoneNumberInput.tsx"],"sourcesContent":["import { useState, useEffect, useMemo } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport { Size, SizeLarge, SizeMedium, SizeSmall } from '../common';\nimport { useInputAttributes } from '../inputs/contexts';\nimport { SelectInput, SelectInputOptionContent, SelectInputProps } from '../inputs/SelectInput';\n\nimport messages from './PhoneNumberInput.messages';\nimport countries from './data/countries';\nimport {\n explodeNumberModel,\n isValidPhoneNumber,\n cleanNumber,\n setDefaultPrefix,\n sortArrayByProperty,\n groupCountriesByPrefix,\n excludeCountries,\n findCountryByPrefix,\n} from './utils';\nimport { PhoneNumber } from './utils/explodeNumberModel';\n\nconst ALLOWED_PHONE_CHARS = /^$|^[\\d-\\s]+$/;\n\nexport interface PhoneNumberInputProps {\n id?: string;\n 'aria-labelledby'?: string;\n required?: boolean;\n disabled?: boolean;\n initialValue?: string;\n onChange: (value: string | null, prefix: string) => void;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: () => void;\n countryCode?: string;\n searchPlaceholder?: string;\n size?: SizeSmall | SizeMedium | SizeLarge;\n placeholder?: string;\n selectProps?: Partial<SelectInputProps<string | null>>;\n /** List of iso3 codes of countries to remove from the list */\n disabledCountries?: readonly string[];\n}\n\nconst defaultSelectProps = {} satisfies PhoneNumberInputProps['selectProps'];\nconst defaultDisabledCountries = [] satisfies PhoneNumberInputProps['disabledCountries'];\n\nconst PhoneNumberInput = ({\n id,\n 'aria-labelledby': ariaLabelledByProp,\n required,\n disabled,\n initialValue,\n onChange,\n onFocus,\n onBlur,\n countryCode,\n searchPlaceholder = 'Prefix',\n size = Size.MEDIUM,\n placeholder,\n selectProps = defaultSelectProps,\n disabledCountries = defaultDisabledCountries,\n}: PhoneNumberInputProps) => {\n const inputAttributes = useInputAttributes({ nonLabelable: true });\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes['aria-labelledby'];\n\n const { locale, formatMessage } = useIntl();\n\n const [internalValue, setInternalValue] = useState<PhoneNumber>(() => {\n const cleanValue = initialValue ? cleanNumber(initialValue) : null;\n\n if (!cleanValue || !isValidPhoneNumber(cleanValue, 1)) {\n return {\n prefix: setDefaultPrefix(locale, countryCode),\n suffix: '',\n };\n }\n\n return explodeNumberModel(cleanValue);\n });\n const [broadcastedValue, setBroadcastedValue] = useState<PhoneNumber | null>(null);\n\n const [suffixDirty, setSuffixDirty] = useState(false);\n useEffect(() => {\n if (internalValue.suffix) {\n setSuffixDirty(true);\n }\n }, [internalValue.suffix]);\n\n const countriesByPrefix = useMemo(\n () =>\n groupCountriesByPrefix(\n sortArrayByProperty(excludeCountries(countries, disabledCountries), 'iso3'),\n ),\n [disabledCountries],\n );\n\n const onSuffixChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const suffix = event.target.value;\n if (ALLOWED_PHONE_CHARS.test(suffix)) {\n setInternalValue((prev) => ({ ...prev, suffix }));\n }\n };\n\n const onPaste: React.ClipboardEventHandler<HTMLInputElement> = (event) => {\n if (!event.nativeEvent.clipboardData) {\n return;\n }\n\n const pastedValue = (event.nativeEvent.clipboardData.getData('text/plain') || '').replace(\n /(\\s|-)+/g,\n '',\n );\n const pastedNumber = explodeNumberModel(pastedValue);\n\n if (\n pastedNumber.prefix != null &&\n countriesByPrefix.has(pastedNumber.prefix) &&\n ALLOWED_PHONE_CHARS.test(pastedNumber.suffix)\n ) {\n setInternalValue(pastedNumber);\n }\n };\n\n useEffect(() => {\n if (broadcastedValue === null) {\n setBroadcastedValue(internalValue);\n return;\n }\n\n const internalPhoneNumber = `${internalValue.prefix ?? ''}${internalValue.suffix}`;\n const broadcastedPhoneNumber = `${broadcastedValue.prefix ?? ''}${broadcastedValue.suffix}`;\n\n if (internalPhoneNumber === broadcastedPhoneNumber) {\n return;\n }\n\n const newValue = isValidPhoneNumber(internalPhoneNumber)\n ? cleanNumber(internalPhoneNumber)\n : null;\n\n onChange(\n newValue,\n internalValue.prefix ?? '', // TODO: Allow `null` in public API\n );\n setBroadcastedValue(internalValue);\n }, [onChange, broadcastedValue, internalValue]);\n\n return (\n <div\n role=\"group\"\n {...inputAttributes}\n aria-labelledby={ariaLabelledBy}\n className=\"tw-telephone\"\n >\n <div className=\"tw-telephone__country-select\">\n <SelectInput\n placeholder={formatMessage(messages.selectInputPlaceholder)}\n items={[...countriesByPrefix].map(([prefix, countries]) => ({\n type: 'option',\n value: prefix,\n filterMatchers: [\n prefix,\n ...countries.map((country) => country.name),\n ...countries.map((country) => country.iso3),\n ],\n }))}\n value={internalValue.prefix}\n renderValue={(prefix, withinTrigger) => (\n <SelectInputOptionContent\n title={prefix}\n note={\n withinTrigger\n ? undefined\n : countriesByPrefix\n .get(prefix)\n ?.map((country) => country.iso3)\n .join(', ')\n }\n />\n )}\n filterable\n filterPlaceholder={searchPlaceholder}\n disabled={disabled}\n size={size}\n onChange={(prefix) => {\n const country = prefix != null ? findCountryByPrefix(prefix) : null;\n setInternalValue((prev) => ({ ...prev, prefix, format: country?.phoneFormat }));\n }}\n onClose={() => {\n if (suffixDirty) {\n onBlur?.();\n }\n }}\n {...selectProps}\n />\n </div>\n <div className=\"tw-telephone__number-input\">\n <div className={`input-group input-group-${size}`}>\n <input\n id={id}\n autoComplete=\"tel-national\"\n name=\"phoneNumber\"\n inputMode=\"numeric\"\n value={internalValue.suffix}\n className=\"form-control\"\n disabled={disabled}\n required={required}\n placeholder={placeholder}\n onChange={onSuffixChange}\n onPaste={onPaste}\n onFocus={onFocus}\n onBlur={() => onBlur?.()}\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default PhoneNumberInput;\n"],"names":["ALLOWED_PHONE_CHARS","defaultSelectProps","defaultDisabledCountries","PhoneNumberInput","id","ariaLabelledByProp","required","disabled","initialValue","onChange","onFocus","onBlur","countryCode","searchPlaceholder","size","Size","MEDIUM","placeholder","selectProps","disabledCountries","inputAttributes","useInputAttributes","nonLabelable","ariaLabelledBy","locale","formatMessage","useIntl","internalValue","setInternalValue","useState","cleanValue","cleanNumber","isValidPhoneNumber","prefix","setDefaultPrefix","suffix","explodeNumberModel","broadcastedValue","setBroadcastedValue","suffixDirty","setSuffixDirty","useEffect","countriesByPrefix","useMemo","groupCountriesByPrefix","sortArrayByProperty","excludeCountries","countries","onSuffixChange","event","target","value","test","prev","onPaste","nativeEvent","clipboardData","pastedValue","getData","replace","pastedNumber","has","internalPhoneNumber","broadcastedPhoneNumber","newValue","_jsxs","role","className","children","_jsx","SelectInput","messages","selectInputPlaceholder","items","map","type","filterMatchers","country","name","iso3","renderValue","withinTrigger","SelectInputOptionContent","title","note","undefined","get","join","filterable","filterPlaceholder","findCountryByPrefix","format","phoneFormat","onClose","autoComplete","inputMode"],"mappings":"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"}
1
+ {"version":3,"file":"PhoneNumberInput.mjs","sources":["../../src/phoneNumberInput/PhoneNumberInput.tsx"],"sourcesContent":["import { useState, useEffect, useMemo } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport { Size, SizeLarge, SizeMedium, SizeSmall } from '../common';\nimport { useInputAttributes } from '../inputs/contexts';\nimport { SelectInput, SelectInputOptionContent, SelectInputProps } from '../inputs/SelectInput';\nimport messages from './PhoneNumberInput.messages';\nimport countries from './data/countries';\nimport {\n explodeNumberModel,\n isValidPhoneNumber,\n cleanNumber,\n setDefaultPrefix,\n sortArrayByProperty,\n groupCountriesByPrefix,\n excludeCountries,\n findCountryByPrefix,\n} from './utils';\nimport { PhoneNumber } from './utils/explodeNumberModel';\nimport { Input } from '../inputs/Input';\n\nconst ALLOWED_PHONE_CHARS = /^$|^[\\d-\\s]+$/;\n\nexport interface PhoneNumberInputProps {\n id?: string;\n 'aria-labelledby'?: string;\n required?: boolean;\n disabled?: boolean;\n initialValue?: string;\n onChange: (value: string | null, prefix: string) => void;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: () => void;\n countryCode?: string;\n searchPlaceholder?: string;\n size?: SizeSmall | SizeMedium | SizeLarge;\n placeholder?: string;\n selectProps?: Partial<SelectInputProps<string | null>>;\n /** List of iso3 codes of countries to remove from the list */\n disabledCountries?: readonly string[];\n}\n\nconst defaultSelectProps = {} satisfies PhoneNumberInputProps['selectProps'];\nconst defaultDisabledCountries = [] satisfies PhoneNumberInputProps['disabledCountries'];\n\nconst PhoneNumberInput = ({\n id,\n 'aria-labelledby': ariaLabelledByProp,\n required,\n disabled,\n initialValue,\n onChange,\n onFocus,\n onBlur,\n countryCode,\n searchPlaceholder = 'Prefix',\n size = Size.MEDIUM,\n placeholder,\n selectProps = defaultSelectProps,\n disabledCountries = defaultDisabledCountries,\n}: PhoneNumberInputProps) => {\n const inputAttributes = useInputAttributes({ nonLabelable: true });\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes['aria-labelledby'];\n\n const { locale, formatMessage } = useIntl();\n\n const createId = (customID: string | undefined, backup: string): string => {\n if (customID) {\n return customID + (backup ? `-${backup}` : '');\n }\n const random = Math.random().toString(36).slice(2, 8);\n return `${backup}-${random}`;\n };\n\n const ids = {\n countryCode: {\n label: createId(id, 'country-code-label'),\n select: createId(id, 'country-code-select'),\n },\n phoneNumber: {\n label: createId(id, 'phone-number-label'),\n input: createId(id, id ? '' : 'phone-number-input'),\n },\n };\n\n const [internalValue, setInternalValue] = useState<PhoneNumber>(() => {\n const cleanValue = initialValue ? cleanNumber(initialValue) : null;\n\n if (!cleanValue || !isValidPhoneNumber(cleanValue, 1)) {\n return {\n prefix: setDefaultPrefix(locale, countryCode),\n suffix: '',\n };\n }\n\n return explodeNumberModel(cleanValue);\n });\n const [broadcastedValue, setBroadcastedValue] = useState<PhoneNumber | null>(null);\n\n const [suffixDirty, setSuffixDirty] = useState(false);\n useEffect(() => {\n if (internalValue.suffix) {\n setSuffixDirty(true);\n }\n }, [internalValue.suffix]);\n\n const countriesByPrefix = useMemo(\n () =>\n groupCountriesByPrefix(\n sortArrayByProperty(excludeCountries(countries, disabledCountries), 'iso3'),\n ),\n [disabledCountries],\n );\n\n const onSuffixChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const suffix = event.target.value;\n if (ALLOWED_PHONE_CHARS.test(suffix)) {\n setInternalValue((prev) => ({ ...prev, suffix }));\n }\n };\n\n const onPaste: React.ClipboardEventHandler<HTMLInputElement> = (event) => {\n if (!event.nativeEvent.clipboardData) {\n return;\n }\n\n const pastedValue = (event.nativeEvent.clipboardData.getData('text/plain') || '').replace(\n /(\\s|-)+/g,\n '',\n );\n const pastedNumber = explodeNumberModel(pastedValue);\n\n if (\n pastedNumber.prefix != null &&\n countriesByPrefix.has(pastedNumber.prefix) &&\n ALLOWED_PHONE_CHARS.test(pastedNumber.suffix)\n ) {\n setInternalValue(pastedNumber);\n }\n };\n\n useEffect(() => {\n if (broadcastedValue === null) {\n setBroadcastedValue(internalValue);\n return;\n }\n\n const internalPhoneNumber = `${internalValue.prefix ?? ''}${internalValue.suffix}`;\n const broadcastedPhoneNumber = `${broadcastedValue.prefix ?? ''}${broadcastedValue.suffix}`;\n\n if (internalPhoneNumber === broadcastedPhoneNumber) {\n return;\n }\n\n const newValue = isValidPhoneNumber(internalPhoneNumber)\n ? cleanNumber(internalPhoneNumber)\n : null;\n\n onChange(\n newValue,\n internalValue.prefix ?? '', // TODO: Allow `null` in public API\n );\n setBroadcastedValue(internalValue);\n }, [onChange, broadcastedValue, internalValue]);\n\n return (\n <div\n role=\"group\"\n {...inputAttributes}\n aria-labelledby={ariaLabelledBy}\n className=\"tw-telephone\"\n >\n <label className=\"sr-only\" id={ids.countryCode.label}>\n {formatMessage(messages.countryCodeLabel)}\n </label>\n <div className=\"tw-telephone__country-select\">\n <SelectInput\n placeholder={formatMessage(messages.selectInputPlaceholder)}\n items={[...countriesByPrefix].map(([prefix, countries]) => ({\n type: 'option',\n value: prefix,\n filterMatchers: [\n prefix,\n ...countries.map((country) => country.name),\n ...countries.map((country) => country.iso3),\n ],\n }))}\n value={internalValue.prefix}\n renderValue={(prefix, withinTrigger) => (\n <SelectInputOptionContent\n title={prefix}\n note={\n withinTrigger\n ? undefined\n : countriesByPrefix\n .get(prefix)\n ?.map((country) => country.iso3)\n .join(', ')\n }\n />\n )}\n filterable\n filterPlaceholder={searchPlaceholder}\n disabled={disabled}\n size={size}\n id={ids.countryCode.select}\n UNSAFE_triggerButtonProps={{\n id: ids.countryCode.select,\n 'aria-labelledby': ids.countryCode.label,\n 'aria-describedby': undefined,\n 'aria-invalid': undefined,\n }}\n onChange={(prefix) => {\n const country = prefix != null ? findCountryByPrefix(prefix) : null;\n setInternalValue((prev) => ({ ...prev, prefix, format: country?.phoneFormat }));\n }}\n onClose={() => {\n if (suffixDirty) {\n onBlur?.();\n }\n }}\n {...selectProps}\n />\n </div>\n <label className=\"sr-only\" id={ids.phoneNumber.label} htmlFor={ids.phoneNumber.input}>\n {formatMessage(messages.phoneNumberLabel)}\n </label>\n <div className=\"tw-telephone__number-input\">\n <div className={`input-group input-group-${size}`}>\n <Input\n id={ids.phoneNumber.input}\n autoComplete=\"tel-national\"\n name=\"phoneNumber\"\n inputMode=\"numeric\"\n value={internalValue.suffix}\n disabled={disabled}\n required={required}\n placeholder={placeholder}\n aria-labelledby={ids.phoneNumber.label}\n onChange={onSuffixChange}\n onPaste={onPaste}\n onFocus={onFocus}\n onBlur={() => onBlur?.()}\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default PhoneNumberInput;\n"],"names":["ALLOWED_PHONE_CHARS","defaultSelectProps","defaultDisabledCountries","PhoneNumberInput","id","ariaLabelledByProp","required","disabled","initialValue","onChange","onFocus","onBlur","countryCode","searchPlaceholder","size","Size","MEDIUM","placeholder","selectProps","disabledCountries","inputAttributes","useInputAttributes","nonLabelable","ariaLabelledBy","locale","formatMessage","useIntl","createId","customID","backup","random","Math","toString","slice","ids","label","select","phoneNumber","input","internalValue","setInternalValue","useState","cleanValue","cleanNumber","isValidPhoneNumber","prefix","setDefaultPrefix","suffix","explodeNumberModel","broadcastedValue","setBroadcastedValue","suffixDirty","setSuffixDirty","useEffect","countriesByPrefix","useMemo","groupCountriesByPrefix","sortArrayByProperty","excludeCountries","countries","onSuffixChange","event","target","value","test","prev","onPaste","nativeEvent","clipboardData","pastedValue","getData","replace","pastedNumber","has","internalPhoneNumber","broadcastedPhoneNumber","newValue","_jsxs","role","className","children","_jsx","messages","countryCodeLabel","SelectInput","selectInputPlaceholder","items","map","type","filterMatchers","country","name","iso3","renderValue","withinTrigger","SelectInputOptionContent","title","note","undefined","get","join","filterable","filterPlaceholder","UNSAFE_triggerButtonProps","findCountryByPrefix","format","phoneFormat","onClose","htmlFor","phoneNumberLabel","Input","autoComplete","inputMode"],"mappings":"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"}