forked from mystiq/hydrogen-web
prevent buttons with negative margin to displace message menu
This commit is contained in:
parent
b3749f2d92
commit
7f41993648
1 changed files with 12 additions and 3 deletions
|
@ -104,9 +104,10 @@ export class Popup {
|
|||
_onScroll() {
|
||||
if (this._scroller && !this._isVisibleInScrollParent(VerticalAxis)) {
|
||||
this.close();
|
||||
} else {
|
||||
this._applyArrangementAxis(HorizontalAxis, this._arrangement.horizontal);
|
||||
this._applyArrangementAxis(VerticalAxis, this._arrangement.vertical);
|
||||
}
|
||||
this._applyArrangementAxis(HorizontalAxis, this._arrangement.horizontal);
|
||||
this._applyArrangementAxis(VerticalAxis, this._arrangement.vertical);
|
||||
}
|
||||
|
||||
_onClick() {
|
||||
|
@ -190,7 +191,15 @@ function findScrollParent(el) {
|
|||
do {
|
||||
parent = parent.parentElement;
|
||||
if (parent.scrollHeight > parent.clientHeight) {
|
||||
return parent;
|
||||
// double check that overflow would allow a scrollbar
|
||||
// because some elements, like a button with negative margin to increate the click target
|
||||
// can cause the scrollHeight to be larger than the clientHeight in the parent
|
||||
// see button.link class
|
||||
const style = window.getComputedStyle(parent);
|
||||
const {overflow} = style;
|
||||
if (overflow === "auto" || overflow === "scroll") {
|
||||
return parent;
|
||||
}
|
||||
}
|
||||
} while (parent !== el.offsetParent);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue