@telus-uds/components-base 1.8.0 → 1.8.3

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 (495) hide show
  1. package/CHANGELOG.md +34 -2
  2. package/component-docs.json +710 -668
  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 +33 -31
  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 +27 -25
  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 +27 -23
  27. package/lib/Feedback/Feedback.js +48 -35
  28. package/lib/Fieldset/Fieldset.js +16 -15
  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 +37 -30
  46. package/lib/InputLabel/LabelContent.js +12 -9
  47. package/lib/InputLabel/LabelContent.native.js +9 -6
  48. package/lib/InputSupports/InputSupports.js +11 -10
  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 +12 -11
  57. package/lib/List/ListItem.js +103 -79
  58. package/lib/Modal/Modal.js +74 -60
  59. package/lib/Notification/Notification.js +46 -33
  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 +28 -26
  70. package/lib/Radio/RadioInput.js +12 -10
  71. package/lib/RadioCard/RadioCard.js +15 -14
  72. package/lib/RadioCard/RadioCardGroup.js +28 -26
  73. package/lib/Search/Search.js +51 -31
  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 +60 -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 +89 -73
  111. package/lib/ToggleSwitch/ToggleSwitchGroup.js +36 -34
  112. package/lib/Tooltip/Backdrop.js +4 -3
  113. package/lib/Tooltip/Backdrop.native.js +5 -4
  114. package/lib/Tooltip/Tooltip.js +81 -65
  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 +6 -5
  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 +15 -12
  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 +13 -11
  144. package/src/List/List.jsx +30 -19
  145. package/src/List/ListItem.jsx +12 -2
  146. package/src/Modal/Modal.jsx +2 -1
  147. package/src/Pagination/Pagination.jsx +3 -0
  148. package/src/Search/Search.jsx +11 -0
  149. package/src/Select/Item.native.jsx +0 -7
  150. package/.storybook/main.js +0 -11
  151. package/.storybook/preview.js +0 -37
  152. package/.turbo/turbo-build.log +0 -8
  153. package/.turbo/turbo-lint.log +0 -3
  154. package/CHANGELOG.json +0 -311
  155. package/__fixtures__/Accessible.js +0 -34
  156. package/__fixtures__/Accessible.native.js +0 -34
  157. package/__fixtures__/Theme.jsx +0 -13
  158. package/__fixtures__/Viewport.jsx +0 -17
  159. package/__fixtures__/test-utils.js +0 -25
  160. package/__fixtures__/testTheme.js +0 -1830
  161. package/__tests__/A11yText/A11yText.test.jsx +0 -34
  162. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +0 -68
  163. package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +0 -287
  164. package/__tests__/Box/Box.test.jsx +0 -111
  165. package/__tests__/Button/Button.test.jsx +0 -86
  166. package/__tests__/Button/ButtonBase.test.jsx +0 -82
  167. package/__tests__/Button/ButtonGroup.test.jsx +0 -347
  168. package/__tests__/Button/ButtonLink.test.jsx +0 -61
  169. package/__tests__/Card/Card.test.jsx +0 -63
  170. package/__tests__/Checkbox/Checkbox.test.jsx +0 -94
  171. package/__tests__/Checkbox/CheckboxGroup.test.jsx +0 -246
  172. package/__tests__/Divider/Divider.test.jsx +0 -91
  173. package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +0 -109
  174. package/__tests__/Feedback/Feedback.test.jsx +0 -42
  175. package/__tests__/FlexGrid/Col.test.jsx +0 -261
  176. package/__tests__/FlexGrid/FlexGrid.test.jsx +0 -136
  177. package/__tests__/FlexGrid/Row.test.jsx +0 -273
  178. package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +0 -165
  179. package/__tests__/Icon/Icon.test.jsx +0 -61
  180. package/__tests__/IconButton/IconButton.test.jsx +0 -52
  181. package/__tests__/InputLabel/InputLabel.test.jsx +0 -28
  182. package/__tests__/InputLabel/__snapshots__/InputLabel.test.jsx.snap +0 -3
  183. package/__tests__/InputSupports/InputSupports.test.jsx +0 -60
  184. package/__tests__/Link/Link.test.jsx +0 -63
  185. package/__tests__/Link/TextButton.test.jsx +0 -35
  186. package/__tests__/List/List.test.jsx +0 -60
  187. package/__tests__/Modal/Modal.test.jsx +0 -47
  188. package/__tests__/Notification/Notification.test.jsx +0 -20
  189. package/__tests__/Pagination/Pagination.test.jsx +0 -160
  190. package/__tests__/Progress/Progress.test.jsx +0 -79
  191. package/__tests__/Radio/Radio.test.jsx +0 -87
  192. package/__tests__/Radio/RadioGroup.test.jsx +0 -220
  193. package/__tests__/RadioCard/RadioCard.test.jsx +0 -87
  194. package/__tests__/RadioCard/RadioCardGroup.test.jsx +0 -246
  195. package/__tests__/Search/Search.test.jsx +0 -73
  196. package/__tests__/Select/Select.test.jsx +0 -94
  197. package/__tests__/SideNav/SideNav.test.jsx +0 -110
  198. package/__tests__/Skeleton/Skeleton.test.jsx +0 -61
  199. package/__tests__/Spacer/Spacer.test.jsx +0 -63
  200. package/__tests__/StackView/StackView.test.jsx +0 -216
  201. package/__tests__/StackView/StackWrap.test.jsx +0 -47
  202. package/__tests__/StackView/getStackedContent.test.jsx +0 -295
  203. package/__tests__/StepTracker/StepTracker.test.jsx +0 -94
  204. package/__tests__/Tabs/Tabs.test.jsx +0 -40
  205. package/__tests__/Tags/Tags.test.jsx +0 -327
  206. package/__tests__/TextInput/TextArea.test.jsx +0 -35
  207. package/__tests__/TextInput/TextInputBase.test.jsx +0 -125
  208. package/__tests__/ThemeProvider/ThemeProvider.test.jsx +0 -77
  209. package/__tests__/ThemeProvider/useThemeTokens.test.jsx +0 -514
  210. package/__tests__/ThemeProvider/utils/theme-tokens.test.js +0 -41
  211. package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +0 -82
  212. package/__tests__/ToggleSwitch/ToggleSwitchGroup.test.jsx +0 -192
  213. package/__tests__/Tooltip/Tooltip.test.jsx +0 -65
  214. package/__tests__/Tooltip/getTooltipPosition.test.js +0 -79
  215. package/__tests__/Typography/typography.test.jsx +0 -90
  216. package/__tests__/utils/children.test.jsx +0 -128
  217. package/__tests__/utils/containUniqueFields.test.js +0 -25
  218. package/__tests__/utils/input.test.js +0 -375
  219. package/__tests__/utils/props.test.js +0 -36
  220. package/__tests__/utils/semantics.test.jsx +0 -34
  221. package/__tests__/utils/useCopy.test.js +0 -42
  222. package/__tests__/utils/useResponsiveProp.test.jsx +0 -202
  223. package/__tests__/utils/useSpacingScale.test.jsx +0 -273
  224. package/__tests__/utils/useUniqueId.test.js +0 -31
  225. package/babel.config.js +0 -35
  226. package/generate-component-docs.js +0 -72
  227. package/jest.config.js +0 -32
  228. package/lib-module/A11yInfoProvider/index.js +0 -62
  229. package/lib-module/A11yText/index.js +0 -55
  230. package/lib-module/ActivityIndicator/Spinner.js +0 -76
  231. package/lib-module/ActivityIndicator/Spinner.native.js +0 -143
  232. package/lib-module/ActivityIndicator/index.js +0 -40
  233. package/lib-module/ActivityIndicator/shared.js +0 -12
  234. package/lib-module/BaseProvider/index.js +0 -26
  235. package/lib-module/Box/Box.js +0 -243
  236. package/lib-module/Box/index.js +0 -2
  237. package/lib-module/Button/Button.js +0 -25
  238. package/lib-module/Button/ButtonBase.js +0 -254
  239. package/lib-module/Button/ButtonGroup.js +0 -245
  240. package/lib-module/Button/ButtonLink.js +0 -39
  241. package/lib-module/Button/index.js +0 -4
  242. package/lib-module/Button/propTypes.js +0 -36
  243. package/lib-module/Card/Card.js +0 -83
  244. package/lib-module/Card/CardBase.js +0 -62
  245. package/lib-module/Card/PressableCardBase.js +0 -113
  246. package/lib-module/Card/index.js +0 -4
  247. package/lib-module/Checkbox/Checkbox.js +0 -332
  248. package/lib-module/Checkbox/CheckboxGroup.js +0 -231
  249. package/lib-module/Checkbox/CheckboxInput.js +0 -58
  250. package/lib-module/Checkbox/CheckboxInput.native.js +0 -6
  251. package/lib-module/Checkbox/index.js +0 -3
  252. package/lib-module/Divider/Divider.js +0 -123
  253. package/lib-module/Divider/index.js +0 -2
  254. package/lib-module/ExpandCollapse/Accordion.js +0 -15
  255. package/lib-module/ExpandCollapse/Control.js +0 -130
  256. package/lib-module/ExpandCollapse/ExpandCollapse.js +0 -94
  257. package/lib-module/ExpandCollapse/Panel.js +0 -159
  258. package/lib-module/ExpandCollapse/index.js +0 -7
  259. package/lib-module/Feedback/Feedback.js +0 -144
  260. package/lib-module/Feedback/index.js +0 -2
  261. package/lib-module/Fieldset/Fieldset.js +0 -152
  262. package/lib-module/Fieldset/FieldsetContainer.js +0 -29
  263. package/lib-module/Fieldset/FieldsetContainer.native.js +0 -20
  264. package/lib-module/Fieldset/Legend.js +0 -21
  265. package/lib-module/Fieldset/Legend.native.js +0 -28
  266. package/lib-module/Fieldset/cssReset.js +0 -14
  267. package/lib-module/Fieldset/index.js +0 -2
  268. package/lib-module/FlexGrid/Col/Col.js +0 -275
  269. package/lib-module/FlexGrid/Col/index.js +0 -2
  270. package/lib-module/FlexGrid/FlexGrid.js +0 -147
  271. package/lib-module/FlexGrid/Row/Row.js +0 -183
  272. package/lib-module/FlexGrid/Row/index.js +0 -2
  273. package/lib-module/FlexGrid/helpers/index.js +0 -18
  274. package/lib-module/FlexGrid/index.js +0 -2
  275. package/lib-module/FlexGrid/providers/GutterContext.js +0 -3
  276. package/lib-module/HorizontalScroll/HorizontalScroll.js +0 -170
  277. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +0 -77
  278. package/lib-module/HorizontalScroll/ScrollViewEnd.js +0 -47
  279. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +0 -24
  280. package/lib-module/HorizontalScroll/dictionary.js +0 -11
  281. package/lib-module/HorizontalScroll/index.js +0 -11
  282. package/lib-module/HorizontalScroll/itemPositions.js +0 -106
  283. package/lib-module/Icon/Icon.js +0 -61
  284. package/lib-module/Icon/IconText.js +0 -81
  285. package/lib-module/Icon/index.js +0 -4
  286. package/lib-module/IconButton/IconButton.js +0 -115
  287. package/lib-module/IconButton/index.js +0 -2
  288. package/lib-module/InputLabel/InputLabel.js +0 -141
  289. package/lib-module/InputLabel/LabelContent.js +0 -24
  290. package/lib-module/InputLabel/LabelContent.native.js +0 -16
  291. package/lib-module/InputLabel/index.js +0 -2
  292. package/lib-module/InputSupports/InputSupports.js +0 -95
  293. package/lib-module/InputSupports/index.js +0 -2
  294. package/lib-module/InputSupports/useInputSupports.js +0 -31
  295. package/lib-module/Link/ChevronLink.js +0 -51
  296. package/lib-module/Link/InlinePressable.js +0 -37
  297. package/lib-module/Link/InlinePressable.native.js +0 -85
  298. package/lib-module/Link/Link.js +0 -27
  299. package/lib-module/Link/LinkBase.js +0 -223
  300. package/lib-module/Link/TextButton.js +0 -34
  301. package/lib-module/Link/index.js +0 -5
  302. package/lib-module/List/List.js +0 -55
  303. package/lib-module/List/ListItem.js +0 -223
  304. package/lib-module/List/index.js +0 -5
  305. package/lib-module/Modal/Modal.js +0 -208
  306. package/lib-module/Modal/dictionary.js +0 -9
  307. package/lib-module/Modal/index.js +0 -2
  308. package/lib-module/Notification/Notification.js +0 -196
  309. package/lib-module/Notification/dictionary.js +0 -8
  310. package/lib-module/Notification/index.js +0 -2
  311. package/lib-module/Pagination/PageButton.js +0 -65
  312. package/lib-module/Pagination/Pagination.js +0 -140
  313. package/lib-module/Pagination/SideButton.js +0 -103
  314. package/lib-module/Pagination/dictionary.js +0 -18
  315. package/lib-module/Pagination/index.js +0 -2
  316. package/lib-module/Pagination/usePagination.js +0 -72
  317. package/lib-module/Progress/Progress.js +0 -85
  318. package/lib-module/Progress/ProgressBar.js +0 -134
  319. package/lib-module/Progress/ProgressBarBackground.js +0 -41
  320. package/lib-module/Progress/index.js +0 -4
  321. package/lib-module/Radio/Radio.js +0 -274
  322. package/lib-module/Radio/RadioButton.js +0 -128
  323. package/lib-module/Radio/RadioGroup.js +0 -241
  324. package/lib-module/Radio/RadioInput.js +0 -60
  325. package/lib-module/Radio/RadioInput.native.js +0 -6
  326. package/lib-module/Radio/index.js +0 -3
  327. package/lib-module/RadioCard/RadioCard.js +0 -218
  328. package/lib-module/RadioCard/RadioCardGroup.js +0 -248
  329. package/lib-module/RadioCard/index.js +0 -3
  330. package/lib-module/Search/Search.js +0 -241
  331. package/lib-module/Search/dictionary.js +0 -12
  332. package/lib-module/Search/index.js +0 -2
  333. package/lib-module/Select/Group.js +0 -20
  334. package/lib-module/Select/Group.native.js +0 -14
  335. package/lib-module/Select/Item.js +0 -17
  336. package/lib-module/Select/Item.native.js +0 -9
  337. package/lib-module/Select/Picker.js +0 -67
  338. package/lib-module/Select/Picker.native.js +0 -110
  339. package/lib-module/Select/Select.js +0 -316
  340. package/lib-module/Select/index.js +0 -6
  341. package/lib-module/SideNav/Item.js +0 -139
  342. package/lib-module/SideNav/ItemContent.js +0 -45
  343. package/lib-module/SideNav/ItemsGroup.js +0 -115
  344. package/lib-module/SideNav/SideNav.js +0 -133
  345. package/lib-module/SideNav/index.js +0 -1
  346. package/lib-module/Skeleton/Skeleton.js +0 -163
  347. package/lib-module/Skeleton/index.js +0 -2
  348. package/lib-module/Skeleton/skeleton.constant.js +0 -3
  349. package/lib-module/Skeleton/skeletonWebAnimation.js +0 -18
  350. package/lib-module/Skeleton/useSkeletonNativeAnimation.js +0 -24
  351. package/lib-module/Spacer/Spacer.js +0 -97
  352. package/lib-module/Spacer/index.js +0 -2
  353. package/lib-module/StackView/StackView.js +0 -124
  354. package/lib-module/StackView/StackWrap.js +0 -48
  355. package/lib-module/StackView/StackWrap.native.js +0 -3
  356. package/lib-module/StackView/StackWrapBox.js +0 -114
  357. package/lib-module/StackView/StackWrapGap.js +0 -58
  358. package/lib-module/StackView/common.js +0 -32
  359. package/lib-module/StackView/getStackedContent.js +0 -123
  360. package/lib-module/StackView/index.js +0 -5
  361. package/lib-module/StepTracker/Step.js +0 -229
  362. package/lib-module/StepTracker/StepTracker.js +0 -175
  363. package/lib-module/StepTracker/dictionary.js +0 -10
  364. package/lib-module/StepTracker/index.js +0 -2
  365. package/lib-module/Tabs/Tabs.js +0 -113
  366. package/lib-module/Tabs/TabsItem.js +0 -215
  367. package/lib-module/Tabs/index.js +0 -2
  368. package/lib-module/Tags/Tags.js +0 -245
  369. package/lib-module/Tags/index.js +0 -2
  370. package/lib-module/TextInput/TextArea.js +0 -88
  371. package/lib-module/TextInput/TextInput.js +0 -68
  372. package/lib-module/TextInput/TextInputBase.js +0 -233
  373. package/lib-module/TextInput/index.js +0 -3
  374. package/lib-module/TextInput/propTypes.js +0 -37
  375. package/lib-module/ThemeProvider/ThemeProvider.js +0 -35
  376. package/lib-module/ThemeProvider/index.js +0 -6
  377. package/lib-module/ThemeProvider/useSetTheme.js +0 -22
  378. package/lib-module/ThemeProvider/useTheme.js +0 -14
  379. package/lib-module/ThemeProvider/useThemeTokens.js +0 -105
  380. package/lib-module/ThemeProvider/utils/index.js +0 -2
  381. package/lib-module/ThemeProvider/utils/styles.js +0 -174
  382. package/lib-module/ThemeProvider/utils/theme-tokens.js +0 -151
  383. package/lib-module/ToggleSwitch/ToggleSwitch.js +0 -234
  384. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +0 -218
  385. package/lib-module/ToggleSwitch/index.js +0 -3
  386. package/lib-module/Tooltip/Backdrop.js +0 -52
  387. package/lib-module/Tooltip/Backdrop.native.js +0 -43
  388. package/lib-module/Tooltip/Tooltip.js +0 -332
  389. package/lib-module/Tooltip/dictionary.js +0 -8
  390. package/lib-module/Tooltip/getTooltipPosition.js +0 -164
  391. package/lib-module/Tooltip/index.js +0 -2
  392. package/lib-module/TooltipButton/TooltipButton.js +0 -71
  393. package/lib-module/TooltipButton/index.js +0 -2
  394. package/lib-module/Typography/Typography.js +0 -120
  395. package/lib-module/Typography/index.js +0 -2
  396. package/lib-module/ViewportProvider/ViewportProvider.js +0 -28
  397. package/lib-module/ViewportProvider/index.js +0 -3
  398. package/lib-module/ViewportProvider/useViewport.js +0 -3
  399. package/lib-module/ViewportProvider/useViewportListener.js +0 -43
  400. package/lib-module/index.js +0 -48
  401. package/lib-module/utils/a11y/index.js +0 -2
  402. package/lib-module/utils/a11y/semantics.js +0 -154
  403. package/lib-module/utils/a11y/textSize.js +0 -34
  404. package/lib-module/utils/animation/index.js +0 -2
  405. package/lib-module/utils/animation/useVerticalExpandAnimation.js +0 -61
  406. package/lib-module/utils/children.js +0 -118
  407. package/lib-module/utils/containUniqueFields.js +0 -26
  408. package/lib-module/utils/index.js +0 -16
  409. package/lib-module/utils/info/index.js +0 -7
  410. package/lib-module/utils/info/platform/index.js +0 -11
  411. package/lib-module/utils/info/platform/platform.android.js +0 -1
  412. package/lib-module/utils/info/platform/platform.ios.js +0 -1
  413. package/lib-module/utils/info/platform/platform.js +0 -1
  414. package/lib-module/utils/info/platform/platform.native.js +0 -4
  415. package/lib-module/utils/info/versions.js +0 -5
  416. package/lib-module/utils/input.js +0 -180
  417. package/lib-module/utils/pressability.js +0 -97
  418. package/lib-module/utils/props/a11yProps.js +0 -140
  419. package/lib-module/utils/props/clickProps.js +0 -25
  420. package/lib-module/utils/props/componentPropType.js +0 -63
  421. package/lib-module/utils/props/copyPropTypes.js +0 -2
  422. package/lib-module/utils/props/getPropSelector.js +0 -6
  423. package/lib-module/utils/props/handlerProps.js +0 -59
  424. package/lib-module/utils/props/hrefAttrsProp.js +0 -30
  425. package/lib-module/utils/props/index.js +0 -19
  426. package/lib-module/utils/props/inputSupportsProps.js +0 -59
  427. package/lib-module/utils/props/linkProps.js +0 -43
  428. package/lib-module/utils/props/paddingProp.js +0 -9
  429. package/lib-module/utils/props/pressProps.js +0 -42
  430. package/lib-module/utils/props/rectProp.js +0 -9
  431. package/lib-module/utils/props/responsiveProps.js +0 -30
  432. package/lib-module/utils/props/selectSystemProps.js +0 -24
  433. package/lib-module/utils/props/spacingProps.js +0 -56
  434. package/lib-module/utils/props/textInputProps.js +0 -194
  435. package/lib-module/utils/props/textProps.js +0 -59
  436. package/lib-module/utils/props/tokens.js +0 -120
  437. package/lib-module/utils/props/variantProp.js +0 -18
  438. package/lib-module/utils/props/viewProps.js +0 -22
  439. package/lib-module/utils/ssr.js +0 -35
  440. package/lib-module/utils/useCopy.js +0 -42
  441. package/lib-module/utils/useHash.js +0 -44
  442. package/lib-module/utils/useHash.native.js +0 -7
  443. package/lib-module/utils/useResponsiveProp.js +0 -47
  444. package/lib-module/utils/useSpacingScale.js +0 -123
  445. package/lib-module/utils/useUniqueId.js +0 -12
  446. package/lib-module/utils/withLinkRouter.js +0 -82
  447. package/stories/A11yText/A11yText.stories.jsx +0 -71
  448. package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +0 -22
  449. package/stories/Box/Box.stories.jsx +0 -143
  450. package/stories/Button/Button.stories.jsx +0 -72
  451. package/stories/Button/ButtonGroup.stories.jsx +0 -81
  452. package/stories/Button/ButtonLink.stories.jsx +0 -30
  453. package/stories/Card/Card.stories.jsx +0 -62
  454. package/stories/Checkbox/Checkbox.stories.jsx +0 -94
  455. package/stories/Divider/Divider.stories.jsx +0 -68
  456. package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +0 -112
  457. package/stories/Feedback/Feedback.stories.jsx +0 -96
  458. package/stories/FlexGrid/01 FlexGrid.stories.jsx +0 -54
  459. package/stories/FlexGrid/02 Row.stories.jsx +0 -41
  460. package/stories/FlexGrid/03 Col.stories.jsx +0 -141
  461. package/stories/Icon/Icon.stories.jsx +0 -79
  462. package/stories/IconButton/IconButton.stories.jsx +0 -50
  463. package/stories/InputLabel/InputLabel.stories.jsx +0 -39
  464. package/stories/Link/ChevronLink.stories.jsx +0 -48
  465. package/stories/Link/Link.stories.jsx +0 -90
  466. package/stories/Link/TextButton.stories.jsx +0 -79
  467. package/stories/List/List.stories.jsx +0 -117
  468. package/stories/Modal/Modal.stories.jsx +0 -54
  469. package/stories/Notification/Notification.stories.jsx +0 -82
  470. package/stories/Pagination/Pagination.stories.jsx +0 -64
  471. package/stories/Progress/Progress.stories.jsx +0 -93
  472. package/stories/Radio/Radio.stories.jsx +0 -100
  473. package/stories/RadioCard/RadioCard.stories.jsx +0 -98
  474. package/stories/Search/Search.stories.jsx +0 -66
  475. package/stories/Select/Select.stories.jsx +0 -55
  476. package/stories/SideNav/SideNav.stories.jsx +0 -42
  477. package/stories/SideNav/SideNavItem.stories.jsx +0 -9
  478. package/stories/SideNav/SideNavItemsGroup.stories.jsx +0 -17
  479. package/stories/Skeleton/Skeleton.stories.jsx +0 -36
  480. package/stories/Spacer/Spacer.stories.jsx +0 -38
  481. package/stories/StackView/StackView.stories.jsx +0 -75
  482. package/stories/StackView/StackWrap.stories.jsx +0 -64
  483. package/stories/StepTracker/StepTracker.stories.jsx +0 -71
  484. package/stories/Tabs/Tabs.stories.jsx +0 -98
  485. package/stories/Tags/Tags.stories.jsx +0 -69
  486. package/stories/TextInput/TextArea.stories.jsx +0 -101
  487. package/stories/TextInput/TextInput.stories.jsx +0 -141
  488. package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +0 -64
  489. package/stories/ToggleSwitch/ToggleSwitchGroup.stories.jsx +0 -81
  490. package/stories/Tooltip/Tooltip.stories.jsx +0 -81
  491. package/stories/TooltipButton/TooltipButton.stories.jsx +0 -11
  492. package/stories/Typography/Typography.stories.jsx +0 -49
  493. package/stories/platform-supports.jsx +0 -32
  494. package/stories/platform-supports.native.jsx +0 -3
  495. package/stories/supports.jsx +0 -236
@@ -1,165 +0,0 @@
1
- /* eslint-disable react/no-multi-comp */
2
- import React, { useState } from 'react'
3
- import { Pressable, Text, View } from 'react-native'
4
- import { fireEvent, render } from '@testing-library/react-native'
5
- import {
6
- getItemPositionLayoutHandler,
7
- getItemPositionScrollTarget,
8
- useItemPositions
9
- } from '../../src/HorizontalScroll/itemPositions'
10
-
11
- // ScrollViewRef.scrollTo doesn't work in Jest - unit-test the utilities instead
12
- describe('HorizontalScroll', () => {
13
- describe('getItemPositionScrollTarget', () => {
14
- const positionsWithoutSpacing = {
15
- 0: { start: 0, end: 100 },
16
- 1: { start: 100, end: 200 },
17
- 2: { start: 200, end: 300 }
18
- }
19
- const positions = {
20
- 0: { start: 0, end: 50 },
21
- 1: { start: 100, end: 150 },
22
- 2: { start: 200, end: 250 }
23
- }
24
- it('scrolls to the start of an item rather than chopping it', () => {
25
- const x = getItemPositionScrollTarget(150, 300, positionsWithoutSpacing)
26
- expect(x).toBe(100)
27
- })
28
- it('offsets the position by a button clearance', () => {
29
- const x = getItemPositionScrollTarget(150, 300, positionsWithoutSpacing, 20)
30
- expect(x).toBe(80)
31
- })
32
- it('scrolls exactly if landing on a gap', () => {
33
- const x = getItemPositionScrollTarget(170, 300, positions)
34
- expect(x).toBe(170)
35
- })
36
- it('applies button clearance if landing on a gap', () => {
37
- const x = getItemPositionScrollTarget(170, 300, positions, 40)
38
- expect(x).toBe(130)
39
- })
40
- it('does not apply button clearance on reaching the end', () => {
41
- const x = getItemPositionScrollTarget(300, 300, positions, 40)
42
- expect(x).toBe(300)
43
- })
44
- it('does not exceed the maximum', () => {
45
- const x = getItemPositionScrollTarget(320, 300, positions, 40)
46
- expect(x).toBe(300)
47
- })
48
- it('does not go below 0', () => {
49
- const x = getItemPositionScrollTarget(-420, 300, positions, 40)
50
- expect(x).toBe(0)
51
- })
52
- })
53
-
54
- // onLayout also doesn't work naturally in jest
55
- describe('getItemPositionLayoutHandler', () => {
56
- // Test component using useItemPositions with getItemPositionLayoutHandler
57
- // that can be rerendered manually and that outputs itemPositions value
58
- const MockComponent = () => {
59
- const [num, setNum] = useState()
60
- const [{ positions }] = useItemPositions()
61
- return (
62
- <View>
63
- <View testID="onlayout[0]" onLayout={getItemPositionLayoutHandler(positions, 0)} />
64
- <View testID="onlayout[1]" onLayout={getItemPositionLayoutHandler(positions, 1)} />
65
- <Text testID="output">{JSON.stringify(positions)}</Text>
66
- <Pressable testID="rerender" onPress={() => setNum(num + 1)}>
67
- <Text>{num}</Text>
68
- </Pressable>
69
- </View>
70
- )
71
- }
72
- it('gets width and x positions from onLayout events', async () => {
73
- const { getByTestId } = render(<MockComponent />)
74
-
75
- // onLayout doesn't work in jest but can be called directly as an event, but we
76
- // have to pass the event object. Can't test that it gets them correctly from style
77
- await fireEvent(getByTestId('onlayout[0]'), 'layout', {
78
- nativeEvent: {
79
- layout: {
80
- width: 200,
81
- x: 0
82
- }
83
- }
84
- })
85
- await fireEvent(getByTestId('onlayout[1]'), 'layout', {
86
- nativeEvent: {
87
- layout: {
88
- width: 100,
89
- x: 250
90
- }
91
- }
92
- })
93
- await fireEvent.press(getByTestId('rerender'))
94
- expect(getByTestId('output')).toHaveTextContent(
95
- '{"0":{"start":0,"end":200},"1":{"start":250,"end":350}}'
96
- )
97
- })
98
- it('does not cause a rerender from onLayout events alone', async () => {
99
- const { getByTestId } = render(<MockComponent />)
100
-
101
- expect(getByTestId('output')).toHaveTextContent('{}')
102
- await fireEvent(getByTestId('onlayout[0]'), 'layout', {
103
- nativeEvent: {
104
- layout: {
105
- width: 200,
106
- x: 0
107
- }
108
- }
109
- })
110
- await fireEvent(getByTestId('onlayout[1]'), 'layout', {
111
- nativeEvent: {
112
- layout: {
113
- width: 100,
114
- x: 250
115
- }
116
- }
117
- })
118
- expect(getByTestId('output')).toHaveTextContent('{}')
119
- })
120
- })
121
-
122
- describe('useItemPositions', () => {
123
- // Again we're limited in what we can test; we can't test natural onLayout
124
- // or page load timing, but we can affirm that calling `setIsReady` after layout
125
- // events causes a re-render that can access positions data
126
- const IsReadyMockComponent = () => {
127
- const [{ positions, setIsReady }] = useItemPositions()
128
- return (
129
- <View testID="container" onLayout={setIsReady}>
130
- <View testID="onlayout[0]" onLayout={getItemPositionLayoutHandler(positions, 0)} />
131
- <View testID="onlayout[1]" onLayout={getItemPositionLayoutHandler(positions, 1)} />
132
- <Text testID="output">{JSON.stringify(positions)}</Text>
133
- </View>
134
- )
135
- }
136
- it('causes a rerender when setIsReady is called', async () => {
137
- const { getByTestId } = render(<IsReadyMockComponent />)
138
-
139
- expect(getByTestId('output')).toHaveTextContent('{}')
140
- await fireEvent(getByTestId('onlayout[0]'), 'layout', {
141
- nativeEvent: {
142
- layout: {
143
- width: 200,
144
- x: 0
145
- }
146
- }
147
- })
148
- await fireEvent(getByTestId('onlayout[1]'), 'layout', {
149
- nativeEvent: {
150
- layout: {
151
- width: 100,
152
- x: 250
153
- }
154
- }
155
- })
156
- await fireEvent(getByTestId('container'), 'layout', {
157
- nativeEvent: { layout: {} }
158
- })
159
-
160
- expect(getByTestId('output')).toHaveTextContent(
161
- '{"0":{"start":0,"end":200},"1":{"start":250,"end":350}}'
162
- )
163
- })
164
- })
165
- })
@@ -1,61 +0,0 @@
1
- import React from 'react'
2
- import { Text } from 'react-native'
3
- import { render } from '@testing-library/react-native'
4
-
5
- import Theme from '../../__fixtures__/Theme'
6
- import testTheme from '../../__fixtures__/testTheme'
7
- import Icon from '../../src/Icon/Icon'
8
-
9
- // We're limited in what's possible to usefully test in SVG icons in Jest
10
- // but we can test that the resolution of themes and props works as expected
11
- const testID = 'InnerComponent'
12
- const InnerComponent = (props) => <Text testID={testID}>{JSON.stringify(props)}</Text>
13
- const { tokens, rules } = testTheme.components.Icon
14
-
15
- describe('Icon', () => {
16
- it('gets default styles from theme', () => {
17
- const { getByTestId } = render(
18
- <Theme>
19
- <Icon icon={InnerComponent} />
20
- </Theme>
21
- )
22
-
23
- const innerContent = getByTestId(testID)
24
- const expected = { ...tokens }
25
-
26
- expect(innerContent).toHaveTextContent(JSON.stringify(expected))
27
- })
28
-
29
- it('gets styles from variant', () => {
30
- const { getByTestId } = render(
31
- <Theme>
32
- <Icon icon={InnerComponent} variant={{ size: 'small' }} />
33
- </Theme>
34
- )
35
-
36
- const innerContent = getByTestId(testID)
37
- const expected = {
38
- ...tokens,
39
- ...rules.find((rule) => rule.if.size === 'small').tokens
40
- }
41
-
42
- expect(innerContent).toHaveTextContent(JSON.stringify(expected))
43
- })
44
-
45
- it('overrides theme styles with passed in styles via tokens prop', () => {
46
- const props = { tokens: { size: 30 } }
47
- const { getByTestId } = render(
48
- <Theme>
49
- <Icon icon={InnerComponent} {...props} />
50
- </Theme>
51
- )
52
-
53
- const innerContent = getByTestId(testID)
54
- const expected = {
55
- ...tokens,
56
- ...props.tokens
57
- }
58
-
59
- expect(innerContent).toHaveTextContent(JSON.stringify(expected))
60
- })
61
- })
@@ -1,52 +0,0 @@
1
- import React from 'react'
2
- import { fireEvent, render } from '@testing-library/react-native'
3
-
4
- import { IconButton } from '../../src'
5
- import Theme from '../../__fixtures__/Theme'
6
-
7
- describe('IconButton', () => {
8
- it('renders a link if href is passed', () => {
9
- const { queryByRole } = render(<IconButton href="https://telus.com" icon={() => null} />, {
10
- wrapper: Theme
11
- })
12
-
13
- expect(queryByRole('link')).toBeTruthy()
14
-
15
- expect(queryByRole('button')).toBeFalsy()
16
- })
17
-
18
- it('renders a button if onPress is passed', () => {
19
- const { queryByRole } = render(<IconButton onPress={() => {}} icon={() => null} />, {
20
- wrapper: Theme
21
- })
22
-
23
- expect(queryByRole('button')).toBeTruthy()
24
-
25
- expect(queryByRole('link')).toBeFalsy()
26
- })
27
-
28
- it('renders an accessible label', () => {
29
- const { getByA11yLabel } = render(
30
- <IconButton onPress={() => {}} icon={() => null} accessibilityLabel="test label" />,
31
- {
32
- wrapper: Theme
33
- }
34
- )
35
-
36
- expect(getByA11yLabel('test label')).toBeTruthy()
37
- })
38
-
39
- it('calls onPress function when pressed', async () => {
40
- const handlePress = jest.fn()
41
- const { getByA11yLabel } = render(
42
- <IconButton onPress={handlePress} icon={() => null} accessibilityLabel="test label" />,
43
- {
44
- wrapper: Theme
45
- }
46
- )
47
- const iconButton = getByA11yLabel('test label')
48
- expect(handlePress).toHaveBeenCalledTimes(0)
49
- await fireEvent.press(iconButton)
50
- expect(handlePress).toHaveBeenCalledTimes(1)
51
- })
52
- })
@@ -1,28 +0,0 @@
1
- import React from 'react'
2
- import { render } from '@testing-library/react-native'
3
-
4
- import InputLabel from '../../src/InputLabel'
5
- import Theme from '../../__fixtures__/Theme'
6
- import tooltipDictionary from '../../src/Tooltip/dictionary'
7
-
8
- const label = 'Test label'
9
-
10
- const setup = (props) =>
11
- render(<InputLabel label={label} {...props} />, {
12
- wrapper: Theme
13
- })
14
-
15
- describe('InputLabel', () => {
16
- it('renders correctly and matches the snapshot', () => {
17
- const { container, getByText } = setup()
18
-
19
- expect(getByText(label)).toBeTruthy()
20
- expect(container.firstChild).toMatchSnapshot()
21
- })
22
-
23
- it('passes the copy prop down to the tooltip component', () => {
24
- const { getByA11yLabel } = setup({ copy: 'fr', tooltip: 'Test tooltip' })
25
-
26
- expect(getByA11yLabel(tooltipDictionary.fr.a11yText)).toBeTruthy()
27
- })
28
- })
@@ -1,3 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`InputLabel renders correctly and matches the snapshot 1`] = `undefined`;
@@ -1,60 +0,0 @@
1
- import React from 'react'
2
- import { fireEvent, render } from '@testing-library/react-native'
3
-
4
- import InputSupports from '../../src/InputSupports'
5
- import Theme from '../../__fixtures__/Theme'
6
- import Viewport from '../../__fixtures__/Viewport'
7
- import tooltipDictionary from '../../src/Tooltip/dictionary'
8
-
9
- // eslint-disable-next-line react/prop-types
10
- const Wrapper = ({ children }) => (
11
- <Viewport viewport="xs">
12
- <Theme>{children}</Theme>
13
- </Viewport>
14
- )
15
-
16
- describe('InputSupports', () => {
17
- it('renders the label', () => {
18
- const { queryByText } = render(<InputSupports label="Test label content" />, {
19
- wrapper: Wrapper
20
- })
21
-
22
- expect(queryByText('Test label content')).toBeTruthy()
23
- })
24
-
25
- it('renders the hint', () => {
26
- const { queryByText } = render(
27
- <InputSupports label="Test label content" hint="Test hint content" />,
28
- { wrapper: Wrapper }
29
- )
30
-
31
- expect(queryByText('Test hint content')).toBeTruthy()
32
- })
33
-
34
- it('renders the feedback', () => {
35
- const { queryByText } = render(<InputSupports feedback="Test feedback content" />, {
36
- wrapper: Wrapper
37
- })
38
-
39
- expect(queryByText('Test feedback content')).toBeTruthy()
40
- })
41
-
42
- it('renders the tooltip which content shows up when pressed', () => {
43
- const { queryByText, getByRole } = render(
44
- <InputSupports label="Test label content" tooltip="Test tooltip content" />,
45
- { wrapper: Wrapper }
46
- )
47
-
48
- fireEvent(getByRole('button'), 'press')
49
- expect(queryByText('Test tooltip content')).toBeTruthy()
50
- })
51
-
52
- it('passes the copy prop down to the tooltip component', () => {
53
- const { getByA11yLabel } = render(
54
- <InputSupports copy="fr" label="Test label content" tooltip="Test tooltip content" />,
55
- { wrapper: Wrapper }
56
- )
57
-
58
- expect(getByA11yLabel(tooltipDictionary.fr.a11yText)).toBeTruthy()
59
- })
60
- })
@@ -1,63 +0,0 @@
1
- import React from 'react'
2
- import { Platform, Linking } from 'react-native'
3
- import { render, fireEvent } from '@testing-library/react-native'
4
-
5
- import Theme from '../../__fixtures__/Theme'
6
- import Link from '../../src/Link/Link'
7
-
8
- const href = 'https://example.com'
9
-
10
- describe('Link', () => {
11
- it('renders an accessible link', async () => {
12
- const label = 'Test link text'
13
- const { getByRole } = render(
14
- <Theme>
15
- <Link href={href}>{label}</Link>
16
- </Theme>
17
- )
18
-
19
- const link = getByRole('link')
20
- expect(link).toHaveTextContent(label)
21
- })
22
-
23
- // TODO: this won't be called until cross-platform Jest tests are configured
24
- // see https://github.com/telus/universal-design-system/issues/319
25
- if (Platform.OS === 'web') {
26
- it('defers to platform link handling (web)', async () => {
27
- // This test is untested
28
- const label = 'Click me'
29
- jest.spyOn(Linking, 'openURL')
30
- const originalValue = Platform.OS
31
- Platform.OS = 'web'
32
- const { getByRole } = render(
33
- <Theme>
34
- <Link href={href}>{label}</Link>
35
- </Theme>
36
- )
37
-
38
- const el = getByRole('link')
39
- fireEvent.press(el)
40
- expect(Linking.openURL).not.toHaveBeenCalled()
41
- Platform.OS = originalValue
42
- })
43
- }
44
-
45
- // Default jest OS is ios, this will always be called until
46
- // https://github.com/telus/universal-design-system/issues/319
47
- if (Platform.OS !== 'web') {
48
- it('calls Linking.openURL (mobile)', async () => {
49
- const label = 'Click me'
50
- jest.spyOn(Linking, 'openURL').mockImplementation(() => {})
51
- const { getByRole } = render(
52
- <Theme>
53
- <Link href={href}>{label}</Link>
54
- </Theme>
55
- )
56
-
57
- const el = getByRole('link')
58
- fireEvent.press(el)
59
- expect(Linking.openURL).toHaveBeenCalledTimes(1)
60
- expect(Linking.openURL).toHaveBeenCalledWith(href)
61
- })
62
- }
63
- })
@@ -1,35 +0,0 @@
1
- import React from 'react'
2
- import { render, fireEvent } from '@testing-library/react-native'
3
-
4
- import Theme from '../../__fixtures__/Theme'
5
- import TextButton from '../../src/Link/TextButton'
6
-
7
- const label = 'Test TextButton'
8
-
9
- describe('Link', () => {
10
- it('renders with button role', async () => {
11
- const { getByRole } = render(
12
- <Theme>
13
- <TextButton onPress={() => {}}>{label}</TextButton>
14
- </Theme>
15
- )
16
-
17
- const textButton = getByRole('button')
18
- expect(textButton).toHaveTextContent(label)
19
- })
20
-
21
- it('renders a pressable button', async () => {
22
- const handlePress = jest.fn()
23
- const { getByText } = render(
24
- <Theme>
25
- <TextButton onPress={handlePress}>{label}</TextButton>
26
- </Theme>
27
- )
28
-
29
- const textButton = getByText(label)
30
-
31
- expect(handlePress).toHaveBeenCalledTimes(0)
32
- await fireEvent.press(textButton)
33
- expect(handlePress).toHaveBeenCalledTimes(1)
34
- })
35
- })
@@ -1,60 +0,0 @@
1
- import React from 'react'
2
- import { Text } from 'react-native'
3
- import { render } from '@testing-library/react-native'
4
- import { List } from '../../src'
5
- import Theme from '../../__fixtures__/Theme'
6
- import testTheme from '../../__fixtures__/testTheme'
7
-
8
- const setup = ({ showDivider = false, icon, children } = {}) =>
9
- render(
10
- <Theme>
11
- <List showDivider={showDivider}>
12
- <List.Item icon={icon}>{children || 'Item'}</List.Item>
13
- <List.Item icon={icon}>{children || 'Item'}</List.Item>
14
- <List.Item icon={icon}>{children || 'Item'}</List.Item>
15
- <List.Item icon={icon}>{children || 'Item'}</List.Item>
16
- </List>
17
- </Theme>
18
- )
19
-
20
- describe('List', () => {
21
- it('should render bullets by default', () => {
22
- const { queryAllByTestId } = setup()
23
- const bullet = queryAllByTestId('unordered-item-bullet')
24
- expect(bullet.length).toBe(4)
25
- })
26
-
27
- it('should render dividers for all items except for the last one', () => {
28
- const { getAllByRole } = setup({ showDivider: true })
29
- const {
30
- interItemMarginWithDivider: marginBottom,
31
- dividerColor: borderColor,
32
- dividerSize: borderBottomWidth
33
- } = testTheme.components.List.tokens
34
-
35
- const listItems = getAllByRole('item')
36
-
37
- listItems.forEach((item, index) => {
38
- if (index + 1 !== listItems.length) {
39
- expect(item).toHaveStyle({ marginBottom, borderColor, borderBottomWidth })
40
- } else {
41
- expect(item).toHaveStyle({})
42
- }
43
- })
44
- })
45
-
46
- it('should render the icon when defined', () => {
47
- const { queryAllByTestId } = setup({ icon: () => <Text testID="icon" /> })
48
-
49
- const icons = queryAllByTestId('icon')
50
-
51
- expect(icons.length).toBe(4)
52
- })
53
- it('should allow children nested components', () => {
54
- const { queryAllByTestId } = setup({ children: <Text testID="child" /> })
55
-
56
- const children = queryAllByTestId('child')
57
-
58
- expect(children.length).toBe(4)
59
- })
60
- })
@@ -1,47 +0,0 @@
1
- import React from 'react'
2
- import { Text } from 'react-native'
3
- import { fireEvent, render } from '@testing-library/react-native'
4
-
5
- import { Modal } from '../../src'
6
- import Theme from '../../__fixtures__/Theme'
7
-
8
- describe('Modal', () => {
9
- it('is not rendered when closed', () => {
10
- const { queryByText } = render(
11
- <Modal>
12
- <Text>Test content</Text>
13
- </Modal>,
14
- { wrapper: Theme }
15
- )
16
-
17
- expect(queryByText('Test content')).toBeFalsy()
18
- })
19
-
20
- it('is rendered when open', () => {
21
- const { queryByText } = render(
22
- <Modal isOpen>
23
- <Text>Test content</Text>
24
- </Modal>,
25
- { wrapper: Theme }
26
- )
27
-
28
- expect(queryByText('Test content')).not.toBeFalsy()
29
- })
30
-
31
- it('onClose callback is triggered when closing', () => {
32
- const onClose = jest.fn()
33
-
34
- const { getByA11yRole } = render(
35
- <Modal isOpen onClose={onClose}>
36
- <Text>Test content</Text>
37
- </Modal>,
38
- { wrapper: Theme }
39
- )
40
-
41
- expect(onClose).not.toHaveBeenCalled()
42
-
43
- fireEvent.press(getByA11yRole('button'))
44
-
45
- expect(onClose).toHaveBeenCalledTimes(1)
46
- })
47
- })
@@ -1,20 +0,0 @@
1
- import React from 'react'
2
- import { fireEvent, render } from '@testing-library/react-native'
3
-
4
- import { Notification } from '../../src'
5
- import Theme from '../../__fixtures__/Theme'
6
-
7
- describe('Notification', () => {
8
- it('is removed when dismiss button is pressed', () => {
9
- const content = 'Notification content lands here'
10
- const { getByRole, getByText } = render(<Notification dismissible>{content}</Notification>, {
11
- wrapper: Theme
12
- })
13
-
14
- expect(() => getByText(content)).not.toThrow()
15
-
16
- fireEvent.press(getByRole('button'))
17
-
18
- expect(() => getByText(content)).toThrow()
19
- })
20
- })