@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,9 +1,9 @@
1
- import { shallow } from 'enzyme';
1
+ import { render } from '@testing-library/react';
2
2
  import React from 'react';
3
- import { Icons } from '../../../../Icons';
3
+ import { describe, expect, it, vi } from 'vitest';
4
4
  import {
5
- createExternalLinkRenderer,
6
5
  ExternalLinkResolver,
6
+ createExternalLinkRenderer,
7
7
  } from './ExternalLinkRenderer';
8
8
 
9
9
  interface TestData {
@@ -43,86 +43,91 @@ const RendererWrapper: React.FC<RendererWrapperProps> = ({
43
43
 
44
44
  describe('createExternalLinkRenderer', () => {
45
45
  it('renders the component without crashing', () => {
46
- const wrapper = shallow(<RendererWrapper {...defaultProps} />);
47
- expect(wrapper).toBeTruthy();
46
+ const { container } = render(<RendererWrapper {...defaultProps} />);
47
+ expect(container).toBeTruthy();
48
48
  });
49
49
 
50
50
  it('generates hyperlink', () => {
51
51
  const mockResolver: ExternalLinkResolver<TestData> = (rowData) =>
52
52
  `/details/${rowData.id}`;
53
53
 
54
- const wrapper = shallow(
54
+ const { container } = render(
55
55
  <RendererWrapper {...defaultProps} resolver={mockResolver} />,
56
56
  );
57
57
 
58
- const link = wrapper.find('a');
58
+ const link = container.querySelector('a') as HTMLAnchorElement;
59
59
 
60
- expect(link.prop('href')).toBe(`/details/${data.id}`);
61
- expect(link.prop('target')).toBe('_blank');
62
- expect(link.prop('rel')).toBe('noopener noreferrer');
60
+ expect(link.href).toContain(`/details/${data.id}`);
61
+ expect(link.target).toBe('_blank');
62
+ expect(link.rel).toBe('noopener noreferrer');
63
63
  });
64
64
 
65
65
  it('generates no hyperlink if url is falsy', () => {
66
66
  const mockResolver: ExternalLinkResolver<TestData> = (_rowData) =>
67
67
  undefined;
68
68
 
69
- const wrapper = shallow(
69
+ const { container } = render(
70
70
  <RendererWrapper {...defaultProps} resolver={mockResolver} />,
71
71
  );
72
72
 
73
- const link = wrapper.find('a');
74
- const paragraph = wrapper.find('p');
73
+ const link = container.querySelector('a');
74
+ const paragraph = container.querySelector('p');
75
75
 
76
- expect(link.exists()).toBe(false);
77
- expect(paragraph.exists()).toBe(true);
78
- expect(paragraph.prop('title')).toBe('test-title');
76
+ expect(link).not.toBeInTheDocument();
77
+ expect(paragraph).toBeInTheDocument();
78
+ expect(paragraph?.title).toBe('test-title');
79
79
  });
80
80
 
81
81
  it('renders column value and title attribute', () => {
82
82
  const mockValue = 'test';
83
83
 
84
- const wrapper = shallow(
84
+ const { container } = render(
85
85
  <RendererWrapper {...defaultProps} value={mockValue} />,
86
86
  );
87
87
 
88
- const value = wrapper.find('p');
88
+ const value = container.querySelector('p');
89
89
 
90
- expect(value.text()).toBe(mockValue);
91
- expect(value.prop('title')).toBe(mockValue);
90
+ expect(value?.textContent).toBe(mockValue);
91
+ expect(value?.title).toBe(mockValue);
92
92
  });
93
93
 
94
94
  it('disables row click event when link is clicked', () => {
95
- const spy = jest.fn();
96
- const mockedEvent = { stopPropagation: spy };
95
+ const spy = vi.fn();
96
+
97
+ const { container } = render(<RendererWrapper {...defaultProps} />);
97
98
 
98
- const wrapper = shallow(<RendererWrapper {...defaultProps} />);
99
+ const link = container.querySelector('a') as HTMLAnchorElement;
99
100
 
100
- const link = wrapper.find('a');
101
+ const event = new MouseEvent('click', { bubbles: true });
102
+ Object.defineProperty(event, 'stopPropagation', {
103
+ value: spy,
104
+ writable: true,
105
+ });
101
106
 
102
- link.simulate('click', mockedEvent);
107
+ link.dispatchEvent(event);
103
108
 
104
109
  expect(spy).toHaveBeenCalledTimes(1);
105
110
  });
106
111
 
107
112
  it(`renders 'Icon' by default`, () => {
108
- const wrapper = shallow(<RendererWrapper {...defaultProps} />);
113
+ const { container } = render(<RendererWrapper {...defaultProps} />);
109
114
 
110
- const container = wrapper.find('.container');
111
- const Icon = wrapper.find(Icons);
115
+ const containerDiv = container.querySelector('.container');
116
+ const icon = container.querySelector('.icons');
112
117
 
113
- expect(container.hasClass('noIcon')).toBe(false);
114
- expect(Icon.exists()).toBe(true);
118
+ expect(containerDiv?.classList.contains('noIcon')).toBe(false);
119
+ expect(icon).toBeInTheDocument();
115
120
  });
116
121
 
117
122
  it(`does not render 'Icon' if 'showNewTabIcon' is set to false`, () => {
118
- const wrapper = shallow(
123
+ const { container } = render(
119
124
  <RendererWrapper {...defaultProps} showNewTabIcon={false} />,
120
125
  );
121
126
 
122
- const container = wrapper.find('.container');
123
- const Icon = wrapper.find(Icons);
127
+ const containerDiv = container.querySelector('.container');
128
+ const icon = container.querySelector('.icons');
124
129
 
125
- expect(container.hasClass('noIcon')).toBe(true);
126
- expect(Icon.exists()).toBe(false);
130
+ expect(containerDiv?.classList.contains('noIcon')).toBe(true);
131
+ expect(icon).not.toBeInTheDocument();
127
132
  });
128
133
  });
@@ -1,5 +1,6 @@
1
- import { shallow } from 'enzyme';
1
+ import { render } from '@testing-library/react';
2
2
  import React from 'react';
3
+ import { describe, expect, it } from 'vitest';
3
4
  import { Data } from '../../../../../types/data';
4
5
  import { ColumnMap } from '../../../List.model';
5
6
  import { createStateRenderer } from './StateRenderer';
@@ -34,37 +35,33 @@ const RendererWrapper: React.FC<RendererWrapperProps> = ({
34
35
 
35
36
  describe('StateRenderer', () => {
36
37
  it('renders the component without crashing', () => {
37
- const wrapper = shallow(<RendererWrapper {...defaultProps} />);
38
- expect(wrapper).toBeTruthy();
38
+ const { container } = render(<RendererWrapper {...defaultProps} />);
39
+ expect(container).toBeTruthy();
39
40
  });
40
41
 
41
42
  it('renders a background color', () => {
42
- const stateValues = Object.keys(stateMap);
43
- const mockState =
44
- stateValues[Math.floor(Math.random() * stateValues.length)];
43
+ const mockState = 'success';
45
44
 
46
- const wrapper = shallow(
45
+ const { container } = render(
47
46
  <RendererWrapper {...defaultProps} value={mockState} />,
48
47
  );
49
48
 
50
- const container = wrapper
51
- .find('.container')
52
- .prop('style') as React.CSSProperties;
49
+ const containerDiv = container.querySelector('.container') as HTMLElement;
53
50
 
54
- expect(container.backgroundColor).toBe(stateMap[mockState]);
51
+ // Check that background color is set (browsers normalize color values)
52
+ expect(containerDiv.style.backgroundColor).toBeTruthy();
53
+ expect(containerDiv.style.backgroundColor).not.toBe('');
55
54
  });
56
55
 
57
56
  it('does not render a background color if mapping fails', () => {
58
57
  const mockState = 'pending';
59
- const wrapper = shallow(
58
+ const { container } = render(
60
59
  <RendererWrapper {...defaultProps} value={mockState} />,
61
60
  );
62
- expect(wrapper).toBeTruthy();
61
+ expect(container).toBeTruthy();
63
62
 
64
- const container = wrapper
65
- .find('.container')
66
- .prop('style') as React.CSSProperties;
63
+ const containerDiv = container.querySelector('.container') as HTMLElement;
67
64
 
68
- expect(container.backgroundColor).toBeUndefined();
65
+ expect(containerDiv.style.backgroundColor).toBe('');
69
66
  });
70
67
  });
@@ -1,6 +1,7 @@
1
- import '@testing-library/jest-dom';
2
1
  import { act, render, screen, waitFor } from '@testing-library/react';
3
2
  import React from 'react';
3
+ import type { Mock, MockInstance } from 'vitest';
4
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
4
5
  import * as idleCallbackHelpers from '../../../../../helpers/idleCallbackHelpers';
5
6
  import { noop } from '../../../../../helpers/utils';
6
7
  import { TagsRenderer } from './TagsRenderer';
@@ -16,7 +17,7 @@ const TagsRendererWrapper: React.FC<TagsRendererWrapperProps> = ({ value }) => {
16
17
 
17
18
  // Helper to trigger ResizeObserver callback
18
19
  const triggerResizeObserver = (): void => {
19
- const resizeObserverCallback = (global.ResizeObserver as jest.Mock).mock
20
+ const resizeObserverCallback = (global.ResizeObserver as Mock).mock
20
21
  .calls[0]?.[0];
21
22
  if (resizeObserverCallback) {
22
23
  act(() => {
@@ -27,27 +28,27 @@ const triggerResizeObserver = (): void => {
27
28
 
28
29
  describe('TagsRenderer', () => {
29
30
  let mockResizeObserver: {
30
- observe: jest.Mock;
31
- unobserve: jest.Mock;
32
- disconnect: jest.Mock;
31
+ observe: Mock;
32
+ unobserve: Mock;
33
+ disconnect: Mock;
33
34
  };
34
- let mockScheduleIdleCallback: jest.SpyInstance;
35
- let mockCancelScheduledCallback: jest.SpyInstance;
35
+ let mockScheduleIdleCallback: MockInstance;
36
+ let mockCancelScheduledCallback: MockInstance;
36
37
 
37
38
  beforeEach(() => {
38
39
  // Setup ResizeObserver mock
39
40
  mockResizeObserver = {
40
- observe: jest.fn(),
41
- unobserve: jest.fn(),
42
- disconnect: jest.fn(),
41
+ observe: vi.fn(),
42
+ unobserve: vi.fn(),
43
+ disconnect: vi.fn(),
43
44
  };
44
45
 
45
- global.ResizeObserver = jest
46
- .fn()
47
- .mockImplementation(() => mockResizeObserver);
46
+ global.ResizeObserver = vi.fn().mockImplementation(function () {
47
+ return mockResizeObserver;
48
+ }) as unknown as typeof ResizeObserver;
48
49
 
49
50
  // Setup scheduleIdleCallback mock
50
- mockScheduleIdleCallback = jest
51
+ mockScheduleIdleCallback = vi
51
52
  .spyOn(idleCallbackHelpers, 'scheduleIdleCallback')
52
53
  .mockImplementation((callback) => {
53
54
  callback({
@@ -58,12 +59,12 @@ describe('TagsRenderer', () => {
58
59
  });
59
60
 
60
61
  // Setup cancelScheduledCallback mock
61
- mockCancelScheduledCallback = jest
62
+ mockCancelScheduledCallback = vi
62
63
  .spyOn(idleCallbackHelpers, 'cancelScheduledCallback')
63
64
  .mockImplementation(noop);
64
65
 
65
66
  // Mock window.getComputedStyle for font size calculations
66
- window.getComputedStyle = jest.fn().mockReturnValue({
67
+ window.getComputedStyle = vi.fn().mockReturnValue({
67
68
  fontSize: '14px',
68
69
  });
69
70
 
@@ -76,7 +77,7 @@ describe('TagsRenderer', () => {
76
77
  });
77
78
 
78
79
  afterEach(() => {
79
- // Don't use jest.clearAllMocks() as it removes mock implementations
80
+ // Don't use vi.clearAllMocks() as it removes mock implementations
80
81
  // Instead, manually clear just the mock call history
81
82
  mockResizeObserver.observe.mockClear();
82
83
  mockResizeObserver.unobserve.mockClear();
@@ -164,7 +164,7 @@ export const TagsRenderer = (val: unknown): JSX.Element => {
164
164
  <div
165
165
  ref={containerRef}
166
166
  className={classes.container}
167
- data-testid="tags-container"
167
+ data-test-id="tags-container"
168
168
  title={stringArray.join(', ')}
169
169
  />
170
170
  );
@@ -180,7 +180,7 @@ export const TagsRenderer = (val: unknown): JSX.Element => {
180
180
  <div
181
181
  ref={containerRef}
182
182
  className={classes.container}
183
- data-testid="tags-container"
183
+ data-test-id="tags-container"
184
184
  title={stringArray.join(', ')}
185
185
  >
186
186
  {visibleItems.map((item, index) => (
@@ -1,7 +1,8 @@
1
- import { mount } from 'enzyme';
1
+ import { render } from '@testing-library/react';
2
2
  import React from 'react';
3
+ import type { Mock } from 'vitest';
4
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
3
5
  import { Column } from '../List.model';
4
- import { ListRow } from '../ListRow/ListRow';
5
6
  import { ListRowRenderer } from './ListRowRenderer';
6
7
 
7
8
  interface TestData {
@@ -51,59 +52,63 @@ const mockListRowProps = {
51
52
  showActionButton: false,
52
53
  showCheckMark: false,
53
54
  showItemCheckbox: false,
54
- onItemClicked: jest.fn(),
55
- onTriggered: jest.fn(),
56
- onItemSelected: jest.fn(),
55
+ onItemClicked: vi.fn(),
56
+ onTriggered: vi.fn(),
57
+ onItemSelected: vi.fn(),
57
58
  };
58
59
 
59
60
  describe('ListRowRenderer', () => {
60
- const mountRowRenderer = (overrideProps = {}) => {
61
+ const renderRowRenderer = (overrideProps = {}) => {
61
62
  const defaultProps = {
62
63
  listRowProps: mockListRowProps,
63
64
  ...overrideProps,
64
65
  };
65
66
 
66
- return mount(<ListRowRenderer {...defaultProps} />);
67
+ return render(<ListRowRenderer {...defaultProps} />);
67
68
  };
68
69
 
69
70
  afterEach(() => {
70
- jest.clearAllMocks();
71
+ vi.clearAllMocks();
71
72
  });
72
73
 
73
74
  describe('default behavior', () => {
74
75
  it('should render default ListRow when no custom renderer provided', () => {
75
- const wrapper = mountRowRenderer();
76
+ const { container } = renderRowRenderer();
76
77
 
77
- expect(wrapper.find(ListRow)).toHaveLength(1);
78
- expect(wrapper.find(ListRow).prop('data')).toEqual(mockTestData);
78
+ const listRow = container.querySelector('[data-test-id="list-entry"]');
79
+ expect(listRow).toBeInTheDocument();
79
80
  });
80
81
 
81
82
  it('should pass all props to default ListRow', () => {
82
- const wrapper = mountRowRenderer();
83
- const listRowProps = wrapper.find(ListRow).props();
83
+ const { container } = renderRowRenderer();
84
84
 
85
- expect(listRowProps).toEqual(expect.objectContaining(mockListRowProps));
85
+ const listRow = container.querySelector('[data-test-id="list-entry"]');
86
+ expect(listRow).toBeInTheDocument();
86
87
  });
87
88
  });
88
89
 
89
90
  describe('custom row renderer', () => {
90
91
  it('should use custom renderer when provided', () => {
91
- const customRenderer = jest.fn(() => (
92
+ const customRenderer = vi.fn(() => (
92
93
  <div data-test-id="custom-row">Custom Content</div>
93
94
  ));
94
95
 
95
- const wrapper = mountRowRenderer({
96
+ const { container } = renderRowRenderer({
96
97
  customRowRenderer: customRenderer,
97
98
  });
98
99
 
99
100
  expect(customRenderer).toHaveBeenCalledTimes(1);
100
- expect(wrapper.find('[data-test-id="custom-row"]')).toHaveLength(1);
101
- expect(wrapper.find(ListRow)).toHaveLength(0);
102
- expect(wrapper.text()).toContain('Custom Content');
101
+ expect(
102
+ container.querySelector('[data-test-id="custom-row"]'),
103
+ ).toBeInTheDocument();
104
+ expect(
105
+ container.querySelector('[data-test-id="list-entry"]'),
106
+ ).not.toBeInTheDocument();
107
+ expect(container.textContent).toContain('Custom Content');
103
108
  });
104
109
 
105
110
  it('should pass complete ListRowProps to custom renderer', () => {
106
- const customRenderer = jest.fn(() => (
111
+ const customRenderer = vi.fn(() => (
107
112
  <div data-test-id="custom-row">Custom</div>
108
113
  ));
109
114
 
@@ -113,7 +118,7 @@ describe('ListRowRenderer', () => {
113
118
  isRowDisabled: true,
114
119
  };
115
120
 
116
- mountRowRenderer({
121
+ renderRowRenderer({
117
122
  customRowRenderer: customRenderer,
118
123
  listRowProps: customListRowProps,
119
124
  });
@@ -122,65 +127,70 @@ describe('ListRowRenderer', () => {
122
127
  });
123
128
 
124
129
  it('should fallback to default ListRow when custom renderer returns null', () => {
125
- const customRenderer = jest.fn(() => null);
130
+ const customRenderer = vi.fn(() => null);
126
131
 
127
- const wrapper = mountRowRenderer({
132
+ const { container } = renderRowRenderer({
128
133
  customRowRenderer: customRenderer,
129
134
  });
130
135
 
131
136
  expect(customRenderer).toHaveBeenCalledTimes(1);
132
- expect(wrapper.find(ListRow)).toHaveLength(1);
133
- expect(wrapper.find('[data-test-id="custom-row"]')).toHaveLength(0);
137
+ expect(
138
+ container.querySelector('[data-test-id="list-entry"]'),
139
+ ).toBeInTheDocument();
140
+ expect(
141
+ container.querySelector('[data-test-id="custom-row"]'),
142
+ ).not.toBeInTheDocument();
134
143
  });
135
144
 
136
145
  it('should fallback to default ListRow when custom renderer returns undefined', () => {
137
- const customRenderer = jest.fn(() => undefined as any);
146
+ const customRenderer = vi.fn(() => undefined as any);
138
147
 
139
- const wrapper = mountRowRenderer({
148
+ const { container } = renderRowRenderer({
140
149
  customRowRenderer: customRenderer,
141
150
  });
142
151
 
143
152
  expect(customRenderer).toHaveBeenCalledTimes(1);
144
- expect(wrapper.find(ListRow)).toHaveLength(1);
153
+ expect(
154
+ container.querySelector('[data-test-id="list-entry"]'),
155
+ ).toBeInTheDocument();
145
156
  });
146
157
  });
147
158
 
148
159
  describe('pagination trigger', () => {
149
160
  const windowIntersectionObserver = window.IntersectionObserver;
150
- const observe = jest.fn();
151
- const disconnect = jest.fn();
161
+ const observe = vi.fn();
162
+ const disconnect = vi.fn();
152
163
 
153
164
  beforeEach(() => {
154
- window.IntersectionObserver = jest.fn().mockImplementation(() => ({
155
- observe,
156
- disconnect,
157
- }));
165
+ window.IntersectionObserver = vi.fn().mockImplementation(function () {
166
+ return { observe, disconnect };
167
+ }) as unknown as typeof IntersectionObserver;
158
168
  });
159
169
 
160
170
  afterEach(() => {
161
171
  window.IntersectionObserver = windowIntersectionObserver;
162
- jest.clearAllMocks();
172
+ vi.clearAllMocks();
163
173
  });
164
174
 
165
175
  describe('default ListRow renderer', () => {
166
176
  it('creates the IntersectionObserver when isTrigger===true', () => {
167
- const onTriggeredSpy = jest.fn();
177
+ const onTriggeredSpy = vi.fn();
168
178
 
169
- const wrapper = mountRowRenderer({
179
+ const { container } = renderRowRenderer({
170
180
  listRowProps: mockListRowProps,
171
181
  isTrigger: true,
172
182
  onTriggered: onTriggeredSpy,
173
183
  });
174
184
 
175
185
  expect(window.IntersectionObserver).toHaveBeenCalledTimes(1);
176
- expect(observe).toHaveBeenCalledWith(wrapper.getDOMNode());
186
+ expect(observe).toHaveBeenCalledWith(container.firstChild);
177
187
  expect(onTriggeredSpy).not.toHaveBeenCalled();
178
188
  });
179
189
 
180
190
  it('does not create IntersectionObserver when isTrigger===false', () => {
181
- const onTriggeredSpy = jest.fn();
191
+ const onTriggeredSpy = vi.fn();
182
192
 
183
- mountRowRenderer({
193
+ renderRowRenderer({
184
194
  listRowProps: mockListRowProps,
185
195
  isTrigger: false,
186
196
  onTriggered: onTriggeredSpy,
@@ -192,14 +202,14 @@ describe('ListRowRenderer', () => {
192
202
 
193
203
  it('triggers onTriggered when IntersectionObserver observes entry', () => {
194
204
  let intersectionFn: IntersectionObserverCallback = () => null;
195
- const onTriggeredSpy = jest.fn();
205
+ const onTriggeredSpy = vi.fn();
196
206
 
197
- (window.IntersectionObserver as jest.Mock).mockImplementation((fn) => {
207
+ (window.IntersectionObserver as Mock).mockImplementation(function (fn) {
198
208
  intersectionFn = fn;
199
209
  return { observe, disconnect };
200
210
  });
201
211
 
202
- mountRowRenderer({
212
+ renderRowRenderer({
203
213
  listRowProps: mockListRowProps,
204
214
  isTrigger: true,
205
215
  onTriggered: onTriggeredSpy,
@@ -216,14 +226,14 @@ describe('ListRowRenderer', () => {
216
226
 
217
227
  it('does not trigger when entry is not intersecting', () => {
218
228
  let intersectionFn: IntersectionObserverCallback = () => null;
219
- const onTriggeredSpy = jest.fn();
229
+ const onTriggeredSpy = vi.fn();
220
230
 
221
- (window.IntersectionObserver as jest.Mock).mockImplementation((fn) => {
231
+ (window.IntersectionObserver as Mock).mockImplementation(function (fn) {
222
232
  intersectionFn = fn;
223
233
  return { observe, disconnect };
224
234
  });
225
235
 
226
- mountRowRenderer({
236
+ renderRowRenderer({
227
237
  listRowProps: mockListRowProps,
228
238
  isTrigger: true,
229
239
  onTriggered: onTriggeredSpy,
@@ -243,12 +253,12 @@ describe('ListRowRenderer', () => {
243
253
 
244
254
  describe('custom row renderer', () => {
245
255
  it('creates the IntersectionObserver when isTrigger===true for custom renderer', () => {
246
- const customRenderer = jest.fn(() => (
256
+ const customRenderer = vi.fn(() => (
247
257
  <div data-test-id="custom-row">Custom Content</div>
248
258
  ));
249
- const onTriggeredSpy = jest.fn();
259
+ const onTriggeredSpy = vi.fn();
250
260
 
251
- const wrapper = mountRowRenderer({
261
+ const { container } = renderRowRenderer({
252
262
  listRowProps: mockListRowProps,
253
263
  isTrigger: true,
254
264
  onTriggered: onTriggeredSpy,
@@ -256,17 +266,17 @@ describe('ListRowRenderer', () => {
256
266
  });
257
267
 
258
268
  expect(window.IntersectionObserver).toHaveBeenCalledTimes(1);
259
- expect(observe).toHaveBeenCalledWith(wrapper.getDOMNode());
269
+ expect(observe).toHaveBeenCalledWith(container.firstChild);
260
270
  expect(onTriggeredSpy).not.toHaveBeenCalled();
261
271
  });
262
272
 
263
273
  it('does not create IntersectionObserver when isTrigger===false for custom renderer', () => {
264
- const customRenderer = jest.fn(() => (
274
+ const customRenderer = vi.fn(() => (
265
275
  <div data-test-id="custom-row">Custom Content</div>
266
276
  ));
267
- const onTriggeredSpy = jest.fn();
277
+ const onTriggeredSpy = vi.fn();
268
278
 
269
- mountRowRenderer({
279
+ renderRowRenderer({
270
280
  listRowProps: mockListRowProps,
271
281
  isTrigger: false,
272
282
  onTriggered: onTriggeredSpy,
@@ -279,19 +289,19 @@ describe('ListRowRenderer', () => {
279
289
 
280
290
  it('triggers onTriggered when IntersectionObserver observes entry for custom renderer', () => {
281
291
  let intersectionFn: IntersectionObserverCallback = () => null;
282
- const customRenderer = jest.fn(() => (
292
+ const customRenderer = vi.fn(() => (
283
293
  <div data-test-id="custom-row">Custom Content</div>
284
294
  ));
285
- const onTriggeredSpy = jest.fn();
295
+ const onTriggeredSpy = vi.fn();
286
296
 
287
- (window.IntersectionObserver as jest.Mock).mockImplementation((fn) => {
297
+ (window.IntersectionObserver as Mock).mockImplementation(function (fn) {
288
298
  // Remember the callback function
289
299
  intersectionFn = fn;
290
300
  // Return the mocked object
291
301
  return { observe, disconnect };
292
302
  });
293
303
 
294
- mountRowRenderer({
304
+ renderRowRenderer({
295
305
  listRowProps: mockListRowProps,
296
306
  isTrigger: true,
297
307
  onTriggered: onTriggeredSpy,
@@ -312,9 +322,9 @@ describe('ListRowRenderer', () => {
312
322
 
313
323
  describe('observer cleanup', () => {
314
324
  it('disconnects observer when isTrigger changes from true to false', () => {
315
- const onTriggeredSpy = jest.fn();
325
+ const onTriggeredSpy = vi.fn();
316
326
 
317
- const wrapper = mountRowRenderer({
327
+ const { rerender } = renderRowRenderer({
318
328
  listRowProps: mockListRowProps,
319
329
  isTrigger: true,
320
330
  onTriggered: onTriggeredSpy,
@@ -322,21 +332,25 @@ describe('ListRowRenderer', () => {
322
332
 
323
333
  expect(window.IntersectionObserver).toHaveBeenCalledTimes(1);
324
334
 
335
+ // Clear the disconnect mock to only count calls from the rerender
336
+ disconnect.mockClear();
337
+
325
338
  // Change isTrigger to false
326
- wrapper.setProps({
327
- listRowProps: {
328
- ...mockListRowProps,
329
- },
330
- isTrigger: false,
331
- });
339
+ rerender(
340
+ <ListRowRenderer
341
+ listRowProps={mockListRowProps}
342
+ isTrigger={false}
343
+ onTriggered={onTriggeredSpy}
344
+ />,
345
+ );
332
346
 
333
347
  expect(disconnect).toHaveBeenCalledTimes(1);
334
348
  });
335
349
 
336
350
  it('disconnects observer on component unmount', () => {
337
- const onTriggeredSpy = jest.fn();
351
+ const onTriggeredSpy = vi.fn();
338
352
 
339
- const wrapper = mountRowRenderer({
353
+ const { unmount } = renderRowRenderer({
340
354
  listRowProps: mockListRowProps,
341
355
  isTrigger: true,
342
356
  onTriggered: onTriggeredSpy,
@@ -344,7 +358,7 @@ describe('ListRowRenderer', () => {
344
358
 
345
359
  expect(window.IntersectionObserver).toHaveBeenCalledTimes(1);
346
360
 
347
- wrapper.unmount();
361
+ unmount();
348
362
 
349
363
  expect(disconnect).toHaveBeenCalledTimes(1);
350
364
  });