@eturnity/eturnity_reusable_components 8.19.8-EPDM-12618.6 → 8.19.8-EPDM-13618.0

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 (573) hide show
  1. package/README.md +29 -29
  2. package/package.json +85 -85
  3. package/src/App.vue +30 -30
  4. package/src/Test.vue +64 -64
  5. package/src/assets/icons/arrow_down.svg +3 -3
  6. package/src/assets/icons/arrow_up_red.svg +3 -3
  7. package/src/assets/icons/black_spinner.svg +35 -35
  8. package/src/assets/icons/delete_icon.svg +11 -11
  9. package/src/assets/icons/delete_icon_gray.svg +11 -11
  10. package/src/assets/icons/drag_icon.svg +8 -8
  11. package/src/assets/icons/external_icon.svg +6 -6
  12. package/src/assets/icons/language_icon.svg +6 -6
  13. package/src/assets/icons/pdf_icon.svg +6 -6
  14. package/src/assets/icons/plus_button.svg +4 -4
  15. package/src/assets/icons/search_icon_black.svg +3 -3
  16. package/src/assets/icons/subposition_icon.svg +3 -3
  17. package/src/assets/icons/subposition_marker.svg +3 -3
  18. package/src/assets/icons/warning_icon.svg +3 -3
  19. package/src/assets/svgIcons/2d_active.svg +7 -7
  20. package/src/assets/svgIcons/2d_inactive.svg +8 -8
  21. package/src/assets/svgIcons/3d_active.svg +7 -7
  22. package/src/assets/svgIcons/3d_inactive.svg +8 -8
  23. package/src/assets/svgIcons/_readme.md +7 -7
  24. package/src/assets/svgIcons/ac_power.svg +4 -4
  25. package/src/assets/svgIcons/accept.svg +5 -5
  26. package/src/assets/svgIcons/activate_panels_active.svg +22 -22
  27. package/src/assets/svgIcons/activate_panels_inactive.svg +20 -20
  28. package/src/assets/svgIcons/add_icon-1.svg +3 -3
  29. package/src/assets/svgIcons/add_icon.svg +4 -4
  30. package/src/assets/svgIcons/add_plus.svg +4 -4
  31. package/src/assets/svgIcons/address_book.svg +3 -3
  32. package/src/assets/svgIcons/adjust_roof.svg +6 -6
  33. package/src/assets/svgIcons/after_sale_as_a_service.svg +6 -6
  34. package/src/assets/svgIcons/all_good.svg +3 -3
  35. package/src/assets/svgIcons/angle_active.svg +5 -5
  36. package/src/assets/svgIcons/angle_inactive.svg +4 -4
  37. package/src/assets/svgIcons/area_active.svg +11 -11
  38. package/src/assets/svgIcons/area_inactive.svg +26 -26
  39. package/src/assets/svgIcons/areas_tool.svg +14 -14
  40. package/src/assets/svgIcons/arrow_down.svg +3 -3
  41. package/src/assets/svgIcons/arrow_down_unfilled.svg +4 -4
  42. package/src/assets/svgIcons/arrow_left.svg +4 -4
  43. package/src/assets/svgIcons/arrow_long_left.svg +3 -3
  44. package/src/assets/svgIcons/arrow_long_right.svg +3 -3
  45. package/src/assets/svgIcons/arrow_right.svg +4 -4
  46. package/src/assets/svgIcons/arrow_up.svg +3 -3
  47. package/src/assets/svgIcons/arrow_up_unfilled.svg +4 -4
  48. package/src/assets/svgIcons/attachment.svg +3 -3
  49. package/src/assets/svgIcons/base_layer.svg +3 -3
  50. package/src/assets/svgIcons/battery.svg +3 -3
  51. package/src/assets/svgIcons/bell.svg +3 -3
  52. package/src/assets/svgIcons/bell_alt.svg +3 -3
  53. package/src/assets/svgIcons/bexio.svg +4 -4
  54. package/src/assets/svgIcons/bold.svg +3 -3
  55. package/src/assets/svgIcons/bom.svg +3 -3
  56. package/src/assets/svgIcons/bom_generation.svg +10 -10
  57. package/src/assets/svgIcons/bookmaker.svg +3 -3
  58. package/src/assets/svgIcons/bubble.svg +3 -3
  59. package/src/assets/svgIcons/bug.svg +5 -5
  60. package/src/assets/svgIcons/buildings.svg +55 -55
  61. package/src/assets/svgIcons/bullet_list.svg +8 -8
  62. package/src/assets/svgIcons/calendar.svg +7 -7
  63. package/src/assets/svgIcons/calendar_icon.svg +7 -7
  64. package/src/assets/svgIcons/call.svg +3 -3
  65. package/src/assets/svgIcons/camera.svg +3 -3
  66. package/src/assets/svgIcons/car.svg +3 -3
  67. package/src/assets/svgIcons/cart.svg +3 -3
  68. package/src/assets/svgIcons/charger_icon_white.svg +44 -44
  69. package/src/assets/svgIcons/chassis_ground_symbol.svg +27 -27
  70. package/src/assets/svgIcons/checkbox.svg +3 -3
  71. package/src/assets/svgIcons/checkmark.svg +3 -3
  72. package/src/assets/svgIcons/checkmark_white.svg +4 -4
  73. package/src/assets/svgIcons/clear_formatting.svg +7 -7
  74. package/src/assets/svgIcons/clenergy.svg +3 -3
  75. package/src/assets/svgIcons/clickable_info.svg +4 -4
  76. package/src/assets/svgIcons/clickable_info_white.svg +5 -5
  77. package/src/assets/svgIcons/clip.svg +3 -3
  78. package/src/assets/svgIcons/clock.svg +17 -17
  79. package/src/assets/svgIcons/clock_full.svg +3 -3
  80. package/src/assets/svgIcons/close.svg +4 -4
  81. package/src/assets/svgIcons/co_branding.svg +5 -5
  82. package/src/assets/svgIcons/collapse.svg +4 -4
  83. package/src/assets/svgIcons/collapse_all.svg +3 -3
  84. package/src/assets/svgIcons/collections.svg +3 -3
  85. package/src/assets/svgIcons/component_library.svg +7 -7
  86. package/src/assets/svgIcons/consumption_tariffs.svg +43 -43
  87. package/src/assets/svgIcons/context_menu-1.svg +6 -6
  88. package/src/assets/svgIcons/context_menu-2.svg +5 -5
  89. package/src/assets/svgIcons/context_menu.svg +5 -5
  90. package/src/assets/svgIcons/context_menu_tabs.svg +5 -5
  91. package/src/assets/svgIcons/cross.svg +4 -4
  92. package/src/assets/svgIcons/current_variant.svg +4 -4
  93. package/src/assets/svgIcons/customer.svg +3 -3
  94. package/src/assets/svgIcons/dashboard.svg +3 -3
  95. package/src/assets/svgIcons/data_transfer.svg +3 -3
  96. package/src/assets/svgIcons/deadline.svg +4 -4
  97. package/src/assets/svgIcons/deal_flow.svg +3 -3
  98. package/src/assets/svgIcons/delete.svg +4 -4
  99. package/src/assets/svgIcons/delete_area_active.svg +16 -16
  100. package/src/assets/svgIcons/delete_area_inactive.svg +15 -15
  101. package/src/assets/svgIcons/direction_active-1.svg +12 -12
  102. package/src/assets/svgIcons/direction_active.svg +5 -5
  103. package/src/assets/svgIcons/direction_arrow.svg +4 -4
  104. package/src/assets/svgIcons/direction_inactive.svg +4 -4
  105. package/src/assets/svgIcons/dislike.svg +3 -3
  106. package/src/assets/svgIcons/distance_tool.svg +8 -8
  107. package/src/assets/svgIcons/distances_active.svg +9 -9
  108. package/src/assets/svgIcons/distances_inactive.svg +8 -8
  109. package/src/assets/svgIcons/distort_tool.svg +10 -10
  110. package/src/assets/svgIcons/distort_tool2.svg +16 -16
  111. package/src/assets/svgIcons/document.svg +3 -3
  112. package/src/assets/svgIcons/documents.svg +3 -3
  113. package/src/assets/svgIcons/documents_landscape.svg +3 -3
  114. package/src/assets/svgIcons/double_arrow_long.svg +4 -4
  115. package/src/assets/svgIcons/downarrow.svg +3 -3
  116. package/src/assets/svgIcons/download.svg +4 -4
  117. package/src/assets/svgIcons/drag_icon.svg +8 -8
  118. package/src/assets/svgIcons/draggable_corner.svg +5 -5
  119. package/src/assets/svgIcons/draw_tool.svg +3 -3
  120. package/src/assets/svgIcons/duplicate-1.svg +8 -8
  121. package/src/assets/svgIcons/duplicate-2.svg +5 -5
  122. package/src/assets/svgIcons/duplicate.svg +3 -3
  123. package/src/assets/svgIcons/e-mobility_configurator.svg +6 -6
  124. package/src/assets/svgIcons/e_signature.svg +5 -5
  125. package/src/assets/svgIcons/ed_ac.svg +3 -3
  126. package/src/assets/svgIcons/ed_ac_path.svg +3 -3
  127. package/src/assets/svgIcons/ed_acgrid.svg +3 -3
  128. package/src/assets/svgIcons/ed_acgrid_old.svg +4 -4
  129. package/src/assets/svgIcons/ed_arrow_both.svg +3 -3
  130. package/src/assets/svgIcons/ed_arrow_left.svg +3 -3
  131. package/src/assets/svgIcons/ed_arrow_right.svg +3 -3
  132. package/src/assets/svgIcons/ed_battery.svg +3 -3
  133. package/src/assets/svgIcons/ed_batteryacinverter.svg +3 -3
  134. package/src/assets/svgIcons/ed_batteryintegratedinverter.svg +3 -3
  135. package/src/assets/svgIcons/ed_cirquitbreaker.svg +3 -3
  136. package/src/assets/svgIcons/ed_cirquitbreaker_magnetic.svg +3 -3
  137. package/src/assets/svgIcons/ed_cirquitbreaker_thermal.svg +3 -3
  138. package/src/assets/svgIcons/ed_cirquitbreaker_thermal_magnetic.svg +3 -3
  139. package/src/assets/svgIcons/ed_consumption.svg +3 -3
  140. package/src/assets/svgIcons/ed_dc.svg +3 -3
  141. package/src/assets/svgIcons/ed_disconnector.svg +3 -3
  142. package/src/assets/svgIcons/ed_disconnector_fuse.svg +3 -3
  143. package/src/assets/svgIcons/ed_disconnector_fuse_switch.svg +3 -3
  144. package/src/assets/svgIcons/ed_disconnector_loadbreak_switch.svg +3 -3
  145. package/src/assets/svgIcons/ed_disconnector_switch.svg +3 -3
  146. package/src/assets/svgIcons/ed_disconnector_switch_auto_release.svg +3 -3
  147. package/src/assets/svgIcons/ed_energymanagement_rectangle.svg +3 -3
  148. package/src/assets/svgIcons/ed_evcharger.svg +3 -3
  149. package/src/assets/svgIcons/ed_flexiblecomponent_circle.svg +3 -3
  150. package/src/assets/svgIcons/ed_flexiblecomponent_square.svg +3 -3
  151. package/src/assets/svgIcons/ed_fuse.svg +3 -3
  152. package/src/assets/svgIcons/ed_ground.svg +3 -3
  153. package/src/assets/svgIcons/ed_heatpump.svg +3 -3
  154. package/src/assets/svgIcons/ed_icon_battery.svg +3 -3
  155. package/src/assets/svgIcons/ed_icon_circle.svg +3 -3
  156. package/src/assets/svgIcons/ed_icon_heatpump.svg +3 -3
  157. package/src/assets/svgIcons/ed_icon_inverter.svg +8 -8
  158. package/src/assets/svgIcons/ed_icon_m.svg +3 -3
  159. package/src/assets/svgIcons/ed_icon_optimizer.svg +11 -11
  160. package/src/assets/svgIcons/ed_icon_optimizer_path.svg +11 -11
  161. package/src/assets/svgIcons/ed_integratedbatteryinverter.svg +3 -3
  162. package/src/assets/svgIcons/ed_inverter-blank.svg +3 -3
  163. package/src/assets/svgIcons/ed_mainsconnection.svg +3 -3
  164. package/src/assets/svgIcons/ed_meter-blank.svg +3 -3
  165. package/src/assets/svgIcons/ed_meter_arrowleft.svg +3 -3
  166. package/src/assets/svgIcons/ed_meter_arrowright.svg +3 -3
  167. package/src/assets/svgIcons/ed_meter_bidirectional.svg +3 -3
  168. package/src/assets/svgIcons/ed_networkandsystemprotection_double.svg +3 -3
  169. package/src/assets/svgIcons/ed_networkandsystemprotection_single.svg +3 -3
  170. package/src/assets/svgIcons/ed_pvpanel (Stroke).svg +3 -3
  171. package/src/assets/svgIcons/ed_pvpanel.svg +3 -3
  172. package/src/assets/svgIcons/ed_rcd.svg +3 -3
  173. package/src/assets/svgIcons/ed_rcd_simple.svg +3 -3
  174. package/src/assets/svgIcons/ed_spd.svg +3 -3
  175. package/src/assets/svgIcons/ed_stringwithoptimizer.svg +5 -5
  176. package/src/assets/svgIcons/ed_stringwithoutoptimizer.svg +7 -7
  177. package/src/assets/svgIcons/ed_transformer.svg +3 -3
  178. package/src/assets/svgIcons/edit.svg +3 -3
  179. package/src/assets/svgIcons/edit_button.svg +3 -3
  180. package/src/assets/svgIcons/edit_stroke.svg +3 -3
  181. package/src/assets/svgIcons/efs.svg +5 -5
  182. package/src/assets/svgIcons/electricity_tariff.svg +3 -3
  183. package/src/assets/svgIcons/email.svg +3 -3
  184. package/src/assets/svgIcons/ems-1.svg +3 -3
  185. package/src/assets/svgIcons/ems.svg +3 -3
  186. package/src/assets/svgIcons/end_of_the_list.svg +5 -5
  187. package/src/assets/svgIcons/energy_meter.svg +3 -3
  188. package/src/assets/svgIcons/erase.svg +4 -4
  189. package/src/assets/svgIcons/erase_white.svg +4 -4
  190. package/src/assets/svgIcons/expand_all.svg +4 -4
  191. package/src/assets/svgIcons/export_document.svg +3 -3
  192. package/src/assets/svgIcons/external_icon.svg +5 -5
  193. package/src/assets/svgIcons/fav_icon.svg +4 -4
  194. package/src/assets/svgIcons/filter.svg +3 -3
  195. package/src/assets/svgIcons/finance.svg +3 -3
  196. package/src/assets/svgIcons/financing_for_pv-1.svg +5 -5
  197. package/src/assets/svgIcons/financing_for_pv-2.svg +3 -3
  198. package/src/assets/svgIcons/financing_for_pv.svg +3 -3
  199. package/src/assets/svgIcons/finish-1.svg +4 -4
  200. package/src/assets/svgIcons/finish.svg +3 -3
  201. package/src/assets/svgIcons/flatten.svg +11 -11
  202. package/src/assets/svgIcons/flatten_roof.svg +20 -20
  203. package/src/assets/svgIcons/folder.svg +3 -3
  204. package/src/assets/svgIcons/free_technology.svg +3 -3
  205. package/src/assets/svgIcons/ground_symbol.svg +28 -28
  206. package/src/assets/svgIcons/handle.svg +5 -5
  207. package/src/assets/svgIcons/heat_calc.svg +7 -7
  208. package/src/assets/svgIcons/heat_pump.svg +5 -5
  209. package/src/assets/svgIcons/heating_system.svg +3 -3
  210. package/src/assets/svgIcons/height_equalize.svg +3 -3
  211. package/src/assets/svgIcons/height_snap.svg +3 -3
  212. package/src/assets/svgIcons/house.svg +3 -3
  213. package/src/assets/svgIcons/house_3d-1.svg +7 -7
  214. package/src/assets/svgIcons/house_3d.svg +7 -7
  215. package/src/assets/svgIcons/house_sun.svg +3 -3
  216. package/src/assets/svgIcons/hybrid.svg +4 -4
  217. package/src/assets/svgIcons/inclination.svg +2 -2
  218. package/src/assets/svgIcons/info.svg +3 -3
  219. package/src/assets/svgIcons/initial_situation.svg +3 -3
  220. package/src/assets/svgIcons/integrations.svg +3 -3
  221. package/src/assets/svgIcons/intro-tour-1.svg +3 -3
  222. package/src/assets/svgIcons/intro-tour.svg +3 -3
  223. package/src/assets/svgIcons/inverter.svg +3 -3
  224. package/src/assets/svgIcons/italic.svg +3 -3
  225. package/src/assets/svgIcons/k2.svg +4 -4
  226. package/src/assets/svgIcons/kanban_view.svg +6 -6
  227. package/src/assets/svgIcons/key.svg +3 -3
  228. package/src/assets/svgIcons/lake.svg +29 -29
  229. package/src/assets/svgIcons/layers_close.svg +4 -4
  230. package/src/assets/svgIcons/layers_open.svg +4 -4
  231. package/src/assets/svgIcons/lead_marketplace.svg +6 -6
  232. package/src/assets/svgIcons/lead_provider.svg +4 -4
  233. package/src/assets/svgIcons/legend.svg +3 -3
  234. package/src/assets/svgIcons/length_2d.svg +2 -2
  235. package/src/assets/svgIcons/length_3d.svg +4 -4
  236. package/src/assets/svgIcons/length_calculator.svg +2 -2
  237. package/src/assets/svgIcons/length_in_2d_active.svg +12 -12
  238. package/src/assets/svgIcons/length_in_2d_inctive.svg +13 -13
  239. package/src/assets/svgIcons/light_bulb.svg +3 -3
  240. package/src/assets/svgIcons/like.svg +3 -3
  241. package/src/assets/svgIcons/line_graph.svg +3 -3
  242. package/src/assets/svgIcons/local_subsidies.svg +18 -18
  243. package/src/assets/svgIcons/location.svg +3 -3
  244. package/src/assets/svgIcons/lock.svg +3 -3
  245. package/src/assets/svgIcons/logout.svg +3 -3
  246. package/src/assets/svgIcons/loop.svg +3 -3
  247. package/src/assets/svgIcons/low-vegetation.svg +37 -37
  248. package/src/assets/svgIcons/lunch.svg +4 -4
  249. package/src/assets/svgIcons/magic_tool.svg +6 -6
  250. package/src/assets/svgIcons/map_icon.svg +5 -5
  251. package/src/assets/svgIcons/map_settings.svg +3 -3
  252. package/src/assets/svgIcons/margin_tool.svg +4 -4
  253. package/src/assets/svgIcons/meeting.svg +6 -6
  254. package/src/assets/svgIcons/module.svg +3 -3
  255. package/src/assets/svgIcons/move_copy.svg +4 -4
  256. package/src/assets/svgIcons/move_down.svg +3 -3
  257. package/src/assets/svgIcons/move_left.svg +3 -3
  258. package/src/assets/svgIcons/move_right.svg +3 -3
  259. package/src/assets/svgIcons/move_up.svg +3 -3
  260. package/src/assets/svgIcons/new_area_inactive.svg +11 -11
  261. package/src/assets/svgIcons/next.svg +4 -4
  262. package/src/assets/svgIcons/normal-tg.svg +30 -30
  263. package/src/assets/svgIcons/normal-vegetation.svg +53 -53
  264. package/src/assets/svgIcons/not_equal_to.svg +3 -3
  265. package/src/assets/svgIcons/numbered_list.svg +6 -6
  266. package/src/assets/svgIcons/obstacle_tool.svg +8 -8
  267. package/src/assets/svgIcons/obstacle_tool_origin.svg +3 -3
  268. package/src/assets/svgIcons/offset_tool.svg +8 -8
  269. package/src/assets/svgIcons/open-tg.svg +21 -21
  270. package/src/assets/svgIcons/optimizer.svg +3 -3
  271. package/src/assets/svgIcons/order.svg +3 -3
  272. package/src/assets/svgIcons/outline_tool.svg +11 -11
  273. package/src/assets/svgIcons/pan_tool.svg +12 -12
  274. package/src/assets/svgIcons/panels_tool.svg +8 -8
  275. package/src/assets/svgIcons/pen_tool.svg +4 -4
  276. package/src/assets/svgIcons/picker_tool.svg +4 -4
  277. package/src/assets/svgIcons/picture.svg +3 -3
  278. package/src/assets/svgIcons/pin.svg +5 -5
  279. package/src/assets/svgIcons/plus_button.svg +4 -4
  280. package/src/assets/svgIcons/presentation.svg +3 -3
  281. package/src/assets/svgIcons/preview.svg +3 -3
  282. package/src/assets/svgIcons/previous.svg +4 -4
  283. package/src/assets/svgIcons/profile-1.svg +4 -4
  284. package/src/assets/svgIcons/profile.svg +3 -3
  285. package/src/assets/svgIcons/profitability.svg +3 -3
  286. package/src/assets/svgIcons/project_analysis.svg +3 -3
  287. package/src/assets/svgIcons/project_settings.svg +3 -3
  288. package/src/assets/svgIcons/protected-tg.svg +47 -47
  289. package/src/assets/svgIcons/pv.svg +3 -3
  290. package/src/assets/svgIcons/question_mark.svg +3 -3
  291. package/src/assets/svgIcons/question_mark_white.svg +4 -4
  292. package/src/assets/svgIcons/quotations.svg +6 -6
  293. package/src/assets/svgIcons/rectangle.svg +3 -3
  294. package/src/assets/svgIcons/redo.svg +6 -6
  295. package/src/assets/svgIcons/refresh.svg +3 -3
  296. package/src/assets/svgIcons/reorder_string.svg +3 -3
  297. package/src/assets/svgIcons/resizer.svg +5 -5
  298. package/src/assets/svgIcons/roof_layer.svg +3 -3
  299. package/src/assets/svgIcons/rotate_tool.svg +3 -3
  300. package/src/assets/svgIcons/rotate_view.svg +5 -5
  301. package/src/assets/svgIcons/ruler_tool.svg +3 -3
  302. package/src/assets/svgIcons/run_simulation.svg +3 -3
  303. package/src/assets/svgIcons/save.svg +3 -3
  304. package/src/assets/svgIcons/scaling_tool.svg +8 -8
  305. package/src/assets/svgIcons/sea.svg +34 -34
  306. package/src/assets/svgIcons/search.svg +3 -3
  307. package/src/assets/svgIcons/security.svg +3 -3
  308. package/src/assets/svgIcons/settings.svg +3 -3
  309. package/src/assets/svgIcons/show_in_a_new_tab.svg +12 -12
  310. package/src/assets/svgIcons/smartphone.svg +4 -4
  311. package/src/assets/svgIcons/solar_calc.svg +13 -13
  312. package/src/assets/svgIcons/solarmarkt.svg +3 -3
  313. package/src/assets/svgIcons/sorting.svg +4 -4
  314. package/src/assets/svgIcons/split.svg +12 -12
  315. package/src/assets/svgIcons/star.svg +3 -3
  316. package/src/assets/svgIcons/start_of_the_list.svg +5 -5
  317. package/src/assets/svgIcons/strikethrough.svg +4 -4
  318. package/src/assets/svgIcons/string_design.svg +5 -5
  319. package/src/assets/svgIcons/string_directions.svg +10 -10
  320. package/src/assets/svgIcons/subscriptions.svg +3 -3
  321. package/src/assets/svgIcons/subsidies-2.svg +3 -3
  322. package/src/assets/svgIcons/subsidies.svg +3 -3
  323. package/src/assets/svgIcons/subtract_icon.svg +3 -3
  324. package/src/assets/svgIcons/suitcase.svg +3 -3
  325. package/src/assets/svgIcons/summer.svg +3 -3
  326. package/src/assets/svgIcons/switch_polarity.svg +5 -5
  327. package/src/assets/svgIcons/table_view.svg +3 -3
  328. package/src/assets/svgIcons/template_icon_not_clickable.svg +6 -6
  329. package/src/assets/svgIcons/text_column_one.svg +6 -6
  330. package/src/assets/svgIcons/text_column_three.svg +14 -14
  331. package/src/assets/svgIcons/text_column_two.svg +10 -10
  332. package/src/assets/svgIcons/text_icon.svg +3 -3
  333. package/src/assets/svgIcons/transfer.svg +4 -4
  334. package/src/assets/svgIcons/transparent_warning.svg +4 -4
  335. package/src/assets/svgIcons/trim_tool.svg +4 -4
  336. package/src/assets/svgIcons/truck.svg +3 -3
  337. package/src/assets/svgIcons/underlined.svg +3 -3
  338. package/src/assets/svgIcons/undo.svg +6 -6
  339. package/src/assets/svgIcons/uparrow.svg +3 -3
  340. package/src/assets/svgIcons/update.svg +3 -3
  341. package/src/assets/svgIcons/upload_avatar-1.svg +12 -12
  342. package/src/assets/svgIcons/upload_avatar.svg +5 -5
  343. package/src/assets/svgIcons/upload_image.svg +8 -8
  344. package/src/assets/svgIcons/upload_image_tool.svg +7 -7
  345. package/src/assets/svgIcons/variants.svg +3 -3
  346. package/src/assets/svgIcons/vdv.svg +5 -5
  347. package/src/assets/svgIcons/vertical_tool.svg +3 -3
  348. package/src/assets/svgIcons/virtual_storage.svg +3 -3
  349. package/src/assets/svgIcons/warning.svg +4 -4
  350. package/src/assets/svgIcons/warning_triangle.svg +3 -3
  351. package/src/assets/svgIcons/warning_triangle_white.svg +5 -5
  352. package/src/assets/svgIcons/way.svg +5 -5
  353. package/src/assets/svgIcons/wifi.svg +3 -3
  354. package/src/assets/svgIcons/winter.svg +3 -3
  355. package/src/assets/svgIcons/workflow_template.svg +11 -11
  356. package/src/assets/svgIcons//360/237/223/221 Documents/ed_ac.svg" +3 -3
  357. package/src/assets/svgIcons//360/237/223/221 Documents/ed_arrow_both.svg" +7 -7
  358. package/src/assets/svgIcons//360/237/223/221 Documents/ed_arrow_left.svg" +7 -7
  359. package/src/assets/svgIcons//360/237/223/221 Documents/ed_arrow_right.svg" +7 -7
  360. package/src/assets/svgIcons//360/237/223/221 Documents/ed_battery.svg" +4 -4
  361. package/src/assets/svgIcons//360/237/223/221 Documents/ed_batteryacinverter.svg" +5 -5
  362. package/src/assets/svgIcons//360/237/223/221 Documents/ed_batteryintegratedinverter.svg" +5 -5
  363. package/src/assets/svgIcons//360/237/223/221 Documents/ed_cirquitbreaker.svg" +6 -6
  364. package/src/assets/svgIcons//360/237/223/221 Documents/ed_cirquitbreaker_magnetic.svg" +9 -9
  365. package/src/assets/svgIcons//360/237/223/221 Documents/ed_cirquitbreaker_thermal.svg" +5 -5
  366. package/src/assets/svgIcons//360/237/223/221 Documents/ed_cirquitbreaker_thermal_magnetic.svg" +10 -10
  367. package/src/assets/svgIcons//360/237/223/221 Documents/ed_consumption.svg" +5 -5
  368. package/src/assets/svgIcons//360/237/223/221 Documents/ed_dc.svg" +3 -3
  369. package/src/assets/svgIcons//360/237/223/221 Documents/ed_disconnector.svg" +5 -5
  370. package/src/assets/svgIcons//360/237/223/221 Documents/ed_disconnector_fuse.svg" +6 -6
  371. package/src/assets/svgIcons//360/237/223/221 Documents/ed_disconnector_fuse_switch.svg" +7 -7
  372. package/src/assets/svgIcons//360/237/223/221 Documents/ed_disconnector_loadbreak_switch.svg" +7 -7
  373. package/src/assets/svgIcons//360/237/223/221 Documents/ed_disconnector_switch.svg" +6 -6
  374. package/src/assets/svgIcons//360/237/223/221 Documents/ed_disconnector_switch_auto_release.svg" +7 -7
  375. package/src/assets/svgIcons//360/237/223/221 Documents/ed_energymanagement_rectangle.svg" +3 -3
  376. package/src/assets/svgIcons//360/237/223/221 Documents/ed_evcharger.svg" +8 -8
  377. package/src/assets/svgIcons//360/237/223/221 Documents/ed_flexiblecomponent_circle.svg" +3 -3
  378. package/src/assets/svgIcons//360/237/223/221 Documents/ed_flexiblecomponent_square.svg" +3 -3
  379. package/src/assets/svgIcons//360/237/223/221 Documents/ed_fuse.svg" +4 -4
  380. package/src/assets/svgIcons//360/237/223/221 Documents/ed_ground.svg" +6 -6
  381. package/src/assets/svgIcons//360/237/223/221 Documents/ed_heatpump.svg" +4 -4
  382. package/src/assets/svgIcons//360/237/223/221 Documents/ed_icon_battery.svg" +3 -3
  383. package/src/assets/svgIcons//360/237/223/221 Documents/ed_icon_circle.svg" +3 -3
  384. package/src/assets/svgIcons//360/237/223/221 Documents/ed_icon_heatpump.svg" +3 -3
  385. package/src/assets/svgIcons//360/237/223/221 Documents/ed_icon_inverter.svg" +3 -3
  386. package/src/assets/svgIcons//360/237/223/221 Documents/ed_icon_optimizer.svg" +3 -3
  387. package/src/assets/svgIcons//360/237/223/221 Documents/ed_integratedbatteryinverter.svg" +3 -3
  388. package/src/assets/svgIcons//360/237/223/221 Documents/ed_inverter-blank.svg" +3 -3
  389. package/src/assets/svgIcons//360/237/223/221 Documents/ed_mainsconnection.svg" +3 -3
  390. package/src/assets/svgIcons//360/237/223/221 Documents/ed_meter-blank.svg" +3 -3
  391. package/src/assets/svgIcons//360/237/223/221 Documents/ed_meter_arrowleft.svg" +8 -8
  392. package/src/assets/svgIcons//360/237/223/221 Documents/ed_meter_arrowright.svg" +8 -8
  393. package/src/assets/svgIcons//360/237/223/221 Documents/ed_meter_bidirectional.svg" +8 -8
  394. package/src/assets/svgIcons//360/237/223/221 Documents/ed_networkandsystemprotection_double.svg" +15 -15
  395. package/src/assets/svgIcons//360/237/223/221 Documents/ed_networkandsystemprotection_single.svg" +10 -10
  396. package/src/assets/svgIcons//360/237/223/221 Documents/ed_pvpanel.svg" +7 -7
  397. package/src/assets/svgIcons//360/237/223/221 Documents/ed_rcd.svg" +7 -7
  398. package/src/assets/svgIcons//360/237/223/221 Documents/ed_rcd_simple.svg" +4 -4
  399. package/src/assets/svgIcons//360/237/223/221 Documents/ed_spd.svg" +9 -9
  400. package/src/assets/svgIcons//360/237/223/221 Documents/ed_stringwithoptimizer.svg" +5 -5
  401. package/src/assets/svgIcons//360/237/223/221 Documents/ed_stringwithoutoptimizer.svg" +13 -13
  402. package/src/assets/svgIcons//360/237/223/221 Documents/ed_transformer.svg" +6 -6
  403. package/src/assets/tests/__mocks__/iconCache.js +1 -1
  404. package/src/assets/tests/__mocks__/svgMock.js +1 -1
  405. package/src/assets/tests/helpers.js +12 -12
  406. package/src/assets/theme.js +700 -688
  407. package/src/components/addNewButton/AddNewButton.stories.js +17 -17
  408. package/src/components/addNewButton/addNewButton.spec.js +23 -23
  409. package/src/components/addNewButton/index.vue +66 -66
  410. package/src/components/banner/actionBanner/ActionBanner.stories.js +45 -45
  411. package/src/components/banner/actionBanner/actionBanner.spec.js +76 -76
  412. package/src/components/banner/actionBanner/index.vue +86 -86
  413. package/src/components/banner/banner/Banner.stories.js +120 -120
  414. package/src/components/banner/banner/banner.spec.js +149 -149
  415. package/src/components/banner/banner/index.vue +205 -205
  416. package/src/components/banner/infoBanner/InfoBanner.spec.js +57 -57
  417. package/src/components/banner/infoBanner/InfoBanner.stories.js +84 -84
  418. package/src/components/banner/infoBanner/index.vue +97 -97
  419. package/src/components/banner/notificationBanner/index.vue +131 -131
  420. package/src/components/barchart/BottomFields.vue +253 -253
  421. package/src/components/barchart/ChartControls.vue +113 -113
  422. package/src/components/barchart/SelectionBox.vue +150 -150
  423. package/src/components/barchart/composables/index.js +5 -5
  424. package/src/components/barchart/composables/useAxisCalculations.js +104 -104
  425. package/src/components/barchart/composables/useChartData.js +114 -114
  426. package/src/components/barchart/composables/useChartScroll.js +61 -61
  427. package/src/components/barchart/composables/useSelection.js +75 -75
  428. package/src/components/barchart/composables/useTooltip.js +100 -100
  429. package/src/components/barchart/index.vue +385 -385
  430. package/src/components/barchart/styles/bottomFields.js +66 -66
  431. package/src/components/barchart/styles/chart.js +272 -272
  432. package/src/components/barchart/styles/chartControls.js +59 -59
  433. package/src/components/buttons/buttonIcon/ButtonIcon.stories.js +167 -167
  434. package/src/components/buttons/buttonIcon/index.vue +301 -301
  435. package/src/components/buttons/closeButton/CloseButton.stories.js +25 -25
  436. package/src/components/buttons/closeButton/index.vue +62 -62
  437. package/src/components/buttons/mainButton/MainButton.stories.js +145 -145
  438. package/src/components/buttons/mainButton/index.vue +256 -248
  439. package/src/components/buttons/mainButton/mainButton.spec.js +35 -35
  440. package/src/components/buttons/splitButtons/index.vue +86 -86
  441. package/src/components/card/Card.stories.js +79 -79
  442. package/src/components/card/card.spec.js +135 -135
  443. package/src/components/card/index.vue +116 -116
  444. package/src/components/collapsableInfoText/index.vue +127 -127
  445. package/src/components/deleteIcon/DeleteIcon.stories.js +29 -29
  446. package/src/components/deleteIcon/index.vue +78 -78
  447. package/src/components/draggableCard/defaultProps.js +16 -16
  448. package/src/components/draggableCard/draggableCard.spec.js +99 -99
  449. package/src/components/draggableCard/draggableCard.stories.js +135 -135
  450. package/src/components/draggableCard/index.vue +363 -363
  451. package/src/components/draggableInputHandle/index.vue +46 -46
  452. package/src/components/dropdown/Dropdown.stories.js +53 -53
  453. package/src/components/dropdown/index.vue +146 -138
  454. package/src/components/errorMessage/errorMessage.spec.js +34 -34
  455. package/src/components/errorMessage/errorMessage.stories.js +35 -35
  456. package/src/components/errorMessage/index.vue +64 -64
  457. package/src/components/filter/filterSettings.vue +672 -672
  458. package/src/components/filter/index.vue +154 -154
  459. package/src/components/filter/parentDropdown.vue +91 -91
  460. package/src/components/filterComponent/viewFilter.vue +605 -605
  461. package/src/components/filterComponent/viewSettings.vue +281 -281
  462. package/src/components/filterComponent/viewSort.vue +330 -330
  463. package/src/components/icon/Icon.stories.js +220 -220
  464. package/src/components/icon/icon.spec.js +66 -66
  465. package/src/components/icon/iconCache.mjs +23 -23
  466. package/src/components/icon/iconCollection.vue +83 -83
  467. package/src/components/icon/index.vue +240 -240
  468. package/src/components/iconWrapper/index.vue +184 -184
  469. package/src/components/infoCard/InfoCard.stories.js +170 -170
  470. package/src/components/infoCard/defaultProps.js +7 -7
  471. package/src/components/infoCard/index.vue +160 -160
  472. package/src/components/infoCard/infoCard.spec.js +64 -64
  473. package/src/components/infoLabel/index.vue +63 -63
  474. package/src/components/infoText/constants.js +4 -4
  475. package/src/components/infoText/index.vue +645 -645
  476. package/src/components/infoText/infoText.spec.js +67 -67
  477. package/src/components/infoText/infoText.stories.js +48 -48
  478. package/src/components/infoText/placeholder.vue +225 -225
  479. package/src/components/inputs/checkbox/Checkbox.stories.js +63 -63
  480. package/src/components/inputs/checkbox/checkbox.spec.js +109 -109
  481. package/src/components/inputs/checkbox/index.vue +250 -250
  482. package/src/components/inputs/inputNumber/InputNumber.stories.js +150 -150
  483. package/src/components/inputs/inputNumber/index.vue +1006 -1006
  484. package/src/components/inputs/inputNumberQuestion/index.vue +218 -218
  485. package/src/components/inputs/inputText/InputText.stories.js +70 -70
  486. package/src/components/inputs/inputText/index.vue +478 -476
  487. package/src/components/inputs/inputText/inputText.spec.js +588 -588
  488. package/src/components/inputs/radioButton/RadioButton.stories.js +77 -77
  489. package/src/components/inputs/radioButton/defaultProps.js +31 -31
  490. package/src/components/inputs/radioButton/index.vue +336 -336
  491. package/src/components/inputs/radioButton/radioButton.spec.js +306 -306
  492. package/src/components/inputs/searchInput/SearchInput.stories.js +66 -66
  493. package/src/components/inputs/searchInput/defaultProps.js +12 -12
  494. package/src/components/inputs/searchInput/index.vue +181 -181
  495. package/src/components/inputs/searchInput/searchInput.spec.js +64 -64
  496. package/src/components/inputs/select/index.vue +1080 -1080
  497. package/src/components/inputs/select/option/index.vue +176 -176
  498. package/src/components/inputs/select/select.stories.js +58 -58
  499. package/src/components/inputs/slider/index.vue +126 -126
  500. package/src/components/inputs/switchField/index.vue +266 -266
  501. package/src/components/inputs/textAreaInput/TextAreaInput.stories.js +127 -127
  502. package/src/components/inputs/textAreaInput/index.vue +204 -204
  503. package/src/components/inputs/toggle/Toggle.stories.js +77 -77
  504. package/src/components/inputs/toggle/index.vue +322 -322
  505. package/src/components/inputs/toggle/toggle.spec.js +102 -102
  506. package/src/components/label/index.vue +98 -98
  507. package/src/components/markerItem/index.vue +95 -95
  508. package/src/components/modals/actionModal/actionModal.spec.js +52 -52
  509. package/src/components/modals/actionModal/actionModal.stories.js +53 -53
  510. package/src/components/modals/actionModal/index.vue +64 -64
  511. package/src/components/modals/infoModal/index.vue +82 -82
  512. package/src/components/modals/infoModal/infoModal.spec.js +55 -55
  513. package/src/components/modals/infoModal/infoModal.stories.js +47 -47
  514. package/src/components/modals/modal/index.vue +211 -211
  515. package/src/components/modals/modal/modal.stories.js +31 -31
  516. package/src/components/navigationTabs/index.vue +114 -114
  517. package/src/components/pageSubtitle/PageSubtitle.stories.js +58 -58
  518. package/src/components/pageSubtitle/index.vue +78 -78
  519. package/src/components/pageSubtitle/pageSubtitle.spec.js +46 -46
  520. package/src/components/pageTitle/PageTitle.stories.js +95 -95
  521. package/src/components/pageTitle/index.vue +91 -91
  522. package/src/components/pageTitle/pageTitle.spec.js +46 -46
  523. package/src/components/pagination/index.vue +148 -148
  524. package/src/components/paginationV2/index.vue +175 -175
  525. package/src/components/panelRangeInfo/index.vue +196 -196
  526. package/src/components/progressBar/index.vue +116 -125
  527. package/src/components/projectMarker/ProjectMarker.stories.js +130 -130
  528. package/src/components/projectMarker/index.vue +301 -301
  529. package/src/components/rangeSlider/Slider.vue +578 -578
  530. package/src/components/rangeSlider/index.vue +517 -517
  531. package/src/components/rangeSlider/utils/dom.js +49 -49
  532. package/src/components/rangeSlider/utils/fns.js +26 -26
  533. package/src/components/roundTabs/index.vue +107 -107
  534. package/src/components/selectedOptions/index.vue +473 -473
  535. package/src/components/selectedOptions/selectedOptions.spec.js +176 -176
  536. package/src/components/selectedOptions/selectedOptions.stories.js +253 -253
  537. package/src/components/sideMenu/index.vue +325 -325
  538. package/src/components/spinner/Spinner.stories.js +86 -86
  539. package/src/components/spinner/index.vue +129 -129
  540. package/src/components/spinner/spinner.spec.js +69 -69
  541. package/src/components/spinnerGif/SpinnerGif.stories.js +86 -86
  542. package/src/components/spinnerGif/index.vue +98 -98
  543. package/src/components/tableDropdown/TableDropdown.stories.js +192 -192
  544. package/src/components/tableDropdown/index.vue +692 -694
  545. package/src/components/tables/mainTable/MainTable.stories.js +151 -151
  546. package/src/components/tables/mainTable/exampleNested.vue +328 -328
  547. package/src/components/tables/mainTable/index.vue +524 -523
  548. package/src/components/tables/viewTable/index.vue +195 -195
  549. package/src/components/tabsHeader/TabsHeader.stories.js +142 -142
  550. package/src/components/tabsHeader/index.vue +150 -150
  551. package/src/components/threeDots/index.vue +413 -413
  552. package/src/components/videoThumbnail/index.vue +103 -103
  553. package/src/components/videoThumbnail/videoThumbnail.stories.js +106 -106
  554. package/src/helpers/currencyMapping.js +28 -28
  555. package/src/helpers/dateTimeFormatting.js +51 -51
  556. package/src/helpers/isObjectEqual.js +22 -22
  557. package/src/helpers/numberConverter.js +103 -103
  558. package/src/helpers/toLocaleNumber.js +11 -11
  559. package/src/helpers/translateLang.js +199 -199
  560. package/src/main.js +8 -8
  561. package/src/mixins/inputValidations.js +97 -97
  562. package/src/router/dynamicRoutes.js +23 -23
  563. package/src/stories/Button.stories.js +48 -48
  564. package/src/stories/Button.vue +52 -52
  565. package/src/stories/Configure.mdx +364 -364
  566. package/src/stories/Header.stories.js +41 -41
  567. package/src/stories/Header.vue +59 -59
  568. package/src/stories/Page.stories.js +30 -30
  569. package/src/stories/Page.vue +83 -83
  570. package/src/stories/button.css +30 -30
  571. package/src/stories/header.css +32 -32
  572. package/src/stories/page.css +69 -69
  573. package/src/utils/index.js +12 -12
@@ -1,306 +1,306 @@
1
- import { mount, DOMWrapper } from '@vue/test-utils'
2
- import RadioButton from '@/components/inputs/radioButton'
3
- import defaultRadioButtonProps from './defaultProps'
4
- import theme from '@/assets/theme'
5
-
6
- jest.mock('@/components/icon/iconCache.mjs', () => ({
7
- // need to mock this due to how jest handles import.meta
8
- fetchIcon: jest.fn(() => Promise.resolve('mocked-icon-url.svg')),
9
- }))
10
- jest.mock('../../../assets/icons/search_icon.png', () => 'search_icon.png')
11
-
12
- describe('RadioButton.vue', () => {
13
- const radioButtons = mount(RadioButton, {
14
- props: defaultRadioButtonProps,
15
- global: {
16
- provide: {
17
- theme,
18
- },
19
- },
20
- })
21
- function findRadioWrappersByCriteria(criteria) {
22
- // criteria === ['active', ..., 'hasImage'], can include any number of criteria
23
- // This function is used for getting a list of
24
- // RadioWrapper components which matches
25
- // all the requested criteria (conjunctive filtering).
26
- // Make sure that criteria don't contradict each other.
27
- // List of possible criteria =
28
- // - active || disabled
29
- // - checked || unchecked
30
- // - hasInfoIcon
31
- // - hasImage
32
-
33
- function getParentRadioWrapper(element) {
34
- // function is used for getting a parent RadioWrapper component
35
- const radioWrapper = element.element.closest(
36
- '[data-test-id^="radioWrapper_"]'
37
- )
38
- return radioWrapper ? new DOMWrapper(radioWrapper) : null
39
- }
40
-
41
- const elementsWithTestIds = radioButtons.findAll('[data-test-id]')
42
- let resultsObject = {}
43
-
44
- criteria.forEach((criterion) => {
45
- resultsObject[criterion] = []
46
- if (criterion === 'active' || criterion === 'disabled') {
47
- const criteriaRelatedElements = elementsWithTestIds.filter((element) =>
48
- element.attributes('data-test-id').startsWith('radioInput_')
49
- )
50
- criteriaRelatedElements.forEach((el) => {
51
- const element = el.element
52
- if (criterion === 'active' ? !element.disabled : element.disabled) {
53
- resultsObject[criterion].push(getParentRadioWrapper(el))
54
- }
55
- })
56
- }
57
- if (criterion === 'checked' || criterion === 'unchecked') {
58
- const criteriaRelatedElements = elementsWithTestIds.filter((element) =>
59
- element.attributes('data-test-id').startsWith('radioInput_')
60
- )
61
- criteriaRelatedElements.forEach((el) => {
62
- const element = el.element
63
- if (criterion === 'checked' ? element.checked : !element.checked) {
64
- resultsObject[criterion].push(getParentRadioWrapper(el))
65
- }
66
- })
67
- }
68
- if (criterion === 'hasInfoIcon') {
69
- const criteriaRelatedElements = elementsWithTestIds.filter((element) =>
70
- element.attributes('data-test-id').startsWith('radioInfo_')
71
- )
72
- criteriaRelatedElements.forEach((element) => {
73
- resultsObject[criterion].push(getParentRadioWrapper(element))
74
- })
75
- }
76
- if (criterion === 'hasImage') {
77
- const criteriaRelatedElements = elementsWithTestIds.filter((element) =>
78
- element.attributes('data-test-id').startsWith('radioOpenImage_')
79
- )
80
- criteriaRelatedElements.forEach((element) => {
81
- resultsObject[criterion].push(getParentRadioWrapper(element))
82
- })
83
- }
84
- })
85
-
86
- let resultArray = []
87
- Object.keys(resultsObject).forEach((criterion, index) => {
88
- if (index === 0) {
89
- resultArray = [...resultsObject[criterion]]
90
- } else {
91
- resultArray = resultArray.filter((element) =>
92
- resultsObject[criterion]
93
- .map((item) => item.attributes('data-test-id'))
94
- .includes(element.attributes('data-test-id'))
95
- )
96
- }
97
- })
98
-
99
- return resultArray
100
- }
101
-
102
- it('Radio buttons are rendered and emit correct payload on change', async () => {
103
- //check that all the options have been rendered
104
- let radioBtnWrappers = radioButtons.findAll('[data-test-id]')
105
- radioBtnWrappers = radioBtnWrappers.filter((wrapper) =>
106
- wrapper.attributes('data-test-id').startsWith('radioWrapper_')
107
- )
108
- const numberOfOptions = radioButtons.props('options').length
109
- expect(radioBtnWrappers).toHaveLength(numberOfOptions)
110
-
111
- // check that the selected element exists and there is only a single copy of it and has correct value
112
- const checkedWrapperArray = findRadioWrappersByCriteria(['checked'])
113
- expect(checkedWrapperArray.length).toBe(1)
114
- const checkedWrapper = checkedWrapperArray[0]
115
- const checkedRadioInput = checkedWrapper.find('input[type="radio"]')
116
- const defaultValueFromProps = radioButtons.props('selectedOption')
117
- expect(checkedRadioInput.attributes('value')).toBe(defaultValueFromProps)
118
-
119
- // Log attributes to see what is rendered (commented out just for reference)
120
- // console.log('checkedRadioInput attributes', checkedRadioInput.attributes())
121
-
122
- // Test the label
123
- const labelOfDefaultValue = radioButtons
124
- .props('options')
125
- .find((option) => option.value === defaultValueFromProps).label
126
- expect(checkedWrapper.text()).toContain(labelOfDefaultValue)
127
-
128
- // Test the click on unselected active element
129
- const uncheckedWrapperArray = findRadioWrappersByCriteria([
130
- 'unchecked',
131
- 'active',
132
- ])
133
- const expectedValueOfEmittedEvent = uncheckedWrapperArray[0]
134
- .attributes('data-test-id')
135
- .replace('radioWrapper_', '')
136
- const uncheckedLabelWrapper = uncheckedWrapperArray[0].find('label')
137
- await uncheckedLabelWrapper.trigger('click')
138
- expect(radioButtons.emitted('on-radio-change')).toBeTruthy()
139
- const emittedEvents = radioButtons.emitted('on-radio-change')
140
- expect(emittedEvents).toHaveLength(1) // Check if the event was emitted exactly once
141
- // Check the payload of the event
142
- expect(emittedEvents[emittedEvents.length - 1]).toEqual([
143
- expectedValueOfEmittedEvent,
144
- ])
145
- await radioButtons.setProps({ selectedOption: expectedValueOfEmittedEvent })
146
- }),
147
- it('click on disabled element (|| selected element || info icon || image) does not emit anything', async () => {
148
- // Remember the number of emitted events before triggering clicks
149
- const initialNumberOfEvents =
150
- radioButtons.emitted('on-radio-change')?.length || 0
151
-
152
- // Test RadioWrapper with disabled element
153
- const disabledWrapperArray = findRadioWrappersByCriteria(['disabled'])
154
- if (disabledWrapperArray.length > 0) {
155
- const disabledLabelWrapper = disabledWrapperArray[0].find('label')
156
- if (disabledLabelWrapper.exists()) {
157
- await disabledLabelWrapper.trigger('click')
158
- // Check if we still have the same number of emitted events as at the beginning
159
- expect(radioButtons.emitted('on-radio-change')?.length || 0).toBe(
160
- initialNumberOfEvents
161
- )
162
- }
163
- }
164
-
165
- // Get RadioWrapper with selected element
166
- const checkedWrapperArray = findRadioWrappersByCriteria(['checked'])
167
- if (checkedWrapperArray.length > 0) {
168
- const checkedLabelWrapper = checkedWrapperArray[0].find('label')
169
- if (checkedLabelWrapper.exists()) {
170
- await checkedLabelWrapper.trigger('click')
171
- // Check if we still have the same number of emitted events as at the beginning
172
- expect(radioButtons.emitted('on-radio-change')?.length || 0).toBe(
173
- initialNumberOfEvents
174
- )
175
- }
176
- }
177
-
178
- // Get RadioWrapper with info icon
179
- const arrayOfWrappersWithInfoIcons = findRadioWrappersByCriteria([
180
- 'active',
181
- 'unchecked',
182
- 'hasInfoIcon',
183
- ])
184
- if (arrayOfWrappersWithInfoIcons.length > 0) {
185
- const infoIconForClick = arrayOfWrappersWithInfoIcons[0].find(
186
- '[data-test-id="infoText_trigger"]'
187
- )
188
- if (infoIconForClick.exists()) {
189
- await infoIconForClick.trigger('click')
190
- // Check if we still have the same number of emitted events as at the beginning
191
- expect(radioButtons.emitted('on-radio-change')?.length || 0).toBe(
192
- initialNumberOfEvents
193
- )
194
- }
195
- }
196
-
197
- // Get RadioWrapper with image
198
- const arrayOfWrappersWithImage = findRadioWrappersByCriteria([
199
- 'active',
200
- 'unchecked',
201
- 'hasImage',
202
- ])
203
- if (arrayOfWrappersWithImage.length > 0) {
204
- const testedRadioWrapperWithImage = arrayOfWrappersWithImage[0]
205
- const openImageWrapperTestId = testedRadioWrapperWithImage
206
- .attributes('data-test-id')
207
- .replace('radioWrapper_', 'radioOpenImage_')
208
- const openImageWrapper = testedRadioWrapperWithImage.find(
209
- `[data-test-id="${openImageWrapperTestId}"]`
210
- )
211
- if (openImageWrapper.exists()) {
212
- await openImageWrapper.trigger('click')
213
- // Check if we still have the same number of emitted events as at the beginning
214
- expect(radioButtons.emitted('on-radio-change')?.length || 0).toBe(
215
- initialNumberOfEvents
216
- )
217
-
218
- // Since we just clicked on image miniature
219
- // lets check has the corresponding modal been opened
220
- // and is the correct image displayed
221
- const imageModalWrapperTestId = testedRadioWrapperWithImage
222
- .attributes('data-test-id')
223
- .replace('radioWrapper_', 'radioModal_')
224
- const imageModalWrapper = testedRadioWrapperWithImage.find(
225
- `[data-test-id="${imageModalWrapperTestId}"]`
226
- )
227
- if (imageModalWrapper.exists()) {
228
- expect(imageModalWrapper.attributes('class')).toContain('visible')
229
- const imageWrapperTestId = testedRadioWrapperWithImage
230
- .attributes('data-test-id')
231
- .replace('radioWrapper_', 'radioImage_')
232
- const imageWrapper = testedRadioWrapperWithImage.find(
233
- `[data-test-id="${imageWrapperTestId}"]`
234
- )
235
- if (imageWrapper.exists()) {
236
- const expectedImageSrc = imageWrapper.attributes('src')
237
- const modalImage = imageModalWrapper.find('img')
238
- if (modalImage.exists()) {
239
- const modalImageSrc = modalImage.attributes('src')
240
- expect(modalImageSrc).toBe(expectedImageSrc)
241
- }
242
- }
243
- //Close the modal
244
- const closeButton = radioButtons.find('.visible .close')
245
- if (closeButton.exists()) {
246
- await closeButton.trigger('click')
247
- await radioButtons.vm.$nextTick()
248
- expect(imageModalWrapper.attributes('class')).toContain('hidden')
249
- }
250
- }
251
- }
252
- }
253
- }),
254
- it('test hover on Info Icon', async () => {
255
- // Get RadioWrapper with Info Icon
256
- const arrayOfWrappersWithInfoIcon = findRadioWrappersByCriteria([
257
- 'hasInfoIcon',
258
- ])
259
-
260
- // Ensure we have at least one wrapper with Info Icon
261
- expect(arrayOfWrappersWithInfoIcon.length).toBeGreaterThan(0)
262
-
263
- //Select tested item and get expected text within the info badge
264
- const testedRadioWrapper =
265
- arrayOfWrappersWithInfoIcon[arrayOfWrappersWithInfoIcon.length - 1]
266
- const valueOfTestedRadioWrapper = testedRadioWrapper
267
- .attributes('data-test-id')
268
- .replace('radioWrapper_', '')
269
- const expectedText = defaultRadioButtonProps.options.find(
270
- (el) => el.value === valueOfTestedRadioWrapper
271
- ).infoText
272
- const iconForHover = testedRadioWrapper.find(
273
- '[data-test-id="infoText_trigger"]'
274
- )
275
-
276
- // Check if the icon exists before triggering the event
277
- // expect(iconForHover.exists()).toBe(true)
278
-
279
- if (iconForHover.exists()) {
280
- await iconForHover.trigger('mouseenter')
281
- await radioButtons.vm.$nextTick() // Wait for the next tick to ensure reactivity
282
- expect(testedRadioWrapper.text()).toContain(expectedText)
283
- }
284
- }),
285
- it('Test the click again after all the manipulations', async () => {
286
- const uncheckedWrapperArray = findRadioWrappersByCriteria([
287
- 'unchecked',
288
- 'active',
289
- ])
290
- const expectedValueOfEmittedEvent = uncheckedWrapperArray[0]
291
- .attributes('data-test-id')
292
- .replace('radioWrapper_', '')
293
- const uncheckedLabelWrapper = uncheckedWrapperArray[0].find('label')
294
- await uncheckedLabelWrapper.trigger('click')
295
- expect(radioButtons.emitted('on-radio-change')).toBeTruthy()
296
- const emittedEvents = radioButtons.emitted('on-radio-change')
297
- expect(emittedEvents).toHaveLength(2) // Check that this is just 2nd emitted event
298
- // Check the payload of the event
299
- expect(emittedEvents[emittedEvents.length - 1]).toEqual([
300
- expectedValueOfEmittedEvent,
301
- ])
302
- await radioButtons.setProps({
303
- selectedOption: expectedValueOfEmittedEvent,
304
- })
305
- })
306
- })
1
+ import { mount, DOMWrapper } from '@vue/test-utils'
2
+ import RadioButton from '@/components/inputs/radioButton'
3
+ import defaultRadioButtonProps from './defaultProps'
4
+ import theme from '@/assets/theme'
5
+
6
+ jest.mock('@/components/icon/iconCache.mjs', () => ({
7
+ // need to mock this due to how jest handles import.meta
8
+ fetchIcon: jest.fn(() => Promise.resolve('mocked-icon-url.svg')),
9
+ }))
10
+ jest.mock('../../../assets/icons/search_icon.png', () => 'search_icon.png')
11
+
12
+ describe('RadioButton.vue', () => {
13
+ const radioButtons = mount(RadioButton, {
14
+ props: defaultRadioButtonProps,
15
+ global: {
16
+ provide: {
17
+ theme,
18
+ },
19
+ },
20
+ })
21
+ function findRadioWrappersByCriteria(criteria) {
22
+ // criteria === ['active', ..., 'hasImage'], can include any number of criteria
23
+ // This function is used for getting a list of
24
+ // RadioWrapper components which matches
25
+ // all the requested criteria (conjunctive filtering).
26
+ // Make sure that criteria don't contradict each other.
27
+ // List of possible criteria =
28
+ // - active || disabled
29
+ // - checked || unchecked
30
+ // - hasInfoIcon
31
+ // - hasImage
32
+
33
+ function getParentRadioWrapper(element) {
34
+ // function is used for getting a parent RadioWrapper component
35
+ const radioWrapper = element.element.closest(
36
+ '[data-test-id^="radioWrapper_"]'
37
+ )
38
+ return radioWrapper ? new DOMWrapper(radioWrapper) : null
39
+ }
40
+
41
+ const elementsWithTestIds = radioButtons.findAll('[data-test-id]')
42
+ let resultsObject = {}
43
+
44
+ criteria.forEach((criterion) => {
45
+ resultsObject[criterion] = []
46
+ if (criterion === 'active' || criterion === 'disabled') {
47
+ const criteriaRelatedElements = elementsWithTestIds.filter((element) =>
48
+ element.attributes('data-test-id').startsWith('radioInput_')
49
+ )
50
+ criteriaRelatedElements.forEach((el) => {
51
+ const element = el.element
52
+ if (criterion === 'active' ? !element.disabled : element.disabled) {
53
+ resultsObject[criterion].push(getParentRadioWrapper(el))
54
+ }
55
+ })
56
+ }
57
+ if (criterion === 'checked' || criterion === 'unchecked') {
58
+ const criteriaRelatedElements = elementsWithTestIds.filter((element) =>
59
+ element.attributes('data-test-id').startsWith('radioInput_')
60
+ )
61
+ criteriaRelatedElements.forEach((el) => {
62
+ const element = el.element
63
+ if (criterion === 'checked' ? element.checked : !element.checked) {
64
+ resultsObject[criterion].push(getParentRadioWrapper(el))
65
+ }
66
+ })
67
+ }
68
+ if (criterion === 'hasInfoIcon') {
69
+ const criteriaRelatedElements = elementsWithTestIds.filter((element) =>
70
+ element.attributes('data-test-id').startsWith('radioInfo_')
71
+ )
72
+ criteriaRelatedElements.forEach((element) => {
73
+ resultsObject[criterion].push(getParentRadioWrapper(element))
74
+ })
75
+ }
76
+ if (criterion === 'hasImage') {
77
+ const criteriaRelatedElements = elementsWithTestIds.filter((element) =>
78
+ element.attributes('data-test-id').startsWith('radioOpenImage_')
79
+ )
80
+ criteriaRelatedElements.forEach((element) => {
81
+ resultsObject[criterion].push(getParentRadioWrapper(element))
82
+ })
83
+ }
84
+ })
85
+
86
+ let resultArray = []
87
+ Object.keys(resultsObject).forEach((criterion, index) => {
88
+ if (index === 0) {
89
+ resultArray = [...resultsObject[criterion]]
90
+ } else {
91
+ resultArray = resultArray.filter((element) =>
92
+ resultsObject[criterion]
93
+ .map((item) => item.attributes('data-test-id'))
94
+ .includes(element.attributes('data-test-id'))
95
+ )
96
+ }
97
+ })
98
+
99
+ return resultArray
100
+ }
101
+
102
+ it('Radio buttons are rendered and emit correct payload on change', async () => {
103
+ //check that all the options have been rendered
104
+ let radioBtnWrappers = radioButtons.findAll('[data-test-id]')
105
+ radioBtnWrappers = radioBtnWrappers.filter((wrapper) =>
106
+ wrapper.attributes('data-test-id').startsWith('radioWrapper_')
107
+ )
108
+ const numberOfOptions = radioButtons.props('options').length
109
+ expect(radioBtnWrappers).toHaveLength(numberOfOptions)
110
+
111
+ // check that the selected element exists and there is only a single copy of it and has correct value
112
+ const checkedWrapperArray = findRadioWrappersByCriteria(['checked'])
113
+ expect(checkedWrapperArray.length).toBe(1)
114
+ const checkedWrapper = checkedWrapperArray[0]
115
+ const checkedRadioInput = checkedWrapper.find('input[type="radio"]')
116
+ const defaultValueFromProps = radioButtons.props('selectedOption')
117
+ expect(checkedRadioInput.attributes('value')).toBe(defaultValueFromProps)
118
+
119
+ // Log attributes to see what is rendered (commented out just for reference)
120
+ // console.log('checkedRadioInput attributes', checkedRadioInput.attributes())
121
+
122
+ // Test the label
123
+ const labelOfDefaultValue = radioButtons
124
+ .props('options')
125
+ .find((option) => option.value === defaultValueFromProps).label
126
+ expect(checkedWrapper.text()).toContain(labelOfDefaultValue)
127
+
128
+ // Test the click on unselected active element
129
+ const uncheckedWrapperArray = findRadioWrappersByCriteria([
130
+ 'unchecked',
131
+ 'active',
132
+ ])
133
+ const expectedValueOfEmittedEvent = uncheckedWrapperArray[0]
134
+ .attributes('data-test-id')
135
+ .replace('radioWrapper_', '')
136
+ const uncheckedLabelWrapper = uncheckedWrapperArray[0].find('label')
137
+ await uncheckedLabelWrapper.trigger('click')
138
+ expect(radioButtons.emitted('on-radio-change')).toBeTruthy()
139
+ const emittedEvents = radioButtons.emitted('on-radio-change')
140
+ expect(emittedEvents).toHaveLength(1) // Check if the event was emitted exactly once
141
+ // Check the payload of the event
142
+ expect(emittedEvents[emittedEvents.length - 1]).toEqual([
143
+ expectedValueOfEmittedEvent,
144
+ ])
145
+ await radioButtons.setProps({ selectedOption: expectedValueOfEmittedEvent })
146
+ }),
147
+ it('click on disabled element (|| selected element || info icon || image) does not emit anything', async () => {
148
+ // Remember the number of emitted events before triggering clicks
149
+ const initialNumberOfEvents =
150
+ radioButtons.emitted('on-radio-change')?.length || 0
151
+
152
+ // Test RadioWrapper with disabled element
153
+ const disabledWrapperArray = findRadioWrappersByCriteria(['disabled'])
154
+ if (disabledWrapperArray.length > 0) {
155
+ const disabledLabelWrapper = disabledWrapperArray[0].find('label')
156
+ if (disabledLabelWrapper.exists()) {
157
+ await disabledLabelWrapper.trigger('click')
158
+ // Check if we still have the same number of emitted events as at the beginning
159
+ expect(radioButtons.emitted('on-radio-change')?.length || 0).toBe(
160
+ initialNumberOfEvents
161
+ )
162
+ }
163
+ }
164
+
165
+ // Get RadioWrapper with selected element
166
+ const checkedWrapperArray = findRadioWrappersByCriteria(['checked'])
167
+ if (checkedWrapperArray.length > 0) {
168
+ const checkedLabelWrapper = checkedWrapperArray[0].find('label')
169
+ if (checkedLabelWrapper.exists()) {
170
+ await checkedLabelWrapper.trigger('click')
171
+ // Check if we still have the same number of emitted events as at the beginning
172
+ expect(radioButtons.emitted('on-radio-change')?.length || 0).toBe(
173
+ initialNumberOfEvents
174
+ )
175
+ }
176
+ }
177
+
178
+ // Get RadioWrapper with info icon
179
+ const arrayOfWrappersWithInfoIcons = findRadioWrappersByCriteria([
180
+ 'active',
181
+ 'unchecked',
182
+ 'hasInfoIcon',
183
+ ])
184
+ if (arrayOfWrappersWithInfoIcons.length > 0) {
185
+ const infoIconForClick = arrayOfWrappersWithInfoIcons[0].find(
186
+ '[data-test-id="infoText_trigger"]'
187
+ )
188
+ if (infoIconForClick.exists()) {
189
+ await infoIconForClick.trigger('click')
190
+ // Check if we still have the same number of emitted events as at the beginning
191
+ expect(radioButtons.emitted('on-radio-change')?.length || 0).toBe(
192
+ initialNumberOfEvents
193
+ )
194
+ }
195
+ }
196
+
197
+ // Get RadioWrapper with image
198
+ const arrayOfWrappersWithImage = findRadioWrappersByCriteria([
199
+ 'active',
200
+ 'unchecked',
201
+ 'hasImage',
202
+ ])
203
+ if (arrayOfWrappersWithImage.length > 0) {
204
+ const testedRadioWrapperWithImage = arrayOfWrappersWithImage[0]
205
+ const openImageWrapperTestId = testedRadioWrapperWithImage
206
+ .attributes('data-test-id')
207
+ .replace('radioWrapper_', 'radioOpenImage_')
208
+ const openImageWrapper = testedRadioWrapperWithImage.find(
209
+ `[data-test-id="${openImageWrapperTestId}"]`
210
+ )
211
+ if (openImageWrapper.exists()) {
212
+ await openImageWrapper.trigger('click')
213
+ // Check if we still have the same number of emitted events as at the beginning
214
+ expect(radioButtons.emitted('on-radio-change')?.length || 0).toBe(
215
+ initialNumberOfEvents
216
+ )
217
+
218
+ // Since we just clicked on image miniature
219
+ // lets check has the corresponding modal been opened
220
+ // and is the correct image displayed
221
+ const imageModalWrapperTestId = testedRadioWrapperWithImage
222
+ .attributes('data-test-id')
223
+ .replace('radioWrapper_', 'radioModal_')
224
+ const imageModalWrapper = testedRadioWrapperWithImage.find(
225
+ `[data-test-id="${imageModalWrapperTestId}"]`
226
+ )
227
+ if (imageModalWrapper.exists()) {
228
+ expect(imageModalWrapper.attributes('class')).toContain('visible')
229
+ const imageWrapperTestId = testedRadioWrapperWithImage
230
+ .attributes('data-test-id')
231
+ .replace('radioWrapper_', 'radioImage_')
232
+ const imageWrapper = testedRadioWrapperWithImage.find(
233
+ `[data-test-id="${imageWrapperTestId}"]`
234
+ )
235
+ if (imageWrapper.exists()) {
236
+ const expectedImageSrc = imageWrapper.attributes('src')
237
+ const modalImage = imageModalWrapper.find('img')
238
+ if (modalImage.exists()) {
239
+ const modalImageSrc = modalImage.attributes('src')
240
+ expect(modalImageSrc).toBe(expectedImageSrc)
241
+ }
242
+ }
243
+ //Close the modal
244
+ const closeButton = radioButtons.find('.visible .close')
245
+ if (closeButton.exists()) {
246
+ await closeButton.trigger('click')
247
+ await radioButtons.vm.$nextTick()
248
+ expect(imageModalWrapper.attributes('class')).toContain('hidden')
249
+ }
250
+ }
251
+ }
252
+ }
253
+ }),
254
+ it('test hover on Info Icon', async () => {
255
+ // Get RadioWrapper with Info Icon
256
+ const arrayOfWrappersWithInfoIcon = findRadioWrappersByCriteria([
257
+ 'hasInfoIcon',
258
+ ])
259
+
260
+ // Ensure we have at least one wrapper with Info Icon
261
+ expect(arrayOfWrappersWithInfoIcon.length).toBeGreaterThan(0)
262
+
263
+ //Select tested item and get expected text within the info badge
264
+ const testedRadioWrapper =
265
+ arrayOfWrappersWithInfoIcon[arrayOfWrappersWithInfoIcon.length - 1]
266
+ const valueOfTestedRadioWrapper = testedRadioWrapper
267
+ .attributes('data-test-id')
268
+ .replace('radioWrapper_', '')
269
+ const expectedText = defaultRadioButtonProps.options.find(
270
+ (el) => el.value === valueOfTestedRadioWrapper
271
+ ).infoText
272
+ const iconForHover = testedRadioWrapper.find(
273
+ '[data-test-id="infoText_trigger"]'
274
+ )
275
+
276
+ // Check if the icon exists before triggering the event
277
+ // expect(iconForHover.exists()).toBe(true)
278
+
279
+ if (iconForHover.exists()) {
280
+ await iconForHover.trigger('mouseenter')
281
+ await radioButtons.vm.$nextTick() // Wait for the next tick to ensure reactivity
282
+ expect(testedRadioWrapper.text()).toContain(expectedText)
283
+ }
284
+ }),
285
+ it('Test the click again after all the manipulations', async () => {
286
+ const uncheckedWrapperArray = findRadioWrappersByCriteria([
287
+ 'unchecked',
288
+ 'active',
289
+ ])
290
+ const expectedValueOfEmittedEvent = uncheckedWrapperArray[0]
291
+ .attributes('data-test-id')
292
+ .replace('radioWrapper_', '')
293
+ const uncheckedLabelWrapper = uncheckedWrapperArray[0].find('label')
294
+ await uncheckedLabelWrapper.trigger('click')
295
+ expect(radioButtons.emitted('on-radio-change')).toBeTruthy()
296
+ const emittedEvents = radioButtons.emitted('on-radio-change')
297
+ expect(emittedEvents).toHaveLength(2) // Check that this is just 2nd emitted event
298
+ // Check the payload of the event
299
+ expect(emittedEvents[emittedEvents.length - 1]).toEqual([
300
+ expectedValueOfEmittedEvent,
301
+ ])
302
+ await radioButtons.setProps({
303
+ selectedOption: expectedValueOfEmittedEvent,
304
+ })
305
+ })
306
+ })