Skip to content

Commit 85d3549

Browse files
committed
v13.6.2
1 parent f088915 commit 85d3549

File tree

7 files changed

+44
-26
lines changed

7 files changed

+44
-26
lines changed

build/cjs/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/esm/index.mjs

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

demo/index.html

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -326,12 +326,6 @@ <h2 class="sub-headline">
326326
}
327327

328328
</script>
329-
<script>
330-
window.intercomSettings = {
331-
api_base: "https://api-iam.intercom.io",
332-
app_id: "vm8dcoo6"
333-
};
334-
</script>
335329
</body>
336330

337331
</html>

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "gleap",
3-
"version": "13.6.1",
3+
"version": "13.6.2",
44
"main": "build/cjs/index.js",
55
"module": "build/esm/index.mjs",
66
"exports": {

published/13.6.1/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

published/latest/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/GleapTooltipManager.js

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,11 @@ export default class GleapTooltipManager {
7070
if (node.nodeType === Node.ELEMENT_NODE && this.elementToFloatingUIMap.has(node)) {
7171
const floatingUI = this.elementToFloatingUIMap.get(node);
7272
if (floatingUI) {
73-
floatingUI();
73+
if (floatingUI.tooltip) {
74+
floatingUI.tooltip.remove();
75+
}
76+
floatingUI.cleanup();
77+
7478
this.elementToFloatingUIMap.delete(node);
7579
}
7680
}
@@ -99,7 +103,7 @@ export default class GleapTooltipManager {
99103
});
100104
}
101105

102-
createTooltip(element, tooltipText) {
106+
createTooltip(element, tooltipText, tooltipData) {
103107
// Create tooltip element
104108
const tooltip = document.createElement('div');
105109
tooltip.className = 'gleap-tooltip';
@@ -118,7 +122,8 @@ export default class GleapTooltipManager {
118122
const arrowEl = tooltip.querySelector('.gleap-tooltip-arrow');
119123
const cleanup = autoUpdate(element, tooltip, () => {
120124
computePosition(element, tooltip, {
121-
middleware: [autoPlacement(), offset(10), flip(), shift(), arrow({ element: arrowEl })],
125+
placement: tooltipData.posX === 'left' ? 'left' : 'right',
126+
middleware: [offset(10), flip(), shift(), arrow({ element: arrowEl })],
122127
}).then(({ x, y, middlewareData, placement }) => {
123128
try {
124129
Object.assign(tooltip.style, {
@@ -183,7 +188,10 @@ export default class GleapTooltipManager {
183188
tooltip.addEventListener('mouseenter', show);
184189
tooltip.addEventListener('mouseleave', hide);
185190

186-
return cleanup;
191+
return {
192+
cleanup,
193+
tooltip,
194+
};
187195
}
188196

189197
canEmbed(element) {
@@ -212,7 +220,11 @@ export default class GleapTooltipManager {
212220
element.setAttribute('data-gleap-tooltip-mode', 'hotspot');
213221

214222
if (this.canEmbed(element)) {
215-
element.appendChild(hotspotContainer);
223+
if (element.firstChild) {
224+
element.insertBefore(hotspotContainer, element.firstChild);
225+
} else {
226+
element.appendChild(hotspotContainer);
227+
}
216228
} else {
217229
element.parentNode.insertBefore(hotspotContainer, element.nextSibling);
218230
}
@@ -234,7 +246,7 @@ export default class GleapTooltipManager {
234246
tooltipElem = element;
235247
}
236248

237-
const floatingUIInstance = this.createTooltip(tooltipElem, tooltip.html);
249+
const floatingUIInstance = this.createTooltip(tooltipElem, tooltip.html, tooltip);
238250

239251
this.elementToFloatingUIMap.set(element, floatingUIInstance);
240252
}
@@ -245,6 +257,16 @@ export default class GleapTooltipManager {
245257
return;
246258
}
247259

260+
const tooltipId = element.getAttribute('data-gleap-tooltip');
261+
if (!tooltipId) {
262+
return;
263+
}
264+
265+
const hotspot = document.querySelector(`[data-gleap-tooltip-hotspot="${tooltipId}"]`);
266+
if (!hotspot) {
267+
return;
268+
}
269+
248270
if (!tooltip.posX) {
249271
tooltip.posX = 'right';
250272
}
@@ -259,6 +281,12 @@ export default class GleapTooltipManager {
259281
}
260282

261283
const elementRect = element.getBoundingClientRect();
284+
const anchorElement = document.querySelector(`[data-gleap-tooltip-anchor="${tooltipId}"]`);
285+
const anchorRect = anchorElement.getBoundingClientRect();
286+
287+
// Offset calculation for hotspot position.
288+
const offsetX = anchorRect.left - elementRect.left;
289+
const offsetY = anchorRect.top - elementRect.top;
262290

263291
let top = 0;
264292
let left = 0;
@@ -285,14 +313,10 @@ export default class GleapTooltipManager {
285313
break;
286314
}
287315

288-
const tooltipId = element.getAttribute('data-gleap-tooltip');
289-
if (tooltipId) {
290-
const hotspot = document.querySelector(`[data-gleap-tooltip-hotspot="${tooltipId}"]`);
291-
if (hotspot) {
292-
hotspot.style.position = 'absolute';
293-
hotspot.style.top = top + 'px';
294-
hotspot.style.left = left + 'px';
295-
}
316+
if (hotspot) {
317+
hotspot.style.position = 'absolute';
318+
hotspot.style.top = (top - offsetY) + 'px';
319+
hotspot.style.left = (left - offsetX) + 'px';
296320
}
297321
}
298322

@@ -315,7 +339,7 @@ export default class GleapTooltipManager {
315339

316340
const filterType = tooltip.pageType;
317341
const filterValue = tooltip.page;
318-
342+
319343
switch (filterType) {
320344
case 'is':
321345
return currentUrl === filterValue;

0 commit comments

Comments
 (0)