bromcom-ui-next 0.1.9 → 0.1.10

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 (247) hide show
  1. package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
  2. package/dist/bromcom-ui/bromcom-ui.esm.js.map +1 -1
  3. package/dist/bromcom-ui/{p-a1aae3ef.entry.js → p-09b53a8f.entry.js} +2 -2
  4. package/dist/bromcom-ui/{p-49b0e982.entry.js → p-1392a235.entry.js} +2 -2
  5. package/dist/bromcom-ui/{p-389f1976.entry.js → p-1867c3e6.entry.js} +2 -2
  6. package/dist/bromcom-ui/p-1d44a091.entry.js +2 -0
  7. package/dist/bromcom-ui/{p-cee68279.entry.js.map → p-1d44a091.entry.js.map} +1 -1
  8. package/dist/bromcom-ui/p-2820ad28.entry.js +2 -0
  9. package/dist/bromcom-ui/p-2820ad28.entry.js.map +1 -0
  10. package/dist/bromcom-ui/{p-58ee24a8.entry.js → p-2cb15e60.entry.js} +2 -2
  11. package/dist/bromcom-ui/p-3583888a.entry.js +2 -0
  12. package/dist/bromcom-ui/{p-9ab4d2be.entry.js.map → p-3583888a.entry.js.map} +1 -1
  13. package/dist/bromcom-ui/{p-cd271b49.entry.js → p-3d424afc.entry.js} +2 -2
  14. package/dist/bromcom-ui/p-3ed3885e.entry.js +2 -0
  15. package/dist/bromcom-ui/{p-c2b3945e.entry.js.map → p-3ed3885e.entry.js.map} +1 -1
  16. package/dist/bromcom-ui/{p-e89ab4a7.entry.js → p-3f153277.entry.js} +2 -2
  17. package/dist/bromcom-ui/{p-13784cd7.entry.js → p-4762d66b.entry.js} +2 -2
  18. package/dist/bromcom-ui/{p-bf69fc8a.entry.js → p-4bba4ab4.entry.js} +2 -2
  19. package/dist/bromcom-ui/{p-9594cebb.js → p-50133556.js} +2 -2
  20. package/dist/bromcom-ui/p-50713153.entry.js +2 -0
  21. package/dist/bromcom-ui/{p-48f18671.entry.js.map → p-50713153.entry.js.map} +1 -1
  22. package/dist/bromcom-ui/{p-056c9348.entry.js → p-5541403c.entry.js} +2 -2
  23. package/dist/bromcom-ui/p-651a6761.entry.js +2 -0
  24. package/dist/bromcom-ui/p-651a6761.entry.js.map +1 -0
  25. package/dist/bromcom-ui/p-79082ca0.entry.js +2 -0
  26. package/dist/bromcom-ui/p-79082ca0.entry.js.map +1 -0
  27. package/dist/bromcom-ui/{p-bd0f7e78.entry.js → p-86704b91.entry.js} +2 -2
  28. package/dist/bromcom-ui/{p-55c4263c.entry.js → p-898d5cf6.entry.js} +2 -2
  29. package/dist/bromcom-ui/p-9bd6c84d.entry.js +2 -0
  30. package/dist/bromcom-ui/p-9bd6c84d.entry.js.map +1 -0
  31. package/dist/bromcom-ui/{p-0d0d6483.entry.js → p-c45d9e50.entry.js} +2 -2
  32. package/dist/bromcom-ui/{p-625bbd86.entry.js → p-c78b12c3.entry.js} +2 -2
  33. package/dist/bromcom-ui/{p-1bf71c9b.entry.js → p-d7b636bf.entry.js} +2 -2
  34. package/dist/bromcom-ui/p-ddf64315.js.map +1 -1
  35. package/dist/bromcom-ui/{p-c995a48c.entry.js → p-ea274e8b.entry.js} +2 -2
  36. package/dist/bromcom-ui/{p-f2d8aa70.entry.js → p-ea6cdc17.entry.js} +2 -2
  37. package/dist/bromcom-ui/{p-ab9a95f9.entry.js → p-edfa3b52.entry.js} +2 -2
  38. package/dist/cjs/app-globals-e0eef2e9.js.map +1 -1
  39. package/dist/cjs/bcm-accordion-group.cjs.entry.js +1 -1
  40. package/dist/cjs/bcm-accordion.cjs.entry.js +2 -2
  41. package/dist/cjs/bcm-alert.cjs.entry.js +1 -1
  42. package/dist/cjs/bcm-avatar.cjs.entry.js +89 -0
  43. package/dist/cjs/bcm-avatar.cjs.entry.js.map +1 -0
  44. package/dist/cjs/bcm-badge.cjs.entry.js +123 -0
  45. package/dist/cjs/bcm-badge.cjs.entry.js.map +1 -0
  46. package/dist/cjs/bcm-basic-badge.cjs.entry.js +92 -0
  47. package/dist/cjs/bcm-basic-badge.cjs.entry.js.map +1 -0
  48. package/dist/cjs/bcm-button-group.cjs.entry.js +2 -2
  49. package/dist/cjs/bcm-button_5.cjs.entry.js +830 -0
  50. package/dist/cjs/bcm-button_5.cjs.entry.js.map +1 -0
  51. package/dist/cjs/bcm-checkbox.cjs.entry.js +1 -1
  52. package/dist/cjs/bcm-chip.cjs.entry.js +2 -2
  53. package/dist/cjs/bcm-chip.cjs.entry.js.map +1 -1
  54. package/dist/cjs/bcm-divider.cjs.entry.js +2 -2
  55. package/dist/cjs/bcm-divider.cjs.entry.js.map +1 -1
  56. package/dist/cjs/bcm-input.cjs.entry.js +2 -2
  57. package/dist/cjs/bcm-pop-confirm.cjs.entry.js +1 -1
  58. package/dist/cjs/bcm-popover.cjs.entry.js +1 -1
  59. package/dist/cjs/bcm-radio-group.cjs.entry.js +2 -2
  60. package/dist/cjs/bcm-radio.cjs.entry.js +1 -1
  61. package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js +2 -2
  62. package/dist/cjs/bcm-segmented-picker.cjs.entry.js +2 -2
  63. package/dist/cjs/bcm-switch.cjs.entry.js +2 -2
  64. package/dist/cjs/bcm-tabs-content.cjs.entry.js +1 -1
  65. package/dist/cjs/bcm-tabs-list.cjs.entry.js +1 -1
  66. package/dist/cjs/bcm-tabs-trigger.cjs.entry.js +1 -1
  67. package/dist/cjs/bcm-tabs.cjs.entry.js +1 -1
  68. package/dist/cjs/bcm-textarea.cjs.entry.js +3 -3
  69. package/dist/cjs/bcm-tooltip.cjs.entry.js +1 -1
  70. package/dist/cjs/bromcom-ui.cjs.js +1 -1
  71. package/dist/cjs/loader.cjs.js +1 -1
  72. package/dist/collection/collection-manifest.json +1 -1
  73. package/dist/collection/components/accordion/accordion.component.js +2 -2
  74. package/dist/collection/components/accordion-group/accordion-group.component.js +1 -1
  75. package/dist/collection/components/alert/alert.component.js +1 -1
  76. package/dist/collection/components/badge/badge.component.js +2 -2
  77. package/dist/collection/components/badge/badge.css +1 -1
  78. package/dist/collection/components/basic-badge/basic-badge.component.js +2 -2
  79. package/dist/collection/components/basic-badge/basic-badge.css +1 -1
  80. package/dist/collection/components/button/button.component.js +2 -2
  81. package/dist/collection/components/button/button.css +1 -1
  82. package/dist/collection/components/button-group/button-group.component.js +2 -2
  83. package/dist/collection/components/checkbox/checkbox.component.js +1 -1
  84. package/dist/collection/components/chip/chip.component.js +1 -1
  85. package/dist/collection/components/chip/chip.css +1 -1
  86. package/dist/collection/components/divider/divider.component.js +1 -1
  87. package/dist/collection/components/divider/divider.css +1 -1
  88. package/dist/collection/components/dropdown/dropdown.component.js +2 -2
  89. package/dist/collection/components/dropdown/dropdown.component.js.map +1 -1
  90. package/dist/collection/components/dropdown/dropdown.css +1 -1
  91. package/dist/collection/components/dropdown-item/dropdown-item.component.js +2 -2
  92. package/dist/collection/components/input/input.component.js +2 -2
  93. package/dist/collection/components/linked/linked.component.js +610 -49
  94. package/dist/collection/components/linked/linked.component.js.map +1 -1
  95. package/dist/collection/components/linked/linked.css +1 -1
  96. package/dist/collection/components/pop-confirm/pop-confirm.component.js +1 -1
  97. package/dist/collection/components/popover/popover.component.js +1 -1
  98. package/dist/collection/components/radio/radio.component.js +1 -1
  99. package/dist/collection/components/radio-group/radio-group.component.js +2 -2
  100. package/dist/collection/components/segmented-picker/segmented-picker-option.component.js +2 -2
  101. package/dist/collection/components/segmented-picker/segmented-picker.component.js +2 -2
  102. package/dist/collection/components/switch/switch.component.js +2 -2
  103. package/dist/collection/components/tabs/tabs-content.component.js +1 -1
  104. package/dist/collection/components/tabs/tabs-list.component.js +1 -1
  105. package/dist/collection/components/tabs/tabs-trigger.component.js +1 -1
  106. package/dist/collection/components/tabs/tabs.component.js +1 -1
  107. package/dist/collection/components/text/text.component.js +28 -1
  108. package/dist/collection/components/text/text.component.js.map +1 -1
  109. package/dist/collection/components/text/text.css +1 -1
  110. package/dist/collection/components/textarea/textarea.component.js +3 -3
  111. package/dist/collection/components/tooltip/tooltip.component.js +1 -1
  112. package/dist/components/bcm-accordion-group.js +1 -1
  113. package/dist/components/bcm-accordion.js +2 -2
  114. package/dist/components/bcm-alert.js +1 -1
  115. package/dist/components/bcm-avatar.js +1 -1
  116. package/dist/components/bcm-badge.js +1 -1
  117. package/dist/components/bcm-basic-badge.js +3 -3
  118. package/dist/components/bcm-basic-badge.js.map +1 -1
  119. package/dist/components/bcm-button-group.js +2 -2
  120. package/dist/components/bcm-button.js +1 -1
  121. package/dist/components/bcm-checkbox.js +1 -1
  122. package/dist/components/bcm-chip.js +2 -2
  123. package/dist/components/bcm-chip.js.map +1 -1
  124. package/dist/components/bcm-divider.js +2 -2
  125. package/dist/components/bcm-divider.js.map +1 -1
  126. package/dist/components/bcm-dropdown-item.js +2 -2
  127. package/dist/components/bcm-dropdown.js +5 -5
  128. package/dist/components/bcm-dropdown.js.map +1 -1
  129. package/dist/components/bcm-input.js +2 -2
  130. package/dist/components/bcm-linked.js +1 -1
  131. package/dist/components/bcm-pop-confirm.js +3 -3
  132. package/dist/components/bcm-popover.js +2 -2
  133. package/dist/components/bcm-radio-group.js +2 -2
  134. package/dist/components/bcm-radio.js +1 -1
  135. package/dist/components/bcm-segmented-picker-option.js +2 -2
  136. package/dist/components/bcm-segmented-picker.js +2 -2
  137. package/dist/components/bcm-switch.js +2 -2
  138. package/dist/components/bcm-tabs-content.js +1 -1
  139. package/dist/components/bcm-tabs-list.js +1 -1
  140. package/dist/components/bcm-tabs-trigger.js +1 -1
  141. package/dist/components/bcm-tabs.js +1 -1
  142. package/dist/components/bcm-text.js +11 -3
  143. package/dist/components/bcm-text.js.map +1 -1
  144. package/dist/components/bcm-textarea.js +3 -3
  145. package/dist/components/bcm-tooltip.js +2 -2
  146. package/dist/components/{p-49f20ff7.js → p-2fe931c0.js} +4 -4
  147. package/dist/components/{p-49f20ff7.js.map → p-2fe931c0.js.map} +1 -1
  148. package/dist/components/{p-9594cebb.js → p-50133556.js} +2 -2
  149. package/dist/components/{p-9594cebb.js.map → p-50133556.js.map} +1 -1
  150. package/dist/components/p-9bf969b2.js +336 -0
  151. package/dist/components/p-9bf969b2.js.map +1 -0
  152. package/dist/components/{p-434bf03a.js → p-c978f1a7.js} +4 -4
  153. package/dist/components/{p-434bf03a.js.map → p-c978f1a7.js.map} +1 -1
  154. package/dist/esm/app-globals-f7994f55.js.map +1 -1
  155. package/dist/esm/bcm-accordion-group.entry.js +1 -1
  156. package/dist/esm/bcm-accordion.entry.js +2 -2
  157. package/dist/esm/bcm-alert.entry.js +1 -1
  158. package/dist/esm/bcm-avatar.entry.js +85 -0
  159. package/dist/esm/bcm-avatar.entry.js.map +1 -0
  160. package/dist/esm/bcm-badge.entry.js +119 -0
  161. package/dist/esm/bcm-badge.entry.js.map +1 -0
  162. package/dist/esm/bcm-basic-badge.entry.js +88 -0
  163. package/dist/esm/bcm-basic-badge.entry.js.map +1 -0
  164. package/dist/esm/bcm-button-group.entry.js +2 -2
  165. package/dist/esm/bcm-button_5.entry.js +822 -0
  166. package/dist/esm/bcm-button_5.entry.js.map +1 -0
  167. package/dist/esm/bcm-checkbox.entry.js +1 -1
  168. package/dist/esm/bcm-chip.entry.js +2 -2
  169. package/dist/esm/bcm-chip.entry.js.map +1 -1
  170. package/dist/esm/bcm-divider.entry.js +2 -2
  171. package/dist/esm/bcm-divider.entry.js.map +1 -1
  172. package/dist/esm/bcm-input.entry.js +2 -2
  173. package/dist/esm/bcm-pop-confirm.entry.js +2 -2
  174. package/dist/esm/bcm-popover.entry.js +2 -2
  175. package/dist/esm/bcm-radio-group.entry.js +2 -2
  176. package/dist/esm/bcm-radio.entry.js +1 -1
  177. package/dist/esm/bcm-segmented-picker-option.entry.js +2 -2
  178. package/dist/esm/bcm-segmented-picker.entry.js +2 -2
  179. package/dist/esm/bcm-switch.entry.js +2 -2
  180. package/dist/esm/bcm-tabs-content.entry.js +1 -1
  181. package/dist/esm/bcm-tabs-list.entry.js +1 -1
  182. package/dist/esm/bcm-tabs-trigger.entry.js +1 -1
  183. package/dist/esm/bcm-tabs.entry.js +1 -1
  184. package/dist/esm/bcm-textarea.entry.js +3 -3
  185. package/dist/esm/bcm-tooltip.entry.js +2 -2
  186. package/dist/esm/bromcom-ui.js +1 -1
  187. package/dist/esm/{floating-ui.dom.esm-480e0f15.js → floating-ui.dom.esm-b7749b71.js} +2 -2
  188. package/dist/esm/{floating-ui.dom.esm-480e0f15.js.map → floating-ui.dom.esm-b7749b71.js.map} +1 -1
  189. package/dist/esm/loader.js +1 -1
  190. package/dist/types/components/linked/linked.component.d.ts +47 -7
  191. package/dist/types/components/text/text.component.d.ts +3 -0
  192. package/dist/types/components.d.ts +57 -1
  193. package/package.json +2 -1
  194. package/dist/bromcom-ui/p-48f18671.entry.js +0 -2
  195. package/dist/bromcom-ui/p-9ab4d2be.entry.js +0 -2
  196. package/dist/bromcom-ui/p-b1b493ab.entry.js +0 -2
  197. package/dist/bromcom-ui/p-b1b493ab.entry.js.map +0 -1
  198. package/dist/bromcom-ui/p-c2b3945e.entry.js +0 -2
  199. package/dist/bromcom-ui/p-c427ffee.entry.js +0 -2
  200. package/dist/bromcom-ui/p-c427ffee.entry.js.map +0 -1
  201. package/dist/bromcom-ui/p-c444235a.entry.js +0 -2
  202. package/dist/bromcom-ui/p-c444235a.entry.js.map +0 -1
  203. package/dist/bromcom-ui/p-cee68279.entry.js +0 -2
  204. package/dist/bromcom-ui/p-f4e8a47d.entry.js +0 -2
  205. package/dist/bromcom-ui/p-f4e8a47d.entry.js.map +0 -1
  206. package/dist/bromcom-ui/p-f7890098.entry.js +0 -2
  207. package/dist/bromcom-ui/p-f7890098.entry.js.map +0 -1
  208. package/dist/cjs/bcm-avatar_4.cjs.entry.js +0 -596
  209. package/dist/cjs/bcm-avatar_4.cjs.entry.js.map +0 -1
  210. package/dist/cjs/bcm-dropdown-item.cjs.entry.js +0 -63
  211. package/dist/cjs/bcm-dropdown-item.cjs.entry.js.map +0 -1
  212. package/dist/cjs/bcm-dropdown.cjs.entry.js +0 -56
  213. package/dist/cjs/bcm-dropdown.cjs.entry.js.map +0 -1
  214. package/dist/cjs/bcm-linked.cjs.entry.js +0 -91
  215. package/dist/cjs/bcm-linked.cjs.entry.js.map +0 -1
  216. package/dist/cjs/bcm-text.cjs.entry.js +0 -119
  217. package/dist/cjs/bcm-text.cjs.entry.js.map +0 -1
  218. package/dist/components/p-5f7a0d0d.js +0 -107
  219. package/dist/components/p-5f7a0d0d.js.map +0 -1
  220. package/dist/esm/bcm-avatar_4.entry.js +0 -589
  221. package/dist/esm/bcm-avatar_4.entry.js.map +0 -1
  222. package/dist/esm/bcm-dropdown-item.entry.js +0 -59
  223. package/dist/esm/bcm-dropdown-item.entry.js.map +0 -1
  224. package/dist/esm/bcm-dropdown.entry.js +0 -52
  225. package/dist/esm/bcm-dropdown.entry.js.map +0 -1
  226. package/dist/esm/bcm-linked.entry.js +0 -87
  227. package/dist/esm/bcm-linked.entry.js.map +0 -1
  228. package/dist/esm/bcm-text.entry.js +0 -115
  229. package/dist/esm/bcm-text.entry.js.map +0 -1
  230. /package/dist/bromcom-ui/{p-a1aae3ef.entry.js.map → p-09b53a8f.entry.js.map} +0 -0
  231. /package/dist/bromcom-ui/{p-49b0e982.entry.js.map → p-1392a235.entry.js.map} +0 -0
  232. /package/dist/bromcom-ui/{p-389f1976.entry.js.map → p-1867c3e6.entry.js.map} +0 -0
  233. /package/dist/bromcom-ui/{p-58ee24a8.entry.js.map → p-2cb15e60.entry.js.map} +0 -0
  234. /package/dist/bromcom-ui/{p-cd271b49.entry.js.map → p-3d424afc.entry.js.map} +0 -0
  235. /package/dist/bromcom-ui/{p-e89ab4a7.entry.js.map → p-3f153277.entry.js.map} +0 -0
  236. /package/dist/bromcom-ui/{p-13784cd7.entry.js.map → p-4762d66b.entry.js.map} +0 -0
  237. /package/dist/bromcom-ui/{p-bf69fc8a.entry.js.map → p-4bba4ab4.entry.js.map} +0 -0
  238. /package/dist/bromcom-ui/{p-9594cebb.js.map → p-50133556.js.map} +0 -0
  239. /package/dist/bromcom-ui/{p-056c9348.entry.js.map → p-5541403c.entry.js.map} +0 -0
  240. /package/dist/bromcom-ui/{p-bd0f7e78.entry.js.map → p-86704b91.entry.js.map} +0 -0
  241. /package/dist/bromcom-ui/{p-55c4263c.entry.js.map → p-898d5cf6.entry.js.map} +0 -0
  242. /package/dist/bromcom-ui/{p-0d0d6483.entry.js.map → p-c45d9e50.entry.js.map} +0 -0
  243. /package/dist/bromcom-ui/{p-625bbd86.entry.js.map → p-c78b12c3.entry.js.map} +0 -0
  244. /package/dist/bromcom-ui/{p-1bf71c9b.entry.js.map → p-d7b636bf.entry.js.map} +0 -0
  245. /package/dist/bromcom-ui/{p-c995a48c.entry.js.map → p-ea274e8b.entry.js.map} +0 -0
  246. /package/dist/bromcom-ui/{p-f2d8aa70.entry.js.map → p-ea6cdc17.entry.js.map} +0 -0
  247. /package/dist/bromcom-ui/{p-ab9a95f9.entry.js.map → p-edfa3b52.entry.js.map} +0 -0
@@ -1,77 +1,278 @@
1
1
  import { h } from "@stencil/core";
2
- import { computePosition, flip, shift, offset } from "@floating-ui/dom";
2
+ import { computePosition, flip, shift, offset, autoUpdate } from "@floating-ui/dom";
3
3
  export class BcmLinked {
4
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
5
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
+ };
62
+ }
63
+ // Watch for changes
64
+ setupTarget() {
65
+ this.disconnectTarget();
66
+ this.connectTarget();
67
+ }
68
+ onVisibilityChange(newValue) {
69
+ if (newValue) {
70
+ this.updatePosition();
71
+ this.bcmShown.emit();
72
+ }
73
+ else {
74
+ this.bcmHidden.emit();
75
+ }
6
76
  }
7
77
  componentDidLoad() {
8
78
  requestAnimationFrame(() => {
9
- this.targetEl = this.targetElement || (this.targetId ? document.getElementById(this.targetId) : null);
10
79
  this.floatingEl = this.host.shadowRoot.querySelector('.floating-content');
11
- if (this.targetEl) {
12
- this.targetEl.addEventListener('click', (e) => {
13
- e.stopPropagation();
14
- this.toggle();
15
- });
16
- const handleClickOutside = (e) => {
17
- var _a, _b;
18
- const target = e.target;
19
- if (!((_a = this.floatingEl) === null || _a === void 0 ? void 0 : _a.contains(target)) &&
20
- !((_b = this.targetEl) === null || _b === void 0 ? void 0 : _b.contains(target)) &&
21
- !this.host.contains(target)) {
22
- this.hide();
23
- }
24
- };
25
- document.addEventListener('click', handleClickOutside);
26
- this.host['_handleClickOutside'] = handleClickOutside;
80
+ this.isReady = true;
81
+ this.connectTarget();
82
+ });
83
+ }
84
+ disconnectedCallback() {
85
+ var _a, _b;
86
+ this.disconnectTarget();
87
+ this.clearTimeouts();
88
+ (_a = this.cleanup) === null || _a === void 0 ? void 0 : _a.call(this);
89
+ (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
90
+ }
91
+ connectTarget() {
92
+ if (!this.isReady)
93
+ return;
94
+ // Find target element
95
+ this.targetEl =
96
+ this.targetElement || (this.targetId ? document.getElementById(this.targetId) : null) || this.host.previousElementSibling || this.host.parentElement;
97
+ if (!this.targetEl) {
98
+ console.warn('bcm-linked: No target element found');
99
+ return;
100
+ }
101
+ // Setup event listeners based on trigger type
102
+ this.setupEventListeners();
103
+ // Setup auto-update for position
104
+ if (this.targetEl && this.floatingEl) {
105
+ this.cleanup = autoUpdate(this.targetEl, this.floatingEl, () => {
106
+ if (this.isVisible) {
107
+ this.updatePosition();
108
+ }
109
+ });
110
+ }
111
+ // Setup resize observer for responsive positioning
112
+ this.resizeObserver = new ResizeObserver(() => {
113
+ if (this.isVisible) {
114
+ this.updatePosition();
27
115
  }
28
116
  });
117
+ this.resizeObserver.observe(this.floatingEl);
118
+ }
119
+ disconnectTarget() {
120
+ var _a, _b;
121
+ if (this.targetEl) {
122
+ this.removeEventListeners();
123
+ }
124
+ (_a = this.cleanup) === null || _a === void 0 ? void 0 : _a.call(this);
125
+ (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
126
+ }
127
+ setupEventListeners() {
128
+ var _a, _b;
129
+ if (!this.targetEl || this.disabled)
130
+ return;
131
+ switch (this.trigger) {
132
+ case 'hover':
133
+ this.targetEl.addEventListener('mouseenter', this.handleMouseEnter);
134
+ this.targetEl.addEventListener('mouseleave', this.handleMouseLeave);
135
+ (_a = this.floatingEl) === null || _a === void 0 ? void 0 : _a.addEventListener('mouseenter', this.handleFloatingMouseEnter);
136
+ (_b = this.floatingEl) === null || _b === void 0 ? void 0 : _b.addEventListener('mouseleave', this.handleFloatingMouseLeave);
137
+ break;
138
+ case 'click':
139
+ this.targetEl.addEventListener('click', this.handleClick);
140
+ this.setupClickOutside();
141
+ break;
142
+ case 'focus':
143
+ this.targetEl.addEventListener('focus', this.handleFocus);
144
+ this.targetEl.addEventListener('blur', this.handleBlur);
145
+ break;
146
+ }
147
+ }
148
+ removeEventListeners() {
149
+ var _a, _b;
150
+ if (!this.targetEl)
151
+ return;
152
+ this.targetEl.removeEventListener('mouseenter', this.handleMouseEnter);
153
+ this.targetEl.removeEventListener('mouseleave', this.handleMouseLeave);
154
+ this.targetEl.removeEventListener('click', this.handleClick);
155
+ this.targetEl.removeEventListener('focus', this.handleFocus);
156
+ this.targetEl.removeEventListener('blur', this.handleBlur);
157
+ (_a = this.floatingEl) === null || _a === void 0 ? void 0 : _a.removeEventListener('mouseenter', this.handleFloatingMouseEnter);
158
+ (_b = this.floatingEl) === null || _b === void 0 ? void 0 : _b.removeEventListener('mouseleave', this.handleFloatingMouseLeave);
159
+ this.removeClickOutside();
160
+ }
161
+ setupClickOutside() {
162
+ this.clickOutsideHandler = (e) => {
163
+ var _a, _b;
164
+ const target = e.target;
165
+ 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)) {
166
+ this.hide();
167
+ }
168
+ };
169
+ document.addEventListener('click', this.clickOutsideHandler, true);
170
+ }
171
+ removeClickOutside() {
172
+ if (this.clickOutsideHandler) {
173
+ document.removeEventListener('click', this.clickOutsideHandler, true);
174
+ this.clickOutsideHandler = undefined;
175
+ }
176
+ }
177
+ clearTimeouts() {
178
+ if (this.showTimeout) {
179
+ clearTimeout(this.showTimeout);
180
+ this.showTimeout = undefined;
181
+ }
182
+ if (this.hideTimeout) {
183
+ clearTimeout(this.hideTimeout);
184
+ this.hideTimeout = undefined;
185
+ }
29
186
  }
30
187
  async updatePosition() {
31
- if (!this.targetEl || !this.floatingEl)
188
+ if (!this.targetEl || !this.floatingEl || !this.isVisible)
32
189
  return;
33
- const { x, y } = await computePosition(this.targetEl, this.floatingEl, {
34
- placement: 'bottom-start',
35
- middleware: [
36
- offset(2),
37
- flip({
38
- fallbackPlacements: ['top-start'],
39
- }),
40
- shift({ padding: 8 }),
41
- ],
190
+ const middleware = [
191
+ offset(this.offset),
192
+ flip({
193
+ fallbackPlacements: ['top-start', 'bottom-start', 'right-start', 'left-start'],
194
+ }),
195
+ shift({ padding: 8 }),
196
+ ];
197
+ const { x, y, placement } = await computePosition(this.targetEl, this.floatingEl, {
198
+ placement: this.placement,
199
+ middleware,
200
+ strategy: 'fixed',
42
201
  });
43
202
  Object.assign(this.floatingEl.style, {
44
203
  left: `${x}px`,
45
204
  top: `${y}px`,
205
+ zIndex: this.zIndex.toString(),
46
206
  });
207
+ // Update arrow if enabled
208
+ if (this.arrow) {
209
+ this.updateArrow(placement);
210
+ }
47
211
  }
48
- show() {
212
+ updateArrow(placement) {
213
+ var _a;
214
+ const arrow = (_a = this.floatingEl) === null || _a === void 0 ? void 0 : _a.querySelector('.floating-arrow');
215
+ if (!arrow)
216
+ return;
217
+ // Remove all arrow classes
218
+ arrow.className = 'floating-arrow';
219
+ // Add placement-specific class
220
+ const side = placement.split('-')[0];
221
+ arrow.classList.add(`arrow-${side}`);
222
+ }
223
+ async show() {
224
+ if (this.disabled || this.isVisible)
225
+ return;
226
+ this.bcmShow.emit();
49
227
  this.isVisible = true;
50
- this.updatePosition();
228
+ // Don't move to body in StencilJS, keep in shadow DOM
229
+ // if (this.appendToBody && this.floatingEl) {
230
+ // document.body.appendChild(this.floatingEl);
231
+ // }
232
+ await this.updatePosition();
51
233
  }
52
- hide() {
234
+ async hide() {
235
+ if (!this.isVisible)
236
+ return;
237
+ this.bcmHide.emit();
53
238
  this.isVisible = false;
239
+ if (this.destroyOnHide && this.floatingEl && this.floatingEl.parentNode) {
240
+ this.floatingEl.parentNode.removeChild(this.floatingEl);
241
+ }
54
242
  }
55
- toggle() {
56
- this.isVisible = !this.isVisible;
243
+ async toggle() {
57
244
  if (this.isVisible) {
58
- this.updatePosition();
245
+ await this.hide();
246
+ }
247
+ else {
248
+ await this.show();
59
249
  }
60
250
  }
61
- render() {
62
- return (h("div", { key: '3f941aabcf3f17e8ee628c645ebb1316a305a43f', class: "floating-content z-[1000] flex min-w-max", style: {
63
- display: this.isVisible ? 'block' : 'none',
64
- position: 'absolute',
65
- top: "0px",
66
- left: "0px",
67
- } }, h("slot", { key: 'd75ff826bc512230c7befcf51757797ffe52abc6' })));
251
+ async updatePositioning() {
252
+ await this.updatePosition();
68
253
  }
69
- disconnectedCallback() {
70
- if (this.targetEl) {
71
- this.targetEl.removeEventListener('mouseenter', () => this.show());
72
- this.targetEl.removeEventListener('mouseleave', () => this.hide());
73
- this.targetEl.removeEventListener('click', () => this.toggle());
74
- }
254
+ render() {
255
+ const floatingClasses = {
256
+ 'floating-content': true,
257
+ 'floating-visible': this.isVisible,
258
+ 'floating-hidden': !this.isVisible,
259
+ 'floating-with-arrow': this.arrow,
260
+ 'floating-destroy-on-hide': this.destroyOnHide,
261
+ };
262
+ return [
263
+ // Portal div to body for positioning, but keep slot in shadow DOM
264
+ h("div", { key: 'b6af79e7bb9a025d39686d02416175ace281a19a', class: floatingClasses, style: {
265
+ position: 'fixed',
266
+ top: '0px',
267
+ left: '0px',
268
+ zIndex: this.zIndex.toString(),
269
+ visibility: this.isVisible ? 'visible' : 'hidden',
270
+ opacity: this.isVisible ? '1' : '0',
271
+ pointerEvents: this.isVisible ? 'auto' : 'none',
272
+ } }, this.arrow && h("div", { key: 'ec25846caa6c8c3ee71ca01e802f714a01491a67', class: "floating-arrow" }), h("div", { key: '7a855e6caaee49c17c1f57d8283af789e7bb458f', class: "floating-wrapper" }, h("slot", { key: 'ba15b2faf8a0c7e6fa14441aa366deaa582aa419' }))),
273
+ // Hidden content holder for slot fallback
274
+ h("div", { key: 'e1542255d3d34e5c3d2d3b3e5d752848dc706ed5', style: { display: 'none' } }, h("slot", { key: 'aa62f7a2a3f109160082fb6ef798bd7b61760fb2', name: "fallback" })),
275
+ ];
75
276
  }
76
277
  static get is() { return "bcm-linked"; }
77
278
  static get encapsulation() { return "shadow"; }
@@ -96,7 +297,7 @@ export class BcmLinked {
96
297
  "references": {}
97
298
  },
98
299
  "required": false,
99
- "optional": false,
300
+ "optional": true,
100
301
  "docs": {
101
302
  "tags": [],
102
303
  "text": ""
@@ -127,14 +328,374 @@ export class BcmLinked {
127
328
  },
128
329
  "getter": false,
129
330
  "setter": false
331
+ },
332
+ "trigger": {
333
+ "type": "string",
334
+ "mutable": false,
335
+ "complexType": {
336
+ "original": "TriggerType",
337
+ "resolved": "\"click\" | \"focus\" | \"hover\" | \"manual\"",
338
+ "references": {
339
+ "TriggerType": {
340
+ "location": "local",
341
+ "path": "/Users/muratpolatozkan/works/bromcom/ui-team/next/bromcom-ui-v2/src/components/linked/linked.component.tsx",
342
+ "id": "src/components/linked/linked.component.tsx::TriggerType"
343
+ }
344
+ }
345
+ },
346
+ "required": false,
347
+ "optional": false,
348
+ "docs": {
349
+ "tags": [],
350
+ "text": ""
351
+ },
352
+ "getter": false,
353
+ "setter": false,
354
+ "attribute": "trigger",
355
+ "reflect": false,
356
+ "defaultValue": "'click'"
357
+ },
358
+ "placement": {
359
+ "type": "string",
360
+ "mutable": false,
361
+ "complexType": {
362
+ "original": "Placement",
363
+ "resolved": "\"bottom\" | \"bottom-end\" | \"bottom-start\" | \"left\" | \"left-end\" | \"left-start\" | \"right\" | \"right-end\" | \"right-start\" | \"top\" | \"top-end\" | \"top-start\"",
364
+ "references": {
365
+ "Placement": {
366
+ "location": "import",
367
+ "path": "@floating-ui/dom",
368
+ "id": "node_modules::Placement"
369
+ }
370
+ }
371
+ },
372
+ "required": false,
373
+ "optional": false,
374
+ "docs": {
375
+ "tags": [],
376
+ "text": ""
377
+ },
378
+ "getter": false,
379
+ "setter": false,
380
+ "attribute": "placement",
381
+ "reflect": false,
382
+ "defaultValue": "'bottom-start'"
383
+ },
384
+ "showDelay": {
385
+ "type": "number",
386
+ "mutable": false,
387
+ "complexType": {
388
+ "original": "number",
389
+ "resolved": "number",
390
+ "references": {}
391
+ },
392
+ "required": false,
393
+ "optional": false,
394
+ "docs": {
395
+ "tags": [],
396
+ "text": ""
397
+ },
398
+ "getter": false,
399
+ "setter": false,
400
+ "attribute": "show-delay",
401
+ "reflect": false,
402
+ "defaultValue": "0"
403
+ },
404
+ "hideDelay": {
405
+ "type": "number",
406
+ "mutable": false,
407
+ "complexType": {
408
+ "original": "number",
409
+ "resolved": "number",
410
+ "references": {}
411
+ },
412
+ "required": false,
413
+ "optional": false,
414
+ "docs": {
415
+ "tags": [],
416
+ "text": ""
417
+ },
418
+ "getter": false,
419
+ "setter": false,
420
+ "attribute": "hide-delay",
421
+ "reflect": false,
422
+ "defaultValue": "0"
423
+ },
424
+ "offset": {
425
+ "type": "number",
426
+ "mutable": false,
427
+ "complexType": {
428
+ "original": "number",
429
+ "resolved": "number",
430
+ "references": {}
431
+ },
432
+ "required": false,
433
+ "optional": false,
434
+ "docs": {
435
+ "tags": [],
436
+ "text": ""
437
+ },
438
+ "getter": false,
439
+ "setter": false,
440
+ "attribute": "offset",
441
+ "reflect": false,
442
+ "defaultValue": "8"
443
+ },
444
+ "arrow": {
445
+ "type": "boolean",
446
+ "mutable": false,
447
+ "complexType": {
448
+ "original": "boolean",
449
+ "resolved": "boolean",
450
+ "references": {}
451
+ },
452
+ "required": false,
453
+ "optional": false,
454
+ "docs": {
455
+ "tags": [],
456
+ "text": ""
457
+ },
458
+ "getter": false,
459
+ "setter": false,
460
+ "attribute": "arrow",
461
+ "reflect": false,
462
+ "defaultValue": "false"
463
+ },
464
+ "disabled": {
465
+ "type": "boolean",
466
+ "mutable": false,
467
+ "complexType": {
468
+ "original": "boolean",
469
+ "resolved": "boolean",
470
+ "references": {}
471
+ },
472
+ "required": false,
473
+ "optional": false,
474
+ "docs": {
475
+ "tags": [],
476
+ "text": ""
477
+ },
478
+ "getter": false,
479
+ "setter": false,
480
+ "attribute": "disabled",
481
+ "reflect": false,
482
+ "defaultValue": "false"
483
+ },
484
+ "zIndex": {
485
+ "type": "number",
486
+ "mutable": false,
487
+ "complexType": {
488
+ "original": "number",
489
+ "resolved": "number",
490
+ "references": {}
491
+ },
492
+ "required": false,
493
+ "optional": false,
494
+ "docs": {
495
+ "tags": [],
496
+ "text": ""
497
+ },
498
+ "getter": false,
499
+ "setter": false,
500
+ "attribute": "z-index",
501
+ "reflect": false,
502
+ "defaultValue": "1000"
503
+ },
504
+ "appendToBody": {
505
+ "type": "boolean",
506
+ "mutable": false,
507
+ "complexType": {
508
+ "original": "boolean",
509
+ "resolved": "boolean",
510
+ "references": {}
511
+ },
512
+ "required": false,
513
+ "optional": false,
514
+ "docs": {
515
+ "tags": [],
516
+ "text": ""
517
+ },
518
+ "getter": false,
519
+ "setter": false,
520
+ "attribute": "append-to-body",
521
+ "reflect": false,
522
+ "defaultValue": "false"
523
+ },
524
+ "destroyOnHide": {
525
+ "type": "boolean",
526
+ "mutable": false,
527
+ "complexType": {
528
+ "original": "boolean",
529
+ "resolved": "boolean",
530
+ "references": {}
531
+ },
532
+ "required": false,
533
+ "optional": false,
534
+ "docs": {
535
+ "tags": [],
536
+ "text": ""
537
+ },
538
+ "getter": false,
539
+ "setter": false,
540
+ "attribute": "destroy-on-hide",
541
+ "reflect": false,
542
+ "defaultValue": "false"
130
543
  }
131
544
  };
132
545
  }
133
546
  static get states() {
134
547
  return {
135
- "isVisible": {}
548
+ "isVisible": {},
549
+ "isReady": {}
550
+ };
551
+ }
552
+ static get events() {
553
+ return [{
554
+ "method": "bcmShow",
555
+ "name": "bcmShow",
556
+ "bubbles": true,
557
+ "cancelable": true,
558
+ "composed": true,
559
+ "docs": {
560
+ "tags": [],
561
+ "text": ""
562
+ },
563
+ "complexType": {
564
+ "original": "void",
565
+ "resolved": "void",
566
+ "references": {}
567
+ }
568
+ }, {
569
+ "method": "bcmHide",
570
+ "name": "bcmHide",
571
+ "bubbles": true,
572
+ "cancelable": true,
573
+ "composed": true,
574
+ "docs": {
575
+ "tags": [],
576
+ "text": ""
577
+ },
578
+ "complexType": {
579
+ "original": "void",
580
+ "resolved": "void",
581
+ "references": {}
582
+ }
583
+ }, {
584
+ "method": "bcmShown",
585
+ "name": "bcmShown",
586
+ "bubbles": true,
587
+ "cancelable": true,
588
+ "composed": true,
589
+ "docs": {
590
+ "tags": [],
591
+ "text": ""
592
+ },
593
+ "complexType": {
594
+ "original": "void",
595
+ "resolved": "void",
596
+ "references": {}
597
+ }
598
+ }, {
599
+ "method": "bcmHidden",
600
+ "name": "bcmHidden",
601
+ "bubbles": true,
602
+ "cancelable": true,
603
+ "composed": true,
604
+ "docs": {
605
+ "tags": [],
606
+ "text": ""
607
+ },
608
+ "complexType": {
609
+ "original": "void",
610
+ "resolved": "void",
611
+ "references": {}
612
+ }
613
+ }];
614
+ }
615
+ static get methods() {
616
+ return {
617
+ "show": {
618
+ "complexType": {
619
+ "signature": "() => Promise<void>",
620
+ "parameters": [],
621
+ "references": {
622
+ "Promise": {
623
+ "location": "global",
624
+ "id": "global::Promise"
625
+ }
626
+ },
627
+ "return": "Promise<void>"
628
+ },
629
+ "docs": {
630
+ "text": "",
631
+ "tags": []
632
+ }
633
+ },
634
+ "hide": {
635
+ "complexType": {
636
+ "signature": "() => Promise<void>",
637
+ "parameters": [],
638
+ "references": {
639
+ "Promise": {
640
+ "location": "global",
641
+ "id": "global::Promise"
642
+ }
643
+ },
644
+ "return": "Promise<void>"
645
+ },
646
+ "docs": {
647
+ "text": "",
648
+ "tags": []
649
+ }
650
+ },
651
+ "toggle": {
652
+ "complexType": {
653
+ "signature": "() => Promise<void>",
654
+ "parameters": [],
655
+ "references": {
656
+ "Promise": {
657
+ "location": "global",
658
+ "id": "global::Promise"
659
+ }
660
+ },
661
+ "return": "Promise<void>"
662
+ },
663
+ "docs": {
664
+ "text": "",
665
+ "tags": []
666
+ }
667
+ },
668
+ "updatePositioning": {
669
+ "complexType": {
670
+ "signature": "() => Promise<void>",
671
+ "parameters": [],
672
+ "references": {
673
+ "Promise": {
674
+ "location": "global",
675
+ "id": "global::Promise"
676
+ }
677
+ },
678
+ "return": "Promise<void>"
679
+ },
680
+ "docs": {
681
+ "text": "",
682
+ "tags": []
683
+ }
684
+ }
136
685
  };
137
686
  }
138
687
  static get elementRef() { return "host"; }
688
+ static get watchers() {
689
+ return [{
690
+ "propName": "targetId",
691
+ "methodName": "setupTarget"
692
+ }, {
693
+ "propName": "targetElement",
694
+ "methodName": "setupTarget"
695
+ }, {
696
+ "propName": "isVisible",
697
+ "methodName": "onVisibilityChange"
698
+ }];
699
+ }
139
700
  }
140
701
  //# sourceMappingURL=linked.component.js.map