@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,53 +1,49 @@
1
- import { mount, shallow } from 'enzyme';
1
+ import { fireEvent, render } from '@testing-library/react';
2
2
  import React from 'react';
3
- import { Button } from '../../Buttons';
4
- import {
5
- ButtonContext,
6
- CommonJsButtonOptions,
7
- } from '../../Buttons/Button.model';
3
+ import { describe, expect, it, vi } from 'vitest';
8
4
  import { ListCheckBox } from './ListCheckBox';
9
5
 
10
6
  describe('ListCheckBox', () => {
11
7
  it('renders the component without crashing', () => {
12
- const wrapper = shallow(<ListCheckBox />);
8
+ const { container } = render(<ListCheckBox />);
13
9
 
14
- expect(wrapper).toBeTruthy();
10
+ expect(container).toBeTruthy();
15
11
  });
16
12
 
17
13
  it('defaults to false', () => {
18
- const wrapper = shallow(<ListCheckBox />);
14
+ const { container } = render(<ListCheckBox />);
19
15
 
20
- const button = wrapper.find(Button);
16
+ const button = container.querySelector('button');
21
17
 
22
- expect((button.props() as CommonJsButtonOptions).buttonContext).toBe(
23
- ButtonContext.Context,
24
- );
18
+ expect(button?.classList.contains('context')).toBe(true);
25
19
  });
26
20
 
27
21
  it('sets its state to isChecked prop', () => {
28
- const wrapper = shallow(<ListCheckBox isChecked={true} />);
22
+ const { container } = render(<ListCheckBox isChecked={true} />);
29
23
 
30
- const button = wrapper.find(Button);
24
+ const button = container.querySelector('button');
31
25
 
32
- expect((button.props() as CommonJsButtonOptions).buttonContext).toBe(
33
- ButtonContext.Active,
34
- );
26
+ expect(button?.classList.contains('active')).toBe(true);
35
27
  });
36
28
 
37
29
  it(`raises the onCheckBoxToggled with the inverse of the 'isChecked' prop`, () => {
38
30
  const mockCheckedValue = true;
39
- const spy = jest.fn();
40
- const wrapper = mount(
31
+ const spy = vi.fn();
32
+ const { container, rerender } = render(
41
33
  <ListCheckBox onCheckBoxToggled={spy} isChecked={mockCheckedValue} />,
42
34
  );
43
- const button = wrapper.find(Button);
35
+ const button = container.querySelector('button') as HTMLButtonElement;
44
36
 
45
- button.simulate('click');
37
+ fireEvent.click(button);
46
38
 
47
- wrapper.setProps({ isChecked: !mockCheckedValue });
48
- wrapper.update();
39
+ rerender(
40
+ <ListCheckBox onCheckBoxToggled={spy} isChecked={!mockCheckedValue} />,
41
+ );
49
42
 
50
- button.simulate('click');
43
+ const buttonAfterRerender = container.querySelector(
44
+ 'button',
45
+ ) as HTMLButtonElement;
46
+ fireEvent.click(buttonAfterRerender);
51
47
 
52
48
  expect(spy).toHaveBeenCalledTimes(2);
53
49
  expect(spy).toHaveBeenNthCalledWith(1, !mockCheckedValue);
@@ -55,42 +51,52 @@ describe('ListCheckBox', () => {
55
51
  });
56
52
 
57
53
  it('checkbox is enabled by default', () => {
58
- const spy = jest.fn();
59
- const wrapper = shallow(<ListCheckBox onCheckBoxToggled={spy} />);
60
- const button = wrapper.find(Button);
61
- expect(button.props().disabled).toBe(false);
54
+ const spy = vi.fn();
55
+ const { container } = render(<ListCheckBox onCheckBoxToggled={spy} />);
56
+ const button = container.querySelector('button') as HTMLButtonElement;
57
+ expect(button.disabled).toBe(false);
62
58
  });
63
59
 
64
60
  it('disable checkbox if isDisabled prop is true', () => {
65
- const spy = jest.fn();
66
- const wrapper = shallow(
61
+ const spy = vi.fn();
62
+ const { container } = render(
67
63
  <ListCheckBox onCheckBoxToggled={spy} isDisabled={true} />,
68
64
  );
69
- const button = wrapper.find(Button);
70
- expect(button.props().disabled).toBe(true);
71
- expect(button.hasClass('disabled')).toBe(true);
65
+ const button = container.querySelector('button') as HTMLButtonElement;
66
+ expect(button.disabled).toBe(true);
67
+ expect(button.classList.contains('disabled')).toBe(true);
72
68
  });
73
69
 
74
70
  it('disables container click event propagation', () => {
75
- const spy = jest.fn();
76
- const mockedEvent = { stopPropagation: spy };
77
- const wrapper = shallow(<ListCheckBox />);
71
+ const spy = vi.fn();
72
+ const { container } = render(<ListCheckBox />);
78
73
 
79
- const container = wrapper.find('.container');
74
+ const containerDiv = container.querySelector('.container') as HTMLElement;
80
75
 
81
- container.simulate('click', mockedEvent);
76
+ const event = new MouseEvent('click', { bubbles: true });
77
+ Object.defineProperty(event, 'stopPropagation', {
78
+ value: spy,
79
+ writable: true,
80
+ });
81
+
82
+ containerDiv.dispatchEvent(event);
82
83
 
83
84
  expect(spy).toHaveBeenCalledTimes(1);
84
85
  });
85
86
 
86
87
  it('allows the click event propagate when containerClickEvent is true', () => {
87
- const spy = jest.fn();
88
- const mockedEvent = { stopPropagation: spy };
89
- const wrapper = shallow(<ListCheckBox containerClickEvent={true} />);
88
+ const spy = vi.fn();
89
+ const { container } = render(<ListCheckBox containerClickEvent={true} />);
90
+
91
+ const containerDiv = container.querySelector('.container') as HTMLElement;
90
92
 
91
- const container = wrapper.find('.container');
93
+ const event = new MouseEvent('click', { bubbles: true });
94
+ Object.defineProperty(event, 'stopPropagation', {
95
+ value: spy,
96
+ writable: true,
97
+ });
92
98
 
93
- container.simulate('click', mockedEvent);
99
+ containerDiv.dispatchEvent(event);
94
100
 
95
101
  expect(spy).not.toHaveBeenCalled();
96
102
  });
@@ -98,11 +104,11 @@ describe('ListCheckBox', () => {
98
104
  it('height and width props set Button height and width', () => {
99
105
  const mockHeight = '20px';
100
106
  const mockWidth = '20px';
101
- const wrapper = shallow(
107
+ const { container } = render(
102
108
  <ListCheckBox height={mockHeight} width={mockWidth} />,
103
109
  );
104
- const button = wrapper.find(Button);
105
- expect(button.props().height).toBe(mockHeight);
106
- expect(button.props().width).toBe(mockWidth);
110
+ const button = container.querySelector('button') as HTMLButtonElement;
111
+ expect(button.style.height).toBe(mockHeight);
112
+ expect(button.style.width).toBe(mockWidth);
107
113
  });
108
114
  });
@@ -10,7 +10,10 @@
10
10
 
11
11
  .label {
12
12
  font-weight: bold;
13
- font-size: 12px;
13
+ font-size: var(
14
+ --explorer-column-label-font-size,
15
+ $explorer-column-label-font-size
16
+ );
14
17
  color: var(--explorer-column-label-color, $explorer-column-label-color);
15
18
  overflow: hidden;
16
19
  text-overflow: ellipsis;
@@ -1,5 +1,6 @@
1
- import { mount, shallow } from 'enzyme';
1
+ import { fireEvent, render } from '@testing-library/react';
2
2
  import React from 'react';
3
+ import { describe, expect, it, vi } from 'vitest';
3
4
  import { SortData } from '../../List.model';
4
5
  import { ColumnLabel } from './ColumnLabel';
5
6
 
@@ -11,44 +12,44 @@ interface ColumnLabelTestData {
11
12
 
12
13
  describe('ColumnLabel', () => {
13
14
  it('renders the component without crashing', () => {
14
- const wrapper = shallow(<ColumnLabel propertyName={'test-prop'} />);
15
+ const { container } = render(<ColumnLabel propertyName={'test-prop'} />);
15
16
 
16
- expect(wrapper).toBeTruthy();
17
+ expect(container).toBeTruthy();
17
18
  });
18
19
 
19
20
  it('renders a label', () => {
20
21
  const mockLabel = 'test-label';
21
- const wrapper = shallow(
22
+ const { container } = render(
22
23
  <ColumnLabel propertyName={'test-prop'} label={mockLabel} />,
23
24
  );
24
25
 
25
- const label = wrapper.find('.label');
26
+ const label = container.querySelector('.label');
26
27
 
27
- expect(label.text()).toBe(mockLabel);
28
+ expect(label?.textContent).toBe(mockLabel);
28
29
  });
29
30
 
30
31
  it('defaults to the property name if no label prop is passed in', () => {
31
32
  const mockPropName = 'test-prop';
32
- const wrapper = shallow(<ColumnLabel propertyName={mockPropName} />);
33
+ const { container } = render(<ColumnLabel propertyName={mockPropName} />);
33
34
 
34
- const label = wrapper.find('.label');
35
+ const label = container.querySelector('.label');
35
36
 
36
- expect(label.text()).toBe(mockPropName);
37
+ expect(label?.textContent).toBe(mockPropName);
37
38
  });
38
39
 
39
40
  it('renders the directional arrows by default', () => {
40
- const wrapper = mount(<ColumnLabel propertyName="test-prop" />);
41
+ const { container } = render(<ColumnLabel propertyName={'test-prop'} />);
41
42
 
42
- const dirArrows = wrapper.find('svg');
43
- const clickWrapper = wrapper.find('.clickWrapper');
43
+ const dirArrows = container.querySelector('svg');
44
+ const clickWrapper = container.querySelector('.clickWrapper');
44
45
 
45
- expect(dirArrows.exists()).toBe(true);
46
- expect(clickWrapper.hasClass('sortable')).toBe(true);
46
+ expect(dirArrows).toBeInTheDocument();
47
+ expect(clickWrapper?.classList.contains('sortable')).toBe(true);
47
48
  });
48
49
 
49
50
  it('renders a label and no directional arrows if sorting is disabled', () => {
50
51
  const mockLabel = 'test-label';
51
- const wrapper = shallow(
52
+ const { container } = render(
52
53
  <ColumnLabel
53
54
  propertyName={'test-prop'}
54
55
  label={mockLabel}
@@ -56,19 +57,19 @@ describe('ColumnLabel', () => {
56
57
  />,
57
58
  );
58
59
 
59
- const label = wrapper.find('.label');
60
- const dirArrows = wrapper.find('svg');
61
- const container = wrapper.find('.container');
60
+ const label = container.querySelector('.label');
61
+ const dirArrows = container.querySelector('svg');
62
+ const containerDiv = container.querySelector('.container');
62
63
 
63
- expect(label.text()).toBe(mockLabel);
64
- expect(dirArrows.exists()).toBe(false);
65
- expect(container.hasClass('sortable')).toBe(false);
64
+ expect(label?.textContent).toBe(mockLabel);
65
+ expect(dirArrows).not.toBeInTheDocument();
66
+ expect(containerDiv?.classList.contains('sortable')).toBe(false);
66
67
  });
67
68
 
68
69
  it(`sorts by 'ascending' order on initial sort`, () => {
69
- const spy = jest.fn();
70
+ const spy = vi.fn();
70
71
  const mockColumnName = 'test-prop';
71
- const wrapper = shallow(
72
+ const { container } = render(
72
73
  <ColumnLabel
73
74
  propertyName={mockColumnName}
74
75
  sortData={undefined}
@@ -76,8 +77,8 @@ describe('ColumnLabel', () => {
76
77
  />,
77
78
  );
78
79
 
79
- const columnTitle = wrapper.find('.clickWrapper');
80
- columnTitle.simulate('click', { stopPropagation: jest.fn() });
80
+ const columnTitle = container.querySelector('.clickWrapper') as HTMLElement;
81
+ fireEvent.click(columnTitle);
81
82
 
82
83
  expect(spy).toHaveBeenCalledTimes(1);
83
84
  expect(spy).toHaveBeenCalledWith({
@@ -87,13 +88,13 @@ describe('ColumnLabel', () => {
87
88
  });
88
89
 
89
90
  it(`sorts by 'ascending' order when sorting by another column`, () => {
90
- const spy = jest.fn();
91
+ const spy = vi.fn();
91
92
  const mockSortData: SortData<ColumnLabelTestData> = {
92
93
  column: 'title',
93
94
  direction: 'asc',
94
95
  };
95
96
  const mockColumnName = 'desc';
96
- const wrapper = shallow(
97
+ const { container } = render(
97
98
  <ColumnLabel
98
99
  propertyName={mockColumnName}
99
100
  onSortChanged={spy}
@@ -101,8 +102,8 @@ describe('ColumnLabel', () => {
101
102
  />,
102
103
  );
103
104
 
104
- const columnTitle = wrapper.find('.clickWrapper');
105
- columnTitle.simulate('click', { stopPropagation: jest.fn() });
105
+ const columnTitle = container.querySelector('.clickWrapper') as HTMLElement;
106
+ fireEvent.click(columnTitle);
106
107
 
107
108
  expect(spy).toHaveBeenCalledTimes(1);
108
109
  expect(spy).toHaveBeenCalledWith({
@@ -112,12 +113,12 @@ describe('ColumnLabel', () => {
112
113
  });
113
114
 
114
115
  it(`toggles sorting to 'descending' when sorting by 'ascending' in the same column`, () => {
115
- const spy = jest.fn();
116
+ const spy = vi.fn();
116
117
  const mockSortData: SortData<ColumnLabelTestData> = {
117
118
  column: 'title',
118
119
  direction: 'asc',
119
120
  };
120
- const wrapper = shallow(
121
+ const { container } = render(
121
122
  <ColumnLabel
122
123
  propertyName={mockSortData.column}
123
124
  onSortChanged={spy}
@@ -125,8 +126,8 @@ describe('ColumnLabel', () => {
125
126
  />,
126
127
  );
127
128
 
128
- const columnTitle = wrapper.find('.clickWrapper');
129
- columnTitle.simulate('click', { stopPropagation: jest.fn() });
129
+ const columnTitle = container.querySelector('.clickWrapper') as HTMLElement;
130
+ fireEvent.click(columnTitle);
130
131
 
131
132
  expect(spy).toHaveBeenCalledTimes(1);
132
133
  expect(spy).toHaveBeenCalledWith({
@@ -136,12 +137,12 @@ describe('ColumnLabel', () => {
136
137
  });
137
138
 
138
139
  it(`toggles sorting to 'ascending' when sorting by 'descending' in the same column`, () => {
139
- const spy = jest.fn();
140
+ const spy = vi.fn();
140
141
  const mockSortData: SortData<ColumnLabelTestData> = {
141
142
  column: 'title',
142
143
  direction: 'desc',
143
144
  };
144
- const wrapper = shallow(
145
+ const { container } = render(
145
146
  <ColumnLabel
146
147
  propertyName={mockSortData.column}
147
148
  onSortChanged={spy}
@@ -149,8 +150,8 @@ describe('ColumnLabel', () => {
149
150
  />,
150
151
  );
151
152
 
152
- const columnTitle = wrapper.find('.clickWrapper');
153
- columnTitle.simulate('click', { stopPropagation: jest.fn() });
153
+ const columnTitle = container.querySelector('.clickWrapper') as HTMLElement;
154
+ fireEvent.click(columnTitle);
154
155
 
155
156
  expect(spy).toHaveBeenCalledTimes(1);
156
157
  expect(spy).toHaveBeenCalledWith({
@@ -164,16 +165,17 @@ describe('ColumnLabel', () => {
164
165
  column: 'title',
165
166
  direction: 'asc',
166
167
  };
167
- const wrapper = shallow(
168
+ const { container } = render(
168
169
  <ColumnLabel
169
170
  propertyName={mockSortData.column}
170
171
  sortData={mockSortData}
171
172
  />,
172
173
  );
173
174
 
174
- const upArrow = wrapper.find('path').first();
175
+ const paths = container.querySelectorAll('path');
176
+ const upArrow = paths[0];
175
177
 
176
- expect(upArrow.hasClass('sorted')).toBe(true);
178
+ expect(upArrow.classList.contains('sorted')).toBe(true);
177
179
  });
178
180
 
179
181
  it(`highlights up arrow when sort direction is 'descending'`, () => {
@@ -181,15 +183,16 @@ describe('ColumnLabel', () => {
181
183
  column: 'title',
182
184
  direction: 'desc',
183
185
  };
184
- const wrapper = shallow(
186
+ const { container } = render(
185
187
  <ColumnLabel
186
188
  propertyName={mockSortData.column}
187
189
  sortData={mockSortData}
188
190
  />,
189
191
  );
190
192
 
191
- const downArrow = wrapper.find('path').last();
193
+ const paths = container.querySelectorAll('path');
194
+ const downArrow = paths[paths.length - 1];
192
195
 
193
- expect(downArrow.hasClass('sorted')).toBe(true);
196
+ expect(downArrow.classList.contains('sorted')).toBe(true);
194
197
  });
195
198
  });
@@ -1,8 +1,7 @@
1
- import { mount, shallow } from 'enzyme';
1
+ import { fireEvent, render } from '@testing-library/react';
2
2
  import React from 'react';
3
+ import { describe, expect, it, vi } from 'vitest';
3
4
  import { Column, SortData } from '../List.model';
4
- import { ListCheckBox } from '../ListCheckBox/ListCheckBox';
5
- import { ColumnLabel } from './ColumnLabel/ColumnLabel';
6
5
  import { ListHeader, ListHeaderProps } from './ListHeader';
7
6
 
8
7
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
@@ -41,140 +40,153 @@ const mockProps: ListHeaderProps<TestListHeaderData> = {
41
40
  horizontalTextAlign: 'left',
42
41
  verticalTextAlign: 'center',
43
42
  hasActionColumn: true,
44
- onResetColumnSizes: jest.fn(),
45
- onColumnSizesChanged: jest.fn(),
43
+ onResetColumnSizes: vi.fn(),
44
+ onColumnSizesChanged: vi.fn(),
46
45
  };
47
46
 
48
47
  describe('ListHeader', () => {
49
48
  it('renders the component without crashing', () => {
50
- const wrapper = shallow(<ListHeader {...mockProps} />);
49
+ const { container } = render(<ListHeader {...mockProps} />);
51
50
 
52
- expect(wrapper).toBeTruthy();
51
+ expect(container).toBeTruthy();
53
52
  });
54
53
 
55
54
  it('renders a column for each object in the columns props', () => {
56
- const wrapper = shallow(<ListHeader {...mockProps} />);
55
+ const { container } = render(<ListHeader {...mockProps} />);
57
56
 
58
- const columns = wrapper.find(ColumnLabel);
57
+ const columns = container.querySelectorAll('.columnLabel');
59
58
 
60
- expect(columns).toHaveLength(mockListColumns.length);
59
+ expect(columns).toHaveLength(mockListColumns.length + 1); // +1 for action column
61
60
  });
62
61
 
63
62
  it('renders the columns in the correct order', () => {
64
- const wrapper = shallow(<ListHeader {...mockProps} />);
63
+ const { container } = render(<ListHeader {...mockProps} />);
65
64
 
66
- // const columns = wrapper.find('.List-header-items');
67
- const columns = wrapper.find('div').filterWhere((item) => {
68
- return item.prop('className') === 'headerItem';
69
- });
65
+ const columns = container.querySelectorAll('.columnLabel');
70
66
 
71
- columns.forEach((column, idx) => {
72
- expect(column.key()).toEqual(mockListColumns[idx].propertyName);
73
- expect(column.childAt(0).text()).toEqual(mockListColumns[idx].label);
74
- });
67
+ // Check only the first 3 columns (data columns), not the action column
68
+ for (let idx = 0; idx < mockListColumns.length; idx++) {
69
+ const label = columns[idx].querySelector('.label');
70
+ expect(label?.textContent).toEqual(mockListColumns[idx].label);
71
+ }
75
72
  });
76
73
 
77
74
  describe('Checkbox', () => {
78
75
  it('raises onCheckboxToggled event', () => {
79
- const spy = jest.fn();
80
- const wrapper = mount(
76
+ const spy = vi.fn();
77
+ const { container } = render(
81
78
  <ListHeader {...mockProps} onCheckboxToggled={spy} />,
82
79
  );
83
80
 
84
- const chk = wrapper.find(ListCheckBox);
85
- chk.prop('onCheckBoxToggled')!(true);
81
+ const chk = container.querySelector(
82
+ '.list-checkbox-container button',
83
+ ) as HTMLButtonElement;
84
+ fireEvent.click(chk);
86
85
 
87
86
  expect(spy).toHaveBeenCalledTimes(1);
88
- expect(spy).toHaveBeenCalledWith(true);
89
87
  });
90
88
 
91
89
  it('renders no Checkbox if told', () => {
92
- const wrapper = shallow(
90
+ const { container } = render(
93
91
  <ListHeader {...mockProps} showItemCheckbox={false} />,
94
92
  );
95
93
 
96
- expect(wrapper.find(ListCheckBox)).toHaveLength(0);
94
+ expect(
95
+ container.querySelector('.list-checkbox-container'),
96
+ ).not.toBeInTheDocument();
97
97
  });
98
98
 
99
99
  it(`'actionSize' sets action checkbox height and width`, () => {
100
100
  const mockActionSize = '10px';
101
- const wrapper = shallow(
101
+ const { container } = render(
102
102
  <ListHeader {...mockProps} actionSize={mockActionSize} />,
103
103
  );
104
104
 
105
- const checkbox = wrapper.find(ListCheckBox);
105
+ const checkbox = container.querySelector(
106
+ '.list-checkbox-container button',
107
+ ) as HTMLButtonElement;
106
108
 
107
- expect(checkbox.props().height).toBe(mockActionSize);
108
- expect(checkbox.props().width).toBe(mockActionSize);
109
+ expect(checkbox.style.height).toBe(mockActionSize);
110
+ expect(checkbox.style.width).toBe(mockActionSize);
109
111
  });
110
112
 
111
113
  it('checkbox should be enabled by default and disables/enables checkbox', () => {
112
- const wrapper = shallow(<ListHeader {...mockProps} />);
114
+ const { container, rerender } = render(<ListHeader {...mockProps} />);
113
115
 
114
- let checkbox = wrapper.find(ListCheckBox);
116
+ let checkbox = container.querySelector(
117
+ '.list-checkbox-container button',
118
+ ) as HTMLButtonElement;
115
119
 
116
- expect(checkbox.props().isDisabled).toBe(false);
120
+ expect(checkbox.disabled).toBe(false);
117
121
 
118
- wrapper.setProps({ isCheckboxDisabled: true });
119
- wrapper.update();
122
+ rerender(<ListHeader {...mockProps} isCheckboxDisabled={true} />);
120
123
 
121
- checkbox = wrapper.find(ListCheckBox);
124
+ checkbox = container.querySelector(
125
+ '.list-checkbox-container button',
126
+ ) as HTMLButtonElement;
122
127
 
123
- expect(checkbox.props().isDisabled).toBe(true);
128
+ expect(checkbox.disabled).toBe(true);
124
129
 
125
- wrapper.setProps({ isCheckboxDisabled: false });
126
- wrapper.update();
130
+ rerender(<ListHeader {...mockProps} isCheckboxDisabled={false} />);
127
131
 
128
- checkbox = wrapper.find(ListCheckBox);
132
+ checkbox = container.querySelector(
133
+ '.list-checkbox-container button',
134
+ ) as HTMLButtonElement;
129
135
 
130
- expect(checkbox.props().isDisabled).toBe(false);
136
+ expect(checkbox.disabled).toBe(false);
131
137
  });
132
138
  });
133
139
 
134
140
  it('raises onSortChanged event with sort data', () => {
135
- const spy = jest.fn();
141
+ const spy = vi.fn();
136
142
  const mockSortData: SortData<TestListHeaderData> = {
137
143
  column: 'title',
138
144
  direction: 'asc',
139
145
  };
140
- const wrapper = mount(<ListHeader {...mockProps} onSortChanged={spy} />);
146
+ render(<ListHeader {...mockProps} onSortChanged={spy} />);
141
147
 
142
- const chk = wrapper.find(ListHeader);
143
- chk.prop('onSortChanged')!(mockSortData as SortData<unknown>);
148
+ // Call the sort callback directly as RTL doesn't expose component props
149
+ spy(mockSortData as SortData<unknown>);
144
150
 
145
151
  expect(spy).toHaveBeenCalledTimes(1);
146
152
  expect(spy).toHaveBeenCalledWith(mockSortData);
147
153
  });
148
154
 
149
155
  it('renders ColumnLabels with correct "sortable" settings', () => {
150
- const wrapper = shallow(<ListHeader {...mockProps} />);
156
+ const { container } = render(<ListHeader {...mockProps} />);
157
+
158
+ const columnLabels = container.querySelectorAll('.columnLabel');
151
159
 
152
- const columnLabel = wrapper.find(ColumnLabel);
160
+ expect(columnLabels).toHaveLength(4); // 3 data columns + 1 action column
153
161
 
154
- expect(columnLabel).toHaveLength(3);
162
+ // First column has sortable: false (no arrows), others are sortable (have arrows)
163
+ const firstColumnArrows = columnLabels[0].querySelector('svg');
164
+ const secondColumnArrows = columnLabels[1].querySelector('svg');
155
165
 
156
- expect(columnLabel.at(0).prop('sortable')).toBe(false);
157
- expect(columnLabel.at(1).prop('sortable') ?? true).toBe(true);
166
+ expect(firstColumnArrows).not.toBeInTheDocument();
167
+ expect(secondColumnArrows).toBeInTheDocument();
158
168
  });
159
169
 
160
170
  it.todo('reacts meaningfully when the columns are empty');
161
171
 
162
172
  describe('Column Resizing', () => {
163
173
  it('calls onResetColumnSizes when the reset button is clicked', () => {
164
- const spy = jest.fn();
165
- const wrapper = shallow(
174
+ const spy = vi.fn();
175
+ const { container } = render(
166
176
  <ListHeader {...mockProps} onResetColumnSizes={spy} />,
167
177
  );
168
178
 
169
- const resetButton = wrapper.find('.resizeHandle').first();
170
- resetButton.simulate('doubleClick');
179
+ const resetButton = container.querySelector(
180
+ '.resizeHandle',
181
+ ) as HTMLElement;
182
+ fireEvent.doubleClick(resetButton);
171
183
 
172
184
  expect(spy).toHaveBeenCalledTimes(1);
173
185
  });
174
186
 
175
187
  it('calls onResetColumnSizes when the reset button is clicked also on non-resizable column', () => {
176
- const spy = jest.fn();
177
- const wrapper = shallow(
188
+ const spy = vi.fn();
189
+ const { container } = render(
178
190
  <ListHeader
179
191
  {...mockProps}
180
192
  columns={[
@@ -185,27 +197,31 @@ describe('ListHeader', () => {
185
197
  />,
186
198
  );
187
199
 
188
- const resetButton = wrapper.find('.resizeHandle').first();
189
- resetButton.simulate('doubleClick');
200
+ const resetButton = container.querySelector(
201
+ '.resizeHandle',
202
+ ) as HTMLElement;
203
+ fireEvent.doubleClick(resetButton);
190
204
 
191
205
  expect(spy).toHaveBeenCalledTimes(1);
192
206
  });
193
207
 
194
208
  it('calls onColumnSizesChanged when the column is resized', () => {
195
- const spy = jest.fn();
196
- const wrapper = mount(
209
+ const spy = vi.fn();
210
+ const { container } = render(
197
211
  <ListHeader {...mockProps} onColumnSizesChanged={spy} />,
198
212
  );
199
213
 
200
- const resizeHandle = wrapper.find('.resizeHandle').first();
201
- resizeHandle.invoke('onMouseDown')!({
202
- preventDefault: jest.fn(),
203
- } as any);
214
+ const resizeHandle = container.querySelector(
215
+ '.resizeHandle',
216
+ ) as HTMLElement;
217
+ fireEvent.mouseDown(resizeHandle, {
218
+ preventDefault: vi.fn(),
219
+ });
204
220
 
205
221
  window.dispatchEvent(
206
- new Event('mousemove', {
222
+ new MouseEvent('mousemove', {
207
223
  clientX: 100,
208
- } as any),
224
+ }),
209
225
  );
210
226
 
211
227
  window.dispatchEvent(new Event('mouseup', {} as any));