bromcom-ui-next 0.1.29 → 0.1.30

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 (426) hide show
  1. package/dist/bromcom-ui/_commonjsHelpers-CvGrISen.js.map +1 -0
  2. package/dist/bromcom-ui/bcm-accordion.entry.esm.js.map +1 -1
  3. package/dist/bromcom-ui/bcm-alert.entry.esm.js.map +1 -1
  4. package/dist/bromcom-ui/bcm-button.bcm-drawer.bcm-linked.bcm-modal.bcm-pop-confirm.bcm-popover.bcm-tooltip.entry.esm.js.map +1 -0
  5. package/dist/bromcom-ui/bcm-divider.entry.esm.js.map +1 -1
  6. package/dist/bromcom-ui/bcm-dropdown.entry.esm.js.map +1 -1
  7. package/dist/bromcom-ui/bcm-segmented-picker-option.entry.esm.js.map +1 -1
  8. package/dist/bromcom-ui/bcm-segmented-picker.entry.esm.js.map +1 -1
  9. package/dist/bromcom-ui/bcm-switch.entry.esm.js.map +1 -1
  10. package/dist/bromcom-ui/bcm-tabs.entry.esm.js.map +1 -1
  11. package/dist/bromcom-ui/bcm-text.entry.esm.js.map +1 -1
  12. package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
  13. package/dist/bromcom-ui/bromcom-ui.esm.js.map +1 -1
  14. package/dist/bromcom-ui/floating-ui.dom-ltNPqX34.js.map +1 -0
  15. package/dist/bromcom-ui/generate-id-Crb5QsB-.js.map +1 -0
  16. package/dist/bromcom-ui/index-40rmUZjU.js.map +1 -0
  17. package/dist/bromcom-ui/index-BCaJmHBB.js.map +1 -0
  18. package/dist/bromcom-ui/{p-8ace5a6a.entry.js → p-0c7c6896.entry.js} +2 -2
  19. package/dist/bromcom-ui/p-0c7c6896.entry.js.map +1 -0
  20. package/dist/bromcom-ui/p-11d0e649.entry.js +2 -0
  21. package/dist/bromcom-ui/p-11d0e649.entry.js.map +1 -0
  22. package/dist/bromcom-ui/{p-6b585adc.entry.js → p-12f38632.entry.js} +2 -2
  23. package/dist/bromcom-ui/p-12f38632.entry.js.map +1 -0
  24. package/dist/bromcom-ui/{p-5e0702d1.entry.js → p-13cbd1f5.entry.js} +2 -2
  25. package/dist/bromcom-ui/p-13cbd1f5.entry.js.map +1 -0
  26. package/dist/bromcom-ui/{p-2480e468.entry.js → p-1507908f.entry.js} +2 -2
  27. package/dist/bromcom-ui/p-1507908f.entry.js.map +1 -0
  28. package/dist/bromcom-ui/p-1ce9913f.entry.js +2 -0
  29. package/dist/bromcom-ui/p-1ce9913f.entry.js.map +1 -0
  30. package/dist/bromcom-ui/p-206d767e.entry.js +2 -0
  31. package/dist/bromcom-ui/p-206d767e.entry.js.map +1 -0
  32. package/dist/bromcom-ui/{p-ee5f877f.entry.js → p-3cf7a7f4.entry.js} +2 -2
  33. package/dist/bromcom-ui/p-3cf7a7f4.entry.js.map +1 -0
  34. package/dist/bromcom-ui/p-4505feba.entry.js +2 -0
  35. package/dist/bromcom-ui/p-4505feba.entry.js.map +1 -0
  36. package/dist/bromcom-ui/{p-089edfdc.entry.js → p-496014ca.entry.js} +2 -2
  37. package/dist/bromcom-ui/p-496014ca.entry.js.map +1 -0
  38. package/dist/bromcom-ui/{p-26d2db9e.entry.js → p-4a932cd3.entry.js} +2 -2
  39. package/dist/bromcom-ui/p-4a932cd3.entry.js.map +1 -0
  40. package/dist/bromcom-ui/p-4e554b8d.entry.js +2 -0
  41. package/dist/bromcom-ui/p-4e554b8d.entry.js.map +1 -0
  42. package/dist/bromcom-ui/{p-360bff8a.entry.js → p-57c4c4c4.entry.js} +2 -2
  43. package/dist/bromcom-ui/p-57c4c4c4.entry.js.map +1 -0
  44. package/dist/bromcom-ui/{p-211ca6e0.entry.js → p-61293ab2.entry.js} +2 -2
  45. package/dist/bromcom-ui/p-61293ab2.entry.js.map +1 -0
  46. package/dist/bromcom-ui/{p-83f64814.entry.js → p-61789456.entry.js} +2 -2
  47. package/dist/bromcom-ui/p-61789456.entry.js.map +1 -0
  48. package/dist/bromcom-ui/{p-488d6ef4.entry.js → p-65d0f188.entry.js} +2 -2
  49. package/dist/bromcom-ui/p-65d0f188.entry.js.map +1 -0
  50. package/dist/bromcom-ui/{p-11f3e129.entry.js → p-83f707dc.entry.js} +2 -2
  51. package/dist/bromcom-ui/p-83f707dc.entry.js.map +1 -0
  52. package/dist/bromcom-ui/p-8ba02e7e.entry.js +2 -0
  53. package/dist/bromcom-ui/p-8ba02e7e.entry.js.map +1 -0
  54. package/dist/bromcom-ui/{p-22edf049.entry.js → p-9e9bf32e.entry.js} +2 -2
  55. package/dist/bromcom-ui/p-9e9bf32e.entry.js.map +1 -0
  56. package/dist/bromcom-ui/p-BfTCfPZ1.js.map +1 -1
  57. package/dist/bromcom-ui/p-CEcVC0yX.js.map +1 -1
  58. package/dist/bromcom-ui/p-CRwAh9Np.js +3 -0
  59. package/dist/bromcom-ui/p-CRwAh9Np.js.map +1 -0
  60. package/dist/bromcom-ui/p-IBjzkjef.js.map +1 -1
  61. package/dist/bromcom-ui/{p-a88f20e0.entry.js → p-c87a6acf.entry.js} +2 -2
  62. package/dist/bromcom-ui/p-c87a6acf.entry.js.map +1 -0
  63. package/dist/bromcom-ui/{p-c34f0a66.entry.js → p-e0e235a8.entry.js} +2 -2
  64. package/dist/bromcom-ui/p-e0e235a8.entry.js.map +1 -0
  65. package/dist/bromcom-ui/{p-0101b4f2.entry.js → p-e1ce8b55.entry.js} +2 -2
  66. package/dist/bromcom-ui/p-e1ce8b55.entry.js.map +1 -0
  67. package/dist/bromcom-ui/p-e4dddb0b.entry.js +2 -0
  68. package/dist/bromcom-ui/p-e4dddb0b.entry.js.map +1 -0
  69. package/dist/bromcom-ui/p-f9426924.entry.js +2 -0
  70. package/dist/bromcom-ui/p-f9426924.entry.js.map +1 -0
  71. package/dist/bromcom-ui/{p-c0e7f9d6.entry.js → p-faa0e62c.entry.js} +2 -2
  72. package/dist/bromcom-ui/p-faa0e62c.entry.js.map +1 -0
  73. package/dist/bromcom-ui/{p-bdaf5653.entry.js → p-fcb4399f.entry.js} +2 -2
  74. package/dist/bromcom-ui/p-fcb4399f.entry.js.map +1 -0
  75. package/dist/bromcom-ui/tv-SlGJ5EfR.js.map +1 -0
  76. package/dist/bromcom-ui/validation-messages-CUvT12BL.js.map +1 -0
  77. package/dist/cjs/bcm-accordion-group.cjs.entry.js +2 -4
  78. package/dist/cjs/bcm-accordion.cjs.entry.js +3 -5
  79. package/dist/cjs/bcm-accordion.entry.cjs.js.map +1 -1
  80. package/dist/cjs/bcm-alert.cjs.entry.js +3 -5
  81. package/dist/cjs/bcm-alert.entry.cjs.js.map +1 -1
  82. package/dist/cjs/bcm-avatar.cjs.entry.js +1 -3
  83. package/dist/cjs/bcm-badge.cjs.entry.js +3 -5
  84. package/dist/cjs/bcm-basic-badge.cjs.entry.js +3 -5
  85. package/dist/cjs/bcm-button-group.cjs.entry.js +3 -5
  86. package/dist/cjs/bcm-button.bcm-drawer.bcm-linked.bcm-modal.bcm-pop-confirm.bcm-popover.bcm-tooltip.entry.cjs.js.map +1 -0
  87. package/dist/cjs/bcm-button_7.cjs.entry.js +4131 -0
  88. package/dist/cjs/bcm-checkbox.cjs.entry.js +2 -4
  89. package/dist/cjs/bcm-chip.cjs.entry.js +2 -4
  90. package/dist/cjs/bcm-divider.cjs.entry.js +3 -5
  91. package/dist/cjs/bcm-divider.entry.cjs.js.map +1 -1
  92. package/dist/cjs/bcm-dropdown-item.cjs.entry.js +3 -5
  93. package/dist/cjs/bcm-dropdown.cjs.entry.js +3 -13
  94. package/dist/cjs/bcm-dropdown.entry.cjs.js.map +1 -1
  95. package/dist/cjs/bcm-input.cjs.entry.js +3 -5
  96. package/dist/cjs/bcm-radio-group.cjs.entry.js +3 -5
  97. package/dist/cjs/bcm-radio.cjs.entry.js +2 -4
  98. package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js +3 -5
  99. package/dist/cjs/bcm-segmented-picker-option.entry.cjs.js.map +1 -1
  100. package/dist/cjs/bcm-segmented-picker.cjs.entry.js +3 -5
  101. package/dist/cjs/bcm-segmented-picker.entry.cjs.js.map +1 -1
  102. package/dist/cjs/bcm-shortcut.cjs.entry.js +2 -4
  103. package/dist/cjs/bcm-switch.cjs.entry.js +4 -6
  104. package/dist/cjs/bcm-switch.entry.cjs.js.map +1 -1
  105. package/dist/cjs/bcm-tabs-content.cjs.entry.js +2 -4
  106. package/dist/cjs/bcm-tabs-list.cjs.entry.js +2 -4
  107. package/dist/cjs/bcm-tabs-trigger.cjs.entry.js +2 -4
  108. package/dist/cjs/bcm-tabs.cjs.entry.js +2 -4
  109. package/dist/cjs/bcm-tabs.entry.cjs.js.map +1 -1
  110. package/dist/cjs/bcm-text.cjs.entry.js +3 -5
  111. package/dist/cjs/bcm-text.entry.cjs.js.map +1 -1
  112. package/dist/cjs/bcm-textarea.cjs.entry.js +4 -6
  113. package/dist/cjs/bromcom-ui.cjs.js +3 -5
  114. package/dist/cjs/bromcom-ui.cjs.js.map +1 -1
  115. package/dist/cjs/generate-id-CG_BkTJu.js.map +1 -1
  116. package/dist/cjs/index-Bp6Dd2i1.js.map +1 -1
  117. package/dist/cjs/{index-BtiU-G2W.js → index-CmYzUr-k.js} +61 -372
  118. package/dist/cjs/index-CmYzUr-k.js.map +1 -0
  119. package/dist/cjs/index.cjs.js +0 -2
  120. package/dist/cjs/loader.cjs.js +2 -4
  121. package/dist/cjs/tv-ngpIbGlG.js.map +1 -1
  122. package/dist/collection/collection-manifest.json +5 -5
  123. package/dist/collection/components/accordion/accordion.component.js +8 -8
  124. package/dist/collection/components/accordion/accordion.component.js.map +1 -1
  125. package/dist/collection/components/accordion-group/accordion-group.component.js +3 -3
  126. package/dist/collection/components/accordion-group/types.js.map +1 -1
  127. package/dist/collection/components/alert/alert.component.js +6 -6
  128. package/dist/collection/components/alert/alert.css +1 -1
  129. package/dist/collection/components/avatar/avatar.component.js +14 -14
  130. package/dist/collection/components/badge/badge.component.js +15 -15
  131. package/dist/collection/components/basic-badge/basic-badge.component.js +9 -9
  132. package/dist/collection/components/button/button.component.js +32 -32
  133. package/dist/collection/components/button/button.css +1 -1
  134. package/dist/collection/components/button-group/button-group.component.js +15 -15
  135. package/dist/collection/components/checkbox/checkbox.component.js +13 -13
  136. package/dist/collection/components/chip/chip.component.js +8 -8
  137. package/dist/collection/components/divider/divider.component.js +4 -4
  138. package/dist/collection/components/divider/divider.css +1 -1
  139. package/dist/collection/components/drawer/drawer.component.js +429 -132
  140. package/dist/collection/components/drawer/drawer.component.js.map +1 -1
  141. package/dist/collection/components/drawer/drawer.css +1 -1
  142. package/dist/collection/components/drawer/types.js.map +1 -1
  143. package/dist/collection/components/dropdown/dropdown.component.js +3 -12
  144. package/dist/collection/components/dropdown/dropdown.component.js.map +1 -1
  145. package/dist/collection/components/dropdown/dropdown.css +1 -1
  146. package/dist/collection/components/dropdown-item/dropdown-item.component.js +9 -10
  147. package/dist/collection/components/dropdown-item/dropdown-item.component.js.map +1 -1
  148. package/dist/collection/components/input/input.component.js +44 -45
  149. package/dist/collection/components/input/input.component.js.map +1 -1
  150. package/dist/collection/components/linked/linked.component.js +507 -333
  151. package/dist/collection/components/linked/linked.component.js.map +1 -1
  152. package/dist/collection/components/linked/linked.css +1 -1
  153. package/dist/collection/components/modal/modal.component.js +137 -34
  154. package/dist/collection/components/modal/modal.component.js.map +1 -1
  155. package/dist/collection/components/modal/modal.css +1 -1
  156. package/dist/collection/components/pop-confirm/pop-confirm.component.js +668 -294
  157. package/dist/collection/components/pop-confirm/pop-confirm.component.js.map +1 -1
  158. package/dist/collection/components/pop-confirm/pop-confirm.css +1 -1
  159. package/dist/collection/components/popover/popover.component.js +533 -148
  160. package/dist/collection/components/popover/popover.component.js.map +1 -1
  161. package/dist/collection/components/popover/popover.css +1 -1
  162. package/dist/collection/components/radio/radio.component.js +13 -13
  163. package/dist/collection/components/radio-group/radio-group.component.js +15 -15
  164. package/dist/collection/components/segmented-picker/segmented-picker-option.component.js +10 -10
  165. package/dist/collection/components/segmented-picker/segmented-picker-option.component.js.map +1 -1
  166. package/dist/collection/components/segmented-picker/segmented-picker.component.js +7 -7
  167. package/dist/collection/components/segmented-picker/segmented-picker.component.js.map +1 -1
  168. package/dist/collection/components/shortcut/shortcut.js +4 -4
  169. package/dist/collection/components/switch/switch.component.js +17 -17
  170. package/dist/collection/components/switch/switch.css +1 -1
  171. package/dist/collection/components/tabs/tabs-content.component.js +3 -3
  172. package/dist/collection/components/tabs/tabs-list.component.js +3 -3
  173. package/dist/collection/components/tabs/tabs-trigger.component.js +8 -8
  174. package/dist/collection/components/tabs/tabs.component.js +6 -6
  175. package/dist/collection/components/tabs/tabs.component.js.map +1 -1
  176. package/dist/collection/components/text/text.component.js +6 -6
  177. package/dist/collection/components/text/text.css +1 -1
  178. package/dist/collection/components/textarea/textarea.component.js +39 -40
  179. package/dist/collection/components/textarea/textarea.component.js.map +1 -1
  180. package/dist/collection/components/tooltip/tooltip.component.js +567 -192
  181. package/dist/collection/components/tooltip/tooltip.component.js.map +1 -1
  182. package/dist/collection/components/tooltip/tooltip.css +1 -1
  183. package/dist/components/bcm-accordion-group.js +5 -3
  184. package/dist/components/bcm-accordion-group.js.map +1 -1
  185. package/dist/components/bcm-accordion.js +6 -4
  186. package/dist/components/bcm-accordion.js.map +1 -1
  187. package/dist/components/bcm-alert.js +6 -4
  188. package/dist/components/bcm-alert.js.map +1 -1
  189. package/dist/components/bcm-avatar.js +5 -3
  190. package/dist/components/bcm-avatar.js.map +1 -1
  191. package/dist/components/bcm-badge.js +1 -1
  192. package/dist/components/bcm-basic-badge.js +6 -4
  193. package/dist/components/bcm-basic-badge.js.map +1 -1
  194. package/dist/components/bcm-button-group.js +6 -4
  195. package/dist/components/bcm-button-group.js.map +1 -1
  196. package/dist/components/bcm-button.js +1 -1
  197. package/dist/components/bcm-checkbox.js +5 -3
  198. package/dist/components/bcm-checkbox.js.map +1 -1
  199. package/dist/components/bcm-chip.js +5 -3
  200. package/dist/components/bcm-chip.js.map +1 -1
  201. package/dist/components/bcm-divider.js +6 -4
  202. package/dist/components/bcm-divider.js.map +1 -1
  203. package/dist/components/bcm-drawer.js +228 -115
  204. package/dist/components/bcm-drawer.js.map +1 -1
  205. package/dist/components/bcm-dropdown-item.js +7 -5
  206. package/dist/components/bcm-dropdown-item.js.map +1 -1
  207. package/dist/components/bcm-dropdown.js +8 -15
  208. package/dist/components/bcm-dropdown.js.map +1 -1
  209. package/dist/components/bcm-input.js +6 -4
  210. package/dist/components/bcm-input.js.map +1 -1
  211. package/dist/components/bcm-linked.js +1 -1
  212. package/dist/components/bcm-modal.js +56 -4
  213. package/dist/components/bcm-modal.js.map +1 -1
  214. package/dist/components/bcm-pop-confirm.js +278 -171
  215. package/dist/components/bcm-pop-confirm.js.map +1 -1
  216. package/dist/components/bcm-popover.js +355 -110
  217. package/dist/components/bcm-popover.js.map +1 -1
  218. package/dist/components/bcm-radio-group.js +6 -4
  219. package/dist/components/bcm-radio-group.js.map +1 -1
  220. package/dist/components/bcm-radio.js +5 -3
  221. package/dist/components/bcm-radio.js.map +1 -1
  222. package/dist/components/bcm-segmented-picker-option.js +6 -4
  223. package/dist/components/bcm-segmented-picker-option.js.map +1 -1
  224. package/dist/components/bcm-segmented-picker.js +6 -4
  225. package/dist/components/bcm-segmented-picker.js.map +1 -1
  226. package/dist/components/bcm-shortcut.js +5 -3
  227. package/dist/components/bcm-shortcut.js.map +1 -1
  228. package/dist/components/bcm-switch.js +7 -5
  229. package/dist/components/bcm-switch.js.map +1 -1
  230. package/dist/components/bcm-tabs-content.js +5 -3
  231. package/dist/components/bcm-tabs-content.js.map +1 -1
  232. package/dist/components/bcm-tabs-list.js +5 -3
  233. package/dist/components/bcm-tabs-list.js.map +1 -1
  234. package/dist/components/bcm-tabs-trigger.js +5 -3
  235. package/dist/components/bcm-tabs-trigger.js.map +1 -1
  236. package/dist/components/bcm-tabs.js +5 -3
  237. package/dist/components/bcm-tabs.js.map +1 -1
  238. package/dist/components/bcm-text.js +6 -4
  239. package/dist/components/bcm-text.js.map +1 -1
  240. package/dist/components/bcm-textarea.js +7 -5
  241. package/dist/components/bcm-textarea.js.map +1 -1
  242. package/dist/components/bcm-tooltip.js +364 -127
  243. package/dist/components/bcm-tooltip.js.map +1 -1
  244. package/dist/components/index.js +41 -366
  245. package/dist/components/index.js.map +1 -1
  246. package/dist/components/p-6VLsKZvR.js +469 -0
  247. package/dist/components/p-6VLsKZvR.js.map +1 -0
  248. package/dist/components/p-BfTCfPZ1.js.map +1 -1
  249. package/dist/components/p-CEcVC0yX.js.map +1 -1
  250. package/dist/components/{p-CQF7wlXf.js → p-CaemikSK.js} +8 -6
  251. package/dist/components/p-CaemikSK.js.map +1 -0
  252. package/dist/components/{p-DHONP_n4.js → p-CsIBm0J5.js} +9 -7
  253. package/dist/components/p-CsIBm0J5.js.map +1 -0
  254. package/dist/components/{p-CzcTU1ty.js → p-DBDSgIvP.js} +40 -23
  255. package/dist/components/p-DBDSgIvP.js.map +1 -0
  256. package/dist/components/p-IBjzkjef.js.map +1 -1
  257. package/dist/esm/bcm-accordion-group.entry.js +2 -4
  258. package/dist/esm/bcm-accordion.entry.js +3 -5
  259. package/dist/esm/bcm-accordion.entry.js.map +1 -1
  260. package/dist/esm/bcm-alert.entry.js +3 -5
  261. package/dist/esm/bcm-alert.entry.js.map +1 -1
  262. package/dist/esm/bcm-avatar.entry.js +1 -3
  263. package/dist/esm/bcm-badge.entry.js +3 -5
  264. package/dist/esm/bcm-basic-badge.entry.js +3 -5
  265. package/dist/esm/bcm-button-group.entry.js +3 -5
  266. package/dist/esm/bcm-button.bcm-drawer.bcm-linked.bcm-modal.bcm-pop-confirm.bcm-popover.bcm-tooltip.entry.js.map +1 -0
  267. package/dist/esm/bcm-button_7.entry.js +4123 -0
  268. package/dist/esm/bcm-checkbox.entry.js +2 -4
  269. package/dist/esm/bcm-chip.entry.js +2 -4
  270. package/dist/esm/bcm-divider.entry.js +3 -5
  271. package/dist/esm/bcm-divider.entry.js.map +1 -1
  272. package/dist/esm/bcm-dropdown-item.entry.js +3 -5
  273. package/dist/esm/bcm-dropdown.entry.js +3 -13
  274. package/dist/esm/bcm-dropdown.entry.js.map +1 -1
  275. package/dist/esm/bcm-input.entry.js +3 -5
  276. package/dist/esm/bcm-radio-group.entry.js +3 -5
  277. package/dist/esm/bcm-radio.entry.js +2 -4
  278. package/dist/esm/bcm-segmented-picker-option.entry.js +3 -5
  279. package/dist/esm/bcm-segmented-picker-option.entry.js.map +1 -1
  280. package/dist/esm/bcm-segmented-picker.entry.js +3 -5
  281. package/dist/esm/bcm-segmented-picker.entry.js.map +1 -1
  282. package/dist/esm/bcm-shortcut.entry.js +2 -4
  283. package/dist/esm/bcm-switch.entry.js +4 -6
  284. package/dist/esm/bcm-switch.entry.js.map +1 -1
  285. package/dist/esm/bcm-tabs-content.entry.js +2 -4
  286. package/dist/esm/bcm-tabs-list.entry.js +2 -4
  287. package/dist/esm/bcm-tabs-trigger.entry.js +2 -4
  288. package/dist/esm/bcm-tabs.entry.js +2 -4
  289. package/dist/esm/bcm-tabs.entry.js.map +1 -1
  290. package/dist/esm/bcm-text.entry.js +3 -5
  291. package/dist/esm/bcm-text.entry.js.map +1 -1
  292. package/dist/esm/bcm-textarea.entry.js +4 -6
  293. package/dist/esm/bromcom-ui.js +4 -6
  294. package/dist/esm/bromcom-ui.js.map +1 -1
  295. package/dist/esm/generate-id-IBjzkjef.js.map +1 -1
  296. package/dist/esm/index-BfTCfPZ1.js.map +1 -1
  297. package/dist/esm/{index-BuuGCw0z.js → index-CRwAh9Np.js} +62 -372
  298. package/dist/esm/index-CRwAh9Np.js.map +1 -0
  299. package/dist/esm/index.js +0 -2
  300. package/dist/esm/loader.js +3 -5
  301. package/dist/esm/tv-CEcVC0yX.js.map +1 -1
  302. package/dist/types/components/accordion-group/types.d.ts +2 -2
  303. package/dist/types/components/drawer/drawer.component.d.ts +143 -3
  304. package/dist/types/components/drawer/types.d.ts +1 -1
  305. package/dist/types/components/dropdown/dropdown.component.d.ts +0 -3
  306. package/dist/types/components/linked/linked.component.d.ts +152 -36
  307. package/dist/types/components/modal/modal.component.d.ts +121 -0
  308. package/dist/types/components/pop-confirm/pop-confirm.component.d.ts +263 -143
  309. package/dist/types/components/popover/popover.component.d.ts +94 -39
  310. package/dist/types/components/tooltip/tooltip.component.d.ts +147 -56
  311. package/dist/types/components.d.ts +1569 -359
  312. package/dist/types/stencil-public-runtime.d.ts +50 -3
  313. package/package.json +1 -1
  314. package/dist/bromcom-ui/bcm-button.bcm-drawer.bcm-modal.entry.esm.js.map +0 -1
  315. package/dist/bromcom-ui/bcm-linked.entry.esm.js.map +0 -1
  316. package/dist/bromcom-ui/bcm-pop-confirm.entry.esm.js.map +0 -1
  317. package/dist/bromcom-ui/bcm-popover.entry.esm.js.map +0 -1
  318. package/dist/bromcom-ui/bcm-tooltip.entry.esm.js.map +0 -1
  319. package/dist/bromcom-ui/p-0101b4f2.entry.js.map +0 -1
  320. package/dist/bromcom-ui/p-089edfdc.entry.js.map +0 -1
  321. package/dist/bromcom-ui/p-08bc93c5.entry.js +0 -2
  322. package/dist/bromcom-ui/p-08bc93c5.entry.js.map +0 -1
  323. package/dist/bromcom-ui/p-09be61c3.entry.js +0 -2
  324. package/dist/bromcom-ui/p-09be61c3.entry.js.map +0 -1
  325. package/dist/bromcom-ui/p-11851391.entry.js +0 -2
  326. package/dist/bromcom-ui/p-11851391.entry.js.map +0 -1
  327. package/dist/bromcom-ui/p-11f3e129.entry.js.map +0 -1
  328. package/dist/bromcom-ui/p-211ca6e0.entry.js.map +0 -1
  329. package/dist/bromcom-ui/p-22edf049.entry.js.map +0 -1
  330. package/dist/bromcom-ui/p-2480e468.entry.js.map +0 -1
  331. package/dist/bromcom-ui/p-26d2db9e.entry.js.map +0 -1
  332. package/dist/bromcom-ui/p-2d0a6472.entry.js +0 -2
  333. package/dist/bromcom-ui/p-2d0a6472.entry.js.map +0 -1
  334. package/dist/bromcom-ui/p-360bff8a.entry.js.map +0 -1
  335. package/dist/bromcom-ui/p-488d6ef4.entry.js.map +0 -1
  336. package/dist/bromcom-ui/p-5e0702d1.entry.js.map +0 -1
  337. package/dist/bromcom-ui/p-63228f7e.entry.js +0 -2
  338. package/dist/bromcom-ui/p-63228f7e.entry.js.map +0 -1
  339. package/dist/bromcom-ui/p-6b585adc.entry.js.map +0 -1
  340. package/dist/bromcom-ui/p-6d7d73d5.entry.js +0 -2
  341. package/dist/bromcom-ui/p-6d7d73d5.entry.js.map +0 -1
  342. package/dist/bromcom-ui/p-7234af90.entry.js +0 -2
  343. package/dist/bromcom-ui/p-7234af90.entry.js.map +0 -1
  344. package/dist/bromcom-ui/p-83f64814.entry.js.map +0 -1
  345. package/dist/bromcom-ui/p-8ace5a6a.entry.js.map +0 -1
  346. package/dist/bromcom-ui/p-8d74249a.entry.js +0 -2
  347. package/dist/bromcom-ui/p-8d74249a.entry.js.map +0 -1
  348. package/dist/bromcom-ui/p-BuuGCw0z.js +0 -3
  349. package/dist/bromcom-ui/p-BuuGCw0z.js.map +0 -1
  350. package/dist/bromcom-ui/p-DxMLMJ3r.js +0 -2
  351. package/dist/bromcom-ui/p-DxMLMJ3r.js.map +0 -1
  352. package/dist/bromcom-ui/p-a88f20e0.entry.js.map +0 -1
  353. package/dist/bromcom-ui/p-bad299f2.entry.js +0 -2
  354. package/dist/bromcom-ui/p-bad299f2.entry.js.map +0 -1
  355. package/dist/bromcom-ui/p-bdaf5653.entry.js.map +0 -1
  356. package/dist/bromcom-ui/p-c0e7f9d6.entry.js.map +0 -1
  357. package/dist/bromcom-ui/p-c34f0a66.entry.js.map +0 -1
  358. package/dist/bromcom-ui/p-d7cea19f.entry.js +0 -2
  359. package/dist/bromcom-ui/p-d7cea19f.entry.js.map +0 -1
  360. package/dist/bromcom-ui/p-e5e0ac07.entry.js +0 -2
  361. package/dist/bromcom-ui/p-e5e0ac07.entry.js.map +0 -1
  362. package/dist/bromcom-ui/p-ee5f877f.entry.js.map +0 -1
  363. package/dist/bromcom-ui/p-fbccbffc.entry.js +0 -2
  364. package/dist/bromcom-ui/p-fbccbffc.entry.js.map +0 -1
  365. package/dist/cjs/bcm-accordion-group.cjs.entry.js.map +0 -1
  366. package/dist/cjs/bcm-accordion.cjs.entry.js.map +0 -1
  367. package/dist/cjs/bcm-alert.cjs.entry.js.map +0 -1
  368. package/dist/cjs/bcm-avatar.cjs.entry.js.map +0 -1
  369. package/dist/cjs/bcm-badge.cjs.entry.js.map +0 -1
  370. package/dist/cjs/bcm-basic-badge.cjs.entry.js.map +0 -1
  371. package/dist/cjs/bcm-button-group.cjs.entry.js.map +0 -1
  372. package/dist/cjs/bcm-button.bcm-drawer.bcm-modal.entry.cjs.js.map +0 -1
  373. package/dist/cjs/bcm-button_3.cjs.entry.js +0 -794
  374. package/dist/cjs/bcm-button_3.cjs.entry.js.map +0 -1
  375. package/dist/cjs/bcm-checkbox.cjs.entry.js.map +0 -1
  376. package/dist/cjs/bcm-chip.cjs.entry.js.map +0 -1
  377. package/dist/cjs/bcm-divider.cjs.entry.js.map +0 -1
  378. package/dist/cjs/bcm-dropdown-item.cjs.entry.js.map +0 -1
  379. package/dist/cjs/bcm-dropdown.cjs.entry.js.map +0 -1
  380. package/dist/cjs/bcm-input.cjs.entry.js.map +0 -1
  381. package/dist/cjs/bcm-linked.cjs.entry.js +0 -343
  382. package/dist/cjs/bcm-linked.cjs.entry.js.map +0 -1
  383. package/dist/cjs/bcm-linked.entry.cjs.js.map +0 -1
  384. package/dist/cjs/bcm-pop-confirm.cjs.entry.js +0 -250
  385. package/dist/cjs/bcm-pop-confirm.cjs.entry.js.map +0 -1
  386. package/dist/cjs/bcm-pop-confirm.entry.cjs.js.map +0 -1
  387. package/dist/cjs/bcm-popover.cjs.entry.js +0 -189
  388. package/dist/cjs/bcm-popover.cjs.entry.js.map +0 -1
  389. package/dist/cjs/bcm-popover.entry.cjs.js.map +0 -1
  390. package/dist/cjs/bcm-radio-group.cjs.entry.js.map +0 -1
  391. package/dist/cjs/bcm-radio.cjs.entry.js.map +0 -1
  392. package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js.map +0 -1
  393. package/dist/cjs/bcm-segmented-picker.cjs.entry.js.map +0 -1
  394. package/dist/cjs/bcm-shortcut.cjs.entry.js.map +0 -1
  395. package/dist/cjs/bcm-switch.cjs.entry.js.map +0 -1
  396. package/dist/cjs/bcm-tabs-content.cjs.entry.js.map +0 -1
  397. package/dist/cjs/bcm-tabs-list.cjs.entry.js.map +0 -1
  398. package/dist/cjs/bcm-tabs-trigger.cjs.entry.js.map +0 -1
  399. package/dist/cjs/bcm-tabs.cjs.entry.js.map +0 -1
  400. package/dist/cjs/bcm-text.cjs.entry.js.map +0 -1
  401. package/dist/cjs/bcm-textarea.cjs.entry.js.map +0 -1
  402. package/dist/cjs/bcm-tooltip.cjs.entry.js +0 -180
  403. package/dist/cjs/bcm-tooltip.cjs.entry.js.map +0 -1
  404. package/dist/cjs/bcm-tooltip.entry.cjs.js.map +0 -1
  405. package/dist/cjs/floating-ui.dom-DyKmFgkP.js +0 -1605
  406. package/dist/cjs/floating-ui.dom-DyKmFgkP.js.map +0 -1
  407. package/dist/cjs/index-BtiU-G2W.js.map +0 -1
  408. package/dist/components/p-BHwftRkk.js +0 -379
  409. package/dist/components/p-BHwftRkk.js.map +0 -1
  410. package/dist/components/p-CQF7wlXf.js.map +0 -1
  411. package/dist/components/p-CzcTU1ty.js.map +0 -1
  412. package/dist/components/p-DHONP_n4.js.map +0 -1
  413. package/dist/esm/bcm-button.bcm-drawer.bcm-modal.entry.js.map +0 -1
  414. package/dist/esm/bcm-button_3.entry.js +0 -790
  415. package/dist/esm/bcm-button_3.entry.js.map +0 -1
  416. package/dist/esm/bcm-linked.entry.js +0 -341
  417. package/dist/esm/bcm-linked.entry.js.map +0 -1
  418. package/dist/esm/bcm-pop-confirm.entry.js +0 -248
  419. package/dist/esm/bcm-pop-confirm.entry.js.map +0 -1
  420. package/dist/esm/bcm-popover.entry.js +0 -187
  421. package/dist/esm/bcm-popover.entry.js.map +0 -1
  422. package/dist/esm/bcm-tooltip.entry.js +0 -178
  423. package/dist/esm/bcm-tooltip.entry.js.map +0 -1
  424. package/dist/esm/floating-ui.dom-DxMLMJ3r.js +0 -1598
  425. package/dist/esm/floating-ui.dom-DxMLMJ3r.js.map +0 -1
  426. package/dist/esm/index-BuuGCw0z.js.map +0 -1
@@ -1,194 +1,449 @@
1
- import { arrow, autoUpdate, computePosition, flip, offset, shift } from "@floating-ui/dom";
2
1
  import { h } from "@stencil/core";
2
+ import { computePosition, flip, shift, offset, arrow, autoUpdate } from "@floating-ui/dom";
3
3
  import { tv } from "../../utils/tv";
4
4
  /**
5
5
  * @component BcmTooltip
6
- * @description A lightweight tooltip component that displays brief contextual information when hovering or clicking on a target element.
7
- * Supports different sizes, trigger types (click or hover), placements (top, right, bottom, left), and can be controlled via slots or props.
6
+ * @description A flexible tooltip component that provides contextual information on hover or click.
7
+ * Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
8
+ * Automatically handles overflow, flipping, and complex shadow DOM scenarios.
8
9
  *
9
- * @example Basic Hover Tooltip
10
- * <bcm-tooltip trigger="hover" size="medium" placement="top" message="This is a tooltip.">
11
- * <bcm-button>Hover Me</bcm-button>
10
+ * @slot - The trigger element that will show the tooltip
11
+ * @slot content - Custom rich content for the tooltip (overrides message prop)
12
+ *
13
+ * @part tooltip - The tooltip container element (for custom styling)
14
+ * @part arrow - The arrow pointer element
15
+ * @part content - The content wrapper element
16
+ *
17
+ * @example
18
+ * ```html
19
+ * <!-- Basic usage with text message -->
20
+ * <bcm-tooltip message="This is a tooltip">
21
+ * <button>Hover me</button>
22
+ * </bcm-tooltip>
23
+ *
24
+ * <!-- With custom rich content -->
25
+ * <bcm-tooltip placement="right" size="large">
26
+ * <button>Click me</button>
27
+ * <div slot="content">
28
+ * <strong>Rich content</strong>
29
+ * <p>You can add any HTML here</p>
30
+ * </div>
12
31
  * </bcm-tooltip>
13
32
  *
14
- * @example Click Tooltip with Programmatic Control
15
- * <bcm-tooltip id="my-tooltip" trigger="click" message="Controlled tooltip.">
16
- * <bcm-button>Click Me</bcm-button>
33
+ * <!-- Click trigger with custom delays -->
34
+ * <bcm-tooltip trigger="click" show-delay="0" hide-delay="0">
35
+ * <span>Click me</span>
36
+ * </bcm-tooltip>
37
+ *
38
+ * <!-- Mouse following mode -->
39
+ * <bcm-tooltip follow={true} message="I follow your cursor!">
40
+ * <div>Move your mouse here</div>
41
+ * </bcm-tooltip>
42
+ *
43
+ * <!-- Programmatic control -->
44
+ * <bcm-tooltip id="myTooltip" message="Programmatic tooltip">
45
+ * <span>Trigger</span>
17
46
  * </bcm-tooltip>
18
47
  * <script>
19
- * const tooltip = document.querySelector('#my-tooltip');
20
- * tooltip.openTooltip(); // Opens the tooltip
21
- * tooltip.closeTooltip(); // Closes the tooltip
48
+ * const tooltip = document.getElementById('myTooltip');
49
+ * tooltip.show();
50
+ * setTimeout(() => tooltip.hide(), 2000);
22
51
  * </script>
23
52
  *
24
- * @slot - Default slot for the target element that triggers the tooltip
25
- * @slot tooltip - Slot for custom tooltip content
26
- *
27
- * @csspart tooltip - The root tooltip container element, stylable for the entire tooltip
28
- * @csspart arrow - The arrow element of the tooltip, stylable for the positioning arrow
53
+ * <!-- Custom styling with CSS parts -->
54
+ * <style>
55
+ * bcm-tooltip::part(tooltip) {
56
+ * background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
57
+ * border-radius: 12px;
58
+ * }
59
+ * bcm-tooltip::part(arrow) {
60
+ * background: #667eea;
61
+ * }
62
+ * </style>
63
+ * ```
29
64
  */
30
- export class Tooltip {
65
+ export class BcmTooltip {
31
66
  constructor() {
67
+ this.mouseX = 0;
68
+ this.mouseY = 0;
32
69
  /**
33
- * @prop {('click' | 'hover')} trigger - Defines the interaction type to show/hide the tooltip.
34
- * 'click' toggles on click, 'hover' shows on mouse enter and hides on mouse leave.
35
- * Default: 'hover'
70
+ * How the tooltip is triggered
71
+ * - 'hover': Shows on mouse enter, hides on mouse leave
72
+ * - 'click': Toggles on click, closes on outside click or Escape key
36
73
  */
37
74
  this.trigger = 'hover';
38
75
  /**
39
- * @prop {('top' | 'right' | 'bottom' | 'left')} placement - Defines the position of the tooltip relative to the target element.
40
- * Default: 'top'
76
+ * Preferred placement of the tooltip relative to the trigger
77
+ * Note: Tooltip will automatically flip if there's not enough space
78
+ * - 'top': Above the trigger element
79
+ * - 'right': To the right of the trigger element
80
+ * - 'bottom': Below the trigger element
81
+ * - 'left': To the left of the trigger element
41
82
  */
42
83
  this.placement = 'top';
43
84
  /**
44
- * @prop {('small' | 'medium' | 'large')} size - Defines the size of the tooltip.
45
- * Controls the text size and padding of the tooltip content.
46
- * Default: 'medium'
85
+ * Size variant of the tooltip
86
+ * - 'small': Compact tooltip with minimal padding (text-size-3, py-1 px-2)
87
+ * - 'medium': Standard tooltip size (text-size-4, py-1.5 px-3)
88
+ * - 'large': Larger tooltip for more content (text-size-5, py-2 px-4)
47
89
  */
48
90
  this.size = 'medium';
49
91
  /**
50
- * @prop {number} showDelay - Delay in milliseconds before showing or hiding the tooltip.
51
- * Helps prevent flickering on quick mouse movements.
52
- * Default: 150
92
+ * Delay in milliseconds before showing the tooltip
93
+ * Useful to prevent tooltips from appearing on quick mouse movements
53
94
  */
54
95
  this.showDelay = 150;
55
- this.open = false;
56
- this.toggleTooltip = () => {
57
- this.open = !this.open;
58
- this.updateOutsideClickListener();
96
+ /**
97
+ * Delay in milliseconds before hiding the tooltip
98
+ * Provides a grace period for mouse movements
99
+ */
100
+ this.hideDelay = 100;
101
+ /**
102
+ * Whether to show an arrow pointing to the trigger element
103
+ * Note: Arrow is automatically hidden in 'follow' mode
104
+ */
105
+ this.arrow = true;
106
+ /**
107
+ * Disables the tooltip, preventing it from showing
108
+ * Useful for conditional tooltips based on application state
109
+ */
110
+ this.disabled = false;
111
+ /**
112
+ * Distance in pixels between the tooltip and the trigger element
113
+ * Also used as the offset in 'follow' mode
114
+ */
115
+ this.offset = 12;
116
+ /**
117
+ * Makes the tooltip follow the mouse cursor
118
+ * When enabled:
119
+ * - Arrow is hidden
120
+ * - Tooltip position updates smoothly with cursor movement
121
+ * - Pointer events are disabled on tooltip to prevent interference
122
+ */
123
+ this.follow = false;
124
+ this.isOpen = false;
125
+ this.handleSlotChange = () => {
126
+ var _a;
127
+ const slot = (_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot:not([name])');
128
+ if (!slot)
129
+ return;
130
+ const elements = slot.assignedElements();
131
+ const assignedElement = elements[0];
132
+ // Get the actual element position from the host, not shadow DOM
133
+ // This ensures proper positioning across shadow boundaries
134
+ this.triggerRef = (assignedElement || this.host);
135
+ if (!this.triggerRef)
136
+ return;
137
+ // Setup ARIA relationship
138
+ if (this.tooltipRef && this.tooltipId) {
139
+ this.triggerRef.setAttribute('aria-describedby', this.tooltipId);
140
+ }
141
+ // Remove old listeners
142
+ this.removeTriggerListeners();
143
+ // Add new listeners
144
+ this.setupTriggerListeners();
145
+ };
146
+ this.handleMouseEnter = () => {
147
+ if (!this.disabled) {
148
+ this.show();
149
+ }
59
150
  };
60
- this.showTooltip = () => {
61
- clearTimeout(this.hoverTimeout);
62
- this.hoverTimeout = setTimeout(() => {
63
- this.open = true;
64
- this.updateOutsideClickListener();
65
- }, this.showDelay);
151
+ this.handleMouseLeave = () => {
152
+ this.hide();
66
153
  };
67
- this.hideTooltip = () => {
68
- clearTimeout(this.hoverTimeout);
69
- this.hoverTimeout = setTimeout(() => {
70
- this.open = false;
71
- this.updateOutsideClickListener();
72
- }, this.showDelay);
154
+ this.handleMouseMove = (e) => {
155
+ this.mouseX = e.clientX;
156
+ this.mouseY = e.clientY;
73
157
  };
74
- this.handleSlotChange = () => {
75
- const slot = this.el.shadowRoot.querySelector('slot');
76
- const elements = slot.assignedElements();
77
- this.targetElement = elements[0];
78
- if (this.targetElement) {
79
- this.targetElement.removeEventListener('click', this.toggleTooltip);
80
- this.targetElement.removeEventListener('mouseenter', this.showTooltip);
81
- this.targetElement.removeEventListener('mouseleave', this.hideTooltip);
82
- if (this.trigger === 'click') {
83
- this.targetElement.addEventListener('click', this.toggleTooltip);
84
- this.targetElement.setAttribute('aria-expanded', this.open.toString());
85
- this.targetElement.setAttribute('aria-describedby', 'tooltip');
86
- }
87
- if (this.trigger === 'hover') {
88
- this.targetElement.addEventListener('mouseenter', this.showTooltip);
89
- this.targetElement.addEventListener('mouseleave', this.hideTooltip);
90
- this.targetElement.setAttribute('aria-describedby', 'tooltip');
91
- }
92
- if (this.tooltipElement && !this.cleanupAutoUpdate) {
93
- this.cleanupAutoUpdate = autoUpdate(this.targetElement, this.tooltipElement, () => this.updatePosition(), { animationFrame: false });
94
- }
158
+ this.handleClick = () => {
159
+ if (!this.disabled) {
160
+ this.toggle();
95
161
  }
96
162
  };
97
- this.handleOutsideClick = (event) => {
98
- if (!this.el.contains(event.target) && this.open) {
99
- this.open = false;
100
- this.updateOutsideClickListener();
163
+ this.handleOutsideClick = (e) => {
164
+ var _a;
165
+ const target = e.target;
166
+ if (!this.host.contains(target) && !((_a = this.tooltipRef) === null || _a === void 0 ? void 0 : _a.contains(target))) {
167
+ this.hide();
101
168
  }
102
169
  };
103
- this.updatePosition = async () => {
104
- if (!this.targetElement || !this.tooltipElement || !this.arrowElement)
105
- return;
106
- const { x, y, placement, middlewareData } = await computePosition(this.targetElement, this.tooltipElement, {
107
- placement: this.placement,
108
- middleware: [offset(12), flip({ fallbackPlacements: ['top', 'left', 'bottom', 'right'] }), shift({ padding: 8 }), arrow({ element: this.arrowElement })],
109
- });
110
- Object.assign(this.tooltipElement.style, {
111
- left: `${x}px`,
112
- top: `${y}px`,
113
- });
114
- const { x: arrowX, y: arrowY } = middlewareData.arrow || { x: 0, y: 0 };
115
- const basePlacement = placement.split('-')[0];
116
- const staticSide = {
117
- top: 'bottom',
118
- right: 'left',
119
- bottom: 'top',
120
- left: 'right',
121
- }[basePlacement];
122
- Object.assign(this.arrowElement.style, {
123
- left: arrowX != null ? `${arrowX}px` : '',
124
- top: arrowY != null ? `${arrowY}px` : '',
125
- [staticSide]: '-4px',
126
- });
170
+ this.handleKeyDown = (e) => {
171
+ if (e.key === 'Escape' && this.isOpen) {
172
+ // Only close if this tooltip's popover element is the topmost
173
+ const topmostPopover = document.querySelector('[popover]:popover-open:last-of-type');
174
+ if (topmostPopover === this.tooltipRef) {
175
+ e.stopPropagation(); // Prevent event from reaching parent popovers
176
+ this.hide();
177
+ // Return focus to trigger element
178
+ if (this.triggerRef && 'focus' in this.triggerRef) {
179
+ this.triggerRef.focus();
180
+ }
181
+ }
182
+ }
183
+ };
184
+ this.handleToggle = (e) => {
185
+ const toggleEvent = e;
186
+ // Sync our internal state with popover state
187
+ if (toggleEvent.newState === 'open' && !this.isOpen) {
188
+ this.isOpen = true;
189
+ }
190
+ else if (toggleEvent.newState === 'closed' && this.isOpen) {
191
+ this.isOpen = false;
192
+ }
127
193
  };
128
194
  this.tooltipClass = tv({
129
195
  slots: {
130
- tooltip: 'bcm-ui-element bcm-tooltip absolute bg-[--tooltip-bg] rounded-md shadow-3 py-1 px-3 min-w-max z-[9999] text-color-base font-medium',
131
- arrow: 'absolute w-4 h-4 bg-[--tooltip-bg] transform rotate-45 z-[-1]',
196
+ tooltip: 'bcm-ui-element fixed m-0 bg-color-default-dark text-color-base rounded-md shadow-3 font-medium z-[9999]',
197
+ arrow: 'absolute w-2 h-2 bg-color-default-dark rotate-45',
198
+ content: '',
132
199
  },
133
200
  variants: {
134
201
  size: {
135
- small: { tooltip: 'text-size-3' },
136
- medium: { tooltip: 'text-size-4' },
137
- large: { tooltip: 'text-size-5' },
202
+ small: {
203
+ tooltip: 'text-size-3 py-1 px-2',
204
+ },
205
+ medium: {
206
+ tooltip: 'text-size-4 py-1.5 px-3',
207
+ },
208
+ large: {
209
+ tooltip: 'text-size-5 py-2 px-4',
210
+ },
138
211
  },
139
- isOpen: {
140
- true: { tooltip: 'block' },
141
- false: { tooltip: 'hidden' },
212
+ follow: {
213
+ true: {
214
+ tooltip: 'pointer-events-none',
215
+ },
142
216
  },
143
217
  },
144
- defaultVariants: {
145
- size: 'medium',
146
- isOpen: false,
147
- },
148
- }, { twMerge: false });
218
+ });
149
219
  }
150
- disconnectedCallback() {
151
- var _a;
152
- document.removeEventListener('click', this.handleOutsideClick);
153
- if (this.targetElement) {
154
- this.targetElement.removeEventListener('click', this.toggleTooltip);
155
- this.targetElement.removeEventListener('mouseenter', this.showTooltip);
156
- this.targetElement.removeEventListener('mouseleave', this.hideTooltip);
220
+ handleDisabledChange(disabled) {
221
+ if (disabled && this.isOpen) {
222
+ this.hide();
157
223
  }
158
- (_a = this.cleanupAutoUpdate) === null || _a === void 0 ? void 0 : _a.call(this);
159
- this.cleanupAutoUpdate = null;
160
- clearTimeout(this.hoverTimeout);
161
224
  }
162
- updateOutsideClickListener() {
163
- if (this.open) {
164
- document.addEventListener('click', this.handleOutsideClick);
225
+ handleTriggerChange() {
226
+ this.removeTriggerListeners();
227
+ this.setupOutsideClickListener();
228
+ if (this.triggerRef) {
229
+ this.setupTriggerListeners();
230
+ }
231
+ }
232
+ async handleOpenChange(open) {
233
+ if (!this.tooltipRef)
234
+ return;
235
+ if (open) {
236
+ this.tooltipRef.showPopover();
237
+ // Wait for next frame to ensure popover is rendered
238
+ await new Promise(resolve => requestAnimationFrame(() => resolve(undefined)));
239
+ if (this.follow) {
240
+ this.startFollowing();
241
+ }
242
+ else {
243
+ await this.updatePosition();
244
+ this.startAutoUpdate();
245
+ }
165
246
  }
166
247
  else {
167
- document.removeEventListener('click', this.handleOutsideClick);
248
+ this.tooltipRef.hidePopover();
249
+ this.stopFollowing();
250
+ this.stopAutoUpdate();
168
251
  }
169
252
  }
170
253
  /**
171
- * @method {Promise<void>} openTooltip - Programmatically opens the tooltip.
172
- * Triggers the showTooltip logic with the specified delay.
173
- * @returns {Promise<void>} A promise that resolves when the tooltip is opened.
254
+ * Programmatically shows the tooltip
255
+ * Respects the showDelay prop and disabled state
256
+ */
257
+ async show() {
258
+ if (this.disabled)
259
+ return;
260
+ this.clearTimeouts();
261
+ this.showTimeout = window.setTimeout(() => {
262
+ this.isOpen = true;
263
+ }, this.showDelay);
264
+ }
265
+ /**
266
+ * Programmatically hides the tooltip
267
+ * Respects the hideDelay prop
174
268
  */
175
- async openTooltip() {
176
- this.showTooltip();
269
+ async hide() {
270
+ this.clearTimeouts();
271
+ this.hideTimeout = window.setTimeout(() => {
272
+ this.isOpen = false;
273
+ }, this.hideDelay);
177
274
  }
178
275
  /**
179
- * @method {Promise<void>} closeTooltip - Programmatically closes the tooltip.
180
- * Triggers the hideTooltip logic with the specified delay.
181
- * @returns {Promise<void>} A promise that resolves when the tooltip is closed.
276
+ * Toggles the tooltip visibility
277
+ * If open, hides it; if closed, shows it
182
278
  */
183
- async closeTooltip() {
184
- this.hideTooltip();
279
+ async toggle() {
280
+ if (this.isOpen) {
281
+ await this.hide();
282
+ }
283
+ else {
284
+ await this.show();
285
+ }
286
+ }
287
+ clearTimeouts() {
288
+ if (this.showTimeout) {
289
+ clearTimeout(this.showTimeout);
290
+ this.showTimeout = undefined;
291
+ }
292
+ if (this.hideTimeout) {
293
+ clearTimeout(this.hideTimeout);
294
+ this.hideTimeout = undefined;
295
+ }
296
+ }
297
+ startAutoUpdate() {
298
+ if (!this.triggerRef || !this.tooltipRef || this.follow)
299
+ return;
300
+ this.cleanupAutoUpdate = autoUpdate(this.triggerRef, this.tooltipRef, () => this.updatePosition(), {
301
+ ancestorScroll: true,
302
+ ancestorResize: true,
303
+ elementResize: true,
304
+ layoutShift: true,
305
+ });
306
+ }
307
+ stopAutoUpdate() {
308
+ if (this.cleanupAutoUpdate) {
309
+ this.cleanupAutoUpdate();
310
+ this.cleanupAutoUpdate = undefined;
311
+ }
312
+ }
313
+ startFollowing() {
314
+ if (!this.follow)
315
+ return;
316
+ const updateFollowPosition = () => {
317
+ if (!this.isOpen || !this.tooltipRef) {
318
+ this.rafId = undefined;
319
+ return;
320
+ }
321
+ const offsetX = this.offset;
322
+ const offsetY = this.offset;
323
+ this.tooltipRef.style.left = `${this.mouseX + offsetX}px`;
324
+ this.tooltipRef.style.top = `${this.mouseY + offsetY}px`;
325
+ this.rafId = requestAnimationFrame(updateFollowPosition);
326
+ };
327
+ this.rafId = requestAnimationFrame(updateFollowPosition);
328
+ }
329
+ stopFollowing() {
330
+ if (this.rafId) {
331
+ cancelAnimationFrame(this.rafId);
332
+ this.rafId = undefined;
333
+ }
334
+ }
335
+ async updatePosition() {
336
+ if (!this.triggerRef || !this.tooltipRef || this.follow)
337
+ return;
338
+ try {
339
+ // Check if trigger element is still in viewport
340
+ const triggerRect = this.triggerRef.getBoundingClientRect();
341
+ const isInViewport = triggerRect.bottom > 0 && triggerRect.top < window.innerHeight && triggerRect.right > 0 && triggerRect.left < window.innerWidth;
342
+ // Hide tooltip if trigger is out of viewport
343
+ if (!isInViewport && this.isOpen) {
344
+ this.hide();
345
+ return;
346
+ }
347
+ const middleware = [offset(this.offset), flip(), shift({ padding: 8 })];
348
+ if (this.arrow && this.arrowRef) {
349
+ middleware.push(arrow({ element: this.arrowRef }));
350
+ }
351
+ // Use virtual element to properly handle shadow DOM boundaries
352
+ const virtualElement = {
353
+ getBoundingClientRect: () => this.triggerRef.getBoundingClientRect(),
354
+ };
355
+ const { x, y, placement, middlewareData } = await computePosition(virtualElement, this.tooltipRef, {
356
+ placement: this.placement,
357
+ strategy: 'fixed',
358
+ middleware,
359
+ });
360
+ this.tooltipRef.style.left = `${x}px`;
361
+ this.tooltipRef.style.top = `${y}px`;
362
+ // Arrow positioning
363
+ if (this.arrow && this.arrowRef && middlewareData.arrow) {
364
+ const { x: arrowX, y: arrowY } = middlewareData.arrow;
365
+ const side = placement.split('-')[0];
366
+ const staticSide = {
367
+ top: 'bottom',
368
+ right: 'left',
369
+ bottom: 'top',
370
+ left: 'right',
371
+ }[side];
372
+ Object.assign(this.arrowRef.style, {
373
+ left: arrowX != null ? `${arrowX}px` : '',
374
+ top: arrowY != null ? `${arrowY}px` : '',
375
+ right: '',
376
+ bottom: '',
377
+ [staticSide]: '-4px',
378
+ });
379
+ }
380
+ }
381
+ catch (error) {
382
+ console.error('Failed to compute tooltip position:', error);
383
+ }
384
+ }
385
+ setupTriggerListeners() {
386
+ if (!this.triggerRef)
387
+ return;
388
+ // Add new listeners based on trigger type
389
+ if (this.trigger === 'hover') {
390
+ this.triggerRef.addEventListener('mouseenter', this.handleMouseEnter);
391
+ this.triggerRef.addEventListener('mouseleave', this.handleMouseLeave);
392
+ if (this.follow) {
393
+ this.triggerRef.addEventListener('mousemove', this.handleMouseMove);
394
+ }
395
+ }
396
+ else if (this.trigger === 'click') {
397
+ this.triggerRef.addEventListener('click', this.handleClick);
398
+ }
399
+ }
400
+ removeTriggerListeners() {
401
+ if (!this.triggerRef)
402
+ return;
403
+ this.triggerRef.removeEventListener('mouseenter', this.handleMouseEnter);
404
+ this.triggerRef.removeEventListener('mouseleave', this.handleMouseLeave);
405
+ this.triggerRef.removeEventListener('mousemove', this.handleMouseMove);
406
+ this.triggerRef.removeEventListener('click', this.handleClick);
407
+ }
408
+ setupOutsideClickListener() {
409
+ // Remove existing listener first
410
+ document.removeEventListener('click', this.handleOutsideClick);
411
+ // Add listener only for click trigger
412
+ if (this.trigger === 'click') {
413
+ document.addEventListener('click', this.handleOutsideClick);
414
+ }
415
+ }
416
+ componentDidLoad() {
417
+ // Generate unique ID for ARIA relationship
418
+ this.tooltipId = `tooltip-${Math.random().toString(36).substring(2, 11)}`;
419
+ // Setup outside click listener for click trigger
420
+ this.setupOutsideClickListener();
421
+ // Listen to popover toggle event to sync state
422
+ if (this.tooltipRef) {
423
+ this.tooltipRef.addEventListener('toggle', this.handleToggle);
424
+ }
425
+ // Setup keyboard listener for manual popover escape handling
426
+ document.addEventListener('keydown', this.handleKeyDown);
427
+ }
428
+ disconnectedCallback() {
429
+ this.clearTimeouts();
430
+ this.stopAutoUpdate();
431
+ this.stopFollowing();
432
+ this.removeTriggerListeners();
433
+ document.removeEventListener('click', this.handleOutsideClick);
434
+ document.removeEventListener('keydown', this.handleKeyDown);
435
+ if (this.tooltipRef) {
436
+ this.tooltipRef.removeEventListener('toggle', this.handleToggle);
437
+ }
185
438
  }
186
439
  render() {
187
- const { tooltip, arrow } = this.tooltipClass({
440
+ const { tooltip, arrow: arrowClass } = this.tooltipClass({
188
441
  size: this.size,
189
- isOpen: this.open,
442
+ follow: this.follow,
190
443
  });
191
- return (h("div", { key: 'd92fbafaebadf93f8c215e6e3e654e39b494c7fb', class: "relative" }, h("slot", { key: '35de4bc9d0def680a4bab9e64647e9e0944641c0', onSlotchange: () => this.handleSlotChange() }), h("div", { key: 'decee0e16c8aedbb3ab5e9569fdb33fda07cf7fc', role: "tooltip", class: tooltip(), ref: el => (this.tooltipElement = el), part: "tooltip" }, h("div", { key: '33a5f59e988795b1cc55f21fc3e11d7711a1b8ef', class: arrow(), ref: el => (this.arrowElement = el), part: "arrow" }), h("slot", { key: 'b73cc659fea66c2bd868b047bd1698cf2764c954', name: "tooltip" }, this.message))));
444
+ return (h("div", { key: 'a539406275e1443e4446ec559cb3388ed2456328', class: "inline-block" }, h("slot", { key: 'b144f258b14a04369ff75ed90b7607ea05e23e67', onSlotchange: this.handleSlotChange }), h("div", { key: 'bbd08333a311e09e50bb2f1b3646892546f57164', ref: el => (this.tooltipRef = el), id: this.tooltipId, part: "tooltip", class: tooltip(),
445
+ // @ts-ignore - popover is a valid attribute
446
+ popover: "manual", role: "tooltip" }, this.arrow && !this.follow && h("div", { key: '7170aba70efdf413f4823cf2eff5618271b2fa70', ref: el => (this.arrowRef = el), part: "arrow", class: arrowClass() }), h("div", { key: '4fd9b56ce036663caaf1a75874e95ea566e214ef', part: "content" }, h("slot", { key: 'd5ab1ab3ef54e1c827ed1d009e226258a099378b', name: "content" }, this.message)))));
192
447
  }
193
448
  static get is() { return "bcm-tooltip"; }
194
449
  static get encapsulation() { return "shadow"; }
@@ -206,76 +461,84 @@ export class Tooltip {
206
461
  return {
207
462
  "trigger": {
208
463
  "type": "string",
209
- "attribute": "trigger",
210
464
  "mutable": false,
211
465
  "complexType": {
212
- "original": "'click' | 'hover'",
466
+ "original": "TooltipTrigger",
213
467
  "resolved": "\"click\" | \"hover\"",
214
- "references": {}
468
+ "references": {
469
+ "TooltipTrigger": {
470
+ "location": "local",
471
+ "path": "/Users/muratpolatozkan/works/bromcom/bromcom-ui-v2/src/components/tooltip/tooltip.component.tsx",
472
+ "id": "src/components/tooltip/tooltip.component.tsx::TooltipTrigger"
473
+ }
474
+ }
215
475
  },
216
476
  "required": false,
217
477
  "optional": false,
218
478
  "docs": {
219
- "tags": [{
220
- "name": "prop",
221
- "text": "{('click' | 'hover')} trigger - Defines the interaction type to show/hide the tooltip.\n'click' toggles on click, 'hover' shows on mouse enter and hides on mouse leave.\nDefault: 'hover'"
222
- }],
223
- "text": ""
479
+ "tags": [],
480
+ "text": "How the tooltip is triggered\n- 'hover': Shows on mouse enter, hides on mouse leave\n- 'click': Toggles on click, closes on outside click or Escape key"
224
481
  },
225
482
  "getter": false,
226
483
  "setter": false,
227
484
  "reflect": false,
485
+ "attribute": "trigger",
228
486
  "defaultValue": "'hover'"
229
487
  },
230
488
  "placement": {
231
489
  "type": "string",
232
- "attribute": "placement",
233
490
  "mutable": false,
234
491
  "complexType": {
235
- "original": "'top' | 'right' | 'bottom' | 'left'",
492
+ "original": "TooltipPlacement",
236
493
  "resolved": "\"bottom\" | \"left\" | \"right\" | \"top\"",
237
- "references": {}
494
+ "references": {
495
+ "TooltipPlacement": {
496
+ "location": "local",
497
+ "path": "/Users/muratpolatozkan/works/bromcom/bromcom-ui-v2/src/components/tooltip/tooltip.component.tsx",
498
+ "id": "src/components/tooltip/tooltip.component.tsx::TooltipPlacement"
499
+ }
500
+ }
238
501
  },
239
502
  "required": false,
240
503
  "optional": false,
241
504
  "docs": {
242
- "tags": [{
243
- "name": "prop",
244
- "text": "{('top' | 'right' | 'bottom' | 'left')} placement - Defines the position of the tooltip relative to the target element.\nDefault: 'top'"
245
- }],
246
- "text": ""
505
+ "tags": [],
506
+ "text": "Preferred placement of the tooltip relative to the trigger\nNote: Tooltip will automatically flip if there's not enough space\n- 'top': Above the trigger element\n- 'right': To the right of the trigger element\n- 'bottom': Below the trigger element\n- 'left': To the left of the trigger element"
247
507
  },
248
508
  "getter": false,
249
509
  "setter": false,
250
510
  "reflect": false,
511
+ "attribute": "placement",
251
512
  "defaultValue": "'top'"
252
513
  },
253
514
  "size": {
254
515
  "type": "string",
255
- "attribute": "size",
256
516
  "mutable": false,
257
517
  "complexType": {
258
- "original": "'small' | 'medium' | 'large'",
518
+ "original": "TooltipSize",
259
519
  "resolved": "\"large\" | \"medium\" | \"small\"",
260
- "references": {}
520
+ "references": {
521
+ "TooltipSize": {
522
+ "location": "local",
523
+ "path": "/Users/muratpolatozkan/works/bromcom/bromcom-ui-v2/src/components/tooltip/tooltip.component.tsx",
524
+ "id": "src/components/tooltip/tooltip.component.tsx::TooltipSize"
525
+ }
526
+ }
261
527
  },
262
528
  "required": false,
263
529
  "optional": false,
264
530
  "docs": {
265
- "tags": [{
266
- "name": "prop",
267
- "text": "{('small' | 'medium' | 'large')} size - Defines the size of the tooltip.\nControls the text size and padding of the tooltip content.\nDefault: 'medium'"
268
- }],
269
- "text": ""
531
+ "tags": [],
532
+ "text": "Size variant of the tooltip\n- 'small': Compact tooltip with minimal padding (text-size-3, py-1 px-2)\n- 'medium': Standard tooltip size (text-size-4, py-1.5 px-3)\n- 'large': Larger tooltip for more content (text-size-5, py-2 px-4)"
270
533
  },
271
534
  "getter": false,
272
535
  "setter": false,
273
536
  "reflect": false,
537
+ "attribute": "size",
274
538
  "defaultValue": "'medium'"
275
539
  },
276
540
  "message": {
277
541
  "type": "string",
278
- "attribute": "message",
279
542
  "mutable": false,
280
543
  "complexType": {
281
544
  "original": "string",
@@ -283,21 +546,18 @@ export class Tooltip {
283
546
  "references": {}
284
547
  },
285
548
  "required": false,
286
- "optional": false,
549
+ "optional": true,
287
550
  "docs": {
288
- "tags": [{
289
- "name": "prop",
290
- "text": "{string} message - Custom text for the tooltip content.\nUsed as fallback content if the 'tooltip' slot is not provided."
291
- }],
292
- "text": ""
551
+ "tags": [],
552
+ "text": "Simple text message to display in the tooltip\nCan be overridden by slotting content into the 'content' slot"
293
553
  },
294
554
  "getter": false,
295
555
  "setter": false,
296
- "reflect": false
556
+ "reflect": false,
557
+ "attribute": "message"
297
558
  },
298
559
  "showDelay": {
299
560
  "type": "number",
300
- "attribute": "show-delay",
301
561
  "mutable": false,
302
562
  "complexType": {
303
563
  "original": "number",
@@ -307,27 +567,142 @@ export class Tooltip {
307
567
  "required": false,
308
568
  "optional": false,
309
569
  "docs": {
310
- "tags": [{
311
- "name": "prop",
312
- "text": "{number} showDelay - Delay in milliseconds before showing or hiding the tooltip.\nHelps prevent flickering on quick mouse movements.\nDefault: 150"
313
- }],
314
- "text": ""
570
+ "tags": [],
571
+ "text": "Delay in milliseconds before showing the tooltip\nUseful to prevent tooltips from appearing on quick mouse movements"
315
572
  },
316
573
  "getter": false,
317
574
  "setter": false,
318
575
  "reflect": false,
576
+ "attribute": "show-delay",
319
577
  "defaultValue": "150"
578
+ },
579
+ "hideDelay": {
580
+ "type": "number",
581
+ "mutable": false,
582
+ "complexType": {
583
+ "original": "number",
584
+ "resolved": "number",
585
+ "references": {}
586
+ },
587
+ "required": false,
588
+ "optional": false,
589
+ "docs": {
590
+ "tags": [],
591
+ "text": "Delay in milliseconds before hiding the tooltip\nProvides a grace period for mouse movements"
592
+ },
593
+ "getter": false,
594
+ "setter": false,
595
+ "reflect": false,
596
+ "attribute": "hide-delay",
597
+ "defaultValue": "100"
598
+ },
599
+ "arrow": {
600
+ "type": "boolean",
601
+ "mutable": false,
602
+ "complexType": {
603
+ "original": "boolean",
604
+ "resolved": "boolean",
605
+ "references": {}
606
+ },
607
+ "required": false,
608
+ "optional": false,
609
+ "docs": {
610
+ "tags": [],
611
+ "text": "Whether to show an arrow pointing to the trigger element\nNote: Arrow is automatically hidden in 'follow' mode"
612
+ },
613
+ "getter": false,
614
+ "setter": false,
615
+ "reflect": false,
616
+ "attribute": "arrow",
617
+ "defaultValue": "true"
618
+ },
619
+ "disabled": {
620
+ "type": "boolean",
621
+ "mutable": false,
622
+ "complexType": {
623
+ "original": "boolean",
624
+ "resolved": "boolean",
625
+ "references": {}
626
+ },
627
+ "required": false,
628
+ "optional": false,
629
+ "docs": {
630
+ "tags": [],
631
+ "text": "Disables the tooltip, preventing it from showing\nUseful for conditional tooltips based on application state"
632
+ },
633
+ "getter": false,
634
+ "setter": false,
635
+ "reflect": false,
636
+ "attribute": "disabled",
637
+ "defaultValue": "false"
638
+ },
639
+ "offset": {
640
+ "type": "number",
641
+ "mutable": false,
642
+ "complexType": {
643
+ "original": "number",
644
+ "resolved": "number",
645
+ "references": {}
646
+ },
647
+ "required": false,
648
+ "optional": false,
649
+ "docs": {
650
+ "tags": [],
651
+ "text": "Distance in pixels between the tooltip and the trigger element\nAlso used as the offset in 'follow' mode"
652
+ },
653
+ "getter": false,
654
+ "setter": false,
655
+ "reflect": false,
656
+ "attribute": "offset",
657
+ "defaultValue": "12"
658
+ },
659
+ "follow": {
660
+ "type": "boolean",
661
+ "mutable": false,
662
+ "complexType": {
663
+ "original": "boolean",
664
+ "resolved": "boolean",
665
+ "references": {}
666
+ },
667
+ "required": false,
668
+ "optional": false,
669
+ "docs": {
670
+ "tags": [],
671
+ "text": "Makes the tooltip follow the mouse cursor\nWhen enabled:\n- Arrow is hidden\n- Tooltip position updates smoothly with cursor movement\n- Pointer events are disabled on tooltip to prevent interference"
672
+ },
673
+ "getter": false,
674
+ "setter": false,
675
+ "reflect": false,
676
+ "attribute": "follow",
677
+ "defaultValue": "false"
320
678
  }
321
679
  };
322
680
  }
323
681
  static get states() {
324
682
  return {
325
- "open": {}
683
+ "isOpen": {}
326
684
  };
327
685
  }
328
686
  static get methods() {
329
687
  return {
330
- "openTooltip": {
688
+ "show": {
689
+ "complexType": {
690
+ "signature": "() => Promise<void>",
691
+ "parameters": [],
692
+ "references": {
693
+ "Promise": {
694
+ "location": "global",
695
+ "id": "global::Promise"
696
+ }
697
+ },
698
+ "return": "Promise<void>"
699
+ },
700
+ "docs": {
701
+ "text": "Programmatically shows the tooltip\nRespects the showDelay prop and disabled state",
702
+ "tags": []
703
+ }
704
+ },
705
+ "hide": {
331
706
  "complexType": {
332
707
  "signature": "() => Promise<void>",
333
708
  "parameters": [],
@@ -340,17 +715,11 @@ export class Tooltip {
340
715
  "return": "Promise<void>"
341
716
  },
342
717
  "docs": {
343
- "text": "",
344
- "tags": [{
345
- "name": "method",
346
- "text": "{Promise<void>} openTooltip - Programmatically opens the tooltip.\nTriggers the showTooltip logic with the specified delay."
347
- }, {
348
- "name": "returns",
349
- "text": "A promise that resolves when the tooltip is opened."
350
- }]
718
+ "text": "Programmatically hides the tooltip\nRespects the hideDelay prop",
719
+ "tags": []
351
720
  }
352
721
  },
353
- "closeTooltip": {
722
+ "toggle": {
354
723
  "complexType": {
355
724
  "signature": "() => Promise<void>",
356
725
  "parameters": [],
@@ -363,18 +732,24 @@ export class Tooltip {
363
732
  "return": "Promise<void>"
364
733
  },
365
734
  "docs": {
366
- "text": "",
367
- "tags": [{
368
- "name": "method",
369
- "text": "{Promise<void>} closeTooltip - Programmatically closes the tooltip.\nTriggers the hideTooltip logic with the specified delay."
370
- }, {
371
- "name": "returns",
372
- "text": "A promise that resolves when the tooltip is closed."
373
- }]
735
+ "text": "Toggles the tooltip visibility\nIf open, hides it; if closed, shows it",
736
+ "tags": []
374
737
  }
375
738
  }
376
739
  };
377
740
  }
378
- static get elementRef() { return "el"; }
741
+ static get elementRef() { return "host"; }
742
+ static get watchers() {
743
+ return [{
744
+ "propName": "disabled",
745
+ "methodName": "handleDisabledChange"
746
+ }, {
747
+ "propName": "trigger",
748
+ "methodName": "handleTriggerChange"
749
+ }, {
750
+ "propName": "isOpen",
751
+ "methodName": "handleOpenChange"
752
+ }];
753
+ }
379
754
  }
380
755
  //# sourceMappingURL=tooltip.component.js.map