Skip to content

Commit c5afe20

Browse files
Merge pull request ember-learn#612 from dbendaou/removing_jquery_usage_from_app
Removing jQuery usage from app
2 parents 1f3671d + 13ef7f2 commit c5afe20

File tree

4 files changed

+23
-13
lines changed

4 files changed

+23
-13
lines changed

app/components/ember-anchor.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
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';
4+
import getOffset from 'ember-api-docs/utils/get-offset';
55

66
export default AnchorComponent.extend({
7-
87
// This overrides Ember Anchor to support scrolling within a fixed position element
98
_scrollToElemPosition() {
109
let qp = this.anchorQueryParam;
1110
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;
14-
if (offset) {
15-
$(config.APP.scrollContainerSelector).scrollTop(offset);
11+
let elem = document.querySelector(`[data-${qp}="${qpVal}"]`);
12+
13+
if (elem && elem.offsetHeight) {
14+
const offsetToScroll = getOffset(elem, config.APP.scrollContainerSelector)
15+
document.querySelector(config.APP.scrollContainerSelector).scrollTo(0, offsetToScroll);
1616
}
1717
}
1818
});

app/mixins/scroll-tracker.js

Lines changed: 6 additions & 5 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,11 @@ 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;
20-
if (offset) {
21-
$(config.APP.scrollContainerSelector).scrollTop(offset - 10);
18+
let elem = document.querySelector('#methods');
19+
20+
if (elem && elem.offsetHeight) {
21+
const offsetToScroll = getOffset(elem, config.APP.scrollContainerSelector)
22+
document.querySelector(config.APP.scrollContainerSelector).scrollTo(0, offsetToScroll - 10);
2223
return;
2324
}
2425
}

app/services/scroll-position-reset.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import Service from '@ember/service';
2-
import $ from 'jquery';
32
import config from 'ember-api-docs/config/environment';
43

54
const { scrollContainerSelector } = config.APP;
@@ -27,7 +26,8 @@ export default Service.extend({
2726

2827
doReset() {
2928
if (this._shouldResetScroll) {
30-
$(scrollContainerSelector).scrollTop(0);
29+
const selector = document.querySelector(scrollContainerSelector);
30+
selector.scrollTo(0,0);
3131
this.set('_shouldResetScroll', false);
3232
}
3333
}

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)