@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
@@ -1,34 +0,0 @@
1
- import React from 'react'
2
- import { render } from '@testing-library/react-native'
3
- import A11yText from '../../src/A11yText'
4
-
5
- describe('A11yText', () => {
6
- it('has an accessible label', async () => {
7
- const { getByA11yLabel } = render(<A11yText text="Some text" />)
8
-
9
- const a11yText = getByA11yLabel('Some text')
10
- expect(a11yText).toBeTruthy()
11
- expect(() => getByA11yLabel('Not some text')).toThrow()
12
- })
13
-
14
- it("doesn't render regular text", async () => {
15
- const { getByText } = render(<A11yText text="Some text" />)
16
- expect(() => getByText('Some text')).toThrow()
17
- })
18
-
19
- it('defaults to text role', async () => {
20
- const { getByRole } = render(<A11yText text="Some text" />)
21
-
22
- const a11yText = getByRole('text')
23
- expect(a11yText).toBeTruthy()
24
- expect(() => getByRole('header')).toThrow()
25
- })
26
-
27
- it('can be set to header role', async () => {
28
- const { getByRole } = render(<A11yText text="Some text" heading />)
29
-
30
- const a11yText = getByRole('header')
31
- expect(a11yText).toBeTruthy()
32
- expect(() => getByRole('text')).toThrow()
33
- })
34
- })
@@ -1,68 +0,0 @@
1
- import React from 'react'
2
- import { Platform } from 'react-native'
3
- import { render as baseRender } from '@testing-library/react-native'
4
- import Theme from '../../__fixtures__/Theme'
5
- import ActivityIndicator from '../../src/ActivityIndicator'
6
- import * as A11yInfoProvider from '../../src/A11yInfoProvider'
7
-
8
- // Used to remove the "Animated: `useNativeDriver` is not supported because the native animated module is missing." warnings
9
- jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper')
10
-
11
- const render = (jsx) => baseRender(jsx, { wrapper: Theme })
12
-
13
- describe('ActivityIndicator', () => {
14
- it('has an accessible label', async () => {
15
- const { getByA11yLabel } = render(<ActivityIndicator label="I'm a loader" />)
16
-
17
- expect(getByA11yLabel("I'm a loader")).toBeTruthy()
18
- })
19
-
20
- it('has a role of progressbar', async () => {
21
- const { getByRole } = render(<ActivityIndicator label="I'm a loader" />)
22
-
23
- expect(getByRole('progressbar')).toBeTruthy()
24
- })
25
-
26
- it('has an a11y state of busy', async () => {
27
- const { getAllByAccessibilityState } = render(<ActivityIndicator label="I'm a loader" />)
28
- expect(getAllByAccessibilityState({ busy: true })).toBeTruthy()
29
- })
30
-
31
- it("doesn't render regular text for the label", async () => {
32
- const { getByText } = render(<ActivityIndicator label="I'm a loader" />)
33
- expect(() => getByText("I'm a loader")).toThrow()
34
- })
35
-
36
- it("doesn't animate when reduced motion is enabled", async () => {
37
- jest
38
- .spyOn(A11yInfoProvider, 'useA11yInfo')
39
- .mockImplementation(() => ({ reduceMotionEnabled: true }))
40
- // TODO: this won't be called until cross-platform Jest tests are configured
41
- // see https://github.com/telus/universal-design-system/issues/319
42
- if (Platform.OS === 'web') {
43
- const { container } = render(<ActivityIndicator label="I'm a loader" />)
44
- expect(container.querySelector('[attributeName="transform"]')).not.toBeInTheDocument()
45
- expect(container.querySelector('[attributeName="stroke-dashoffset"]')).not.toBeInTheDocument()
46
- expect(container.querySelector('[attributeName="stroke-dasharray"]')).not.toBeInTheDocument()
47
- } else {
48
- const component = render(<ActivityIndicator label="I'm a loader" />)
49
- expect(component).toMatchSnapshot()
50
- }
51
- })
52
- it("animates when reduced motion isn't enabled", async () => {
53
- jest
54
- .spyOn(A11yInfoProvider, 'useA11yInfo')
55
- .mockImplementation(() => ({ reduceMotionEnabled: false }))
56
- // TODO: this won't be called until cross-platform Jest tests are configured
57
- // see https://github.com/telus/universal-design-system/issues/319
58
- if (Platform.OS === 'web') {
59
- const { container } = render(<ActivityIndicator label="I'm a loader" />)
60
- expect(container.querySelector('[attributeName="transform"]')).toBeInTheDocument()
61
- expect(container.querySelector('[attributeName="stroke-dashoffset"]')).toBeInTheDocument()
62
- expect(container.querySelector('[attributeName="stroke-dasharray"]')).toBeInTheDocument()
63
- } else {
64
- const component = render(<ActivityIndicator label="I'm a loader" />)
65
- expect(component).toMatchSnapshot()
66
- }
67
- })
68
- })
@@ -1,287 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`ActivityIndicator animates when reduced motion isn't enabled 1`] = `
4
- <View
5
- accessibilityLabel="I'm a loader"
6
- accessibilityRole="progressbar"
7
- accessibilityState={
8
- Object {
9
- "busy": true,
10
- }
11
- }
12
- accessible={true}
13
- style={
14
- Array [
15
- Object {
16
- "flexGrow": 0,
17
- "flexShrink": 0,
18
- },
19
- ]
20
- }
21
- >
22
- <View
23
- collapsable={false}
24
- style={
25
- Object {
26
- "height": 24,
27
- "width": 24,
28
- }
29
- }
30
- >
31
- <View
32
- style={
33
- Object {
34
- "alignItems": "center",
35
- "bottom": 0,
36
- "justifyContent": "center",
37
- "left": 0,
38
- "position": "absolute",
39
- "right": 0,
40
- "top": 0,
41
- }
42
- }
43
- >
44
- <View
45
- style={
46
- Object {
47
- "height": 24,
48
- "transform": Array [
49
- Object {
50
- "rotate": "45deg",
51
- },
52
- ],
53
- "width": 24,
54
- }
55
- }
56
- >
57
- <View
58
- collapsable={false}
59
- style={
60
- Object {
61
- "height": 12,
62
- "overflow": "hidden",
63
- "width": 24,
64
- }
65
- }
66
- >
67
- <View
68
- style={
69
- Object {
70
- "height": 24,
71
- "transform": Array [
72
- Object {
73
- "translateY": 0,
74
- },
75
- Object {
76
- "rotate": "-165deg",
77
- },
78
- ],
79
- "width": 24,
80
- }
81
- }
82
- >
83
- <View
84
- collapsable={false}
85
- style={
86
- Object {
87
- "height": 12,
88
- "overflow": "hidden",
89
- "width": 24,
90
- }
91
- }
92
- >
93
- <View
94
- style={
95
- Object {
96
- "borderColor": "#0e6ac8",
97
- "borderRadius": 12,
98
- "borderWidth": 2,
99
- "height": 24,
100
- "width": 24,
101
- }
102
- }
103
- />
104
- </View>
105
- </View>
106
- </View>
107
- </View>
108
- </View>
109
- <View
110
- style={
111
- Object {
112
- "alignItems": "center",
113
- "bottom": 0,
114
- "justifyContent": "center",
115
- "left": 0,
116
- "position": "absolute",
117
- "right": 0,
118
- "top": 0,
119
- }
120
- }
121
- >
122
- <View
123
- style={
124
- Object {
125
- "height": 24,
126
- "transform": Array [
127
- Object {
128
- "rotate": "45deg",
129
- },
130
- ],
131
- "width": 24,
132
- }
133
- }
134
- >
135
- <View
136
- collapsable={false}
137
- style={
138
- Object {
139
- "height": 12,
140
- "overflow": "hidden",
141
- "top": 12,
142
- "width": 24,
143
- }
144
- }
145
- >
146
- <View
147
- style={
148
- Object {
149
- "height": 24,
150
- "transform": Array [
151
- Object {
152
- "translateY": -12,
153
- },
154
- Object {
155
- "rotate": "345deg",
156
- },
157
- ],
158
- "width": 24,
159
- }
160
- }
161
- >
162
- <View
163
- collapsable={false}
164
- style={
165
- Object {
166
- "height": 12,
167
- "overflow": "hidden",
168
- "width": 24,
169
- }
170
- }
171
- >
172
- <View
173
- style={
174
- Object {
175
- "borderColor": "#0e6ac8",
176
- "borderRadius": 12,
177
- "borderWidth": 2,
178
- "height": 24,
179
- "width": 24,
180
- }
181
- }
182
- />
183
- </View>
184
- </View>
185
- </View>
186
- </View>
187
- </View>
188
- </View>
189
- </View>
190
- `;
191
-
192
- exports[`ActivityIndicator doesn't animate when reduced motion is enabled 1`] = `
193
- <View
194
- accessibilityLabel="I'm a loader"
195
- accessibilityRole="progressbar"
196
- accessibilityState={
197
- Object {
198
- "busy": true,
199
- }
200
- }
201
- accessible={true}
202
- style={
203
- Array [
204
- Object {
205
- "flexGrow": 0,
206
- "flexShrink": 0,
207
- },
208
- ]
209
- }
210
- >
211
- <View
212
- collapsable={false}
213
- style={
214
- Object {
215
- "height": 24,
216
- "width": 24,
217
- }
218
- }
219
- >
220
- <View
221
- style={
222
- Object {
223
- "alignItems": "center",
224
- "bottom": 0,
225
- "justifyContent": "center",
226
- "left": 0,
227
- "position": "absolute",
228
- "right": 0,
229
- "top": 0,
230
- }
231
- }
232
- >
233
- <View
234
- style={
235
- Object {
236
- "height": 24,
237
- "width": 24,
238
- }
239
- }
240
- >
241
- <View
242
- collapsable={false}
243
- style={
244
- Object {
245
- "height": 16,
246
- "overflow": "hidden",
247
- "width": 24,
248
- }
249
- }
250
- >
251
- <View
252
- style={
253
- Object {
254
- "height": 24,
255
- "width": 24,
256
- }
257
- }
258
- >
259
- <View
260
- collapsable={false}
261
- style={
262
- Object {
263
- "height": 16,
264
- "overflow": "hidden",
265
- "width": 24,
266
- }
267
- }
268
- >
269
- <View
270
- style={
271
- Object {
272
- "borderColor": "#0e6ac8",
273
- "borderRadius": 12,
274
- "borderWidth": 2,
275
- "height": 24,
276
- "width": 24,
277
- }
278
- }
279
- />
280
- </View>
281
- </View>
282
- </View>
283
- </View>
284
- </View>
285
- </View>
286
- </View>
287
- `;
@@ -1,111 +0,0 @@
1
- import React from 'react'
2
- import { Text } from 'react-native'
3
- import { render, fireEvent } from '@testing-library/react-native'
4
- import { Box } from '../../src'
5
- import Theme from '../../__fixtures__/Theme'
6
-
7
- const textContent = 'Some text content'
8
-
9
- // Based on testTheme
10
- const expectedScale = [0, 4, 8, 16, 24, 32, 36]
11
-
12
- describe('Box', () => {
13
- it('is scrollable if scroll props provided', async () => {
14
- const onScroll = jest.fn()
15
- const { getByText } = render(
16
- <Theme>
17
- <Box scroll={{ onScroll }}>
18
- <Text>{textContent}</Text>
19
- </Box>
20
- </Theme>
21
- )
22
- const content = getByText(textContent)
23
-
24
- expect(onScroll).toHaveBeenCalledTimes(0)
25
- await fireEvent.scroll(content)
26
- expect(onScroll).toHaveBeenCalledTimes(1)
27
- })
28
-
29
- it('maps regular props to RN styles', () => {
30
- const props = {
31
- top: 1,
32
- bottom: 2,
33
- left: 3,
34
- right: 4
35
- }
36
- const { getByText } = render(
37
- <Theme>
38
- <Box {...props}>
39
- <Text>{textContent}</Text>
40
- </Box>
41
- </Theme>
42
- )
43
- expect(getByText(textContent).parent).toHaveStyle({
44
- paddingTop: expectedScale[1],
45
- paddingBottom: expectedScale[2],
46
- paddingLeft: expectedScale[3],
47
- paddingRight: expectedScale[4]
48
- })
49
- })
50
-
51
- it(`maps horizontal and vertical props to RN styles`, () => {
52
- const props = {
53
- horizontal: 1,
54
- vertical: 2
55
- }
56
- const { getByText } = render(
57
- <Theme>
58
- <Box {...props}>
59
- <Text>{textContent}</Text>
60
- </Box>
61
- </Theme>
62
- )
63
- expect(getByText(textContent).parent).toHaveStyle({
64
- paddingLeft: expectedScale[1],
65
- paddingRight: expectedScale[1],
66
- paddingTop: expectedScale[2],
67
- paddingBottom: expectedScale[2]
68
- })
69
- })
70
-
71
- it(`maps all-sides space prop to RN styles`, () => {
72
- const props = {
73
- space: 3
74
- }
75
- const { getByText } = render(
76
- <Theme>
77
- <Box {...props}>
78
- <Text>{textContent}</Text>
79
- </Box>
80
- </Theme>
81
- )
82
- expect(getByText(textContent).parent).toHaveStyle({
83
- paddingLeft: expectedScale[3],
84
- paddingRight: expectedScale[3],
85
- paddingTop: expectedScale[3],
86
- paddingBottom: expectedScale[3]
87
- })
88
- })
89
-
90
- it(`applies side overrides in increasing specificity`, () => {
91
- const props = {
92
- space: 1,
93
- horizontal: 2,
94
- top: 3,
95
- right: 4
96
- }
97
- const { getByText } = render(
98
- <Theme>
99
- <Box {...props}>
100
- <Text>{textContent}</Text>
101
- </Box>
102
- </Theme>
103
- )
104
- expect(getByText(textContent).parent).toHaveStyle({
105
- paddingLeft: expectedScale[2],
106
- paddingRight: expectedScale[4],
107
- paddingTop: expectedScale[3],
108
- paddingBottom: expectedScale[1]
109
- })
110
- })
111
- })
@@ -1,86 +0,0 @@
1
- import React from 'react'
2
- import { render, fireEvent } from '@testing-library/react-native'
3
- import { StyleSheet } from 'react-native'
4
- import testTheme from '../../__fixtures__/testTheme'
5
-
6
- import Theme from '../../__fixtures__/Theme'
7
- import Button from '../../src/Button/Button'
8
-
9
- const label = 'Test label text'
10
-
11
- describe('Button', () => {
12
- it('renders a labelled, pressable button', async () => {
13
- const handlePress = jest.fn()
14
- const { getByRole } = render(
15
- <Theme>
16
- <Button onPress={handlePress}>{label}</Button>
17
- </Theme>
18
- )
19
-
20
- const button = getByRole('button')
21
- expect(button).toHaveTextContent(label)
22
-
23
- expect(handlePress).toHaveBeenCalledTimes(0)
24
- await fireEvent.press(button)
25
- expect(handlePress).toHaveBeenCalledTimes(1)
26
- })
27
-
28
- it('applies theme variants', () => {
29
- const { tokens } = testTheme.components.Button
30
- const { getByText } = render(
31
- <Theme>
32
- <Button onPress={() => {}}>regular</Button>
33
- <Button variant={{ solid: true }} onPress={() => {}}>
34
- solid
35
- </Button>
36
- </Theme>
37
- )
38
-
39
- expect(getByText('regular')).toHaveStyle({ color: tokens.color })
40
- expect(getByText('solid')).toHaveStyle({ color: '#ffffff' })
41
- })
42
-
43
- it('maintains size if border width changes as state changes', async () => {
44
- // React Native Testing Library doesn't seem to support Pressable states
45
- // so we have to simulate the pressed-in state
46
- const { getByText } = render(
47
- <Theme>
48
- <Button onPress={() => {}}>default</Button>
49
- <Button variant={{ pressed: true }} onPress={() => {}}>
50
- pressed
51
- </Button>
52
- </Theme>
53
- )
54
- const defaultButton = getByText('default')
55
- const pressedButton = getByText('pressed')
56
-
57
- const getStyle = (element) => StyleSheet.flatten(element.props.style)
58
- const getElementHeight = ({
59
- borderWidth = 0,
60
- paddingVertical = 0,
61
- paddingTop = 0,
62
- paddingBottom = 0,
63
- lineHeight = 0
64
- }) =>
65
- borderWidth * 2 +
66
- (paddingTop || paddingVertical) +
67
- (paddingBottom || paddingVertical) +
68
- lineHeight
69
- const getTotalHeight = (element) =>
70
- getElementHeight(getStyle(element)) +
71
- getElementHeight(getStyle(element.parent)) +
72
- getElementHeight(getStyle(element.parent.parent))
73
-
74
- const containerStyle = getStyle(defaultButton.parent.parent)
75
- const pressedContainerStyle = getStyle(pressedButton.parent.parent)
76
-
77
- // test theme has border width that increases during pressed state
78
- expect(containerStyle.borderWidth).toEqual(2)
79
- expect(pressedContainerStyle.borderWidth).toEqual(8)
80
-
81
- // ensure that the overall height is balanced to not change
82
- const expectedHeight = 56
83
- expect(getTotalHeight(defaultButton)).toBe(expectedHeight)
84
- expect(getTotalHeight(pressedButton)).toBe(expectedHeight)
85
- })
86
- })
@@ -1,82 +0,0 @@
1
- import React from 'react'
2
- import { render } from '@testing-library/react-native'
3
- import { Platform, Text } from 'react-native'
4
- import testTheme from '../../__fixtures__/testTheme'
5
-
6
- import Theme from '../../__fixtures__/Theme'
7
- import ButtonBase from '../../src/Button/ButtonBase'
8
-
9
- beforeEach(() => jest.clearAllMocks())
10
-
11
- describe('ButtonBase with render function child', () => {
12
- it('receives tokens in render function child', () => {
13
- const { tokens } = testTheme.components.Button
14
- const arbitraryWeight = '300'
15
- const { getByText } = render(
16
- <Theme>
17
- <ButtonBase onPress={() => {}} tokens={{ ...tokens, fontWeight: arbitraryWeight }}>
18
- {({ textStyles }) => <Text style={textStyles}>Function child</Text>}
19
- </ButtonBase>
20
- </Theme>
21
- )
22
-
23
- // Check we're not getting false positive pass on undefined values
24
- expect(tokens.color).toBeTruthy()
25
- expect(tokens.fontSize).toBeTruthy()
26
-
27
- expect(getByText('Function child')).toHaveStyle({
28
- color: tokens.color,
29
- fontSize: tokens.fontSize,
30
- fontWeight: arbitraryWeight
31
- })
32
- })
33
-
34
- it('receives button state in render function', () => {
35
- const { getByText } = render(
36
- <Theme>
37
- <ButtonBase onPress={() => {}} selected>
38
- {({ selected, inactive }) => (
39
- <>
40
- <Text>{`A: Selected: ${selected}`}</Text>
41
- <Text>{`A: Inactive: ${inactive}`}</Text>
42
- </>
43
- )}
44
- </ButtonBase>
45
- <ButtonBase onPress={() => {}} inactive>
46
- {({ selected, inactive }) => (
47
- <>
48
- <Text>{`B: Selected: ${selected}`}</Text>
49
- <Text>{`B: Inactive: ${inactive}`}</Text>
50
- </>
51
- )}
52
- </ButtonBase>
53
- <ButtonBase onPress={() => {}}>
54
- {({ pressed, hovered, focused }) => (
55
- <>
56
- <Text>{`C: Pressed: ${pressed}`}</Text>
57
- <Text>{`C: Hovered: ${hovered}`}</Text>
58
- <Text>{`C: Focused: ${focused}`}</Text>
59
- </>
60
- )}
61
- </ButtonBase>
62
- </Theme>
63
- )
64
-
65
- expect(getByText(/^A: Selected:/)).toHaveTextContent(/true$/)
66
- expect(getByText(/^A: Inactive:/)).toHaveTextContent(/false$/)
67
-
68
- expect(getByText(/^B: Selected:/)).toHaveTextContent(/false$/)
69
- expect(getByText(/^B: Inactive:/)).toHaveTextContent(/true$/)
70
-
71
- // React Native Testing Library doesn't seem to support Pressable state changes.
72
- // Best we can do is confirm we're getting the default false and not undefined.
73
- expect(getByText(/^C: Pressed:/)).toHaveTextContent(/false$/)
74
-
75
- // TODO: this won't be called until cross-platform Jest tests are configured
76
- // see https://github.com/telus/universal-design-system/issues/319
77
- if (Platform.OS === 'web') {
78
- expect(getByText(/^C: Hovered:/)).toHaveTextContent(/false$/)
79
- expect(getByText(/^C: Focused:/)).toHaveTextContent(/false$/)
80
- }
81
- })
82
- })