Skip to content

Commit

Permalink
Rollup merge of rust-lang#66123 - GuillaumeGomez:no-more-hidden-eleme…
Browse files Browse the repository at this point in the history
…nts, r=Dylan-DPC

No more hidden elements

Fixes rust-lang#66046.

Follow-up of rust-lang#66082.

r? @kinnison
  • Loading branch information
JohnTitor committed Nov 8, 2019
2 parents 996d94a + d4527b7 commit 392ebad
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 15 deletions.
62 changes: 51 additions & 11 deletions src/librustdoc/html/static/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

// Local js definitions:
/* global addClass, getCurrentValue, hasClass */
/* global isHidden, onEach, removeClass, updateLocalStorage */
/* global onEach, removeClass, updateLocalStorage */

if (!String.prototype.startsWith) {
String.prototype.startsWith = function(searchString, position) {
Expand Down Expand Up @@ -161,17 +161,18 @@ function getSearchElement() {
return window.history && typeof window.history.pushState === "function";
}

function isHidden(elem) {
return elem.offsetHeight === 0;
}

var main = document.getElementById("main");
var savedHash = "";

function onHashChange(ev) {
// If we're in mobile mode, we should hide the sidebar in any case.
hideSidebar();
var match = window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/);
if (match) {
return highlightSourceLines(match, ev);
}
function handleHashes(ev) {
var search = getSearchElement();
if (ev !== null && search && !hasClass(search, "hidden") && ev.newURL) {
// This block occurs when clicking on an element in the navbar while
// in a search.
addClass(search, "hidden");
removeClass(main, "hidden");
var hash = ev.newURL.slice(ev.newURL.indexOf("#") + 1);
Expand All @@ -183,6 +184,35 @@ function getSearchElement() {
elem.scrollIntoView();
}
}
// This part is used in case an element is not visible.
if (savedHash !== window.location.hash) {
savedHash = window.location.hash;
if (savedHash.length === 0) {
return;
}
var elem = document.getElementById(savedHash.slice(1)); // we remove the '#'
if (!elem || !isHidden(elem)) {
return;
}
var parent = elem.parentNode;
if (parent && hasClass(parent, "impl-items")) {
// In case this is a trait implementation item, we first need to toggle
// the "Show hidden undocumented items".
onEachLazy(parent.getElementsByClassName("collapsed"), function(e) {
if (e.parentNode === parent) {
// Only click on the toggle we're looking for.
e.click();
return true;
}
});
if (isHidden(elem)) {
// The whole parent is collapsed. We need to click on its toggle as well!
if (hasClass(parent.lastElementChild, "collapse-toggle")) {
parent.lastElementChild.click();
}
}
}
}
}

function highlightSourceLines(match, ev) {
Expand Down Expand Up @@ -228,6 +258,16 @@ function getSearchElement() {
}
}

function onHashChange(ev) {
// If we're in mobile mode, we should hide the sidebar in any case.
hideSidebar();
var match = window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/);
if (match) {
return highlightSourceLines(match, ev);
}
handleHashes(ev);
}

function expandSection(id) {
var elem = document.getElementById(id);
if (elem && isHidden(elem)) {
Expand All @@ -246,9 +286,6 @@ function getSearchElement() {
}
}

highlightSourceLines();
window.onhashchange = onHashChange;

// Gets the human-readable string for the virtual-key code of the
// given KeyboardEvent, ev.
//
Expand Down Expand Up @@ -2639,6 +2676,9 @@ function getSearchElement() {
insertAfter(popup, getSearchElement());
}

onHashChange();
window.onhashchange = onHashChange;

buildHelperPopup();
}());

Expand Down
4 changes: 0 additions & 4 deletions src/librustdoc/html/static/storage.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,6 @@ function removeClass(elem, className) {
elem.classList.remove(className);
}

function isHidden(elem) {
return elem.offsetParent === null;
}

function onEach(arr, func, reversed) {
if (arr && arr.length > 0 && func) {
var length = arr.length;
Expand Down

0 comments on commit 392ebad

Please sign in to comment.