Skip to content

Commit 04dfa93

Browse files
committed
🔥 get ride of jQuery usage in ember-anchor component
1 parent 40c5267 commit 04dfa93

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

‎app/components/ember-anchor.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,28 @@
1-
import $ from 'jquery';
21
import { get } from '@ember/object';
32
import AnchorComponent from 'ember-anchor/components/ember-anchor';
43
import config from 'ember-api-docs/config/environment';
54

65
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+
},
715

816
// This overrides Ember Anchor to support scrolling within a fixed position element
917
_scrollToElemPosition() {
1018
let qp = this.anchorQueryParam;
1119
let qpVal = this.get(get(this, 'attrs.a') ? 'a' : `controller.${qp}`);
12-
let elem = $(`[data-${qp}="${qpVal}"]`);
13-
let offset = elem.offset() ? elem.offset().top : 0;
20+
let elem = document.querySelector(`[data-${qp}="${qpVal}"]`);
21+
let offset = elem.offsetHeight ? elem.offsetHeight : 0;
22+
1423
if (offset) {
15-
$(config.APP.scrollContainerSelector).scrollTop(offset);
24+
const offsetTop = this.getOffset(elem, config.APP.scrollContainerSelector)
25+
document.querySelector(config.APP.scrollContainerSelector).scrollTo(0, offsetTop);
1626
}
1727
}
1828
});

0 commit comments

Comments
 (0)