@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
@@ -1,9 +1,7 @@
1
1
  import React from 'react';
2
2
  import AppRegistry from "react-native-web/dist/exports/AppRegistry";
3
3
  /** @typedef {import('react').ComponentType} ReactComponent */
4
-
5
4
  /** @typedef {import('react').ReactElement} ReactElement */
6
-
7
5
  /**
8
6
  * Returns object with `renderApp` and `getStyles` functions.
9
7
  * Weave these into your app's server-side render process:
@@ -19,7 +17,6 @@ import AppRegistry from "react-native-web/dist/exports/AppRegistry";
19
17
  * @param {boolean} [options.styleGetters]
20
18
  * @param {(ReactElement) => ReactElement} [options.collectStyles]
21
19
  */
22
-
23
20
  import { jsx as _jsx } from "react/jsx-runtime";
24
21
  export const ssrStyles = function () {
25
22
  let appName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'UDS app';
@@ -48,8 +45,8 @@ export const ssrStyles = function () {
48
45
  renderedByRNW = false,
49
46
  WrapperComponent
50
47
  } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
51
- AppRegistry.registerComponent(appName, () => App); // AppRegistry.getApplication renders the app in a container, and collects styles.
52
-
48
+ AppRegistry.registerComponent(appName, () => App);
49
+ // AppRegistry.getApplication renders the app in a container, and collects styles.
53
50
  const {
54
51
  element,
55
52
  getStyleElement
@@ -57,33 +54,32 @@ export const ssrStyles = function () {
57
54
  WrapperComponent,
58
55
  initialProps: props
59
56
  });
60
- let renderedApp = // React Native Web's AppRegistry.getApplication assumes the app is rendered using
57
+ let renderedApp =
58
+ // React Native Web's AppRegistry.getApplication assumes the app is rendered using
61
59
  // AppRegistry.runApplication and wraps it in <AppContainer>, which wraps the entire app
62
60
  // in two outer containers resembling <View style={{ flex: 1 }} pointerEvents="box-none">.
63
61
  // So, use that IF user says AppRegistry.runApplication will do the client-side render.
64
- renderedByRNW && element || // If the live app is not rendered using AppRegistry.runApplication, we need to
62
+ renderedByRNW && element ||
63
+ // If the live app is not rendered using AppRegistry.runApplication, we need to
65
64
  // re-render it without the <AppContainer> wrapper, to avoid SSR mismatch errors.
66
65
  // Default to this as many platforms (e.g. NextJS) will use their own renderers.
67
66
  WrapperComponent ? /*#__PURE__*/_jsx(WrapperComponent, {
68
- children: /*#__PURE__*/_jsx(App, { ...props
67
+ children: /*#__PURE__*/_jsx(App, {
68
+ ...props
69
69
  })
70
- }) : /*#__PURE__*/_jsx(App, { ...props
70
+ }) : /*#__PURE__*/_jsx(App, {
71
+ ...props
71
72
  });
72
-
73
73
  const getRNWStyle = () => getStyleElement({
74
74
  key: 'react-native-stylesheet'
75
75
  });
76
-
77
76
  styleGetters.push(getRNWStyle);
78
-
79
77
  if (typeof collectStyles === 'function') {
80
78
  renderedApp = collectStyles(renderedApp);
81
79
  }
82
-
83
80
  hasAppRendered = true;
84
81
  return renderedApp;
85
82
  },
86
-
87
83
  /**
88
84
  * Turns styles collected during renderApp into an array of React elements of
89
85
  * HTML <style> tags ready for insertion into the SSR HTML's <head>.
@@ -95,16 +91,15 @@ export const ssrStyles = function () {
95
91
  */
96
92
  getStyles: function () {
97
93
  if (!hasAppRendered) throw new Error('Called getStyles before renderApp in ssrStyles');
98
-
99
94
  for (var _len = arguments.length, existingStyles = new Array(_len), _key = 0; _key < _len; _key++) {
100
95
  existingStyles[_key] = arguments[_key];
101
96
  }
102
-
103
97
  return [...existingStyles, ...styleGetters.flatMap(getter => getter())];
104
98
  }
105
99
  };
106
100
  };
107
101
  export default ssrStyles;
102
+
108
103
  /**
109
104
  * @deprecated - use ssrStyles instead
110
105
  *
@@ -124,6 +119,7 @@ export const getReactNativeWebSSRStyles = function (AppRoot) {
124
119
  } = AppRegistry.getApplication(appName);
125
120
  return [getStyleElement()];
126
121
  };
122
+
127
123
  /**
128
124
  * @deprecated - use ssrStyles instead
129
125
  *
@@ -135,10 +131,10 @@ export const getReactNativeWebSSRStyles = function (AppRoot) {
135
131
  * @param {ReactElement[]} [existingStyles]
136
132
  * @returns {ReactElement[]}
137
133
  */
138
-
139
134
  export const getSSRStyles = function (AppRoot) {
140
135
  let appName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'app';
141
136
  let existingStyles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
142
- return [...existingStyles, ...getReactNativeWebSSRStyles(AppRoot, appName) // if any other CSS-in-JS is added e.g. styled-components generate and add its styles here
137
+ return [...existingStyles, ...getReactNativeWebSSRStyles(AppRoot, appName)
138
+ // if any other CSS-in-JS is added e.g. styled-components generate and add its styles here
143
139
  ];
144
140
  };
@@ -1,4 +1,5 @@
1
1
  export const DEFAULT_COPY = 'en';
2
+
2
3
  /**
3
4
  * Extract translations from a keyed dictionary for a given language.
4
5
  * Returns a getter.
@@ -26,19 +27,16 @@ export const DEFAULT_COPY = 'en';
26
27
  * @param {'en'|'fr'|object} copy - language
27
28
  * @return {function(string): string}
28
29
  */
29
-
30
30
  function useCopy(_ref) {
31
31
  let {
32
32
  dictionary,
33
33
  copy = DEFAULT_COPY
34
34
  } = _ref;
35
-
36
35
  if (typeof copy === 'string') {
37
36
  return key => key ? dictionary[copy][key] : dictionary[copy];
38
- } // support overriding the entire copy dictionary with an object for a single language
39
-
37
+ }
40
38
 
39
+ // support overriding the entire copy dictionary with an object for a single language
41
40
  return key => copy[key];
42
41
  }
43
-
44
42
  export default useCopy;
@@ -1,10 +1,9 @@
1
1
  import { useEffect, useState } from 'react';
2
-
3
2
  const doAction = (action, event) => {
4
3
  var _window, _window$location;
5
-
6
4
  return typeof action === 'function' && action((_window = window) === null || _window === void 0 ? void 0 : (_window$location = _window.location) === null || _window$location === void 0 ? void 0 : _window$location.hash, event);
7
5
  };
6
+
8
7
  /**
9
8
  * @typedef {import('react').SyntheticEvent} SyntheticEvent
10
9
  */
@@ -20,26 +19,23 @@ const doAction = (action, event) => {
20
19
  * @param {(hash: string, event?: SyntheticEvent) => void} action - a function to act on the current hash on load and when it changes
21
20
  * @returns
22
21
  */
23
-
24
-
25
22
  const useHash = function (action) {
26
23
  let isReady = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
27
- const [isDone, setIsDone] = useState(false); // Do the action just once when ready after component mount, from hash on page load
28
-
24
+ const [isDone, setIsDone] = useState(false);
25
+ // Do the action just once when ready after component mount, from hash on page load
29
26
  const isToDo = isReady && !isDone;
30
27
  useEffect(() => {
31
28
  if (isToDo) {
32
29
  setIsDone(true);
33
30
  doAction(action);
34
31
  }
35
- }, [isToDo, action]); // Bind the action for each hash change; do re-bind if the function changes.
32
+ }, [isToDo, action]);
36
33
 
34
+ // Bind the action for each hash change; do re-bind if the function changes.
37
35
  useEffect(() => {
38
36
  const handleChange = event => doAction(action, event);
39
-
40
37
  window.addEventListener('hashchange', handleChange);
41
38
  return () => window.removeEventListener('hashchange', handleChange);
42
39
  }, [action]);
43
40
  };
44
-
45
41
  export default useHash;
@@ -3,5 +3,4 @@
3
3
  * is handled at OS level and deep links have completely different usage.
4
4
  */
5
5
  const useHash = () => {};
6
-
7
6
  export default useHash;
@@ -1,7 +1,6 @@
1
1
  import { useCallback, useEffect, useRef, useState } from 'react';
2
2
  import Dimensions from "react-native-web/dist/exports/Dimensions";
3
3
  import Platform from "react-native-web/dist/exports/Platform";
4
-
5
4
  const adjustHorizontalToFit = (initialOffset, windowWidth, sourceWidth) => {
6
5
  const offset = Math.max(0, initialOffset);
7
6
  const otherEdgeOverflow = Math.max(0, offset + sourceWidth - windowWidth);
@@ -12,34 +11,29 @@ const adjustHorizontalToFit = (initialOffset, windowWidth, sourceWidth) => {
12
11
  if (tooWideBy) adjusted.width = Math.max(0, sourceWidth - tooWideBy);
13
12
  return adjusted;
14
13
  };
15
-
16
14
  const getPosition = _ref => {
17
15
  let {
18
16
  edge,
19
17
  fromEdge,
20
18
  sourceSize
21
19
  } = _ref;
22
-
23
20
  switch (edge) {
24
21
  case 'near':
25
22
  return fromEdge;
26
-
27
23
  case 'mid':
28
24
  return fromEdge + sourceSize / 2;
29
-
30
25
  case 'far':
31
26
  return fromEdge + sourceSize;
32
-
33
27
  default:
34
28
  return 0;
35
29
  }
36
30
  };
37
-
38
31
  const getEdgeType = (align, alignSide) => {
39
32
  const alignTo = align[alignSide];
40
33
  const edge = ['center', 'middle'].includes(alignTo) && 'mid' || (alignSide === alignTo ? 'near' : 'far');
41
34
  return edge;
42
35
  };
36
+
43
37
  /**
44
38
  * Based on UDS's private getTooltipPosition but generalised.
45
39
  *
@@ -50,8 +44,6 @@ const getEdgeType = (align, alignSide) => {
50
44
  * before it is shown, which makes it account for the width being limiting in styles, custom font
51
45
  * rendering, etc.
52
46
  */
53
-
54
-
55
47
  function getOverlaidPosition(_ref2) {
56
48
  let {
57
49
  sourceLayout,
@@ -66,8 +58,9 @@ function getOverlaidPosition(_ref2) {
66
58
  const {
67
59
  scrollX = 0,
68
60
  scrollY = 0
69
- } = typeof window === 'object' ? window : {}; // Will have top, bottom, left and/or right offsets depending on `align`
61
+ } = typeof window === 'object' ? window : {};
70
62
 
63
+ // Will have top, bottom, left and/or right offsets depending on `align`
71
64
  const positioning = {};
72
65
  if (align.top) positioning.top = getPosition({
73
66
  edge: getEdgeType(align, 'top'),
@@ -99,20 +92,18 @@ function getOverlaidPosition(_ref2) {
99
92
  fromEdge: windowDimensions.width - (sourceLayout.x + scrollX + sourceLayout.width - (offsets.horizontal ?? 0)),
100
93
  sourceSize: sourceLayout.width
101
94
  });
102
-
103
95
  if (!(align.left && align.right)) {
104
96
  // Check if the position and/or width need adjusting to fit on the screen
105
97
  const side = align.right ? 'right' : 'left';
106
98
  const adjusted = adjustHorizontalToFit(positioning[side], windowDimensions.width, sourceLayout.width);
107
99
  if (typeof adjusted.width === 'number') positioning.width = adjusted.width;
108
-
109
100
  if (typeof adjusted.offset === 'number') {
110
101
  positioning[side] = adjusted.offset;
111
102
  }
112
103
  }
113
-
114
104
  return positioning;
115
105
  }
106
+
116
107
  /**
117
108
  * Positions an element in a modal or portal so that it appears tooltip-like below the
118
109
  * target element.
@@ -121,8 +112,6 @@ function getOverlaidPosition(_ref2) {
121
112
  * a small task because UDS's tooltip logic only really works for short text - it might be
122
113
  * better to use a third-party library).
123
114
  */
124
-
125
-
126
115
  const useOverlaidPosition = _ref3 => {
127
116
  let {
128
117
  isShown = false,
@@ -135,8 +124,9 @@ const useOverlaidPosition = _ref3 => {
135
124
  } = _ref3;
136
125
  // Element in main document flow that the targetRef element is positioned around
137
126
  const sourceRef = useRef(null);
138
- const [sourceLayout, setSourceLayout] = useState(null); // Element in a modal or portal overlay positioned to appear adjacent to sourceRef
127
+ const [sourceLayout, setSourceLayout] = useState(null);
139
128
 
129
+ // Element in a modal or portal overlay positioned to appear adjacent to sourceRef
140
130
  const targetRef = useRef(null);
141
131
  const [targetDimensions, setTargetDimensions] = useState(null);
142
132
  const [windowDimensions, setWindowDimensions] = useState(null);
@@ -161,7 +151,6 @@ const useOverlaidPosition = _ref3 => {
161
151
  height
162
152
  };
163
153
  }
164
-
165
154
  return previousDimensions;
166
155
  });
167
156
  }, []);
@@ -169,7 +158,6 @@ const useOverlaidPosition = _ref3 => {
169
158
  useEffect(() => {
170
159
  const handleDimensionsChange = _ref5 => {
171
160
  var _sourceRef$current;
172
-
173
161
  let {
174
162
  window
175
163
  } = _ref5;
@@ -184,12 +172,9 @@ const useOverlaidPosition = _ref3 => {
184
172
  });
185
173
  });
186
174
  };
187
-
188
175
  let subscription;
189
-
190
176
  const unsubscribe = () => {
191
177
  var _subscription;
192
-
193
178
  if (typeof ((_subscription = subscription) === null || _subscription === void 0 ? void 0 : _subscription.remove) === 'function') {
194
179
  // React Native >=0.65.0
195
180
  subscription.remove();
@@ -197,11 +182,9 @@ const useOverlaidPosition = _ref3 => {
197
182
  // React Native <0.65.0
198
183
  Dimensions.remove('change', handleDimensionsChange);
199
184
  }
200
-
201
185
  setSourceLayout(null);
202
186
  setTargetDimensions(null);
203
187
  };
204
-
205
188
  if (readyToShow) {
206
189
  subscription = Dimensions.addEventListener('change', handleDimensionsChange);
207
190
  handleDimensionsChange({
@@ -210,7 +193,6 @@ const useOverlaidPosition = _ref3 => {
210
193
  } else {
211
194
  unsubscribe();
212
195
  }
213
-
214
196
  return unsubscribe;
215
197
  }, [readyToShow]);
216
198
  const isReady = Boolean(isShown && sourceLayout && windowDimensions && targetDimensions);
@@ -229,5 +211,4 @@ const useOverlaidPosition = _ref3 => {
229
211
  isReady
230
212
  };
231
213
  };
232
-
233
214
  export default useOverlaidPosition;
@@ -1,8 +1,8 @@
1
1
  import { viewports } from '@telus-uds/system-constants';
2
2
  import { useViewport } from '../ViewportProvider';
3
3
  import hasOwnProperty from './hasOwnProperty';
4
-
5
4
  const hasResponsiveProperties = objectProp => viewports.keys.some(key => hasOwnProperty(objectProp, key));
5
+
6
6
  /**
7
7
  * Resolves a prop which may be a responsive object with keys for viewports.
8
8
  *
@@ -13,16 +13,17 @@ const hasResponsiveProperties = objectProp => viewports.keys.some(key => hasOwnP
13
13
  * @param {*} [defaultValue]
14
14
  * @returns {*}
15
15
  */
16
-
17
-
18
16
  export const resolveResponsiveProp = (prop, viewport, defaultValue) => {
19
17
  if (prop === undefined) return defaultValue;
20
18
  if (!prop || typeof prop !== 'object' || !hasResponsiveProperties(prop)) return prop;
21
- const value = viewports.keys.includes(viewport) ? // If there's a current viewport, return the closest match at or below it
22
- viewports.inherit(prop)[viewport] : // If no current viewport is available, default to smallest viewport
19
+ const value = viewports.keys.includes(viewport) ?
20
+ // If there's a current viewport, return the closest match at or below it
21
+ viewports.inherit(prop)[viewport] :
22
+ // If no current viewport is available, default to smallest viewport
23
23
  prop[viewports.keys.find(key => hasOwnProperty(prop, key))];
24
24
  return value === undefined ? defaultValue : value;
25
25
  };
26
+
26
27
  /**
27
28
  * Takes any value and, if that value is a responsive prop (an object with one or more
28
29
  * keys matching system viewport names), returns the value corresponding to the largest
@@ -37,10 +38,8 @@ export const resolveResponsiveProp = (prop, viewport, defaultValue) => {
37
38
  * @param {*} [defaultValue] - default value to provide if no matches found for the current viewport
38
39
  * @returns {*}
39
40
  */
40
-
41
41
  const useResponsiveProp = (prop, defaultValue) => {
42
42
  const viewport = useViewport();
43
43
  return resolveResponsiveProp(prop, viewport, defaultValue);
44
44
  };
45
-
46
45
  export default useResponsiveProp;
@@ -1,29 +1,27 @@
1
1
  import { useLayoutEffect, useCallback } from 'react';
2
2
  import { useHydrationContext } from '../BaseProvider/HydrationContext';
3
3
  const isSSR = typeof window === 'undefined';
4
-
5
4
  const noop = () => {};
5
+
6
6
  /**
7
7
  * useSafeLayoutEffect is a alternative to useLayoutEffect that avoids SSR hydration problems:
8
8
  * - In a client-side render, it uses useLayoutEffect to avoid flashing the pre-render UI to the user.
9
9
  * - During hydration from SSR, the provided function is skipped to avoid mismatches from server content.
10
10
  * - In SSR, it is a no-op function to avoid warnings about using useLayoutEffect in SSR
11
11
  */
12
-
13
-
14
12
  const useSafeLayoutEffect = isSSR ? noop // avoid React's fussy warnings by ensuring to never call useLayoutEffect on server
15
13
  : function (fn) {
16
14
  let deps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
17
- const isHydrating = useHydrationContext(); // Callback updates and effect re-runs when deps array content changes, like useEffect.
15
+ const isHydrating = useHydrationContext();
18
16
 
17
+ // Callback updates and effect re-runs when deps array content changes, like useEffect.
19
18
  /* eslint-disable-next-line react-hooks/exhaustive-deps */
20
-
21
19
  const callback = useCallback(fn, deps);
22
20
  useLayoutEffect(() => {
23
21
  // Do nothing before hydrating server-generated content, like useEffect. When hydration completes,
24
22
  // useHydrationContext provides false, re-rendering this hook and re-running the effect.
25
- if (isHydrating) return noop; // If there's no hydration in progress, behave like useLayoutEffect.
26
-
23
+ if (isHydrating) return noop;
24
+ // If there's no hydration in progress, behave like useLayoutEffect.
27
25
  return callback();
28
26
  }, [isHydrating, callback]);
29
27
  };
@@ -1,22 +1,19 @@
1
1
  import { useCallback, useEffect, useRef, useState } from 'react';
2
-
3
2
  const addScrollBlocking = (preventScrolling, stopPropagation, ref) => {
4
3
  var _ref$current;
5
-
6
4
  document.body.addEventListener('touchmove', preventScrolling, {
7
5
  passive: false
8
6
  });
9
7
  (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.addEventListener('touchmove', stopPropagation);
10
8
  document.body.style.overflow = 'hidden';
11
9
  };
12
-
13
10
  const removeScrollBlocking = (preventScrolling, stopPropagation, ref) => {
14
11
  var _ref$current2;
15
-
16
12
  document.body.removeEventListener('touchmove', preventScrolling);
17
13
  (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.removeEventListener('touchmove', stopPropagation);
18
14
  document.body.style.overflow = 'inherit';
19
15
  };
16
+
20
17
  /**
21
18
  * Disables scrolling when passed `true` or an array where all items are `true`.
22
19
  *
@@ -26,8 +23,6 @@ const removeScrollBlocking = (preventScrolling, stopPropagation, ref) => {
26
23
  * @param {boolean | boolean[]} conditionProps
27
24
  * @returns
28
25
  */
29
-
30
-
31
26
  const useScrollBlocking = conditionProps => {
32
27
  // useRef refs are null on first render and don't trigger a re-render when they get their
33
28
  // element. Force re-run when ref mounts to ensure the stopPropagation listener is attached.
@@ -42,17 +37,15 @@ const useScrollBlocking = conditionProps => {
42
37
  const stopPropagation = useCallback(event => event.stopPropagation(), []);
43
38
  useEffect(() => {
44
39
  const cleanup = () => removeScrollBlocking(preventScrolling, stopPropagation, ref);
45
-
46
40
  if (conditionsMet) {
47
41
  addScrollBlocking(preventScrolling, stopPropagation, ref);
48
42
  } else {
49
43
  cleanup();
50
44
  }
51
-
52
- return cleanup; // preventScrolling and stopPropagation are stable callbacks with no deps, so this
45
+ return cleanup;
46
+ // preventScrolling and stopPropagation are stable callbacks with no deps, so this
53
47
  // will re-run when conditionsMet or refIsMounted flip between true and false.
54
48
  }, [preventScrolling, conditionsMet, stopPropagation, refIsMounted]);
55
49
  return callbackRef;
56
50
  };
57
-
58
51
  export default useScrollBlocking;
@@ -16,7 +16,9 @@ const resolveSpacingOptions = space => {
16
16
  variant,
17
17
  subtract = 0
18
18
  } = space.options;
19
- const overridden = typeof size === 'number'; // Might need an option that adapts the size value by current user's system font scale, so that
19
+ const overridden = typeof size === 'number';
20
+
21
+ // Might need an option that adapts the size value by current user's system font scale, so that
20
22
  // meaningful spacing between items doesn't disappear on the highest a11y font scale settings.
21
23
  // https://github.com/telus/universal-design-system/issues/583
22
24
 
@@ -29,6 +31,7 @@ const resolveSpacingOptions = space => {
29
31
  subtract
30
32
  };
31
33
  };
34
+
32
35
  /**
33
36
  * Pass a {@link SpacingValue}, which is one of:
34
37
  *
@@ -98,8 +101,6 @@ const resolveSpacingOptions = space => {
98
101
  * @param {SpacingValue} [spaceValue] - a {@link SpacingIndex} number, or a {@link SpacingObject}
99
102
  * @returns {number}
100
103
  */
101
-
102
-
103
104
  const useSpacingScale = spaceValue => {
104
105
  // In future, may need to consider window height as well as width, particularly for native apps,
105
106
  // e.g. to ensure designs don't look lost on large, tall, not-so-wide portrait screens.
@@ -119,5 +120,4 @@ const useSpacingScale = spaceValue => {
119
120
  });
120
121
  return Math.max(size - subtract, 0);
121
122
  };
122
-
123
123
  export default useSpacingScale;
@@ -1,6 +1,5 @@
1
1
  import { useState } from 'react';
2
2
  let id = 0;
3
-
4
3
  function useUniqueId() {
5
4
  let prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
6
5
  const [uniqueId] = useState(() => {
@@ -9,5 +8,4 @@ function useUniqueId() {
9
8
  });
10
9
  return uniqueId;
11
10
  }
12
-
13
11
  export default useUniqueId;
@@ -1,6 +1,7 @@
1
1
  import React, { forwardRef } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import hasOwnProperty from './hasOwnProperty';
4
+
4
5
  /**
5
6
  * Higher-order component that has no effect unless an additional prop `LinkRouter` is passed.
6
7
  * This may be used to provide custom wrappers for integrations with third party libraries.
@@ -29,9 +30,7 @@ import hasOwnProperty from './hasOwnProperty';
29
30
  * <IconButton icon={SomeIcon} LinkRouter={LinkLinkRouter} linkRouterProps={{ to, options }} ref={iconRef} />
30
31
  * ```
31
32
  */
32
-
33
33
  import { jsx as _jsx } from "react/jsx-runtime";
34
-
35
34
  const withLinkRouter = Component => {
36
35
  const wrappedComponent = /*#__PURE__*/forwardRef((_ref, ref) => {
37
36
  let {
@@ -39,7 +38,8 @@ const withLinkRouter = Component => {
39
38
  linkRouterProps,
40
39
  ...props
41
40
  } = _ref;
42
- if (!LinkRouter) return /*#__PURE__*/_jsx(Component, { ...props,
41
+ if (!LinkRouter) return /*#__PURE__*/_jsx(Component, {
42
+ ...props,
43
43
  ref: ref
44
44
  });
45
45
  return /*#__PURE__*/_jsx(LinkRouter, {
@@ -48,23 +48,27 @@ const withLinkRouter = Component => {
48
48
  ref: ref,
49
49
  ...props
50
50
  });
51
- }); // Ensure the returned component has appropriate outer properties set:
51
+ });
52
52
 
53
+ // Ensure the returned component has appropriate outer properties set:
53
54
  /* eslint-disable-next-line react/forbid-foreign-prop-types */
54
-
55
55
  const {
56
56
  displayName,
57
57
  name,
58
58
  propTypes,
59
59
  ...otherProperties
60
- } = Component; // Apply unique component name as a displayName
60
+ } = Component;
61
61
 
62
- wrappedComponent.displayName = Component.displayName || Component.name; // Apply proptypes including wrapper props - is safely { ...undefined, ...undefined } in prod
62
+ // Apply unique component name as a displayName
63
+ wrappedComponent.displayName = Component.displayName || Component.name;
63
64
 
64
- wrappedComponent.propTypes = { ...Component.propTypes,
65
+ // Apply proptypes including wrapper props - is safely { ...undefined, ...undefined } in prod
66
+ wrappedComponent.propTypes = {
67
+ ...Component.propTypes,
65
68
  ...withLinkRouter.propTypes
66
- }; // Forward any other properties explicitly set e.g. Component.SubComponent
69
+ };
67
70
 
71
+ // Forward any other properties explicitly set e.g. Component.SubComponent
68
72
  Object.keys(otherProperties).forEach(key => {
69
73
  // Skip internal React properties from wrappedComponent's forwardRef (render, $$typeof, etc)
70
74
  if (hasOwnProperty(Component, key) && !hasOwnProperty(wrappedComponent, key)) {
@@ -73,7 +77,6 @@ const withLinkRouter = Component => {
73
77
  });
74
78
  return wrappedComponent;
75
79
  };
76
-
77
80
  withLinkRouter.propTypes = {
78
81
  LinkRouter: PropTypes.elementType,
79
82
  linkRouterProps: PropTypes.object
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "@floating-ui/react-native": "^0.8.1",
12
12
  "@gorhom/portal": "^1.0.14",
13
13
  "@telus-uds/system-constants": "^1.3.0",
14
- "@telus-uds/system-theme-tokens": "^2.42.0",
14
+ "@telus-uds/system-theme-tokens": "^2.44.0",
15
15
  "airbnb-prop-types": "^2.16.0",
16
16
  "lodash.debounce": "^4.0.8",
17
17
  "lodash.merge": "^4.6.2",
@@ -73,5 +73,5 @@
73
73
  "standard-engine": {
74
74
  "skip": true
75
75
  },
76
- "version": "1.65.0"
76
+ "version": "1.67.0"
77
77
  }