@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.
- package/custom-elements.json +44 -0
- package/dist/accordion.min.js +2 -2
- package/dist/ai-label.min.js +2 -2
- package/dist/ai-skeleton.min.js +2 -2
- package/dist/badge-indicator.min.js +2 -2
- package/dist/breadcrumb.min.js +2 -2
- package/dist/{button-B1zomRlI.js → button-eTloXzqX.js} +2 -2
- package/dist/{button-skeleton-B07ZbxzX.js → button-skeleton-Dk3chlBc.js} +2 -2
- package/dist/button.min.js +2 -2
- package/dist/chat-button.min.js +2 -2
- package/dist/{checkbox-B0vLnC5o.js → checkbox-cr5-wvt1.js} +2 -2
- package/dist/checkbox.min.js +2 -2
- package/dist/{class-map-D6fczokn.js → class-map-CJoc5JjN.js} +2 -2
- package/dist/code-snippet.min.js +2 -2
- package/dist/combo-box.min.js +2 -2
- package/dist/combo-button.min.js +2 -2
- package/dist/{content-switcher-item-C4k2qhq1.js → content-switcher-item-VHI7iTTP.js} +2 -2
- package/dist/content-switcher.min.js +2 -2
- package/dist/copy-button.min.js +2 -2
- package/dist/data-table.min.js +4 -4
- package/dist/date-picker.min.js +2 -2
- package/dist/{dropdown-item-Di3D8IQv.js → dropdown-item-Pt_eWt66.js} +2 -2
- package/dist/dropdown.min.js +2 -2
- package/dist/feature-flags.min.js +2 -2
- package/dist/file-uploader.min.js +2 -2
- package/dist/floating-controller-DLpRVhGd.js +28 -0
- package/dist/floating-menu.min.js +2 -2
- package/dist/fluid-text-input.min.js +2 -2
- package/dist/{focus-Cz1b3uzn.js → focus-yD1Q_pDt.js} +2 -2
- package/dist/{form-C8GJptS1.js → form-BaYTr2z0.js} +2 -2
- package/dist/form-group.min.js +2 -2
- package/dist/form.min.js +2 -2
- package/dist/grid.min.js +2 -2
- package/dist/heading.min.js +2 -2
- package/dist/{host-listener-CE9SgANI.js → host-listener-BJsBtsIt.js} +2 -2
- package/dist/icon-button.min.js +2 -2
- package/dist/icon-indicator.min.js +2 -2
- package/dist/{icon-loader-B3Da-Uq8.js → icon-loader-CqB9WRMP.js} +2 -2
- package/dist/{icon-loader-utils-BN__f45E.js → icon-loader-utils-DUl0vwdh.js} +2 -2
- package/dist/icon.min.js +2 -2
- package/dist/{if-defined-CYiNZJ6y.js → if-defined-IxozbDOJ.js} +2 -2
- package/dist/{if-non-empty-BVPYbR8i.js → if-non-empty-CqQHBHdQ.js} +2 -2
- package/dist/inline-loading.min.js +2 -2
- package/dist/layer.min.js +2 -2
- package/dist/link.min.js +2 -2
- package/dist/list.min.js +2 -2
- package/dist/{loading-icon-CcE3BBZu.js → loading-icon-CSgLYhyw.js} +2 -2
- package/dist/loading.min.js +2 -2
- package/dist/menu-button.min.js +2 -2
- package/dist/menu.min.js +2 -2
- package/dist/modal.min.js +3 -3
- package/dist/multi-select.min.js +2 -2
- package/dist/notification.min.js +2 -2
- package/dist/number-input.min.js +2 -2
- package/dist/overflow-menu.min.js +2 -2
- package/dist/page-header.min.js +2 -2
- package/dist/pagination.min.js +2 -2
- package/dist/password-input.min.js +2 -2
- package/dist/popover.min.js +10 -11
- package/dist/progress-bar.min.js +2 -2
- package/dist/progress-indicator.min.js +2 -2
- package/dist/{property-9iekpRAy.js → property-B_F7V5eB.js} +2 -2
- package/dist/{query-assigned-elements-BWBKpcF7.js → query-assigned-elements-DeMmXVMb.js} +2 -2
- package/dist/radio-button.min.js +2 -2
- package/dist/{search-uwRFrBOz.js → search-BrKCrPl3.js} +2 -2
- package/dist/search.min.js +2 -2
- package/dist/{select-DpavENph.js → select-Dwsf_c0t.js} +2 -2
- package/dist/select.min.js +2 -2
- package/dist/shape-indicator.min.js +2 -2
- package/dist/side-panel.min.js +2 -2
- package/dist/skeleton-icon.min.js +2 -2
- package/dist/skeleton-placeholder.min.js +2 -2
- package/dist/skeleton-text.min.js +2 -2
- package/dist/skip-to-content.min.js +2 -2
- package/dist/slider.min.js +2 -2
- package/dist/slug.min.js +3 -3
- package/dist/stack.min.js +2 -2
- package/dist/{state-BuG_dMhZ.js → state-CJQmj6wG.js} +2 -2
- package/dist/structured-list.min.js +2 -2
- package/dist/tabs.min.js +2 -2
- package/dist/tag.min.js +2 -2
- package/dist/tearsheet.min.js +2 -2
- package/dist/{text-input-CH2K_Vha.js → text-input-C0qeKR9e.js} +2 -2
- package/dist/text-input.min.js +2 -2
- package/dist/textarea.min.js +2 -2
- package/dist/tile.min.js +2 -2
- package/dist/time-picker.min.js +2 -2
- package/dist/toggle-tip.min.js +2 -2
- package/dist/toggle.min.js +2 -2
- package/dist/{tooltip-content-DMy2swEb.js → tooltip-content-CMbdEoxb.js} +2 -2
- package/dist/tooltip.min.js +2 -2
- package/dist/tree-view.min.js +2 -2
- package/dist/ui-shell.min.js +2 -2
- package/dist/{unsafe-html-DVA3vXNw.js → unsafe-html-Dqv0UqC_.js} +2 -2
- package/es/components/ai-label/ai-label.scss.js +1 -1
- package/es/components/ai-skeleton/ai-skeleton.scss.js +1 -1
- package/es/components/data-table/table.js +2 -2
- package/es/components/data-table/table.js.map +1 -1
- package/es/components/icon-button/icon-button.scss.js +1 -1
- package/es/components/modal/modal.scss.js +1 -1
- package/es/components/pagination/pagination.scss.js +1 -1
- package/es/components/popover/popover-content.d.ts +1 -1
- package/es/components/popover/popover-content.js +13 -15
- package/es/components/popover/popover-content.js.map +1 -1
- package/es/components/popover/popover.d.ts +18 -0
- package/es/components/popover/popover.js +80 -6
- package/es/components/popover/popover.js.map +1 -1
- package/es/components/popover/popover.scss.js +1 -1
- package/es/components/slug/slug.scss.js +1 -1
- package/es/components/toggle-tip/toggletip.scss.js +1 -1
- package/es/components/tooltip/tooltip.scss.js +1 -1
- package/es/globals/controllers/floating-controller.d.ts +4 -1
- package/es/globals/controllers/floating-controller.js +62 -10
- package/es/globals/controllers/floating-controller.js.map +1 -1
- package/es-custom/components/ai-label/ai-label.scss.js +1 -1
- package/es-custom/components/ai-skeleton/ai-skeleton.scss.js +1 -1
- package/es-custom/components/data-table/table.js +2 -2
- package/es-custom/components/data-table/table.js.map +1 -1
- package/es-custom/components/icon-button/icon-button.scss.js +1 -1
- package/es-custom/components/modal/modal.scss.js +1 -1
- package/es-custom/components/pagination/pagination.scss.js +1 -1
- package/es-custom/components/popover/popover-content.d.ts +1 -1
- package/es-custom/components/popover/popover-content.js +13 -15
- package/es-custom/components/popover/popover-content.js.map +1 -1
- package/es-custom/components/popover/popover.d.ts +18 -0
- package/es-custom/components/popover/popover.js +80 -6
- package/es-custom/components/popover/popover.js.map +1 -1
- package/es-custom/components/popover/popover.scss.js +1 -1
- package/es-custom/components/slug/slug.scss.js +1 -1
- package/es-custom/components/toggle-tip/toggletip.scss.js +1 -1
- package/es-custom/components/tooltip/tooltip.scss.js +1 -1
- package/es-custom/globals/controllers/floating-controller.d.ts +4 -1
- package/es-custom/globals/controllers/floating-controller.js +62 -10
- package/es-custom/globals/controllers/floating-controller.js.map +1 -1
- package/lib/components/popover/popover-content.d.ts +1 -1
- package/lib/components/popover/popover.d.ts +18 -0
- package/lib/globals/controllers/floating-controller.d.ts +4 -1
- package/lib/globals/controllers/floating-controller.js +61 -9
- package/lib/globals/controllers/floating-controller.js.map +1 -1
- package/package.json +3 -3
- package/scss/components/ai-skeleton/ai-skeleton.scss +14 -0
- package/scss/components/popover/popover-story.scss +2 -1
- package/scss/components/popover/popover.scss +149 -14
- package/telemetry.yml +1 -0
- package/dist/floating-controller-DjEAkoHn.js +0 -28
- package/dist/{16-fd4Ivo6o.js → 16-B3Yskhl0.js} +1 -1
- package/dist/{16-Bf5-IrA2.js → 16-B46MLj4i.js} +1 -1
- package/dist/{16-BZ-sICMc.js → 16-B7MRS_3W.js} +1 -1
- package/dist/{16-BKRNDebk.js → 16-BWlgPBcu.js} +1 -1
- package/dist/{16-5IO66qZv.js → 16-Bf2P7KMJ.js} +1 -1
- package/dist/{16-BplvdDlD.js → 16-Bxm7Omxq.js} +1 -1
- package/dist/{16-Ctf1-GU4.js → 16-CJNlj_0b.js} +1 -1
- package/dist/{16-DszCKQWk.js → 16-CdxGkvXO.js} +1 -1
- package/dist/{16-Cl1JRwhU.js → 16-DTvjc9uv.js} +1 -1
- package/dist/{16-B5nukGIX.js → 16-DhAznVKm.js} +1 -1
- package/dist/{16-BZbjCIdx.js → 16-DoN7q01_.js} +1 -1
- package/dist/{16-DussDP25.js → 16-GKRs-ALp.js} +1 -1
- package/dist/{20-BHvYOxYo.js → 20-CuEbZLGA.js} +1 -1
- package/dist/{20-dwKc_1p5.js → 20-DlknbFYR.js} +1 -1
- package/dist/{carbon-element-BZWjx64-.js → carbon-element-DDrYm3XO.js} +1 -1
- package/dist/{collection-helpers-CcXpRZP7.js → collection-helpers-_CvqQaiX.js} +1 -1
- package/dist/{consume-D8po478F.js → consume-BeeFGGfo.js} +1 -1
- package/dist/{directive-Dkgne8TP.js → directive-Dlo2OKiC.js} +1 -1
- package/dist/{host-listener-CEVyo9Gf.js → host-listener-BCnAWDV7.js} +1 -1
- package/dist/{lit-element-D-2dOK7a.js → lit-element-eFlPHqE1.js} +1 -1
- package/dist/{on-Dx8_n3Zi.js → on-DvnWS_DB.js} +1 -1
- package/dist/{query-BMt73bSi.js → query-BdmT5Ln1.js} +1 -1
- package/dist/{radio-group-manager-BFkEoNf7.js → radio-group-manager-B_pENWmT.js} +1 -1
- package/dist/{settings-1amR4med.js → settings-BBN_bDP6.js} +1 -1
- package/dist/{shared-enums-HvMnAeAT.js → shared-enums-D8TrS6Ts.js} +1 -1
- 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,
|
|
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,
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
(
|
|
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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"}
|