[release-branch.go1.7] godoc: allow nested toggles and toggles with <a name>

Toggles can now be nested within one another. They can also be
referenced using an <a> element with the name attribute, rather than
an element with the "id" attribute.

Updates golang/go#17574.

Change-Id: I43c17499a6879e983a79a74e14c99128296288e1
Reviewed-on: https://go-review.googlesource.com/34825
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-on: https://go-review.googlesource.com/35094
Reviewed-by: Chris Broadfoot <cbro@golang.org>
This commit is contained in:
Chris Broadfoot 2017-01-05 17:20:21 -08:00
parent 05ca1f09ae
commit 9d32829149
3 changed files with 40 additions and 14 deletions

View File

@ -113,6 +113,11 @@ function generateTOC() {
function bindToggle(el) {
$('.toggleButton', el).click(function() {
if ($(this).closest(".toggle, .toggleVisible")[0] != el) {
// Only trigger the closest toggle header.
return;
}
if ($(el).is('.toggle')) {
$(el).addClass('toggleVisible').removeClass('toggle');
} else {
@ -120,6 +125,7 @@ function bindToggle(el) {
}
});
}
function bindToggles(selector) {
$(selector).each(function(i, el) {
bindToggle(el);
@ -239,10 +245,17 @@ function fixFocus() {
}
function toggleHash() {
var hash = $(window.location.hash);
if (hash.is('.toggle')) {
hash.find('.toggleButton').first().click();
// Open all of the toggles for a particular hash.
var els = $(window.location.hash + ", a[name='" + window.location.hash.substring(1) + "']");
while (els.length) {
for (var i = 0; i < els.length; i++) {
var el = $(els[i]);
if (el.is('.toggle')) {
el.find('.toggleButton').first().click();
}
}
els = el.parent();
}
}
function personalizeInstallInstructions() {

View File

@ -683,6 +683,11 @@ function generateTOC() {
function bindToggle(el) {
$('.toggleButton', el).click(function() {
if ($(this).closest(".toggle, .toggleVisible")[0] != el) {
// Only trigger the closest toggle header.
return;
}
if ($(el).is('.toggle')) {
$(el).addClass('toggleVisible').removeClass('toggle');
} else {
@ -690,6 +695,7 @@ function bindToggle(el) {
}
});
}
function bindToggles(selector) {
$(selector).each(function(i, el) {
bindToggle(el);
@ -809,10 +815,17 @@ function fixFocus() {
}
function toggleHash() {
var hash = $(window.location.hash);
if (hash.is('.toggle')) {
hash.find('.toggleButton').first().click();
// Open all of the toggles for a particular hash.
var els = $(window.location.hash + ", a[name='" + window.location.hash.substring(1) + "']");
while (els.length) {
for (var i = 0; i < els.length; i++) {
var el = $(els[i]);
if (el.is('.toggle')) {
el.find('.toggleButton').first().click();
}
}
els = el.parent();
}
}
function personalizeInstallInstructions() {
@ -3248,10 +3261,10 @@ div#blog .read {
}
.toggleButton { cursor: pointer; }
.toggle .collapsed { display: block; }
.toggle .expanded { display: none; }
.toggleVisible .collapsed { display: none; }
.toggleVisible .expanded { display: block; }
.toggle > .collapsed { display: block; }
.toggle > .expanded { display: none; }
.toggleVisible > .collapsed { display: none; }
.toggleVisible > .expanded { display: block; }
table.codetable { margin-left: auto; margin-right: auto; border-style: none; }
table.codetable td { padding-right: 10px; }

View File

@ -445,10 +445,10 @@ div#blog .read {
}
.toggleButton { cursor: pointer; }
.toggle .collapsed { display: block; }
.toggle .expanded { display: none; }
.toggleVisible .collapsed { display: none; }
.toggleVisible .expanded { display: block; }
.toggle > .collapsed { display: block; }
.toggle > .expanded { display: none; }
.toggleVisible > .collapsed { display: none; }
.toggleVisible > .expanded { display: block; }
table.codetable { margin-left: auto; margin-right: auto; border-style: none; }
table.codetable td { padding-right: 10px; }