Skip to content

Commit 6842c54

Browse files
committed
Replace jQuery animation for table of contents and remove jQuery package
1 parent b850915 commit 6842c54

File tree

6 files changed

+89
-21
lines changed

6 files changed

+89
-21
lines changed

app/components/table-of-contents.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import Component from '@ember/component';
33
export default Component.extend({
44
actions: {
55
toggle(type) {
6-
this.$('ol.toc-level-1.' + type).slideToggle(200);
6+
const tableElement = document.querySelector(`ol.toc-level-1.${type}`);
7+
tableElement.classList.toggle('selected');
78
},
89
},
910
});

app/styles/components/_sidebar.scss

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,17 @@ li.toc-level-0 {
121121
ol.toc-level-1 {
122122
border-left: $base-border;
123123
font-size: $base-font-size * 0.9;
124+
transition: max-height 0.5s ease;
124125

125-
&:not(.selected) {
126-
display: none;
126+
&.selected{
127+
max-height: 3000px;
127128
}
128129

130+
&:not(.selected) {
131+
overflow: hidden;
132+
max-height: 0;
133+
}
134+
129135
li {
130136
border-left: 3px solid transparent;
131137
transition: border-width $duration, margin-right $duration;

app/templates/components/table-of-contents.hbs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<ol class="toc-level-0">
22
<li class="toc-level-0">
33
<a {{action 'toggle' 'modules'}} href="#">Packages</a>
4-
<ol class="toc-level-1 modules" style="display: block">
4+
<ol class="toc-level-1 modules selected">
55
{{#each moduleIDs as |moduleID|}}
66

77
{{#if (not-eq moduleID "@ember/object/computed")}}
@@ -17,7 +17,7 @@
1717
{{#if isShowingNamespaces}}
1818
<li class="toc-level-0">
1919
<a {{action 'toggle' 'namespaces'}} href="#">Namespaces</a>
20-
<ol class="toc-level-1 namespaces" style="display: block">
20+
<ol class="toc-level-1 namespaces selected">
2121
{{#each namespaceIDs as |namespaceID|}}
2222
<li class="toc-level-1" data-test-namespace={{namespaceID}}>
2323
{{#link-to 'project-version.namespaces.namespace' version namespaceID}}{{namespaceID}}{{/link-to}}
@@ -29,7 +29,7 @@
2929

3030
<li class="toc-level-0">
3131
<a {{action 'toggle' 'classes'}} href="#">Classes</a>
32-
<ol class="toc-level-1 classes" style="display: block">
32+
<ol class="toc-level-1 classes selected">
3333
{{#each classesIDs as |classID|}}
3434
<li class="toc-level-1" data-test-class={{classID}}>
3535
{{#link-to 'project-version.classes.class' version classID}}{{classID}}{{/link-to}}

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
"test:ember": "ember test"
2727
},
2828
"devDependencies": {
29-
"@ember/jquery": "^1.1.0",
3029
"@ember/optional-features": "^2.0.0",
3130
"@ember/test-helpers": "^2.2.5",
3231
"@glimmer/component": "^1.0.4",

tests/integration/components/table-of-contents-test.js

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { module, test } from 'qunit';
22
import { setupRenderingTest } from 'ember-qunit';
3-
import { render, findAll } from '@ember/test-helpers';
3+
import { render, findAll, click } from '@ember/test-helpers';
44
import hbs from 'htmlbars-inline-precompile';
55

66
module('Integration | Component | table of contents', function (hooks) {
@@ -27,4 +27,78 @@ module('Integration | Component | table of contents', function (hooks) {
2727
assert.dom(findAll('.toc-level-1 li')[0]).hasText('Descriptor');
2828
assert.dom(findAll('.toc-level-1 li')[1]).hasText('Ember');
2929
});
30+
31+
test('Starts with underlying content visible', async function (assert) {
32+
// Set any properties with this.set('myProperty', 'value');
33+
this.set('projectId', 'Ember');
34+
this.set('emberVersion', '2.4.3');
35+
36+
this.set('moduleIDs', ['@ember/application', '@ember/array']);
37+
38+
await render(hbs`{{table-of-contents showPrivateClasses=true
39+
projectid=projectId
40+
version=emberVersion
41+
moduleIDs=moduleIDs
42+
isShowingNamespaces=true
43+
}}`);
44+
45+
assert.dom(findAll('.toc-level-0 > a')[0]).hasText('Packages');
46+
assert
47+
.dom('.toc-level-1 li')
48+
.exists({ count: 2 }, 'We have two items to display');
49+
assert.dom('ol.toc-level-1').isVisible;
50+
assert.dom('.toc-level-1').hasClass('selected');
51+
assert.dom(findAll('.toc-level-1 li')[0]).hasText('@ember/application');
52+
assert.dom(findAll('.toc-level-1 li')[1]).hasText('@ember/array');
53+
});
54+
55+
test('Underlying content hides once clicked', async function (assert) {
56+
// Set any properties with this.set('myProperty', 'value');
57+
this.set('projectId', 'Ember');
58+
this.set('emberVersion', '2.4.3');
59+
60+
this.set('moduleIDs', ['@ember/application', '@ember/array']);
61+
62+
await render(hbs`{{table-of-contents showPrivateClasses=true
63+
projectid=projectId
64+
version=emberVersion
65+
moduleIDs=moduleIDs
66+
isShowingNamespaces=true
67+
}}`);
68+
69+
assert.dom(findAll('.toc-level-0 > a')[0]).hasText('Packages');
70+
assert.dom('ol.toc-level-1').isVisible;
71+
assert.dom('.toc-level-1').hasClass('selected');
72+
73+
await click(document.querySelector('.toc-level-0 > a'));
74+
assert.dom('ol.toc-level-1').isNotVisible;
75+
assert.dom('.toc-level-1').doesNotHaveClass('selected');
76+
});
77+
78+
test('Underlying content should be visible after 2 clicks', async function (assert) {
79+
// Set any properties with this.set('myProperty', 'value');
80+
this.set('projectId', 'Ember');
81+
this.set('emberVersion', '2.4.3');
82+
83+
this.set('moduleIDs', ['@ember/application', '@ember/array']);
84+
85+
await render(hbs`{{table-of-contents showPrivateClasses=true
86+
projectid=projectId
87+
version=emberVersion
88+
moduleIDs=moduleIDs
89+
isShowingNamespaces=true
90+
}}`);
91+
92+
assert.dom(findAll('.toc-level-0 > a')[0]).hasText('Packages');
93+
assert.dom('ol.toc-level-1').isVisible;
94+
assert.dom('.toc-level-1').hasClass('selected');
95+
96+
await click(document.querySelector('.toc-level-0 > a'));
97+
assert.dom('ol.toc-level-1').isNotVisible;
98+
assert.dom('.toc-level-1').doesNotHaveClass('selected');
99+
100+
await click(document.querySelector('.toc-level-0 > a'));
101+
assert.dom('ol.toc-level-1').isVisible;
102+
assert.dom('.toc-level-1').hasClass('selected');
103+
});
30104
});

yarn.lock

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1138,18 +1138,6 @@
11381138
resolved "https://registry.yarnpkg.com/@ember/edition-utils/-/edition-utils-1.2.0.tgz#a039f542dc14c8e8299c81cd5abba95e2459cfa6"
11391139
integrity sha512-VmVq/8saCaPdesQmftPqbFtxJWrzxNGSQ+e8x8LLe3Hjm36pJ04Q8LeORGZkAeOhldoUX9seLGmSaHeXkIqoog==
11401140

1141-
"@ember/jquery@^1.1.0":
1142-
version "1.1.0"
1143-
resolved "https://registry.yarnpkg.com/@ember/jquery/-/jquery-1.1.0.tgz#33d062610a5ceaa5c5c8a3187f870d47d6595940"
1144-
integrity sha512-zePT3LiK4/2bS4xafrbOlwoLJrDFseOZ95OOuVDyswv8RjFL+9lar+uxX6+jxRb0w900BcQSWP/4nuFSK6HXXw==
1145-
dependencies:
1146-
broccoli-funnel "^2.0.2"
1147-
broccoli-merge-trees "^3.0.2"
1148-
ember-cli-babel "^7.11.1"
1149-
ember-cli-version-checker "^3.1.3"
1150-
jquery "^3.4.1"
1151-
resolve "^1.11.1"
1152-
11531141
"@ember/optional-features@^2.0.0":
11541142
version "2.0.0"
11551143
resolved "https://registry.yarnpkg.com/@ember/optional-features/-/optional-features-2.0.0.tgz#c809abd5a27d5b0ef3c6de3941334ab6153313f0"
@@ -9555,7 +9543,7 @@ jquery-deferred@^0.3.0:
95559543
resolved "https://registry.yarnpkg.com/jquery-deferred/-/jquery-deferred-0.3.1.tgz#596eca1caaff54f61b110962b23cafea74c35355"
95569544
integrity sha1-WW7KHKr/VPYbEQlisjyv6nTDU1U=
95579545

9558-
jquery@^3.4.1, jquery@^3.5.1:
9546+
jquery@^3.5.1:
95599547
version "3.6.0"
95609548
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470"
95619549
integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==

0 commit comments

Comments
 (0)