Skip to content

Commit 22dc3b9

Browse files
authored
Fix left absolutePosition computation in DomHandler (#7902)
1 parent 4f0edd9 commit 22dc3b9

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

components/lib/utils/DomHandler.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -379,12 +379,19 @@ export default class DomHandler {
379379
}
380380

381381
const targetOffsetPx = targetOffset.left;
382-
const alignOffset = align === 'left' ? 0 : elementOuterWidth - targetOuterWidth;
383382

384-
if (targetOffsetPx + targetOuterWidth + elementOuterWidth > viewport.width) {
385-
left = Math.max(0, targetOffsetPx + windowScrollLeft + targetOuterWidth - elementOuterWidth);
383+
if (align === 'left') {
384+
if (targetOffsetPx + elementOuterWidth > viewport.width) {
385+
left = Math.max(0, targetOffsetPx + windowScrollLeft + targetOuterWidth - elementOuterWidth);
386+
} else {
387+
left = targetOffsetPx + windowScrollLeft;
388+
}
386389
} else {
387-
left = targetOffsetPx - alignOffset + windowScrollLeft;
390+
if (targetOffsetPx + targetOuterWidth - elementOuterWidth < 0) {
391+
left = windowScrollLeft;
392+
} else {
393+
left = targetOffsetPx + targetOuterWidth - elementOuterWidth + windowScrollLeft;
394+
}
388395
}
389396

390397
element.style.top = top + 'px';

0 commit comments

Comments
 (0)