@telus-uds/components-base 1.65.0 → 1.67.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 (487) hide show
  1. package/CHANGELOG.md +22 -2
  2. package/lib/A11yInfoProvider/index.js +5 -20
  3. package/lib/A11yText/index.js +3 -17
  4. package/lib/ActivityIndicator/Spinner.js +2 -9
  5. package/lib/ActivityIndicator/Spinner.native.js +4 -27
  6. package/lib/ActivityIndicator/index.js +1 -13
  7. package/lib/ActivityIndicator/shared.js +0 -3
  8. package/lib/Autocomplete/Autocomplete.js +34 -85
  9. package/lib/Autocomplete/Loading.js +0 -10
  10. package/lib/Autocomplete/Suggestions.js +0 -11
  11. package/lib/Autocomplete/index.js +0 -3
  12. package/lib/BaseProvider/HydrationContext.js +4 -18
  13. package/lib/BaseProvider/index.js +0 -12
  14. package/lib/Box/Box.js +10 -35
  15. package/lib/Box/index.js +0 -3
  16. package/lib/Button/Button.js +4 -13
  17. package/lib/Button/ButtonBase.js +23 -55
  18. package/lib/Button/ButtonDropdown.js +7 -32
  19. package/lib/Button/ButtonGroup.js +15 -48
  20. package/lib/Button/ButtonLink.js +3 -17
  21. package/lib/Button/index.js +0 -5
  22. package/lib/Button/propTypes.js +0 -15
  23. package/lib/Card/Card.js +3 -14
  24. package/lib/Card/CardBase.js +5 -16
  25. package/lib/Card/PressableCardBase.js +7 -30
  26. package/lib/Card/index.js +0 -7
  27. package/lib/Carousel/Carousel.js +22 -115
  28. package/lib/Carousel/CarouselContext.js +0 -14
  29. package/lib/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +6 -18
  30. package/lib/Carousel/CarouselItem/CarouselItem.js +5 -20
  31. package/lib/Carousel/CarouselItem/index.js +0 -3
  32. package/lib/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -9
  33. package/lib/Carousel/CarouselStepTracker/index.js +0 -3
  34. package/lib/Carousel/CarouselTabs/CarouselTabs.js +5 -15
  35. package/lib/Carousel/CarouselTabs/CarouselTabsPanel.js +7 -16
  36. package/lib/Carousel/CarouselTabs/CarouselTabsPanelItem.js +2 -22
  37. package/lib/Carousel/CarouselTabs/index.js +0 -3
  38. package/lib/Carousel/CarouselThumbnail.js +1 -16
  39. package/lib/Carousel/CarouselThumbnailNavigation.js +0 -15
  40. package/lib/Carousel/index.js +0 -5
  41. package/lib/Checkbox/Checkbox.js +5 -44
  42. package/lib/Checkbox/CheckboxButton.js +7 -33
  43. package/lib/Checkbox/CheckboxGroup.js +5 -37
  44. package/lib/Checkbox/CheckboxInput.js +1 -11
  45. package/lib/Checkbox/CheckboxInput.native.js +0 -2
  46. package/lib/Checkbox/index.js +0 -4
  47. package/lib/CheckboxCard/CheckboxCard.js +4 -37
  48. package/lib/CheckboxCard/index.js +0 -3
  49. package/lib/CheckboxCardGroup/CheckboxCardGroup.js +215 -0
  50. package/lib/CheckboxCardGroup/index.js +10 -0
  51. package/lib/Divider/Divider.js +13 -24
  52. package/lib/Divider/index.js +0 -3
  53. package/lib/ExpandCollapse/Accordion.js +1 -9
  54. package/lib/ExpandCollapse/Control.js +10 -32
  55. package/lib/ExpandCollapse/ExpandCollapse.js +3 -19
  56. package/lib/ExpandCollapse/Panel.js +13 -38
  57. package/lib/ExpandCollapse/index.js +0 -5
  58. package/lib/Feedback/Feedback.js +13 -30
  59. package/lib/Feedback/index.js +0 -3
  60. package/lib/Fieldset/Fieldset.js +6 -37
  61. package/lib/Fieldset/FieldsetContainer.js +1 -10
  62. package/lib/Fieldset/FieldsetContainer.native.js +0 -8
  63. package/lib/Fieldset/Legend.js +1 -10
  64. package/lib/Fieldset/Legend.native.js +1 -13
  65. package/lib/Fieldset/index.js +0 -3
  66. package/lib/FlexGrid/Col/Col.js +10 -53
  67. package/lib/FlexGrid/Col/index.js +0 -3
  68. package/lib/FlexGrid/FlexGrid.js +3 -34
  69. package/lib/FlexGrid/Row/Row.js +0 -38
  70. package/lib/FlexGrid/Row/index.js +0 -3
  71. package/lib/FlexGrid/helpers/index.js +0 -4
  72. package/lib/FlexGrid/index.js +0 -3
  73. package/lib/FlexGrid/providers/GutterContext.js +0 -4
  74. package/lib/HorizontalScroll/HorizontalScroll.js +17 -45
  75. package/lib/HorizontalScroll/HorizontalScrollButton.js +1 -17
  76. package/lib/HorizontalScroll/ScrollViewEnd.js +5 -13
  77. package/lib/HorizontalScroll/ScrollViewEnd.native.js +1 -10
  78. package/lib/HorizontalScroll/index.js +0 -7
  79. package/lib/HorizontalScroll/itemPositions.js +8 -19
  80. package/lib/Icon/Icon.js +4 -17
  81. package/lib/Icon/IconText.js +5 -25
  82. package/lib/Icon/index.js +0 -6
  83. package/lib/IconButton/IconButton.js +5 -37
  84. package/lib/IconButton/index.js +0 -3
  85. package/lib/InputLabel/InputLabel.js +4 -28
  86. package/lib/InputLabel/LabelContent.js +2 -8
  87. package/lib/InputLabel/LabelContent.native.js +0 -8
  88. package/lib/InputLabel/index.js +0 -3
  89. package/lib/InputSupports/InputSupports.js +0 -21
  90. package/lib/InputSupports/index.js +0 -3
  91. package/lib/InputSupports/useInputSupports.js +2 -6
  92. package/lib/Link/ChevronLink.js +7 -18
  93. package/lib/Link/InlinePressable.js +0 -10
  94. package/lib/Link/InlinePressable.native.js +5 -18
  95. package/lib/Link/Link.js +0 -8
  96. package/lib/Link/LinkBase.js +17 -47
  97. package/lib/Link/TextButton.js +3 -16
  98. package/lib/Link/index.js +0 -5
  99. package/lib/List/List.js +5 -21
  100. package/lib/List/ListItem.js +1 -11
  101. package/lib/List/ListItemBase.js +5 -34
  102. package/lib/List/ListItemContent.js +1 -14
  103. package/lib/List/ListItemMark.js +3 -23
  104. package/lib/List/PressableListItemBase.js +2 -28
  105. package/lib/List/index.js +0 -4
  106. package/lib/Listbox/GroupControl.js +0 -14
  107. package/lib/Listbox/Listbox.js +15 -40
  108. package/lib/Listbox/ListboxContext.js +0 -7
  109. package/lib/Listbox/ListboxGroup.js +7 -19
  110. package/lib/Listbox/ListboxItem.js +3 -17
  111. package/lib/Listbox/ListboxOverlay.js +4 -20
  112. package/lib/Listbox/PressableItem.js +3 -18
  113. package/lib/Listbox/index.js +0 -3
  114. package/lib/Modal/Modal.js +94 -45
  115. package/lib/Modal/ModalContent.js +184 -0
  116. package/lib/Modal/index.js +0 -3
  117. package/lib/MultiSelectFilter/ModalOverlay.js +1 -20
  118. package/lib/MultiSelectFilter/MultiSelectFilter.js +20 -69
  119. package/lib/MultiSelectFilter/index.js +0 -3
  120. package/lib/Notification/Notification.js +11 -38
  121. package/lib/Notification/index.js +0 -3
  122. package/lib/Pagination/PageButton.js +2 -22
  123. package/lib/Pagination/Pagination.js +21 -42
  124. package/lib/Pagination/SideButton.js +0 -24
  125. package/lib/Pagination/index.js +0 -3
  126. package/lib/Pagination/usePagination.js +4 -9
  127. package/lib/Progress/Progress.js +3 -17
  128. package/lib/Progress/ProgressBar.js +3 -25
  129. package/lib/Progress/ProgressBarBackground.js +0 -12
  130. package/lib/Progress/index.js +0 -4
  131. package/lib/QuickLinks/QuickLinks.js +1 -18
  132. package/lib/QuickLinks/QuickLinksCard.js +1 -11
  133. package/lib/QuickLinks/QuickLinksItem.js +3 -17
  134. package/lib/QuickLinks/index.js +0 -4
  135. package/lib/QuickLinksFeature/QuickLinksFeature.js +3 -20
  136. package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +7 -30
  137. package/lib/QuickLinksFeature/index.js +0 -4
  138. package/lib/Radio/Radio.js +5 -39
  139. package/lib/Radio/RadioButton.js +7 -26
  140. package/lib/Radio/RadioGroup.js +6 -39
  141. package/lib/Radio/RadioInput.js +1 -11
  142. package/lib/Radio/RadioInput.native.js +0 -2
  143. package/lib/Radio/index.js +0 -4
  144. package/lib/RadioCard/RadioCard.js +5 -38
  145. package/lib/RadioCard/RadioCardGroup.js +7 -38
  146. package/lib/RadioCard/index.js +0 -4
  147. package/lib/Responsive/Responsive.js +1 -14
  148. package/lib/Responsive/index.js +0 -3
  149. package/lib/Search/Search.js +22 -45
  150. package/lib/Search/index.js +0 -3
  151. package/lib/Select/Group.js +0 -8
  152. package/lib/Select/Group.native.js +0 -6
  153. package/lib/Select/Item.js +0 -7
  154. package/lib/Select/Item.native.js +0 -2
  155. package/lib/Select/Picker.js +0 -8
  156. package/lib/Select/Picker.native.js +6 -22
  157. package/lib/Select/Select.js +9 -52
  158. package/lib/Select/index.js +0 -5
  159. package/lib/SideNav/Item.js +5 -29
  160. package/lib/SideNav/ItemContent.js +1 -14
  161. package/lib/SideNav/ItemsGroup.js +9 -31
  162. package/lib/SideNav/SideNav.js +9 -33
  163. package/lib/SideNav/index.js +0 -2
  164. package/lib/Skeleton/Skeleton.js +10 -42
  165. package/lib/Skeleton/index.js +0 -3
  166. package/lib/Skeleton/skeletonWebAnimation.js +0 -2
  167. package/lib/Skeleton/useSkeletonNativeAnimation.js +1 -9
  168. package/lib/SkipLink/SkipLink.js +7 -27
  169. package/lib/SkipLink/index.js +0 -3
  170. package/lib/Spacer/Spacer.js +4 -20
  171. package/lib/Spacer/index.js +0 -3
  172. package/lib/StackView/StackView.js +3 -21
  173. package/lib/StackView/StackWrap.js +11 -21
  174. package/lib/StackView/StackWrap.native.js +0 -3
  175. package/lib/StackView/StackWrapBox.js +5 -21
  176. package/lib/StackView/StackWrapGap.js +1 -14
  177. package/lib/StackView/common.js +0 -6
  178. package/lib/StackView/getStackedContent.js +10 -21
  179. package/lib/StackView/index.js +0 -5
  180. package/lib/StepTracker/Step.js +3 -27
  181. package/lib/StepTracker/StepTracker.js +5 -32
  182. package/lib/StepTracker/index.js +0 -3
  183. package/lib/Tabs/Tabs.js +7 -30
  184. package/lib/Tabs/TabsItem.js +13 -38
  185. package/lib/Tabs/index.js +0 -3
  186. package/lib/Tags/Tags.js +9 -42
  187. package/lib/Tags/index.js +0 -3
  188. package/lib/TextInput/TextArea.js +11 -20
  189. package/lib/TextInput/TextInput.js +7 -16
  190. package/lib/TextInput/TextInputBase.js +106 -69
  191. package/lib/TextInput/index.js +0 -3
  192. package/lib/TextInput/propTypes.js +4 -7
  193. package/lib/ThemeProvider/ThemeProvider.js +10 -18
  194. package/lib/ThemeProvider/index.js +0 -9
  195. package/lib/ThemeProvider/useSetTheme.js +6 -9
  196. package/lib/ThemeProvider/useTheme.js +2 -7
  197. package/lib/ThemeProvider/useThemeTokens.js +1 -9
  198. package/lib/ThemeProvider/utils/index.js +0 -4
  199. package/lib/ThemeProvider/utils/styles.js +14 -35
  200. package/lib/ThemeProvider/utils/theme-tokens.js +15 -43
  201. package/lib/Timeline/Timeline.js +11 -27
  202. package/lib/Timeline/index.js +0 -3
  203. package/lib/ToggleSwitch/ToggleSwitch.js +12 -43
  204. package/lib/ToggleSwitch/ToggleSwitchGroup.js +4 -38
  205. package/lib/ToggleSwitch/index.js +0 -3
  206. package/lib/Tooltip/Backdrop.js +4 -11
  207. package/lib/Tooltip/Backdrop.native.js +1 -14
  208. package/lib/Tooltip/Tooltip.js +9 -37
  209. package/lib/Tooltip/Tooltip.native.js +14 -45
  210. package/lib/Tooltip/getTooltipPosition.js +26 -31
  211. package/lib/Tooltip/index.js +0 -5
  212. package/lib/Tooltip/shared.js +0 -10
  213. package/lib/TooltipButton/TooltipButton.js +5 -20
  214. package/lib/TooltipButton/index.js +0 -3
  215. package/lib/Typography/Typography.js +15 -38
  216. package/lib/Typography/index.js +0 -3
  217. package/lib/Validator/Validator.js +10 -58
  218. package/lib/Validator/index.js +0 -3
  219. package/lib/ViewportProvider/ViewportProvider.js +1 -13
  220. package/lib/ViewportProvider/index.js +0 -5
  221. package/lib/ViewportProvider/useViewport.js +0 -4
  222. package/lib/ViewportProvider/useViewportListener.js +3 -12
  223. package/lib/index.js +8 -71
  224. package/lib/utils/BaseView/BaseView.js +3 -17
  225. package/lib/utils/BaseView/BaseView.native.js +0 -3
  226. package/lib/utils/BaseView/index.js +0 -3
  227. package/lib/utils/a11y/index.js +0 -4
  228. package/lib/utils/a11y/semantics.js +14 -32
  229. package/lib/utils/a11y/textSize.js +1 -8
  230. package/lib/utils/animation/index.js +0 -2
  231. package/lib/utils/animation/useVerticalExpandAnimation.js +5 -18
  232. package/lib/utils/children.js +16 -28
  233. package/lib/utils/containUniqueFields.js +2 -5
  234. package/lib/utils/floating-ui/index.js +0 -1
  235. package/lib/utils/floating-ui/index.native.js +0 -1
  236. package/lib/utils/hasOwnProperty.js +0 -1
  237. package/lib/utils/htmlAttrs.js +2 -4
  238. package/lib/utils/index.js +0 -31
  239. package/lib/utils/info/index.js +0 -4
  240. package/lib/utils/info/platform/index.js +0 -4
  241. package/lib/utils/info/versions.js +0 -3
  242. package/lib/utils/input.js +12 -24
  243. package/lib/utils/pressability.js +7 -21
  244. package/lib/utils/props/a11yProps.js +19 -25
  245. package/lib/utils/props/clickProps.js +0 -4
  246. package/lib/utils/props/componentPropType.js +0 -14
  247. package/lib/utils/props/copyPropTypes.js +0 -4
  248. package/lib/utils/props/getPropSelector.js +11 -12
  249. package/lib/utils/props/handlerProps.js +2 -23
  250. package/lib/utils/props/hrefAttrsProp.js +0 -4
  251. package/lib/utils/props/index.js +0 -22
  252. package/lib/utils/props/inputSupportsProps.js +0 -9
  253. package/lib/utils/props/linkProps.js +2 -12
  254. package/lib/utils/props/paddingProp.js +0 -3
  255. package/lib/utils/props/pressProps.js +2 -8
  256. package/lib/utils/props/rectProp.js +0 -3
  257. package/lib/utils/props/responsiveProps.js +1 -5
  258. package/lib/utils/props/selectSystemProps.js +4 -6
  259. package/lib/utils/props/spacingProps.js +3 -10
  260. package/lib/utils/props/textInputProps.js +11 -31
  261. package/lib/utils/props/textProps.js +6 -11
  262. package/lib/utils/props/tokens.js +7 -26
  263. package/lib/utils/props/variantProp.js +0 -3
  264. package/lib/utils/props/viewProps.js +0 -5
  265. package/lib/utils/ssr.js +13 -33
  266. package/lib/utils/useCopy.js +3 -6
  267. package/lib/utils/useHash.js +5 -10
  268. package/lib/utils/useHash.native.js +0 -2
  269. package/lib/utils/useOverlaidPosition.js +6 -29
  270. package/lib/utils/useResponsiveProp.js +6 -13
  271. package/lib/utils/useSafeLayoutEffect.js +5 -10
  272. package/lib/utils/useScrollBlocking.js +3 -11
  273. package/lib/utils/useScrollBlocking.native.js +0 -2
  274. package/lib/utils/useSpacingScale.js +5 -8
  275. package/lib/utils/useUniqueId.js +0 -4
  276. package/lib/utils/withLinkRouter.js +13 -18
  277. package/lib-module/A11yInfoProvider/index.js +5 -9
  278. package/lib-module/A11yText/index.js +3 -4
  279. package/lib-module/ActivityIndicator/Spinner.js +2 -2
  280. package/lib-module/ActivityIndicator/Spinner.native.js +4 -6
  281. package/lib-module/ActivityIndicator/index.js +1 -5
  282. package/lib-module/ActivityIndicator/shared.js +2 -1
  283. package/lib-module/Autocomplete/Autocomplete.js +34 -59
  284. package/lib-module/Autocomplete/Loading.js +0 -2
  285. package/lib-module/BaseProvider/HydrationContext.js +4 -7
  286. package/lib-module/BaseProvider/index.js +0 -3
  287. package/lib-module/Box/Box.js +10 -24
  288. package/lib-module/Button/Button.js +4 -2
  289. package/lib-module/Button/ButtonBase.js +23 -35
  290. package/lib-module/Button/ButtonDropdown.js +7 -16
  291. package/lib-module/Button/ButtonGroup.js +15 -32
  292. package/lib-module/Button/ButtonLink.js +3 -2
  293. package/lib-module/Button/propTypes.js +0 -7
  294. package/lib-module/Card/Card.js +3 -2
  295. package/lib-module/Card/CardBase.js +5 -4
  296. package/lib-module/Card/PressableCardBase.js +7 -11
  297. package/lib-module/Carousel/Carousel.js +22 -60
  298. package/lib-module/Carousel/CarouselContext.js +0 -5
  299. package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +7 -5
  300. package/lib-module/Carousel/CarouselItem/CarouselItem.js +5 -11
  301. package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -2
  302. package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +3 -4
  303. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +7 -6
  304. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +2 -10
  305. package/lib-module/Carousel/CarouselThumbnail.js +1 -7
  306. package/lib-module/Carousel/CarouselThumbnailNavigation.js +0 -2
  307. package/lib-module/Checkbox/Checkbox.js +5 -23
  308. package/lib-module/Checkbox/CheckboxButton.js +7 -17
  309. package/lib-module/Checkbox/CheckboxGroup.js +5 -23
  310. package/lib-module/Checkbox/CheckboxInput.js +1 -3
  311. package/lib-module/Checkbox/CheckboxInput.native.js +0 -1
  312. package/lib-module/CheckboxCard/CheckboxCard.js +4 -21
  313. package/lib-module/CheckboxCardGroup/CheckboxCardGroup.js +205 -0
  314. package/lib-module/CheckboxCardGroup/index.js +2 -0
  315. package/lib-module/Divider/Divider.js +13 -11
  316. package/lib-module/ExpandCollapse/Accordion.js +1 -1
  317. package/lib-module/ExpandCollapse/Control.js +10 -17
  318. package/lib-module/ExpandCollapse/ExpandCollapse.js +3 -9
  319. package/lib-module/ExpandCollapse/Panel.js +13 -23
  320. package/lib-module/Feedback/Feedback.js +13 -16
  321. package/lib-module/Fieldset/Fieldset.js +6 -25
  322. package/lib-module/Fieldset/FieldsetContainer.js +1 -1
  323. package/lib-module/Fieldset/FieldsetContainer.native.js +0 -1
  324. package/lib-module/Fieldset/Legend.js +1 -1
  325. package/lib-module/Fieldset/Legend.native.js +1 -1
  326. package/lib-module/FlexGrid/Col/Col.js +10 -37
  327. package/lib-module/FlexGrid/FlexGrid.js +3 -17
  328. package/lib-module/FlexGrid/Row/Row.js +0 -25
  329. package/lib-module/FlexGrid/helpers/index.js +0 -3
  330. package/lib-module/HorizontalScroll/HorizontalScroll.js +17 -27
  331. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +1 -3
  332. package/lib-module/HorizontalScroll/ScrollViewEnd.js +5 -4
  333. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +0 -1
  334. package/lib-module/HorizontalScroll/itemPositions.js +11 -10
  335. package/lib-module/Icon/Icon.js +4 -8
  336. package/lib-module/Icon/IconText.js +6 -17
  337. package/lib-module/IconButton/IconButton.js +7 -20
  338. package/lib-module/InputLabel/InputLabel.js +4 -13
  339. package/lib-module/InputLabel/LabelContent.js +2 -1
  340. package/lib-module/InputLabel/LabelContent.native.js +0 -1
  341. package/lib-module/InputSupports/InputSupports.js +0 -9
  342. package/lib-module/InputSupports/useInputSupports.js +2 -4
  343. package/lib-module/Link/ChevronLink.js +7 -7
  344. package/lib-module/Link/InlinePressable.js +0 -2
  345. package/lib-module/Link/InlinePressable.native.js +4 -12
  346. package/lib-module/Link/LinkBase.js +17 -25
  347. package/lib-module/Link/TextButton.js +3 -5
  348. package/lib-module/List/List.js +5 -9
  349. package/lib-module/List/ListItem.js +1 -1
  350. package/lib-module/List/ListItemBase.js +5 -17
  351. package/lib-module/List/ListItemContent.js +1 -4
  352. package/lib-module/List/ListItemMark.js +3 -16
  353. package/lib-module/List/PressableListItemBase.js +2 -6
  354. package/lib-module/Listbox/GroupControl.js +0 -2
  355. package/lib-module/Listbox/Listbox.js +15 -23
  356. package/lib-module/Listbox/ListboxContext.js +0 -2
  357. package/lib-module/Listbox/ListboxGroup.js +6 -4
  358. package/lib-module/Listbox/ListboxItem.js +2 -1
  359. package/lib-module/Listbox/ListboxOverlay.js +3 -4
  360. package/lib-module/Listbox/PressableItem.js +2 -7
  361. package/lib-module/Modal/Modal.js +94 -25
  362. package/lib-module/Modal/ModalContent.js +175 -0
  363. package/lib-module/MultiSelectFilter/ModalOverlay.js +1 -4
  364. package/lib-module/MultiSelectFilter/MultiSelectFilter.js +20 -42
  365. package/lib-module/Notification/Notification.js +11 -22
  366. package/lib-module/Pagination/PageButton.js +2 -6
  367. package/lib-module/Pagination/Pagination.js +21 -21
  368. package/lib-module/Pagination/SideButton.js +3 -8
  369. package/lib-module/Pagination/usePagination.js +4 -8
  370. package/lib-module/Progress/Progress.js +3 -7
  371. package/lib-module/Progress/ProgressBar.js +3 -11
  372. package/lib-module/Progress/ProgressBarBackground.js +0 -2
  373. package/lib-module/QuickLinks/QuickLinks.js +1 -6
  374. package/lib-module/QuickLinks/QuickLinksCard.js +1 -3
  375. package/lib-module/QuickLinks/QuickLinksItem.js +3 -2
  376. package/lib-module/QuickLinksFeature/QuickLinksFeature.js +5 -9
  377. package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +9 -13
  378. package/lib-module/Radio/Radio.js +5 -22
  379. package/lib-module/Radio/RadioButton.js +8 -10
  380. package/lib-module/Radio/RadioGroup.js +6 -25
  381. package/lib-module/Radio/RadioInput.js +1 -3
  382. package/lib-module/Radio/RadioInput.native.js +0 -1
  383. package/lib-module/RadioCard/RadioCard.js +5 -21
  384. package/lib-module/RadioCard/RadioCardGroup.js +7 -25
  385. package/lib-module/Responsive/Responsive.js +1 -6
  386. package/lib-module/Search/Search.js +22 -31
  387. package/lib-module/Select/Group.js +0 -3
  388. package/lib-module/Select/Group.native.js +0 -3
  389. package/lib-module/Select/Item.js +0 -3
  390. package/lib-module/Select/Item.native.js +0 -1
  391. package/lib-module/Select/Picker.native.js +8 -10
  392. package/lib-module/Select/Select.js +10 -35
  393. package/lib-module/SideNav/Item.js +5 -16
  394. package/lib-module/SideNav/ItemContent.js +1 -2
  395. package/lib-module/SideNav/ItemsGroup.js +9 -19
  396. package/lib-module/SideNav/SideNav.js +9 -22
  397. package/lib-module/Skeleton/Skeleton.js +10 -25
  398. package/lib-module/Skeleton/skeletonWebAnimation.js +0 -1
  399. package/lib-module/Skeleton/useSkeletonNativeAnimation.js +1 -3
  400. package/lib-module/SkipLink/SkipLink.js +7 -9
  401. package/lib-module/Spacer/Spacer.js +4 -7
  402. package/lib-module/StackView/StackView.js +3 -7
  403. package/lib-module/StackView/StackWrap.js +13 -13
  404. package/lib-module/StackView/StackWrap.native.js +2 -1
  405. package/lib-module/StackView/StackWrapBox.js +5 -8
  406. package/lib-module/StackView/StackWrapGap.js +1 -1
  407. package/lib-module/StackView/getStackedContent.js +10 -10
  408. package/lib-module/StepTracker/Step.js +3 -14
  409. package/lib-module/StepTracker/StepTracker.js +5 -13
  410. package/lib-module/Tabs/Tabs.js +7 -16
  411. package/lib-module/Tabs/TabsItem.js +13 -16
  412. package/lib-module/Tags/Tags.js +9 -26
  413. package/lib-module/TextInput/TextArea.js +11 -8
  414. package/lib-module/TextInput/TextInput.js +7 -5
  415. package/lib-module/TextInput/TextInputBase.js +107 -51
  416. package/lib-module/TextInput/propTypes.js +7 -6
  417. package/lib-module/ThemeProvider/ThemeProvider.js +10 -9
  418. package/lib-module/ThemeProvider/useSetTheme.js +6 -7
  419. package/lib-module/ThemeProvider/useTheme.js +2 -5
  420. package/lib-module/ThemeProvider/useThemeTokens.js +1 -2
  421. package/lib-module/ThemeProvider/utils/styles.js +15 -27
  422. package/lib-module/ThemeProvider/utils/theme-tokens.js +15 -20
  423. package/lib-module/Timeline/Timeline.js +11 -17
  424. package/lib-module/ToggleSwitch/ToggleSwitch.js +13 -26
  425. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +4 -23
  426. package/lib-module/Tooltip/Backdrop.js +4 -7
  427. package/lib-module/Tooltip/Backdrop.native.js +1 -4
  428. package/lib-module/Tooltip/Tooltip.js +9 -18
  429. package/lib-module/Tooltip/Tooltip.native.js +14 -23
  430. package/lib-module/Tooltip/getTooltipPosition.js +26 -30
  431. package/lib-module/Tooltip/shared.js +0 -6
  432. package/lib-module/TooltipButton/TooltipButton.js +5 -8
  433. package/lib-module/Typography/Typography.js +14 -22
  434. package/lib-module/Validator/Validator.js +10 -42
  435. package/lib-module/ViewportProvider/ViewportProvider.js +1 -3
  436. package/lib-module/ViewportProvider/useViewportListener.js +6 -8
  437. package/lib-module/index.js +1 -0
  438. package/lib-module/utils/BaseView/BaseView.js +3 -4
  439. package/lib-module/utils/BaseView/BaseView.native.js +0 -1
  440. package/lib-module/utils/a11y/semantics.js +14 -27
  441. package/lib-module/utils/a11y/textSize.js +1 -2
  442. package/lib-module/utils/animation/useVerticalExpandAnimation.js +8 -11
  443. package/lib-module/utils/children.js +17 -19
  444. package/lib-module/utils/containUniqueFields.js +2 -4
  445. package/lib-module/utils/htmlAttrs.js +2 -1
  446. package/lib-module/utils/info/index.js +2 -1
  447. package/lib-module/utils/info/platform/index.js +4 -1
  448. package/lib-module/utils/info/versions.js +2 -1
  449. package/lib-module/utils/input.js +11 -19
  450. package/lib-module/utils/pressability.js +8 -7
  451. package/lib-module/utils/props/a11yProps.js +22 -20
  452. package/lib-module/utils/props/clickProps.js +0 -1
  453. package/lib-module/utils/props/componentPropType.js +0 -13
  454. package/lib-module/utils/props/getPropSelector.js +12 -8
  455. package/lib-module/utils/props/handlerProps.js +2 -19
  456. package/lib-module/utils/props/hrefAttrsProp.js +2 -2
  457. package/lib-module/utils/props/inputSupportsProps.js +0 -6
  458. package/lib-module/utils/props/linkProps.js +2 -3
  459. package/lib-module/utils/props/pressProps.js +2 -2
  460. package/lib-module/utils/props/responsiveProps.js +1 -3
  461. package/lib-module/utils/props/selectSystemProps.js +4 -5
  462. package/lib-module/utils/props/spacingProps.js +4 -3
  463. package/lib-module/utils/props/textInputProps.js +14 -27
  464. package/lib-module/utils/props/textProps.js +9 -7
  465. package/lib-module/utils/props/tokens.js +10 -13
  466. package/lib-module/utils/props/variantProp.js +1 -1
  467. package/lib-module/utils/props/viewProps.js +0 -1
  468. package/lib-module/utils/ssr.js +14 -18
  469. package/lib-module/utils/useCopy.js +3 -5
  470. package/lib-module/utils/useHash.js +5 -9
  471. package/lib-module/utils/useHash.native.js +0 -1
  472. package/lib-module/utils/useOverlaidPosition.js +6 -25
  473. package/lib-module/utils/useResponsiveProp.js +6 -7
  474. package/lib-module/utils/useSafeLayoutEffect.js +5 -7
  475. package/lib-module/utils/useScrollBlocking.js +3 -10
  476. package/lib-module/utils/useSpacingScale.js +4 -4
  477. package/lib-module/utils/useUniqueId.js +0 -2
  478. package/lib-module/utils/withLinkRouter.js +13 -10
  479. package/package.json +2 -2
  480. package/src/CheckboxCardGroup/CheckboxCardGroup.jsx +230 -0
  481. package/src/CheckboxCardGroup/index.js +3 -0
  482. package/src/Modal/Modal.jsx +98 -5
  483. package/src/Modal/ModalContent.jsx +171 -0
  484. package/src/TextInput/TextInputBase.jsx +67 -12
  485. package/src/TextInput/propTypes.js +4 -0
  486. package/src/index.js +1 -0
  487. package/src/utils/props/textInputProps.js +1 -0
@@ -61,11 +61,9 @@ const ToggleSwitchGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
61
61
  });
62
62
  const itemA11yRole = selectedProps.accessibilityRole === 'radiogroup' ? 'radio' : 'switch';
63
63
  const uniqueFields = ['id', 'label'];
64
-
65
64
  if (!containUniqueFields(items, uniqueFields)) {
66
65
  throw new Error(`ToggleSwitchGroup items must have unique ${uniqueFields.join(', ')}`);
67
66
  }
68
-
69
67
  const toggleSwitches = items.map((_ref2, index) => {
70
68
  let {
71
69
  label,
@@ -77,12 +75,10 @@ const ToggleSwitchGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
77
75
  ...itemRest
78
76
  } = _ref2;
79
77
  const isSelected = currentValues.includes(id);
80
-
81
78
  const handleChange = (newCheckedState, event) => {
82
79
  if (typeof itemOnChange === 'function') itemOnChange(newCheckedState, event);
83
80
  toggleOneValue(id, event);
84
81
  };
85
-
86
82
  const itemA11y = {
87
83
  accessibilityState: {
88
84
  checked: isSelected
@@ -124,56 +120,49 @@ const ToggleSwitchGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
124
120
  });
125
121
  });
126
122
  ToggleSwitchGroup.displayName = 'ToggleSwitchGroup';
127
- ToggleSwitchGroup.propTypes = { ...selectedSystemPropTypes,
128
-
123
+ ToggleSwitchGroup.propTypes = {
124
+ ...selectedSystemPropTypes,
129
125
  /**
130
126
  * Whether the English or French copy will be used (e.g. for accessibility labels).
131
127
  */
132
128
  copy: PropTypes.oneOf(['en', 'fr']),
133
129
  tokens: getTokensPropType('ToggleSwitchGroup'),
134
130
  variant: variantProp.propType,
135
-
136
131
  /**
137
132
  * The maximum number of items a user may select at once. Defaults to 1 and behaves
138
133
  * like radio buttons. To have no limit and allow any number of selections, pass `null`.
139
134
  */
140
135
  maxValues: PropTypes.number,
141
-
142
136
  /**
143
137
  * The options a user may select
144
138
  */
145
- items: PropTypes.arrayOf(PropTypes.shape({ ...selectedItemPropTypes,
146
-
139
+ items: PropTypes.arrayOf(PropTypes.shape({
140
+ ...selectedItemPropTypes,
147
141
  /**
148
142
  * The text displayed to the user on the label.
149
143
  */
150
144
  label: PropTypes.string.isRequired,
151
-
152
145
  /**
153
146
  * An optional accessibility label may be passed to each ToggleSwitch
154
147
  * and will be applied as normal for a React Native accessibilityLabel prop.
155
148
  */
156
149
  accessibilityLabel: PropTypes.string,
157
-
158
150
  /**
159
151
  * An optional unique string may be provided to identify this option,
160
152
  * which will be used in code and passed to any onChange function.
161
153
  * If not provided, the label is used.
162
154
  */
163
155
  id: PropTypes.string,
164
-
165
156
  /**
166
157
  * An optional ref for one individual ToggleSwitch in the ToggleSwitchGroup
167
158
  */
168
159
  ref: ABBPropTypes.ref()
169
160
  })),
170
-
171
161
  /**
172
162
  * If provided, this function is called when the current selection is changed
173
163
  * and is passed an array of the `id`s of all currently selected `items`.
174
164
  */
175
165
  onChange: PropTypes.func,
176
-
177
166
  /**
178
167
  * If the selected item(s) in the toggle switch group are to be controlled externally by
179
168
  * a parent component, pass an array of strings as well as an `onChange` handler.
@@ -181,44 +170,36 @@ ToggleSwitchGroup.propTypes = { ...selectedSystemPropTypes,
181
170
  * expects its state to be handled via `onChange` and so doesn't handle it itself.
182
171
  */
183
172
  values: PropTypes.arrayOf(PropTypes.string),
184
-
185
173
  /**
186
174
  * If `values` is not passed, making the ToggleSwitchGroup an "uncontrolled" component
187
175
  * managing its own selected state, a default set of selections may be provided.
188
176
  * Changing the `initialValues` does not change the user's selections.
189
177
  */
190
178
  initialValues: PropTypes.arrayOf(PropTypes.string),
191
-
192
179
  /**
193
180
  * Optional additional text giving more detail to help a user make a choice.
194
181
  */
195
182
  hint: PropTypes.string,
196
-
197
183
  /**
198
184
  * Position of the hint relative to label. Use `below` to display a larger hint below the label.
199
185
  */
200
186
  hintPosition: PropTypes.oneOf(['inline', 'below']),
201
-
202
187
  /**
203
188
  * Optional tooltip text content to include alongside the legend and hint.
204
189
  */
205
190
  tooltip: PropTypes.string,
206
-
207
191
  /**
208
192
  * If provided, a Feedback element is rendered containing this text.
209
193
  */
210
194
  feedback: PropTypes.string,
211
-
212
195
  /**
213
196
  * Main text used to describe this group, used in Fieldset's Legend element.
214
197
  */
215
198
  legend: PropTypes.string,
216
-
217
199
  /**
218
200
  * Toggle switch token overrides.
219
201
  */
220
202
  toggleSwitchTokens: getTokensPropType('ToggleSwitch'),
221
-
222
203
  /**
223
204
  * Current validation status of the group, passed to the feedback element if there is one.
224
205
  */
@@ -1,13 +1,13 @@
1
1
  import { useEffect, useState } from 'react';
2
2
  import ReactDOM from 'react-dom';
3
3
  import PropTypes from 'prop-types';
4
-
5
4
  function createPortalNode(nodeId) {
6
5
  const node = document.createElement('div');
7
- node.id = nodeId; // we're mimicking React Native's Modal component, except for using an `absolute` position
6
+ node.id = nodeId;
7
+
8
+ // we're mimicking React Native's Modal component, except for using an `absolute` position
8
9
  // this way the backdrop stays in place when scrolling the window - that's why we need to
9
10
  // position it at the scroll position when rendering
10
-
11
11
  node.style.cssText = `
12
12
  position: absolute;
13
13
  top: ${window.scrollY}px;
@@ -20,17 +20,15 @@ function createPortalNode(nodeId) {
20
20
  document.body.appendChild(node);
21
21
  return node;
22
22
  }
23
-
24
23
  function removePortalNode(nodeId) {
25
24
  const node = document.getElementById(nodeId);
26
25
  node.parentElement.removeChild(node);
27
26
  }
27
+
28
28
  /**
29
29
  * The Web version of Backdrop utilizes React Portal for overlaying page content, so it is
30
30
  * dependent on ReactDOM. Tooltip's closing is handled by the onBlur callback of the control.
31
31
  */
32
-
33
-
34
32
  function Backdrop(_ref) {
35
33
  let {
36
34
  children
@@ -46,7 +44,6 @@ function Backdrop(_ref) {
46
44
  }, []);
47
45
  return portalNode ? /*#__PURE__*/ReactDOM.createPortal(children, portalNode) : null;
48
46
  }
49
-
50
47
  Backdrop.propTypes = {
51
48
  children: PropTypes.node
52
49
  };
@@ -4,15 +4,14 @@ import Modal from "react-native-web/dist/exports/Modal";
4
4
  import StyleSheet from "react-native-web/dist/exports/StyleSheet";
5
5
  import View from "react-native-web/dist/exports/View";
6
6
  import PropTypes from 'prop-types';
7
+
7
8
  /**
8
9
  * The Native version of Backdrop utilizes React Native's Modal component for overlaying
9
10
  * the app's content, since this is the only reliable to do it. The only drawback of this
10
11
  * approach is that a press on the Backdrop will actually stop the press event from propagating,
11
12
  * i.e. anything rendered beneath the Backdrop can't be pressed until the Backdrop is closed.
12
13
  */
13
-
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
-
16
15
  function Backdrop(_ref) {
17
16
  let {
18
17
  onPress,
@@ -29,7 +28,6 @@ function Backdrop(_ref) {
29
28
  })
30
29
  });
31
30
  }
32
-
33
31
  export default Backdrop;
34
32
  Backdrop.propTypes = {
35
33
  onPress: PropTypes.func,
@@ -39,6 +37,5 @@ const staticStyles = StyleSheet.create({
39
37
  backdrop: {
40
38
  flexBasis: '100%',
41
39
  backgroundColor: 'rgba(255, 255, 255, 0.5)' // to visually mark that the content beneath is not pressable
42
-
43
40
  }
44
41
  });
@@ -14,7 +14,6 @@ import dictionary from './dictionary';
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
15
  import { jsxs as _jsxs } from "react/jsx-runtime";
16
16
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
17
-
18
17
  const selectTooltipStyles = _ref => {
19
18
  let {
20
19
  backgroundColor,
@@ -33,7 +32,6 @@ const selectTooltipStyles = _ref => {
33
32
  borderRadius
34
33
  };
35
34
  };
36
-
37
35
  const selectTooltipShadowStyles = _ref2 => {
38
36
  let {
39
37
  shadow,
@@ -44,7 +42,6 @@ const selectTooltipShadowStyles = _ref2 => {
44
42
  ...applyShadowToken(shadow)
45
43
  };
46
44
  };
47
-
48
45
  const selectMobileTooltipPositionStyles = _ref3 => {
49
46
  let {
50
47
  top,
@@ -57,7 +54,6 @@ const selectMobileTooltipPositionStyles = _ref3 => {
57
54
  position
58
55
  };
59
56
  };
60
-
61
57
  const selectMobileArrowStyles = (_ref4, _ref5) => {
62
58
  let {
63
59
  backgroundColor,
@@ -93,13 +89,12 @@ const selectMobileArrowStyles = (_ref4, _ref5) => {
93
89
  [staticSide]: '-4px'
94
90
  };
95
91
  };
96
-
97
92
  const selectTextStyles = tokens => applyTextStyles(selectTokens('Typography', tokens));
98
-
99
93
  const defaultControl = (pressableState, variant) => /*#__PURE__*/_jsx(TooltipButton, {
100
94
  pressableState: pressableState,
101
95
  variant: variant
102
96
  });
97
+
103
98
  /**
104
99
  * Tooltip provides a descriptive and detailed explanation or instructions. It can be used next to an input label
105
100
  * to help a user fill it in, or as a standalone component.
@@ -115,8 +110,6 @@ const defaultControl = (pressableState, variant) => /*#__PURE__*/_jsx(TooltipBut
115
110
  * - You may use one when the information is useful only to a small percentage of users (ie. tech savvy people wouldn't need this info).
116
111
  * - Tooltips may also be useful when vertical space is an issue.
117
112
  */
118
-
119
-
120
113
  const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
121
114
  let {
122
115
  children,
@@ -140,8 +133,9 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
140
133
  right: 'right',
141
134
  below: 'bottom',
142
135
  left: 'left'
143
- }; // "AutoPlacement" can't be used with "flip"
136
+ };
144
137
 
138
+ // "AutoPlacement" can't be used with "flip"
145
139
  const additionalMiddleware = position !== 'auto' ? autoPlacement : flip;
146
140
  const {
147
141
  x,
@@ -164,14 +158,11 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
164
158
  copy
165
159
  });
166
160
  const themeTokens = useThemeTokens('Tooltip', tokens, variant);
167
-
168
161
  const toggleIsOpen = () => {
169
162
  onPress();
170
163
  setIsOpen(!isOpen);
171
164
  };
172
-
173
165
  const close = () => setIsOpen(false);
174
-
175
166
  const getPressableState = _ref7 => {
176
167
  let {
177
168
  pressed,
@@ -184,7 +175,6 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
184
175
  focus: focused
185
176
  };
186
177
  };
187
-
188
178
  const onTooltipLayout = _ref8 => {
189
179
  let {
190
180
  nativeEvent: {
@@ -194,7 +184,6 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
194
184
  }
195
185
  }
196
186
  } = _ref8;
197
-
198
187
  if (tooltipDimensions === null || tooltipDimensions.width !== width || tooltipDimensions.height !== height) {
199
188
  setTooltipDimensions({
200
189
  width: Platform.select({
@@ -206,7 +195,6 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
206
195
  });
207
196
  }
208
197
  };
209
-
210
198
  useEffect(() => {
211
199
  if (!isOpen) {
212
200
  setTooltipDimensions(null);
@@ -244,7 +232,8 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
244
232
  children: typeof control === 'function' ? pressableState => control(getPressableState(pressableState), variant) : control
245
233
  }), isOpen && /*#__PURE__*/_jsxs(View, {
246
234
  ref: floating,
247
- style: [selectTooltipShadowStyles(themeTokens), staticStyles.tooltip, // applied separately so that it doesn't cover the arrow
235
+ style: [selectTooltipShadowStyles(themeTokens), staticStyles.tooltip,
236
+ // applied separately so that it doesn't cover the arrow
248
237
  selectMobileTooltipPositionStyles({
249
238
  position: strategy,
250
239
  top: y ?? 0,
@@ -253,7 +242,8 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
253
242
  onLayout: onTooltipLayout,
254
243
  accessibilityRole: "alert",
255
244
  children: [/*#__PURE__*/_jsx(View, {
256
- style: [staticStyles.arrow, selectMobileArrowStyles(themeTokens, { ...arrowData,
245
+ style: [staticStyles.arrow, selectMobileArrowStyles(themeTokens, {
246
+ ...arrowData,
257
247
  placement
258
248
  })],
259
249
  ref: arrowRef
@@ -268,7 +258,8 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
268
258
  });
269
259
  });
270
260
  Tooltip.displayName = 'Tooltip';
271
- Tooltip.propTypes = { ...selectedSystemPropTypes,
261
+ Tooltip.propTypes = {
262
+ ...selectedSystemPropTypes,
272
263
  ...propTypes
273
264
  };
274
265
  export default Tooltip;
@@ -16,7 +16,6 @@ import dictionary from './dictionary';
16
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
17
  import { jsxs as _jsxs } from "react/jsx-runtime";
18
18
  const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
19
-
20
19
  const selectTooltipStyles = _ref => {
21
20
  let {
22
21
  backgroundColor,
@@ -35,7 +34,6 @@ const selectTooltipStyles = _ref => {
35
34
  borderRadius
36
35
  };
37
36
  };
38
-
39
37
  const selectTooltipShadowStyles = _ref2 => {
40
38
  let {
41
39
  shadow,
@@ -46,7 +44,6 @@ const selectTooltipShadowStyles = _ref2 => {
46
44
  ...applyShadowToken(shadow)
47
45
  };
48
46
  };
49
-
50
47
  const selectTooltipPositionStyles = _ref3 => {
51
48
  let {
52
49
  top,
@@ -59,7 +56,6 @@ const selectTooltipPositionStyles = _ref3 => {
59
56
  width
60
57
  };
61
58
  };
62
-
63
59
  const selectArrowStyles = (_ref4, _ref5) => {
64
60
  let {
65
61
  backgroundColor,
@@ -73,13 +69,15 @@ const selectArrowStyles = (_ref4, _ref5) => {
73
69
  height: tooltipHeight
74
70
  } = _ref5;
75
71
  // the arrow width is actually a diagonal of the rectangle that we'll use as a tip
76
- const rectangleSide = Math.sqrt(arrowWidth * arrowWidth / 2); // position the arrow at the side and center of the tooltip - this happens before rotation
77
- // so we use the rectangle size as basis
72
+ const rectangleSide = Math.sqrt(arrowWidth * arrowWidth / 2);
78
73
 
74
+ // position the arrow at the side and center of the tooltip - this happens before rotation
75
+ // so we use the rectangle size as basis
79
76
  const verticalOffset = -1 * rectangleSide / 2;
80
- const horizontalOffset = rectangleSide / 2; // percentage-based absolute positioning doesn't act well on native, so we have to
81
- // calculate the pixel values
77
+ const horizontalOffset = rectangleSide / 2;
82
78
 
79
+ // percentage-based absolute positioning doesn't act well on native, so we have to
80
+ // calculate the pixel values
83
81
  const directionalStyles = {
84
82
  above: {
85
83
  bottom: verticalOffset,
@@ -120,13 +118,12 @@ const selectArrowStyles = (_ref4, _ref5) => {
120
118
  ...directionalStyles[position]
121
119
  };
122
120
  };
123
-
124
121
  const selectTextStyles = tokens => applyTextStyles(selectTokens('Typography', tokens));
125
-
126
122
  const defaultControl = (pressableState, variant) => /*#__PURE__*/_jsx(TooltipButton, {
127
123
  pressableState: pressableState,
128
124
  variant: variant
129
125
  });
126
+
130
127
  /**
131
128
  * Tooltip provides a descriptive and detailed explanation or instructions. It can be used next to an input label
132
129
  * to help a user fill it in, or as a standalone component.
@@ -142,8 +139,6 @@ const defaultControl = (pressableState, variant) => /*#__PURE__*/_jsx(TooltipBut
142
139
  * - You may use one when the information is useful only to a small percentage of users (ie. tech savvy people wouldn't need this info).
143
140
  * - Tooltips may also be useful when vertical space is an issue.
144
141
  */
145
-
146
-
147
142
  const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
148
143
  let {
149
144
  children,
@@ -181,14 +176,11 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
181
176
  });
182
177
  return () => subscription === null || subscription === void 0 ? void 0 : subscription.remove();
183
178
  });
184
-
185
179
  const toggleIsOpen = () => {
186
180
  onPress();
187
181
  setIsOpen(!isOpen);
188
182
  };
189
-
190
183
  const close = () => setIsOpen(false);
191
-
192
184
  const getPressableState = _ref8 => {
193
185
  let {
194
186
  pressed,
@@ -201,7 +193,6 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
201
193
  focus: focused
202
194
  };
203
195
  };
204
-
205
196
  const onTooltipLayout = _ref9 => {
206
197
  let {
207
198
  nativeEvent: {
@@ -211,7 +202,6 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
211
202
  }
212
203
  }
213
204
  } = _ref9;
214
-
215
205
  if (tooltipDimensions === null || tooltipDimensions.width !== width || tooltipDimensions.height !== height) {
216
206
  setTooltipDimensions({
217
207
  width: Platform.select({
@@ -223,7 +213,6 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
223
213
  });
224
214
  }
225
215
  };
226
-
227
216
  useEffect(() => {
228
217
  if (isOpen) {
229
218
  controlRef.current.measureInWindow((x, y, width, height) => {
@@ -247,19 +236,18 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
247
236
  if (tooltipPosition !== null && !(tooltipPosition !== null && tooltipPosition !== void 0 && tooltipPosition.isNormalized) || !isOpen || controlLayout === null || tooltipDimensions == null) {
248
237
  return;
249
238
  }
250
-
251
239
  const updatedPosition = getTooltipPosition(position, {
252
240
  controlLayout,
253
241
  tooltipDimensions,
254
242
  windowDimensions,
255
243
  arrowWidth,
256
244
  arrowOffset
257
- }); // avoid ending up in an infinite normalization loop
245
+ });
258
246
 
247
+ // avoid ending up in an infinite normalization loop
259
248
  if (tooltipPosition !== null && tooltipPosition !== void 0 && tooltipPosition.isNormalized && updatedPosition.isNormalized) {
260
249
  return;
261
250
  }
262
-
263
251
  setTooltipPosition(updatedPosition);
264
252
  }, [isOpen, position, tooltipDimensions, controlLayout, windowDimensions, arrowWidth, arrowOffset, tooltipPosition]);
265
253
  const control = children !== undefined ? children : defaultControl;
@@ -295,9 +283,11 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
295
283
  onPress: close,
296
284
  children: /*#__PURE__*/_jsxs(View, {
297
285
  ref: ref,
298
- style: [staticStyles.tooltip, selectTooltipShadowStyles(themeTokens), // applied separately so that it doesn't cover the arrow
286
+ style: [staticStyles.tooltip, selectTooltipShadowStyles(themeTokens),
287
+ // applied separately so that it doesn't cover the arrow
299
288
  tooltipPosition && selectTooltipPositionStyles(tooltipPosition), (tooltipPosition === null || (tooltipPosition === null || tooltipPosition === void 0 ? void 0 : tooltipPosition.isNormalized)) && staticStyles.tooltipHidden // visually hide the tooltip until we have a final measurement
300
289
  ],
290
+
301
291
  onLayout: onTooltipLayout,
302
292
  accessibilityRole: "alert",
303
293
  children: [/*#__PURE__*/_jsx(View, {
@@ -314,7 +304,8 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
314
304
  });
315
305
  });
316
306
  Tooltip.displayName = 'NativeTooltip';
317
- Tooltip.propTypes = { ...selectedSystemPropTypes,
307
+ Tooltip.propTypes = {
308
+ ...selectedSystemPropTypes,
318
309
  ...propTypes
319
310
  };
320
311
  export default Tooltip;
@@ -6,48 +6,42 @@ function normalizePosition(position) {
6
6
  top,
7
7
  width,
8
8
  ...rest
9
- } = position; // adjust the coordinates so that it fits within the window
9
+ } = position;
10
10
 
11
+ // adjust the coordinates so that it fits within the window
11
12
  const normalized = {
12
13
  left: Math.max(0, left),
13
14
  right: Math.max(0, right),
14
15
  top: Math.max(0, top),
15
16
  bottom // since it's ok the make the document grow downwards - no need to normalize here
16
-
17
17
  };
18
18
 
19
- const getAbsoluteDiff = (value1, value2) => Math.abs(Math.abs(value1) - Math.abs(value2)); // adjust the width by whatever has been subtracted from left or right
20
-
19
+ const getAbsoluteDiff = (value1, value2) => Math.abs(Math.abs(value1) - Math.abs(value2));
21
20
 
21
+ // adjust the width by whatever has been subtracted from left or right
22
22
  normalized.width = width - Math.abs(getAbsoluteDiff(left, normalized.left) - getAbsoluteDiff(right, normalized.right));
23
-
24
23
  if (normalized.top !== top) {
25
24
  normalized.bottom += normalized.top - top;
26
25
  }
27
-
28
26
  const isNormalized = normalized.right !== right || normalized.left !== left || normalized.top !== top;
29
- return { ...normalized,
27
+ return {
28
+ ...normalized,
30
29
  ...rest,
31
30
  isNormalized
32
31
  };
33
32
  }
34
-
35
33
  function invertPosition(position) {
36
34
  switch (position) {
37
35
  case 'above':
38
36
  return 'below';
39
-
40
37
  case 'below':
41
38
  return 'above';
42
-
43
39
  case 'left':
44
40
  return 'right';
45
-
46
41
  default:
47
42
  return 'left';
48
43
  }
49
44
  }
50
-
51
45
  function findRectByPosition(position, rectsArray) {
52
46
  return rectsArray.find(_ref => {
53
47
  let {
@@ -56,6 +50,7 @@ function findRectByPosition(position, rectsArray) {
56
50
  return rectPosition === position;
57
51
  });
58
52
  }
53
+
59
54
  /**
60
55
  * Used for absolute positioning of the tooltip. Since the tooltip is always centered relatively
61
56
  * to the control (button) and we have a limited set of positions, an easy and consistent way
@@ -64,8 +59,6 @@ function findRectByPosition(position, rectsArray) {
64
59
  * before it is shown, which makes it account for the width being limiting in styles, custom font
65
60
  * rendering, etc.
66
61
  */
67
-
68
-
69
62
  function getTooltipPosition(position, _ref2) {
70
63
  let {
71
64
  controlLayout,
@@ -96,8 +89,9 @@ function getTooltipPosition(position, _ref2) {
96
89
  const verticalBounds = {
97
90
  top: controlY,
98
91
  bottom: windowHeight - (controlY + controlHeight / 2 + tooltipHeight / 2)
99
- }; // calculate absolute coordinates for each of the potential positions (relative to window)
92
+ };
100
93
 
94
+ // calculate absolute coordinates for each of the potential positions (relative to window)
101
95
  const boundingRects = [{
102
96
  position: 'above',
103
97
  ...horizontalBounds,
@@ -121,42 +115,44 @@ function getTooltipPosition(position, _ref2) {
121
115
  }].map(rect => {
122
116
  // an absolute value representing how much of the tooltip is overflowing the window on each side
123
117
  const windowOverflow = Math.abs(Math.min(rect.top, 0) - Math.min(rect.left, 0) - Math.min(rect.right, 0) - Math.min(rect.bottom, 0));
124
- return { ...rect,
118
+ return {
119
+ ...rect,
125
120
  ...tooltipDimensions,
126
121
  overflow: windowOverflow,
127
122
  isNormalized: false
128
123
  };
129
- }); // the 'position' prop overrides the automatic positioning
124
+ });
130
125
 
126
+ // the 'position' prop overrides the automatic positioning
131
127
  if (position !== 'auto') {
132
- let rect = findRectByPosition(position, boundingRects); // check if the suggested 'position' fits in window
128
+ let rect = findRectByPosition(position, boundingRects);
133
129
 
130
+ // check if the suggested 'position' fits in window
134
131
  if (rect.overflow === 0) {
135
132
  return rect;
136
- } // otherwise try the inverted position (e.g. left -> right)
137
-
133
+ }
138
134
 
135
+ // otherwise try the inverted position (e.g. left -> right)
139
136
  rect = findRectByPosition(invertPosition(position), boundingRects);
140
-
141
137
  if (rect.overflow === 0) {
142
138
  return rect;
143
139
  }
144
140
  }
145
-
146
141
  const inWindow = boundingRects.filter(_ref3 => {
147
142
  let {
148
143
  overflow
149
144
  } = _ref3;
150
145
  return overflow === 0;
151
- }); // pick the first position that fits in window
152
- // (these are sorted clockwise which makes them show where one would expect them to be)
146
+ });
153
147
 
148
+ // pick the first position that fits in window
149
+ // (these are sorted clockwise which makes them show where one would expect them to be)
154
150
  if (inWindow.length > 0) {
155
151
  return inWindow[0];
156
- } // if all positions would end up being out of window bounds, let's pick the one that is
157
- // the least overflowing and normalize its position to fit within window bounds
158
-
152
+ }
159
153
 
154
+ // if all positions would end up being out of window bounds, let's pick the one that is
155
+ // the least overflowing and normalize its position to fit within window bounds
160
156
  boundingRects.sort((_ref4, _ref5) => {
161
157
  let {
162
158
  overflow: overflowA
@@ -166,10 +162,10 @@ function getTooltipPosition(position, _ref2) {
166
162
  } = _ref5;
167
163
  return overflowA - overflowB;
168
164
  });
169
- const leastOverflowing = boundingRects[0]; // prefer 'below' over 'above', since we can always expand the document downwards,
170
- // and 'above' might cause issues on small viewports with large tooltips
165
+ const leastOverflowing = boundingRects[0];
171
166
 
167
+ // prefer 'below' over 'above', since we can always expand the document downwards,
168
+ // and 'above' might cause issues on small viewports with large tooltips
172
169
  return normalizePosition(leastOverflowing.position === 'above' ? findRectByPosition('below', boundingRects) : leastOverflowing);
173
170
  }
174
-
175
171
  export default getTooltipPosition;
@@ -6,32 +6,26 @@ const propTypes = {
6
6
  * pressable state and tooltip variant as an argument.
7
7
  */
8
8
  children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
9
-
10
9
  /**
11
10
  * The message. Can be raw text or text components.
12
11
  */
13
12
  content: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
14
-
15
13
  /**
16
14
  * Select English or French copy for the accessible label.
17
15
  */
18
16
  copy: PropTypes.oneOf(['en', 'fr']),
19
-
20
17
  /**
21
18
  * Use to place the tooltip in a specific location (only if it fits within viewport).
22
19
  */
23
20
  position: PropTypes.oneOf(['auto', 'above', 'right', 'below', 'left']),
24
-
25
21
  /**
26
22
  * Display tooltip icon button as an inline element.
27
23
  */
28
24
  inline: PropTypes.bool,
29
-
30
25
  /**
31
26
  * Callback function triggered when the tooltip is pressed.
32
27
  */
33
28
  onPress: PropTypes.func,
34
-
35
29
  /**
36
30
  * The `id` of the tooltip button.
37
31
  */