@telus-uds/components-base 1.7.1 → 1.8.2

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 (509) hide show
  1. package/CHANGELOG.md +41 -2
  2. package/component-docs.json +944 -691
  3. package/lib/A11yInfoProvider/index.js +4 -3
  4. package/lib/A11yText/index.js +6 -5
  5. package/lib/ActivityIndicator/Spinner.js +7 -6
  6. package/lib/ActivityIndicator/Spinner.native.js +8 -6
  7. package/lib/ActivityIndicator/index.js +6 -5
  8. package/lib/ActivityIndicator/shared.js +1 -1
  9. package/lib/BaseProvider/index.js +13 -10
  10. package/lib/Box/Box.js +20 -19
  11. package/lib/Button/Button.js +7 -6
  12. package/lib/Button/ButtonBase.js +95 -77
  13. package/lib/Button/ButtonGroup.js +140 -65
  14. package/lib/Button/ButtonLink.js +9 -7
  15. package/lib/Button/index.js +4 -4
  16. package/lib/Button/propTypes.js +1 -1
  17. package/lib/Card/Card.js +8 -7
  18. package/lib/Card/CardBase.js +35 -31
  19. package/lib/Card/PressableCardBase.js +14 -12
  20. package/lib/Checkbox/Checkbox.js +96 -82
  21. package/lib/Checkbox/CheckboxGroup.js +30 -28
  22. package/lib/Checkbox/CheckboxInput.js +12 -10
  23. package/lib/Divider/Divider.js +8 -7
  24. package/lib/ExpandCollapse/Control.js +42 -36
  25. package/lib/ExpandCollapse/ExpandCollapse.js +11 -10
  26. package/lib/ExpandCollapse/Panel.js +29 -24
  27. package/lib/Feedback/Feedback.js +48 -35
  28. package/lib/Fieldset/Fieldset.js +22 -14
  29. package/lib/Fieldset/FieldsetContainer.js +16 -13
  30. package/lib/Fieldset/FieldsetContainer.native.js +11 -8
  31. package/lib/Fieldset/Legend.js +10 -7
  32. package/lib/Fieldset/Legend.native.js +10 -7
  33. package/lib/FlexGrid/Col/Col.js +17 -16
  34. package/lib/FlexGrid/FlexGrid.js +15 -14
  35. package/lib/FlexGrid/Row/Row.js +13 -12
  36. package/lib/HorizontalScroll/HorizontalScroll.js +25 -20
  37. package/lib/HorizontalScroll/HorizontalScrollButton.js +18 -14
  38. package/lib/HorizontalScroll/ScrollViewEnd.js +6 -5
  39. package/lib/HorizontalScroll/ScrollViewEnd.native.js +12 -9
  40. package/lib/HorizontalScroll/itemPositions.js +19 -13
  41. package/lib/Icon/Icon.js +10 -9
  42. package/lib/Icon/IconText.js +8 -7
  43. package/lib/Icon/index.js +5 -5
  44. package/lib/IconButton/IconButton.js +50 -42
  45. package/lib/InputLabel/InputLabel.js +44 -30
  46. package/lib/InputLabel/LabelContent.js +12 -9
  47. package/lib/InputLabel/LabelContent.native.js +9 -6
  48. package/lib/InputSupports/InputSupports.js +17 -9
  49. package/lib/InputSupports/useInputSupports.js +7 -6
  50. package/lib/Link/ChevronLink.js +9 -8
  51. package/lib/Link/InlinePressable.js +13 -10
  52. package/lib/Link/InlinePressable.native.js +20 -16
  53. package/lib/Link/Link.js +10 -9
  54. package/lib/Link/LinkBase.js +96 -78
  55. package/lib/Link/TextButton.js +9 -8
  56. package/lib/List/List.js +9 -7
  57. package/lib/List/ListItem.js +99 -74
  58. package/lib/Modal/Modal.js +72 -59
  59. package/lib/Notification/Notification.js +47 -34
  60. package/lib/Pagination/PageButton.js +11 -10
  61. package/lib/Pagination/Pagination.js +39 -28
  62. package/lib/Pagination/SideButton.js +21 -18
  63. package/lib/Pagination/usePagination.js +5 -4
  64. package/lib/Progress/Progress.js +23 -19
  65. package/lib/Progress/ProgressBar.js +23 -19
  66. package/lib/Progress/ProgressBarBackground.js +4 -3
  67. package/lib/Radio/Radio.js +79 -68
  68. package/lib/Radio/RadioButton.js +63 -53
  69. package/lib/Radio/RadioGroup.js +39 -30
  70. package/lib/Radio/RadioInput.js +12 -10
  71. package/lib/RadioCard/RadioCard.js +15 -14
  72. package/lib/RadioCard/RadioCardGroup.js +34 -25
  73. package/lib/Search/Search.js +52 -32
  74. package/lib/Select/Group.js +5 -4
  75. package/lib/Select/Group.native.js +4 -3
  76. package/lib/Select/Item.js +10 -7
  77. package/lib/Select/Item.native.js +1 -9
  78. package/lib/Select/Picker.js +16 -15
  79. package/lib/Select/Picker.native.js +49 -38
  80. package/lib/Select/Select.js +134 -113
  81. package/lib/SideNav/Item.js +39 -33
  82. package/lib/SideNav/ItemContent.js +15 -12
  83. package/lib/SideNav/ItemsGroup.js +13 -11
  84. package/lib/SideNav/SideNav.js +19 -16
  85. package/lib/Skeleton/Skeleton.js +106 -44
  86. package/lib/Skeleton/skeleton.constant.js +1 -1
  87. package/lib/Spacer/Spacer.js +6 -5
  88. package/lib/StackView/StackView.js +12 -11
  89. package/lib/StackView/StackWrap.js +2 -2
  90. package/lib/StackView/StackWrapBox.js +12 -11
  91. package/lib/StackView/StackWrapGap.js +11 -10
  92. package/lib/StackView/common.js +14 -11
  93. package/lib/StackView/getStackedContent.js +8 -7
  94. package/lib/StackView/index.js +1 -1
  95. package/lib/StepTracker/Step.js +122 -103
  96. package/lib/StepTracker/StepTracker.js +48 -38
  97. package/lib/Tabs/Tabs.js +29 -24
  98. package/lib/Tabs/TabsItem.js +79 -68
  99. package/lib/Tags/Tags.js +67 -61
  100. package/lib/TextInput/TextArea.js +26 -20
  101. package/lib/TextInput/TextInput.js +20 -15
  102. package/lib/TextInput/TextInputBase.js +74 -62
  103. package/lib/TextInput/index.js +4 -4
  104. package/lib/ThemeProvider/ThemeProvider.js +6 -5
  105. package/lib/ThemeProvider/index.js +5 -5
  106. package/lib/ThemeProvider/useSetTheme.js +6 -3
  107. package/lib/ThemeProvider/useThemeTokens.js +7 -2
  108. package/lib/ThemeProvider/utils/styles.js +48 -41
  109. package/lib/ThemeProvider/utils/theme-tokens.js +26 -12
  110. package/lib/ToggleSwitch/ToggleSwitch.js +95 -72
  111. package/lib/ToggleSwitch/ToggleSwitchGroup.js +42 -33
  112. package/lib/Tooltip/Backdrop.js +4 -3
  113. package/lib/Tooltip/Backdrop.native.js +5 -4
  114. package/lib/Tooltip/Tooltip.js +82 -66
  115. package/lib/Tooltip/getTooltipPosition.js +29 -18
  116. package/lib/TooltipButton/TooltipButton.js +28 -21
  117. package/lib/Typography/Typography.js +37 -33
  118. package/lib/ViewportProvider/ViewportProvider.js +4 -3
  119. package/lib/ViewportProvider/useViewportListener.js +6 -3
  120. package/lib/index.js +54 -54
  121. package/lib/utils/a11y/semantics.js +5 -2
  122. package/lib/utils/a11y/textSize.js +8 -6
  123. package/lib/utils/animation/useVerticalExpandAnimation.js +32 -18
  124. package/lib/utils/children.js +2 -1
  125. package/lib/utils/index.js +10 -10
  126. package/lib/utils/input.js +22 -17
  127. package/lib/utils/pressability.js +36 -22
  128. package/lib/utils/props/clickProps.js +2 -1
  129. package/lib/utils/props/getPropSelector.js +6 -3
  130. package/lib/utils/props/handlerProps.js +25 -19
  131. package/lib/utils/props/hrefAttrsProp.js +14 -11
  132. package/lib/utils/props/index.js +12 -12
  133. package/lib/utils/props/inputSupportsProps.js +21 -11
  134. package/lib/utils/props/linkProps.js +7 -6
  135. package/lib/utils/props/pressProps.js +1 -1
  136. package/lib/utils/props/tokens.js +27 -13
  137. package/lib/utils/ssr.js +6 -2
  138. package/lib/utils/useCopy.js +6 -4
  139. package/lib/utils/useHash.js +2 -1
  140. package/lib/utils/useResponsiveProp.js +1 -1
  141. package/lib/utils/useUniqueId.js +2 -1
  142. package/lib/utils/withLinkRouter.js +6 -5
  143. package/package.json +18 -12
  144. package/src/Button/ButtonGroup.jsx +106 -41
  145. package/src/Checkbox/Checkbox.jsx +7 -4
  146. package/src/Checkbox/CheckboxGroup.jsx +3 -3
  147. package/src/ExpandCollapse/Panel.jsx +3 -1
  148. package/src/Fieldset/Fieldset.jsx +6 -0
  149. package/src/InputLabel/InputLabel.jsx +17 -2
  150. package/src/InputSupports/InputSupports.jsx +9 -1
  151. package/src/Notification/Notification.jsx +1 -1
  152. package/src/Pagination/Pagination.jsx +3 -0
  153. package/src/Radio/Radio.jsx +5 -1
  154. package/src/Radio/RadioGroup.jsx +11 -5
  155. package/src/RadioCard/RadioCard.jsx +5 -1
  156. package/src/RadioCard/RadioCardGroup.jsx +6 -0
  157. package/src/Search/Search.jsx +12 -1
  158. package/src/Select/Item.native.jsx +0 -7
  159. package/src/Skeleton/Skeleton.jsx +56 -3
  160. package/src/ToggleSwitch/ToggleSwitch.jsx +6 -0
  161. package/src/ToggleSwitch/ToggleSwitchGroup.jsx +6 -0
  162. package/src/Tooltip/Tooltip.jsx +1 -1
  163. package/src/utils/animation/useVerticalExpandAnimation.js +25 -12
  164. package/src/utils/props/inputSupportsProps.js +6 -1
  165. package/src/utils/props/tokens.js +21 -19
  166. package/.storybook/main.js +0 -4
  167. package/.storybook/preview.js +0 -37
  168. package/.turbo/turbo-build.log +0 -8
  169. package/.turbo/turbo-lint.log +0 -13
  170. package/CHANGELOG.json +0 -250
  171. package/__fixtures__/Accessible.js +0 -35
  172. package/__fixtures__/Accessible.native.js +0 -35
  173. package/__fixtures__/Theme.jsx +0 -13
  174. package/__fixtures__/Viewport.jsx +0 -17
  175. package/__fixtures__/test-utils.js +0 -25
  176. package/__fixtures__/testTheme.js +0 -1830
  177. package/__tests__/A11yText/A11yText.test.jsx +0 -34
  178. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +0 -68
  179. package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +0 -287
  180. package/__tests__/Box/Box.test.jsx +0 -111
  181. package/__tests__/Button/Button.test.jsx +0 -86
  182. package/__tests__/Button/ButtonBase.test.jsx +0 -82
  183. package/__tests__/Button/ButtonGroup.test.jsx +0 -347
  184. package/__tests__/Button/ButtonLink.test.jsx +0 -61
  185. package/__tests__/Card/Card.test.jsx +0 -63
  186. package/__tests__/Checkbox/Checkbox.test.jsx +0 -94
  187. package/__tests__/Checkbox/CheckboxGroup.test.jsx +0 -246
  188. package/__tests__/Divider/Divider.test.jsx +0 -91
  189. package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +0 -109
  190. package/__tests__/Feedback/Feedback.test.jsx +0 -42
  191. package/__tests__/FlexGrid/Col.test.jsx +0 -256
  192. package/__tests__/FlexGrid/FlexGrid.test.jsx +0 -136
  193. package/__tests__/FlexGrid/Row.test.jsx +0 -273
  194. package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +0 -165
  195. package/__tests__/Icon/Icon.test.jsx +0 -61
  196. package/__tests__/IconButton/IconButton.test.jsx +0 -52
  197. package/__tests__/InputSupports/InputSupports.test.jsx +0 -50
  198. package/__tests__/Link/Link.test.jsx +0 -63
  199. package/__tests__/Link/TextButton.test.jsx +0 -35
  200. package/__tests__/List/List.test.jsx +0 -60
  201. package/__tests__/Modal/Modal.test.jsx +0 -47
  202. package/__tests__/Notification/Notification.test.jsx +0 -20
  203. package/__tests__/Pagination/Pagination.test.jsx +0 -160
  204. package/__tests__/Progress/Progress.test.jsx +0 -79
  205. package/__tests__/Radio/Radio.test.jsx +0 -87
  206. package/__tests__/Radio/RadioGroup.test.jsx +0 -220
  207. package/__tests__/RadioCard/RadioCard.test.jsx +0 -87
  208. package/__tests__/RadioCard/RadioCardGroup.test.jsx +0 -246
  209. package/__tests__/Search/Search.test.jsx +0 -73
  210. package/__tests__/Select/Select.test.jsx +0 -94
  211. package/__tests__/SideNav/SideNav.test.jsx +0 -110
  212. package/__tests__/Skeleton/Skeleton.test.jsx +0 -61
  213. package/__tests__/Spacer/Spacer.test.jsx +0 -63
  214. package/__tests__/StackView/StackView.test.jsx +0 -216
  215. package/__tests__/StackView/StackWrap.test.jsx +0 -47
  216. package/__tests__/StackView/getStackedContent.test.jsx +0 -295
  217. package/__tests__/StepTracker/StepTracker.test.jsx +0 -94
  218. package/__tests__/Tabs/Tabs.test.jsx +0 -40
  219. package/__tests__/Tags/Tags.test.jsx +0 -327
  220. package/__tests__/TextInput/TextArea.test.jsx +0 -35
  221. package/__tests__/TextInput/TextInputBase.test.jsx +0 -125
  222. package/__tests__/ThemeProvider/ThemeProvider.test.jsx +0 -77
  223. package/__tests__/ThemeProvider/useThemeTokens.test.jsx +0 -514
  224. package/__tests__/ThemeProvider/utils/theme-tokens.test.js +0 -41
  225. package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +0 -82
  226. package/__tests__/ToggleSwitch/ToggleSwitchGroup.test.jsx +0 -192
  227. package/__tests__/Tooltip/Tooltip.test.jsx +0 -65
  228. package/__tests__/Tooltip/getTooltipPosition.test.js +0 -79
  229. package/__tests__/Typography/typography.test.jsx +0 -90
  230. package/__tests__/utils/children.test.jsx +0 -128
  231. package/__tests__/utils/containUniqueFields.test.js +0 -25
  232. package/__tests__/utils/input.test.js +0 -375
  233. package/__tests__/utils/props.test.js +0 -36
  234. package/__tests__/utils/semantics.test.jsx +0 -34
  235. package/__tests__/utils/useCopy.test.js +0 -42
  236. package/__tests__/utils/useResponsiveProp.test.jsx +0 -202
  237. package/__tests__/utils/useSpacingScale.test.jsx +0 -273
  238. package/__tests__/utils/useUniqueId.test.js +0 -31
  239. package/babel.config.js +0 -35
  240. package/generate-component-docs.js +0 -72
  241. package/jest.config.js +0 -32
  242. package/lib-module/A11yInfoProvider/index.js +0 -62
  243. package/lib-module/A11yText/index.js +0 -55
  244. package/lib-module/ActivityIndicator/Spinner.js +0 -76
  245. package/lib-module/ActivityIndicator/Spinner.native.js +0 -143
  246. package/lib-module/ActivityIndicator/index.js +0 -40
  247. package/lib-module/ActivityIndicator/shared.js +0 -12
  248. package/lib-module/BaseProvider/index.js +0 -26
  249. package/lib-module/Box/Box.js +0 -243
  250. package/lib-module/Box/index.js +0 -2
  251. package/lib-module/Button/Button.js +0 -25
  252. package/lib-module/Button/ButtonBase.js +0 -254
  253. package/lib-module/Button/ButtonGroup.js +0 -173
  254. package/lib-module/Button/ButtonLink.js +0 -39
  255. package/lib-module/Button/index.js +0 -4
  256. package/lib-module/Button/propTypes.js +0 -36
  257. package/lib-module/Card/Card.js +0 -83
  258. package/lib-module/Card/CardBase.js +0 -62
  259. package/lib-module/Card/PressableCardBase.js +0 -113
  260. package/lib-module/Card/index.js +0 -4
  261. package/lib-module/Checkbox/Checkbox.js +0 -332
  262. package/lib-module/Checkbox/CheckboxGroup.js +0 -231
  263. package/lib-module/Checkbox/CheckboxInput.js +0 -58
  264. package/lib-module/Checkbox/CheckboxInput.native.js +0 -6
  265. package/lib-module/Checkbox/index.js +0 -3
  266. package/lib-module/Divider/Divider.js +0 -123
  267. package/lib-module/Divider/index.js +0 -2
  268. package/lib-module/ExpandCollapse/Accordion.js +0 -15
  269. package/lib-module/ExpandCollapse/Control.js +0 -130
  270. package/lib-module/ExpandCollapse/ExpandCollapse.js +0 -94
  271. package/lib-module/ExpandCollapse/Panel.js +0 -158
  272. package/lib-module/ExpandCollapse/index.js +0 -7
  273. package/lib-module/Feedback/Feedback.js +0 -144
  274. package/lib-module/Feedback/index.js +0 -2
  275. package/lib-module/Fieldset/Fieldset.js +0 -145
  276. package/lib-module/Fieldset/FieldsetContainer.js +0 -29
  277. package/lib-module/Fieldset/FieldsetContainer.native.js +0 -20
  278. package/lib-module/Fieldset/Legend.js +0 -21
  279. package/lib-module/Fieldset/Legend.native.js +0 -28
  280. package/lib-module/Fieldset/cssReset.js +0 -14
  281. package/lib-module/Fieldset/index.js +0 -2
  282. package/lib-module/FlexGrid/Col/Col.js +0 -275
  283. package/lib-module/FlexGrid/Col/index.js +0 -2
  284. package/lib-module/FlexGrid/FlexGrid.js +0 -147
  285. package/lib-module/FlexGrid/Row/Row.js +0 -183
  286. package/lib-module/FlexGrid/Row/index.js +0 -2
  287. package/lib-module/FlexGrid/helpers/index.js +0 -18
  288. package/lib-module/FlexGrid/index.js +0 -2
  289. package/lib-module/FlexGrid/providers/GutterContext.js +0 -3
  290. package/lib-module/HorizontalScroll/HorizontalScroll.js +0 -170
  291. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +0 -77
  292. package/lib-module/HorizontalScroll/ScrollViewEnd.js +0 -47
  293. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +0 -24
  294. package/lib-module/HorizontalScroll/dictionary.js +0 -11
  295. package/lib-module/HorizontalScroll/index.js +0 -11
  296. package/lib-module/HorizontalScroll/itemPositions.js +0 -106
  297. package/lib-module/Icon/Icon.js +0 -61
  298. package/lib-module/Icon/IconText.js +0 -81
  299. package/lib-module/Icon/index.js +0 -4
  300. package/lib-module/IconButton/IconButton.js +0 -115
  301. package/lib-module/IconButton/index.js +0 -2
  302. package/lib-module/InputLabel/InputLabel.js +0 -134
  303. package/lib-module/InputLabel/LabelContent.js +0 -24
  304. package/lib-module/InputLabel/LabelContent.native.js +0 -16
  305. package/lib-module/InputLabel/index.js +0 -2
  306. package/lib-module/InputSupports/InputSupports.js +0 -88
  307. package/lib-module/InputSupports/index.js +0 -2
  308. package/lib-module/InputSupports/useInputSupports.js +0 -31
  309. package/lib-module/Link/ChevronLink.js +0 -51
  310. package/lib-module/Link/InlinePressable.js +0 -37
  311. package/lib-module/Link/InlinePressable.native.js +0 -85
  312. package/lib-module/Link/Link.js +0 -27
  313. package/lib-module/Link/LinkBase.js +0 -223
  314. package/lib-module/Link/TextButton.js +0 -34
  315. package/lib-module/Link/index.js +0 -5
  316. package/lib-module/List/List.js +0 -55
  317. package/lib-module/List/ListItem.js +0 -223
  318. package/lib-module/List/index.js +0 -5
  319. package/lib-module/Modal/Modal.js +0 -208
  320. package/lib-module/Modal/dictionary.js +0 -9
  321. package/lib-module/Modal/index.js +0 -2
  322. package/lib-module/Notification/Notification.js +0 -196
  323. package/lib-module/Notification/dictionary.js +0 -8
  324. package/lib-module/Notification/index.js +0 -2
  325. package/lib-module/Pagination/PageButton.js +0 -65
  326. package/lib-module/Pagination/Pagination.js +0 -140
  327. package/lib-module/Pagination/SideButton.js +0 -103
  328. package/lib-module/Pagination/dictionary.js +0 -18
  329. package/lib-module/Pagination/index.js +0 -2
  330. package/lib-module/Pagination/usePagination.js +0 -72
  331. package/lib-module/Progress/Progress.js +0 -85
  332. package/lib-module/Progress/ProgressBar.js +0 -134
  333. package/lib-module/Progress/ProgressBarBackground.js +0 -41
  334. package/lib-module/Progress/index.js +0 -4
  335. package/lib-module/Radio/Radio.js +0 -274
  336. package/lib-module/Radio/RadioButton.js +0 -128
  337. package/lib-module/Radio/RadioGroup.js +0 -234
  338. package/lib-module/Radio/RadioInput.js +0 -60
  339. package/lib-module/Radio/RadioInput.native.js +0 -6
  340. package/lib-module/Radio/index.js +0 -3
  341. package/lib-module/RadioCard/RadioCard.js +0 -218
  342. package/lib-module/RadioCard/RadioCardGroup.js +0 -241
  343. package/lib-module/RadioCard/index.js +0 -3
  344. package/lib-module/Search/Search.js +0 -241
  345. package/lib-module/Search/dictionary.js +0 -12
  346. package/lib-module/Search/index.js +0 -2
  347. package/lib-module/Select/Group.js +0 -20
  348. package/lib-module/Select/Group.native.js +0 -14
  349. package/lib-module/Select/Item.js +0 -17
  350. package/lib-module/Select/Item.native.js +0 -9
  351. package/lib-module/Select/Picker.js +0 -67
  352. package/lib-module/Select/Picker.native.js +0 -110
  353. package/lib-module/Select/Select.js +0 -316
  354. package/lib-module/Select/index.js +0 -6
  355. package/lib-module/SideNav/Item.js +0 -139
  356. package/lib-module/SideNav/ItemContent.js +0 -45
  357. package/lib-module/SideNav/ItemsGroup.js +0 -115
  358. package/lib-module/SideNav/SideNav.js +0 -133
  359. package/lib-module/SideNav/index.js +0 -1
  360. package/lib-module/Skeleton/Skeleton.js +0 -117
  361. package/lib-module/Skeleton/index.js +0 -2
  362. package/lib-module/Skeleton/skeleton.constant.js +0 -3
  363. package/lib-module/Skeleton/skeletonWebAnimation.js +0 -18
  364. package/lib-module/Skeleton/useSkeletonNativeAnimation.js +0 -24
  365. package/lib-module/Spacer/Spacer.js +0 -97
  366. package/lib-module/Spacer/index.js +0 -2
  367. package/lib-module/StackView/StackView.js +0 -124
  368. package/lib-module/StackView/StackWrap.js +0 -48
  369. package/lib-module/StackView/StackWrap.native.js +0 -3
  370. package/lib-module/StackView/StackWrapBox.js +0 -114
  371. package/lib-module/StackView/StackWrapGap.js +0 -58
  372. package/lib-module/StackView/common.js +0 -32
  373. package/lib-module/StackView/getStackedContent.js +0 -123
  374. package/lib-module/StackView/index.js +0 -5
  375. package/lib-module/StepTracker/Step.js +0 -229
  376. package/lib-module/StepTracker/StepTracker.js +0 -175
  377. package/lib-module/StepTracker/dictionary.js +0 -10
  378. package/lib-module/StepTracker/index.js +0 -2
  379. package/lib-module/Tabs/Tabs.js +0 -113
  380. package/lib-module/Tabs/TabsItem.js +0 -215
  381. package/lib-module/Tabs/index.js +0 -2
  382. package/lib-module/Tags/Tags.js +0 -245
  383. package/lib-module/Tags/index.js +0 -2
  384. package/lib-module/TextInput/TextArea.js +0 -88
  385. package/lib-module/TextInput/TextInput.js +0 -68
  386. package/lib-module/TextInput/TextInputBase.js +0 -233
  387. package/lib-module/TextInput/index.js +0 -3
  388. package/lib-module/TextInput/propTypes.js +0 -37
  389. package/lib-module/ThemeProvider/ThemeProvider.js +0 -35
  390. package/lib-module/ThemeProvider/index.js +0 -6
  391. package/lib-module/ThemeProvider/useSetTheme.js +0 -22
  392. package/lib-module/ThemeProvider/useTheme.js +0 -14
  393. package/lib-module/ThemeProvider/useThemeTokens.js +0 -105
  394. package/lib-module/ThemeProvider/utils/index.js +0 -2
  395. package/lib-module/ThemeProvider/utils/styles.js +0 -174
  396. package/lib-module/ThemeProvider/utils/theme-tokens.js +0 -151
  397. package/lib-module/ToggleSwitch/ToggleSwitch.js +0 -227
  398. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +0 -211
  399. package/lib-module/ToggleSwitch/index.js +0 -3
  400. package/lib-module/Tooltip/Backdrop.js +0 -52
  401. package/lib-module/Tooltip/Backdrop.native.js +0 -43
  402. package/lib-module/Tooltip/Tooltip.js +0 -332
  403. package/lib-module/Tooltip/dictionary.js +0 -8
  404. package/lib-module/Tooltip/getTooltipPosition.js +0 -164
  405. package/lib-module/Tooltip/index.js +0 -2
  406. package/lib-module/TooltipButton/TooltipButton.js +0 -71
  407. package/lib-module/TooltipButton/index.js +0 -2
  408. package/lib-module/Typography/Typography.js +0 -120
  409. package/lib-module/Typography/index.js +0 -2
  410. package/lib-module/ViewportProvider/ViewportProvider.js +0 -28
  411. package/lib-module/ViewportProvider/index.js +0 -3
  412. package/lib-module/ViewportProvider/useViewport.js +0 -3
  413. package/lib-module/ViewportProvider/useViewportListener.js +0 -43
  414. package/lib-module/index.js +0 -48
  415. package/lib-module/utils/a11y/index.js +0 -2
  416. package/lib-module/utils/a11y/semantics.js +0 -154
  417. package/lib-module/utils/a11y/textSize.js +0 -34
  418. package/lib-module/utils/animation/index.js +0 -2
  419. package/lib-module/utils/animation/useVerticalExpandAnimation.js +0 -49
  420. package/lib-module/utils/children.js +0 -118
  421. package/lib-module/utils/containUniqueFields.js +0 -26
  422. package/lib-module/utils/index.js +0 -16
  423. package/lib-module/utils/info/index.js +0 -7
  424. package/lib-module/utils/info/platform/index.js +0 -11
  425. package/lib-module/utils/info/platform/platform.android.js +0 -1
  426. package/lib-module/utils/info/platform/platform.ios.js +0 -1
  427. package/lib-module/utils/info/platform/platform.js +0 -1
  428. package/lib-module/utils/info/platform/platform.native.js +0 -4
  429. package/lib-module/utils/info/versions.js +0 -5
  430. package/lib-module/utils/input.js +0 -180
  431. package/lib-module/utils/pressability.js +0 -97
  432. package/lib-module/utils/props/a11yProps.js +0 -140
  433. package/lib-module/utils/props/clickProps.js +0 -25
  434. package/lib-module/utils/props/componentPropType.js +0 -63
  435. package/lib-module/utils/props/copyPropTypes.js +0 -2
  436. package/lib-module/utils/props/getPropSelector.js +0 -6
  437. package/lib-module/utils/props/handlerProps.js +0 -59
  438. package/lib-module/utils/props/hrefAttrsProp.js +0 -30
  439. package/lib-module/utils/props/index.js +0 -19
  440. package/lib-module/utils/props/inputSupportsProps.js +0 -52
  441. package/lib-module/utils/props/linkProps.js +0 -43
  442. package/lib-module/utils/props/paddingProp.js +0 -9
  443. package/lib-module/utils/props/pressProps.js +0 -42
  444. package/lib-module/utils/props/rectProp.js +0 -9
  445. package/lib-module/utils/props/responsiveProps.js +0 -30
  446. package/lib-module/utils/props/selectSystemProps.js +0 -24
  447. package/lib-module/utils/props/spacingProps.js +0 -56
  448. package/lib-module/utils/props/textInputProps.js +0 -194
  449. package/lib-module/utils/props/textProps.js +0 -59
  450. package/lib-module/utils/props/tokens.js +0 -120
  451. package/lib-module/utils/props/variantProp.js +0 -18
  452. package/lib-module/utils/props/viewProps.js +0 -22
  453. package/lib-module/utils/ssr.js +0 -35
  454. package/lib-module/utils/useCopy.js +0 -42
  455. package/lib-module/utils/useHash.js +0 -44
  456. package/lib-module/utils/useHash.native.js +0 -7
  457. package/lib-module/utils/useResponsiveProp.js +0 -47
  458. package/lib-module/utils/useSpacingScale.js +0 -123
  459. package/lib-module/utils/useUniqueId.js +0 -12
  460. package/lib-module/utils/withLinkRouter.js +0 -82
  461. package/stories/A11yText/A11yText.stories.jsx +0 -71
  462. package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +0 -22
  463. package/stories/Box/Box.stories.jsx +0 -143
  464. package/stories/Button/Button.stories.jsx +0 -72
  465. package/stories/Button/ButtonGroup.stories.jsx +0 -81
  466. package/stories/Button/ButtonLink.stories.jsx +0 -30
  467. package/stories/Card/Card.stories.jsx +0 -62
  468. package/stories/Checkbox/Checkbox.stories.jsx +0 -94
  469. package/stories/Divider/Divider.stories.jsx +0 -68
  470. package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +0 -112
  471. package/stories/Feedback/Feedback.stories.jsx +0 -96
  472. package/stories/FlexGrid/01 FlexGrid.stories.jsx +0 -54
  473. package/stories/FlexGrid/02 Row.stories.jsx +0 -41
  474. package/stories/FlexGrid/03 Col.stories.jsx +0 -141
  475. package/stories/Icon/Icon.stories.jsx +0 -79
  476. package/stories/IconButton/IconButton.stories.jsx +0 -50
  477. package/stories/InputLabel/InputLabel.stories.jsx +0 -39
  478. package/stories/Link/ChevronLink.stories.jsx +0 -48
  479. package/stories/Link/Link.stories.jsx +0 -90
  480. package/stories/Link/TextButton.stories.jsx +0 -79
  481. package/stories/List/List.stories.jsx +0 -117
  482. package/stories/Modal/Modal.stories.jsx +0 -54
  483. package/stories/Notification/Notification.stories.jsx +0 -82
  484. package/stories/Pagination/Pagination.stories.jsx +0 -64
  485. package/stories/Progress/Progress.stories.jsx +0 -93
  486. package/stories/Radio/Radio.stories.jsx +0 -100
  487. package/stories/RadioCard/RadioCard.stories.jsx +0 -98
  488. package/stories/Search/Search.stories.jsx +0 -66
  489. package/stories/Select/Select.stories.jsx +0 -55
  490. package/stories/SideNav/SideNav.stories.jsx +0 -42
  491. package/stories/SideNav/SideNavItem.stories.jsx +0 -9
  492. package/stories/SideNav/SideNavItemsGroup.stories.jsx +0 -17
  493. package/stories/Skeleton/Skeleton.stories.jsx +0 -36
  494. package/stories/Spacer/Spacer.stories.jsx +0 -38
  495. package/stories/StackView/StackView.stories.jsx +0 -75
  496. package/stories/StackView/StackWrap.stories.jsx +0 -64
  497. package/stories/StepTracker/StepTracker.stories.jsx +0 -71
  498. package/stories/Tabs/Tabs.stories.jsx +0 -97
  499. package/stories/Tags/Tags.stories.jsx +0 -69
  500. package/stories/TextInput/TextArea.stories.jsx +0 -101
  501. package/stories/TextInput/TextInput.stories.jsx +0 -141
  502. package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +0 -64
  503. package/stories/ToggleSwitch/ToggleSwitchGroup.stories.jsx +0 -81
  504. package/stories/Tooltip/Tooltip.stories.jsx +0 -81
  505. package/stories/TooltipButton/TooltipButton.stories.jsx +0 -11
  506. package/stories/Typography/Typography.stories.jsx +0 -49
  507. package/stories/platform-supports.jsx +0 -32
  508. package/stories/platform-supports.native.jsx +0 -3
  509. package/stories/supports.jsx +0 -236
@@ -34,16 +34,16 @@ Object.defineProperty(exports, "clickProps", {
34
34
  return _clickProps.default;
35
35
  }
36
36
  });
37
- Object.defineProperty(exports, "copyPropTypes", {
37
+ Object.defineProperty(exports, "componentPropType", {
38
38
  enumerable: true,
39
39
  get: function () {
40
- return _copyPropTypes.default;
40
+ return _componentPropType.default;
41
41
  }
42
42
  });
43
- Object.defineProperty(exports, "componentPropType", {
43
+ Object.defineProperty(exports, "copyPropTypes", {
44
44
  enumerable: true,
45
45
  get: function () {
46
- return _componentPropType.default;
46
+ return _copyPropTypes.default;
47
47
  }
48
48
  });
49
49
  Object.defineProperty(exports, "hrefAttrsProp", {
@@ -64,16 +64,16 @@ Object.defineProperty(exports, "linkProps", {
64
64
  return _linkProps.default;
65
65
  }
66
66
  });
67
- Object.defineProperty(exports, "pressProps", {
67
+ Object.defineProperty(exports, "paddingProp", {
68
68
  enumerable: true,
69
69
  get: function () {
70
- return _pressProps.default;
70
+ return _paddingProp.default;
71
71
  }
72
72
  });
73
- Object.defineProperty(exports, "paddingProp", {
73
+ Object.defineProperty(exports, "pressProps", {
74
74
  enumerable: true,
75
75
  get: function () {
76
- return _paddingProp.default;
76
+ return _pressProps.default;
77
77
  }
78
78
  });
79
79
  Object.defineProperty(exports, "rectProp", {
@@ -88,16 +88,16 @@ Object.defineProperty(exports, "responsiveProps", {
88
88
  return _responsiveProps.default;
89
89
  }
90
90
  });
91
- Object.defineProperty(exports, "spacingProps", {
91
+ Object.defineProperty(exports, "selectSystemProps", {
92
92
  enumerable: true,
93
93
  get: function () {
94
- return _spacingProps.default;
94
+ return _selectSystemProps.default;
95
95
  }
96
96
  });
97
- Object.defineProperty(exports, "selectSystemProps", {
97
+ Object.defineProperty(exports, "spacingProps", {
98
98
  enumerable: true,
99
99
  get: function () {
100
- return _selectSystemProps.default;
100
+ return _spacingProps.default;
101
101
  }
102
102
  });
103
103
  Object.defineProperty(exports, "textInputProps", {
@@ -11,6 +11,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
11
11
 
12
12
  var _default = {
13
13
  types: {
14
+ /**
15
+ * Whether the English or French copy will be used (e.g. for accessibility labels).
16
+ */
17
+ copy: _propTypes.default.oneOf(['en', 'fr']),
18
+
14
19
  /**
15
20
  * The input label.
16
21
  */
@@ -42,22 +47,27 @@ var _default = {
42
47
  */
43
48
  validation: _propTypes.default.oneOf(['error', 'success'])
44
49
  },
45
- select: ({
46
- label,
47
- hint,
48
- hintPosition,
49
- feedback,
50
- tooltip,
51
- validation
52
- }) => ({
53
- supportsProps: {
50
+ select: _ref => {
51
+ let {
52
+ copy,
54
53
  label,
55
54
  hint,
56
55
  hintPosition,
57
56
  feedback,
58
57
  tooltip,
59
58
  validation
60
- }
61
- })
59
+ } = _ref;
60
+ return {
61
+ supportsProps: {
62
+ copy,
63
+ label,
64
+ hint,
65
+ hintPosition,
66
+ feedback,
67
+ tooltip,
68
+ validation
69
+ }
70
+ };
71
+ }
62
72
  };
63
73
  exports.default = _default;
@@ -44,14 +44,15 @@ var _default = {
44
44
  * @returns {(() => void)|undefined} Returns a press handler, or undefined on web if no press
45
45
  * handler is provided (expects calling component to render as `<a href={href}>` on web).
46
46
  */
47
- handleHref: ({
48
- onPress,
49
- href
50
- }) => {
47
+ handleHref: _ref => {
48
+ let {
49
+ onPress,
50
+ href
51
+ } = _ref;
51
52
  return _Platform.default.select({
52
53
  web: onPress,
53
- default: (...args) => {
54
- if (onPress) onPress(...args);
54
+ default: function () {
55
+ if (onPress) onPress(...arguments);
55
56
  if (href) _Linking.default.openURL(href);
56
57
  }
57
58
  });
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.pressPropTypes = void 0;
6
+ exports.pressPropTypes = exports.default = void 0;
7
7
 
8
8
  var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
9
9
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getTokensSetPropType = exports.getTokensPropType = exports.selectTokens = exports.getTokenNames = void 0;
6
+ exports.selectTokens = exports.getTokensSetPropType = exports.getTokensPropType = exports.getTokenNames = void 0;
7
7
 
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
 
@@ -103,16 +103,22 @@ const selectTokens = (specifier, tokens, prefix) => {
103
103
 
104
104
  exports.selectTokens = selectTokens;
105
105
 
106
- const getTokensPropType = (...componentsNames) => (props, propName, componentName) => {
107
- _propTypes.default.checkPropTypes({
108
- [propName]: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.func])
109
- }, props, propName, componentName);
106
+ const getTokensPropType = function () {
107
+ for (var _len = arguments.length, componentsNames = new Array(_len), _key = 0; _key < _len; _key++) {
108
+ componentsNames[_key] = arguments[_key];
109
+ }
110
110
 
111
- if (typeof props[propName] !== 'function') {
111
+ return (props, propName, componentName) => {
112
112
  _propTypes.default.checkPropTypes({
113
- [propName]: _propTypes.default.exact(Object.fromEntries(componentsNames.flatMap(component => getTokenNames(component).map(key => [key, tokenValueType]))))
113
+ [propName]: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.func])
114
114
  }, props, propName, componentName);
115
- }
115
+
116
+ if (typeof props[propName] !== 'function') {
117
+ _propTypes.default.checkPropTypes({
118
+ [propName]: _propTypes.default.exact(Object.fromEntries(componentsNames.flatMap(component => getTokenNames(component).map(key => [key, tokenValueType]))))
119
+ }, props, propName, componentName);
120
+ }
121
+ };
116
122
  };
117
123
  /**
118
124
  * Get a proptypes validator for a set of tokens that is not based on a component in the theme schema.
@@ -132,12 +138,20 @@ const getTokensPropType = (...componentsNames) => (props, propName, componentNam
132
138
 
133
139
  exports.getTokensPropType = getTokensPropType;
134
140
 
135
- const getTokensSetPropType = (componentTokenKeys, {
136
- partial = false,
137
- allowFunction = false
138
- } = {}) => {
141
+ const getTokensSetPropType = function (componentTokenKeys) {
142
+ let {
143
+ partial = false,
144
+ allowFunction = false
145
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
146
+
139
147
  const tokensObjectValidator = _propTypes.default.exact(Object.fromEntries(componentTokenKeys.map(key => [key, partial ? tokenValueType : // Some theme tokens can validly resolve to `null`, but .isRequired treats null as undefined
140
- (props, propName, ...args) => props[propName] !== null && tokenValueType.isRequired(props, propName, ...args)])));
148
+ function (props, propName) {
149
+ for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
150
+ args[_key2 - 2] = arguments[_key2];
151
+ }
152
+
153
+ return props[propName] !== null && tokenValueType.isRequired(props, propName, ...args);
154
+ }])));
141
155
 
142
156
  return allowFunction ? _propTypes.default.oneOfType([tokensObjectValidator, _propTypes.default.func]) : tokensObjectValidator;
143
157
  };
package/lib/utils/ssr.js CHANGED
@@ -21,7 +21,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
21
21
  * @param {string} [appName]
22
22
  * @returns {ReactElement[]}
23
23
  */
24
- const getReactNativeWebSSRStyles = (AppRoot, appName = 'app') => {
24
+ const getReactNativeWebSSRStyles = function (AppRoot) {
25
+ let appName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'app';
26
+
25
27
  _AppRegistry.default.registerComponent(appName, () => AppRoot);
26
28
 
27
29
  const {
@@ -43,7 +45,9 @@ const getReactNativeWebSSRStyles = (AppRoot, appName = 'app') => {
43
45
 
44
46
  exports.getReactNativeWebSSRStyles = getReactNativeWebSSRStyles;
45
47
 
46
- const getSSRStyles = (AppRoot, appName = 'app', existingStyles = []) => {
48
+ const getSSRStyles = function (AppRoot) {
49
+ let appName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'app';
50
+ let existingStyles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
47
51
  return [...existingStyles, ...getReactNativeWebSSRStyles(AppRoot, appName) // if any other CSS-in-JS is added e.g. styled-components generate and add its styles here
48
52
  ];
49
53
  };
@@ -35,10 +35,12 @@ const DEFAULT_COPY = 'en';
35
35
 
36
36
  exports.DEFAULT_COPY = DEFAULT_COPY;
37
37
 
38
- function useCopy({
39
- dictionary,
40
- copy = DEFAULT_COPY
41
- }) {
38
+ function useCopy(_ref) {
39
+ let {
40
+ dictionary,
41
+ copy = DEFAULT_COPY
42
+ } = _ref;
43
+
42
44
  if (typeof copy === 'string') {
43
45
  return key => key ? dictionary[copy][key] : dictionary[copy];
44
46
  } // support overriding the entire copy dictionary with an object for a single language
@@ -29,7 +29,8 @@ const doAction = (action, event) => {
29
29
  */
30
30
 
31
31
 
32
- const useHash = (action, isReady = true) => {
32
+ const useHash = function (action) {
33
+ let isReady = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
33
34
  const [isDone, setIsDone] = (0, _react.useState)(false); // Do the action just once when ready after component mount, from hash on page load
34
35
 
35
36
  const isToDo = isReady && !isDone;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.resolveResponsiveProp = void 0;
6
+ exports.resolveResponsiveProp = exports.default = void 0;
7
7
 
8
8
  var _systemConstants = require("@telus-uds/system-constants");
9
9
 
@@ -9,7 +9,8 @@ var _react = require("react");
9
9
 
10
10
  let id = 0;
11
11
 
12
- function useUniqueId(prefix = '') {
12
+ function useUniqueId() {
13
+ let prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
13
14
  const [uniqueId] = (0, _react.useState)(() => {
14
15
  id += 1;
15
16
  return `${prefix}-${id}`;
@@ -50,11 +50,12 @@ const hasOwnProperty = (object, prop) => Object.prototype.hasOwnProperty.call(ob
50
50
 
51
51
 
52
52
  const withLinkRouter = Component => {
53
- const wrappedComponent = /*#__PURE__*/(0, _react.forwardRef)(({
54
- LinkRouter,
55
- linkRouterProps,
56
- ...props
57
- }, ref) => {
53
+ const wrappedComponent = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
54
+ let {
55
+ LinkRouter,
56
+ linkRouterProps,
57
+ ...props
58
+ } = _ref;
58
59
  if (!LinkRouter) return /*#__PURE__*/(0, _jsxRuntime.jsx)(Component, { ...props,
59
60
  ref: ref
60
61
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telus-uds/components-base",
3
- "version": "1.7.1",
3
+ "version": "1.8.2",
4
4
  "description": "Base components",
5
5
  "keywords": [
6
6
  "base"
@@ -22,17 +22,16 @@
22
22
  },
23
23
  "scripts": {
24
24
  "test": "jest",
25
- "lint": "yarn --cwd ../.. lint:path --color packages/components-base",
26
- "lint:fix": "yarn --cwd ../.. lint:path --fix packages/components-base",
25
+ "lint": "npm run --prefix ../.. lint:path -- --color packages/components-base",
26
+ "lint:fix": "npm run --prefix ../.. lint:path -- --fix packages/components-base",
27
27
  "format": "prettier --write .",
28
- "build": "yarn build:code && yarn build:docs",
28
+ "build": "npm run build:code && npm run build:docs",
29
29
  "build:main": "babel src -d lib",
30
30
  "build:module": "babel src -d lib-module --env-name module",
31
- "build:code": "yarn build:main && yarn build:module",
31
+ "build:code": "npm run build:main && npm run build:module",
32
32
  "build:docs": "babel-node --plugins=@nearform/babel-plugin-react-docgen generate-component-docs.js",
33
33
  "storybook": "start-storybook",
34
- "dev": "yarn build:code --watch",
35
- "release": "standard-version"
34
+ "dev": "npm run build:code --watch"
36
35
  },
37
36
  "bugs": {
38
37
  "url": "https://github.com/telus/universal-design-system/issues"
@@ -45,21 +44,28 @@
45
44
  ],
46
45
  "peerDependencies": {
47
46
  "react": "^17.0.2",
48
- "react-dom": "*",
47
+ "react-dom": "^17.0.2",
49
48
  "react-native": "*",
50
49
  "react-native-web": "^0.17.0"
51
50
  },
52
51
  "devDependencies": {
53
- "@telus-uds/browserslist-config": "^1.0.1",
52
+ "@storybook/addon-a11y": "^6.5.6",
53
+ "@storybook/addon-essentials": "^6.5.6",
54
+ "@storybook/cli": "^6.5.6",
55
+ "@storybook/react": "^6.5.6",
56
+ "@storybook/builder-webpack5": "^6.5.6",
57
+ "@storybook/manager-webpack5": "^6.5.6",
58
+ "@telus-uds/browserslist-config": "^1.0.2",
54
59
  "@testing-library/jest-native": "^4.0.1",
55
60
  "@testing-library/react-hooks": "^7.0.1",
56
61
  "@testing-library/react-native": "^7.2.0",
57
- "react-test-renderer": "^16.3.2"
62
+ "react-test-renderer": "^16.3.2",
63
+ "webpack": "5.x"
58
64
  },
59
65
  "dependencies": {
60
66
  "airbnb-prop-types": "^2.16.0",
61
- "@telus-uds/system-constants": "^1.0.2",
62
- "@telus-uds/system-theme-tokens": "^1.5.0",
67
+ "@telus-uds/system-constants": "^1.0.4",
68
+ "@telus-uds/system-theme-tokens": "^2.0.2",
63
69
  "lodash.debounce": "^4.0.8",
64
70
  "lodash.merge": "^4.6.2",
65
71
  "prop-types": "^15.7.2",
@@ -5,6 +5,7 @@ import { Platform } from 'react-native'
5
5
 
6
6
  import ButtonBase from './ButtonBase'
7
7
  import { StackWrap } from '../StackView'
8
+ import Fieldset from '../Fieldset'
8
9
  import { useViewport } from '../ViewportProvider'
9
10
  import { useThemeTokens, useThemeTokensCallback } from '../ThemeProvider'
10
11
  import {
@@ -41,6 +42,13 @@ const ButtonGroup = forwardRef(
41
42
  onChange,
42
43
  readOnly = false,
43
44
  inactive = false,
45
+ legend,
46
+ tooltip,
47
+ hint,
48
+ validation,
49
+ feedback,
50
+ name: inputGroupName,
51
+ copy,
44
52
  accessibilityRole = maxValues === 1
45
53
  ? 'radiogroup' // radiogroup is cross-platform; only web aria has generic groups
46
54
  : Platform.select({ web: 'group', default: 'none' }),
@@ -51,7 +59,7 @@ const ButtonGroup = forwardRef(
51
59
  const viewport = useViewport()
52
60
  const themeTokens = useThemeTokens('ButtonGroup', tokens, variant, { viewport })
53
61
  const stackTokens = selectTokens('StackView', themeTokens)
54
- const { direction, space } = themeTokens
62
+ const { direction, space, fieldSpace } = themeTokens
55
63
 
56
64
  const getButtonTokens = useThemeTokensCallback('ButtonGroupItem', tokens, variant)
57
65
 
@@ -74,53 +82,73 @@ const ButtonGroup = forwardRef(
74
82
  throw new Error(`ButtonGroup items must have unique ${uniqueFields.join(', ')}`)
75
83
  }
76
84
 
85
+ // Some web screenreaders e.g. MacOS Voiceover don't handle radiogroups properly unless radio is direct child of radiogroup
86
+ const innerRole =
87
+ Platform.OS === 'web' && accessibilityRole === 'radiogroup' ? accessibilityRole : undefined
88
+
77
89
  return (
78
- <StackWrap
90
+ <Fieldset
79
91
  {...systemProps}
80
- space={space}
81
- direction={direction}
82
- tokens={stackTokens}
83
92
  ref={ref}
93
+ name={inputGroupName}
94
+ legend={legend}
95
+ tooltip={tooltip}
96
+ hint={hint}
97
+ space={fieldSpace}
98
+ feedback={feedback}
99
+ readOnly={readOnly}
100
+ inactive={inactive}
101
+ validation={validation}
102
+ accessibilityRole={accessibilityRole}
103
+ {...selectProps(rest)}
84
104
  >
85
- {items.map(
86
- ({ label, id = label, accessibilityLabel, ref: itemRef, ...itemRest }, index) => {
87
- const isSelected = currentValues.includes(id)
105
+ <StackWrap
106
+ accessibilityRole={innerRole}
107
+ space={space}
108
+ direction={direction}
109
+ tokens={stackTokens}
110
+ ref={ref}
111
+ >
112
+ {items.map(
113
+ ({ label, id = label, accessibilityLabel, ref: itemRef, ...itemRest }, index) => {
114
+ const isSelected = currentValues.includes(id)
88
115
 
89
- // Pass an object of relevant component state as first argument for any passed-in press handlers
90
- const pressHandlers = getPressHandlersWithArgs(rest, [{ id, label, currentValues }])
116
+ // Pass an object of relevant component state as first argument for any passed-in press handlers
117
+ const pressHandlers = getPressHandlersWithArgs(rest, [{ id, label, currentValues }])
91
118
 
92
- const handlePress = (event) => {
93
- if (pressHandlers.onPress) pressHandlers.onPress(event)
94
- toggleOneValue(id, event)
95
- }
119
+ const handlePress = (event) => {
120
+ if (pressHandlers.onPress) pressHandlers.onPress(event)
121
+ toggleOneValue(id, event)
122
+ }
96
123
 
97
- const itemA11y = {
98
- accessibilityState: { checked: isSelected },
99
- accessibilityRole: itemA11yRole,
100
- accessibilityLabel,
101
- ...a11yProps.getPositionInSet(items.length, index)
102
- }
124
+ const itemA11y = {
125
+ accessibilityState: { checked: isSelected },
126
+ accessibilityRole: itemA11yRole,
127
+ accessibilityLabel,
128
+ ...a11yProps.getPositionInSet(items.length, index)
129
+ }
103
130
 
104
- // Ensure button is direct child of group as MacOS voiceover only applies "X of Y" to
105
- // "radio" if it's a direct child of "radiogroup", even if aria-posinset etc exists
106
- return (
107
- <ButtonBase
108
- ref={itemRef}
109
- key={id}
110
- {...pressHandlers}
111
- onPress={handlePress}
112
- tokens={getButtonTokens}
113
- selected={isSelected}
114
- inactive={inactive}
115
- {...itemA11y}
116
- {...selectItemProps(itemRest)}
117
- >
118
- {label}
119
- </ButtonBase>
120
- )
121
- }
122
- )}
123
- </StackWrap>
131
+ // Ensure button is direct child of group as MacOS voiceover only applies "X of Y" to
132
+ // "radio" if it's a direct child of "radiogroup", even if aria-posinset etc exists
133
+ return (
134
+ <ButtonBase
135
+ ref={itemRef}
136
+ key={id}
137
+ {...pressHandlers}
138
+ onPress={handlePress}
139
+ tokens={getButtonTokens}
140
+ selected={isSelected}
141
+ inactive={inactive}
142
+ {...itemA11y}
143
+ {...selectItemProps(itemRest)}
144
+ >
145
+ {label}
146
+ </ButtonBase>
147
+ )
148
+ }
149
+ )}
150
+ </StackWrap>
151
+ </Fieldset>
124
152
  )
125
153
  }
126
154
  )
@@ -180,7 +208,44 @@ ButtonGroup.propTypes = {
180
208
  * managing its own selected state, a default set of selections may be provided.
181
209
  * Changing the `initialValues` does not change the user's selections.
182
210
  */
183
- initialValues: PropTypes.arrayOf(PropTypes.string)
211
+ initialValues: PropTypes.arrayOf(PropTypes.string),
212
+ /**
213
+ * Main text used to describe this group, used in Fieldset's Legend element.
214
+ */
215
+ legend: PropTypes.string,
216
+ /**
217
+ * Optional additional text giving more detail to help a user make a choice.
218
+ */
219
+ hint: PropTypes.string,
220
+ /**
221
+ * Optional tooltip text content to include alongside the legend and hint.
222
+ */
223
+ tooltip: PropTypes.string,
224
+ /**
225
+ * Current validation status of the group, passed to the feedback element if there is one.
226
+ */
227
+ validation: PropTypes.oneOf(['error', 'success']),
228
+ /**
229
+ * If provided, a Feedback element is rendered containing this text.
230
+ */
231
+ feedback: PropTypes.string,
232
+ /**
233
+ * If true, the buttons cannot be selected by the user and simply show their current state.
234
+ */
235
+ readOnly: PropTypes.bool,
236
+ /**
237
+ * If true, the buttons cannot be interacted with, elements are set as `disabled` and if the
238
+ * theme supports `inactive` appearances rules, these are applied.
239
+ */
240
+ inactive: PropTypes.bool,
241
+ /**
242
+ * On Web, this is passed to the `name` attribute of the fieldset.
243
+ */
244
+ name: PropTypes.string,
245
+ /**
246
+ * Sets the language of microcopy in subcomponents (e.g. Tooltip's default accessibility label).
247
+ */
248
+ copy: PropTypes.oneOf(['en', 'fr'])
184
249
  }
185
250
 
186
251
  export default ButtonGroup
@@ -137,7 +137,11 @@ const Checkbox = forwardRef(
137
137
  },
138
138
  ref
139
139
  ) => {
140
- const { currentValue: isChecked, setValue: setIsChecked, isControlled } = useInputValue(
140
+ const {
141
+ currentValue: isChecked,
142
+ setValue: setIsChecked,
143
+ isControlled
144
+ } = useInputValue(
141
145
  {
142
146
  value: checked,
143
147
  initialValue: defaultChecked,
@@ -152,9 +156,8 @@ const Checkbox = forwardRef(
152
156
  ...variant
153
157
  })
154
158
  const defaultTokens = getTokens()
155
- const { feedbackMarginBottom, feedbackMarginTop, feedbackPosition } = selectFeedbackTokens(
156
- defaultTokens
157
- )
159
+ const { feedbackMarginBottom, feedbackMarginTop, feedbackPosition } =
160
+ selectFeedbackTokens(defaultTokens)
158
161
  const styles = StyleSheet.create({
159
162
  feedbackContainer: { marginTop: feedbackMarginTop, marginBottom: feedbackMarginBottom }
160
163
  })
@@ -219,16 +219,16 @@ CheckboxGroup.propTypes = {
219
219
  */
220
220
  onChange: PropTypes.func,
221
221
  /**
222
- * If true, the radio cards cannot be selected by the user and simply show their current state.
222
+ * If true, the checkboxes cannot be selected by the user and simply show their current state.
223
223
  */
224
224
  readOnly: PropTypes.bool,
225
225
  /**
226
- * If true, the checkbox cannot be interacted with, elements are set as `disabled` and if the
226
+ * If true, the checkboxes cannot be interacted with, elements are set as `disabled` and if the
227
227
  * theme supports `inactive` appearances rules, these are applied.
228
228
  */
229
229
  inactive: PropTypes.bool,
230
230
  /**
231
- * On Web, this is passed to the `name` attribute of the fieldset and each radio input.
231
+ * On Web, this is passed to the `name` attribute of the fieldset and each checkbox input.
232
232
  */
233
233
  name: PropTypes.string
234
234
  }
@@ -79,7 +79,8 @@ const ExpandCollapsePanel = forwardRef(
79
79
  setContainerHeight(height)
80
80
  }
81
81
  }
82
- const animatedStyles = useVerticalExpandAnimation({
82
+
83
+ const [animatedStyles, animatedRef] = useVerticalExpandAnimation({
83
84
  containerHeight,
84
85
  isExpanded,
85
86
  tokens: themeTokens
@@ -105,6 +106,7 @@ const ExpandCollapsePanel = forwardRef(
105
106
  {control}
106
107
  </ExpandCollapseControl>
107
108
  <Animated.View
109
+ ref={animatedRef}
108
110
  style={[overflowContainerStyles, animatedStyles, staticStyles.itemsContainer]}
109
111
  {...focusabilityProps}
110
112
  >
@@ -18,6 +18,7 @@ import Legend from './Legend'
18
18
  const Fieldset = forwardRef(
19
19
  (
20
20
  {
21
+ copy = 'en',
21
22
  space,
22
23
  feedback,
23
24
  feedbackPosition = 'top',
@@ -44,6 +45,7 @@ const Fieldset = forwardRef(
44
45
  const legendContent = legend && (
45
46
  <Legend>
46
47
  <InputLabel
48
+ copy={copy}
47
49
  label={legend}
48
50
  hint={hint}
49
51
  hintPosition={hintPosition}
@@ -83,6 +85,10 @@ Fieldset.displayName = 'Fieldset'
83
85
 
84
86
  Fieldset.propTypes = {
85
87
  children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
88
+ /**
89
+ * Whether the English or French copy will be used (e.g. for accessibility labels).
90
+ */
91
+ copy: PropTypes.oneOf(['en', 'fr']),
86
92
  /**
87
93
  * The accessibility role of the `<fieldset>` element itself. Other React Native accessibility
88
94
  * props are not supported because there is not an appropriate counterpart for Fieldsets.