@axinom/mosaic-ui 0.69.0-rc.2 → 0.69.0-rc.21

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 (326) hide show
  1. package/dist/components/Buttons/Button/Button.d.ts +3 -3
  2. package/dist/components/Buttons/Button/Button.d.ts.map +1 -1
  3. package/dist/components/Buttons/Button.model.d.ts +2 -1
  4. package/dist/components/Buttons/Button.model.d.ts.map +1 -1
  5. package/dist/components/ConfirmDialog/ConfirmDialog.d.ts.map +1 -1
  6. package/dist/components/ConfirmDialog/ConfirmDialog.models.d.ts +0 -1
  7. package/dist/components/ConfirmDialog/ConfirmDialog.models.d.ts.map +1 -1
  8. package/dist/components/DateTime/TimePicker/ScrollColumn/ScrollColumn.d.ts +2 -2
  9. package/dist/components/DateTime/TimePicker/ScrollColumn/ScrollColumn.d.ts.map +1 -1
  10. package/dist/components/DynamicDataList/DynamicDataList.d.ts +1 -1
  11. package/dist/components/DynamicDataList/DynamicDataList.d.ts.map +1 -1
  12. package/dist/components/DynamicDataList/DynamicDataList.model.d.ts +0 -1
  13. package/dist/components/DynamicDataList/DynamicDataList.model.d.ts.map +1 -1
  14. package/dist/components/DynamicDataList/DynamicListDataEntry/DynamicListDataEntry.d.ts +2 -2
  15. package/dist/components/DynamicDataList/DynamicListDataEntry/DynamicListDataEntry.d.ts.map +1 -1
  16. package/dist/components/DynamicDataList/DynamicListDataEntry/Renderers/createInputRenderer/createInputRenderer.d.ts +1 -1
  17. package/dist/components/DynamicDataList/DynamicListDataEntry/Renderers/createInputRenderer/createInputRenderer.d.ts.map +1 -1
  18. package/dist/components/DynamicDataList/DynamicListDataEntry/Renderers/createSelectRenderer/createSelectRenderer.d.ts +1 -1
  19. package/dist/components/DynamicDataList/DynamicListDataEntry/Renderers/createSelectRenderer/createSelectRenderer.d.ts.map +1 -1
  20. package/dist/components/DynamicDataList/DynamicListDataEntry/Renderers/renderers.model.d.ts +2 -0
  21. package/dist/components/DynamicDataList/DynamicListDataEntry/Renderers/renderers.model.d.ts.map +1 -1
  22. package/dist/components/DynamicDataList/DynamicListHeader/DynamicListHeader.d.ts +2 -2
  23. package/dist/components/DynamicDataList/DynamicListHeader/DynamicListHeader.d.ts.map +1 -1
  24. package/dist/components/DynamicDataList/DynamicListRow/DynamicListRow.d.ts +2 -2
  25. package/dist/components/DynamicDataList/DynamicListRow/DynamicListRow.d.ts.map +1 -1
  26. package/dist/components/DynamicDataList/helpers/DynamicListReducer/DynamicListReducer.actions.d.ts +2 -2
  27. package/dist/components/DynamicDataList/helpers/DynamicListReducer/DynamicListReducer.actions.d.ts.map +1 -1
  28. package/dist/components/DynamicDataList/helpers/DynamicListReducer/DynamicListReducer.d.ts.map +1 -1
  29. package/dist/components/DynamicDataList/helpers/DynamicListReducer/DynamicListReducer.init.d.ts.map +1 -1
  30. package/dist/components/DynamicDataList/helpers/useColumnDefs.d.ts +1 -1
  31. package/dist/components/DynamicDataList/helpers/useColumnDefs.d.ts.map +1 -1
  32. package/dist/components/DynamicDataList/helpers/useDataHandler.d.ts +1 -1
  33. package/dist/components/DynamicDataList/helpers/useDataHandler.d.ts.map +1 -1
  34. package/dist/components/DynamicDataList/helpers/useRowAnimation.d.ts.map +1 -1
  35. package/dist/components/DynamicDataList/helpers/useRowEditing.d.ts.map +1 -1
  36. package/dist/components/EmptyStation/EmptyStation.d.ts.map +1 -1
  37. package/dist/components/Explorer/BulkEdit/FormFieldsConfigConverter.d.ts.map +1 -1
  38. package/dist/components/Explorer/BulkEdit/GenerateMutation.d.ts.map +1 -1
  39. package/dist/components/Explorer/BulkEdit/helpers/FieldWrapper.d.ts.map +1 -1
  40. package/dist/components/Explorer/BulkEdit/useBulkEdit.d.ts.map +1 -1
  41. package/dist/components/Explorer/Explorer.d.ts +1 -1
  42. package/dist/components/Explorer/Explorer.d.ts.map +1 -1
  43. package/dist/components/Explorer/Explorer.model.d.ts +0 -1
  44. package/dist/components/Explorer/Explorer.model.d.ts.map +1 -1
  45. package/dist/components/Explorer/NavigationExplorer/NavigationExplorer.d.ts +1 -1
  46. package/dist/components/Explorer/NavigationExplorer/NavigationExplorer.d.ts.map +1 -1
  47. package/dist/components/Explorer/QuickEdit/useQuickEdit.d.ts.map +1 -1
  48. package/dist/components/Explorer/SelectionExplorer/SelectionExplorer.d.ts +1 -1
  49. package/dist/components/Explorer/SelectionExplorer/SelectionExplorer.d.ts.map +1 -1
  50. package/dist/components/Explorer/helpers/useActions.d.ts +0 -1
  51. package/dist/components/Explorer/helpers/useActions.d.ts.map +1 -1
  52. package/dist/components/Explorer/helpers/useDataProvider.d.ts +0 -1
  53. package/dist/components/Explorer/helpers/useDataProvider.d.ts.map +1 -1
  54. package/dist/components/Explorer/helpers/useFilters.d.ts +0 -1
  55. package/dist/components/Explorer/helpers/useFilters.d.ts.map +1 -1
  56. package/dist/components/FieldSelection/FieldSelection.d.ts +1 -0
  57. package/dist/components/FieldSelection/FieldSelection.d.ts.map +1 -1
  58. package/dist/components/Filters/Filter/Filter.d.ts +2 -2
  59. package/dist/components/Filters/Filter/Filter.d.ts.map +1 -1
  60. package/dist/components/Filters/Filters.d.ts +2 -2
  61. package/dist/components/Filters/Filters.d.ts.map +1 -1
  62. package/dist/components/Filters/Filters.model.d.ts +0 -1
  63. package/dist/components/Filters/Filters.model.d.ts.map +1 -1
  64. package/dist/components/Filters/Validators/DateRangeFilterValidator.d.ts.map +1 -1
  65. package/dist/components/Filters/Validators/NumberRangeFilterValidator.d.ts.map +1 -1
  66. package/dist/components/FormElements/DynamicDataListControl/DynamicDataListControl.d.ts +0 -1
  67. package/dist/components/FormElements/DynamicDataListControl/DynamicDataListControl.d.ts.map +1 -1
  68. package/dist/components/FormElements/DynamicDataListControl/DynamicDataListField.d.ts +2 -2
  69. package/dist/components/FormElements/DynamicDataListControl/DynamicDataListField.d.ts.map +1 -1
  70. package/dist/components/FormElements/FormGroup/FormGroup.d.ts +12 -0
  71. package/dist/components/FormElements/FormGroup/FormGroup.d.ts.map +1 -0
  72. package/dist/components/FormElements/FormGroupTitle/FormGroupTitle.d.ts +5 -0
  73. package/dist/components/FormElements/FormGroupTitle/FormGroupTitle.d.ts.map +1 -1
  74. package/dist/components/FormElements/FormikDebug/FormikDebug.d.ts +0 -1
  75. package/dist/components/FormElements/FormikDebug/FormikDebug.d.ts.map +1 -1
  76. package/dist/components/FormElements/ReadOnly/ReadOnlyField.d.ts +2 -2
  77. package/dist/components/FormElements/ReadOnly/ReadOnlyField.d.ts.map +1 -1
  78. package/dist/components/FormElements/ReadOnlyText/ReadOnlyTextField.d.ts +2 -2
  79. package/dist/components/FormElements/ReadOnlyText/ReadOnlyTextField.d.ts.map +1 -1
  80. package/dist/components/FormElements/Tags/Tags.d.ts +2 -2
  81. package/dist/components/FormElements/Tags/Tags.d.ts.map +1 -1
  82. package/dist/components/FormElements/Tags/TagsField.d.ts +2 -2
  83. package/dist/components/FormElements/Tags/TagsField.d.ts.map +1 -1
  84. package/dist/components/FormElements/formStoryHelper.d.ts.map +1 -1
  85. package/dist/components/FormElements/index.d.ts +1 -0
  86. package/dist/components/FormElements/index.d.ts.map +1 -1
  87. package/dist/components/FormElements/useFormikError.d.ts.map +1 -1
  88. package/dist/components/FormStation/Create/Create.d.ts +2 -2
  89. package/dist/components/FormStation/Create/Create.d.ts.map +1 -1
  90. package/dist/components/FormStation/Details/Details.d.ts +2 -2
  91. package/dist/components/FormStation/Details/Details.d.ts.map +1 -1
  92. package/dist/components/FormStation/FormStation.d.ts +2 -2
  93. package/dist/components/FormStation/FormStation.d.ts.map +1 -1
  94. package/dist/components/FormStation/FormStationActions/FormStationActions.d.ts +1 -1
  95. package/dist/components/FormStation/FormStationActions/FormStationActions.d.ts.map +1 -1
  96. package/dist/components/FormStation/FormStationHeader/FormStationHeader.d.ts.map +1 -1
  97. package/dist/components/FormStation/SaveOnDemand/SaveOnDemand.d.ts +0 -1
  98. package/dist/components/FormStation/SaveOnDemand/SaveOnDemand.d.ts.map +1 -1
  99. package/dist/components/FormStation/SaveOnNavigate/handleNavigationAttempt.d.ts.map +1 -1
  100. package/dist/components/FormStation/helpers/useTitle.d.ts.map +1 -1
  101. package/dist/components/InfoPanel/hooks/useCollapse.d.ts +0 -1
  102. package/dist/components/InfoPanel/hooks/useCollapse.d.ts.map +1 -1
  103. package/dist/components/InlineMenu/InlineMenu.d.ts.map +1 -1
  104. package/dist/components/List/List.d.ts +2 -2
  105. package/dist/components/List/List.d.ts.map +1 -1
  106. package/dist/components/List/List.model.d.ts +0 -1
  107. package/dist/components/List/List.model.d.ts.map +1 -1
  108. package/dist/components/List/List.stories.helper.d.ts.map +1 -1
  109. package/dist/components/List/ListHeader/ColumnLabel/ColumnLabel.d.ts +2 -2
  110. package/dist/components/List/ListHeader/ColumnLabel/ColumnLabel.d.ts.map +1 -1
  111. package/dist/components/List/ListHeader/ListHeader.d.ts +2 -2
  112. package/dist/components/List/ListHeader/ListHeader.d.ts.map +1 -1
  113. package/dist/components/List/ListRow/ListRow.d.ts +2 -4
  114. package/dist/components/List/ListRow/ListRow.d.ts.map +1 -1
  115. package/dist/components/List/ListRow/ListRowCell/ListRowCell.d.ts +0 -1
  116. package/dist/components/List/ListRow/ListRowCell/ListRowCell.d.ts.map +1 -1
  117. package/dist/components/List/ListRow/ListRowCell/renderData.d.ts.map +1 -1
  118. package/dist/components/List/ListRow/ListRowLoader.d.ts +2 -2
  119. package/dist/components/List/ListRow/ListRowLoader.d.ts.map +1 -1
  120. package/dist/components/List/ListRow/Renderers/BooleanDotRenderer/BooleanDotRenderer.d.ts +0 -1
  121. package/dist/components/List/ListRow/Renderers/BooleanDotRenderer/BooleanDotRenderer.d.ts.map +1 -1
  122. package/dist/components/List/ListRow/Renderers/DateRenderer/DateRenderer.d.ts.map +1 -1
  123. package/dist/components/List/ListRow/Renderers/ExternalLinkRenderer/ExternalLinkRenderer.d.ts.map +1 -1
  124. package/dist/components/List/ListRow/Renderers/StateRenderer/StateRenderer.d.ts +1 -1
  125. package/dist/components/List/ListRow/Renderers/StateRenderer/StateRenderer.d.ts.map +1 -1
  126. package/dist/components/List/ListRow/Renderers/TagsRenderer/TagsRenderer.d.ts +0 -1
  127. package/dist/components/List/ListRow/Renderers/TagsRenderer/TagsRenderer.d.ts.map +1 -1
  128. package/dist/components/List/ListRow/Renderers/TimestampRenderer/TimestampRenderer.d.ts.map +1 -1
  129. package/dist/components/List/ListRowRenderer/ListRowRenderer.d.ts.map +1 -1
  130. package/dist/components/List/helpers.d.ts.map +1 -1
  131. package/dist/components/List/useColumnsSize.d.ts +0 -2
  132. package/dist/components/List/useColumnsSize.d.ts.map +1 -1
  133. package/dist/components/Loaders/skeletons.d.ts +0 -1
  134. package/dist/components/Loaders/skeletons.d.ts.map +1 -1
  135. package/dist/components/Modal/useModal.d.ts.map +1 -1
  136. package/dist/components/PageHeader/PageHeaderActionsGroup/PageHeaderActionsGroupsContext.d.ts +0 -1
  137. package/dist/components/PageHeader/PageHeaderActionsGroup/PageHeaderActionsGroupsContext.d.ts.map +1 -1
  138. package/dist/components/PageHeader/helpers/useElementWidthObserver.d.ts +1 -2
  139. package/dist/components/PageHeader/helpers/useElementWidthObserver.d.ts.map +1 -1
  140. package/dist/components/Tabs/TabList/ScrollContainer/useScroll.d.ts.map +1 -1
  141. package/dist/components/Utils/Postgraphile/FilterTransformer.d.ts.map +1 -1
  142. package/dist/components/Utils/Postgraphile/SortTransformer.d.ts.map +1 -1
  143. package/dist/components/Utils/State/GlobalState.d.ts.map +1 -1
  144. package/dist/helpers/idleCallbackHelpers.d.ts +0 -1
  145. package/dist/helpers/idleCallbackHelpers.d.ts.map +1 -1
  146. package/dist/helpers/storybook.d.ts.map +1 -1
  147. package/dist/helpers/testing.d.ts +6 -21
  148. package/dist/helpers/testing.d.ts.map +1 -1
  149. package/dist/helpers/utils.d.ts +1 -2
  150. package/dist/helpers/utils.d.ts.map +1 -1
  151. package/dist/hooks/useDEBUGDetectChanges/useDEBUGDetectChanges.d.ts.map +1 -1
  152. package/dist/hooks/useDEBUGRenderCount/useDEBUGRenderCount.d.ts.map +1 -1
  153. package/dist/hooks/useDebounce/useDebounce.d.ts +1 -2
  154. package/dist/hooks/useDebounce/useDebounce.d.ts.map +1 -1
  155. package/dist/hooks/useExpand/useExpand.d.ts.map +1 -1
  156. package/dist/hooks/useReactRouterPause/utils.d.ts.map +1 -1
  157. package/dist/hooks/useResize/useResize.d.ts +0 -1
  158. package/dist/hooks/useResize/useResize.d.ts.map +1 -1
  159. package/dist/hooks/useTabTitle/useTabTitle.d.ts.map +1 -1
  160. package/dist/hooks/useValueOrOnDemand/useValueOrOnDemand.d.ts +1 -1
  161. package/dist/hooks/useValueOrOnDemand/useValueOrOnDemand.d.ts.map +1 -1
  162. package/dist/index.es.js +4 -4
  163. package/dist/index.es.js.map +1 -1
  164. package/dist/index.js +4 -4
  165. package/dist/index.js.map +1 -1
  166. package/dist/utils/ErrorMapper/ErrorMapper.d.ts.map +1 -1
  167. package/dist/utils/ErrorTypeToStationError.d.ts.map +1 -1
  168. package/dist/utils/ToolTipHelpers.d.ts.map +1 -1
  169. package/dist/validators/timestamp/timestamp.d.ts.map +1 -1
  170. package/package.json +11 -10
  171. package/src/components/Accordion/Accordion.spec.tsx +1 -1
  172. package/src/components/Accordion/AccordionItem/AccordionItem.spec.tsx +2 -2
  173. package/src/components/Actions/Action/Action.spec.tsx +189 -228
  174. package/src/components/Actions/Actions.spec.tsx +42 -32
  175. package/src/components/Buttons/Button/Button.spec.tsx +110 -115
  176. package/src/components/Buttons/Button/Button.tsx +4 -0
  177. package/src/components/Buttons/Button.model.ts +2 -0
  178. package/src/components/Buttons/CompositeButton/CompositeButton.spec.tsx +122 -121
  179. package/src/components/Buttons/TextButton/TextButton.spec.tsx +85 -90
  180. package/src/components/ConfirmDialog/ConfirmDialog.spec.tsx +75 -79
  181. package/src/components/DateTime/DatePicker/DatePicker.spec.tsx +8 -7
  182. package/src/components/DateTime/DateTimePicker.spec.tsx +43 -62
  183. package/src/components/DateTime/TimePicker/ScrollColumn/ScrollColumn.spec.tsx +19 -16
  184. package/src/components/DateTime/TimePicker/TimePicker.spec.tsx +44 -73
  185. package/src/components/DynamicDataList/DynamicDataList.spec.tsx +112 -107
  186. package/src/components/DynamicDataList/DynamicListDataEntry/DynamicListDataEntry.spec.tsx +91 -144
  187. package/src/components/DynamicDataList/DynamicListDataEntry/DynamicListDataEntry.tsx +38 -20
  188. package/src/components/DynamicDataList/DynamicListDataEntry/Renderers/createInputRenderer/createInputRenderer.spec.tsx +18 -15
  189. package/src/components/DynamicDataList/DynamicListDataEntry/Renderers/createInputRenderer/createInputRenderer.tsx +2 -0
  190. package/src/components/DynamicDataList/DynamicListDataEntry/Renderers/createSelectRenderer/createSelectRenderer.spec.tsx +53 -28
  191. package/src/components/DynamicDataList/DynamicListDataEntry/Renderers/createSelectRenderer/createSelectRenderer.tsx +2 -0
  192. package/src/components/DynamicDataList/DynamicListDataEntry/Renderers/renderers.model.ts +2 -0
  193. package/src/components/DynamicDataList/DynamicListHeader/DynamicListHeader.scss +19 -5
  194. package/src/components/DynamicDataList/DynamicListHeader/DynamicListHeader.spec.tsx +72 -76
  195. package/src/components/DynamicDataList/DynamicListRow/DynamicListRow.scss +9 -2
  196. package/src/components/DynamicDataList/DynamicListRow/DynamicListRow.spec.tsx +86 -113
  197. package/src/components/DynamicDataList/helpers/DynamicListReducer/DynamicListReducer.actions.spec.ts +1 -0
  198. package/src/components/DynamicDataList/helpers/DynamicListReducer/DynamicListReducer.init.spec.ts +1 -0
  199. package/src/components/DynamicDataList/helpers/DynamicListReducer/DynamicListReducer.spec.ts +6 -5
  200. package/src/components/EmptyStation/EmptyStation.spec.tsx +41 -37
  201. package/src/components/Explorer/BulkEdit/FormFieldsConfigConverter.spec.tsx +29 -28
  202. package/src/components/Explorer/BulkEdit/FormFieldsConfigConverter.tsx +1 -0
  203. package/src/components/Explorer/BulkEdit/GenerateMutation.spec.tsx +1 -0
  204. package/src/components/Explorer/BulkEdit/helpers/FieldWrapper.scss +1 -0
  205. package/src/components/Explorer/BulkEdit/helpers/FieldWrapper.tsx +1 -0
  206. package/src/components/Explorer/Explorer.spec.tsx +513 -825
  207. package/src/components/Explorer/NavigationExplorer/NavigationExplorer.spec.tsx +90 -131
  208. package/src/components/Explorer/QuickEdit/useQuickEdit.spec.tsx +36 -56
  209. package/src/components/Explorer/SelectionExplorer/SelectionExplorer.spec.tsx +59 -65
  210. package/src/components/Explorer/helpers/InMemoryDataProvider.spec.ts +1 -0
  211. package/src/components/Explorer/helpers/useFilters.spec.tsx +13 -11
  212. package/src/components/Explorer/helpers/useStationMessage.spec.tsx +4 -3
  213. package/src/components/Explorer/helpers/useSubtitle.spec.tsx +1 -0
  214. package/src/components/FieldSelection/FieldSelection.scss +1 -1
  215. package/src/components/FieldSelection/FieldSelection.spec.tsx +1 -1
  216. package/src/components/FieldSelection/FieldSelection.tsx +6 -2
  217. package/src/components/Filters/Filter/Filter.spec.tsx +78 -47
  218. package/src/components/Filters/Filters.spec.tsx +56 -58
  219. package/src/components/Filters/SelectionTypes/DateTimeFilter/DateTimeFilter.spec.tsx +45 -46
  220. package/src/components/Filters/SelectionTypes/FreeTextFilter/FreeTextFilter.spec.tsx +23 -23
  221. package/src/components/Filters/SelectionTypes/NumericTextFilter/NumericTextFilter.spec.tsx +37 -28
  222. package/src/components/Filters/SelectionTypes/OptionsFilter/OptionsFilter.spec.tsx +14 -12
  223. package/src/components/Filters/Validators/DateRangeFilterValidator.spec.ts +1 -0
  224. package/src/components/Filters/Validators/NumberRangeFilterValidator.spec.ts +1 -0
  225. package/src/components/FormElements/BooleanView/BooleanViewField.spec.tsx +34 -31
  226. package/src/components/FormElements/Checkbox/Checkbox.spec.tsx +129 -128
  227. package/src/components/FormElements/CustomTags/CustomTags.spec.tsx +312 -446
  228. package/src/components/FormElements/DateTimeField/DateTimeText.spec.tsx +61 -52
  229. package/src/components/FormElements/DynamicDataListControl/DynamicDataListControl.spec.tsx +19 -24
  230. package/src/components/FormElements/FileUploadControl/FileUploadControl.spec.tsx +67 -60
  231. package/src/components/FormElements/FormElementContainer/FormElementContainer.spec.tsx +13 -12
  232. package/src/components/FormElements/FormGroup/FormGroup.scss +62 -0
  233. package/src/components/FormElements/FormGroup/FormGroup.stories.tsx +25 -0
  234. package/src/components/FormElements/FormGroup/FormGroup.tsx +60 -0
  235. package/src/components/FormElements/FormGroupTitle/FormGroupTitle.tsx +5 -0
  236. package/src/components/FormElements/Link/LinkField.spec.tsx +24 -23
  237. package/src/components/FormElements/MaskedSingleLineText/MaskedSingleLineText.spec.tsx +4 -3
  238. package/src/components/FormElements/Radio/Radio.spec.tsx +170 -172
  239. package/src/components/FormElements/ReadOnly/ReadOnlyField.spec.tsx +23 -22
  240. package/src/components/FormElements/ReadOnlyText/ReadOnlyTextField.spec.tsx +23 -22
  241. package/src/components/FormElements/Select/Select.spec.tsx +30 -29
  242. package/src/components/FormElements/SingleLineText/SingleLineText.spec.tsx +46 -42
  243. package/src/components/FormElements/Tags/Tags.spec.tsx +59 -53
  244. package/src/components/FormElements/TextArea/TextArea.spec.tsx +44 -29
  245. package/src/components/FormElements/ToggleButton/ToggleButton.spec.tsx +188 -165
  246. package/src/components/FormElements/index.ts +1 -0
  247. package/src/components/FormStation/FormStation.spec.tsx +273 -198
  248. package/src/components/FormStation/FormStation.stories.tsx +15 -13
  249. package/src/components/FormStation/FormStationHeader/FormStationHeader.tsx +5 -3
  250. package/src/components/FormStation/SaveOnNavigate/SaveOnNavigate.spec.tsx +23 -20
  251. package/src/components/FormStation/SaveOnNavigate/handleNavigationAttempt.spec.ts +25 -24
  252. package/src/components/FormStation/helpers/useTitle.spec.ts +9 -7
  253. package/src/components/Hub/Hub.spec.tsx +13 -10
  254. package/src/components/Hub/Tile/Tile.spec.tsx +29 -25
  255. package/src/components/Icons/Icons.spec.tsx +25 -27
  256. package/src/components/Icons/Icons.tsx +1 -1
  257. package/src/components/InfoPanel/InfoImage/InfoImage.spec.tsx +4 -3
  258. package/src/components/InfoPanel/InfoPanel.scss +2 -0
  259. package/src/components/InfoPanel/InfoPanel.spec.tsx +4 -3
  260. package/src/components/InfoPanel/Paragraph/Paragraph.spec.tsx +4 -3
  261. package/src/components/InfoPanel/Section/Section.spec.tsx +39 -46
  262. package/src/components/InfoPanel/hooks/useCollapse.ts +9 -7
  263. package/src/components/InlineMenu/InlineMenu.spec.tsx +24 -23
  264. package/src/components/InlineMenu/InlineMenu.tsx +3 -0
  265. package/src/components/LandingPageHeader/LandingPageHeader.spec.tsx +9 -8
  266. package/src/components/LandingPageTiles/LandingPageTiles.spec.tsx +29 -28
  267. package/src/components/LandingPageTiles/TileLarge/TileLarge.spec.tsx +68 -61
  268. package/src/components/LandingPageTiles/TileSmall/TileSmall.spec.tsx +50 -32
  269. package/src/components/List/List.spec.tsx +337 -241
  270. package/src/components/List/ListCheckBox/ListCheckBox.spec.tsx +54 -48
  271. package/src/components/List/ListHeader/ColumnLabel/ColumnLabel.scss +4 -1
  272. package/src/components/List/ListHeader/ColumnLabel/ColumnLabel.spec.tsx +46 -43
  273. package/src/components/List/ListHeader/ListHeader.spec.tsx +82 -66
  274. package/src/components/List/ListRow/ListRow.spec.tsx +125 -130
  275. package/src/components/List/ListRow/ListRowCell/ListRowCell.spec.tsx +57 -100
  276. package/src/components/List/ListRow/ListRowLoader.spec.tsx +16 -12
  277. package/src/components/List/ListRow/Renderers/BooleanDotRenderer/BooleanDotRenderer.spec.tsx +12 -9
  278. package/src/components/List/ListRow/Renderers/ExternalLinkRenderer/ExternalLinkRenderer.spec.tsx +40 -35
  279. package/src/components/List/ListRow/Renderers/StateRenderer/StateRenderer.spec.tsx +14 -17
  280. package/src/components/List/ListRow/Renderers/TagsRenderer/TagsRenderer.spec.tsx +18 -17
  281. package/src/components/List/ListRow/Renderers/TagsRenderer/TagsRenderer.tsx +2 -2
  282. package/src/components/List/ListRowRenderer/ListRowRenderer.spec.tsx +82 -68
  283. package/src/components/Loaders/ImageLoader/ImageLoader.spec.tsx +88 -96
  284. package/src/components/Loaders/Loader/Loader.spec.tsx +51 -24
  285. package/src/components/Message/Message.spec.tsx +56 -44
  286. package/src/components/MessageBar/MessageBar.scss +3 -0
  287. package/src/components/MessageBar/MessageBar.spec.tsx +88 -85
  288. package/src/components/Modal/Modal.spec.tsx +92 -87
  289. package/src/components/NavigationAwareStation/NavigationAwareStation.spec.tsx +23 -22
  290. package/src/components/PageHeader/PageHeader.spec.tsx +22 -21
  291. package/src/components/PageHeader/PageHeaderAction/PageHeaderAction.spec.tsx +275 -193
  292. package/src/components/PageHeader/PageHeaderActionsGroup/PageHeaderActionsGroup.spec.tsx +39 -34
  293. package/src/components/ProgressBar/ProgressBar.spec.tsx +18 -15
  294. package/src/components/Utils/Postgraphile/CreateConnectionRenderer.spec.ts +1 -0
  295. package/src/components/Utils/Postgraphile/FilterTransformer.spec.ts +1 -0
  296. package/src/components/Utils/Postgraphile/RangeTransformer.spec.ts +1 -0
  297. package/src/components/Utils/Postgraphile/SortTransformer.spec.ts +1 -0
  298. package/src/components/Utils/Postgraphile/UpdateGQLFragmentGenerator.spec.ts +1 -0
  299. package/src/components/Utils/Postgraphile/generateArrayMutations.spec.ts +1 -0
  300. package/src/components/Utils/Postgraphile/getArrayDiff.spec.ts +1 -0
  301. package/src/components/Utils/Postgraphile/getFormDiff.spec.ts +1 -0
  302. package/src/components/Utils/State/GlobalState.spec.ts +4 -2
  303. package/src/components/Utils/Transformers/Boolean.spec.ts +1 -0
  304. package/src/components/Utils/Transformers/DateTime.spec.ts +2 -1
  305. package/src/components/Utils/Transformers/FileSize.spec.ts +1 -0
  306. package/src/components/Utils/Transformers/SortArray.spec.ts +1 -0
  307. package/src/components/Utils/Transformers/Timestamp.spec.ts +3 -2
  308. package/src/components/Utils/Transformers/TitleCase.spec.ts +1 -0
  309. package/src/components/VisualElements/ImgElement.spec.tsx +34 -35
  310. package/src/components/VisualElements/SvgElement.spec.tsx +72 -69
  311. package/src/helpers/testing.ts +9 -76
  312. package/src/hooks/useBusy/useBusy.spec.tsx +8 -9
  313. package/src/hooks/useClickOutside/useClickOutside.spec.tsx +19 -51
  314. package/src/hooks/useDebounce/useDebounce.spec.tsx +31 -26
  315. package/src/hooks/useExpand/useExpand.spec.tsx +30 -21
  316. package/src/hooks/useTabTitle/useTabTitle.spec.tsx +18 -18
  317. package/src/hooks/useValueOrOnDemand/useValueOrOnDemand.spec.tsx +31 -52
  318. package/src/styles/variables.scss +3 -1
  319. package/src/utils/ErrorMapper/ApolloClient/ApolloErrorMapper.spec.ts +1 -0
  320. package/src/utils/ErrorMapper/ErrorMapper.spec.ts +1 -0
  321. package/src/utils/ErrorTypeToStationError.spec.tsx +12 -11
  322. package/src/utils/ToolTipHelpers.spec.ts +1 -0
  323. package/src/validators/timestamp/timestamp.spec.ts +1 -0
  324. package/dist/helpers/hooksTestingHelpers.d.ts +0 -7
  325. package/dist/helpers/hooksTestingHelpers.d.ts.map +0 -1
  326. package/src/helpers/hooksTestingHelpers.tsx +0 -22
@@ -1,15 +1,14 @@
1
1
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
- import { mount, shallow } from 'enzyme';
3
- import React, { ReactNode, SyntheticEvent } from 'react';
4
- import ContentLoader from 'react-content-loader';
5
- import { act } from 'react-dom/test-utils';
2
+ import { fireEvent, render } from '@testing-library/react';
3
+ import React, { ReactNode } from 'react';
4
+ import { describe, expect, it, vi } from 'vitest';
6
5
  import { ImageLoader } from './ImageLoader';
7
6
 
8
7
  describe('ImageLoader', () => {
9
8
  it('renders the component without crashing', () => {
10
- const wrapper = shallow(<ImageLoader imgSrc="" />);
9
+ const { container } = render(<ImageLoader imgSrc="" />);
11
10
 
12
- expect(wrapper).toBeTruthy();
11
+ expect(container).toBeTruthy();
13
12
  });
14
13
 
15
14
  it(`gives the image element it's src, height, width, and alt attributes`, () => {
@@ -18,7 +17,7 @@ describe('ImageLoader', () => {
18
17
  const mockWidth = 'test-width';
19
18
  const mockAlt = 'test-alt';
20
19
 
21
- const wrapper = mount(
20
+ const { container } = render(
22
21
  <ImageLoader
23
22
  imgSrc={mockSrc}
24
23
  alt={mockAlt}
@@ -27,110 +26,104 @@ describe('ImageLoader', () => {
27
26
  />,
28
27
  );
29
28
 
30
- const src = wrapper.find('img').prop('src');
31
- const height = wrapper.find('img').prop('height');
32
- const width = wrapper.find('img').prop('width');
33
- const alt = wrapper.find('img').prop('alt');
29
+ const img = container.querySelector('img') as HTMLImageElement;
34
30
 
35
- expect(src).toBe(mockSrc);
36
- expect(height).toBe(mockHeight);
37
- expect(width).toBe(mockWidth);
38
- expect(alt).toBe(mockAlt);
31
+ expect(img.src).toContain(mockSrc);
32
+ expect(img.getAttribute('height')).toBe(mockHeight);
33
+ expect(img.getAttribute('width')).toBe(mockWidth);
34
+ expect(img.alt).toBe(mockAlt);
39
35
  });
40
36
 
41
37
  it('renders the loading animation while an image is loading', () => {
42
- const wrapper = mount(<ImageLoader imgSrc="" />);
38
+ const { container } = render(<ImageLoader imgSrc="" />);
43
39
 
44
- const loader = wrapper.find(ContentLoader);
45
- const imgDisplay = wrapper.find('img').prop('style')?.display;
40
+ const loader = container.querySelector('svg');
41
+ const img = container.querySelector('img') as HTMLImageElement;
46
42
 
47
- expect(loader.exists()).toBe(true);
48
- expect(imgDisplay).toBe('none');
43
+ expect(loader).toBeInTheDocument();
44
+ expect(img.style.display).toBe('none');
49
45
  });
50
46
 
51
47
  it('renders the image after loading has completed', () => {
52
- const wrapper = mount(<ImageLoader imgSrc="" />);
48
+ const { container } = render(<ImageLoader imgSrc="" />);
49
+ const img = container.querySelector('img') as HTMLImageElement;
53
50
 
54
- wrapper.find('img').prop('onLoad')!({} as SyntheticEvent);
55
- wrapper.update();
51
+ fireEvent.load(img);
56
52
 
57
- const loader = wrapper.find(ContentLoader);
58
- const imgDisplay = wrapper.find('img').prop('style')?.display;
53
+ const loader = container.querySelector('svg');
59
54
 
60
- expect(loader.exists()).toBe(false);
61
- expect(imgDisplay).toBe('unset');
55
+ expect(loader).not.toBeInTheDocument();
56
+ expect(img.style.display).toBe('unset');
62
57
  });
63
58
 
64
59
  it('emits onLoad callback with img src after successful load', () => {
65
- const spy = jest.fn();
60
+ const spy = vi.fn();
66
61
  const mockUrl = 'mock-url';
67
- const wrapper = mount(<ImageLoader imgSrc={mockUrl} onLoad={spy} />);
62
+ const { container } = render(<ImageLoader imgSrc={mockUrl} onLoad={spy} />);
63
+ const img = container.querySelector('img') as HTMLImageElement;
68
64
 
69
- wrapper.find('img').prop('onLoad')!({} as SyntheticEvent);
65
+ fireEvent.load(img);
70
66
 
71
67
  expect(spy).toHaveBeenCalledTimes(1);
72
68
  expect(spy).toHaveBeenCalledWith(mockUrl);
73
69
  });
74
70
 
75
71
  it('emits onImageClicked when the image is clicked with the event', () => {
76
- const mockEvent = {
77
- e: 'event',
78
- };
79
- const spy = jest.fn();
72
+ const spy = vi.fn();
80
73
  const mockUrl = 'mock-url';
81
- const wrapper = mount(<ImageLoader imgSrc={mockUrl} onImageClick={spy} />);
82
-
83
- const image = wrapper.find('img');
74
+ const { container } = render(
75
+ <ImageLoader imgSrc={mockUrl} onImageClick={spy} />,
76
+ );
84
77
 
85
- act(() => {
86
- // @ts-expect-error not full event args object
87
- image.prop('onClick')?.(mockEvent);
88
- });
78
+ const image = container.querySelector('img') as HTMLImageElement;
79
+ fireEvent.click(image);
89
80
 
90
81
  expect(spy).toHaveBeenCalledTimes(1);
91
- expect(spy).toHaveBeenCalledWith(mockEvent);
92
82
  });
93
83
 
94
84
  it('renders the fallback background color when loading has failed', () => {
95
- const wrapper = mount(<ImageLoader imgSrc="" />);
85
+ const { container } = render(<ImageLoader imgSrc="" />);
86
+ const img = container.querySelector('img') as HTMLImageElement;
96
87
 
97
- wrapper.find('img').prop('onError')!({} as SyntheticEvent);
98
- wrapper.update();
88
+ fireEvent.error(img);
99
89
 
100
- const loader = wrapper.find(ContentLoader);
101
- const fallbackContainer = wrapper.find('.container').at(1);
90
+ const loader = container.querySelector('svg');
91
+ const fallbackContainer = container.querySelectorAll('.container')[1];
102
92
 
103
- expect(wrapper.find('img').exists()).toBe(false);
104
- expect(loader.exists()).toBe(false);
105
- expect(fallbackContainer.hasClass('fallback')).toBe(true);
93
+ expect(container.querySelector('img')).not.toBeInTheDocument();
94
+ expect(loader).not.toBeInTheDocument();
95
+ expect(fallbackContainer?.classList.contains('fallback')).toBe(true);
106
96
  });
107
97
 
108
98
  it('renders a fallback image when loading has failed', () => {
109
99
  const mockFallbackUrl = 'mock-url';
110
- const wrapper = mount(
100
+ const { container } = render(
111
101
  <ImageLoader imgSrc="" fallbackSrc={mockFallbackUrl} />,
112
102
  );
103
+ const img = container.querySelector('img') as HTMLImageElement;
113
104
 
114
- wrapper.find('img').prop('onError')!({} as SyntheticEvent);
115
- wrapper.update();
105
+ fireEvent.error(img);
116
106
 
117
- const loader = wrapper.find(ContentLoader);
118
- const images = wrapper.find('img');
119
- const fallbackContainer = wrapper.find('.container').at(1);
107
+ const loader = container.querySelector('svg');
108
+ const images = container.querySelectorAll('img');
109
+ const fallbackContainers = container.querySelectorAll('.container');
120
110
 
121
- expect(loader.exists()).toBe(false);
122
- expect(fallbackContainer.exists()).toBe(false); // no background color
123
- expect(images.at(0).exists()).toBe(true); // fallback image
124
- expect(images.at(0).prop('src')).toBe(mockFallbackUrl);
125
- expect(images.at(0).hasClass('fallBackImage')).toBe(true);
111
+ expect(loader).not.toBeInTheDocument();
112
+ expect(fallbackContainers).toHaveLength(1); // no background color fallback, just one container
113
+ expect(images[0]).toBeInTheDocument(); // fallback image
114
+ expect(images[0].src).toContain(mockFallbackUrl);
115
+ expect(images[0].classList.contains('fallBackImage')).toBe(true);
126
116
  });
127
117
 
128
118
  it('emits onError callback with img src after load failure', () => {
129
- const spy = jest.fn();
119
+ const spy = vi.fn();
130
120
  const mockUrl = 'mock-url';
131
- const wrapper = mount(<ImageLoader imgSrc={mockUrl} onError={spy} />);
121
+ const { container } = render(
122
+ <ImageLoader imgSrc={mockUrl} onError={spy} />,
123
+ );
124
+ const img = container.querySelector('img') as HTMLImageElement;
132
125
 
133
- wrapper.find('img').prop('onError')!({} as SyntheticEvent);
126
+ fireEvent.error(img);
134
127
 
135
128
  expect(spy).toHaveBeenCalledTimes(1);
136
129
  expect(spy).toHaveBeenCalledWith(mockUrl);
@@ -143,74 +136,73 @@ describe('ImageLoader', () => {
143
136
  <circle r="50" />
144
137
  </svg>
145
138
  );
146
- const wrapper = mount(<ImageLoader imgSrc="" loadingSkeleton={mockSVG} />);
139
+ const { container } = render(
140
+ <ImageLoader imgSrc="" loadingSkeleton={mockSVG} />,
141
+ );
147
142
 
148
- const svg = wrapper.find(`#${mockId}`);
143
+ const svg = container.querySelector(`#${mockId}`);
149
144
 
150
- expect(svg.exists()).toBe(true);
145
+ expect(svg).toBeInTheDocument();
151
146
  });
152
147
 
153
148
  it('default square skeleton should take up the full space of the loader by default', () => {
154
- const wrapper = shallow(<ImageLoader imgSrc="" />);
149
+ const { container } = render(<ImageLoader imgSrc="" />);
155
150
 
156
- const loader = wrapper.find(ContentLoader);
157
- const skeleton = wrapper.find('rect');
151
+ const svg = container.querySelector('svg');
152
+ const skeleton = container.querySelector('rect');
158
153
 
159
- expect(skeleton.prop('width')).toBe('100%');
160
- expect(skeleton.prop('height')).toBe('100%');
161
- expect(loader.prop('viewBox')).toBe('0 0 50 50');
154
+ expect(skeleton?.getAttribute('width')).toBe('100%');
155
+ expect(skeleton?.getAttribute('height')).toBe('100%');
156
+ expect(svg?.getAttribute('viewBox')).toBe('0 0 50 50');
162
157
  });
163
158
 
164
159
  it('uses width and height for the squarebox', () => {
165
- const wrapper = shallow(<ImageLoader imgSrc="" width={123} height={456} />);
160
+ const { container } = render(
161
+ <ImageLoader imgSrc="" width={123} height={456} />,
162
+ );
166
163
 
167
- const loader = wrapper.find(ContentLoader);
164
+ const svg = container.querySelector('svg');
168
165
 
169
- expect(loader.prop('viewBox')).toBe('0 0 123 456');
166
+ expect(svg?.getAttribute('viewBox')).toBe('0 0 123 456');
170
167
  });
171
168
 
172
169
  it('passes svg viewbox, animation speed, color props to ContentLoader', () => {
173
- const mockSpeed = 1;
174
- const mockBackgroundColor = '#CCC';
175
- const mockForegroundColor = '#FFF';
176
170
  const mockViewbox = '75 75 75 75';
177
- const wrapper = shallow(
171
+ const { container } = render(
178
172
  <ImageLoader
179
173
  imgSrc=""
180
- speed={mockSpeed}
181
- backgroundColor={mockBackgroundColor}
182
- foregroundColor={mockForegroundColor}
174
+ speed={1}
175
+ backgroundColor="#CCC"
176
+ foregroundColor="#FFF"
183
177
  viewBox={mockViewbox}
184
178
  />,
185
179
  );
186
180
 
187
- const loader = wrapper.find(ContentLoader);
181
+ const svg = container.querySelector('svg');
188
182
 
189
- expect(loader.prop('speed')).toBe(mockSpeed);
190
- expect(loader.prop('backgroundColor')).toBe(mockBackgroundColor);
191
- expect(loader.prop('foregroundColor')).toBe(mockForegroundColor);
192
- expect(loader.prop('viewBox')).toBe(mockViewbox);
183
+ expect(svg?.getAttribute('viewBox')).toBe(mockViewbox);
184
+ // Note: speed and color props are internal to ContentLoader
193
185
  });
194
186
 
195
187
  it(`loader dimensions defaults to '50px' by '50px'`, () => {
196
- const wrapper = shallow(<ImageLoader imgSrc="" />);
188
+ const { container } = render(<ImageLoader imgSrc="" />);
197
189
 
198
- const loader = wrapper.find('.loader').prop('style') as React.CSSProperties;
190
+ const loader = container.querySelector('.loader') as HTMLDivElement;
199
191
 
200
- expect(loader.height).toBe('50px');
201
- expect(loader.width).toBe('50px');
192
+ expect(loader.style.height).toBe('50px');
193
+ expect(loader.style.width).toBe('50px');
202
194
  });
203
195
 
204
196
  it('sets the height and width of the loader', () => {
205
197
  const mockHeight = 15;
206
198
  const mockWidth = 75;
207
- const wrapper = shallow(
199
+ const { container } = render(
208
200
  <ImageLoader imgSrc="" height={mockHeight} width={mockWidth} />,
209
201
  );
210
202
 
211
- const loader = wrapper.find('.loader').prop('style') as React.CSSProperties;
203
+ const loader = container.querySelector('.loader') as HTMLDivElement;
212
204
 
213
- expect(loader.height).toBe(`${mockHeight}px`);
214
- expect(loader.width).toBe(`${mockWidth}px`);
205
+ expect(loader.style.height).toBe(`${mockHeight}px`);
206
+ expect(loader.style.width).toBe(`${mockWidth}px`);
215
207
  });
216
208
  });
@@ -1,34 +1,58 @@
1
- import { shallow } from 'enzyme';
1
+ import { render } from '@testing-library/react';
2
2
  import React, { ReactNode } from 'react';
3
3
  import ContentLoader from 'react-content-loader';
4
+ import type { Mock } from 'vitest';
5
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
4
6
  import { Loader } from './Loader';
5
7
 
8
+ vi.mock('react-content-loader', async () => {
9
+ const ActualReact = await vi.importActual<typeof import('react')>('react');
10
+ return {
11
+ __esModule: true,
12
+ default: vi.fn(
13
+ ({
14
+ speed: _speed,
15
+ backgroundColor: _bg,
16
+ foregroundColor: _fg,
17
+ children,
18
+ ...svgProps
19
+ }) => ActualReact.createElement('svg', svgProps, children),
20
+ ),
21
+ };
22
+ });
23
+
24
+ const mockedContentLoader = ContentLoader as Mock;
25
+
6
26
  describe('Loader component', () => {
27
+ beforeEach(() => {
28
+ mockedContentLoader.mockClear();
29
+ });
30
+
7
31
  it('renders the container div if showLoader is set to true', () => {
8
- const wrapper = shallow(<Loader showLoader={true} />);
9
- expect(wrapper.exists('.container')).toBe(true);
32
+ const { container } = render(<Loader showLoader={true} />);
33
+ expect(container.querySelector('.container')).toBeInTheDocument();
10
34
  });
11
35
 
12
36
  it('container div should not be rendered if showLoader is set to false', () => {
13
- const wrapper = shallow(<Loader showLoader={false} />);
14
- expect(wrapper.exists('.container')).toBe(false);
37
+ const { container } = render(<Loader showLoader={false} />);
38
+ expect(container.querySelector('.container')).not.toBeInTheDocument();
15
39
  });
16
40
 
17
41
  it('container is styled with default styles if no optional styles are provided', () => {
18
- const wrapper = shallow(<Loader showLoader={true} />);
19
- const gridStyles = wrapper
20
- .find('.container')
21
- .prop('style') as React.CSSProperties;
22
- expect(gridStyles.width).toBe(100);
42
+ const { container } = render(<Loader showLoader={true} />);
43
+ const loaderContainer = container.querySelector(
44
+ '.container',
45
+ ) as HTMLDivElement;
46
+ expect(loaderContainer.style.width).toBe('100px');
23
47
  });
24
48
 
25
49
  it('container is styled with the custom width if width is provided with props', () => {
26
50
  const width = 120;
27
- const wrapper = shallow(<Loader showLoader={true} width={width} />);
28
- const gridStyles = wrapper
29
- .find('.container')
30
- .prop('style') as React.CSSProperties;
31
- expect(gridStyles.width).toBe(width);
51
+ const { container } = render(<Loader showLoader={true} width={width} />);
52
+ const loaderContainer = container.querySelector(
53
+ '.container',
54
+ ) as HTMLDivElement;
55
+ expect(loaderContainer.style.width).toBe(`${width}px`);
32
56
  });
33
57
 
34
58
  it('replaces default loading SVG with a custom SVG', () => {
@@ -39,13 +63,13 @@ describe('Loader component', () => {
39
63
  </svg>
40
64
  );
41
65
 
42
- const wrapper = shallow(
66
+ const { container } = render(
43
67
  <Loader showLoader={true} loadingSkeleton={mockSVG} />,
44
68
  );
45
69
 
46
- const svg = wrapper.find(`#${mockId}`);
70
+ const svg = container.querySelector(`#${mockId}`);
47
71
 
48
- expect(svg.exists()).toBe(true);
72
+ expect(svg).toBeInTheDocument();
49
73
  });
50
74
 
51
75
  it('passes svg viewbox, animation speed, color props to ContentLoader', () => {
@@ -53,7 +77,7 @@ describe('Loader component', () => {
53
77
  const mockBackgroundColor = '#CCC';
54
78
  const mockForegroundColor = '#FFF';
55
79
  const mockViewbox = '75 75 75 75';
56
- const wrapper = shallow(
80
+ render(
57
81
  <Loader
58
82
  showLoader={true}
59
83
  speed={mockSpeed}
@@ -63,12 +87,15 @@ describe('Loader component', () => {
63
87
  />,
64
88
  );
65
89
 
66
- const loader = wrapper.find(ContentLoader);
90
+ const lastCallProps =
91
+ mockedContentLoader.mock.calls[
92
+ mockedContentLoader.mock.calls.length - 1
93
+ ][0];
67
94
 
68
- expect(loader.prop('speed')).toBe(mockSpeed);
69
- expect(loader.prop('backgroundColor')).toBe(mockBackgroundColor);
70
- expect(loader.prop('foregroundColor')).toBe(mockForegroundColor);
71
- expect(loader.prop('viewBox')).toBe(mockViewbox);
95
+ expect(lastCallProps.speed).toBe(mockSpeed);
96
+ expect(lastCallProps.backgroundColor).toBe(mockBackgroundColor);
97
+ expect(lastCallProps.foregroundColor).toBe(mockForegroundColor);
98
+ expect(lastCallProps.viewBox).toBe(mockViewbox);
72
99
  });
73
100
 
74
101
  // Height attr is not tested here since its set inside the SVG image
@@ -1,6 +1,7 @@
1
- import { shallow } from 'enzyme';
1
+ import { render, screen } from '@testing-library/react';
2
2
  import React from 'react';
3
- import { IconName, Icons } from '../Icons';
3
+ import { describe, expect, it } from 'vitest';
4
+ import { IconName } from '../Icons';
4
5
  import { Message, MessageProps } from './Message';
5
6
 
6
7
  const defaultProps: MessageProps = {
@@ -9,28 +10,28 @@ const defaultProps: MessageProps = {
9
10
 
10
11
  describe('Message', () => {
11
12
  it('renders the component without crashing', () => {
12
- const wrapper = shallow(<Message {...defaultProps} />);
13
+ const { container } = render(<Message {...defaultProps} />);
13
14
 
14
- expect(wrapper).toBeTruthy();
15
+ expect(container).toBeTruthy();
15
16
  });
16
17
 
17
18
  it(`renders a message`, () => {
18
- const wrapper = shallow(<Message {...defaultProps} />);
19
+ render(<Message {...defaultProps} />);
19
20
 
20
- const message = wrapper.find('p');
21
+ const message = screen.getByTestId('message-title');
21
22
 
22
- expect(message.text()).toBe(defaultProps.title);
23
+ expect(message.textContent).toBe(defaultProps.title);
23
24
  });
24
25
 
25
26
  it('allows an optional class to be passed in', () => {
26
27
  const mockClass = 'test-class';
27
- const wrapper = shallow(
28
+ const { container } = render(
28
29
  <Message {...defaultProps} className={mockClass} />,
29
30
  );
30
31
 
31
- const container = wrapper.find('.container');
32
+ const messageContainer = container.querySelector('.message-container');
32
33
 
33
- expect(container.hasClass(mockClass)).toBe(true);
34
+ expect(messageContainer?.classList.contains(mockClass)).toBe(true);
34
35
  });
35
36
 
36
37
  describe('message types', () => {
@@ -41,17 +42,17 @@ describe('Message', () => {
41
42
  ['success', IconName.Success, 'hasSuccess'],
42
43
  ['warning', IconName.Warning, 'hasWarning'],
43
44
  ])('message type styling', (type, icon, className) => {
44
- const wrapper = shallow(
45
+ const { container } = render(
45
46
  <Message {...defaultProps} type={type as MessageProps['type']} />,
46
47
  );
47
48
 
48
- const icons = wrapper.find(Icons);
49
- const messageIcon = icons.first();
50
- const container = wrapper.find('.container');
49
+ const messageElement = screen.getByTestId('message');
50
+ const messageContainer = container.querySelector('.message-container');
51
51
 
52
- expect(icons.exists()).toBe(true);
53
- expect(messageIcon.prop('icon')).toBe(icon);
54
- expect(container.hasClass(className)).toBe(true);
52
+ expect(messageElement.getAttribute('data-test-type')).toBe(
53
+ type || 'error',
54
+ );
55
+ expect(messageContainer?.classList.contains(className)).toBe(true);
55
56
  });
56
57
  });
57
58
 
@@ -59,70 +60,81 @@ describe('Message', () => {
59
60
  it(`renders a header component if set`, () => {
60
61
  const mockHeader: JSX.Element = <div>test</div>;
61
62
 
62
- const wrapper = shallow(<Message {...defaultProps} />);
63
+ const { container, rerender } = render(<Message {...defaultProps} />);
63
64
 
64
- let header = wrapper.find('.header');
65
+ let header = container.querySelector('.header');
65
66
 
66
- expect(header.exists()).toBe(false);
67
+ expect(header).toBeNull();
67
68
 
68
- wrapper.setProps({ header: mockHeader });
69
- wrapper.update();
69
+ rerender(<Message {...defaultProps} header={mockHeader} />);
70
70
 
71
- header = wrapper.find('.header');
71
+ header = container.querySelector('.header');
72
72
 
73
- expect(header.exists()).toBe(true);
73
+ expect(header).toBeTruthy();
74
74
  });
75
75
  });
76
76
 
77
77
  describe('message body', () => {
78
78
  it(`does not render a body if component has no children`, () => {
79
- const wrapper = shallow(<Message {...defaultProps} />);
79
+ const { container } = render(<Message {...defaultProps} />);
80
80
 
81
- const body = wrapper.find('.body');
81
+ const body = container.querySelector('.body');
82
82
 
83
- expect(body.exists()).toBe(false);
83
+ expect(body).toBeNull();
84
84
  });
85
85
 
86
86
  it(`does not render a body if component has children but 'isBodyOpen' is not true`, () => {
87
- const wrapper = shallow(<Message {...defaultProps}>Test</Message>);
87
+ const { container } = render(<Message {...defaultProps}>Test</Message>);
88
88
 
89
- const body = wrapper.find('.body');
89
+ const body = container.querySelector('.body');
90
90
 
91
- expect(body.exists()).toBe(false);
91
+ expect(body).toBeNull();
92
92
  });
93
93
 
94
94
  it(`renders a body if component has children and 'isBodyOpen' is true`, () => {
95
- const wrapper = shallow(<Message {...defaultProps}>Test</Message>);
95
+ const { container, rerender } = render(
96
+ <Message {...defaultProps}>Test</Message>,
97
+ );
96
98
 
97
- let body = wrapper.find('.body');
99
+ let body = container.querySelector('.body');
98
100
 
99
- expect(body.exists()).toBe(false);
101
+ expect(body).toBeNull();
100
102
 
101
- wrapper.setProps({ isBodyOpen: true });
102
- wrapper.update();
103
+ rerender(
104
+ <Message {...defaultProps} isBodyOpen={true}>
105
+ Test
106
+ </Message>,
107
+ );
103
108
 
104
- body = wrapper.find('.body');
109
+ body = container.querySelector('.body');
105
110
 
106
- expect(body.exists()).toBe(true);
111
+ expect(body).toBeTruthy();
107
112
  });
108
113
 
109
114
  it(`sets body position to 'absolute' by default and allows it to be removed`, () => {
110
- const wrapper = shallow(
115
+ const { container, rerender } = render(
111
116
  <Message {...defaultProps} isBodyOpen={true}>
112
117
  Test
113
118
  </Message>,
114
119
  );
115
120
 
116
- let body = wrapper.find('.body');
121
+ let body = container.querySelector('.body');
117
122
 
118
- expect(body.hasClass('absolute')).toBe(true);
123
+ expect(body?.classList.contains('absolute')).toBe(true);
119
124
 
120
- wrapper.setProps({ isBodyPositionAbsolute: false });
121
- wrapper.update();
125
+ rerender(
126
+ <Message
127
+ {...defaultProps}
128
+ isBodyOpen={true}
129
+ isBodyPositionAbsolute={false}
130
+ >
131
+ Test
132
+ </Message>,
133
+ );
122
134
 
123
- body = wrapper.find('.body');
135
+ body = container.querySelector('.body');
124
136
 
125
- expect(body.hasClass('absolute')).toBe(false);
137
+ expect(body?.classList.contains('absolute')).toBe(false);
126
138
  });
127
139
  });
128
140
  });
@@ -65,6 +65,9 @@
65
65
  font-size: 14px;
66
66
  background-color: var(--message-bar-bg-color, $message-bar-bg-color);
67
67
 
68
+ max-height: 500px;
69
+ overflow: auto;
70
+
68
71
  .textChild {
69
72
  line-height: 1.3rem;
70
73
  white-space: pre-wrap;