@eturnity/eturnity_reusable_components 7.51.10 → 7.51.11-EPDM-12810.1

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 (386) hide show
  1. package/README.md +29 -29
  2. package/package.json +84 -84
  3. package/src/App.vue +30 -30
  4. package/src/Test.vue +128 -128
  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/accept.svg +5 -5
  25. package/src/assets/svgIcons/activate_panels_active.svg +22 -22
  26. package/src/assets/svgIcons/activate_panels_inactive.svg +20 -20
  27. package/src/assets/svgIcons/add_icon-1.svg +3 -3
  28. package/src/assets/svgIcons/add_icon.svg +4 -4
  29. package/src/assets/svgIcons/address_book.svg +3 -3
  30. package/src/assets/svgIcons/adjust_roof.svg +6 -6
  31. package/src/assets/svgIcons/after_sale_as_a_service.svg +6 -6
  32. package/src/assets/svgIcons/all_good.svg +3 -3
  33. package/src/assets/svgIcons/angle_active.svg +5 -5
  34. package/src/assets/svgIcons/angle_inactive.svg +4 -4
  35. package/src/assets/svgIcons/area_active.svg +11 -11
  36. package/src/assets/svgIcons/area_inactive.svg +26 -26
  37. package/src/assets/svgIcons/areas_tool.svg +14 -14
  38. package/src/assets/svgIcons/arrow_down.svg +3 -3
  39. package/src/assets/svgIcons/arrow_left.svg +4 -4
  40. package/src/assets/svgIcons/arrow_right.svg +4 -4
  41. package/src/assets/svgIcons/arrow_up.svg +3 -3
  42. package/src/assets/svgIcons/attachment.svg +3 -3
  43. package/src/assets/svgIcons/base_layer.svg +3 -3
  44. package/src/assets/svgIcons/battery.svg +3 -3
  45. package/src/assets/svgIcons/bell.svg +3 -3
  46. package/src/assets/svgIcons/bell_alt.svg +3 -0
  47. package/src/assets/svgIcons/bexio.svg +4 -4
  48. package/src/assets/svgIcons/bold.svg +3 -3
  49. package/src/assets/svgIcons/bom.svg +3 -3
  50. package/src/assets/svgIcons/bom_generation.svg +10 -10
  51. package/src/assets/svgIcons/bookmaker.svg +3 -3
  52. package/src/assets/svgIcons/bubble.svg +3 -3
  53. package/src/assets/svgIcons/bug.svg +5 -5
  54. package/src/assets/svgIcons/buildings.svg +55 -55
  55. package/src/assets/svgIcons/bullet_list.svg +8 -8
  56. package/src/assets/svgIcons/calendar.svg +7 -7
  57. package/src/assets/svgIcons/calendar_icon.svg +7 -7
  58. package/src/assets/svgIcons/call.svg +3 -3
  59. package/src/assets/svgIcons/camera.svg +3 -3
  60. package/src/assets/svgIcons/car.svg +3 -3
  61. package/src/assets/svgIcons/cart.svg +3 -3
  62. package/src/assets/svgIcons/charger_icon_white.svg +44 -44
  63. package/src/assets/svgIcons/checkbox.svg +3 -3
  64. package/src/assets/svgIcons/checkmark.svg +3 -3
  65. package/src/assets/svgIcons/clear_formatting.svg +7 -7
  66. package/src/assets/svgIcons/clickable_info.svg +4 -4
  67. package/src/assets/svgIcons/clip.svg +3 -3
  68. package/src/assets/svgIcons/clock.svg +17 -17
  69. package/src/assets/svgIcons/clock_full.svg +3 -3
  70. package/src/assets/svgIcons/close_for_modals,_tool_tips.svg +4 -4
  71. package/src/assets/svgIcons/co_branding.svg +5 -5
  72. package/src/assets/svgIcons/collapse.svg +4 -4
  73. package/src/assets/svgIcons/collapse_all.svg +3 -3
  74. package/src/assets/svgIcons/collections.svg +3 -3
  75. package/src/assets/svgIcons/component_library.svg +7 -7
  76. package/src/assets/svgIcons/consumption_tariffs.svg +43 -43
  77. package/src/assets/svgIcons/context_menu-1.svg +6 -6
  78. package/src/assets/svgIcons/context_menu-2.svg +5 -5
  79. package/src/assets/svgIcons/context_menu.svg +5 -5
  80. package/src/assets/svgIcons/context_menu_tabs.svg +5 -5
  81. package/src/assets/svgIcons/cross.svg +4 -4
  82. package/src/assets/svgIcons/current_variant.svg +4 -4
  83. package/src/assets/svgIcons/dashboard.svg +3 -3
  84. package/src/assets/svgIcons/data_transfer.svg +3 -3
  85. package/src/assets/svgIcons/deadline.svg +4 -4
  86. package/src/assets/svgIcons/deal_flow.svg +5 -5
  87. package/src/assets/svgIcons/delete.svg +4 -4
  88. package/src/assets/svgIcons/delete_area_active.svg +16 -16
  89. package/src/assets/svgIcons/delete_area_inactive.svg +15 -15
  90. package/src/assets/svgIcons/direction_active-1.svg +12 -12
  91. package/src/assets/svgIcons/direction_active.svg +5 -5
  92. package/src/assets/svgIcons/direction_arrow.svg +4 -4
  93. package/src/assets/svgIcons/direction_inactive.svg +4 -4
  94. package/src/assets/svgIcons/dislike.svg +3 -3
  95. package/src/assets/svgIcons/distance_tool.svg +8 -8
  96. package/src/assets/svgIcons/distances_active.svg +9 -9
  97. package/src/assets/svgIcons/distances_inactive.svg +8 -8
  98. package/src/assets/svgIcons/distort_tool.svg +10 -10
  99. package/src/assets/svgIcons/distort_tool2.svg +16 -16
  100. package/src/assets/svgIcons/document.svg +3 -3
  101. package/src/assets/svgIcons/documents.svg +4 -4
  102. package/src/assets/svgIcons/downarrow.svg +3 -3
  103. package/src/assets/svgIcons/download.svg +4 -4
  104. package/src/assets/svgIcons/drag_icon.svg +8 -8
  105. package/src/assets/svgIcons/draggable_corner.svg +5 -5
  106. package/src/assets/svgIcons/draw_tool.svg +3 -3
  107. package/src/assets/svgIcons/duplicate-1.svg +8 -8
  108. package/src/assets/svgIcons/duplicate-2.svg +5 -5
  109. package/src/assets/svgIcons/duplicate.svg +4 -4
  110. package/src/assets/svgIcons/e-mobility_configurator.svg +6 -6
  111. package/src/assets/svgIcons/e_signature.svg +5 -5
  112. package/src/assets/svgIcons/edit_button.svg +3 -3
  113. package/src/assets/svgIcons/electricity_tariff.svg +3 -3
  114. package/src/assets/svgIcons/email.svg +3 -3
  115. package/src/assets/svgIcons/ems-1.svg +3 -3
  116. package/src/assets/svgIcons/ems.svg +3 -3
  117. package/src/assets/svgIcons/end_of_the_list.svg +5 -5
  118. package/src/assets/svgIcons/erase.svg +4 -4
  119. package/src/assets/svgIcons/expand_all.svg +4 -4
  120. package/src/assets/svgIcons/export_document.svg +3 -3
  121. package/src/assets/svgIcons/external_icon.svg +5 -5
  122. package/src/assets/svgIcons/fav_icon.svg +4 -4
  123. package/src/assets/svgIcons/finance.svg +3 -3
  124. package/src/assets/svgIcons/financing_for_pv-1.svg +5 -5
  125. package/src/assets/svgIcons/financing_for_pv-2.svg +3 -3
  126. package/src/assets/svgIcons/financing_for_pv.svg +6 -6
  127. package/src/assets/svgIcons/finish-1.svg +4 -4
  128. package/src/assets/svgIcons/finish.svg +3 -3
  129. package/src/assets/svgIcons/flatten.svg +11 -11
  130. package/src/assets/svgIcons/flatten_roof.svg +20 -20
  131. package/src/assets/svgIcons/folder.svg +3 -3
  132. package/src/assets/svgIcons/free_technology.svg +5 -5
  133. package/src/assets/svgIcons/handle.svg +5 -5
  134. package/src/assets/svgIcons/heat_calc.svg +7 -7
  135. package/src/assets/svgIcons/height_equalize.svg +3 -3
  136. package/src/assets/svgIcons/height_snap.svg +3 -3
  137. package/src/assets/svgIcons/house.svg +3 -3
  138. package/src/assets/svgIcons/house_3d-1.svg +7 -7
  139. package/src/assets/svgIcons/house_3d.svg +7 -7
  140. package/src/assets/svgIcons/hybrid.svg +4 -4
  141. package/src/assets/svgIcons/inclination.svg +2 -2
  142. package/src/assets/svgIcons/info.svg +3 -3
  143. package/src/assets/svgIcons/initial_situation.svg +3 -3
  144. package/src/assets/svgIcons/integrations.svg +3 -3
  145. package/src/assets/svgIcons/intro-tour-1.svg +3 -3
  146. package/src/assets/svgIcons/intro-tour.svg +3 -3
  147. package/src/assets/svgIcons/inverter-1.svg +5 -5
  148. package/src/assets/svgIcons/inverter.svg +3 -3
  149. package/src/assets/svgIcons/italic.svg +3 -3
  150. package/src/assets/svgIcons/key.svg +3 -3
  151. package/src/assets/svgIcons/lake.svg +29 -29
  152. package/src/assets/svgIcons/layers_close.svg +4 -4
  153. package/src/assets/svgIcons/layers_open.svg +4 -4
  154. package/src/assets/svgIcons/lead_marketplace.svg +6 -6
  155. package/src/assets/svgIcons/lead_provider.svg +4 -4
  156. package/src/assets/svgIcons/length_2d.svg +2 -2
  157. package/src/assets/svgIcons/length_3d.svg +4 -4
  158. package/src/assets/svgIcons/length_calculator.svg +2 -2
  159. package/src/assets/svgIcons/length_in_2d_active.svg +12 -12
  160. package/src/assets/svgIcons/length_in_2d_inctive.svg +13 -13
  161. package/src/assets/svgIcons/light_bulb.svg +3 -3
  162. package/src/assets/svgIcons/like.svg +3 -3
  163. package/src/assets/svgIcons/line_graph.svg +3 -3
  164. package/src/assets/svgIcons/local_subsidies.svg +18 -18
  165. package/src/assets/svgIcons/location.svg +3 -3
  166. package/src/assets/svgIcons/lock.svg +3 -3
  167. package/src/assets/svgIcons/logout.svg +3 -3
  168. package/src/assets/svgIcons/loop.svg +3 -3
  169. package/src/assets/svgIcons/low-vegetation.svg +37 -37
  170. package/src/assets/svgIcons/lunch.svg +4 -4
  171. package/src/assets/svgIcons/magic_tool.svg +6 -6
  172. package/src/assets/svgIcons/map_icon.svg +5 -5
  173. package/src/assets/svgIcons/map_settings.svg +3 -3
  174. package/src/assets/svgIcons/margin_tool.svg +4 -4
  175. package/src/assets/svgIcons/meeting.svg +6 -6
  176. package/src/assets/svgIcons/module.svg +3 -3
  177. package/src/assets/svgIcons/move_copy.svg +4 -4
  178. package/src/assets/svgIcons/move_down.svg +3 -3
  179. package/src/assets/svgIcons/move_up.svg +3 -3
  180. package/src/assets/svgIcons/new_area_inactive.svg +11 -11
  181. package/src/assets/svgIcons/next.svg +4 -4
  182. package/src/assets/svgIcons/normal-tg.svg +30 -30
  183. package/src/assets/svgIcons/normal-vegetation.svg +53 -53
  184. package/src/assets/svgIcons/not_equal_to.svg +3 -3
  185. package/src/assets/svgIcons/numbered_list.svg +6 -6
  186. package/src/assets/svgIcons/obstacle_tool.svg +8 -8
  187. package/src/assets/svgIcons/obstacle_tool_origin.svg +3 -3
  188. package/src/assets/svgIcons/offset_tool.svg +8 -8
  189. package/src/assets/svgIcons/open-tg.svg +21 -21
  190. package/src/assets/svgIcons/optimizer.svg +6 -6
  191. package/src/assets/svgIcons/outline_tool.svg +11 -11
  192. package/src/assets/svgIcons/pan_tool.svg +12 -12
  193. package/src/assets/svgIcons/panels_tool.svg +8 -8
  194. package/src/assets/svgIcons/pen_tool.svg +4 -4
  195. package/src/assets/svgIcons/picker_tool.svg +4 -4
  196. package/src/assets/svgIcons/picture.svg +3 -3
  197. package/src/assets/svgIcons/pin.svg +5 -5
  198. package/src/assets/svgIcons/presentation.svg +3 -3
  199. package/src/assets/svgIcons/previous.svg +4 -4
  200. package/src/assets/svgIcons/profile-1.svg +4 -4
  201. package/src/assets/svgIcons/profile.svg +4 -4
  202. package/src/assets/svgIcons/profitability.svg +3 -3
  203. package/src/assets/svgIcons/project_analysis.svg +4 -4
  204. package/src/assets/svgIcons/project_settings.svg +4 -4
  205. package/src/assets/svgIcons/protected-tg.svg +47 -47
  206. package/src/assets/svgIcons/pv.svg +3 -3
  207. package/src/assets/svgIcons/quotations.svg +6 -6
  208. package/src/assets/svgIcons/redo.svg +6 -6
  209. package/src/assets/svgIcons/resizer.svg +5 -5
  210. package/src/assets/svgIcons/roof_layer.svg +3 -3
  211. package/src/assets/svgIcons/rotate_tool.svg +3 -3
  212. package/src/assets/svgIcons/rotate_view.svg +5 -5
  213. package/src/assets/svgIcons/ruler_tool.svg +3 -3
  214. package/src/assets/svgIcons/run_simulation.svg +3 -3
  215. package/src/assets/svgIcons/save.svg +3 -3
  216. package/src/assets/svgIcons/scaling_tool.svg +8 -8
  217. package/src/assets/svgIcons/sea.svg +34 -34
  218. package/src/assets/svgIcons/search.svg +3 -3
  219. package/src/assets/svgIcons/security.svg +3 -3
  220. package/src/assets/svgIcons/settings.svg +3 -3
  221. package/src/assets/svgIcons/show_in_a_new_tab.svg +12 -12
  222. package/src/assets/svgIcons/smartphone.svg +4 -4
  223. package/src/assets/svgIcons/solar_calc.svg +13 -13
  224. package/src/assets/svgIcons/sorting.svg +4 -4
  225. package/src/assets/svgIcons/split.svg +12 -12
  226. package/src/assets/svgIcons/start_of_the_list.svg +5 -5
  227. package/src/assets/svgIcons/strikethrough.svg +4 -4
  228. package/src/assets/svgIcons/string_design.svg +5 -5
  229. package/src/assets/svgIcons/string_directions.svg +10 -10
  230. package/src/assets/svgIcons/subscriptions.svg +3 -3
  231. package/src/assets/svgIcons/subsidies-1.svg +5 -5
  232. package/src/assets/svgIcons/subsidies-2.svg +3 -3
  233. package/src/assets/svgIcons/subsidies.svg +3 -3
  234. package/src/assets/svgIcons/subtract_icon.svg +3 -3
  235. package/src/assets/svgIcons/suitcase.svg +3 -3
  236. package/src/assets/svgIcons/summer.svg +3 -3
  237. package/src/assets/svgIcons/template_icon_not_clickable.svg +6 -6
  238. package/src/assets/svgIcons/transfer.svg +4 -4
  239. package/src/assets/svgIcons/trim_tool.svg +4 -4
  240. package/src/assets/svgIcons/truck.svg +3 -3
  241. package/src/assets/svgIcons/underlined.svg +3 -3
  242. package/src/assets/svgIcons/undo.svg +6 -6
  243. package/src/assets/svgIcons/uparrow.svg +3 -3
  244. package/src/assets/svgIcons/update.svg +3 -3
  245. package/src/assets/svgIcons/upload_avatar-1.svg +12 -12
  246. package/src/assets/svgIcons/upload_avatar.svg +5 -5
  247. package/src/assets/svgIcons/upload_image.svg +8 -8
  248. package/src/assets/svgIcons/upload_image_tool.svg +7 -7
  249. package/src/assets/svgIcons/variants.svg +6 -6
  250. package/src/assets/svgIcons/vertical_tool.svg +3 -3
  251. package/src/assets/svgIcons/virtual_storage.svg +4 -4
  252. package/src/assets/svgIcons/warning.svg +4 -4
  253. package/src/assets/svgIcons/way.svg +5 -5
  254. package/src/assets/svgIcons/wifi.svg +3 -3
  255. package/src/assets/svgIcons/winter.svg +3 -3
  256. package/src/assets/svgIcons/workflow_template.svg +11 -11
  257. package/src/assets/tests/__mocks__/iconCache.js +1 -1
  258. package/src/assets/tests/__mocks__/svgMock.js +1 -1
  259. package/src/assets/tests/helpers.js +12 -12
  260. package/src/assets/theme.js +44 -44
  261. package/src/components/addNewButton/AddNewButton.stories.js +17 -17
  262. package/src/components/addNewButton/addNewButton.spec.js +23 -23
  263. package/src/components/addNewButton/index.vue +62 -62
  264. package/src/components/banner/actionBanner/ActionBanner.stories.js +45 -45
  265. package/src/components/banner/actionBanner/actionBanner.spec.js +76 -76
  266. package/src/components/banner/actionBanner/index.vue +86 -86
  267. package/src/components/banner/banner/Banner.stories.js +64 -64
  268. package/src/components/banner/banner/banner.spec.js +149 -149
  269. package/src/components/banner/banner/index.vue +205 -205
  270. package/src/components/banner/infoBanner/InfoBanner.spec.js +70 -70
  271. package/src/components/banner/infoBanner/InfoBanner.stories.js +42 -42
  272. package/src/components/banner/infoBanner/index.vue +97 -97
  273. package/src/components/banner/notificationBanner/index.vue +131 -131
  274. package/src/components/buttons/buttonIcon/index.vue +147 -147
  275. package/src/components/buttons/closeButton/CloseButton.stories.js +25 -25
  276. package/src/components/buttons/closeButton/index.vue +62 -62
  277. package/src/components/buttons/mainButton/MainButton.stories.js +51 -51
  278. package/src/components/buttons/mainButton/index.vue +169 -169
  279. package/src/components/buttons/mainButton/mainButton.spec.js +35 -35
  280. package/src/components/card/Card.stories.js +79 -79
  281. package/src/components/card/card.spec.js +135 -135
  282. package/src/components/card/index.vue +116 -116
  283. package/src/components/collapsableInfoText/index.vue +127 -127
  284. package/src/components/deleteIcon/DeleteIcon.stories.js +29 -29
  285. package/src/components/deleteIcon/index.vue +78 -78
  286. package/src/components/draggableInputHandle/index.vue +46 -46
  287. package/src/components/dropdown/Dropdown.stories.js +53 -53
  288. package/src/components/dropdown/index.vue +138 -138
  289. package/src/components/errorMessage/index.vue +64 -64
  290. package/src/components/filter/filterSettings.vue +669 -669
  291. package/src/components/filter/index.vue +154 -154
  292. package/src/components/filter/parentDropdown.vue +91 -91
  293. package/src/components/icon/Icons.stories.js +31 -31
  294. package/src/components/icon/icon.spec.js +66 -66
  295. package/src/components/icon/iconCache.mjs +23 -23
  296. package/src/components/icon/iconCollection.vue +83 -83
  297. package/src/components/icon/index.vue +151 -151
  298. package/src/components/iconWrapper/index.vue +179 -179
  299. package/src/components/infoCard/InfoCard.stories.js +144 -144
  300. package/src/components/infoCard/defaultProps.js +7 -7
  301. package/src/components/infoCard/index.vue +140 -140
  302. package/src/components/infoCard/infoCard.spec.js +56 -56
  303. package/src/components/infoText/index.vue +382 -379
  304. package/src/components/infoText/placeholder.vue +225 -225
  305. package/src/components/inputs/checkbox/Checkbox.stories.js +63 -63
  306. package/src/components/inputs/checkbox/checkbox.spec.js +109 -109
  307. package/src/components/inputs/checkbox/index.vue +236 -236
  308. package/src/components/inputs/inputNumber/InputNumber.stories.js +150 -150
  309. package/src/components/inputs/inputNumber/index.vue +979 -979
  310. package/src/components/inputs/inputNumberQuestion/index.vue +218 -218
  311. package/src/components/inputs/inputText/InputText.stories.js +70 -70
  312. package/src/components/inputs/inputText/index.vue +438 -438
  313. package/src/components/inputs/inputText/inputText.spec.js +588 -588
  314. package/src/components/inputs/radioButton/RadioButton.stories.js +77 -77
  315. package/src/components/inputs/radioButton/defaultProps.js +31 -31
  316. package/src/components/inputs/radioButton/index.vue +330 -330
  317. package/src/components/inputs/radioButton/radioButton.spec.js +306 -306
  318. package/src/components/inputs/searchInput/SearchInput.stories.js +66 -66
  319. package/src/components/inputs/searchInput/defaultProps.js +12 -12
  320. package/src/components/inputs/searchInput/index.vue +159 -159
  321. package/src/components/inputs/searchInput/searchInput.spec.js +64 -64
  322. package/src/components/inputs/select/index.vue +962 -962
  323. package/src/components/inputs/select/option/index.vue +165 -165
  324. package/src/components/inputs/select/select.stories.js +58 -58
  325. package/src/components/inputs/slider/index.vue +126 -126
  326. package/src/components/inputs/switchField/index.vue +254 -254
  327. package/src/components/inputs/textAreaInput/TextAreaInput.stories.js +127 -127
  328. package/src/components/inputs/textAreaInput/index.vue +198 -198
  329. package/src/components/inputs/toggle/Toggle.stories.js +77 -77
  330. package/src/components/inputs/toggle/index.vue +317 -317
  331. package/src/components/inputs/toggle/toggle.spec.js +102 -102
  332. package/src/components/label/index.vue +99 -99
  333. package/src/components/markerItem/index.vue +95 -95
  334. package/src/components/modals/actionModal/index.vue +64 -64
  335. package/src/components/modals/infoModal/index.vue +52 -52
  336. package/src/components/modals/modal/index.vue +196 -196
  337. package/src/components/modals/modal/modal.stories.js +31 -31
  338. package/src/components/navigationTabs/index.vue +114 -114
  339. package/src/components/pageSubtitle/PageSubtitle.stories.js +59 -59
  340. package/src/components/pageSubtitle/index.vue +78 -78
  341. package/src/components/pageSubtitle/pageSubtitle.spec.js +46 -46
  342. package/src/components/pageTitle/PageTitle.stories.js +95 -95
  343. package/src/components/pageTitle/index.vue +91 -91
  344. package/src/components/pageTitle/pageTitle.spec.js +46 -46
  345. package/src/components/pagination/index.vue +148 -148
  346. package/src/components/progressBar/index.vue +125 -125
  347. package/src/components/projectMarker/index.vue +300 -300
  348. package/src/components/rangeSlider/Slider.vue +573 -573
  349. package/src/components/rangeSlider/index.vue +517 -517
  350. package/src/components/rangeSlider/utils/dom.js +49 -49
  351. package/src/components/rangeSlider/utils/fns.js +26 -26
  352. package/src/components/roundTabs/index.vue +107 -107
  353. package/src/components/selectedOptions/index.vue +471 -471
  354. package/src/components/selectedOptions/selectedOptions.spec.js +176 -176
  355. package/src/components/selectedOptions/selectedOptions.stories.js +155 -155
  356. package/src/components/sideMenu/index.vue +270 -270
  357. package/src/components/spinner/Spinner.stories.js +34 -34
  358. package/src/components/spinner/index.vue +96 -96
  359. package/src/components/spinner/spinner.spec.js +69 -69
  360. package/src/components/spinnerGif/index.vue +98 -98
  361. package/src/components/stringDesign/DropdownMenu/index.vue +983 -983
  362. package/src/components/tableDropdown/index.vue +639 -639
  363. package/src/components/tables/mainTable/exampleNested.vue +328 -328
  364. package/src/components/tables/mainTable/index.vue +518 -518
  365. package/src/components/tables/viewTable/index.vue +195 -195
  366. package/src/components/tabsHeader/index.vue +83 -83
  367. package/src/components/threeDots/index.vue +413 -413
  368. package/src/components/videoThumbnail/index.vue +103 -103
  369. package/src/components/videoThumbnail/videoThumbnail.stories.js +33 -33
  370. package/src/helpers/currencyMapping.js +28 -28
  371. package/src/helpers/numberConverter.js +103 -103
  372. package/src/helpers/translateLang.js +128 -128
  373. package/src/main.js +7 -7
  374. package/src/mixins/inputValidations.js +97 -97
  375. package/src/router/dynamicRoutes.js +23 -23
  376. package/src/stories/Button.stories.js +48 -48
  377. package/src/stories/Button.vue +52 -52
  378. package/src/stories/Configure.mdx +364 -364
  379. package/src/stories/Header.stories.js +41 -41
  380. package/src/stories/Header.vue +59 -59
  381. package/src/stories/Page.stories.js +30 -30
  382. package/src/stories/Page.vue +83 -83
  383. package/src/stories/button.css +30 -30
  384. package/src/stories/header.css +32 -32
  385. package/src/stories/page.css +69 -69
  386. package/src/utils/index.js +12 -12
@@ -1,379 +1,382 @@
1
- <template>
2
- <PageContainer ref="container">
3
- <div
4
- ref="icon"
5
- data-test-id="infoText_trigger"
6
- @click=";(isMobile || openTrigger === 'onClick') && toggleInfo()"
7
- @mouseenter="!isMobile && openTrigger === 'onHover' && showInfo()"
8
- @mouseleave="!isMobile && openTrigger === 'onHover' && hideInfo()"
9
- >
10
- <IconComponent
11
- :color="iconColor || computedIconColor"
12
- :cursor="isDisabled ? 'not-allowed' : 'pointer'"
13
- :disabled="isDisabled"
14
- :name="iconName"
15
- :size="size"
16
- />
17
- </div>
18
- <Teleport v-if="isVisible" to="body">
19
- <TextWrapper :style="wrapperStyle">
20
- <TextOverlay ref="infoBox" :image="image" :style="boxStyle">
21
- <OverlayImage
22
- v-if="image"
23
- ref="infoImage"
24
- alt="Info Image"
25
- :src="image"
26
- @load="onImageLoad"
27
- />
28
- <span ref="textContent" :style="textStyle" v-html="text"></span>
29
- </TextOverlay>
30
- <Arrow :image="image" :style="arrowStyle" />
31
- </TextWrapper>
32
- </Teleport>
33
- </PageContainer>
34
- </template>
35
-
36
- <script>
37
- // import InfoText from "@eturnity/eturnity_reusable_components/src/components/infoText"
38
- //To use:
39
- // <info-text
40
- // text="Veritatis et quasi architecto beatae vitae"
41
- // size="20px"
42
- // openTrigger="onClick"
43
- // buttonType="error"
44
- // image="path/to/image.jpg"
45
- // />
46
- import { ref, onMounted, onUnmounted, watch, nextTick, computed } from 'vue'
47
- import IconComponent from '../icon'
48
- import styled from 'vue3-styled-components'
49
- import theme from '../../assets/theme.js'
50
-
51
- const TextOverlay = styled('div')`
52
- background-color: ${(props) =>
53
- props.image ? props.theme.colors.white : props.theme.colors.black};
54
- color: ${(props) =>
55
- props.image ? props.theme.colors.grey1 : props.theme.colors.white};
56
- font-size: ${(props) => (props.image ? '12px' : '13px')};
57
- border-radius: 4px;
58
- padding: 10px;
59
- word-wrap: break-word;
60
- overflow-wrap: break-word;
61
- white-space: normal;
62
- width: 100%; // Ensure the TextOverlay takes full width of its parent
63
- box-shadow: ${(props) =>
64
- props.image ? '0 2px 10px rgba(0, 0, 0, 0.1)' : 'none'};
65
-
66
- a {
67
- color: ${(props) => props.theme.colors.blue};
68
- }
69
-
70
- img + span {
71
- margin-top: 10px;
72
- display: block;
73
- }
74
- `
75
-
76
- const Arrow = styled('div')`
77
- position: absolute;
78
- width: 0;
79
- height: 0;
80
- border-left: 8px solid transparent;
81
- border-right: 8px solid transparent;
82
- border-top: 8px solid
83
- ${(props) =>
84
- props.image ? props.theme.colors.white : props.theme.colors.black};
85
- filter: ${(props) =>
86
- props.image ? 'drop-shadow(0 2px 2px rgba(0, 0, 0, 0.1))' : 'none'};
87
- `
88
-
89
- const PageContainer = styled('div')`
90
- display: inline-block;
91
- position: relative;
92
- `
93
-
94
- const TextWrapper = styled('div')`
95
- z-index: 99999;
96
- position: absolute;
97
- `
98
-
99
- const OverlayImage = styled('img')`
100
- width: 100%;
101
- height: auto;
102
- `
103
-
104
- export default {
105
- name: 'InfoText',
106
- components: {
107
- IconComponent,
108
- TextOverlay,
109
- Arrow,
110
- PageContainer,
111
- TextWrapper,
112
- OverlayImage,
113
- },
114
- props: {
115
- text: {
116
- required: false,
117
- default: '',
118
- type: String,
119
- },
120
- size: {
121
- type: String,
122
- default: '14px',
123
- type: String,
124
- },
125
- infoPosition: {
126
- required: false,
127
- default: 'bottom',
128
- type: String,
129
- },
130
- maxWidth: {
131
- default: '400px',
132
- type: String,
133
- },
134
- openTrigger: {
135
- type: String,
136
- default: 'onHover',
137
- validator: (value) => ['onHover', 'onClick'].includes(value),
138
- },
139
- buttonType: {
140
- type: String,
141
- default: 'regular',
142
- validator: (value) => ['regular', 'error'].includes(value),
143
- },
144
- image: {
145
- type: String,
146
- default: '',
147
- },
148
- iconName: {
149
- type: String,
150
- default: 'info',
151
- },
152
- iconColor: {
153
- type: String,
154
- default: null,
155
- required: false,
156
- },
157
- isDisabled: {
158
- type: Boolean,
159
- default: false,
160
- required: false,
161
- },
162
- },
163
- setup(props) {
164
- const isVisible = ref(false)
165
- const container = ref(null)
166
- const icon = ref(null)
167
- const infoBox = ref(null)
168
- const textContent = ref(null)
169
- const infoImage = ref(null)
170
- const infoBoxWidth = ref(0)
171
- const infoBoxHeight = ref(0)
172
- const boxStyle = ref({})
173
- const arrowStyle = ref({})
174
- const wrapperStyle = ref({})
175
- const isMobile = ref(window.innerWidth <= 768)
176
-
177
- const textStyle = computed(() => ({
178
- fontSize: props.image ? '12px' : '13px',
179
- color: props.image ? theme.colors.grey1 : theme.colors.white,
180
- textAlign: props.image ? 'right' : 'left',
181
- }))
182
-
183
- const calculatePosition = (width) => {
184
- if (!icon.value) return {}
185
-
186
- const iconRect = icon.value.getBoundingClientRect()
187
- const windowHeight = window.innerHeight
188
- const windowWidth = window.innerWidth
189
-
190
- let top = iconRect.bottom + 10
191
- let left = iconRect.left
192
-
193
- // Adjust left based on the infoBoxWidth
194
- if (left + width > windowWidth) {
195
- left = windowWidth - width - 10
196
- }
197
-
198
- // Ensure there's enough space below or place above if not
199
- const isAbove = top + infoBoxHeight.value > windowHeight
200
- if (isAbove) {
201
- top = iconRect.top - infoBoxHeight.value - 10
202
- }
203
-
204
- // Calculate arrow position
205
- let arrowLeft = iconRect.left - left + iconRect.width / 2 - 8
206
-
207
- // Adjust arrow position if it's too close to the edges
208
- const edgeThreshold = 2 // pixels from the edge to start adjusting
209
- if (arrowLeft < edgeThreshold) {
210
- arrowLeft = edgeThreshold
211
- } else if (arrowLeft > width - 16 - edgeThreshold) {
212
- arrowLeft = width - 16 - edgeThreshold
213
- }
214
-
215
- const arrowTop = isAbove ? 'auto' : '-7px'
216
- const arrowBottom = isAbove ? '-7px' : 'auto'
217
-
218
- arrowStyle.value = {
219
- left: `${arrowLeft}px`,
220
- top: arrowTop,
221
- bottom: arrowBottom,
222
- transform: isAbove ? 'none' : 'rotate(180deg)',
223
- }
224
-
225
- wrapperStyle.value = {
226
- position: 'fixed',
227
- top: `${top}px`,
228
- left: `${left}px`,
229
- transform: 'none',
230
- width: `${width}px`, // Set a fixed width for the wrapper
231
- }
232
-
233
- return {
234
- width: '100%', // Always use 100% width for the TextOverlay
235
- maxWidth: props.maxWidth,
236
- overflowY: 'auto',
237
- backgroundColor: props.image
238
- ? theme.colors.white
239
- : theme.colors.black,
240
- }
241
- }
242
-
243
- const showInfo = async () => {
244
- isVisible.value = true
245
- await nextTick()
246
- updatePosition()
247
- }
248
-
249
- const hideInfo = () => {
250
- isVisible.value = false
251
- }
252
-
253
- const toggleInfo = () => {
254
- isVisible.value ? hideInfo() : showInfo()
255
- }
256
-
257
- const handleScroll = () => {
258
- if (isVisible.value) {
259
- hideInfo()
260
- }
261
- updatePosition()
262
- }
263
-
264
- const isIconInView = () => {
265
- if (!icon.value) return false
266
- const rect = icon.value.getBoundingClientRect()
267
- return (
268
- rect.top >= 0 &&
269
- rect.left >= 0 &&
270
- rect.bottom <=
271
- (window.innerHeight || document.documentElement.clientHeight) &&
272
- rect.right <=
273
- (window.innerWidth || document.documentElement.clientWidth)
274
- )
275
- }
276
-
277
- const updatePosition = async () => {
278
- if (infoBox.value && textContent.value) {
279
- await nextTick()
280
-
281
- if (isIconInView()) {
282
- const contentWidth = textContent.value.offsetWidth
283
- infoBoxWidth.value = Math.min(
284
- Math.max(contentWidth, 200), // Set a minimum width of 200px
285
- parseInt(props.maxWidth, 10)
286
- )
287
- infoBoxHeight.value = infoBox.value.$el.offsetHeight
288
- boxStyle.value = calculatePosition(infoBoxWidth.value)
289
-
290
- // Now make it visible if it should be
291
- if (isVisible.value) {
292
- infoBox.value.$el.style.visibility = 'visible'
293
- }
294
- } else if (isVisible.value) {
295
- hideInfo()
296
- }
297
- }
298
- }
299
-
300
- const onImageLoad = () => {
301
- if (infoImage.value) {
302
- infoBoxHeight.value = infoBox.value.$el.offsetHeight
303
- updatePosition()
304
- }
305
- }
306
-
307
- const handleClickOutside = (event) => {
308
- if (
309
- (props.openTrigger === 'onClick' || isMobile.value) &&
310
- isVisible.value
311
- ) {
312
- const clickedElement = event.target
313
- if (
314
- infoBox.value &&
315
- !infoBox.value.$el.contains(clickedElement) &&
316
- !icon.value.contains(clickedElement)
317
- ) {
318
- hideInfo()
319
- }
320
- }
321
- }
322
-
323
- const handleResize = () => {
324
- isMobile.value = window.innerWidth <= 768
325
- updatePosition()
326
- }
327
-
328
- onMounted(() => {
329
- window.addEventListener('scroll', handleScroll, { passive: true })
330
- window.addEventListener('resize', handleResize)
331
- document.addEventListener('scroll', handleScroll, {
332
- passive: true,
333
- capture: true,
334
- })
335
- document.addEventListener('click', handleClickOutside)
336
- })
337
-
338
- onUnmounted(() => {
339
- window.removeEventListener('scroll', handleScroll)
340
- window.removeEventListener('resize', handleResize)
341
- document.removeEventListener('scroll', handleScroll, { capture: true })
342
- document.removeEventListener('click', handleClickOutside)
343
- })
344
-
345
- watch(isVisible, (newValue) => {
346
- if (newValue) {
347
- updatePosition()
348
- }
349
- })
350
-
351
- return {
352
- isVisible,
353
- boxStyle,
354
- arrowStyle,
355
- showInfo,
356
- hideInfo,
357
- toggleInfo,
358
- container,
359
- icon,
360
- infoBox,
361
- textContent,
362
- infoImage,
363
- infoBoxWidth,
364
- infoBoxHeight,
365
- wrapperStyle,
366
- textStyle,
367
- onImageLoad,
368
- isMobile,
369
- }
370
- },
371
- computed: {
372
- computedIconColor() {
373
- return this.buttonType === 'error'
374
- ? theme.colors.red
375
- : theme.colors.mediumGray
376
- },
377
- },
378
- }
379
- </script>
1
+ <template>
2
+ <PageContainer ref="container">
3
+ <div
4
+ ref="icon"
5
+ data-test-id="infoText_trigger"
6
+ @click=";(isMobile || openTrigger === 'onClick') && toggleInfo()"
7
+ @mouseenter="!isMobile && openTrigger === 'onHover' && showInfo()"
8
+ @mouseleave="!isMobile && openTrigger === 'onHover' && hideInfo()"
9
+ >
10
+ <IconComponent
11
+ :color="iconColor || computedIconColor"
12
+ :cursor="isDisabled ? 'not-allowed' : 'pointer'"
13
+ :disabled="isDisabled"
14
+ :name="iconName"
15
+ :size="size"
16
+ />
17
+ </div>
18
+ <Teleport v-if="isVisible" to="body">
19
+ <TextWrapper :style="wrapperStyle">
20
+ <TextOverlay ref="infoBox" :image="image" :style="boxStyle">
21
+ <OverlayImage
22
+ v-if="image"
23
+ ref="infoImage"
24
+ alt="Info Image"
25
+ :src="image"
26
+ @load="onImageLoad"
27
+ />
28
+ <span ref="textContent" :style="textStyle">
29
+ <slot>
30
+ <span v-html="text"></span>
31
+ </slot>
32
+ </span>
33
+ </TextOverlay>
34
+ <Arrow :image="image" :style="arrowStyle" />
35
+ </TextWrapper>
36
+ </Teleport>
37
+ </PageContainer>
38
+ </template>
39
+
40
+ <script>
41
+ // import InfoText from "@eturnity/eturnity_reusable_components/src/components/infoText"
42
+ //To use:
43
+ // <info-text
44
+ // text="Veritatis et quasi architecto beatae vitae"
45
+ // size="20px"
46
+ // openTrigger="onClick"
47
+ // buttonType="error"
48
+ // image="path/to/image.jpg"
49
+ // />
50
+ import { ref, onMounted, onUnmounted, watch, nextTick, computed } from 'vue'
51
+ import IconComponent from '../icon'
52
+ import styled from 'vue3-styled-components'
53
+ import theme from '../../assets/theme.js'
54
+
55
+ const TextOverlay = styled('div')`
56
+ background-color: ${(props) =>
57
+ props.image ? props.theme.colors.white : props.theme.colors.black};
58
+ color: ${(props) =>
59
+ props.image ? props.theme.colors.grey1 : props.theme.colors.white};
60
+ font-size: ${(props) => (props.image ? '12px' : '13px')};
61
+ border-radius: 4px;
62
+ padding: 10px;
63
+ word-wrap: break-word;
64
+ overflow-wrap: break-word;
65
+ white-space: normal;
66
+ width: 100%; // Ensure the TextOverlay takes full width of its parent
67
+ box-shadow: ${(props) =>
68
+ props.image ? '0 2px 10px rgba(0, 0, 0, 0.1)' : 'none'};
69
+
70
+ a {
71
+ color: ${(props) => props.theme.colors.blue};
72
+ }
73
+
74
+ img + span {
75
+ margin-top: 10px;
76
+ display: block;
77
+ }
78
+ `
79
+
80
+ const Arrow = styled('div')`
81
+ position: absolute;
82
+ width: 0;
83
+ height: 0;
84
+ border-left: 8px solid transparent;
85
+ border-right: 8px solid transparent;
86
+ border-top: 8px solid
87
+ ${(props) =>
88
+ props.image ? props.theme.colors.white : props.theme.colors.black};
89
+ filter: ${(props) =>
90
+ props.image ? 'drop-shadow(0 2px 2px rgba(0, 0, 0, 0.1))' : 'none'};
91
+ `
92
+
93
+ const PageContainer = styled('div')`
94
+ display: inline-block;
95
+ position: relative;
96
+ `
97
+
98
+ const TextWrapper = styled('div')`
99
+ z-index: 99999;
100
+ position: absolute;
101
+ `
102
+
103
+ const OverlayImage = styled('img')`
104
+ width: 100%;
105
+ height: auto;
106
+ `
107
+
108
+ export default {
109
+ name: 'InfoText',
110
+ components: {
111
+ IconComponent,
112
+ TextOverlay,
113
+ Arrow,
114
+ PageContainer,
115
+ TextWrapper,
116
+ OverlayImage,
117
+ },
118
+ props: {
119
+ text: {
120
+ required: false,
121
+ default: '',
122
+ type: String,
123
+ },
124
+ size: {
125
+ type: String,
126
+ default: '14px',
127
+ },
128
+ infoPosition: {
129
+ required: false,
130
+ default: 'bottom',
131
+ type: String,
132
+ },
133
+ maxWidth: {
134
+ default: '400px',
135
+ type: String,
136
+ },
137
+ openTrigger: {
138
+ type: String,
139
+ default: 'onHover',
140
+ validator: (value) => ['onHover', 'onClick'].includes(value),
141
+ },
142
+ buttonType: {
143
+ type: String,
144
+ default: 'regular',
145
+ validator: (value) => ['regular', 'error'].includes(value),
146
+ },
147
+ image: {
148
+ type: String,
149
+ default: '',
150
+ },
151
+ iconName: {
152
+ type: String,
153
+ default: 'info',
154
+ },
155
+ iconColor: {
156
+ type: String,
157
+ default: null,
158
+ required: false,
159
+ },
160
+ isDisabled: {
161
+ type: Boolean,
162
+ default: false,
163
+ required: false,
164
+ },
165
+ },
166
+ setup(props) {
167
+ const isVisible = ref(false)
168
+ const container = ref(null)
169
+ const icon = ref(null)
170
+ const infoBox = ref(null)
171
+ const textContent = ref(null)
172
+ const infoImage = ref(null)
173
+ const infoBoxWidth = ref(0)
174
+ const infoBoxHeight = ref(0)
175
+ const boxStyle = ref({})
176
+ const arrowStyle = ref({})
177
+ const wrapperStyle = ref({})
178
+ const isMobile = ref(window.innerWidth <= 768)
179
+
180
+ const textStyle = computed(() => ({
181
+ fontSize: props.image ? '12px' : '13px',
182
+ color: props.image ? theme.colors.grey1 : theme.colors.white,
183
+ textAlign: props.image ? 'right' : 'left',
184
+ }))
185
+
186
+ const calculatePosition = (width) => {
187
+ if (!icon.value) return {}
188
+
189
+ const iconRect = icon.value.getBoundingClientRect()
190
+ const windowHeight = window.innerHeight
191
+ const windowWidth = window.innerWidth
192
+
193
+ let top = iconRect.bottom + 10
194
+ let left = iconRect.left
195
+
196
+ // Adjust left based on the infoBoxWidth
197
+ if (left + width > windowWidth) {
198
+ left = windowWidth - width - 10
199
+ }
200
+
201
+ // Ensure there's enough space below or place above if not
202
+ const isAbove = top + infoBoxHeight.value > windowHeight
203
+ if (isAbove) {
204
+ top = iconRect.top - infoBoxHeight.value - 10
205
+ }
206
+
207
+ // Calculate arrow position
208
+ let arrowLeft = iconRect.left - left + iconRect.width / 2 - 8
209
+
210
+ // Adjust arrow position if it's too close to the edges
211
+ const edgeThreshold = 2 // pixels from the edge to start adjusting
212
+ if (arrowLeft < edgeThreshold) {
213
+ arrowLeft = edgeThreshold
214
+ } else if (arrowLeft > width - 16 - edgeThreshold) {
215
+ arrowLeft = width - 16 - edgeThreshold
216
+ }
217
+
218
+ const arrowTop = isAbove ? 'auto' : '-7px'
219
+ const arrowBottom = isAbove ? '-7px' : 'auto'
220
+
221
+ arrowStyle.value = {
222
+ left: `${arrowLeft}px`,
223
+ top: arrowTop,
224
+ bottom: arrowBottom,
225
+ transform: isAbove ? 'none' : 'rotate(180deg)',
226
+ }
227
+
228
+ wrapperStyle.value = {
229
+ position: 'fixed',
230
+ top: `${top}px`,
231
+ left: `${left}px`,
232
+ transform: 'none',
233
+ width: `${width}px`, // Set a fixed width for the wrapper
234
+ }
235
+
236
+ return {
237
+ width: '100%', // Always use 100% width for the TextOverlay
238
+ maxWidth: props.maxWidth,
239
+ overflowY: 'auto',
240
+ backgroundColor: props.image
241
+ ? theme.colors.white
242
+ : theme.colors.black,
243
+ }
244
+ }
245
+
246
+ const showInfo = async () => {
247
+ isVisible.value = true
248
+ await nextTick()
249
+ updatePosition()
250
+ }
251
+
252
+ const hideInfo = () => {
253
+ isVisible.value = false
254
+ }
255
+
256
+ const toggleInfo = () => {
257
+ isVisible.value ? hideInfo() : showInfo()
258
+ }
259
+
260
+ const handleScroll = () => {
261
+ if (isVisible.value) {
262
+ hideInfo()
263
+ }
264
+ updatePosition()
265
+ }
266
+
267
+ const isIconInView = () => {
268
+ if (!icon.value) return false
269
+ const rect = icon.value.getBoundingClientRect()
270
+ return (
271
+ rect.top >= 0 &&
272
+ rect.left >= 0 &&
273
+ rect.bottom <=
274
+ (window.innerHeight || document.documentElement.clientHeight) &&
275
+ rect.right <=
276
+ (window.innerWidth || document.documentElement.clientWidth)
277
+ )
278
+ }
279
+
280
+ const updatePosition = async () => {
281
+ if (infoBox.value && textContent.value) {
282
+ await nextTick()
283
+
284
+ if (isIconInView()) {
285
+ const contentWidth = textContent.value.offsetWidth
286
+ infoBoxWidth.value = Math.min(
287
+ Math.max(contentWidth, 200), // Set a minimum width of 200px
288
+ parseInt(props.maxWidth, 10)
289
+ )
290
+ infoBoxHeight.value = infoBox.value.$el.offsetHeight
291
+ boxStyle.value = calculatePosition(infoBoxWidth.value)
292
+
293
+ // Now make it visible if it should be
294
+ if (isVisible.value) {
295
+ infoBox.value.$el.style.visibility = 'visible'
296
+ }
297
+ } else if (isVisible.value) {
298
+ hideInfo()
299
+ }
300
+ }
301
+ }
302
+
303
+ const onImageLoad = () => {
304
+ if (infoImage.value) {
305
+ infoBoxHeight.value = infoBox.value.$el.offsetHeight
306
+ updatePosition()
307
+ }
308
+ }
309
+
310
+ const handleClickOutside = (event) => {
311
+ if (
312
+ (props.openTrigger === 'onClick' || isMobile.value) &&
313
+ isVisible.value
314
+ ) {
315
+ const clickedElement = event.target
316
+ if (
317
+ infoBox.value &&
318
+ !infoBox.value.$el.contains(clickedElement) &&
319
+ !icon.value.contains(clickedElement)
320
+ ) {
321
+ hideInfo()
322
+ }
323
+ }
324
+ }
325
+
326
+ const handleResize = () => {
327
+ isMobile.value = window.innerWidth <= 768
328
+ updatePosition()
329
+ }
330
+
331
+ onMounted(() => {
332
+ window.addEventListener('scroll', handleScroll, { passive: true })
333
+ window.addEventListener('resize', handleResize)
334
+ document.addEventListener('scroll', handleScroll, {
335
+ passive: true,
336
+ capture: true,
337
+ })
338
+ document.addEventListener('click', handleClickOutside)
339
+ })
340
+
341
+ onUnmounted(() => {
342
+ window.removeEventListener('scroll', handleScroll)
343
+ window.removeEventListener('resize', handleResize)
344
+ document.removeEventListener('scroll', handleScroll, { capture: true })
345
+ document.removeEventListener('click', handleClickOutside)
346
+ })
347
+
348
+ watch(isVisible, (newValue) => {
349
+ if (newValue) {
350
+ updatePosition()
351
+ }
352
+ })
353
+
354
+ return {
355
+ isVisible,
356
+ boxStyle,
357
+ arrowStyle,
358
+ showInfo,
359
+ hideInfo,
360
+ toggleInfo,
361
+ container,
362
+ icon,
363
+ infoBox,
364
+ textContent,
365
+ infoImage,
366
+ infoBoxWidth,
367
+ infoBoxHeight,
368
+ wrapperStyle,
369
+ textStyle,
370
+ onImageLoad,
371
+ isMobile,
372
+ }
373
+ },
374
+ computed: {
375
+ computedIconColor() {
376
+ return this.buttonType === 'error'
377
+ ? theme.colors.red
378
+ : theme.colors.mediumGray
379
+ },
380
+ },
381
+ }
382
+ </script>