@ssa-ui-kit/core 0.0.10-alpha → 0.0.11-alpha

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 (534) hide show
  1. package/.babelrc.js +4 -4
  2. package/.storybook/main.ts +43 -43
  3. package/.storybook/preview.tsx +22 -22
  4. package/.storybook/style.css +31 -31
  5. package/LICENSE +21 -0
  6. package/customTest.tsx +46 -46
  7. package/dist/index.js.map +1 -1
  8. package/jest-setup.ts +17 -17
  9. package/lostpixel.config.ts +26 -26
  10. package/package.json +1 -1
  11. package/playwright.config.ts +7 -7
  12. package/src/components/AccordionGroup/Accordion.tsx +25 -25
  13. package/src/components/AccordionGroup/AccordionContent.tsx +21 -21
  14. package/src/components/AccordionGroup/AccordionContext.tsx +66 -66
  15. package/src/components/AccordionGroup/AccordionGroup.spec.tsx +195 -191
  16. package/src/components/AccordionGroup/AccordionGroup.tsx +71 -71
  17. package/src/components/AccordionGroup/AccordionTitle.tsx +41 -41
  18. package/src/components/AccordionGroup/index.ts +6 -6
  19. package/src/components/AccordionGroup/stories/AccordionGroup.stories.tsx +107 -107
  20. package/src/components/AccordionGroup/stories/helpers.tsx +86 -86
  21. package/src/components/AccordionGroup/styles.ts +121 -121
  22. package/src/components/AccordionGroup/types.ts +59 -59
  23. package/src/components/Avatar/Avatar.tsx +15 -15
  24. package/src/components/Avatar/index.ts +1 -1
  25. package/src/components/Badge/Badge.spec.tsx +113 -113
  26. package/src/components/Badge/Badge.stories.tsx +156 -156
  27. package/src/components/Badge/Badge.tsx +45 -45
  28. package/src/components/Badge/BadgeBase.tsx +19 -19
  29. package/src/components/Badge/helpers.ts +49 -49
  30. package/src/components/Badge/index.ts +1 -1
  31. package/src/components/Badge/styles.ts +20 -20
  32. package/src/components/Badge/types.ts +7 -7
  33. package/src/components/Button/Button.spec.tsx +529 -529
  34. package/src/components/Button/Button.stories.tsx +124 -124
  35. package/src/components/Button/Button.tsx +121 -121
  36. package/src/components/Button/ButtonBase.tsx +14 -14
  37. package/src/components/Button/ButtonText.tsx +67 -67
  38. package/src/components/Button/fixtures.ts +165 -165
  39. package/src/components/Button/helpers.ts +30 -30
  40. package/src/components/Button/index.ts +1 -1
  41. package/src/components/Button/styles.ts +168 -168
  42. package/src/components/Button/types.ts +48 -48
  43. package/src/components/ButtonGroup/ButtonGroup.spec.tsx +60 -60
  44. package/src/components/ButtonGroup/ButtonGroup.stories.tsx +42 -42
  45. package/src/components/ButtonGroup/ButtonGroup.tsx +40 -40
  46. package/src/components/ButtonGroup/helpers.ts +7 -7
  47. package/src/components/ButtonGroup/index.ts +2 -2
  48. package/src/components/ButtonGroup/styles.ts +53 -53
  49. package/src/components/ButtonGroup/types.ts +14 -14
  50. package/src/components/Card/Card.spec.tsx +94 -94
  51. package/src/components/Card/Card.stories.tsx +253 -253
  52. package/src/components/Card/Card.tsx +13 -13
  53. package/src/components/Card/CardBase.tsx +20 -20
  54. package/src/components/Card/index.ts +2 -2
  55. package/src/components/Card/types.ts +8 -8
  56. package/src/components/CardContent/CardContent.tsx +17 -17
  57. package/src/components/CardContent/CardContentBase.tsx +12 -12
  58. package/src/components/CardContent/index.ts +1 -1
  59. package/src/components/CardHeader/CardHeader.tsx +26 -26
  60. package/src/components/CardHeader/CardHeaderBase.tsx +21 -21
  61. package/src/components/CardHeader/index.ts +1 -1
  62. package/src/components/Checkbox/Checkbox.spec.tsx +193 -193
  63. package/src/components/Checkbox/Checkbox.stories.tsx +93 -93
  64. package/src/components/Checkbox/Checkbox.tsx +79 -79
  65. package/src/components/Checkbox/CheckboxBase.tsx +71 -71
  66. package/src/components/Checkbox/index.ts +3 -3
  67. package/src/components/Checkbox/styles.tsx +70 -70
  68. package/src/components/Checkbox/types.ts +32 -32
  69. package/src/components/ColorPicker/ColorPicker.spec.tsx +58 -58
  70. package/src/components/ColorPicker/ColorPicker.stories.tsx +48 -48
  71. package/src/components/ColorPicker/ColorPicker.tsx +47 -47
  72. package/src/components/ColorPicker/index.ts +1 -1
  73. package/src/components/ColorPicker/styles.ts +14 -14
  74. package/src/components/ColorPicker/types.ts +21 -21
  75. package/src/components/Dropdown/Dropdown.context.ts +16 -16
  76. package/src/components/Dropdown/Dropdown.spec.tsx +332 -332
  77. package/src/components/Dropdown/Dropdown.stories.tsx +155 -155
  78. package/src/components/Dropdown/Dropdown.tsx +135 -135
  79. package/src/components/Dropdown/index.ts +2 -2
  80. package/src/components/Dropdown/types.ts +17 -17
  81. package/src/components/DropdownArrow/DropdownArrow.tsx +17 -17
  82. package/src/components/DropdownArrow/index.ts +1 -1
  83. package/src/components/DropdownBase/DropdownBase.tsx +10 -10
  84. package/src/components/DropdownBase/index.ts +1 -1
  85. package/src/components/DropdownOption/DropdownOption.tsx +56 -56
  86. package/src/components/DropdownOption/index.ts +1 -1
  87. package/src/components/DropdownOptions/DropdownOptions.tsx +102 -102
  88. package/src/components/DropdownOptions/index.ts +2 -2
  89. package/src/components/DropdownOptions/types.ts +9 -9
  90. package/src/components/DropdownToggle/DropdownToggle.tsx +148 -148
  91. package/src/components/DropdownToggle/index.ts +1 -1
  92. package/src/components/DropdownToggle/types.ts +22 -22
  93. package/src/components/Form/Form.stories.mdx +118 -118
  94. package/src/components/Form/Form.stories.tsx +432 -432
  95. package/src/components/Form/Form.tsx +9 -9
  96. package/src/components/Form/index.ts +1 -1
  97. package/src/components/FormAction/FormAction.tsx +8 -8
  98. package/src/components/FormAction/index.ts +1 -1
  99. package/src/components/FormCheckbox/FormCheckbox.tsx +33 -33
  100. package/src/components/FormCheckbox/index.ts +1 -1
  101. package/src/components/FormCheckbox/types.ts +10 -10
  102. package/src/components/FormGroup/FormGroup.tsx +15 -15
  103. package/src/components/FormGroup/index.ts +1 -1
  104. package/src/components/FormHelperText/FormHelperText.tsx +18 -18
  105. package/src/components/FormHelperText/FormHelperTextBase.tsx +22 -22
  106. package/src/components/FormHelperText/index.ts +1 -1
  107. package/src/components/FormHelperText/types.ts +8 -8
  108. package/src/components/FormRadioGroup/FormRadioGroup.spec.tsx +74 -74
  109. package/src/components/FormRadioGroup/FormRadioGroup.stories.tsx +90 -90
  110. package/src/components/FormRadioGroup/FormRadioGroup.tsx +35 -35
  111. package/src/components/FormRadioGroup/index.ts +1 -1
  112. package/src/components/FormRadioGroup/types.ts +12 -12
  113. package/src/components/Icon/Icon.tsx +7 -7
  114. package/src/components/Icon/Icons.spec.tsx +89 -89
  115. package/src/components/Icon/Icons.stories.tsx +62 -62
  116. package/src/components/Icon/icons/Archive.tsx +36 -36
  117. package/src/components/Icon/icons/ArrowDown.tsx +27 -27
  118. package/src/components/Icon/icons/ArrowUp.tsx +27 -27
  119. package/src/components/Icon/icons/Attention.tsx +23 -23
  120. package/src/components/Icon/icons/Bin.tsx +29 -29
  121. package/src/components/Icon/icons/Calendar.tsx +17 -17
  122. package/src/components/Icon/icons/CarrotDown.tsx +25 -25
  123. package/src/components/Icon/icons/CarrotLeft.tsx +25 -25
  124. package/src/components/Icon/icons/CarrotRight.tsx +25 -25
  125. package/src/components/Icon/icons/CarrotUp.tsx +21 -21
  126. package/src/components/Icon/icons/Change.tsx +17 -17
  127. package/src/components/Icon/icons/Chart.tsx +38 -38
  128. package/src/components/Icon/icons/Check.tsx +21 -21
  129. package/src/components/Icon/icons/CheckCircle.tsx +31 -31
  130. package/src/components/Icon/icons/Circle.tsx +23 -23
  131. package/src/components/Icon/icons/Clock.tsx +32 -32
  132. package/src/components/Icon/icons/Copy.tsx +24 -24
  133. package/src/components/Icon/icons/Cross.tsx +28 -28
  134. package/src/components/Icon/icons/Diet.tsx +17 -17
  135. package/src/components/Icon/icons/Email.tsx +20 -20
  136. package/src/components/Icon/icons/Filter.tsx +19 -19
  137. package/src/components/Icon/icons/Home.tsx +17 -17
  138. package/src/components/Icon/icons/Information.tsx +29 -29
  139. package/src/components/Icon/icons/Invisible.tsx +56 -56
  140. package/src/components/Icon/icons/Lock.tsx +18 -18
  141. package/src/components/Icon/icons/LogIn.tsx +22 -22
  142. package/src/components/Icon/icons/LogOut.tsx +22 -22
  143. package/src/components/Icon/icons/Measurements.tsx +23 -23
  144. package/src/components/Icon/icons/Minus.tsx +21 -21
  145. package/src/components/Icon/icons/More.tsx +25 -25
  146. package/src/components/Icon/icons/MoreVertical.tsx +20 -20
  147. package/src/components/Icon/icons/Notification.tsx +23 -23
  148. package/src/components/Icon/icons/Plus.tsx +28 -28
  149. package/src/components/Icon/icons/RadioOn.tsx +24 -24
  150. package/src/components/Icon/icons/Robot.tsx +19 -19
  151. package/src/components/Icon/icons/Search.tsx +19 -19
  152. package/src/components/Icon/icons/Settings.tsx +25 -25
  153. package/src/components/Icon/icons/Sleep.tsx +21 -21
  154. package/src/components/Icon/icons/Stats.tsx +21 -21
  155. package/src/components/Icon/icons/Trainings.tsx +17 -17
  156. package/src/components/Icon/icons/Union.tsx +20 -20
  157. package/src/components/Icon/icons/User.tsx +35 -35
  158. package/src/components/Icon/icons/Visible.tsx +28 -28
  159. package/src/components/Icon/icons/Warning.tsx +23 -23
  160. package/src/components/Icon/icons/iconsList.tsx +55 -55
  161. package/src/components/Icon/icons/index.tsx +115 -115
  162. package/src/components/Icon/index.ts +2 -2
  163. package/src/components/Icon/types.ts +14 -14
  164. package/src/components/Indicator/Indicator.spec.tsx +67 -67
  165. package/src/components/Indicator/Indicator.stories.tsx +106 -106
  166. package/src/components/Indicator/Indicator.tsx +86 -86
  167. package/src/components/Indicator/IndicatorBase.tsx +27 -27
  168. package/src/components/Indicator/index.ts +1 -1
  169. package/src/components/Indicator/types.ts +9 -9
  170. package/src/components/Input/Input.spec.tsx +95 -95
  171. package/src/components/Input/Input.stories.tsx +215 -215
  172. package/src/components/Input/Input.tsx +70 -70
  173. package/src/components/Input/InputBase.tsx +42 -42
  174. package/src/components/Input/InputGroup.tsx +12 -12
  175. package/src/components/Input/InputStatusError.tsx +20 -20
  176. package/src/components/Input/InputStatusSuccess.tsx +16 -16
  177. package/src/components/Input/index.ts +1 -1
  178. package/src/components/Input/styles.ts +111 -111
  179. package/src/components/Input/types.ts +36 -36
  180. package/src/components/Label/Label.spec.tsx +57 -57
  181. package/src/components/Label/Label.tsx +20 -20
  182. package/src/components/Label/LabelBase.tsx +14 -14
  183. package/src/components/Label/index.ts +1 -1
  184. package/src/components/Label/types.ts +9 -9
  185. package/src/components/LargeTab/LargeTab.tsx +38 -38
  186. package/src/components/LargeTab/LargeTabBase.tsx +39 -39
  187. package/src/components/LargeTab/index.ts +1 -1
  188. package/src/components/LargeTab/styles.ts +17 -17
  189. package/src/components/Link/Link.tsx +10 -10
  190. package/src/components/Link/Link.types.ts +4 -4
  191. package/src/components/Link/LinkBase.ts +5 -5
  192. package/src/components/Link/index.tsx +1 -1
  193. package/src/components/Modal/Modal.context.tsx +9 -9
  194. package/src/components/Modal/Modal.spec.tsx +154 -154
  195. package/src/components/Modal/Modal.stories.tsx +97 -97
  196. package/src/components/Modal/Modal.tsx +12 -12
  197. package/src/components/Modal/index.ts +2 -2
  198. package/src/components/Modal/types.ts +4 -4
  199. package/src/components/ModalContent/ModalContent.tsx +21 -21
  200. package/src/components/ModalContent/index.ts +1 -1
  201. package/src/components/ModalDialog/ModalDialog.tsx +67 -67
  202. package/src/components/ModalDialog/index.ts +2 -2
  203. package/src/components/ModalDialog/types.ts +7 -7
  204. package/src/components/ModalDismissButton/ModalDismissButton.tsx +15 -15
  205. package/src/components/ModalDismissButton/index.ts +1 -1
  206. package/src/components/ModalOpenButton/ModalOpenButton.tsx +15 -15
  207. package/src/components/ModalOpenButton/index.ts +1 -1
  208. package/src/components/MultipleDropdown/MultipleDropdown.context.ts +20 -20
  209. package/src/components/MultipleDropdown/MultipleDropdown.spec.tsx +414 -414
  210. package/src/components/MultipleDropdown/MultipleDropdown.tsx +217 -217
  211. package/src/components/MultipleDropdown/index.ts +1 -1
  212. package/src/components/MultipleDropdown/stories/MultipleDropdown.stories.tsx +239 -239
  213. package/src/components/MultipleDropdown/stories/consts.ts +5 -5
  214. package/src/components/MultipleDropdown/types.ts +20 -20
  215. package/src/components/MultipleDropdown/utils.ts +32 -32
  216. package/src/components/MultipleDropdownNotification/MultipleDropdownNotification.tsx +13 -13
  217. package/src/components/MultipleDropdownNotification/index.ts +1 -1
  218. package/src/components/MultipleDropdownOptions/MultipleDropdownOptions.tsx +156 -156
  219. package/src/components/MultipleDropdownOptions/index.ts +2 -2
  220. package/src/components/MultipleDropdownOptions/types.ts +7 -7
  221. package/src/components/Popover/Popover.e2e.ts +26 -26
  222. package/src/components/Popover/Popover.spec.tsx +17 -17
  223. package/src/components/Popover/Popover.tsx +21 -21
  224. package/src/components/Popover/PopoverClose.tsx +21 -21
  225. package/src/components/Popover/PopoverContent.tsx +37 -37
  226. package/src/components/Popover/PopoverDescription.tsx +21 -21
  227. package/src/components/Popover/PopoverHeading.tsx +25 -25
  228. package/src/components/Popover/PopoverTrigger.tsx +47 -47
  229. package/src/components/Popover/hooks/usePopover.tsx +109 -109
  230. package/src/components/Popover/hooks/usePopoverContext.tsx +16 -16
  231. package/src/components/Popover/index.ts +6 -6
  232. package/src/components/Popover/stories/Popover.stories.tsx +39 -39
  233. package/src/components/Popover/stories/StoryComponent.tsx +42 -42
  234. package/src/components/Popover/types.ts +45 -45
  235. package/src/components/Progress/Progress.spec.tsx +85 -85
  236. package/src/components/Progress/Progress.stories.tsx +234 -234
  237. package/src/components/Progress/Progress.tsx +7 -7
  238. package/src/components/Progress/index.ts +1 -1
  239. package/src/components/Progress/types.ts +5 -5
  240. package/src/components/ProgressBar/ProgressBar.tsx +68 -68
  241. package/src/components/ProgressBar/index.ts +1 -1
  242. package/src/components/ProgressBar/styles.ts +15 -15
  243. package/src/components/ProgressBar/types.ts +7 -7
  244. package/src/components/ProgressCircle/ProgressCircle.spec.tsx +37 -37
  245. package/src/components/ProgressCircle/ProgressCircle.stories.tsx +96 -96
  246. package/src/components/ProgressCircle/ProgressCircle.tsx +60 -60
  247. package/src/components/ProgressCircle/ProgressCircleBase.tsx +45 -45
  248. package/src/components/ProgressCircle/ProgressCircleInner.tsx +16 -16
  249. package/src/components/ProgressCircle/ProgressCircleOuter.tsx +14 -14
  250. package/src/components/ProgressCircle/index.ts +1 -1
  251. package/src/components/ProgressCircle/styles.ts +20 -20
  252. package/src/components/ProgressCircle/types.ts +7 -7
  253. package/src/components/ProgressLegend/ProgressLegend.tsx +41 -41
  254. package/src/components/ProgressLegend/index.ts +1 -1
  255. package/src/components/ProgressLegend/types.ts +12 -12
  256. package/src/components/ProgressLegendItem/ProgressLegendItem.tsx +52 -52
  257. package/src/components/ProgressLegendItem/index.ts +1 -1
  258. package/src/components/ProgressLegendItem/types.ts +6 -6
  259. package/src/components/ProgressVertical/ProgressVertical.tsx +23 -23
  260. package/src/components/ProgressVertical/index.ts +1 -1
  261. package/src/components/ProgressVertical/types.ts +5 -5
  262. package/src/components/Radio/Radio.spec.tsx +234 -234
  263. package/src/components/Radio/Radio.stories.tsx +52 -52
  264. package/src/components/Radio/Radio.tsx +56 -56
  265. package/src/components/Radio/RadioBase.tsx +36 -36
  266. package/src/components/Radio/index.ts +1 -1
  267. package/src/components/Radio/types.ts +11 -11
  268. package/src/components/RadioGroup/RadioGroup.spec.tsx +116 -116
  269. package/src/components/RadioGroup/RadioGroup.stories.tsx +84 -84
  270. package/src/components/RadioGroup/RadioGroup.tsx +49 -49
  271. package/src/components/RadioGroup/RadioGroupBase.tsx +3 -3
  272. package/src/components/RadioGroup/index.ts +1 -1
  273. package/src/components/RadioGroup/types.ts +10 -10
  274. package/src/components/ResponsiveImage/ResponsiveImage.spec.tsx +43 -43
  275. package/src/components/ResponsiveImage/ResponsiveImage.stories.tsx +33 -33
  276. package/src/components/ResponsiveImage/ResponsiveImage.tsx +14 -14
  277. package/src/components/ResponsiveImage/index.tsx +1 -1
  278. package/src/components/ResponsiveImage/types.ts +7 -7
  279. package/src/components/Step/Step.context.ts +21 -21
  280. package/src/components/Step/Step.tsx +58 -58
  281. package/src/components/Step/index.ts +2 -2
  282. package/src/components/StepConnector/StepConnector.tsx +34 -34
  283. package/src/components/StepConnector/index.ts +1 -1
  284. package/src/components/StepConnector/style.ts +24 -24
  285. package/src/components/StepLabel/StepLabel.tsx +65 -65
  286. package/src/components/StepLabel/index.ts +1 -1
  287. package/src/components/StepLabel/styles.ts +38 -38
  288. package/src/components/Stepper/Stepper.context.ts +16 -16
  289. package/src/components/Stepper/Stepper.spec.tsx +128 -128
  290. package/src/components/Stepper/Stepper.stories.tsx +292 -292
  291. package/src/components/Stepper/Stepper.tsx +49 -49
  292. package/src/components/Stepper/index.ts +5 -5
  293. package/src/components/Stepper/types.ts +17 -17
  294. package/src/components/Switch/Switch.spec.tsx +181 -181
  295. package/src/components/Switch/Switch.stories.tsx +64 -64
  296. package/src/components/Switch/Switch.tsx +21 -21
  297. package/src/components/Switch/SwitchBase.tsx +62 -62
  298. package/src/components/Switch/SwitchContext.tsx +38 -38
  299. package/src/components/Switch/index.ts +6 -6
  300. package/src/components/Switch/types.ts +4 -4
  301. package/src/components/Tab/Tab.tsx +31 -31
  302. package/src/components/Tab/TabBase.tsx +31 -31
  303. package/src/components/Tab/index.ts +1 -1
  304. package/src/components/TabBar/TabBar.spec.tsx +290 -290
  305. package/src/components/TabBar/TabBar.tsx +43 -43
  306. package/src/components/TabBar/TabBarContext.tsx +43 -43
  307. package/src/components/TabBar/index.ts +6 -6
  308. package/src/components/TabBar/stories/TimePeriodTabBar.stories.tsx +84 -84
  309. package/src/components/TabBar/stories/WeekTabBar.stories.tsx +136 -136
  310. package/src/components/TabBar/stories/helpers.tsx +69 -69
  311. package/src/components/TabBar/types.ts +39 -39
  312. package/src/components/Table/Table.spec.tsx +86 -86
  313. package/src/components/Table/Table.tsx +13 -13
  314. package/src/components/Table/index.ts +1 -1
  315. package/src/components/Table/stories/SortableTable.tsx +78 -78
  316. package/src/components/Table/stories/Table.stories.tsx +94 -94
  317. package/src/components/Table/stories/consts.ts +6 -6
  318. package/src/components/Table/stories/mock.ts +16 -16
  319. package/src/components/Table/stories/types.ts +9 -9
  320. package/src/components/Table/stories/utils.ts +2 -2
  321. package/src/components/TableBody/TableBody.tsx +8 -8
  322. package/src/components/TableBody/index.ts +1 -1
  323. package/src/components/TableCell/TableCell.tsx +16 -16
  324. package/src/components/TableCell/index.ts +1 -1
  325. package/src/components/TableHead/TableHead.tsx +15 -15
  326. package/src/components/TableHead/index.ts +1 -1
  327. package/src/components/TableRow/TableRow.tsx +12 -12
  328. package/src/components/TableRow/index.ts +1 -1
  329. package/src/components/Tag/Tag.spec.tsx +121 -121
  330. package/src/components/Tag/Tag.stories.tsx +96 -96
  331. package/src/components/Tag/Tag.tsx +47 -47
  332. package/src/components/Tag/index.ts +1 -1
  333. package/src/components/Tag/styles.ts +123 -123
  334. package/src/components/Tag/types.ts +7 -7
  335. package/src/components/TextField/TextField.spec.tsx +171 -171
  336. package/src/components/TextField/TextField.stories.tsx +221 -221
  337. package/src/components/TextField/TextField.tsx +61 -61
  338. package/src/components/TextField/index.ts +1 -1
  339. package/src/components/TextField/types.ts +14 -14
  340. package/src/components/Textarea/Textarea.spec.tsx +56 -56
  341. package/src/components/Textarea/Textarea.stories.tsx +59 -59
  342. package/src/components/Textarea/Textarea.tsx +37 -37
  343. package/src/components/Textarea/TextareaBase.tsx +46 -46
  344. package/src/components/Textarea/index.ts +1 -1
  345. package/src/components/Textarea/types.ts +16 -16
  346. package/src/components/Tooltip/ProgressChartTooltip.tsx +48 -48
  347. package/src/components/Tooltip/SimpleChartTooltip.tsx +20 -20
  348. package/src/components/Tooltip/Tooltip.spec.tsx +305 -305
  349. package/src/components/Tooltip/Tooltip.stories.tsx +160 -160
  350. package/src/components/Tooltip/Tooltip.tsx +22 -22
  351. package/src/components/Tooltip/TooltipArrow.tsx +26 -26
  352. package/src/components/Tooltip/TooltipContentBase.tsx +9 -9
  353. package/src/components/Tooltip/index.ts +5 -5
  354. package/src/components/Tooltip/styles.ts +16 -16
  355. package/src/components/Tooltip/types.ts +88 -88
  356. package/src/components/Tooltip/useTooltip.tsx +74 -74
  357. package/src/components/Tooltip/useTooltipContext.tsx +16 -16
  358. package/src/components/Tooltip/utils.tsx +8 -8
  359. package/src/components/TooltipContent/TooltipContent.tsx +49 -49
  360. package/src/components/TooltipContent/index.ts +1 -1
  361. package/src/components/TooltipTrigger/TooltipTrigger.tsx +21 -21
  362. package/src/components/TooltipTrigger/index.ts +1 -1
  363. package/src/components/Typography/Typography.spec.tsx +259 -259
  364. package/src/components/Typography/Typography.stories.tsx +68 -68
  365. package/src/components/Typography/Typography.tsx +52 -52
  366. package/src/components/Typography/index.ts +1 -1
  367. package/src/components/Typography/styles.ts +85 -85
  368. package/src/components/Typography/types.ts +22 -22
  369. package/src/components/Wrapper/Wrapper.spec.tsx +15 -15
  370. package/src/components/Wrapper/Wrapper.tsx +19 -19
  371. package/src/components/Wrapper/index.ts +1 -1
  372. package/src/consts.ts +18 -18
  373. package/src/index.ts +94 -94
  374. package/src/injectGlobal.ts +41 -41
  375. package/src/styles/global.ts +91 -91
  376. package/src/styles/safari-focus-outline.ts +37 -37
  377. package/src/styles/styles.spec.tsx +42 -42
  378. package/src/themes/main.ts +116 -116
  379. package/src/types/emotion.d.ts +7 -7
  380. package/src/types/emotion.ts +132 -132
  381. package/src/types/global.d.ts +7 -7
  382. package/src/types/global.ts +19 -19
  383. package/tasks/create.js +45 -45
  384. package/tasks/firebase-import-meal-nutrients.js +66 -66
  385. package/tsbuildcache +1 -1
  386. package/tsconfig.build.json +44 -44
  387. package/tsconfig.json +20 -20
  388. package/webpack.config.js +26 -26
  389. package/custom-shots/components-popover--hint-opened__[w1920px].png +0 -0
  390. package/custom-shots/components-table-filters--opened__[w1920px].png +0 -0
  391. package/storybook-static/1283.a11004a1.iframe.bundle.js +0 -1
  392. package/storybook-static/1326.74edde53.iframe.bundle.js +0 -1
  393. package/storybook-static/2912.4c6e14cb.iframe.bundle.js +0 -1
  394. package/storybook-static/3547.515f04ab.iframe.bundle.js +0 -1
  395. package/storybook-static/3624.1414516c.iframe.bundle.js +0 -1
  396. package/storybook-static/3753.bd2e2900.iframe.bundle.js +0 -1
  397. package/storybook-static/4106.7f1435f2.iframe.bundle.js +0 -402
  398. package/storybook-static/4106.7f1435f2.iframe.bundle.js.LICENSE.txt +0 -62
  399. package/storybook-static/4106.7f1435f2.iframe.bundle.js.map +0 -1
  400. package/storybook-static/4166.6fdf56d2.iframe.bundle.js +0 -1
  401. package/storybook-static/4339.437b4af1.iframe.bundle.js +0 -1
  402. package/storybook-static/4995.d16abbf0.iframe.bundle.js +0 -1
  403. package/storybook-static/5199.6867eb61.iframe.bundle.js +0 -1
  404. package/storybook-static/5374.19c2f606.iframe.bundle.js +0 -6
  405. package/storybook-static/5374.19c2f606.iframe.bundle.js.LICENSE.txt +0 -8
  406. package/storybook-static/5374.19c2f606.iframe.bundle.js.map +0 -1
  407. package/storybook-static/5417.e7b726cc.iframe.bundle.js +0 -1
  408. package/storybook-static/5497.0b734124.iframe.bundle.js +0 -44
  409. package/storybook-static/5497.0b734124.iframe.bundle.js.map +0 -1
  410. package/storybook-static/5521.fbe15eea.iframe.bundle.js +0 -1
  411. package/storybook-static/5540.fa362783.iframe.bundle.js +0 -1
  412. package/storybook-static/5938.713bc0f1.iframe.bundle.js +0 -1
  413. package/storybook-static/6092.0baa0be2.iframe.bundle.js +0 -1
  414. package/storybook-static/6216.8da65c4d.iframe.bundle.js +0 -1
  415. package/storybook-static/6374.b662bb7e.iframe.bundle.js +0 -1
  416. package/storybook-static/7076.fc69dc87.iframe.bundle.js +0 -1
  417. package/storybook-static/7263.784ad817.iframe.bundle.js +0 -1
  418. package/storybook-static/7609.fa84d5d0.iframe.bundle.js +0 -1
  419. package/storybook-static/7633.6d7427ee.iframe.bundle.js +0 -1
  420. package/storybook-static/7767.2ce7411d.iframe.bundle.js +0 -1
  421. package/storybook-static/8069.7d70ab4a.iframe.bundle.js +0 -1
  422. package/storybook-static/8251.01f55356.iframe.bundle.js +0 -1
  423. package/storybook-static/9134.27efc9b6.iframe.bundle.js +0 -1
  424. package/storybook-static/9185.5e034211.iframe.bundle.js +0 -133
  425. package/storybook-static/9185.5e034211.iframe.bundle.js.map +0 -1
  426. package/storybook-static/9661.7fb349c2.iframe.bundle.js +0 -1
  427. package/storybook-static/9672.98d487be.iframe.bundle.js +0 -1
  428. package/storybook-static/973.378dae04.iframe.bundle.js +0 -1
  429. package/storybook-static/components-AccordionGroup-stories-AccordionGroup-stories.c8781719.iframe.bundle.js +0 -1
  430. package/storybook-static/components-Badge-Badge-stories.34ed507d.iframe.bundle.js +0 -1
  431. package/storybook-static/components-Button-Button-stories.42cf6ebc.iframe.bundle.js +0 -1
  432. package/storybook-static/components-Card-Card-stories.dce075fe.iframe.bundle.js +0 -1
  433. package/storybook-static/components-Checkbox-Checkbox-stories.c3b0ba2a.iframe.bundle.js +0 -1
  434. package/storybook-static/components-ColorPicker-ColorPicker-stories.227d5d28.iframe.bundle.js +0 -1
  435. package/storybook-static/components-Dropdown-Dropdown-stories.a86e6d8b.iframe.bundle.js +0 -1
  436. package/storybook-static/components-Form-Form-stories-mdx.febb9417.iframe.bundle.js +0 -2
  437. package/storybook-static/components-Form-Form-stories-mdx.febb9417.iframe.bundle.js.LICENSE.txt +0 -9
  438. package/storybook-static/components-Form-Form-stories.1030ead7.iframe.bundle.js +0 -1
  439. package/storybook-static/components-FormRadioGroup-FormRadioGroup-stories.9d91e8c9.iframe.bundle.js +0 -1
  440. package/storybook-static/components-Icon-Icons-stories.fe368cd9.iframe.bundle.js +0 -1
  441. package/storybook-static/components-Input-Input-stories.ecfd89af.iframe.bundle.js +0 -1
  442. package/storybook-static/components-Modal-Modal-stories.bd406807.iframe.bundle.js +0 -1
  443. package/storybook-static/components-MultipleDropdown-MultipleDropdown-stories.80762ee2.iframe.bundle.js +0 -1
  444. package/storybook-static/components-Popover-stories-Popover-stories.5bbb9c19.iframe.bundle.js +0 -1
  445. package/storybook-static/components-Progress-Progress-stories.924b6ce3.iframe.bundle.js +0 -1
  446. package/storybook-static/components-ProgressCircle-ProgressCircle-stories.abf7a711.iframe.bundle.js +0 -1
  447. package/storybook-static/components-Radio-Radio-stories.ea10f6ac.iframe.bundle.js +0 -1
  448. package/storybook-static/components-RadioGroup-RadioGroup-stories.8be03b3f.iframe.bundle.js +0 -1
  449. package/storybook-static/components-ResponsiveImage-ResponsiveImage-stories.d6d0fc31.iframe.bundle.js +0 -1
  450. package/storybook-static/components-Stepper-Stepper-stories.55fe429d.iframe.bundle.js +0 -1
  451. package/storybook-static/components-Switch-Switch-stories.760b85d7.iframe.bundle.js +0 -1
  452. package/storybook-static/components-TabBar-stories-TimePeriodTabBar-stories.6f0ee7ee.iframe.bundle.js +0 -1
  453. package/storybook-static/components-TabBar-stories-WeekTabBar-stories.1d8887da.iframe.bundle.js +0 -1
  454. package/storybook-static/components-Table-Table-stories.cf62219e.iframe.bundle.js +0 -1
  455. package/storybook-static/components-Tag-Tag-stories.dc89b8dd.iframe.bundle.js +0 -1
  456. package/storybook-static/components-TextField-TextField-stories.23ab264d.iframe.bundle.js +0 -1
  457. package/storybook-static/components-Textarea-Textarea-stories.5d16dfd0.iframe.bundle.js +0 -1
  458. package/storybook-static/components-Tooltip-Tooltip-stories.4cf83194.iframe.bundle.js +0 -1
  459. package/storybook-static/components-Typography-Typography-stories.b04f7644.iframe.bundle.js +0 -1
  460. package/storybook-static/favicon.svg +0 -7
  461. package/storybook-static/iframe.html +0 -355
  462. package/storybook-static/index.html +0 -130
  463. package/storybook-static/index.json +0 -1
  464. package/storybook-static/main.17671a9a.iframe.bundle.js +0 -1
  465. package/storybook-static/project.json +0 -1
  466. package/storybook-static/runtime~main.a44b94df.iframe.bundle.js +0 -1
  467. package/storybook-static/sb-addons/essentials-actions-2/manager-bundle.js +0 -4
  468. package/storybook-static/sb-addons/essentials-actions-2/manager-bundle.js.LEGAL.txt +0 -0
  469. package/storybook-static/sb-addons/essentials-actions-2/manager-bundle.js.map +0 -7
  470. package/storybook-static/sb-addons/essentials-backgrounds-3/manager-bundle.js +0 -13
  471. package/storybook-static/sb-addons/essentials-backgrounds-3/manager-bundle.js.LEGAL.txt +0 -0
  472. package/storybook-static/sb-addons/essentials-backgrounds-3/manager-bundle.js.map +0 -7
  473. package/storybook-static/sb-addons/essentials-controls-1/manager-bundle.js +0 -115
  474. package/storybook-static/sb-addons/essentials-controls-1/manager-bundle.js.LEGAL.txt +0 -18
  475. package/storybook-static/sb-addons/essentials-controls-1/manager-bundle.js.map +0 -7
  476. package/storybook-static/sb-addons/essentials-measure-6/manager-bundle.js +0 -4
  477. package/storybook-static/sb-addons/essentials-measure-6/manager-bundle.js.LEGAL.txt +0 -0
  478. package/storybook-static/sb-addons/essentials-measure-6/manager-bundle.js.map +0 -7
  479. package/storybook-static/sb-addons/essentials-outline-7/manager-bundle.js +0 -4
  480. package/storybook-static/sb-addons/essentials-outline-7/manager-bundle.js.LEGAL.txt +0 -0
  481. package/storybook-static/sb-addons/essentials-outline-7/manager-bundle.js.map +0 -7
  482. package/storybook-static/sb-addons/essentials-toolbars-5/manager-bundle.js +0 -4
  483. package/storybook-static/sb-addons/essentials-toolbars-5/manager-bundle.js.LEGAL.txt +0 -0
  484. package/storybook-static/sb-addons/essentials-toolbars-5/manager-bundle.js.map +0 -7
  485. package/storybook-static/sb-addons/essentials-viewport-4/manager-bundle.js +0 -4
  486. package/storybook-static/sb-addons/essentials-viewport-4/manager-bundle.js.LEGAL.txt +0 -0
  487. package/storybook-static/sb-addons/essentials-viewport-4/manager-bundle.js.map +0 -7
  488. package/storybook-static/sb-addons/interactions-8/manager-bundle.js +0 -28
  489. package/storybook-static/sb-addons/interactions-8/manager-bundle.js.LEGAL.txt +0 -0
  490. package/storybook-static/sb-addons/interactions-8/manager-bundle.js.map +0 -7
  491. package/storybook-static/sb-addons/links-0/manager-bundle.js +0 -4
  492. package/storybook-static/sb-addons/links-0/manager-bundle.js.LEGAL.txt +0 -0
  493. package/storybook-static/sb-addons/links-0/manager-bundle.js.map +0 -7
  494. package/storybook-static/sb-addons/pseudo-states-9/manager-bundle.js +0 -4
  495. package/storybook-static/sb-addons/pseudo-states-9/manager-bundle.js.LEGAL.txt +0 -0
  496. package/storybook-static/sb-addons/pseudo-states-9/manager-bundle.js.map +0 -7
  497. package/storybook-static/sb-common-assets/fonts.css +0 -31
  498. package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  499. package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  500. package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  501. package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  502. package/storybook-static/sb-manager/CRUD-I5EZL2FS-LBZVDZXV.js +0 -1
  503. package/storybook-static/sb-manager/Communicate-7JXCND2Z-6SIVXWT4.js +0 -1
  504. package/storybook-static/sb-manager/Devices-SUYACUPO-DMGV6ENX.js +0 -1
  505. package/storybook-static/sb-manager/Documents-SGWAY3KW-XZRZ6I6S.js +0 -1
  506. package/storybook-static/sb-manager/Editing-7QFB6ZMG-J5U6QGB6.js +0 -1
  507. package/storybook-static/sb-manager/Git-DZ2D5ZUL-VKBWYJHE.js +0 -1
  508. package/storybook-static/sb-manager/GlobalScrollAreaStyles-4LLX2B3H-DOBSPBNW.js +0 -7
  509. package/storybook-static/sb-manager/Images-S2WTXNGG-NXAYS4VP.js +0 -1
  510. package/storybook-static/sb-manager/Logos-SJTNNI74-F3IVL4UV.js +0 -1
  511. package/storybook-static/sb-manager/OS-YZ2Y4VYS-KGSGCOHC.js +0 -1
  512. package/storybook-static/sb-manager/OverlayScrollbars-OL4C4TVX-FNYA4OIC.js +0 -1
  513. package/storybook-static/sb-manager/People-OD4EV7WZ-DBPUNUXW.js +0 -1
  514. package/storybook-static/sb-manager/Wayfinding-BB4H7CHP-N2QAVLVA.js +0 -1
  515. package/storybook-static/sb-manager/WithTooltip-YBG737T3-GLWUADFI.js +0 -1
  516. package/storybook-static/sb-manager/chunk-6KNXZZZ5.js +0 -207
  517. package/storybook-static/sb-manager/chunk-DP4DR4LA.js +0 -15
  518. package/storybook-static/sb-manager/chunk-GBCXFRBK.js +0 -1
  519. package/storybook-static/sb-manager/chunk-IFNK3PLJ.js +0 -1
  520. package/storybook-static/sb-manager/chunk-JMPBYCHU.js +0 -1
  521. package/storybook-static/sb-manager/chunk-JSPL73I3.js +0 -1
  522. package/storybook-static/sb-manager/chunk-SJD7EFYL.js +0 -136
  523. package/storybook-static/sb-manager/chunk-UBXIQABM.js +0 -447
  524. package/storybook-static/sb-manager/chunk-V7GYLJLR.js +0 -7
  525. package/storybook-static/sb-manager/chunk-Z4NRYNHR.js +0 -1
  526. package/storybook-static/sb-manager/formatter-6736J7QO-TGL2ZGQC.js +0 -156
  527. package/storybook-static/sb-manager/globals.js +0 -1
  528. package/storybook-static/sb-manager/index.js +0 -1
  529. package/storybook-static/sb-manager/runtime.js +0 -1
  530. package/storybook-static/sb-manager/syntaxhighlighter-4OVWVELQ-5IZ45DZY.js +0 -1
  531. package/storybook-static/sb-preview/globals.js +0 -1
  532. package/storybook-static/sb-preview/runtime.js +0 -105
  533. package/storybook-static/stories.json +0 -1
  534. package/tsconfig.tsbuildinfo +0 -1
@@ -1,305 +1,305 @@
1
- import { waitFor } from '../../../customTest';
2
- import { Point } from '@nivo/line';
3
- import userEvent from '@testing-library/user-event';
4
- import ResizeObserver from 'resize-observer-polyfill';
5
- import theme from '@themes/main';
6
-
7
- import Button from '@components/Button';
8
- import TooltipTrigger from '@components/TooltipTrigger';
9
- import TooltipContent from '@components/TooltipContent';
10
-
11
- import Tooltip, { SimpleChartTooltip, ProgressChartTooltip } from './index';
12
-
13
- function setup(component: React.ReactElement) {
14
- const user = userEvent.setup();
15
- return {
16
- user,
17
- ...render(component),
18
- };
19
- }
20
-
21
- window.ResizeObserver = ResizeObserver;
22
- const tooltipText = 'Tooltip';
23
-
24
- /**
25
- * This is to fix the following error that shows up in the test suite.
26
- * Error: `NaN` is an invalid value for the `left` css style property at svg
27
- *
28
- * The error doesn't break tests.
29
- *
30
- * It's caused by NaN values (width and height) returned from the
31
- * #getCssDimensions() function at @floating-ui/dom.
32
- * */
33
-
34
- describe('Tooltip', () => {
35
- beforeEach(() => {
36
- const getComputedStyle = window.getComputedStyle;
37
- jest.spyOn(window, 'getComputedStyle').mockImplementation((...args) => {
38
- const result = getComputedStyle(
39
- ...(args as [Element, string | null | undefined]),
40
- );
41
-
42
- const el = args[0];
43
- if (el instanceof SVGSVGElement) {
44
- /**
45
- * Inspired by
46
- * https://github.com/jsdom/jsdom/issues/135#issuecomment-68191941
47
- * */
48
- Object.defineProperties(result, {
49
- offsetHeight: {
50
- get() {
51
- return 0;
52
- },
53
- },
54
- offsetWidth: {
55
- get() {
56
- return 0;
57
- },
58
- },
59
- width: {
60
- get() {
61
- return 0;
62
- },
63
- },
64
- height: {
65
- get() {
66
- return 0;
67
- },
68
- },
69
- });
70
- }
71
- return result;
72
- });
73
- });
74
-
75
- afterEach(() => {
76
- jest.restoreAllMocks();
77
- });
78
-
79
- it('Shows up when the trigger is clicked', async () => {
80
- const { user, queryByText, getByText, getByRole, getByTestId } = setup(
81
- <Tooltip>
82
- <TooltipTrigger>
83
- <Button size="medium" text="Click me!" />
84
- </TooltipTrigger>
85
- <TooltipContent>{tooltipText}</TooltipContent>
86
- </Tooltip>,
87
- );
88
-
89
- const buttonEl = getByRole('button');
90
- expect(queryByText(tooltipText)).not.toBeInTheDocument();
91
-
92
- await user.click(buttonEl);
93
-
94
- getByText(tooltipText);
95
- getByTestId('floating-arrow');
96
-
97
- await user.click(document.body);
98
-
99
- expect(queryByText(tooltipText)).not.toBeInTheDocument();
100
- });
101
-
102
- it('Shows up when the trigger is hovered', async () => {
103
- const { user, queryByText, getByText, getByRole, getByTestId } = setup(
104
- <Tooltip enableClick={false} enableHover={true}>
105
- <TooltipTrigger>
106
- <Button size="medium" text="Hover over me!" />
107
- </TooltipTrigger>
108
- <TooltipContent>{tooltipText}</TooltipContent>
109
- </Tooltip>,
110
- );
111
-
112
- const buttonEl = getByRole('button');
113
- expect(queryByText(tooltipText)).not.toBeInTheDocument();
114
-
115
- await userEvent.click(buttonEl, { skipHover: true });
116
- expect(queryByText(tooltipText)).not.toBeInTheDocument();
117
-
118
- await user.hover(buttonEl);
119
- getByText(tooltipText);
120
- getByTestId('floating-arrow');
121
- });
122
-
123
- it("Doesn't show arrow", async () => {
124
- const { user, queryByText, getByText, getByRole, queryByTestId } = setup(
125
- <Tooltip hasArrow={false}>
126
- <TooltipTrigger>
127
- <Button size="medium" text="Click me!" />
128
- </TooltipTrigger>
129
- <TooltipContent>{tooltipText}</TooltipContent>
130
- </Tooltip>,
131
- );
132
-
133
- const buttonEl = getByRole('button');
134
- expect(queryByText(tooltipText)).not.toBeInTheDocument();
135
-
136
- await user.click(buttonEl);
137
- getByText(tooltipText);
138
- expect(queryByTestId('floating-arrow')).not.toBeInTheDocument();
139
- });
140
-
141
- it("Doesn't render not valid triggers", () => {
142
- const { queryByText } = setup(
143
- <Tooltip>
144
- <TooltipTrigger>Trigger </TooltipTrigger>
145
- <TooltipContent>{tooltipText}</TooltipContent>
146
- </Tooltip>,
147
- );
148
-
149
- expect(queryByText('Trigger')).not.toBeInTheDocument();
150
- });
151
-
152
- it('Throws an error if not wrapped with <Tooltip />', () => {
153
- jest.spyOn(console, 'error').mockImplementation(() => {
154
- /* No-op */
155
- });
156
-
157
- const errorText =
158
- 'The component should be wrapped with <Tooltip> to have access to the context';
159
- expect(() => setup(<TooltipTrigger>Trigger</TooltipTrigger>)).toThrow(
160
- errorText,
161
- );
162
- expect(() => setup(<TooltipContent>{tooltipText}</TooltipContent>)).toThrow(
163
- errorText,
164
- );
165
-
166
- (console.error as jest.Mock).mockRestore();
167
- });
168
-
169
- it('Shows up by default', () => {
170
- const { queryByText } = setup(
171
- <Tooltip isOpen>
172
- <TooltipTrigger>
173
- <Button size="medium" text="Click me!" />
174
- </TooltipTrigger>
175
- <TooltipContent>{tooltipText}</TooltipContent>
176
- </Tooltip>,
177
- );
178
-
179
- expect(queryByText(tooltipText)).toBeInTheDocument();
180
- });
181
-
182
- describe('SimpleChartTooltip', () => {
183
- const point: Point = {
184
- id: '',
185
- index: 0,
186
- serieId: '',
187
- serieColor: '',
188
- x: 1,
189
- y: 1,
190
- color: 'white',
191
- borderColor: 'black',
192
- data: {
193
- x: 1,
194
- xFormatted: 'x-formatted',
195
- y: 1,
196
- yFormatted: 'y-formatted',
197
- },
198
- };
199
-
200
- it('Renders with the default formatting', () => {
201
- const { getByText } = setup(<SimpleChartTooltip point={point} />);
202
- getByText('x-formatted - y-formatted');
203
- });
204
-
205
- it('Renders with a custom formatting', () => {
206
- const renderFn = ({
207
- xFormatted,
208
- yFormatted,
209
- }: {
210
- xFormatted: string | number;
211
- yFormatted: string | number;
212
- }) => `${xFormatted} - ${yFormatted}`.toUpperCase();
213
-
214
- const { getByText } = setup(
215
- <SimpleChartTooltip point={point} renderValue={renderFn} />,
216
- );
217
- getByText('X-FORMATTED - Y-FORMATTED');
218
- });
219
- });
220
-
221
- describe('ProgressChartTooltip', () => {
222
- it('Renders with an icon', async () => {
223
- const caption = 'Calories';
224
- const value = 90;
225
- const valueFormatted = '90';
226
- const iconName = 'arrow-up';
227
-
228
- const { getByText, getByRole, findByTitle } = setup(
229
- <ProgressChartTooltip
230
- caption={caption}
231
- value={value}
232
- valueFormatted={valueFormatted}
233
- iconName={iconName}
234
- />,
235
- );
236
-
237
- getByText(caption);
238
- getByText(valueFormatted);
239
- await findByTitle('Arrow Up');
240
-
241
- const progressBar = getByRole(/progressbar/i);
242
-
243
- expect(progressBar).toHaveStyle(
244
- `background-color: ${theme.colors.green}`,
245
- );
246
- expect(progressBar).toHaveStyle('width: 90%');
247
- });
248
-
249
- it('Renders without an icon', async () => {
250
- const caption = 'Calories';
251
- const value = 80;
252
- const valueFormatted = '80';
253
-
254
- const { getByText, getByRole, queryByTitle } = setup(
255
- <ProgressChartTooltip
256
- caption={caption}
257
- value={value}
258
- valueFormatted={valueFormatted}
259
- />,
260
- );
261
-
262
- getByText(caption);
263
- getByText(valueFormatted);
264
- await waitFor(() =>
265
- expect(queryByTitle('Arrow Up')).not.toBeInTheDocument(),
266
- );
267
-
268
- const progressBar = getByRole(/progressbar/i);
269
-
270
- expect(progressBar).toHaveStyle(
271
- `background-color: ${theme.colors.green}`,
272
- );
273
- expect(progressBar).toHaveStyle('width: 80%');
274
- });
275
-
276
- it('Renders with a customized progress bar', () => {
277
- const caption = 'Calories';
278
- const value = 85;
279
- const valueFormatted = '85';
280
- const barProps = {
281
- color: 'purple' as keyof MainColors,
282
- };
283
-
284
- const { getByText, getByRole, queryByTitle } = setup(
285
- <ProgressChartTooltip
286
- caption={caption}
287
- value={value}
288
- valueFormatted={valueFormatted}
289
- barProps={barProps}
290
- />,
291
- );
292
-
293
- getByText(caption);
294
- getByText(valueFormatted);
295
- expect(queryByTitle('Arrow Up')).not.toBeInTheDocument();
296
-
297
- const progressBar = getByRole(/progressbar/i);
298
-
299
- expect(progressBar).toHaveStyle(
300
- `background-color: ${theme.colors.purple}`,
301
- );
302
- expect(progressBar).toHaveStyle('width: 85%');
303
- });
304
- });
305
- });
1
+ import { waitFor } from '../../../customTest';
2
+ import { Point } from '@nivo/line';
3
+ import userEvent from '@testing-library/user-event';
4
+ import ResizeObserver from 'resize-observer-polyfill';
5
+ import theme from '@themes/main';
6
+
7
+ import Button from '@components/Button';
8
+ import TooltipTrigger from '@components/TooltipTrigger';
9
+ import TooltipContent from '@components/TooltipContent';
10
+
11
+ import Tooltip, { SimpleChartTooltip, ProgressChartTooltip } from './index';
12
+
13
+ function setup(component: React.ReactElement) {
14
+ const user = userEvent.setup();
15
+ return {
16
+ user,
17
+ ...render(component),
18
+ };
19
+ }
20
+
21
+ window.ResizeObserver = ResizeObserver;
22
+ const tooltipText = 'Tooltip';
23
+
24
+ /**
25
+ * This is to fix the following error that shows up in the test suite.
26
+ * Error: `NaN` is an invalid value for the `left` css style property at svg
27
+ *
28
+ * The error doesn't break tests.
29
+ *
30
+ * It's caused by NaN values (width and height) returned from the
31
+ * #getCssDimensions() function at @floating-ui/dom.
32
+ * */
33
+
34
+ describe('Tooltip', () => {
35
+ beforeEach(() => {
36
+ const getComputedStyle = window.getComputedStyle;
37
+ jest.spyOn(window, 'getComputedStyle').mockImplementation((...args) => {
38
+ const result = getComputedStyle(
39
+ ...(args as [Element, string | null | undefined]),
40
+ );
41
+
42
+ const el = args[0];
43
+ if (el instanceof SVGSVGElement) {
44
+ /**
45
+ * Inspired by
46
+ * https://github.com/jsdom/jsdom/issues/135#issuecomment-68191941
47
+ * */
48
+ Object.defineProperties(result, {
49
+ offsetHeight: {
50
+ get() {
51
+ return 0;
52
+ },
53
+ },
54
+ offsetWidth: {
55
+ get() {
56
+ return 0;
57
+ },
58
+ },
59
+ width: {
60
+ get() {
61
+ return 0;
62
+ },
63
+ },
64
+ height: {
65
+ get() {
66
+ return 0;
67
+ },
68
+ },
69
+ });
70
+ }
71
+ return result;
72
+ });
73
+ });
74
+
75
+ afterEach(() => {
76
+ jest.restoreAllMocks();
77
+ });
78
+
79
+ it('Shows up when the trigger is clicked', async () => {
80
+ const { user, queryByText, getByText, getByRole, getByTestId } = setup(
81
+ <Tooltip>
82
+ <TooltipTrigger>
83
+ <Button size="medium" text="Click me!" />
84
+ </TooltipTrigger>
85
+ <TooltipContent>{tooltipText}</TooltipContent>
86
+ </Tooltip>,
87
+ );
88
+
89
+ const buttonEl = getByRole('button');
90
+ expect(queryByText(tooltipText)).not.toBeInTheDocument();
91
+
92
+ await user.click(buttonEl);
93
+
94
+ getByText(tooltipText);
95
+ getByTestId('floating-arrow');
96
+
97
+ await user.click(document.body);
98
+
99
+ expect(queryByText(tooltipText)).not.toBeInTheDocument();
100
+ });
101
+
102
+ it('Shows up when the trigger is hovered', async () => {
103
+ const { user, queryByText, getByText, getByRole, getByTestId } = setup(
104
+ <Tooltip enableClick={false} enableHover={true}>
105
+ <TooltipTrigger>
106
+ <Button size="medium" text="Hover over me!" />
107
+ </TooltipTrigger>
108
+ <TooltipContent>{tooltipText}</TooltipContent>
109
+ </Tooltip>,
110
+ );
111
+
112
+ const buttonEl = getByRole('button');
113
+ expect(queryByText(tooltipText)).not.toBeInTheDocument();
114
+
115
+ await userEvent.click(buttonEl, { skipHover: true });
116
+ expect(queryByText(tooltipText)).not.toBeInTheDocument();
117
+
118
+ await user.hover(buttonEl);
119
+ getByText(tooltipText);
120
+ getByTestId('floating-arrow');
121
+ });
122
+
123
+ it("Doesn't show arrow", async () => {
124
+ const { user, queryByText, getByText, getByRole, queryByTestId } = setup(
125
+ <Tooltip hasArrow={false}>
126
+ <TooltipTrigger>
127
+ <Button size="medium" text="Click me!" />
128
+ </TooltipTrigger>
129
+ <TooltipContent>{tooltipText}</TooltipContent>
130
+ </Tooltip>,
131
+ );
132
+
133
+ const buttonEl = getByRole('button');
134
+ expect(queryByText(tooltipText)).not.toBeInTheDocument();
135
+
136
+ await user.click(buttonEl);
137
+ getByText(tooltipText);
138
+ expect(queryByTestId('floating-arrow')).not.toBeInTheDocument();
139
+ });
140
+
141
+ it("Doesn't render not valid triggers", () => {
142
+ const { queryByText } = setup(
143
+ <Tooltip>
144
+ <TooltipTrigger>Trigger </TooltipTrigger>
145
+ <TooltipContent>{tooltipText}</TooltipContent>
146
+ </Tooltip>,
147
+ );
148
+
149
+ expect(queryByText('Trigger')).not.toBeInTheDocument();
150
+ });
151
+
152
+ it('Throws an error if not wrapped with <Tooltip />', () => {
153
+ jest.spyOn(console, 'error').mockImplementation(() => {
154
+ /* No-op */
155
+ });
156
+
157
+ const errorText =
158
+ 'The component should be wrapped with <Tooltip> to have access to the context';
159
+ expect(() => setup(<TooltipTrigger>Trigger</TooltipTrigger>)).toThrow(
160
+ errorText,
161
+ );
162
+ expect(() => setup(<TooltipContent>{tooltipText}</TooltipContent>)).toThrow(
163
+ errorText,
164
+ );
165
+
166
+ (console.error as jest.Mock).mockRestore();
167
+ });
168
+
169
+ it('Shows up by default', () => {
170
+ const { queryByText } = setup(
171
+ <Tooltip isOpen>
172
+ <TooltipTrigger>
173
+ <Button size="medium" text="Click me!" />
174
+ </TooltipTrigger>
175
+ <TooltipContent>{tooltipText}</TooltipContent>
176
+ </Tooltip>,
177
+ );
178
+
179
+ expect(queryByText(tooltipText)).toBeInTheDocument();
180
+ });
181
+
182
+ describe('SimpleChartTooltip', () => {
183
+ const point: Point = {
184
+ id: '',
185
+ index: 0,
186
+ serieId: '',
187
+ serieColor: '',
188
+ x: 1,
189
+ y: 1,
190
+ color: 'white',
191
+ borderColor: 'black',
192
+ data: {
193
+ x: 1,
194
+ xFormatted: 'x-formatted',
195
+ y: 1,
196
+ yFormatted: 'y-formatted',
197
+ },
198
+ };
199
+
200
+ it('Renders with the default formatting', () => {
201
+ const { getByText } = setup(<SimpleChartTooltip point={point} />);
202
+ getByText('x-formatted - y-formatted');
203
+ });
204
+
205
+ it('Renders with a custom formatting', () => {
206
+ const renderFn = ({
207
+ xFormatted,
208
+ yFormatted,
209
+ }: {
210
+ xFormatted: string | number;
211
+ yFormatted: string | number;
212
+ }) => `${xFormatted} - ${yFormatted}`.toUpperCase();
213
+
214
+ const { getByText } = setup(
215
+ <SimpleChartTooltip point={point} renderValue={renderFn} />,
216
+ );
217
+ getByText('X-FORMATTED - Y-FORMATTED');
218
+ });
219
+ });
220
+
221
+ describe('ProgressChartTooltip', () => {
222
+ it('Renders with an icon', async () => {
223
+ const caption = 'Calories';
224
+ const value = 90;
225
+ const valueFormatted = '90';
226
+ const iconName = 'arrow-up';
227
+
228
+ const { getByText, getByRole, findByTitle } = setup(
229
+ <ProgressChartTooltip
230
+ caption={caption}
231
+ value={value}
232
+ valueFormatted={valueFormatted}
233
+ iconName={iconName}
234
+ />,
235
+ );
236
+
237
+ getByText(caption);
238
+ getByText(valueFormatted);
239
+ await findByTitle('Arrow Up');
240
+
241
+ const progressBar = getByRole(/progressbar/i);
242
+
243
+ expect(progressBar).toHaveStyle(
244
+ `background-color: ${theme.colors.green}`,
245
+ );
246
+ expect(progressBar).toHaveStyle('width: 90%');
247
+ });
248
+
249
+ it('Renders without an icon', async () => {
250
+ const caption = 'Calories';
251
+ const value = 80;
252
+ const valueFormatted = '80';
253
+
254
+ const { getByText, getByRole, queryByTitle } = setup(
255
+ <ProgressChartTooltip
256
+ caption={caption}
257
+ value={value}
258
+ valueFormatted={valueFormatted}
259
+ />,
260
+ );
261
+
262
+ getByText(caption);
263
+ getByText(valueFormatted);
264
+ await waitFor(() =>
265
+ expect(queryByTitle('Arrow Up')).not.toBeInTheDocument(),
266
+ );
267
+
268
+ const progressBar = getByRole(/progressbar/i);
269
+
270
+ expect(progressBar).toHaveStyle(
271
+ `background-color: ${theme.colors.green}`,
272
+ );
273
+ expect(progressBar).toHaveStyle('width: 80%');
274
+ });
275
+
276
+ it('Renders with a customized progress bar', () => {
277
+ const caption = 'Calories';
278
+ const value = 85;
279
+ const valueFormatted = '85';
280
+ const barProps = {
281
+ color: 'purple' as keyof MainColors,
282
+ };
283
+
284
+ const { getByText, getByRole, queryByTitle } = setup(
285
+ <ProgressChartTooltip
286
+ caption={caption}
287
+ value={value}
288
+ valueFormatted={valueFormatted}
289
+ barProps={barProps}
290
+ />,
291
+ );
292
+
293
+ getByText(caption);
294
+ getByText(valueFormatted);
295
+ expect(queryByTitle('Arrow Up')).not.toBeInTheDocument();
296
+
297
+ const progressBar = getByRole(/progressbar/i);
298
+
299
+ expect(progressBar).toHaveStyle(
300
+ `background-color: ${theme.colors.purple}`,
301
+ );
302
+ expect(progressBar).toHaveStyle('width: 85%');
303
+ });
304
+ });
305
+ });