From acd5e8cd4e6aedaeb2718ee8b6c445b7ff4c5f60 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Mon, 6 Nov 2017 21:14:37 +0100 Subject: [PATCH 1/3] Fix navbar click while in a search --- src/librustdoc/html/static/main.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index b1120e0af3894..2abc8f7eb6ad0 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -122,6 +122,7 @@ } function highlightSourceLines(ev) { + var search = document.getElementById("search"); var i, from, to, match = window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/); if (match) { from = parseInt(match[1], 10); @@ -145,6 +146,14 @@ for (i = from; i <= to; ++i) { addClass(document.getElementById(i), 'line-highlighted'); } + } else if (ev !== null && search && !hasClass(search, "hidden") && ev.newURL) { + addClass(search, "hidden"); + removeClass(document.getElementById("main"), "hidden"); + var hash = ev.newURL.slice(ev.newURL.indexOf('#') + 1); + var elem = document.getElementById(hash); + if (elem) { + elem.scrollIntoView(); + } } } highlightSourceLines(null); From 72338b8ccbf01ca0f76f5b67749c15d6052830b1 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Fri, 10 Nov 2017 19:40:46 +0100 Subject: [PATCH 2/3] Allow to go back to previous search --- src/librustdoc/html/static/main.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index 2abc8f7eb6ad0..150b083219ba1 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -150,6 +150,9 @@ addClass(search, "hidden"); removeClass(document.getElementById("main"), "hidden"); var hash = ev.newURL.slice(ev.newURL.indexOf('#') + 1); + if (browserSupportsHistoryApi()) { + history.replaceState(hash, "", "#" + hash); + } var elem = document.getElementById(hash); if (elem) { elem.scrollIntoView(); @@ -1560,6 +1563,17 @@ }); } }); + + var search_input = document.getElementsByClassName("search-input")[0]; + + if (search_input) { + search_input.onfocus = function() { + if (search.value !== "") { + addClass(document.getElementById("main"), "hidden"); + removeClass(document.getElementById("search"), "hidden"); + } + }; + } }()); // Sets the focus on the search bar at the top of the page From 0d898998b1c67cef158fb8cec474162a205fc7c8 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Fri, 10 Nov 2017 23:47:36 +0100 Subject: [PATCH 3/3] Few improvements on search, history and title --- src/librustdoc/html/static/main.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index 150b083219ba1..c6bb622373a98 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -52,14 +52,14 @@ var start = elemClass.indexOf(className); if (start == -1) { return false; - } else if (elemClass.length == className.length) { + } else if (elemClass.length === className.length) { return true; } else { - if (start > 0 && elemClass[start - 1] != ' ') { + if (start > 0 && elemClass[start - 1] !== ' ') { return false; } var end = start + className.length; - if (end < elemClass.length && elemClass[end] != ' ') { + if (end < elemClass.length && elemClass[end] !== ' ') { return false; } return true; @@ -151,7 +151,7 @@ removeClass(document.getElementById("main"), "hidden"); var hash = ev.newURL.slice(ev.newURL.indexOf('#') + 1); if (browserSupportsHistoryApi()) { - history.replaceState(hash, "", "#" + hash); + history.replaceState(hash, "", "?search=#" + hash); } var elem = document.getElementById(hash); if (elem) { @@ -1568,9 +1568,14 @@ if (search_input) { search_input.onfocus = function() { - if (search.value !== "") { + if (search_input.value !== "") { addClass(document.getElementById("main"), "hidden"); removeClass(document.getElementById("search"), "hidden"); + if (browserSupportsHistoryApi()) { + history.replaceState(search_input.value, + "", + "?search=" + encodeURIComponent(search_input.value)); + } } }; }