mirror of
https://github.com/ruby/ruby.git
synced 2025-08-24 13:34:17 +02:00

(https://github.com/ruby/rdoc/pull/1236)
Found this issue when I was debugging the navigation toggle. I noticed
it first in the chrome dev tools, but it was also reproducible on
an iPad Pro.
Symptom:
- On iPad Pro, the navigation section is hidden but there's enough
space to show it. Making the user have to click the hamburger
button to show it but it's not necessary to hide the navigation
section.
- On desktop, the navigation section is shown.
- On mobile, the navigation section is hidden until the hamburger
button is clicked.
Fix:
- The javascript code was matching 1024px instead of 1023px. The media
sections of the css was altering the layout on 1024px. So ipad got
the full desktop layout but the navigation section was hidden.
1794e59755
114 lines
3.1 KiB
JavaScript
114 lines
3.1 KiB
JavaScript
/**
|
|
*
|
|
* Darkfish Page Functions
|
|
* $Id: darkfish.js 53 2009-01-07 02:52:03Z deveiant $
|
|
*
|
|
* Author: Michael Granger <mgranger@laika.com>
|
|
*
|
|
*/
|
|
|
|
/* Provide console simulation for firebug-less environments */
|
|
/*
|
|
if (!("console" in window) || !("firebug" in console)) {
|
|
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
|
|
"group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
|
|
|
|
window.console = {};
|
|
for (var i = 0; i < names.length; ++i)
|
|
window.console[names[i]] = function() {};
|
|
};
|
|
*/
|
|
|
|
|
|
function showSource( e ) {
|
|
var target = e.target;
|
|
while (!target.classList.contains('method-detail')) {
|
|
target = target.parentNode;
|
|
}
|
|
if (typeof target !== "undefined" && target !== null) {
|
|
target = target.querySelector('.method-source-code');
|
|
}
|
|
if (typeof target !== "undefined" && target !== null) {
|
|
target.classList.toggle('active-menu')
|
|
}
|
|
};
|
|
|
|
function hookSourceViews() {
|
|
document.querySelectorAll('.method-source-toggle').forEach(function (codeObject) {
|
|
codeObject.addEventListener('click', showSource);
|
|
});
|
|
};
|
|
|
|
function hookSearch() {
|
|
var input = document.querySelector('#search-field');
|
|
var result = document.querySelector('#search-results');
|
|
result.classList.remove("initially-hidden");
|
|
|
|
var search_section = document.querySelector('#search-section');
|
|
search_section.classList.remove("initially-hidden");
|
|
|
|
var search = new Search(search_data, input, result);
|
|
|
|
search.renderItem = function(result) {
|
|
var li = document.createElement('li');
|
|
var html = '';
|
|
|
|
// TODO add relative path to <script> per-page
|
|
html += '<p class="search-match"><a href="' + index_rel_prefix + this.escapeHTML(result.path) + '">' + this.hlt(result.title);
|
|
if (result.params)
|
|
html += '<span class="params">' + result.params + '</span>';
|
|
html += '</a>';
|
|
|
|
|
|
if (result.namespace)
|
|
html += '<p class="search-namespace">' + this.hlt(result.namespace);
|
|
|
|
if (result.snippet)
|
|
html += '<div class="search-snippet">' + result.snippet + '</div>';
|
|
|
|
li.innerHTML = html;
|
|
|
|
return li;
|
|
}
|
|
|
|
search.select = function(result) {
|
|
window.location.href = result.firstChild.firstChild.href;
|
|
}
|
|
|
|
search.scrollIntoView = search.scrollInWindow;
|
|
};
|
|
|
|
function hookFocus() {
|
|
document.addEventListener("keydown", (event) => {
|
|
if (document.activeElement.tagName === 'INPUT') {
|
|
return;
|
|
}
|
|
if (event.key === "/") {
|
|
event.preventDefault();
|
|
document.querySelector('#search-field').focus();
|
|
}
|
|
});
|
|
}
|
|
|
|
function hookSidebar() {
|
|
var navigation = document.querySelector('#navigation');
|
|
var navigationToggle = document.querySelector('#navigation-toggle');
|
|
|
|
navigationToggle.addEventListener('click', function() {
|
|
navigation.hidden = !navigation.hidden;
|
|
navigationToggle.ariaExpanded = navigationToggle.ariaExpanded !== 'true';
|
|
});
|
|
|
|
var isSmallViewport = window.matchMedia("(max-width: 1023px)").matches;
|
|
if (isSmallViewport) {
|
|
navigation.hidden = true;
|
|
navigationToggle.ariaExpanded = false;
|
|
}
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
hookSourceViews();
|
|
hookSearch();
|
|
hookFocus();
|
|
hookSidebar();
|
|
});
|