Skip to content

Commit

Permalink
Merge branch 'moghya-master'
Browse files Browse the repository at this point in the history
  • Loading branch information
kamranahmedse committed Mar 12, 2018
2 parents 83baacc + 5ea1f0d commit 7043525
Showing 1 changed file with 23 additions and 12 deletions.
35 changes: 23 additions & 12 deletions src/core/element.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,17 @@ export default class Element {
);
}

/**
* Manually scrolls to the position of element if `scrollIntoView` fails
*/
scrollManually() {
const elementRect = this.node.getBoundingClientRect();
const absoluteElementTop = elementRect.top + this.window.pageYOffset;
const middle = absoluteElementTop - (this.window.innerHeight / 2);

this.window.scrollTo(0, middle);
}

/**
* Brings the element to middle of the view port if not in view
*/
Expand All @@ -79,20 +90,20 @@ export default class Element {
return;
}

// If browser supports scrollIntoView, use that otherwise center it manually
if (this.node.scrollIntoView) {
const scrollIntoViewOptions = this.options.scrollIntoViewOptions || {
// If browser does not support scrollIntoView
if (!this.node.scrollIntoView) {
this.scrollManually();
return;
}

try {
this.node.scrollIntoView(this.options.scrollIntoViewOptions || {
behavior: 'smooth',
block: 'center',
};

this.node.scrollIntoView(scrollIntoViewOptions);
} else {
const elementRect = this.node.getBoundingClientRect();
const absoluteElementTop = elementRect.top + this.window.pageYOffset;
const middle = absoluteElementTop - (this.window.innerHeight / 2);

this.window.scrollTo(0, middle);
});
} catch (e) {
// `block` option is not allowed in older versions of firefox, scroll manually
this.scrollManually();
}
}

Expand Down

0 comments on commit 7043525

Please sign in to comment.