Skip to content

Commit 323fd3a

Browse files
committed
Fix issue with clicking docs in the sidebar
When the user clicks on the docs for a package within the Core collection, the purpose group that it’s in (e.g. Observables) shouldn’t expand automatically. This fixes an issue where sections were expanding automatically when they shouldn’t, which fixed the issue with docs pages not loading correctly. Fixes canjs/canjs#4075
1 parent a62b492 commit 323fd3a

File tree

3 files changed

+31
-5
lines changed

3 files changed

+31
-5
lines changed

sidebar/page-model.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ var PageModel = DefineMap.extend({
7676
localStorage.setItem(storageKey, true);
7777
}
7878
},
79+
collection: 'string',
7980
description: 'string',
8081
descriptionWithoutHTML: {
8182
get: function() {
@@ -129,9 +130,25 @@ var PageModel = DefineMap.extend({
129130
return ['group', 'prototype', 'static'].indexOf(this.type) !== -1;
130131
}
131132
},
133+
isInCoreCollection: {
134+
type: 'boolean',
135+
default: false,
136+
get: function() {
137+
var collection = this.collection;
138+
if (!collection) {
139+
// Walk up the parents to find the collection
140+
var parent = this.parentPage;
141+
while (parent) {
142+
collection = parent.collection;
143+
parent = (collection) ? null : parent.parentPage;
144+
}
145+
}
146+
return collection === 'can-core';
147+
}
148+
},
132149
name: {
133150
type: 'string',
134-
value: ''
151+
default: ''
135152
},
136153
order: 'number',
137154
parent: 'string',
@@ -232,7 +249,7 @@ var PageModel = DefineMap.extend({
232249
title: 'string',
233250
type: 'string',
234251
unsortedChildren: {
235-
value: function() {
252+
default: function() {
236253
return [];
237254
}
238255
},

sidebar/sidebar.viewmodel.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ module.exports = DefineMap.extend({
3030
},
3131
pageMap: {
3232
type: 'any',
33-
value: function() {
33+
default: function() {
3434
return {};
3535
}
3636
},
3737
pathPrefix: {
3838
type: 'string',
39-
value: '',
39+
default: '',
4040
set: function(pathPrefix) {
4141
if (pathPrefix) {
4242
if (pathPrefix.substr(-1) !== '/') {
@@ -99,7 +99,7 @@ module.exports = DefineMap.extend({
9999
if (selectedPage.isCollapsed && selectedPage.visibleChildren.length === 0) {
100100
selectedPage.isCollapsed = false;
101101

102-
} else if (selectedPage.collection !== 'can-core') {
102+
} else if (!selectedPage.isInCoreCollection) {
103103
// If the page is not in the core collection, walk up the parents to
104104
// make sure they are not collapsed.
105105
var parent = (selectedPage) ? selectedPage.parentPage : null;

sidebar/test.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,15 @@ QUnit.test('When a Core package is selected, its parent should not automatically
184184
assert.ok(vm.shouldShowExpandCollapseButton(canObservablesPage), 'expand/collapse button is shown');
185185
});
186186

187+
QUnit.test('When a child page of a Core package is selected, the package’s group should not automatically be expanded', function(assert) {
188+
var vm = new ViewModel({searchMap: searchMap});
189+
var canDefineTypesPage = vm.pageMap['can-define.types'];
190+
var canObservablesPage = canDefineTypesPage.parentPage.parentPage.parentPage;
191+
vm.selectedPage = canDefineTypesPage;
192+
assert.ok(canObservablesPage.isCollapsed, 'parent page is collapsed');
193+
assert.ok(vm.shouldShowExpandCollapseButton(canObservablesPage), 'expand/collapse button is shown');
194+
});
195+
187196
QUnit.test('When a collapsed purpose group page with no visible children is selected, it should be expanded', function(assert) {
188197
var vm = new ViewModel({searchMap: searchMap});
189198
var domUtilitiesPage = vm.pageMap['can-dom-utilities'];

0 commit comments

Comments
 (0)