bromcom-ui-next 0.1.29 → 0.1.31

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 (618) hide show
  1. package/dist/bromcom-ui/bcm-accordion-group.entry.esm.js.map +1 -1
  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-avatar.entry.esm.js.map +1 -1
  5. package/dist/bromcom-ui/bcm-badge.entry.esm.js.map +1 -1
  6. package/dist/bromcom-ui/bcm-basic-badge.entry.esm.js.map +1 -1
  7. package/dist/bromcom-ui/bcm-button-group.entry.esm.js.map +1 -1
  8. package/dist/bromcom-ui/bcm-button.entry.esm.js.map +1 -0
  9. package/dist/bromcom-ui/bcm-checkbox.entry.esm.js.map +1 -1
  10. package/dist/bromcom-ui/bcm-chip.entry.esm.js.map +1 -1
  11. package/dist/bromcom-ui/bcm-divider.entry.esm.js.map +1 -1
  12. package/dist/bromcom-ui/bcm-drawer.entry.esm.js.map +1 -0
  13. package/dist/bromcom-ui/bcm-dropdown-item.entry.esm.js.map +1 -1
  14. package/dist/bromcom-ui/bcm-dropdown.entry.esm.js.map +1 -1
  15. package/dist/bromcom-ui/bcm-file-upload.entry.esm.js.map +1 -0
  16. package/dist/bromcom-ui/bcm-input.entry.esm.js.map +1 -1
  17. package/dist/bromcom-ui/bcm-linked.entry.esm.js.map +1 -1
  18. package/dist/bromcom-ui/bcm-modal.entry.esm.js.map +1 -0
  19. package/dist/bromcom-ui/bcm-pop-confirm.entry.esm.js.map +1 -1
  20. package/dist/bromcom-ui/bcm-popover.entry.esm.js.map +1 -1
  21. package/dist/bromcom-ui/bcm-radio-group.entry.esm.js.map +1 -1
  22. package/dist/bromcom-ui/bcm-radio.entry.esm.js.map +1 -1
  23. package/dist/bromcom-ui/bcm-segment.bcm-segmented-picker.entry.esm.js.map +1 -0
  24. package/dist/bromcom-ui/bcm-shortcut.entry.esm.js.map +1 -1
  25. package/dist/bromcom-ui/bcm-switch.entry.esm.js.map +1 -1
  26. package/dist/bromcom-ui/bcm-tab.entry.esm.js.map +1 -0
  27. package/dist/bromcom-ui/bcm-tabs.entry.esm.js.map +1 -1
  28. package/dist/bromcom-ui/bcm-text.entry.esm.js.map +1 -1
  29. package/dist/bromcom-ui/bcm-textarea.entry.esm.js.map +1 -1
  30. package/dist/bromcom-ui/bcm-tooltip.entry.esm.js.map +1 -1
  31. package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
  32. package/dist/bromcom-ui/bromcom-ui.esm.js.map +1 -1
  33. package/dist/bromcom-ui/global/global.js +33 -30
  34. package/dist/bromcom-ui/p-010219cf.entry.js +2 -0
  35. package/dist/bromcom-ui/p-010219cf.entry.js.map +1 -0
  36. package/dist/bromcom-ui/p-01a4e00b.entry.js +2 -0
  37. package/dist/bromcom-ui/p-01a4e00b.entry.js.map +1 -0
  38. package/dist/bromcom-ui/p-14c63d61.entry.js +2 -0
  39. package/dist/bromcom-ui/p-14c63d61.entry.js.map +1 -0
  40. package/dist/bromcom-ui/p-20a94dec.entry.js +2 -0
  41. package/dist/bromcom-ui/p-20a94dec.entry.js.map +1 -0
  42. package/dist/bromcom-ui/p-398620c2.entry.js +2 -0
  43. package/dist/bromcom-ui/p-398620c2.entry.js.map +1 -0
  44. package/dist/bromcom-ui/p-3b898f90.entry.js +2 -0
  45. package/dist/bromcom-ui/p-3b898f90.entry.js.map +1 -0
  46. package/dist/bromcom-ui/p-43c85c84.entry.js +2 -0
  47. package/dist/bromcom-ui/p-43c85c84.entry.js.map +1 -0
  48. package/dist/bromcom-ui/p-4e6661a5.entry.js +2 -0
  49. package/dist/bromcom-ui/p-4e6661a5.entry.js.map +1 -0
  50. package/dist/bromcom-ui/p-52bb0cdc.entry.js +2 -0
  51. package/dist/bromcom-ui/p-52bb0cdc.entry.js.map +1 -0
  52. package/dist/bromcom-ui/p-61c1c1c8.entry.js +2 -0
  53. package/dist/bromcom-ui/p-61c1c1c8.entry.js.map +1 -0
  54. package/dist/bromcom-ui/p-82e4c5f2.entry.js +2 -0
  55. package/dist/bromcom-ui/p-82e4c5f2.entry.js.map +1 -0
  56. package/dist/bromcom-ui/p-86f85963.entry.js +2 -0
  57. package/dist/bromcom-ui/p-86f85963.entry.js.map +1 -0
  58. package/dist/bromcom-ui/p-9249c1d1.entry.js +2 -0
  59. package/dist/bromcom-ui/p-9249c1d1.entry.js.map +1 -0
  60. package/dist/bromcom-ui/p-B6Ppbs5O.js +3 -0
  61. package/dist/bromcom-ui/p-B6Ppbs5O.js.map +1 -0
  62. package/dist/bromcom-ui/p-BfTCfPZ1.js.map +1 -1
  63. package/dist/bromcom-ui/p-CEcVC0yX.js.map +1 -1
  64. package/dist/bromcom-ui/p-DBDSgIvP.js +2 -0
  65. package/dist/bromcom-ui/p-DBDSgIvP.js.map +1 -0
  66. package/dist/bromcom-ui/p-DaE0ZLar.js +2 -0
  67. package/dist/bromcom-ui/p-DaE0ZLar.js.map +1 -0
  68. package/dist/bromcom-ui/p-IBjzkjef.js.map +1 -1
  69. package/dist/bromcom-ui/p-a25d1cef.entry.js +2 -0
  70. package/dist/bromcom-ui/p-a25d1cef.entry.js.map +1 -0
  71. package/dist/bromcom-ui/p-a4cb2e79.entry.js +2 -0
  72. package/dist/bromcom-ui/p-a4cb2e79.entry.js.map +1 -0
  73. package/dist/bromcom-ui/p-a68925b4.entry.js +2 -0
  74. package/dist/bromcom-ui/p-a68925b4.entry.js.map +1 -0
  75. package/dist/bromcom-ui/p-a750186c.entry.js +2 -0
  76. package/dist/bromcom-ui/p-a750186c.entry.js.map +1 -0
  77. package/dist/bromcom-ui/p-ac768b56.entry.js +2 -0
  78. package/dist/bromcom-ui/p-ac768b56.entry.js.map +1 -0
  79. package/dist/bromcom-ui/p-b0b193e6.entry.js +2 -0
  80. package/dist/bromcom-ui/p-b0b193e6.entry.js.map +1 -0
  81. package/dist/bromcom-ui/p-bf4409ca.entry.js +2 -0
  82. package/dist/bromcom-ui/p-bf4409ca.entry.js.map +1 -0
  83. package/dist/bromcom-ui/p-c57fb29b.entry.js +2 -0
  84. package/dist/bromcom-ui/p-c57fb29b.entry.js.map +1 -0
  85. package/dist/bromcom-ui/{p-2480e468.entry.js → p-ccc310aa.entry.js} +2 -2
  86. package/dist/bromcom-ui/p-ccc310aa.entry.js.map +1 -0
  87. package/dist/bromcom-ui/p-d4ee962d.entry.js +2 -0
  88. package/dist/bromcom-ui/p-d4ee962d.entry.js.map +1 -0
  89. package/dist/bromcom-ui/p-e25a2f7a.entry.js +2 -0
  90. package/dist/bromcom-ui/p-e25a2f7a.entry.js.map +1 -0
  91. package/dist/bromcom-ui/p-e5b0b2ad.entry.js +2 -0
  92. package/dist/bromcom-ui/p-e5b0b2ad.entry.js.map +1 -0
  93. package/dist/bromcom-ui/p-e70d784d.entry.js +2 -0
  94. package/dist/bromcom-ui/p-e70d784d.entry.js.map +1 -0
  95. package/dist/bromcom-ui/p-e9fa3a22.entry.js +2 -0
  96. package/dist/bromcom-ui/p-e9fa3a22.entry.js.map +1 -0
  97. package/dist/bromcom-ui/p-ef281184.entry.js +2 -0
  98. package/dist/bromcom-ui/p-ef281184.entry.js.map +1 -0
  99. package/dist/bromcom-ui/{p-089edfdc.entry.js → p-fb6f616c.entry.js} +2 -2
  100. package/dist/bromcom-ui/p-fb6f616c.entry.js.map +1 -0
  101. package/dist/bromcom-ui/p-fd31c70c.entry.js +2 -0
  102. package/dist/bromcom-ui/p-fd31c70c.entry.js.map +1 -0
  103. package/dist/bromcom-ui/p-nf_HKsGq.js +2 -0
  104. package/dist/bromcom-ui/{p-CUvT12BL.js.map → p-nf_HKsGq.js.map} +1 -1
  105. package/dist/cjs/base-choice-control-EmA4JRjR.js +54 -0
  106. package/dist/cjs/base-choice-control-EmA4JRjR.js.map +1 -0
  107. package/dist/cjs/bcm-accordion-group.cjs.entry.js +21 -21
  108. package/dist/cjs/bcm-accordion-group.entry.cjs.js.map +1 -1
  109. package/dist/cjs/bcm-accordion.cjs.entry.js +75 -60
  110. package/dist/cjs/bcm-accordion.entry.cjs.js.map +1 -1
  111. package/dist/cjs/bcm-alert.cjs.entry.js +21 -23
  112. package/dist/cjs/bcm-alert.entry.cjs.js.map +1 -1
  113. package/dist/cjs/bcm-avatar.cjs.entry.js +22 -14
  114. package/dist/cjs/bcm-avatar.entry.cjs.js.map +1 -1
  115. package/dist/cjs/bcm-badge.cjs.entry.js +114 -84
  116. package/dist/cjs/bcm-badge.entry.cjs.js.map +1 -1
  117. package/dist/cjs/bcm-basic-badge.cjs.entry.js +73 -61
  118. package/dist/cjs/bcm-basic-badge.entry.cjs.js.map +1 -1
  119. package/dist/cjs/bcm-button-group.cjs.entry.js +36 -26
  120. package/dist/cjs/bcm-button-group.entry.cjs.js.map +1 -1
  121. package/dist/cjs/bcm-button.cjs.entry.js +338 -0
  122. package/dist/cjs/bcm-button.entry.cjs.js.map +1 -0
  123. package/dist/cjs/bcm-checkbox.cjs.entry.js +284 -176
  124. package/dist/cjs/bcm-checkbox.entry.cjs.js.map +1 -1
  125. package/dist/cjs/bcm-chip.cjs.entry.js +38 -37
  126. package/dist/cjs/bcm-chip.entry.cjs.js.map +1 -1
  127. package/dist/cjs/bcm-divider.cjs.entry.js +56 -58
  128. package/dist/cjs/bcm-divider.entry.cjs.js.map +1 -1
  129. package/dist/cjs/bcm-drawer.cjs.entry.js +332 -0
  130. package/dist/cjs/bcm-drawer.entry.cjs.js.map +1 -0
  131. package/dist/cjs/bcm-dropdown-item.cjs.entry.js +36 -35
  132. package/dist/cjs/bcm-dropdown-item.entry.cjs.js.map +1 -1
  133. package/dist/cjs/bcm-dropdown.cjs.entry.js +17 -26
  134. package/dist/cjs/bcm-dropdown.entry.cjs.js.map +1 -1
  135. package/dist/cjs/bcm-file-upload.cjs.entry.js +552 -0
  136. package/dist/cjs/bcm-file-upload.entry.cjs.js.map +1 -0
  137. package/dist/cjs/bcm-input.cjs.entry.js +250 -160
  138. package/dist/cjs/bcm-input.entry.cjs.js.map +1 -1
  139. package/dist/cjs/bcm-linked.cjs.entry.js +373 -264
  140. package/dist/cjs/bcm-linked.entry.cjs.js.map +1 -1
  141. package/dist/cjs/bcm-modal.cjs.entry.js +360 -0
  142. package/dist/cjs/bcm-modal.entry.cjs.js.map +1 -0
  143. package/dist/cjs/bcm-pop-confirm.cjs.entry.js +337 -206
  144. package/dist/cjs/bcm-pop-confirm.entry.cjs.js.map +1 -1
  145. package/dist/cjs/bcm-popover.cjs.entry.js +416 -154
  146. package/dist/cjs/bcm-popover.entry.cjs.js.map +1 -1
  147. package/dist/cjs/bcm-radio-group.cjs.entry.js +103 -82
  148. package/dist/cjs/bcm-radio-group.entry.cjs.js.map +1 -1
  149. package/dist/cjs/bcm-radio.cjs.entry.js +239 -108
  150. package/dist/cjs/bcm-radio.entry.cjs.js.map +1 -1
  151. package/dist/cjs/bcm-segment.bcm-segmented-picker.entry.cjs.js.map +1 -0
  152. package/dist/cjs/bcm-segment_2.cjs.entry.js +335 -0
  153. package/dist/cjs/bcm-shortcut.cjs.entry.js +5 -6
  154. package/dist/cjs/bcm-shortcut.entry.cjs.js.map +1 -1
  155. package/dist/cjs/bcm-switch.cjs.entry.js +281 -150
  156. package/dist/cjs/bcm-switch.entry.cjs.js.map +1 -1
  157. package/dist/cjs/bcm-tab.cjs.entry.js +44 -0
  158. package/dist/cjs/bcm-tab.entry.cjs.js.map +1 -0
  159. package/dist/cjs/bcm-tabs.cjs.entry.js +191 -239
  160. package/dist/cjs/bcm-tabs.entry.cjs.js.map +1 -1
  161. package/dist/cjs/bcm-text.cjs.entry.js +86 -87
  162. package/dist/cjs/bcm-text.entry.cjs.js.map +1 -1
  163. package/dist/cjs/bcm-textarea.cjs.entry.js +224 -156
  164. package/dist/cjs/bcm-textarea.entry.cjs.js.map +1 -1
  165. package/dist/cjs/bcm-tooltip.cjs.entry.js +386 -152
  166. package/dist/cjs/bcm-tooltip.entry.cjs.js.map +1 -1
  167. package/dist/cjs/bromcom-ui.cjs.js +3 -5
  168. package/dist/cjs/bromcom-ui.cjs.js.map +1 -1
  169. package/dist/cjs/{floating-ui.dom-DyKmFgkP.js → floating-ui.dom-S9nP6zZt.js} +40 -23
  170. package/dist/cjs/floating-ui.dom-S9nP6zZt.js.map +1 -0
  171. package/dist/cjs/generate-id-CG_BkTJu.js.map +1 -1
  172. package/dist/cjs/{index-BtiU-G2W.js → index-1Qal-onT.js} +165 -398
  173. package/dist/cjs/index-1Qal-onT.js.map +1 -0
  174. package/dist/cjs/index-Bp6Dd2i1.js.map +1 -1
  175. package/dist/cjs/index.cjs.js +0 -2
  176. package/dist/cjs/loader.cjs.js +2 -4
  177. package/dist/cjs/tv-ngpIbGlG.js.map +1 -1
  178. package/dist/cjs/{validation-messages-BjfpSEWk.js → validation-messages-DieKlSG4.js} +6 -7
  179. package/dist/{esm/validation-messages-CUvT12BL.js.map → cjs/validation-messages-DieKlSG4.js.map} +1 -1
  180. package/dist/collection/collection-manifest.json +7 -8
  181. package/dist/collection/components/_shared/form/base-choice-control.js +90 -0
  182. package/dist/collection/components/_shared/form/base-choice-control.js.map +1 -0
  183. package/dist/collection/components/_shared/form/base-form-control.js +115 -0
  184. package/dist/collection/components/_shared/form/base-form-control.js.map +1 -0
  185. package/dist/collection/components/accordion/accordion.component.js +80 -63
  186. package/dist/collection/components/accordion/accordion.component.js.map +1 -1
  187. package/dist/collection/components/accordion/accordion.css +1 -1
  188. package/dist/collection/components/accordion-group/accordion-group.component.js +23 -21
  189. package/dist/collection/components/accordion-group/accordion-group.component.js.map +1 -1
  190. package/dist/collection/components/accordion-group/types.js.map +1 -1
  191. package/dist/collection/components/alert/alert.component.js +24 -26
  192. package/dist/collection/components/alert/alert.component.js.map +1 -1
  193. package/dist/collection/components/alert/alert.css +1 -1
  194. package/dist/collection/components/avatar/avatar.component.js +34 -26
  195. package/dist/collection/components/avatar/avatar.component.js.map +1 -1
  196. package/dist/collection/components/avatar/avatar.css +1 -1
  197. package/dist/collection/components/badge/badge.component.js +124 -94
  198. package/dist/collection/components/badge/badge.component.js.map +1 -1
  199. package/dist/collection/components/badge/badge.css +1 -1
  200. package/dist/collection/components/basic-badge/basic-badge.component.js +77 -65
  201. package/dist/collection/components/basic-badge/basic-badge.component.js.map +1 -1
  202. package/dist/collection/components/basic-badge/basic-badge.css +1 -1
  203. package/dist/collection/components/button/button.component.js +135 -114
  204. package/dist/collection/components/button/button.component.js.map +1 -1
  205. package/dist/collection/components/button/button.css +1 -1
  206. package/dist/collection/components/button-group/button-group.component.js +47 -36
  207. package/dist/collection/components/button-group/button-group.component.js.map +1 -1
  208. package/dist/collection/components/button-group/button-group.css +1 -1
  209. package/dist/collection/components/checkbox/checkbox.component.js +362 -243
  210. package/dist/collection/components/checkbox/checkbox.component.js.map +1 -1
  211. package/dist/collection/components/checkbox/checkbox.css +1 -1
  212. package/dist/collection/components/chip/chip.component.js +42 -41
  213. package/dist/collection/components/chip/chip.component.js.map +1 -1
  214. package/dist/collection/components/chip/chip.css +1 -1
  215. package/dist/collection/components/divider/divider.component.js +56 -58
  216. package/dist/collection/components/divider/divider.component.js.map +1 -1
  217. package/dist/collection/components/divider/divider.css +1 -1
  218. package/dist/collection/components/drawer/drawer.component.js +476 -155
  219. package/dist/collection/components/drawer/drawer.component.js.map +1 -1
  220. package/dist/collection/components/drawer/drawer.css +1 -1
  221. package/dist/collection/components/drawer/types.js.map +1 -1
  222. package/dist/collection/components/dropdown/dropdown.component.js +18 -27
  223. package/dist/collection/components/dropdown/dropdown.component.js.map +1 -1
  224. package/dist/collection/components/dropdown-item/dropdown-item.component.js +41 -40
  225. package/dist/collection/components/dropdown-item/dropdown-item.component.js.map +1 -1
  226. package/dist/collection/components/dropdown-item/dropdown-item.css +1 -1
  227. package/dist/collection/components/input/input.component.js +283 -198
  228. package/dist/collection/components/input/input.component.js.map +1 -1
  229. package/dist/collection/components/linked/linked.component.js +551 -355
  230. package/dist/collection/components/linked/linked.component.js.map +1 -1
  231. package/dist/collection/components/linked/linked.css +1 -1
  232. package/dist/collection/components/modal/modal.component.js +276 -149
  233. package/dist/collection/components/modal/modal.component.js.map +1 -1
  234. package/dist/collection/components/modal/modal.css +1 -1
  235. package/dist/collection/components/pop-confirm/pop-confirm.component.js +745 -340
  236. package/dist/collection/components/pop-confirm/pop-confirm.component.js.map +1 -1
  237. package/dist/collection/components/pop-confirm/pop-confirm.css +1 -1
  238. package/dist/collection/components/popover/popover.component.js +609 -196
  239. package/dist/collection/components/popover/popover.component.js.map +1 -1
  240. package/dist/collection/components/popover/popover.css +1 -1
  241. package/dist/collection/components/radio/radio.component.js +294 -118
  242. package/dist/collection/components/radio/radio.component.js.map +1 -1
  243. package/dist/collection/components/radio-group/radio-group.component.js +115 -93
  244. package/dist/collection/components/radio-group/radio-group.component.js.map +1 -1
  245. package/dist/collection/components/segmented-picker/segment.component.js +228 -0
  246. package/dist/collection/components/segmented-picker/segment.component.js.map +1 -0
  247. package/dist/collection/components/segmented-picker/segment.css +1 -0
  248. package/dist/collection/components/segmented-picker/segmented-picker.component.js +357 -142
  249. package/dist/collection/components/segmented-picker/segmented-picker.component.js.map +1 -1
  250. package/dist/collection/components/segmented-picker/segmented-picker.css +1 -1
  251. package/dist/collection/components/shortcut/shortcut.js +7 -8
  252. package/dist/collection/components/shortcut/shortcut.js.map +1 -1
  253. package/dist/collection/components/switch/switch.component.js +357 -287
  254. package/dist/collection/components/switch/switch.component.js.map +1 -1
  255. package/dist/collection/components/switch/switch.css +1 -1
  256. package/dist/collection/components/tabs/bcm-tab.css +1 -0
  257. package/dist/collection/components/tabs/bcm-tabs.css +1 -1
  258. package/dist/collection/components/tabs/tab.component.js +169 -0
  259. package/dist/collection/components/tabs/tab.component.js.map +1 -0
  260. package/dist/collection/components/tabs/tabs.component.js +224 -355
  261. package/dist/collection/components/tabs/tabs.component.js.map +1 -1
  262. package/dist/collection/components/text/text.component.js +90 -91
  263. package/dist/collection/components/text/text.component.js.map +1 -1
  264. package/dist/collection/components/textarea/textarea.component.js +252 -190
  265. package/dist/collection/components/textarea/textarea.component.js.map +1 -1
  266. package/dist/collection/components/tooltip/tooltip.component.js +605 -220
  267. package/dist/collection/components/tooltip/tooltip.component.js.map +1 -1
  268. package/dist/collection/components/tooltip/tooltip.css +1 -1
  269. package/dist/collection/components/upload/file-upload.component.js +905 -0
  270. package/dist/collection/components/upload/file-upload.component.js.map +1 -0
  271. package/dist/collection/components/upload/file-upload.css +1 -0
  272. package/dist/collection/global/global.js +33 -30
  273. package/dist/collection/utils/i18n.js +3 -4
  274. package/dist/collection/utils/i18n.js.map +1 -1
  275. package/dist/collection/utils/slot/check-slot-content.js +1 -2
  276. package/dist/collection/utils/slot/check-slot-content.js.map +1 -1
  277. package/dist/collection/utils/validation-messages.js +1 -1
  278. package/dist/collection/utils/validation-messages.js.map +1 -1
  279. package/dist/components/bcm-accordion-group.js +24 -20
  280. package/dist/components/bcm-accordion-group.js.map +1 -1
  281. package/dist/components/bcm-accordion.js +78 -59
  282. package/dist/components/bcm-accordion.js.map +1 -1
  283. package/dist/components/bcm-alert.js +1 -112
  284. package/dist/components/bcm-alert.js.map +1 -1
  285. package/dist/components/bcm-avatar.js +26 -14
  286. package/dist/components/bcm-avatar.js.map +1 -1
  287. package/dist/components/bcm-badge.js +1 -1
  288. package/dist/components/bcm-basic-badge.js +76 -60
  289. package/dist/components/bcm-basic-badge.js.map +1 -1
  290. package/dist/components/bcm-button-group.js +39 -25
  291. package/dist/components/bcm-button-group.js.map +1 -1
  292. package/dist/components/bcm-button.js +1 -1
  293. package/dist/components/bcm-checkbox.js +300 -186
  294. package/dist/components/bcm-checkbox.js.map +1 -1
  295. package/dist/components/bcm-chip.js +41 -36
  296. package/dist/components/bcm-chip.js.map +1 -1
  297. package/dist/components/bcm-divider.js +59 -57
  298. package/dist/components/bcm-divider.js.map +1 -1
  299. package/dist/components/bcm-drawer.js +276 -138
  300. package/dist/components/bcm-drawer.js.map +1 -1
  301. package/dist/components/bcm-dropdown-item.js +40 -35
  302. package/dist/components/bcm-dropdown-item.js.map +1 -1
  303. package/dist/components/bcm-dropdown.js +22 -28
  304. package/dist/components/bcm-dropdown.js.map +1 -1
  305. package/dist/components/{bcm-tabs-content.d.ts → bcm-file-upload.d.ts} +4 -4
  306. package/dist/components/bcm-file-upload.js +593 -0
  307. package/dist/components/bcm-file-upload.js.map +1 -0
  308. package/dist/components/bcm-input.js +248 -160
  309. package/dist/components/bcm-input.js.map +1 -1
  310. package/dist/components/bcm-linked.js +1 -1
  311. package/dist/components/bcm-modal.js +196 -119
  312. package/dist/components/bcm-modal.js.map +1 -1
  313. package/dist/components/bcm-pop-confirm.js +354 -215
  314. package/dist/components/bcm-pop-confirm.js.map +1 -1
  315. package/dist/components/bcm-popover.js +431 -157
  316. package/dist/components/bcm-popover.js.map +1 -1
  317. package/dist/components/bcm-radio-group.js +106 -81
  318. package/dist/components/bcm-radio-group.js.map +1 -1
  319. package/dist/components/bcm-radio.js +245 -110
  320. package/dist/components/bcm-radio.js.map +1 -1
  321. package/dist/components/{bcm-tabs-list.d.ts → bcm-segment.d.ts} +4 -4
  322. package/dist/components/bcm-segment.js +110 -0
  323. package/dist/components/bcm-segment.js.map +1 -0
  324. package/dist/components/bcm-segmented-picker.js +238 -117
  325. package/dist/components/bcm-segmented-picker.js.map +1 -1
  326. package/dist/components/bcm-shortcut.js +8 -5
  327. package/dist/components/bcm-shortcut.js.map +1 -1
  328. package/dist/components/bcm-switch.js +296 -158
  329. package/dist/components/bcm-switch.js.map +1 -1
  330. package/dist/components/{bcm-tabs-trigger.d.ts → bcm-tab.d.ts} +4 -4
  331. package/dist/components/bcm-tab.js +71 -0
  332. package/dist/components/bcm-tab.js.map +1 -0
  333. package/dist/components/bcm-tabs.js +200 -249
  334. package/dist/components/bcm-tabs.js.map +1 -1
  335. package/dist/components/bcm-text.js +89 -86
  336. package/dist/components/bcm-text.js.map +1 -1
  337. package/dist/components/bcm-textarea.js +222 -156
  338. package/dist/components/bcm-textarea.js.map +1 -1
  339. package/dist/components/bcm-tooltip.js +402 -154
  340. package/dist/components/bcm-tooltip.js.map +1 -1
  341. package/dist/components/index.js +140 -392
  342. package/dist/components/index.js.map +1 -1
  343. package/dist/components/p-5_TgtzQU.js +119 -0
  344. package/dist/components/p-5_TgtzQU.js.map +1 -0
  345. package/dist/components/p-BfTCfPZ1.js.map +1 -1
  346. package/dist/components/p-CEcVC0yX.js.map +1 -1
  347. package/dist/components/{p-CzcTU1ty.js → p-DBDSgIvP.js} +40 -23
  348. package/dist/components/p-DBDSgIvP.js.map +1 -0
  349. package/dist/components/p-IBjzkjef.js.map +1 -1
  350. package/dist/components/p-RlBWOSgL.js +179 -0
  351. package/dist/components/p-RlBWOSgL.js.map +1 -0
  352. package/dist/components/p-SERXqWcS.js +51 -0
  353. package/dist/components/p-SERXqWcS.js.map +1 -0
  354. package/dist/components/{p-CUvT12BL.js → p-nf_HKsGq.js} +6 -7
  355. package/dist/components/p-nf_HKsGq.js.map +1 -0
  356. package/dist/components/{p-DHONP_n4.js → p-xQIzBLsS.js} +112 -87
  357. package/dist/components/p-xQIzBLsS.js.map +1 -0
  358. package/dist/components/p-z9ESseGb.js +492 -0
  359. package/dist/components/p-z9ESseGb.js.map +1 -0
  360. package/dist/esm/base-choice-control-CKR8UdZ6.js +52 -0
  361. package/dist/esm/base-choice-control-CKR8UdZ6.js.map +1 -0
  362. package/dist/esm/bcm-accordion-group.entry.js +21 -21
  363. package/dist/esm/bcm-accordion-group.entry.js.map +1 -1
  364. package/dist/esm/bcm-accordion.entry.js +75 -60
  365. package/dist/esm/bcm-accordion.entry.js.map +1 -1
  366. package/dist/esm/bcm-alert.entry.js +21 -23
  367. package/dist/esm/bcm-alert.entry.js.map +1 -1
  368. package/dist/esm/bcm-avatar.entry.js +22 -14
  369. package/dist/esm/bcm-avatar.entry.js.map +1 -1
  370. package/dist/esm/bcm-badge.entry.js +114 -84
  371. package/dist/esm/bcm-badge.entry.js.map +1 -1
  372. package/dist/esm/bcm-basic-badge.entry.js +73 -61
  373. package/dist/esm/bcm-basic-badge.entry.js.map +1 -1
  374. package/dist/esm/bcm-button-group.entry.js +36 -26
  375. package/dist/esm/bcm-button-group.entry.js.map +1 -1
  376. package/dist/esm/bcm-button.entry.js +336 -0
  377. package/dist/esm/bcm-button.entry.js.map +1 -0
  378. package/dist/esm/bcm-checkbox.entry.js +284 -176
  379. package/dist/esm/bcm-checkbox.entry.js.map +1 -1
  380. package/dist/esm/bcm-chip.entry.js +38 -37
  381. package/dist/esm/bcm-chip.entry.js.map +1 -1
  382. package/dist/esm/bcm-divider.entry.js +56 -58
  383. package/dist/esm/bcm-divider.entry.js.map +1 -1
  384. package/dist/esm/bcm-drawer.entry.js +330 -0
  385. package/dist/esm/bcm-drawer.entry.js.map +1 -0
  386. package/dist/esm/bcm-dropdown-item.entry.js +36 -35
  387. package/dist/esm/bcm-dropdown-item.entry.js.map +1 -1
  388. package/dist/esm/bcm-dropdown.entry.js +17 -26
  389. package/dist/esm/bcm-dropdown.entry.js.map +1 -1
  390. package/dist/esm/bcm-file-upload.entry.js +550 -0
  391. package/dist/esm/bcm-file-upload.entry.js.map +1 -0
  392. package/dist/esm/bcm-input.entry.js +250 -160
  393. package/dist/esm/bcm-input.entry.js.map +1 -1
  394. package/dist/esm/bcm-linked.entry.js +373 -264
  395. package/dist/esm/bcm-linked.entry.js.map +1 -1
  396. package/dist/esm/bcm-modal.entry.js +358 -0
  397. package/dist/esm/bcm-modal.entry.js.map +1 -0
  398. package/dist/esm/bcm-pop-confirm.entry.js +337 -206
  399. package/dist/esm/bcm-pop-confirm.entry.js.map +1 -1
  400. package/dist/esm/bcm-popover.entry.js +416 -154
  401. package/dist/esm/bcm-popover.entry.js.map +1 -1
  402. package/dist/esm/bcm-radio-group.entry.js +103 -82
  403. package/dist/esm/bcm-radio-group.entry.js.map +1 -1
  404. package/dist/esm/bcm-radio.entry.js +239 -108
  405. package/dist/esm/bcm-radio.entry.js.map +1 -1
  406. package/dist/esm/bcm-segment.bcm-segmented-picker.entry.js.map +1 -0
  407. package/dist/esm/bcm-segment_2.entry.js +332 -0
  408. package/dist/esm/bcm-shortcut.entry.js +5 -6
  409. package/dist/esm/bcm-shortcut.entry.js.map +1 -1
  410. package/dist/esm/bcm-switch.entry.js +281 -150
  411. package/dist/esm/bcm-switch.entry.js.map +1 -1
  412. package/dist/esm/bcm-tab.entry.js +42 -0
  413. package/dist/esm/bcm-tab.entry.js.map +1 -0
  414. package/dist/esm/bcm-tabs.entry.js +191 -239
  415. package/dist/esm/bcm-tabs.entry.js.map +1 -1
  416. package/dist/esm/bcm-text.entry.js +86 -87
  417. package/dist/esm/bcm-text.entry.js.map +1 -1
  418. package/dist/esm/bcm-textarea.entry.js +224 -156
  419. package/dist/esm/bcm-textarea.entry.js.map +1 -1
  420. package/dist/esm/bcm-tooltip.entry.js +386 -152
  421. package/dist/esm/bcm-tooltip.entry.js.map +1 -1
  422. package/dist/esm/bromcom-ui.js +4 -6
  423. package/dist/esm/bromcom-ui.js.map +1 -1
  424. package/dist/esm/{floating-ui.dom-DxMLMJ3r.js → floating-ui.dom-DBDSgIvP.js} +41 -24
  425. package/dist/esm/floating-ui.dom-DBDSgIvP.js.map +1 -0
  426. package/dist/esm/generate-id-IBjzkjef.js.map +1 -1
  427. package/dist/esm/{index-BuuGCw0z.js → index-B6Ppbs5O.js} +165 -398
  428. package/dist/esm/index-B6Ppbs5O.js.map +1 -0
  429. package/dist/esm/index-BfTCfPZ1.js.map +1 -1
  430. package/dist/esm/index.js +0 -2
  431. package/dist/esm/loader.js +3 -5
  432. package/dist/esm/tv-CEcVC0yX.js.map +1 -1
  433. package/dist/esm/{validation-messages-CUvT12BL.js → validation-messages-nf_HKsGq.js} +6 -7
  434. package/dist/{cjs/validation-messages-BjfpSEWk.js.map → esm/validation-messages-nf_HKsGq.js.map} +1 -1
  435. package/dist/types/components/_shared/form/base-choice-control.d.ts +15 -0
  436. package/dist/types/components/_shared/form/base-form-control.d.ts +11 -0
  437. package/dist/types/components/accordion-group/types.d.ts +2 -2
  438. package/dist/types/components/checkbox/checkbox.component.d.ts +89 -71
  439. package/dist/types/components/drawer/drawer.component.d.ts +143 -3
  440. package/dist/types/components/drawer/types.d.ts +1 -1
  441. package/dist/types/components/dropdown/dropdown.component.d.ts +0 -3
  442. package/dist/types/components/input/input.component.d.ts +5 -0
  443. package/dist/types/components/linked/linked.component.d.ts +152 -36
  444. package/dist/types/components/modal/modal.component.d.ts +121 -0
  445. package/dist/types/components/pop-confirm/pop-confirm.component.d.ts +263 -143
  446. package/dist/types/components/popover/popover.component.d.ts +94 -39
  447. package/dist/types/components/radio/radio.component.d.ts +21 -0
  448. package/dist/types/components/segmented-picker/segment.component.d.ts +42 -0
  449. package/dist/types/components/segmented-picker/segmented-picker.component.d.ts +91 -24
  450. package/dist/types/components/switch/switch.component.d.ts +83 -43
  451. package/dist/types/components/tabs/tab.component.d.ts +33 -0
  452. package/dist/types/components/tabs/tabs.component.d.ts +51 -64
  453. package/dist/types/components/textarea/textarea.component.d.ts +5 -0
  454. package/dist/types/components/tooltip/tooltip.component.d.ts +147 -56
  455. package/dist/types/components/upload/file-upload.component.d.ts +107 -0
  456. package/dist/types/components.d.ts +2400 -742
  457. package/dist/types/stencil-public-runtime.d.ts +50 -3
  458. package/package.json +2 -2
  459. package/dist/bromcom-ui/bcm-button.bcm-drawer.bcm-modal.entry.esm.js.map +0 -1
  460. package/dist/bromcom-ui/bcm-segmented-picker-option.entry.esm.js.map +0 -1
  461. package/dist/bromcom-ui/bcm-segmented-picker.entry.esm.js.map +0 -1
  462. package/dist/bromcom-ui/bcm-tabs-content.entry.esm.js.map +0 -1
  463. package/dist/bromcom-ui/bcm-tabs-list.entry.esm.js.map +0 -1
  464. package/dist/bromcom-ui/bcm-tabs-trigger.entry.esm.js.map +0 -1
  465. package/dist/bromcom-ui/p-0101b4f2.entry.js +0 -2
  466. package/dist/bromcom-ui/p-0101b4f2.entry.js.map +0 -1
  467. package/dist/bromcom-ui/p-089edfdc.entry.js.map +0 -1
  468. package/dist/bromcom-ui/p-08bc93c5.entry.js +0 -2
  469. package/dist/bromcom-ui/p-08bc93c5.entry.js.map +0 -1
  470. package/dist/bromcom-ui/p-09be61c3.entry.js +0 -2
  471. package/dist/bromcom-ui/p-09be61c3.entry.js.map +0 -1
  472. package/dist/bromcom-ui/p-11851391.entry.js +0 -2
  473. package/dist/bromcom-ui/p-11851391.entry.js.map +0 -1
  474. package/dist/bromcom-ui/p-11f3e129.entry.js +0 -2
  475. package/dist/bromcom-ui/p-11f3e129.entry.js.map +0 -1
  476. package/dist/bromcom-ui/p-211ca6e0.entry.js +0 -2
  477. package/dist/bromcom-ui/p-211ca6e0.entry.js.map +0 -1
  478. package/dist/bromcom-ui/p-22edf049.entry.js +0 -2
  479. package/dist/bromcom-ui/p-22edf049.entry.js.map +0 -1
  480. package/dist/bromcom-ui/p-2480e468.entry.js.map +0 -1
  481. package/dist/bromcom-ui/p-26d2db9e.entry.js +0 -2
  482. package/dist/bromcom-ui/p-26d2db9e.entry.js.map +0 -1
  483. package/dist/bromcom-ui/p-2d0a6472.entry.js +0 -2
  484. package/dist/bromcom-ui/p-2d0a6472.entry.js.map +0 -1
  485. package/dist/bromcom-ui/p-360bff8a.entry.js +0 -2
  486. package/dist/bromcom-ui/p-360bff8a.entry.js.map +0 -1
  487. package/dist/bromcom-ui/p-488d6ef4.entry.js +0 -2
  488. package/dist/bromcom-ui/p-488d6ef4.entry.js.map +0 -1
  489. package/dist/bromcom-ui/p-5e0702d1.entry.js +0 -2
  490. package/dist/bromcom-ui/p-5e0702d1.entry.js.map +0 -1
  491. package/dist/bromcom-ui/p-63228f7e.entry.js +0 -2
  492. package/dist/bromcom-ui/p-63228f7e.entry.js.map +0 -1
  493. package/dist/bromcom-ui/p-6b585adc.entry.js +0 -2
  494. package/dist/bromcom-ui/p-6b585adc.entry.js.map +0 -1
  495. package/dist/bromcom-ui/p-6d7d73d5.entry.js +0 -2
  496. package/dist/bromcom-ui/p-6d7d73d5.entry.js.map +0 -1
  497. package/dist/bromcom-ui/p-7234af90.entry.js +0 -2
  498. package/dist/bromcom-ui/p-7234af90.entry.js.map +0 -1
  499. package/dist/bromcom-ui/p-83f64814.entry.js +0 -2
  500. package/dist/bromcom-ui/p-83f64814.entry.js.map +0 -1
  501. package/dist/bromcom-ui/p-8ace5a6a.entry.js +0 -2
  502. package/dist/bromcom-ui/p-8ace5a6a.entry.js.map +0 -1
  503. package/dist/bromcom-ui/p-8d74249a.entry.js +0 -2
  504. package/dist/bromcom-ui/p-8d74249a.entry.js.map +0 -1
  505. package/dist/bromcom-ui/p-BuuGCw0z.js +0 -3
  506. package/dist/bromcom-ui/p-BuuGCw0z.js.map +0 -1
  507. package/dist/bromcom-ui/p-CUvT12BL.js +0 -2
  508. package/dist/bromcom-ui/p-DxMLMJ3r.js +0 -2
  509. package/dist/bromcom-ui/p-DxMLMJ3r.js.map +0 -1
  510. package/dist/bromcom-ui/p-a88f20e0.entry.js +0 -2
  511. package/dist/bromcom-ui/p-a88f20e0.entry.js.map +0 -1
  512. package/dist/bromcom-ui/p-bad299f2.entry.js +0 -2
  513. package/dist/bromcom-ui/p-bad299f2.entry.js.map +0 -1
  514. package/dist/bromcom-ui/p-bdaf5653.entry.js +0 -2
  515. package/dist/bromcom-ui/p-bdaf5653.entry.js.map +0 -1
  516. package/dist/bromcom-ui/p-c0e7f9d6.entry.js +0 -2
  517. package/dist/bromcom-ui/p-c0e7f9d6.entry.js.map +0 -1
  518. package/dist/bromcom-ui/p-c34f0a66.entry.js +0 -2
  519. package/dist/bromcom-ui/p-c34f0a66.entry.js.map +0 -1
  520. package/dist/bromcom-ui/p-d7cea19f.entry.js +0 -2
  521. package/dist/bromcom-ui/p-d7cea19f.entry.js.map +0 -1
  522. package/dist/bromcom-ui/p-e5e0ac07.entry.js +0 -2
  523. package/dist/bromcom-ui/p-e5e0ac07.entry.js.map +0 -1
  524. package/dist/bromcom-ui/p-ee5f877f.entry.js +0 -2
  525. package/dist/bromcom-ui/p-ee5f877f.entry.js.map +0 -1
  526. package/dist/bromcom-ui/p-fbccbffc.entry.js +0 -2
  527. package/dist/bromcom-ui/p-fbccbffc.entry.js.map +0 -1
  528. package/dist/cjs/bcm-accordion-group.cjs.entry.js.map +0 -1
  529. package/dist/cjs/bcm-accordion.cjs.entry.js.map +0 -1
  530. package/dist/cjs/bcm-alert.cjs.entry.js.map +0 -1
  531. package/dist/cjs/bcm-avatar.cjs.entry.js.map +0 -1
  532. package/dist/cjs/bcm-badge.cjs.entry.js.map +0 -1
  533. package/dist/cjs/bcm-basic-badge.cjs.entry.js.map +0 -1
  534. package/dist/cjs/bcm-button-group.cjs.entry.js.map +0 -1
  535. package/dist/cjs/bcm-button.bcm-drawer.bcm-modal.entry.cjs.js.map +0 -1
  536. package/dist/cjs/bcm-button_3.cjs.entry.js +0 -794
  537. package/dist/cjs/bcm-button_3.cjs.entry.js.map +0 -1
  538. package/dist/cjs/bcm-checkbox.cjs.entry.js.map +0 -1
  539. package/dist/cjs/bcm-chip.cjs.entry.js.map +0 -1
  540. package/dist/cjs/bcm-divider.cjs.entry.js.map +0 -1
  541. package/dist/cjs/bcm-dropdown-item.cjs.entry.js.map +0 -1
  542. package/dist/cjs/bcm-dropdown.cjs.entry.js.map +0 -1
  543. package/dist/cjs/bcm-input.cjs.entry.js.map +0 -1
  544. package/dist/cjs/bcm-linked.cjs.entry.js.map +0 -1
  545. package/dist/cjs/bcm-pop-confirm.cjs.entry.js.map +0 -1
  546. package/dist/cjs/bcm-popover.cjs.entry.js.map +0 -1
  547. package/dist/cjs/bcm-radio-group.cjs.entry.js.map +0 -1
  548. package/dist/cjs/bcm-radio.cjs.entry.js.map +0 -1
  549. package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js +0 -107
  550. package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js.map +0 -1
  551. package/dist/cjs/bcm-segmented-picker-option.entry.cjs.js.map +0 -1
  552. package/dist/cjs/bcm-segmented-picker.cjs.entry.js +0 -144
  553. package/dist/cjs/bcm-segmented-picker.cjs.entry.js.map +0 -1
  554. package/dist/cjs/bcm-segmented-picker.entry.cjs.js.map +0 -1
  555. package/dist/cjs/bcm-shortcut.cjs.entry.js.map +0 -1
  556. package/dist/cjs/bcm-switch.cjs.entry.js.map +0 -1
  557. package/dist/cjs/bcm-tabs-content.cjs.entry.js +0 -20
  558. package/dist/cjs/bcm-tabs-content.cjs.entry.js.map +0 -1
  559. package/dist/cjs/bcm-tabs-content.entry.cjs.js.map +0 -1
  560. package/dist/cjs/bcm-tabs-list.cjs.entry.js +0 -84
  561. package/dist/cjs/bcm-tabs-list.cjs.entry.js.map +0 -1
  562. package/dist/cjs/bcm-tabs-list.entry.cjs.js.map +0 -1
  563. package/dist/cjs/bcm-tabs-trigger.cjs.entry.js +0 -122
  564. package/dist/cjs/bcm-tabs-trigger.cjs.entry.js.map +0 -1
  565. package/dist/cjs/bcm-tabs-trigger.entry.cjs.js.map +0 -1
  566. package/dist/cjs/bcm-tabs.cjs.entry.js.map +0 -1
  567. package/dist/cjs/bcm-text.cjs.entry.js.map +0 -1
  568. package/dist/cjs/bcm-textarea.cjs.entry.js.map +0 -1
  569. package/dist/cjs/bcm-tooltip.cjs.entry.js.map +0 -1
  570. package/dist/cjs/floating-ui.dom-DyKmFgkP.js.map +0 -1
  571. package/dist/cjs/index-BtiU-G2W.js.map +0 -1
  572. package/dist/collection/components/segmented-picker/segmented-picker-option.component.js +0 -253
  573. package/dist/collection/components/segmented-picker/segmented-picker-option.component.js.map +0 -1
  574. package/dist/collection/components/segmented-picker/segmented-picker-option.css +0 -1
  575. package/dist/collection/components/tabs/tabs-content.component.js +0 -46
  576. package/dist/collection/components/tabs/tabs-content.component.js.map +0 -1
  577. package/dist/collection/components/tabs/tabs-content.css +0 -1
  578. package/dist/collection/components/tabs/tabs-list.component.js +0 -133
  579. package/dist/collection/components/tabs/tabs-list.component.js.map +0 -1
  580. package/dist/collection/components/tabs/tabs-list.css +0 -1
  581. package/dist/collection/components/tabs/tabs-trigger.component.js +0 -267
  582. package/dist/collection/components/tabs/tabs-trigger.component.js.map +0 -1
  583. package/dist/collection/components/tabs/tabs-trigger.css +0 -1
  584. package/dist/components/bcm-segmented-picker-option.d.ts +0 -11
  585. package/dist/components/bcm-segmented-picker-option.js +0 -131
  586. package/dist/components/bcm-segmented-picker-option.js.map +0 -1
  587. package/dist/components/bcm-tabs-content.js +0 -39
  588. package/dist/components/bcm-tabs-content.js.map +0 -1
  589. package/dist/components/bcm-tabs-list.js +0 -104
  590. package/dist/components/bcm-tabs-list.js.map +0 -1
  591. package/dist/components/bcm-tabs-trigger.js +0 -146
  592. package/dist/components/bcm-tabs-trigger.js.map +0 -1
  593. package/dist/components/p-BHwftRkk.js +0 -379
  594. package/dist/components/p-BHwftRkk.js.map +0 -1
  595. package/dist/components/p-CQF7wlXf.js +0 -145
  596. package/dist/components/p-CQF7wlXf.js.map +0 -1
  597. package/dist/components/p-CUvT12BL.js.map +0 -1
  598. package/dist/components/p-CzcTU1ty.js.map +0 -1
  599. package/dist/components/p-DHONP_n4.js.map +0 -1
  600. package/dist/esm/bcm-button.bcm-drawer.bcm-modal.entry.js.map +0 -1
  601. package/dist/esm/bcm-button_3.entry.js +0 -790
  602. package/dist/esm/bcm-button_3.entry.js.map +0 -1
  603. package/dist/esm/bcm-segmented-picker-option.entry.js +0 -105
  604. package/dist/esm/bcm-segmented-picker-option.entry.js.map +0 -1
  605. package/dist/esm/bcm-segmented-picker.entry.js +0 -142
  606. package/dist/esm/bcm-segmented-picker.entry.js.map +0 -1
  607. package/dist/esm/bcm-tabs-content.entry.js +0 -18
  608. package/dist/esm/bcm-tabs-content.entry.js.map +0 -1
  609. package/dist/esm/bcm-tabs-list.entry.js +0 -82
  610. package/dist/esm/bcm-tabs-list.entry.js.map +0 -1
  611. package/dist/esm/bcm-tabs-trigger.entry.js +0 -120
  612. package/dist/esm/bcm-tabs-trigger.entry.js.map +0 -1
  613. package/dist/esm/floating-ui.dom-DxMLMJ3r.js.map +0 -1
  614. package/dist/esm/index-BuuGCw0z.js.map +0 -1
  615. package/dist/types/components/segmented-picker/segmented-picker-option.component.d.ts +0 -30
  616. package/dist/types/components/tabs/tabs-content.component.d.ts +0 -13
  617. package/dist/types/components/tabs/tabs-list.component.d.ts +0 -20
  618. package/dist/types/components/tabs/tabs-trigger.component.d.ts +0 -49
@@ -1,214 +1,367 @@
1
1
  import { h, Host } from "@stencil/core";
2
- import { computePosition, shift, offset, autoUpdate, flip } from "@floating-ui/dom";
2
+ import { computePosition, shift, offset, autoUpdate, flip, arrow } from "@floating-ui/dom";
3
+ import { tv } from "../../utils/tv";
4
+ /**
5
+ * @component BcmLinked
6
+ * @description A flexible linked floating element component that displays contextual content relative to a trigger element.
7
+ * Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning.
8
+ * Supports different trigger types (click, hover, focus, manual) and comprehensive event system.
9
+ *
10
+ * @example Basic Click Trigger
11
+ * <bcm-linked trigger="click">
12
+ * <button slot="trigger">Click Me</button>
13
+ * <div>Floating content here</div>
14
+ * </bcm-linked>
15
+ *
16
+ * @example Hover Trigger with Delays
17
+ * <bcm-linked trigger="hover" show-delay="200" hide-delay="100">
18
+ * <span slot="trigger">Hover Me</span>
19
+ * <div>This appears on hover</div>
20
+ * </bcm-linked>
21
+ *
22
+ * @example Manual Control
23
+ * <bcm-linked id="my-linked" trigger="manual">
24
+ * <button slot="trigger">Trigger</button>
25
+ * <div>Controlled content</div>
26
+ * </bcm-linked>
27
+ * <script>
28
+ * const linked = document.querySelector('#my-linked');
29
+ * linked.show(); // Opens the floating element
30
+ * linked.hide(); // Closes the floating element
31
+ * </script>
32
+ *
33
+ * @slot trigger - The trigger element that controls the floating element visibility
34
+ * @slot - Default slot for the floating content
35
+ *
36
+ * @csspart floating - The floating container element
37
+ * @csspart arrow - The arrow element pointing to the trigger
38
+ * @csspart content - The content wrapper element
39
+ */
3
40
  export class BcmLinked {
4
- constructor() {
5
- // Trigger configuration
6
- this.trigger = 'click';
7
- this.placement = 'bottom-start';
8
- // Timing configuration
9
- this.showDelay = 0;
10
- this.hideDelay = 0;
11
- // Positioning configuration
12
- this.offset = 8;
13
- this.arrow = false;
14
- this.disabled = false;
15
- // Style configuration
16
- this.zIndex = 1000;
17
- this.appendToBody = false;
18
- this.destroyOnHide = false;
19
- // State
20
- this.isVisible = false;
21
- this.isReady = false;
22
- this.handleMouseEnter = () => {
23
- this.clearTimeouts();
24
- if (this.showDelay > 0) {
25
- this.showTimeout = setTimeout(() => this.show(), this.showDelay);
26
- }
27
- else {
28
- this.show();
29
- }
30
- };
31
- this.handleMouseLeave = () => {
32
- this.clearTimeouts();
33
- if (this.hideDelay > 0) {
34
- this.hideTimeout = setTimeout(() => this.hide(), this.hideDelay);
35
- }
36
- else {
37
- this.hide();
38
- }
39
- };
40
- this.handleFloatingMouseEnter = () => {
41
- this.clearTimeouts();
42
- };
43
- this.handleFloatingMouseLeave = () => {
44
- this.clearTimeouts();
45
- if (this.hideDelay > 0) {
46
- this.hideTimeout = setTimeout(() => this.hide(), this.hideDelay);
47
- }
48
- else {
49
- this.hide();
50
- }
51
- };
52
- this.handleClick = (e) => {
53
- e.stopPropagation();
54
- this.toggle();
55
- };
56
- this.handleFocus = () => {
57
- this.show();
58
- };
59
- this.handleBlur = () => {
60
- this.hide();
61
- };
41
+ host;
42
+ // Element references
43
+ floatingRef;
44
+ triggerRef;
45
+ arrowRef;
46
+ // Cleanup references
47
+ cleanupAutoUpdate;
48
+ showTimeout;
49
+ hideTimeout;
50
+ // Unique ID for ARIA
51
+ componentId = `linked-${Math.random().toString(36).substring(2, 11)}`;
52
+ /**
53
+ * @prop {boolean} visible - Controls the visibility state of the floating element.
54
+ * Can be set programmatically or toggled by user interaction.
55
+ * Default: false
56
+ */
57
+ visible = false;
58
+ /**
59
+ * @prop {TriggerType} trigger - Defines the interaction type to show/hide the floating element.
60
+ * 'click' toggles on click, 'hover' shows on mouse enter and hides on mouse leave,
61
+ * 'focus' shows on focus and hides on blur, 'manual' requires programmatic control.
62
+ * Default: 'click'
63
+ */
64
+ trigger = 'click';
65
+ /**
66
+ * @prop {Placement} placement - Defines the position of the floating element relative to the trigger.
67
+ * Default: 'bottom-start'
68
+ */
69
+ placement = 'bottom-start';
70
+ /**
71
+ * @prop {number} showDelay - Delay in milliseconds before showing the floating element.
72
+ * Default: 0
73
+ */
74
+ showDelay = 0;
75
+ /**
76
+ * @prop {number} hideDelay - Delay in milliseconds before hiding the floating element.
77
+ * Default: 0
78
+ */
79
+ hideDelay = 0;
80
+ /**
81
+ * @prop {number} offsetDistance - Distance in pixels between the floating element and the trigger.
82
+ * Default: 8
83
+ */
84
+ offsetDistance = 8;
85
+ /**
86
+ * @prop {boolean} showArrow - Whether to show an arrow pointing to the trigger element.
87
+ * Default: true
88
+ */
89
+ showArrow = true;
90
+ /**
91
+ * @prop {boolean} disabled - Disables the floating element, preventing it from showing.
92
+ * Default: false
93
+ */
94
+ disabled = false;
95
+ /**
96
+ * @prop {boolean} closeOnOutsideClick - Whether to close when clicking outside.
97
+ * Default: true
98
+ */
99
+ closeOnOutsideClick = true;
100
+ /**
101
+ * @prop {boolean} closeOnEscape - Whether to close when pressing Escape key.
102
+ * Default: true
103
+ */
104
+ closeOnEscape = true;
105
+ // Internal state
106
+ isVisible = false;
107
+ /**
108
+ * @event bcmBeforeShow - Emitted before the floating element shows.
109
+ */
110
+ bcmBeforeShow;
111
+ /**
112
+ * @event bcmShow - Emitted when the floating element is shown.
113
+ */
114
+ bcmShow;
115
+ /**
116
+ * @event bcmBeforeHide - Emitted before the floating element hides.
117
+ */
118
+ bcmBeforeHide;
119
+ /**
120
+ * @event bcmHide - Emitted when the floating element is hidden.
121
+ */
122
+ bcmHide;
123
+ /**
124
+ * @event bcmShown - Emitted after the floating element is fully shown (after animation).
125
+ */
126
+ bcmShown;
127
+ /**
128
+ * @event bcmHidden - Emitted after the floating element is fully hidden (after animation).
129
+ */
130
+ bcmHidden;
131
+ // Watch for visibility prop changes
132
+ handleVisibleChange(newValue) {
133
+ if (this.disabled)
134
+ return;
135
+ if (newValue) {
136
+ this.showInternal();
137
+ }
138
+ else {
139
+ this.hideInternal();
140
+ }
62
141
  }
63
- // Watch for changes
64
- setupTarget() {
65
- this.disconnectTarget();
66
- this.connectTarget();
142
+ handleDisabledChange(isDisabled) {
143
+ if (isDisabled && this.visible) {
144
+ this.hide();
145
+ }
67
146
  }
68
- onVisibilityChange(newValue) {
69
- if (newValue) {
147
+ handlePositionPropsChange() {
148
+ if (this.visible) {
70
149
  this.updatePosition();
150
+ }
151
+ }
152
+ // Internal show logic
153
+ showInternal() {
154
+ if (!this.floatingRef || this.disabled)
155
+ return;
156
+ this.bcmShow.emit();
157
+ this.isVisible = true;
158
+ this.floatingRef.showPopover();
159
+ this.startAutoUpdate();
160
+ this.updatePosition();
161
+ this.triggerRef?.setAttribute('aria-expanded', 'true');
162
+ if (this.closeOnOutsideClick && this.trigger !== 'manual') {
163
+ this.addOutsideClickListener();
164
+ }
165
+ // Emit bcmShown after animation
166
+ requestAnimationFrame(() => {
71
167
  this.bcmShown.emit();
168
+ });
169
+ }
170
+ // Internal hide logic
171
+ hideInternal() {
172
+ if (!this.floatingRef)
173
+ return;
174
+ this.bcmHide.emit();
175
+ this.isVisible = false;
176
+ this.floatingRef.hidePopover();
177
+ this.stopAutoUpdate();
178
+ this.triggerRef?.setAttribute('aria-expanded', 'false');
179
+ this.removeOutsideClickListener();
180
+ // Emit bcmHidden after animation
181
+ setTimeout(() => {
182
+ this.bcmHidden.emit();
183
+ }, 150);
184
+ }
185
+ /**
186
+ * Programmatically shows the floating element.
187
+ * Respects the showDelay prop.
188
+ */
189
+ async show() {
190
+ if (this.visible || this.disabled)
191
+ return;
192
+ this.clearTimeouts();
193
+ if (this.showDelay > 0) {
194
+ this.showTimeout = window.setTimeout(() => {
195
+ this.bcmBeforeShow.emit();
196
+ this.visible = true;
197
+ }, this.showDelay);
72
198
  }
73
199
  else {
74
- this.bcmHidden.emit();
200
+ this.bcmBeforeShow.emit();
201
+ this.visible = true;
75
202
  }
76
203
  }
77
- async componentDidLoad() {
78
- // Wait for render
79
- await new Promise(resolve => requestAnimationFrame(resolve));
80
- this.floatingEl = this.host.querySelector('.floating-content');
81
- if (this.floatingEl) {
82
- this.isReady = true;
83
- this.connectTarget();
84
- this.setupFloatingObserver();
85
- console.log('✅ bcm-linked initialized successfully');
204
+ /**
205
+ * Programmatically hides the floating element.
206
+ * Respects the hideDelay prop.
207
+ */
208
+ async hide() {
209
+ if (!this.visible)
210
+ return;
211
+ this.clearTimeouts();
212
+ if (this.hideDelay > 0) {
213
+ this.hideTimeout = window.setTimeout(() => {
214
+ this.bcmBeforeHide.emit();
215
+ this.visible = false;
216
+ }, this.hideDelay);
86
217
  }
87
218
  else {
88
- console.error('❌ Could not find .floating-content element');
219
+ this.bcmBeforeHide.emit();
220
+ this.visible = false;
89
221
  }
90
222
  }
91
- disconnectedCallback() {
92
- var _a, _b;
93
- this.disconnectTarget();
94
- this.clearTimeouts();
95
- (_a = this.cleanup) === null || _a === void 0 ? void 0 : _a.call(this);
96
- (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
97
- // Restore element to original position if component is destroyed while in portal
98
- if (this.appendToBody && this.floatingEl && this.originalParent) {
99
- this.originalParent.appendChild(this.floatingEl);
223
+ /**
224
+ * Toggles the floating element visibility.
225
+ */
226
+ async toggle() {
227
+ if (this.visible) {
228
+ await this.hide();
229
+ }
230
+ else {
231
+ await this.show();
100
232
  }
101
233
  }
102
- connectTarget() {
103
- if (!this.isReady)
104
- return;
105
- // Find target element
106
- this.targetEl =
107
- this.targetElement || (this.targetId ? document.getElementById(this.targetId) : null) || this.host.previousElementSibling || this.host.parentElement;
108
- if (!this.targetEl) {
109
- console.warn('bcm-linked: No target element found');
110
- return;
234
+ /**
235
+ * Updates the position of the floating element.
236
+ * Useful when the trigger element moves or resizes.
237
+ */
238
+ async updatePosition() {
239
+ await this.calculatePosition();
240
+ }
241
+ clearTimeouts() {
242
+ if (this.showTimeout) {
243
+ clearTimeout(this.showTimeout);
244
+ this.showTimeout = undefined;
111
245
  }
112
- // Setup event listeners based on trigger type
113
- this.setupEventListeners();
114
- // Setup auto-update for position
115
- if (this.targetEl && this.floatingEl) {
116
- this.cleanup = autoUpdate(this.targetEl, this.floatingEl, () => {
117
- if (this.isVisible) {
118
- this.updatePosition();
119
- }
120
- });
246
+ if (this.hideTimeout) {
247
+ clearTimeout(this.hideTimeout);
248
+ this.hideTimeout = undefined;
121
249
  }
122
- // Setup resize observer for responsive positioning
123
- this.resizeObserver = new ResizeObserver(() => {
124
- if (this.isVisible) {
125
- this.updatePosition();
126
- }
127
- });
128
- this.resizeObserver.observe(this.floatingEl);
129
250
  }
130
- disconnectTarget() {
131
- var _a, _b;
132
- if (this.targetEl) {
133
- this.removeEventListeners();
251
+ handleTriggerSlotChange = () => {
252
+ const slot = this.host.shadowRoot?.querySelector('slot[name="trigger"]');
253
+ if (!slot)
254
+ return;
255
+ const elements = slot.assignedElements();
256
+ if (elements.length > 0) {
257
+ this.removeTriggerListeners();
258
+ this.triggerRef = elements[0];
259
+ this.setupTriggerListeners();
260
+ this.setupAriaAttributes();
134
261
  }
135
- (_a = this.cleanup) === null || _a === void 0 ? void 0 : _a.call(this);
136
- (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
262
+ };
263
+ setupAriaAttributes() {
264
+ if (!this.triggerRef)
265
+ return;
266
+ this.triggerRef.setAttribute('aria-describedby', this.componentId);
267
+ this.triggerRef.setAttribute('aria-expanded', String(this.visible));
268
+ this.triggerRef.setAttribute('aria-haspopup', 'true');
137
269
  }
138
- setupEventListeners() {
139
- var _a, _b;
140
- if (!this.targetEl || this.disabled)
270
+ setupTriggerListeners() {
271
+ if (!this.triggerRef || this.disabled)
141
272
  return;
142
273
  switch (this.trigger) {
143
274
  case 'hover':
144
- this.targetEl.addEventListener('mouseenter', this.handleMouseEnter);
145
- this.targetEl.addEventListener('mouseleave', this.handleMouseLeave);
146
- (_a = this.floatingEl) === null || _a === void 0 ? void 0 : _a.addEventListener('mouseenter', this.handleFloatingMouseEnter);
147
- (_b = this.floatingEl) === null || _b === void 0 ? void 0 : _b.addEventListener('mouseleave', this.handleFloatingMouseLeave);
275
+ this.triggerRef.addEventListener('mouseenter', this.handleMouseEnter);
276
+ this.triggerRef.addEventListener('mouseleave', this.handleMouseLeave);
277
+ this.floatingRef?.addEventListener('mouseenter', this.handleFloatingMouseEnter);
278
+ this.floatingRef?.addEventListener('mouseleave', this.handleFloatingMouseLeave);
148
279
  break;
149
280
  case 'click':
150
- this.targetEl.addEventListener('click', this.handleClick);
151
- this.setupClickOutside();
281
+ this.triggerRef.addEventListener('click', this.handleTriggerClick);
152
282
  break;
153
283
  case 'focus':
154
- this.targetEl.addEventListener('focus', this.handleFocus);
155
- this.targetEl.addEventListener('blur', this.handleBlur);
284
+ this.triggerRef.addEventListener('focus', this.handleFocus);
285
+ this.triggerRef.addEventListener('blur', this.handleBlur);
286
+ break;
287
+ case 'manual':
288
+ // No automatic listeners
156
289
  break;
157
290
  }
158
291
  }
159
- removeEventListeners() {
160
- var _a, _b;
161
- if (!this.targetEl)
292
+ removeTriggerListeners() {
293
+ if (!this.triggerRef)
162
294
  return;
163
- this.targetEl.removeEventListener('mouseenter', this.handleMouseEnter);
164
- this.targetEl.removeEventListener('mouseleave', this.handleMouseLeave);
165
- this.targetEl.removeEventListener('click', this.handleClick);
166
- this.targetEl.removeEventListener('focus', this.handleFocus);
167
- this.targetEl.removeEventListener('blur', this.handleBlur);
168
- (_a = this.floatingEl) === null || _a === void 0 ? void 0 : _a.removeEventListener('mouseenter', this.handleFloatingMouseEnter);
169
- (_b = this.floatingEl) === null || _b === void 0 ? void 0 : _b.removeEventListener('mouseleave', this.handleFloatingMouseLeave);
170
- this.removeClickOutside();
295
+ this.triggerRef.removeEventListener('mouseenter', this.handleMouseEnter);
296
+ this.triggerRef.removeEventListener('mouseleave', this.handleMouseLeave);
297
+ this.triggerRef.removeEventListener('click', this.handleTriggerClick);
298
+ this.triggerRef.removeEventListener('focus', this.handleFocus);
299
+ this.triggerRef.removeEventListener('blur', this.handleBlur);
300
+ this.floatingRef?.removeEventListener('mouseenter', this.handleFloatingMouseEnter);
301
+ this.floatingRef?.removeEventListener('mouseleave', this.handleFloatingMouseLeave);
171
302
  }
172
- setupClickOutside() {
173
- this.clickOutsideHandler = (e) => {
174
- var _a, _b;
175
- const target = e.target;
176
- if (!((_a = this.floatingEl) === null || _a === void 0 ? void 0 : _a.contains(target)) && !((_b = this.targetEl) === null || _b === void 0 ? void 0 : _b.contains(target)) && !this.host.contains(target)) {
303
+ handleMouseEnter = () => {
304
+ this.show();
305
+ };
306
+ handleMouseLeave = () => {
307
+ this.hide();
308
+ };
309
+ handleFloatingMouseEnter = () => {
310
+ this.clearTimeouts();
311
+ };
312
+ handleFloatingMouseLeave = () => {
313
+ this.hide();
314
+ };
315
+ handleTriggerClick = (event) => {
316
+ event.stopPropagation();
317
+ this.toggle();
318
+ };
319
+ handleFocus = () => {
320
+ this.show();
321
+ };
322
+ handleBlur = () => {
323
+ this.hide();
324
+ };
325
+ handleKeyDown(event) {
326
+ if (!this.closeOnEscape || !this.visible)
327
+ return;
328
+ if (event.key === 'Escape') {
329
+ const openLinked = Array.from(document.querySelectorAll('bcm-linked[visible]'));
330
+ const topLinked = openLinked[openLinked.length - 1];
331
+ if (topLinked === this.host) {
332
+ event.preventDefault();
177
333
  this.hide();
334
+ this.triggerRef?.focus();
178
335
  }
179
- };
180
- document.addEventListener('click', this.clickOutsideHandler, true);
181
- }
182
- removeClickOutside() {
183
- if (this.clickOutsideHandler) {
184
- document.removeEventListener('click', this.clickOutsideHandler, true);
185
- this.clickOutsideHandler = undefined;
186
336
  }
187
337
  }
188
- clearTimeouts() {
189
- if (this.showTimeout) {
190
- clearTimeout(this.showTimeout);
191
- this.showTimeout = undefined;
192
- }
193
- if (this.hideTimeout) {
194
- clearTimeout(this.hideTimeout);
195
- this.hideTimeout = undefined;
338
+ handleOutsideClick = (event) => {
339
+ if (!this.closeOnOutsideClick || !this.visible)
340
+ return;
341
+ const target = event.target;
342
+ const path = event.composedPath();
343
+ const isInsideHost = this.host.contains(target) || path.includes(this.host);
344
+ const isInsideFloating = this.floatingRef?.contains(target) || (this.floatingRef && path.includes(this.floatingRef));
345
+ if (!isInsideHost && !isInsideFloating) {
346
+ this.hide();
196
347
  }
348
+ };
349
+ addOutsideClickListener() {
350
+ setTimeout(() => {
351
+ document.addEventListener('click', this.handleOutsideClick, true);
352
+ }, 0);
197
353
  }
198
- async updatePosition() {
199
- if (!this.targetEl || !this.floatingEl || !this.isVisible)
354
+ removeOutsideClickListener() {
355
+ document.removeEventListener('click', this.handleOutsideClick, true);
356
+ }
357
+ async calculatePosition() {
358
+ if (!this.triggerRef || !this.floatingRef || !this.isVisible)
200
359
  return;
201
- // Use autoPlacement only for bottom-start (dropdown default)
202
- // For other placements, respect the manual placement with flip fallback
203
- // const useAutoPlacement = this.placement === 'bottom-start';
204
- const middleware = [
205
- offset(this.offset),
206
- // useAutoPlacement
207
- // ? autoPlacement({
208
- // allowedPlacements: ['bottom-start', 'bottom-end', 'bottom', 'top-start', 'top-end', 'top', 'right-start', 'right-end', 'right', 'left-start', 'left-end', 'left'],
209
- // boundary: document.body,
210
- // })
211
- // :
360
+ const virtualElement = {
361
+ getBoundingClientRect: () => this.triggerRef.getBoundingClientRect(),
362
+ };
363
+ const middlewareList = [
364
+ offset(this.offsetDistance),
212
365
  flip({
213
366
  fallbackPlacements: ['top', 'bottom', 'left', 'right', 'top-start', 'top-end', 'bottom-start', 'bottom-end', 'left-start', 'left-end', 'right-start', 'right-end'],
214
367
  }),
@@ -216,109 +369,102 @@ export class BcmLinked {
216
369
  padding: 8,
217
370
  }),
218
371
  ];
219
- const { x, y, placement } = await computePosition(this.targetEl, this.floatingEl, {
372
+ if (this.showArrow && this.arrowRef) {
373
+ middlewareList.push(arrow({ element: this.arrowRef }));
374
+ }
375
+ const { x, y, placement, middlewareData } = await computePosition(virtualElement, this.floatingRef, {
220
376
  placement: this.placement,
221
- middleware,
377
+ middleware: middlewareList,
222
378
  strategy: 'fixed',
223
379
  });
224
- Object.assign(this.floatingEl.style, {
380
+ Object.assign(this.floatingRef.style, {
225
381
  left: `${x}px`,
226
382
  top: `${y}px`,
227
- zIndex: this.zIndex.toString(),
228
383
  });
229
- // Update arrow if enabled
230
- if (this.arrow) {
231
- this.updateArrow(placement);
384
+ // Arrow positioning
385
+ if (this.showArrow && this.arrowRef && middlewareData.arrow) {
386
+ const { x: arrowX, y: arrowY } = middlewareData.arrow;
387
+ const staticSide = {
388
+ top: 'bottom',
389
+ right: 'left',
390
+ bottom: 'top',
391
+ left: 'right',
392
+ }[placement.split('-')[0]];
393
+ Object.assign(this.arrowRef.style, {
394
+ left: arrowX != null ? `${arrowX}px` : '',
395
+ top: arrowY != null ? `${arrowY}px` : '',
396
+ right: '',
397
+ bottom: '',
398
+ [staticSide]: '-4px',
399
+ });
232
400
  }
401
+ this.floatingRef.setAttribute('data-placement', placement);
233
402
  }
234
- updateArrow(placement) {
235
- var _a;
236
- const arrow = (_a = this.floatingEl) === null || _a === void 0 ? void 0 : _a.querySelector('.floating-arrow');
237
- if (!arrow)
403
+ startAutoUpdate() {
404
+ if (!this.triggerRef || !this.floatingRef)
238
405
  return;
239
- // Remove all arrow classes
240
- arrow.className = 'floating-arrow';
241
- // Add placement-specific class
242
- const side = placement.split('-')[0];
243
- arrow.classList.add(`arrow-${side}`);
406
+ this.cleanupAutoUpdate = autoUpdate(this.triggerRef, this.floatingRef, () => this.calculatePosition(), {
407
+ ancestorScroll: true,
408
+ ancestorResize: true,
409
+ elementResize: true,
410
+ layoutShift: true,
411
+ });
244
412
  }
245
- async show() {
246
- if (this.disabled || this.isVisible)
247
- return;
248
- this.bcmShow.emit();
249
- // Portalling: Move the floating element to the body
250
- if (this.appendToBody && this.floatingEl) {
251
- this.originalParent = this.floatingEl.parentNode;
252
- this.originalNextSibling = this.floatingEl.nextSibling;
253
- document.body.appendChild(this.floatingEl);
254
- }
255
- this.isVisible = true;
256
- // Use requestAnimationFrame to ensure the element is visible before positioning
257
- await new Promise(resolve => requestAnimationFrame(resolve));
258
- await this.updatePosition();
413
+ stopAutoUpdate() {
414
+ this.cleanupAutoUpdate?.();
415
+ this.cleanupAutoUpdate = undefined;
259
416
  }
260
- async hide() {
261
- if (!this.isVisible)
262
- return;
263
- this.bcmHide.emit();
264
- this.isVisible = false;
265
- // Portalling: Restore the floating element to its original position
266
- if (this.appendToBody && this.floatingEl && this.originalParent) {
267
- if (this.originalNextSibling) {
268
- this.originalParent.insertBefore(this.floatingEl, this.originalNextSibling);
269
- }
270
- else {
271
- this.originalParent.appendChild(this.floatingEl);
272
- }
273
- this.originalParent = undefined;
274
- this.originalNextSibling = undefined;
417
+ handleToggle = (event) => {
418
+ if (event.newState === 'open' && !this.isVisible) {
419
+ this.isVisible = true;
275
420
  }
276
- if (this.destroyOnHide && this.floatingEl && this.floatingEl.parentNode) {
277
- this.floatingEl.parentNode.removeChild(this.floatingEl);
421
+ else if (event.newState === 'closed' && this.isVisible) {
422
+ this.isVisible = false;
278
423
  }
279
- }
280
- async toggle() {
281
- if (this.isVisible) {
282
- await this.hide();
283
- }
284
- else {
285
- await this.show();
424
+ };
425
+ componentDidLoad() {
426
+ // Toggle event listener (Popover API)
427
+ this.floatingRef?.addEventListener('toggle', this.handleToggle);
428
+ // Initial trigger setup - manually trigger slot change handler
429
+ this.handleTriggerSlotChange();
430
+ // Initial state sync
431
+ if (this.visible) {
432
+ this.showInternal();
286
433
  }
287
434
  }
288
- async updatePositioning() {
289
- await this.updatePosition();
290
- }
291
- setupFloatingObserver() {
292
- if (!this.floatingEl)
293
- return;
294
- // Observe floating element size changes for position updates
295
- this.resizeObserver = new ResizeObserver(() => {
435
+ disconnectedCallback() {
436
+ this.clearTimeouts();
437
+ this.stopAutoUpdate();
438
+ this.removeTriggerListeners();
439
+ this.removeOutsideClickListener();
440
+ if (this.floatingRef) {
441
+ this.floatingRef.removeEventListener('toggle', this.handleToggle);
296
442
  if (this.isVisible) {
297
- this.updatePosition();
443
+ try {
444
+ this.floatingRef.hidePopover();
445
+ }
446
+ catch (e) {
447
+ // Element might already be removed
448
+ }
298
449
  }
299
- });
300
- this.resizeObserver.observe(this.floatingEl);
450
+ }
301
451
  }
452
+ linkedClass = tv({
453
+ slots: {
454
+ wrapper: 'inline-block',
455
+ floating: ['bcm-ui-element', 'fixed', 'bg-color-basic-base', 'rounded-md', 'shadow-lg', 'border', 'border-color-basic-subtle'],
456
+ arrow: ['absolute', 'w-2', 'h-2', 'bg-color-basic-base', 'border', 'border-color-basic-subtle', 'rotate-45'],
457
+ content: 'bg-color-basic-base',
458
+ },
459
+ });
302
460
  render() {
303
- const floatingClasses = {
304
- 'floating-content': true,
305
- 'floating-visible': this.isVisible,
306
- 'floating-hidden': !this.isVisible,
307
- 'floating-with-arrow': this.arrow,
308
- 'floating-destroy-on-hide': this.destroyOnHide,
309
- };
310
- return (h(Host, { key: 'f5835cc1b6044476e66402d23a3becf18d3f2049' }, h("div", { key: '2c7f92bbe85bc938a767734ef4b27702247fb390', class: floatingClasses, style: {
311
- position: 'fixed',
312
- top: '0px',
313
- left: '0px',
314
- zIndex: this.zIndex.toString(),
315
- display: this.isVisible ? 'block' : 'none',
316
- visibility: this.isVisible ? 'visible' : 'hidden',
317
- opacity: this.isVisible ? '1' : '0',
318
- pointerEvents: this.isVisible ? 'auto' : 'none',
319
- } }, this.arrow && h("div", { key: 'f6eedac02b29b3ca00a9a84eea940ac89089f30c', class: "floating-arrow" }), h("div", { key: '7cb19f085de1d77a41fd9897be90999e78a0a54d', class: "floating-wrapper" }, h("slot", { key: 'a4b4289642850e3c2f7f27771b3d28bc41c8248a' }))), h("div", { key: '61cd7af9a4a47c87c308e1e67f96efb987c97312', style: { display: 'none' } }, h("slot", { key: '7160df275f5c7c66733158f95266598d0d207a17', name: "fallback" }))));
461
+ const { wrapper, floating, arrow, content } = this.linkedClass();
462
+ return (h(Host, { key: 'f58760b6589329f9eabc42f39b6503fad10cf330' }, h("div", { key: 'adb9003eec4ca786bdddc657ba28cbc0a80baf57', class: wrapper() }, h("slot", { key: '61323463e76c395668d02288e5bdcb44826a31ea', name: "trigger", onSlotchange: this.handleTriggerSlotChange }), h("div", { key: '3b395b18152cd302b4511ef89928374f33012594', ref: el => (this.floatingRef = el), id: this.componentId, part: "floating", class: floating(),
463
+ // @ts-ignore - popover is a valid HTML attribute
464
+ popover: "manual", role: "dialog" }, this.showArrow && h("div", { key: '3f5311d21f7fce74c94ac0435a8d2fc076036b10', ref: el => (this.arrowRef = el), part: "arrow", class: arrow() }), h("div", { key: 'ee41f30c7f73c113f129f938fd721476658b5744', part: "content", class: content() }, h("slot", { key: '106502e2f8db8fdc90412fcf59da40d2de377988' }))))));
320
465
  }
321
466
  static get is() { return "bcm-linked"; }
467
+ static get encapsulation() { return "shadow"; }
322
468
  static get originalStyleUrls() {
323
469
  return {
324
470
  "$": ["linked.css"]
@@ -331,51 +477,31 @@ export class BcmLinked {
331
477
  }
332
478
  static get properties() {
333
479
  return {
334
- "targetId": {
335
- "type": "string",
336
- "attribute": "target-id",
337
- "mutable": false,
480
+ "visible": {
481
+ "type": "boolean",
482
+ "mutable": true,
338
483
  "complexType": {
339
- "original": "string",
340
- "resolved": "string",
484
+ "original": "boolean",
485
+ "resolved": "boolean",
341
486
  "references": {}
342
487
  },
343
488
  "required": false,
344
- "optional": true,
489
+ "optional": false,
345
490
  "docs": {
346
- "tags": [],
491
+ "tags": [{
492
+ "name": "prop",
493
+ "text": "{boolean} visible - Controls the visibility state of the floating element.\nCan be set programmatically or toggled by user interaction.\nDefault: false"
494
+ }],
347
495
  "text": ""
348
496
  },
349
497
  "getter": false,
350
498
  "setter": false,
351
- "reflect": true
352
- },
353
- "targetElement": {
354
- "type": "unknown",
355
- "attribute": "target-element",
356
- "mutable": false,
357
- "complexType": {
358
- "original": "HTMLElement",
359
- "resolved": "HTMLElement",
360
- "references": {
361
- "HTMLElement": {
362
- "location": "global",
363
- "id": "global::HTMLElement"
364
- }
365
- }
366
- },
367
- "required": false,
368
- "optional": true,
369
- "docs": {
370
- "tags": [],
371
- "text": ""
372
- },
373
- "getter": false,
374
- "setter": false
499
+ "reflect": true,
500
+ "attribute": "visible",
501
+ "defaultValue": "false"
375
502
  },
376
503
  "trigger": {
377
504
  "type": "string",
378
- "attribute": "trigger",
379
505
  "mutable": false,
380
506
  "complexType": {
381
507
  "original": "TriggerType",
@@ -391,17 +517,20 @@ export class BcmLinked {
391
517
  "required": false,
392
518
  "optional": false,
393
519
  "docs": {
394
- "tags": [],
520
+ "tags": [{
521
+ "name": "prop",
522
+ "text": "{TriggerType} trigger - Defines the interaction type to show/hide the floating element.\n'click' toggles on click, 'hover' shows on mouse enter and hides on mouse leave,\n'focus' shows on focus and hides on blur, 'manual' requires programmatic control.\nDefault: 'click'"
523
+ }],
395
524
  "text": ""
396
525
  },
397
526
  "getter": false,
398
527
  "setter": false,
399
528
  "reflect": false,
529
+ "attribute": "trigger",
400
530
  "defaultValue": "'click'"
401
531
  },
402
532
  "placement": {
403
533
  "type": "string",
404
- "attribute": "placement",
405
534
  "mutable": false,
406
535
  "complexType": {
407
536
  "original": "Placement",
@@ -417,17 +546,20 @@ export class BcmLinked {
417
546
  "required": false,
418
547
  "optional": false,
419
548
  "docs": {
420
- "tags": [],
549
+ "tags": [{
550
+ "name": "prop",
551
+ "text": "{Placement} placement - Defines the position of the floating element relative to the trigger.\nDefault: 'bottom-start'"
552
+ }],
421
553
  "text": ""
422
554
  },
423
555
  "getter": false,
424
556
  "setter": false,
425
557
  "reflect": false,
558
+ "attribute": "placement",
426
559
  "defaultValue": "'bottom-start'"
427
560
  },
428
561
  "showDelay": {
429
562
  "type": "number",
430
- "attribute": "show-delay",
431
563
  "mutable": false,
432
564
  "complexType": {
433
565
  "original": "number",
@@ -437,17 +569,20 @@ export class BcmLinked {
437
569
  "required": false,
438
570
  "optional": false,
439
571
  "docs": {
440
- "tags": [],
572
+ "tags": [{
573
+ "name": "prop",
574
+ "text": "{number} showDelay - Delay in milliseconds before showing the floating element.\nDefault: 0"
575
+ }],
441
576
  "text": ""
442
577
  },
443
578
  "getter": false,
444
579
  "setter": false,
445
580
  "reflect": false,
581
+ "attribute": "show-delay",
446
582
  "defaultValue": "0"
447
583
  },
448
584
  "hideDelay": {
449
585
  "type": "number",
450
- "attribute": "hide-delay",
451
586
  "mutable": false,
452
587
  "complexType": {
453
588
  "original": "number",
@@ -457,17 +592,20 @@ export class BcmLinked {
457
592
  "required": false,
458
593
  "optional": false,
459
594
  "docs": {
460
- "tags": [],
595
+ "tags": [{
596
+ "name": "prop",
597
+ "text": "{number} hideDelay - Delay in milliseconds before hiding the floating element.\nDefault: 0"
598
+ }],
461
599
  "text": ""
462
600
  },
463
601
  "getter": false,
464
602
  "setter": false,
465
603
  "reflect": false,
604
+ "attribute": "hide-delay",
466
605
  "defaultValue": "0"
467
606
  },
468
- "offset": {
607
+ "offsetDistance": {
469
608
  "type": "number",
470
- "attribute": "offset",
471
609
  "mutable": false,
472
610
  "complexType": {
473
611
  "original": "number",
@@ -477,17 +615,20 @@ export class BcmLinked {
477
615
  "required": false,
478
616
  "optional": false,
479
617
  "docs": {
480
- "tags": [],
618
+ "tags": [{
619
+ "name": "prop",
620
+ "text": "{number} offsetDistance - Distance in pixels between the floating element and the trigger.\nDefault: 8"
621
+ }],
481
622
  "text": ""
482
623
  },
483
624
  "getter": false,
484
625
  "setter": false,
485
626
  "reflect": false,
627
+ "attribute": "offset-distance",
486
628
  "defaultValue": "8"
487
629
  },
488
- "arrow": {
630
+ "showArrow": {
489
631
  "type": "boolean",
490
- "attribute": "arrow",
491
632
  "mutable": false,
492
633
  "complexType": {
493
634
  "original": "boolean",
@@ -497,17 +638,20 @@ export class BcmLinked {
497
638
  "required": false,
498
639
  "optional": false,
499
640
  "docs": {
500
- "tags": [],
641
+ "tags": [{
642
+ "name": "prop",
643
+ "text": "{boolean} showArrow - Whether to show an arrow pointing to the trigger element.\nDefault: true"
644
+ }],
501
645
  "text": ""
502
646
  },
503
647
  "getter": false,
504
648
  "setter": false,
505
649
  "reflect": false,
506
- "defaultValue": "false"
650
+ "attribute": "show-arrow",
651
+ "defaultValue": "true"
507
652
  },
508
653
  "disabled": {
509
654
  "type": "boolean",
510
- "attribute": "disabled",
511
655
  "mutable": false,
512
656
  "complexType": {
513
657
  "original": "boolean",
@@ -517,37 +661,20 @@ export class BcmLinked {
517
661
  "required": false,
518
662
  "optional": false,
519
663
  "docs": {
520
- "tags": [],
664
+ "tags": [{
665
+ "name": "prop",
666
+ "text": "{boolean} disabled - Disables the floating element, preventing it from showing.\nDefault: false"
667
+ }],
521
668
  "text": ""
522
669
  },
523
670
  "getter": false,
524
671
  "setter": false,
525
672
  "reflect": false,
673
+ "attribute": "disabled",
526
674
  "defaultValue": "false"
527
675
  },
528
- "zIndex": {
529
- "type": "number",
530
- "attribute": "z-index",
531
- "mutable": false,
532
- "complexType": {
533
- "original": "number",
534
- "resolved": "number",
535
- "references": {}
536
- },
537
- "required": false,
538
- "optional": false,
539
- "docs": {
540
- "tags": [],
541
- "text": ""
542
- },
543
- "getter": false,
544
- "setter": false,
545
- "reflect": false,
546
- "defaultValue": "1000"
547
- },
548
- "appendToBody": {
676
+ "closeOnOutsideClick": {
549
677
  "type": "boolean",
550
- "attribute": "append-to-body",
551
678
  "mutable": false,
552
679
  "complexType": {
553
680
  "original": "boolean",
@@ -557,17 +684,20 @@ export class BcmLinked {
557
684
  "required": false,
558
685
  "optional": false,
559
686
  "docs": {
560
- "tags": [],
687
+ "tags": [{
688
+ "name": "prop",
689
+ "text": "{boolean} closeOnOutsideClick - Whether to close when clicking outside.\nDefault: true"
690
+ }],
561
691
  "text": ""
562
692
  },
563
693
  "getter": false,
564
694
  "setter": false,
565
695
  "reflect": false,
566
- "defaultValue": "false"
696
+ "attribute": "close-on-outside-click",
697
+ "defaultValue": "true"
567
698
  },
568
- "destroyOnHide": {
699
+ "closeOnEscape": {
569
700
  "type": "boolean",
570
- "attribute": "destroy-on-hide",
571
701
  "mutable": false,
572
702
  "complexType": {
573
703
  "original": "boolean",
@@ -577,31 +707,73 @@ export class BcmLinked {
577
707
  "required": false,
578
708
  "optional": false,
579
709
  "docs": {
580
- "tags": [],
710
+ "tags": [{
711
+ "name": "prop",
712
+ "text": "{boolean} closeOnEscape - Whether to close when pressing Escape key.\nDefault: true"
713
+ }],
581
714
  "text": ""
582
715
  },
583
716
  "getter": false,
584
717
  "setter": false,
585
718
  "reflect": false,
586
- "defaultValue": "false"
719
+ "attribute": "close-on-escape",
720
+ "defaultValue": "true"
587
721
  }
588
722
  };
589
723
  }
590
724
  static get states() {
591
725
  return {
592
- "isVisible": {},
593
- "isReady": {}
726
+ "isVisible": {}
594
727
  };
595
728
  }
596
729
  static get events() {
597
730
  return [{
731
+ "method": "bcmBeforeShow",
732
+ "name": "bcmBeforeShow",
733
+ "bubbles": false,
734
+ "cancelable": true,
735
+ "composed": false,
736
+ "docs": {
737
+ "tags": [{
738
+ "name": "event",
739
+ "text": "bcmBeforeShow - Emitted before the floating element shows."
740
+ }],
741
+ "text": ""
742
+ },
743
+ "complexType": {
744
+ "original": "void",
745
+ "resolved": "void",
746
+ "references": {}
747
+ }
748
+ }, {
598
749
  "method": "bcmShow",
599
750
  "name": "bcmShow",
600
- "bubbles": true,
751
+ "bubbles": false,
601
752
  "cancelable": true,
602
- "composed": true,
753
+ "composed": false,
603
754
  "docs": {
604
- "tags": [],
755
+ "tags": [{
756
+ "name": "event",
757
+ "text": "bcmShow - Emitted when the floating element is shown."
758
+ }],
759
+ "text": ""
760
+ },
761
+ "complexType": {
762
+ "original": "void",
763
+ "resolved": "void",
764
+ "references": {}
765
+ }
766
+ }, {
767
+ "method": "bcmBeforeHide",
768
+ "name": "bcmBeforeHide",
769
+ "bubbles": false,
770
+ "cancelable": true,
771
+ "composed": false,
772
+ "docs": {
773
+ "tags": [{
774
+ "name": "event",
775
+ "text": "bcmBeforeHide - Emitted before the floating element hides."
776
+ }],
605
777
  "text": ""
606
778
  },
607
779
  "complexType": {
@@ -612,11 +784,14 @@ export class BcmLinked {
612
784
  }, {
613
785
  "method": "bcmHide",
614
786
  "name": "bcmHide",
615
- "bubbles": true,
787
+ "bubbles": false,
616
788
  "cancelable": true,
617
- "composed": true,
789
+ "composed": false,
618
790
  "docs": {
619
- "tags": [],
791
+ "tags": [{
792
+ "name": "event",
793
+ "text": "bcmHide - Emitted when the floating element is hidden."
794
+ }],
620
795
  "text": ""
621
796
  },
622
797
  "complexType": {
@@ -627,11 +802,14 @@ export class BcmLinked {
627
802
  }, {
628
803
  "method": "bcmShown",
629
804
  "name": "bcmShown",
630
- "bubbles": true,
805
+ "bubbles": false,
631
806
  "cancelable": true,
632
- "composed": true,
807
+ "composed": false,
633
808
  "docs": {
634
- "tags": [],
809
+ "tags": [{
810
+ "name": "event",
811
+ "text": "bcmShown - Emitted after the floating element is fully shown (after animation)."
812
+ }],
635
813
  "text": ""
636
814
  },
637
815
  "complexType": {
@@ -642,11 +820,14 @@ export class BcmLinked {
642
820
  }, {
643
821
  "method": "bcmHidden",
644
822
  "name": "bcmHidden",
645
- "bubbles": true,
823
+ "bubbles": false,
646
824
  "cancelable": true,
647
- "composed": true,
825
+ "composed": false,
648
826
  "docs": {
649
- "tags": [],
827
+ "tags": [{
828
+ "name": "event",
829
+ "text": "bcmHidden - Emitted after the floating element is fully hidden (after animation)."
830
+ }],
650
831
  "text": ""
651
832
  },
652
833
  "complexType": {
@@ -671,7 +852,7 @@ export class BcmLinked {
671
852
  "return": "Promise<void>"
672
853
  },
673
854
  "docs": {
674
- "text": "",
855
+ "text": "Programmatically shows the floating element.\nRespects the showDelay prop.",
675
856
  "tags": []
676
857
  }
677
858
  },
@@ -688,7 +869,7 @@ export class BcmLinked {
688
869
  "return": "Promise<void>"
689
870
  },
690
871
  "docs": {
691
- "text": "",
872
+ "text": "Programmatically hides the floating element.\nRespects the hideDelay prop.",
692
873
  "tags": []
693
874
  }
694
875
  },
@@ -705,11 +886,11 @@ export class BcmLinked {
705
886
  "return": "Promise<void>"
706
887
  },
707
888
  "docs": {
708
- "text": "",
889
+ "text": "Toggles the floating element visibility.",
709
890
  "tags": []
710
891
  }
711
892
  },
712
- "updatePositioning": {
893
+ "updatePosition": {
713
894
  "complexType": {
714
895
  "signature": "() => Promise<void>",
715
896
  "parameters": [],
@@ -722,7 +903,7 @@ export class BcmLinked {
722
903
  "return": "Promise<void>"
723
904
  },
724
905
  "docs": {
725
- "text": "",
906
+ "text": "Updates the position of the floating element.\nUseful when the trigger element moves or resizes.",
726
907
  "tags": []
727
908
  }
728
909
  }
@@ -731,14 +912,29 @@ export class BcmLinked {
731
912
  static get elementRef() { return "host"; }
732
913
  static get watchers() {
733
914
  return [{
734
- "propName": "targetId",
735
- "methodName": "setupTarget"
915
+ "propName": "visible",
916
+ "methodName": "handleVisibleChange"
736
917
  }, {
737
- "propName": "targetElement",
738
- "methodName": "setupTarget"
918
+ "propName": "disabled",
919
+ "methodName": "handleDisabledChange"
739
920
  }, {
740
- "propName": "isVisible",
741
- "methodName": "onVisibilityChange"
921
+ "propName": "placement",
922
+ "methodName": "handlePositionPropsChange"
923
+ }, {
924
+ "propName": "offsetDistance",
925
+ "methodName": "handlePositionPropsChange"
926
+ }, {
927
+ "propName": "showArrow",
928
+ "methodName": "handlePositionPropsChange"
929
+ }];
930
+ }
931
+ static get listeners() {
932
+ return [{
933
+ "name": "keydown",
934
+ "method": "handleKeyDown",
935
+ "target": "document",
936
+ "capture": false,
937
+ "passive": false
742
938
  }];
743
939
  }
744
940
  }