@carbon/web-components 2.42.0-rc.0 → 2.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/custom-elements.json +44 -0
  2. package/dist/accordion.min.js +2 -2
  3. package/dist/ai-label.min.js +2 -2
  4. package/dist/ai-skeleton.min.js +2 -2
  5. package/dist/badge-indicator.min.js +2 -2
  6. package/dist/breadcrumb.min.js +2 -2
  7. package/dist/{button-B1zomRlI.js → button-eTloXzqX.js} +2 -2
  8. package/dist/{button-skeleton-B07ZbxzX.js → button-skeleton-Dk3chlBc.js} +2 -2
  9. package/dist/button.min.js +2 -2
  10. package/dist/chat-button.min.js +2 -2
  11. package/dist/{checkbox-B0vLnC5o.js → checkbox-cr5-wvt1.js} +2 -2
  12. package/dist/checkbox.min.js +2 -2
  13. package/dist/{class-map-D6fczokn.js → class-map-CJoc5JjN.js} +2 -2
  14. package/dist/code-snippet.min.js +2 -2
  15. package/dist/combo-box.min.js +2 -2
  16. package/dist/combo-button.min.js +2 -2
  17. package/dist/{content-switcher-item-C4k2qhq1.js → content-switcher-item-VHI7iTTP.js} +2 -2
  18. package/dist/content-switcher.min.js +2 -2
  19. package/dist/copy-button.min.js +2 -2
  20. package/dist/data-table.min.js +4 -4
  21. package/dist/date-picker.min.js +2 -2
  22. package/dist/{dropdown-item-Di3D8IQv.js → dropdown-item-Pt_eWt66.js} +2 -2
  23. package/dist/dropdown.min.js +2 -2
  24. package/dist/feature-flags.min.js +2 -2
  25. package/dist/file-uploader.min.js +2 -2
  26. package/dist/floating-controller-DLpRVhGd.js +28 -0
  27. package/dist/floating-menu.min.js +2 -2
  28. package/dist/fluid-text-input.min.js +2 -2
  29. package/dist/{focus-Cz1b3uzn.js → focus-yD1Q_pDt.js} +2 -2
  30. package/dist/{form-C8GJptS1.js → form-BaYTr2z0.js} +2 -2
  31. package/dist/form-group.min.js +2 -2
  32. package/dist/form.min.js +2 -2
  33. package/dist/grid.min.js +2 -2
  34. package/dist/heading.min.js +2 -2
  35. package/dist/{host-listener-CE9SgANI.js → host-listener-BJsBtsIt.js} +2 -2
  36. package/dist/icon-button.min.js +2 -2
  37. package/dist/icon-indicator.min.js +2 -2
  38. package/dist/{icon-loader-B3Da-Uq8.js → icon-loader-CqB9WRMP.js} +2 -2
  39. package/dist/{icon-loader-utils-BN__f45E.js → icon-loader-utils-DUl0vwdh.js} +2 -2
  40. package/dist/icon.min.js +2 -2
  41. package/dist/{if-defined-CYiNZJ6y.js → if-defined-IxozbDOJ.js} +2 -2
  42. package/dist/{if-non-empty-BVPYbR8i.js → if-non-empty-CqQHBHdQ.js} +2 -2
  43. package/dist/inline-loading.min.js +2 -2
  44. package/dist/layer.min.js +2 -2
  45. package/dist/link.min.js +2 -2
  46. package/dist/list.min.js +2 -2
  47. package/dist/{loading-icon-CcE3BBZu.js → loading-icon-CSgLYhyw.js} +2 -2
  48. package/dist/loading.min.js +2 -2
  49. package/dist/menu-button.min.js +2 -2
  50. package/dist/menu.min.js +2 -2
  51. package/dist/modal.min.js +3 -3
  52. package/dist/multi-select.min.js +2 -2
  53. package/dist/notification.min.js +2 -2
  54. package/dist/number-input.min.js +2 -2
  55. package/dist/overflow-menu.min.js +2 -2
  56. package/dist/page-header.min.js +2 -2
  57. package/dist/pagination.min.js +2 -2
  58. package/dist/password-input.min.js +2 -2
  59. package/dist/popover.min.js +10 -11
  60. package/dist/progress-bar.min.js +2 -2
  61. package/dist/progress-indicator.min.js +2 -2
  62. package/dist/{property-9iekpRAy.js → property-B_F7V5eB.js} +2 -2
  63. package/dist/{query-assigned-elements-BWBKpcF7.js → query-assigned-elements-DeMmXVMb.js} +2 -2
  64. package/dist/radio-button.min.js +2 -2
  65. package/dist/{search-uwRFrBOz.js → search-BrKCrPl3.js} +2 -2
  66. package/dist/search.min.js +2 -2
  67. package/dist/{select-DpavENph.js → select-Dwsf_c0t.js} +2 -2
  68. package/dist/select.min.js +2 -2
  69. package/dist/shape-indicator.min.js +2 -2
  70. package/dist/side-panel.min.js +2 -2
  71. package/dist/skeleton-icon.min.js +2 -2
  72. package/dist/skeleton-placeholder.min.js +2 -2
  73. package/dist/skeleton-text.min.js +2 -2
  74. package/dist/skip-to-content.min.js +2 -2
  75. package/dist/slider.min.js +2 -2
  76. package/dist/slug.min.js +3 -3
  77. package/dist/stack.min.js +2 -2
  78. package/dist/{state-BuG_dMhZ.js → state-CJQmj6wG.js} +2 -2
  79. package/dist/structured-list.min.js +2 -2
  80. package/dist/tabs.min.js +2 -2
  81. package/dist/tag.min.js +2 -2
  82. package/dist/tearsheet.min.js +2 -2
  83. package/dist/{text-input-CH2K_Vha.js → text-input-C0qeKR9e.js} +2 -2
  84. package/dist/text-input.min.js +2 -2
  85. package/dist/textarea.min.js +2 -2
  86. package/dist/tile.min.js +2 -2
  87. package/dist/time-picker.min.js +2 -2
  88. package/dist/toggle-tip.min.js +2 -2
  89. package/dist/toggle.min.js +2 -2
  90. package/dist/{tooltip-content-DMy2swEb.js → tooltip-content-CMbdEoxb.js} +2 -2
  91. package/dist/tooltip.min.js +2 -2
  92. package/dist/tree-view.min.js +2 -2
  93. package/dist/ui-shell.min.js +2 -2
  94. package/dist/{unsafe-html-DVA3vXNw.js → unsafe-html-Dqv0UqC_.js} +2 -2
  95. package/es/components/ai-label/ai-label.scss.js +1 -1
  96. package/es/components/ai-skeleton/ai-skeleton.scss.js +1 -1
  97. package/es/components/data-table/table.js +2 -2
  98. package/es/components/data-table/table.js.map +1 -1
  99. package/es/components/icon-button/icon-button.scss.js +1 -1
  100. package/es/components/modal/modal.scss.js +1 -1
  101. package/es/components/pagination/pagination.scss.js +1 -1
  102. package/es/components/popover/popover-content.d.ts +1 -1
  103. package/es/components/popover/popover-content.js +13 -15
  104. package/es/components/popover/popover-content.js.map +1 -1
  105. package/es/components/popover/popover.d.ts +18 -0
  106. package/es/components/popover/popover.js +80 -6
  107. package/es/components/popover/popover.js.map +1 -1
  108. package/es/components/popover/popover.scss.js +1 -1
  109. package/es/components/slug/slug.scss.js +1 -1
  110. package/es/components/toggle-tip/toggletip.scss.js +1 -1
  111. package/es/components/tooltip/tooltip.scss.js +1 -1
  112. package/es/globals/controllers/floating-controller.d.ts +4 -1
  113. package/es/globals/controllers/floating-controller.js +62 -10
  114. package/es/globals/controllers/floating-controller.js.map +1 -1
  115. package/es-custom/components/ai-label/ai-label.scss.js +1 -1
  116. package/es-custom/components/ai-skeleton/ai-skeleton.scss.js +1 -1
  117. package/es-custom/components/data-table/table.js +2 -2
  118. package/es-custom/components/data-table/table.js.map +1 -1
  119. package/es-custom/components/icon-button/icon-button.scss.js +1 -1
  120. package/es-custom/components/modal/modal.scss.js +1 -1
  121. package/es-custom/components/pagination/pagination.scss.js +1 -1
  122. package/es-custom/components/popover/popover-content.d.ts +1 -1
  123. package/es-custom/components/popover/popover-content.js +13 -15
  124. package/es-custom/components/popover/popover-content.js.map +1 -1
  125. package/es-custom/components/popover/popover.d.ts +18 -0
  126. package/es-custom/components/popover/popover.js +80 -6
  127. package/es-custom/components/popover/popover.js.map +1 -1
  128. package/es-custom/components/popover/popover.scss.js +1 -1
  129. package/es-custom/components/slug/slug.scss.js +1 -1
  130. package/es-custom/components/toggle-tip/toggletip.scss.js +1 -1
  131. package/es-custom/components/tooltip/tooltip.scss.js +1 -1
  132. package/es-custom/globals/controllers/floating-controller.d.ts +4 -1
  133. package/es-custom/globals/controllers/floating-controller.js +62 -10
  134. package/es-custom/globals/controllers/floating-controller.js.map +1 -1
  135. package/lib/components/popover/popover-content.d.ts +1 -1
  136. package/lib/components/popover/popover.d.ts +18 -0
  137. package/lib/globals/controllers/floating-controller.d.ts +4 -1
  138. package/lib/globals/controllers/floating-controller.js +61 -9
  139. package/lib/globals/controllers/floating-controller.js.map +1 -1
  140. package/package.json +3 -3
  141. package/scss/components/ai-skeleton/ai-skeleton.scss +14 -0
  142. package/scss/components/popover/popover-story.scss +2 -1
  143. package/scss/components/popover/popover.scss +149 -14
  144. package/telemetry.yml +1 -0
  145. package/dist/floating-controller-DjEAkoHn.js +0 -28
  146. package/dist/{16-fd4Ivo6o.js → 16-B3Yskhl0.js} +1 -1
  147. package/dist/{16-Bf5-IrA2.js → 16-B46MLj4i.js} +1 -1
  148. package/dist/{16-BZ-sICMc.js → 16-B7MRS_3W.js} +1 -1
  149. package/dist/{16-BKRNDebk.js → 16-BWlgPBcu.js} +1 -1
  150. package/dist/{16-5IO66qZv.js → 16-Bf2P7KMJ.js} +1 -1
  151. package/dist/{16-BplvdDlD.js → 16-Bxm7Omxq.js} +1 -1
  152. package/dist/{16-Ctf1-GU4.js → 16-CJNlj_0b.js} +1 -1
  153. package/dist/{16-DszCKQWk.js → 16-CdxGkvXO.js} +1 -1
  154. package/dist/{16-Cl1JRwhU.js → 16-DTvjc9uv.js} +1 -1
  155. package/dist/{16-B5nukGIX.js → 16-DhAznVKm.js} +1 -1
  156. package/dist/{16-BZbjCIdx.js → 16-DoN7q01_.js} +1 -1
  157. package/dist/{16-DussDP25.js → 16-GKRs-ALp.js} +1 -1
  158. package/dist/{20-BHvYOxYo.js → 20-CuEbZLGA.js} +1 -1
  159. package/dist/{20-dwKc_1p5.js → 20-DlknbFYR.js} +1 -1
  160. package/dist/{carbon-element-BZWjx64-.js → carbon-element-DDrYm3XO.js} +1 -1
  161. package/dist/{collection-helpers-CcXpRZP7.js → collection-helpers-_CvqQaiX.js} +1 -1
  162. package/dist/{consume-D8po478F.js → consume-BeeFGGfo.js} +1 -1
  163. package/dist/{directive-Dkgne8TP.js → directive-Dlo2OKiC.js} +1 -1
  164. package/dist/{host-listener-CEVyo9Gf.js → host-listener-BCnAWDV7.js} +1 -1
  165. package/dist/{lit-element-D-2dOK7a.js → lit-element-eFlPHqE1.js} +1 -1
  166. package/dist/{on-Dx8_n3Zi.js → on-DvnWS_DB.js} +1 -1
  167. package/dist/{query-BMt73bSi.js → query-BdmT5Ln1.js} +1 -1
  168. package/dist/{radio-group-manager-BFkEoNf7.js → radio-group-manager-B_pENWmT.js} +1 -1
  169. package/dist/{settings-1amR4med.js → settings-BBN_bDP6.js} +1 -1
  170. package/dist/{shared-enums-HvMnAeAT.js → shared-enums-D8TrS6Ts.js} +1 -1
  171. package/dist/{validity-DMHWEVWw.js → validity-BUGyJDQ6.js} +1 -1
@@ -1,10 +1,11 @@
1
1
  /**
2
- * Copyright IBM Corp. 2024
2
+ * Copyright IBM Corp. 2024, 2025
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import { ReactiveController, ReactiveElement } from 'lit';
8
+ import { type Boundary } from '@floating-ui/dom';
8
9
  type FloatingControllerOptions = {
9
10
  target: HTMLElement;
10
11
  trigger: HTMLElement;
@@ -16,6 +17,8 @@ type FloatingControllerOptions = {
16
17
  matchWidth?: boolean;
17
18
  open: boolean;
18
19
  alignmentAxisOffset?: number;
20
+ autoAlignBoundary?: Boundary;
21
+ isTabTip?: boolean;
19
22
  };
20
23
  /**
21
24
  * Controller for positioning the menu using Floating UI.
@@ -5,10 +5,10 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import { autoUpdate, flip, offset, arrow, size, computePosition } from '@floating-ui/dom';
8
+ import { autoUpdate, offset, flip, size, arrow, hide, computePosition } from '@floating-ui/dom';
9
9
 
10
10
  /**
11
- * Copyright IBM Corp. 2024
11
+ * Copyright IBM Corp. 2024, 2025
12
12
  *
13
13
  * This source code is licensed under the Apache-2.0 license found in the
14
14
  * LICENSE file in the root directory of this source tree.
@@ -34,8 +34,8 @@ class FloatingController {
34
34
  this.cleanup = autoUpdate(trigger, target, this.updatePlacement);
35
35
  }
36
36
  async computePlacement() {
37
- var _a;
38
- const { arrowElement, alignment, caret, trigger, target, styleElement, matchWidth, open, flipArguments, alignmentAxisOffset, } = this.options;
37
+ var _a, _b, _c;
38
+ const { arrowElement, alignment, caret, trigger, target, styleElement, matchWidth, open, alignmentAxisOffset, autoAlignBoundary, isTabTip, } = this.options;
39
39
  const element = styleElement !== null && styleElement !== void 0 ? styleElement : target;
40
40
  if (!element)
41
41
  return;
@@ -69,12 +69,56 @@ class FloatingController {
69
69
  shimmedAlign = alignment;
70
70
  break;
71
71
  }
72
+ const cs = getComputedStyle(element);
73
+ const toPx = (val) => {
74
+ const raw = parseFloat(val);
75
+ return val.trim().endsWith('rem') ? raw * 16 : raw;
76
+ };
77
+ const offsetPx = !isTabTip
78
+ ? ((_a = toPx(cs.getPropertyValue('--cds-popover-offset').trim())) !== null && _a !== void 0 ? _a : 10)
79
+ : 0;
72
80
  const middleware = [
73
- flip(flipArguments),
74
- offset((alignmentAxisOffset !== null && alignmentAxisOffset !== void 0 ? alignmentAxisOffset : 0) + (caret ? 10 : 0)),
75
- ...(caret && arrowElement
76
- ? [arrow({ element: arrowElement, padding: 15 })]
77
- : []),
81
+ offset(caret && !isTabTip
82
+ ? { alignmentAxis: alignmentAxisOffset, mainAxis: offsetPx }
83
+ : 0),
84
+ flip({
85
+ fallbackPlacements: isTabTip
86
+ ? shimmedAlign.includes('bottom')
87
+ ? ['bottom-start', 'bottom-end', 'top-start', 'top-end']
88
+ : ['top-start', 'top-end', 'bottom-start', 'bottom-end']
89
+ : shimmedAlign.includes('bottom')
90
+ ? [
91
+ 'bottom',
92
+ 'bottom-start',
93
+ 'bottom-end',
94
+ 'right',
95
+ 'right-start',
96
+ 'right-end',
97
+ 'left',
98
+ 'left-start',
99
+ 'left-end',
100
+ 'top',
101
+ 'top-start',
102
+ 'top-end',
103
+ ]
104
+ : [
105
+ 'top',
106
+ 'top-start',
107
+ 'top-end',
108
+ 'left',
109
+ 'left-start',
110
+ 'left-end',
111
+ 'right',
112
+ 'right-start',
113
+ 'right-end',
114
+ 'bottom',
115
+ 'bottom-start',
116
+ 'bottom-end',
117
+ ],
118
+ fallbackStrategy: 'initialPlacement',
119
+ fallbackAxisSideDirection: 'start',
120
+ boundary: autoAlignBoundary,
121
+ }),
78
122
  ...(matchWidth && (shimmedAlign === 'bottom' || shimmedAlign === 'top')
79
123
  ? [
80
124
  size({
@@ -90,6 +134,10 @@ class FloatingController {
90
134
  },
91
135
  }),
92
136
  ]),
137
+ ...(caret && arrowElement
138
+ ? [arrow({ element: arrowElement, padding: 15 })]
139
+ : []),
140
+ ...[hide()],
93
141
  ];
94
142
  if (open) {
95
143
  const { x, y, placement, middlewareData, strategy } = await computePosition(trigger, element, {
@@ -97,9 +145,13 @@ class FloatingController {
97
145
  middleware,
98
146
  placement: shimmedAlign,
99
147
  });
148
+ element.setAttribute('align', placement);
100
149
  element.style.left = `${x}px`;
101
150
  element.style.top = `${y}px`;
102
151
  element.style.position = `${strategy}`;
152
+ element.style.visibility = ((_b = middlewareData.hide) === null || _b === void 0 ? void 0 : _b.referenceHidden)
153
+ ? 'hidden'
154
+ : 'visible';
103
155
  if (arrowElement) {
104
156
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
105
157
  // @ts-ignore
@@ -122,7 +174,7 @@ class FloatingController {
122
174
  // TODO: remove reference to slug in v12
123
175
  if (this.host.tagName === 'CDS-AI-LABEL' ||
124
176
  this.host.tagName === 'CDS-SLUG') {
125
- (_a = this.host) === null || _a === void 0 ? void 0 : _a.setAttribute('alignment', placement);
177
+ (_c = this.host) === null || _c === void 0 ? void 0 : _c.setAttribute('alignment', placement);
126
178
  }
127
179
  }
128
180
  }
@@ -1 +1 @@
1
- {"version":3,"file":"floating-controller.js","sources":["../../../src/globals/controllers/floating-controller.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2024\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { ReactiveController, ReactiveElement } from 'lit';\nimport {\n computePosition,\n flip,\n size,\n offset,\n arrow,\n autoUpdate,\n Placement,\n} from '@floating-ui/dom';\n\ntype FloatingControllerOptions = {\n target: HTMLElement;\n trigger: HTMLElement;\n alignment: string;\n\n arrowElement?: HTMLElement | undefined;\n flipArguments?: object;\n caret?: boolean;\n\n styleElement?: HTMLElement;\n matchWidth?: boolean;\n open: boolean;\n alignmentAxisOffset?: number;\n};\n\n/**\n * Controller for positioning the menu using Floating UI.\n */\nexport default class FloatingController implements ReactiveController {\n /**\n * Host component\n */\n private host: ReactiveElement;\n /**\n * Floating-ui options to pass to `computePlacement()`\n */\n private options!: FloatingControllerOptions;\n /**\n * cleanup function to stop auto updates\n */\n private cleanup?: () => void;\n\n /**\n * register with host component\n * @param host host component\n */\n constructor(host: ReactiveElement) {\n this.host = host;\n host.addController(this);\n }\n\n async setPlacement(options: FloatingControllerOptions = this.options) {\n this.options = options;\n const { trigger, target } = options;\n this.cleanup = autoUpdate(trigger, target, this.updatePlacement);\n }\n\n updatePlacement = (): void => {\n this.computePlacement();\n };\n\n async computePlacement() {\n const {\n arrowElement,\n alignment,\n caret,\n trigger,\n target,\n styleElement,\n matchWidth,\n open,\n flipArguments,\n alignmentAxisOffset,\n } = this.options;\n\n const element = styleElement ?? target;\n\n if (!element) return;\n\n let shimmedAlign;\n switch (alignment) {\n case 'top-left':\n shimmedAlign = 'top-start';\n break;\n case 'top-right':\n shimmedAlign = 'top-end';\n break;\n case 'bottom-left':\n shimmedAlign = 'bottom-start';\n break;\n case 'bottom-right':\n shimmedAlign = 'bottom-end';\n break;\n case 'left-bottom':\n shimmedAlign = 'left-end';\n break;\n case 'left-top':\n shimmedAlign = 'left-start';\n break;\n case 'right-bottom':\n shimmedAlign = 'right-end';\n break;\n case 'right-top':\n shimmedAlign = 'right-start';\n break;\n default:\n shimmedAlign = alignment;\n break;\n }\n\n const middleware = [\n flip(flipArguments),\n offset((alignmentAxisOffset ?? 0) + (caret ? 10 : 0)),\n ...(caret && arrowElement\n ? [arrow({ element: arrowElement, padding: 15 })]\n : []),\n ...(matchWidth && (shimmedAlign === 'bottom' || shimmedAlign === 'top')\n ? [\n size({\n apply({ rects, elements }) {\n elements.floating.style.width = `${rects.reference.width}px`;\n },\n }),\n ]\n : [\n size({\n apply({ elements }) {\n elements.floating.style.removeProperty('width');\n },\n }),\n ]),\n ];\n\n if (open) {\n const { x, y, placement, middlewareData, strategy } =\n await computePosition(trigger, element, {\n strategy: 'fixed',\n middleware,\n placement: shimmedAlign as Placement,\n });\n\n element.style.left = `${x}px`;\n element.style.top = `${y}px`;\n element.style.position = `${strategy}`;\n\n if (arrowElement) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n const staticSide: any = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n }[placement.split('-')[0]];\n\n arrowElement.style.left = arrowX != null ? `${arrowX}px` : '';\n arrowElement.style.top = arrowY != null ? `${arrowY}px` : '';\n arrowElement.style.right = '';\n arrowElement.style.bottom = '';\n arrowElement.style[staticSide] = `${-arrowElement.offsetWidth / 2}px`;\n }\n\n // adding specific case here where the style of the caret/arrow\n // is dependent on the placement\n // TODO: remove reference to slug in v12\n if (\n this.host.tagName === 'CDS-AI-LABEL' ||\n this.host.tagName === 'CDS-SLUG'\n ) {\n this.host?.setAttribute('alignment', placement);\n }\n }\n }\n\n hostUpdated(): void {\n if (!this.host.hasAttribute('open')) {\n this.cleanup?.();\n this.cleanup = undefined;\n }\n }\n\n hostDisconnected(): void {\n this.cleanup?.();\n this.cleanup = undefined;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"floating-controller.js","sources":["../../../src/globals/controllers/floating-controller.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2024, 2025\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { ReactiveController, ReactiveElement } from 'lit';\nimport {\n computePosition,\n flip,\n size,\n offset,\n arrow,\n autoUpdate,\n hide,\n Placement,\n type Boundary,\n} from '@floating-ui/dom';\n\ntype FloatingControllerOptions = {\n target: HTMLElement;\n trigger: HTMLElement;\n alignment: string;\n\n arrowElement?: HTMLElement | undefined;\n flipArguments?: object;\n caret?: boolean;\n\n styleElement?: HTMLElement;\n matchWidth?: boolean;\n open: boolean;\n alignmentAxisOffset?: number;\n autoAlignBoundary?: Boundary;\n isTabTip?: boolean;\n};\n\n/**\n * Controller for positioning the menu using Floating UI.\n */\nexport default class FloatingController implements ReactiveController {\n /**\n * Host component\n */\n private host: ReactiveElement;\n /**\n * Floating-ui options to pass to `computePlacement()`\n */\n private options!: FloatingControllerOptions;\n /**\n * cleanup function to stop auto updates\n */\n private cleanup?: () => void;\n\n /**\n * register with host component\n * @param host host component\n */\n constructor(host: ReactiveElement) {\n this.host = host;\n host.addController(this);\n }\n\n async setPlacement(options: FloatingControllerOptions = this.options) {\n this.options = options;\n const { trigger, target } = options;\n this.cleanup = autoUpdate(trigger, target, this.updatePlacement);\n }\n\n updatePlacement = (): void => {\n this.computePlacement();\n };\n\n async computePlacement() {\n const {\n arrowElement,\n alignment,\n caret,\n trigger,\n target,\n styleElement,\n matchWidth,\n open,\n alignmentAxisOffset,\n autoAlignBoundary,\n isTabTip,\n } = this.options;\n\n const element = styleElement ?? target;\n\n if (!element) return;\n\n let shimmedAlign;\n switch (alignment) {\n case 'top-left':\n shimmedAlign = 'top-start';\n break;\n case 'top-right':\n shimmedAlign = 'top-end';\n break;\n case 'bottom-left':\n shimmedAlign = 'bottom-start';\n break;\n case 'bottom-right':\n shimmedAlign = 'bottom-end';\n break;\n case 'left-bottom':\n shimmedAlign = 'left-end';\n break;\n case 'left-top':\n shimmedAlign = 'left-start';\n break;\n case 'right-bottom':\n shimmedAlign = 'right-end';\n break;\n case 'right-top':\n shimmedAlign = 'right-start';\n break;\n default:\n shimmedAlign = alignment;\n break;\n }\n const cs = getComputedStyle(element);\n const toPx = (val: string) => {\n const raw = parseFloat(val);\n return val.trim().endsWith('rem') ? raw * 16 : raw;\n };\n const offsetPx = !isTabTip\n ? (toPx(cs.getPropertyValue('--cds-popover-offset').trim()) ?? 10)\n : 0;\n\n const middleware = [\n offset(\n caret && !isTabTip\n ? { alignmentAxis: alignmentAxisOffset, mainAxis: offsetPx }\n : 0\n ),\n flip({\n fallbackPlacements: isTabTip\n ? shimmedAlign.includes('bottom')\n ? ['bottom-start', 'bottom-end', 'top-start', 'top-end']\n : ['top-start', 'top-end', 'bottom-start', 'bottom-end']\n : shimmedAlign.includes('bottom')\n ? [\n 'bottom',\n 'bottom-start',\n 'bottom-end',\n 'right',\n 'right-start',\n 'right-end',\n 'left',\n 'left-start',\n 'left-end',\n 'top',\n 'top-start',\n 'top-end',\n ]\n : [\n 'top',\n 'top-start',\n 'top-end',\n 'left',\n 'left-start',\n 'left-end',\n 'right',\n 'right-start',\n 'right-end',\n 'bottom',\n 'bottom-start',\n 'bottom-end',\n ],\n\n fallbackStrategy: 'initialPlacement',\n fallbackAxisSideDirection: 'start',\n boundary: autoAlignBoundary,\n }),\n ...(matchWidth && (shimmedAlign === 'bottom' || shimmedAlign === 'top')\n ? [\n size({\n apply({ rects, elements }) {\n elements.floating.style.width = `${rects.reference.width}px`;\n },\n }),\n ]\n : [\n size({\n apply({ elements }) {\n elements.floating.style.removeProperty('width');\n },\n }),\n ]),\n\n ...(caret && arrowElement\n ? [arrow({ element: arrowElement, padding: 15 })]\n : []),\n\n ...[hide()],\n ];\n\n if (open) {\n const { x, y, placement, middlewareData, strategy } =\n await computePosition(trigger, element, {\n strategy: 'fixed',\n middleware,\n placement: shimmedAlign as Placement,\n });\n\n element.setAttribute('align', placement);\n\n element.style.left = `${x}px`;\n element.style.top = `${y}px`;\n element.style.position = `${strategy}`;\n\n element.style.visibility = middlewareData.hide?.referenceHidden\n ? 'hidden'\n : 'visible';\n\n if (arrowElement) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452\n const staticSide: any = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n }[placement.split('-')[0]];\n\n arrowElement.style.left = arrowX != null ? `${arrowX}px` : '';\n arrowElement.style.top = arrowY != null ? `${arrowY}px` : '';\n arrowElement.style.right = '';\n arrowElement.style.bottom = '';\n arrowElement.style[staticSide] = `${-arrowElement.offsetWidth / 2}px`;\n }\n\n // adding specific case here where the style of the caret/arrow\n // is dependent on the placement\n // TODO: remove reference to slug in v12\n if (\n this.host.tagName === 'CDS-AI-LABEL' ||\n this.host.tagName === 'CDS-SLUG'\n ) {\n this.host?.setAttribute('alignment', placement);\n }\n }\n }\n\n hostUpdated(): void {\n if (!this.host.hasAttribute('open')) {\n this.cleanup?.();\n this.cleanup = undefined;\n }\n }\n\n hostDisconnected(): void {\n this.cleanup?.();\n this.cleanup = undefined;\n }\n}\n"],"names":[],"mappings":"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"}