Skip to content

Commit 826d2ea

Browse files
committed
♻️ refact to extract offset logic in utils
1 parent 04dfa93 commit 826d2ea

File tree

3 files changed

+17
-15
lines changed

3 files changed

+17
-15
lines changed

app/components/ember-anchor.js

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,9 @@
11
import { get } from '@ember/object';
22
import AnchorComponent from 'ember-anchor/components/ember-anchor';
33
import config from 'ember-api-docs/config/environment';
4+
import getOffset from 'ember-api-docs/utils/get-offset';
45

56
export default AnchorComponent.extend({
6-
getOffset(element, container) {
7-
let offsetTop = element.offsetTop;
8-
let parent = element.offsetParent;
9-
while (parent != null && parent != container) {
10-
offsetTop += parent.offsetTop;
11-
parent = parent.offsetParent;
12-
}
13-
return offsetTop;
14-
},
15-
167
// This overrides Ember Anchor to support scrolling within a fixed position element
178
_scrollToElemPosition() {
189
let qp = this.anchorQueryParam;
@@ -21,7 +12,7 @@ export default AnchorComponent.extend({
2112
let offset = elem.offsetHeight ? elem.offsetHeight : 0;
2213

2314
if (offset) {
24-
const offsetTop = this.getOffset(elem, config.APP.scrollContainerSelector)
15+
const offsetTop = getOffset(elem, config.APP.scrollContainerSelector)
2516
document.querySelector(config.APP.scrollContainerSelector).scrollTo(0, offsetTop);
2617
}
2718
}

app/mixins/scroll-tracker.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import Mixin from '@ember/object/mixin';
22
import { inject as service } from '@ember/service';
3-
import $ from 'jquery';
43
import config from 'ember-api-docs/config/environment';
4+
import getOffset from 'ember-api-docs/utils/get-offset';
55

66
export default Mixin.create({
77

@@ -15,10 +15,12 @@ export default Mixin.create({
1515
didTransition() {
1616
this._super();
1717
if ((typeof FastBoot === 'undefined') && window.location.search === '?anchor=' ) {
18-
let elem = $('#methods');
19-
let offset = elem.offset() ? elem.offset().top : 0;
18+
let elem = document.querySelector('#methods');
19+
let offset = elem.offsetHeight ? elem.offsetHeight : 0;
20+
2021
if (offset) {
21-
$(config.APP.scrollContainerSelector).scrollTop(offset - 10);
22+
const offsetTop = getOffset(elem, config.APP.scrollContainerSelector)
23+
document.querySelector(config.APP.scrollContainerSelector).scrollTo(0, offsetTop - 10);
2224
return;
2325
}
2426
}

app/utils/get-offset.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
export default function getOffset(element, container) {
2+
let offsetTop = element.offsetTop;
3+
let parent = element.offsetParent;
4+
while (parent != null && parent != container) {
5+
offsetTop += parent.offsetTop;
6+
parent = parent.offsetParent;
7+
}
8+
return offsetTop;
9+
}

0 commit comments

Comments
 (0)