@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,66 +1,67 @@
1
- import { shallow } from 'enzyme';
1
+ import { render } from '@testing-library/react';
2
2
  import React from 'react';
3
+ import { describe, expect, it, vi } from 'vitest';
3
4
  import { ReadOnlyTextField } from './ReadOnlyTextField';
4
5
 
5
6
  describe('ReadOnlyTextField', () => {
6
7
  it('renders the component without crashing', () => {
7
- const wrapper = shallow(<ReadOnlyTextField />);
8
+ const { container } = render(<ReadOnlyTextField />);
8
9
 
9
- expect(wrapper).toBeTruthy();
10
+ expect(container).toBeTruthy();
10
11
  });
11
12
 
12
13
  it('displays a label', () => {
13
14
  const mockLabel = 'mockLabel';
14
- const wrapper = shallow(<ReadOnlyTextField label={mockLabel} />);
15
+ const { container } = render(<ReadOnlyTextField label={mockLabel} />);
15
16
 
16
- const label = wrapper.dive().find('label');
17
+ const label = container.querySelector('label');
17
18
 
18
- expect(label.text()).toBe(mockLabel);
19
+ expect(label?.textContent).toBe(mockLabel);
19
20
  });
20
21
 
21
22
  it('renders a string value', () => {
22
23
  const mockValue = 'mockLabel';
23
- const wrapper = shallow(<ReadOnlyTextField value={mockValue} />);
24
+ const { container } = render(<ReadOnlyTextField value={mockValue} />);
24
25
 
25
- const input = wrapper.find('input');
26
+ const input = container.querySelector('input') as HTMLInputElement;
26
27
 
27
- expect(input.prop('value')).toBe(mockValue);
28
+ expect(input.value).toBe(mockValue);
28
29
  });
29
30
 
30
31
  it('renders a numeric value', () => {
31
32
  const mockValue = 3;
32
- const wrapper = shallow(<ReadOnlyTextField value={mockValue} />);
33
+ const { container } = render(<ReadOnlyTextField value={mockValue} />);
33
34
 
34
- const input = wrapper.find('input');
35
+ const input = container.querySelector('input') as HTMLInputElement;
35
36
 
36
- expect(input.prop('value')).toBe(mockValue);
37
+ expect(input.value).toBe(String(mockValue));
37
38
  });
38
39
 
39
40
  it('renders an array of values', () => {
40
41
  const mockValue = ['de', 'en', 'ja', 'fr'];
41
- const wrapper = shallow(<ReadOnlyTextField value={mockValue} />);
42
+ const { container } = render(<ReadOnlyTextField value={mockValue} />);
42
43
 
43
- const input = wrapper.find('input');
44
+ const input = container.querySelector('input') as HTMLInputElement;
44
45
 
45
- expect(input.prop('value')).toBe('de, en, ja, fr');
46
+ expect(input.value).toBe('de, en, ja, fr');
46
47
  });
47
48
 
48
49
  it('defaults to empty strings for label and value', () => {
49
50
  const mockDefaults = '';
50
- const wrapper = shallow(<ReadOnlyTextField />);
51
+ const { container } = render(<ReadOnlyTextField />);
51
52
 
52
- const label = wrapper.dive().find('label');
53
- const input = wrapper.find('input');
53
+ const label = container.querySelector('label');
54
+ const input = container.querySelector('input') as HTMLInputElement;
54
55
 
55
- expect(label.text()).toBe(mockDefaults);
56
- expect(input.prop('value')).toBe(mockDefaults);
56
+ expect(label?.textContent).toBe(mockDefaults);
57
+ expect(input.value).toBe(mockDefaults);
57
58
  });
58
59
 
59
60
  it('triggers transform functions once per render', () => {
60
- const spy = jest.fn();
61
+ const spy = vi.fn();
61
62
  const mockValue = 3;
62
63
 
63
- shallow(<ReadOnlyTextField value={mockValue} transform={spy} />);
64
+ render(<ReadOnlyTextField value={mockValue} transform={spy} />);
64
65
 
65
66
  expect(spy).toHaveBeenCalledTimes(1);
66
67
  expect(spy).toHaveBeenCalledWith(3);
@@ -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 { Select } from './Select';
4
5
 
5
6
  const mockLabel = 'mockLabel';
@@ -20,52 +21,50 @@ const mockOptions = [
20
21
  ];
21
22
 
22
23
  describe('Select', () => {
23
- afterEach(() => {
24
- document.body.innerHTML = '';
25
- });
26
-
27
24
  it('renders the component without crashing', () => {
28
- const wrapper = shallow(<Select name="test-name" options={[]} />);
25
+ const { container } = render(<Select name="test-name" options={[]} />);
29
26
 
30
- expect(wrapper).toBeTruthy();
27
+ expect(container).toBeTruthy();
31
28
  });
32
29
 
33
30
  it('displays a label', () => {
34
- const wrapper = shallow(
31
+ const { container } = render(
35
32
  <Select name="test-name" label={mockLabel} options={[]} />,
36
33
  );
37
34
 
38
- const label = wrapper.dive().find('[data-test-id="form-field-label"]');
35
+ const label = container.querySelector('[data-test-id="form-field-label"]');
39
36
 
40
- expect(label.text()).toBe(mockLabel);
37
+ expect(label?.textContent).toBe(mockLabel);
41
38
  });
42
39
 
43
40
  it('the given value must be filled in input', () => {
44
- const wrapper = mount(
41
+ const { container } = render(
45
42
  <Select name={'test-name'} options={mockOptions} value="2" />,
46
43
  );
47
44
 
48
- const input = wrapper.find('[role="combobox"]');
45
+ const input = container.querySelector(
46
+ '[role="combobox"]',
47
+ ) as HTMLInputElement;
49
48
 
50
- expect(input.prop('value')).toEqual(mockOptions[1].label);
49
+ expect(input.value).toEqual(mockOptions[1].label);
51
50
  });
52
51
 
53
52
  it('the popper must be rendered on input click', () => {
54
- const wrapper = mount(
53
+ const { container } = render(
55
54
  <Select name={'test-name'} options={mockOptions} value="2" />,
56
55
  );
57
- const input = wrapper.find('[role="combobox"]');
58
- input.simulate('mousedown');
56
+ const input = container.querySelector('[role="combobox"]') as HTMLElement;
57
+ fireEvent.mouseDown(input);
59
58
 
60
59
  const popper = document.querySelector('[role="tooltip"]');
61
60
  expect(popper).not.toBeNull();
62
61
  });
63
62
 
64
63
  it('raises change, blur, and focus events', () => {
65
- const changeSpy = jest.fn();
66
- const blurSpy = jest.fn();
67
- const focusSpy = jest.fn();
68
- const wrapper = mount(
64
+ const changeSpy = vi.fn();
65
+ const blurSpy = vi.fn();
66
+ const focusSpy = vi.fn();
67
+ const { container } = render(
69
68
  <Select
70
69
  name={'test-name'}
71
70
  onChange={changeSpy}
@@ -75,30 +74,32 @@ describe('Select', () => {
75
74
  />,
76
75
  );
77
76
 
78
- const input = wrapper.find('[role="combobox"]');
79
- input.simulate('mousedown');
77
+ const input = container.querySelector('[role="combobox"]') as HTMLElement;
78
+ fireEvent.mouseDown(input);
80
79
  const firstOption = document.querySelector('[role="option"]');
81
80
  firstOption?.dispatchEvent(new Event('click', { bubbles: true }));
82
81
 
83
82
  expect(changeSpy).toHaveBeenCalledTimes(1);
84
83
 
85
- input.simulate('blur');
84
+ fireEvent.blur(input);
86
85
  expect(blurSpy).toHaveBeenCalledTimes(1);
87
86
 
88
- input.simulate('focus');
87
+ fireEvent.focus(input);
89
88
  expect(focusSpy).toHaveBeenCalledTimes(1);
90
89
  });
91
90
 
92
91
  it('applies error styling and renders error message when an error is passed', () => {
93
92
  const mockErrorMessage = 'test-error-message';
94
- const wrapper = shallow(
93
+ const { container } = render(
95
94
  <Select name={'test-name'} error={mockErrorMessage} options={[]} />,
96
95
  );
97
96
 
98
- const errorMsg = wrapper.dive().find('[data-test-id="form-field-error"]');
99
- const input = wrapper.find('[role="combobox"]');
97
+ const errorMsg = container.querySelector(
98
+ '[data-test-id="form-field-error"]',
99
+ );
100
+ const input = container.querySelector('[role="combobox"]');
100
101
 
101
- expect(errorMsg.text()).toBe(mockErrorMessage);
102
- expect(input.hasClass('hasError')).toBe(true);
102
+ expect(errorMsg?.textContent).toBe(mockErrorMessage);
103
+ expect(input?.classList.contains('hasError')).toBe(true);
103
104
  });
104
105
  });
@@ -1,43 +1,43 @@
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 { SingleLineText } from './SingleLineText';
4
5
 
5
6
  describe('SingleLineText', () => {
6
7
  it('renders the component without crashing', () => {
7
- const wrapper = shallow(<SingleLineText name={'test-name'} />);
8
+ const { container } = render(<SingleLineText name={'test-name'} />);
8
9
 
9
- expect(wrapper).toBeTruthy();
10
+ expect(container).toBeTruthy();
10
11
  });
11
12
 
12
13
  it('displays a label', () => {
13
14
  const mockLabel = 'mockLabel';
14
- const wrapper = shallow(
15
+ const { container } = render(
15
16
  <SingleLineText name={'test-name'} label={mockLabel} />,
16
17
  );
17
18
 
18
- const label = wrapper.dive().find('label');
19
+ const label = container.querySelector('label');
19
20
 
20
- expect(label.text()).toBe(mockLabel);
21
+ expect(label?.textContent).toBe(mockLabel);
21
22
  });
22
23
 
23
24
  it('sets input field using the value prop and emits updated values', () => {
24
- const spy = jest.fn();
25
+ const spy = vi.fn();
25
26
  const mockValue = 'test-value';
26
27
  const mockValueUpdated = 'updated-test-value';
27
- const wrapper = mount(
28
+ const { container } = render(
28
29
  <SingleLineText name={'test-name'} value={mockValue} onChange={spy} />,
29
30
  );
30
31
 
31
- const input = wrapper.find('input');
32
+ const input = container.querySelector('input') as HTMLInputElement;
32
33
 
33
- expect(input.getDOMNode<HTMLInputElement>().value).toEqual(mockValue);
34
+ expect(input.value).toEqual(mockValue);
34
35
 
35
- input.simulate('change', { target: { value: mockValueUpdated } });
36
+ fireEvent.change(input, { target: { value: mockValueUpdated } });
36
37
 
37
38
  expect(spy).toHaveBeenCalledTimes(1);
38
- expect(spy).toHaveBeenCalledWith(
39
- expect.objectContaining({ target: { value: mockValueUpdated } }),
40
- );
39
+ const callArg = spy.mock.calls[0][0];
40
+ expect(callArg.target.value).toBe(mockValueUpdated);
41
41
  });
42
42
 
43
43
  it('uses optional props when passed in', () => {
@@ -52,21 +52,27 @@ describe('SingleLineText', () => {
52
52
  type: 'number',
53
53
  } as Record<string, unknown>;
54
54
 
55
- const wrapper = shallow(
55
+ const { container } = render(
56
56
  <SingleLineText name={'test-name'} {...mockProps} />,
57
57
  );
58
58
 
59
- const input = wrapper.find('input');
60
- const inputProps = input.props();
61
- expect(inputProps).toEqual(expect.objectContaining(mockProps));
59
+ const input = container.querySelector('input') as HTMLInputElement;
60
+ expect(input.autocomplete).toBe(mockProps.autoComplete);
61
+ // React's autoFocus focuses the element programmatically, not via the attribute
62
+ expect(document.activeElement).toBe(input);
63
+ expect(input.disabled).toBe(mockProps.disabled);
64
+ expect(input.id).toBe(mockProps.id);
65
+ expect(input.name).toBe(mockProps.name);
66
+ expect(input.placeholder).toBe(mockProps.placeholder);
67
+ expect(input.type).toBe(mockProps.type);
62
68
  });
63
69
 
64
70
  it('raises change, blur, and focus events', () => {
65
- const changeSpy = jest.fn();
66
- const blurSpy = jest.fn();
67
- const focusSpy = jest.fn();
71
+ const changeSpy = vi.fn();
72
+ const blurSpy = vi.fn();
73
+ const focusSpy = vi.fn();
68
74
  const mockValue = 'test input';
69
- const wrapper = shallow(
75
+ const { container } = render(
70
76
  <SingleLineText
71
77
  name={'test-name'}
72
78
  onChange={changeSpy}
@@ -75,38 +81,38 @@ describe('SingleLineText', () => {
75
81
  />,
76
82
  );
77
83
 
78
- const input = wrapper.find('input');
84
+ const input = container.querySelector('input') as HTMLInputElement;
79
85
 
80
- input.simulate('change', { target: { value: mockValue } });
86
+ fireEvent.change(input, { target: { value: mockValue } });
81
87
  expect(changeSpy).toHaveBeenCalledTimes(1);
82
88
 
83
- input.simulate('blur');
89
+ fireEvent.blur(input);
84
90
  expect(blurSpy).toHaveBeenCalledTimes(1);
85
91
 
86
- input.simulate('focus');
92
+ fireEvent.focus(input);
87
93
  expect(focusSpy).toHaveBeenCalledTimes(1);
88
94
  });
89
95
 
90
96
  it('applies error styling and renders error message when an error is passed', () => {
91
97
  const mockErrorMessage = 'test-error-message';
92
- const wrapper = shallow(
98
+ const { container } = render(
93
99
  <SingleLineText name={'test-name'} error={mockErrorMessage} />,
94
100
  );
95
101
 
96
- const errorMsg = wrapper.dive().find('small');
97
- const errorStyling = wrapper.find('input');
102
+ const errorMsg = container.querySelector('small');
103
+ const errorStyling = container.querySelector('input');
98
104
 
99
- expect(errorMsg.text()).toBe(mockErrorMessage);
100
- expect(errorStyling.hasClass('hasError')).toBe(true);
105
+ expect(errorMsg?.textContent).toBe(mockErrorMessage);
106
+ expect(errorStyling?.classList.contains('hasError')).toBe(true);
101
107
  });
102
108
 
103
109
  it('show a dummy value as the input value, when type is password', () => {
104
110
  const dummyPwd = '0000000000';
105
- const wrapper = mount(
111
+ const { container } = render(
106
112
  <SingleLineText name={'test-pwd'} type="password" isSet={true} />,
107
113
  );
108
114
 
109
- const input = wrapper.find('input').getDOMNode<HTMLInputElement>();
115
+ const input = container.querySelector('input') as HTMLInputElement;
110
116
 
111
117
  expect(input.value).toBe(dummyPwd);
112
118
  });
@@ -114,9 +120,9 @@ describe('SingleLineText', () => {
114
120
  it('when user changes the value it should be displayed, when type is password', () => {
115
121
  const initialVal = undefined;
116
122
  const mockValueUpdated = 'New Password';
117
- const changeSpy = jest.fn();
123
+ const changeSpy = vi.fn();
118
124
 
119
- const wrapper = mount(
125
+ const { container } = render(
120
126
  <SingleLineText
121
127
  name={'test-pwd'}
122
128
  type="password"
@@ -125,13 +131,11 @@ describe('SingleLineText', () => {
125
131
  />,
126
132
  );
127
133
 
128
- const input = wrapper.find('input');
129
- input.simulate('change', { target: { value: mockValueUpdated } });
134
+ const input = container.querySelector('input') as HTMLInputElement;
135
+ fireEvent.change(input, { target: { value: mockValueUpdated } });
130
136
 
131
- expect(changeSpy).toHaveBeenCalledWith(
132
- expect.objectContaining({
133
- target: { value: mockValueUpdated },
134
- }),
135
- );
137
+ expect(changeSpy).toHaveBeenCalledTimes(1);
138
+ const callArg = changeSpy.mock.calls[0][0];
139
+ expect(callArg.target.value).toBe(mockValueUpdated);
136
140
  });
137
141
  });
@@ -1,37 +1,40 @@
1
- import { mount, ReactWrapper, shallow } from 'enzyme';
1
+ import { fireEvent, render } from '@testing-library/react';
2
2
  import React from 'react';
3
- import { Button } from '../../Buttons';
4
- import { Select } from '../Select/Select';
3
+ import { describe, expect, it, vi } from 'vitest';
5
4
  import { Tags } from './Tags';
6
5
 
7
- function selectFirstOption(wrapper: ReactWrapper) {
8
- const input = wrapper.find('[role="combobox"]');
9
- input.simulate('mousedown');
10
- const firstOption = document.querySelector('[role="option"]');
11
- firstOption?.dispatchEvent(new Event('click', { bubbles: true }));
6
+ function selectFirstOption(container: HTMLElement) {
7
+ const input = container.querySelector('[role="combobox"]') as HTMLElement;
8
+ fireEvent.mouseDown(input);
9
+ const firstOption = document.querySelector('[role="option"]') as HTMLElement;
10
+ if (firstOption) {
11
+ fireEvent.click(firstOption);
12
+ }
12
13
  }
13
14
 
14
15
  describe('Tags', () => {
15
16
  it('renders the component without crashing', () => {
16
- const wrapper = shallow(<Tags name={'test-name'} />);
17
+ const { container } = render(<Tags name={'test-name'} />);
17
18
 
18
- expect(wrapper).toBeTruthy();
19
+ expect(container).toBeTruthy();
19
20
  });
20
21
 
21
22
  it('displays a label', () => {
22
23
  const mockLabel = 'mockLabel';
23
- const wrapper = shallow(<Tags name={'test-name'} label={mockLabel} />);
24
+ const { container } = render(<Tags name={'test-name'} label={mockLabel} />);
24
25
 
25
- const label = wrapper.dive().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('displays a tag for each currently selected tag', () => {
31
32
  const mockValue: string[] = ['1', '2', '3'];
32
- const wrapper = shallow(<Tags name={'test-name'} value={mockValue} />);
33
+ const { container } = render(<Tags name={'test-name'} value={mockValue} />);
33
34
 
34
- const tags = wrapper.find('span > span').map((node) => node.text());
35
+ const tags = Array.from(container.querySelectorAll('span > span')).map(
36
+ (node) => node.textContent,
37
+ );
35
38
 
36
39
  expect(tags).toHaveLength(3);
37
40
  expect(tags).toEqual(mockValue);
@@ -39,19 +42,19 @@ describe('Tags', () => {
39
42
 
40
43
  it(`each Button component should have type of 'button'`, () => {
41
44
  const mockValue = ['1', '2', '3'];
42
- const wrapper = mount(<Tags name={'test-name'} value={mockValue} />);
45
+ const { container } = render(<Tags name={'test-name'} value={mockValue} />);
43
46
 
44
- const buttons = wrapper.find(Button);
47
+ const buttons = container.querySelectorAll('button');
45
48
 
46
49
  buttons.forEach((button) => {
47
- expect(button.prop('type')).toBe('button');
50
+ expect(button.type).toBe('button');
48
51
  });
49
52
  });
50
53
 
51
54
  it('raises onChange when selecting a tag along with the new value', () => {
52
- const changeSpy = jest.fn();
55
+ const changeSpy = vi.fn();
53
56
  const mockValue: string[] = ['1'];
54
- const wrapper = mount(
57
+ const { container } = render(
55
58
  <Tags
56
59
  name={'test-name'}
57
60
  onChange={changeSpy}
@@ -60,7 +63,7 @@ describe('Tags', () => {
60
63
  />,
61
64
  );
62
65
 
63
- selectFirstOption(wrapper);
66
+ selectFirstOption(container);
64
67
 
65
68
  expect(changeSpy).toHaveBeenCalledTimes(1);
66
69
  expect(changeSpy).toHaveBeenCalledWith(
@@ -71,9 +74,9 @@ describe('Tags', () => {
71
74
  });
72
75
 
73
76
  it('raises onChange when removing a tag along with the new value', () => {
74
- const changeSpy = jest.fn();
77
+ const changeSpy = vi.fn();
75
78
  const mockValue: string[] = ['1'];
76
- const wrapper = mount(
79
+ const { container } = render(
77
80
  <Tags
78
81
  name={'test-name'}
79
82
  onChange={changeSpy}
@@ -82,13 +85,11 @@ describe('Tags', () => {
82
85
  />,
83
86
  );
84
87
 
85
- const x = wrapper.find('[data-test-id="tags-delete"]');
86
-
87
- x.simulate('click', {
88
- persist: jest.fn(),
89
- });
88
+ const x = container.querySelector(
89
+ '[data-test-id="tags-delete"]',
90
+ ) as HTMLElement;
90
91
 
91
- wrapper.update();
92
+ fireEvent.click(x);
92
93
 
93
94
  expect(changeSpy).toHaveBeenCalledTimes(1);
94
95
  expect(changeSpy).toHaveBeenCalledWith(
@@ -99,33 +100,35 @@ describe('Tags', () => {
99
100
  });
100
101
 
101
102
  it('shows select element when current selected tags and optional tags are the not same length', () => {
102
- const wrapper = shallow(
103
+ const { container } = render(
103
104
  <Tags name={'test-name'} value={['1']} tagsOptions={['1', '2']} />,
104
105
  );
105
106
 
106
- const select = wrapper.find(Select);
107
+ const select = container.querySelector('[role="combobox"]');
107
108
 
108
- expect(select).toHaveLength(1);
109
+ expect(select).toBeInTheDocument();
109
110
  });
110
111
 
111
112
  it('hides select element when current selected tags and optional tags are the same length', () => {
112
- const wrapper = mount(
113
+ const { container, rerender } = render(
113
114
  <Tags name={'test-name'} value={['1']} tagsOptions={['1', '2']} />,
114
115
  );
115
116
 
116
- selectFirstOption(wrapper);
117
+ selectFirstOption(container);
117
118
 
118
- wrapper.update();
119
+ rerender(
120
+ <Tags name={'test-name'} value={['1', '2']} tagsOptions={['1', '2']} />,
121
+ );
119
122
 
120
- const select = wrapper.find(Select);
123
+ const select = container.querySelector('[role="combobox"]');
121
124
 
122
- expect(select).toHaveLength(0);
125
+ expect(select).not.toBeInTheDocument();
123
126
  });
124
127
 
125
128
  it('raises blur and focus events', () => {
126
- const blurSpy = jest.fn();
127
- const focusSpy = jest.fn();
128
- const wrapper = shallow(
129
+ const blurSpy = vi.fn();
130
+ const focusSpy = vi.fn();
131
+ const { container } = render(
129
132
  <Tags
130
133
  name={'test-name'}
131
134
  onBlur={blurSpy}
@@ -134,17 +137,17 @@ describe('Tags', () => {
134
137
  />,
135
138
  );
136
139
 
137
- const select = wrapper.find(Select);
140
+ const select = container.querySelector('[role="combobox"]') as HTMLElement;
138
141
 
139
- select.simulate('blur');
142
+ fireEvent.blur(select);
140
143
  expect(blurSpy).toHaveBeenCalledTimes(1);
141
144
 
142
- select.simulate('focus');
145
+ fireEvent.focus(select);
143
146
  expect(focusSpy).toHaveBeenCalledTimes(1);
144
147
  });
145
148
 
146
149
  it('uses the displayValue for existing tags when tagOptions are objects', () => {
147
- const wrapper = shallow(
150
+ const { container } = render(
148
151
  <Tags
149
152
  name={'test-name'}
150
153
  value={['1', '3']}
@@ -159,7 +162,9 @@ describe('Tags', () => {
159
162
  />,
160
163
  );
161
164
 
162
- const tags = wrapper.find('span > span').map((node) => node.text());
165
+ const tags = Array.from(container.querySelectorAll('span > span')).map(
166
+ (node) => node.textContent,
167
+ );
163
168
 
164
169
  expect(tags).toHaveLength(2);
165
170
 
@@ -167,7 +172,7 @@ describe('Tags', () => {
167
172
  });
168
173
 
169
174
  it('uses the displayValue for available tags when tagOptions are objects', () => {
170
- const wrapper = mount(
175
+ const { container } = render(
171
176
  <Tags
172
177
  name={'test-name'}
173
178
  value={['1', '3']}
@@ -182,8 +187,8 @@ describe('Tags', () => {
182
187
  />,
183
188
  );
184
189
 
185
- const input = wrapper.find('[role="combobox"]');
186
- input.simulate('mousedown');
190
+ const input = container.querySelector('[role="combobox"]') as HTMLElement;
191
+ fireEvent.mouseDown(input);
187
192
 
188
193
  const popper = document.querySelector('[role="tooltip"]');
189
194
 
@@ -199,14 +204,15 @@ describe('Tags', () => {
199
204
 
200
205
  it('applies error styling and renders error message when an error is passed', () => {
201
206
  const mockErrorMessage = 'test-error-message';
202
- const wrapper = mount(
207
+ const { container } = render(
203
208
  <Tags name={'test-name'} error={mockErrorMessage} tagsOptions={['1']} />,
204
209
  );
205
210
 
206
- const errorMsg = wrapper.find('small');
207
- const select = wrapper.find(Select);
211
+ const errorMsg = container.querySelector('small');
212
+ // The hasError class is applied to the Select component's container, not the combobox itself
213
+ const selectContainer = container.querySelector('.hasError');
208
214
 
209
- expect(errorMsg.text()).toBe(mockErrorMessage);
210
- expect(select.hasClass('hasError')).toBe(true);
215
+ expect(errorMsg?.textContent).toBe(mockErrorMessage);
216
+ expect(selectContainer).toBeInTheDocument();
211
217
  });
212
218
  });