03d621cbff
Update the online documentation template with following fixes: - Improve responsivess for narrow screens: TOC and sidebar now collapse into drop-down menus - React to hashchange events: When the user edits the anchor tag in URL and presses enter, the page is scrolled correctly to bring the selected section title into view. - Handle Ctrl and Meta keys correctly - Improve colors for target section highlighting - Minor CSS fixes Task-number: QTWEBSITE-634 Task-number: QTWEBSITE-657 Change-Id: I7221f38cf4988497f0f24ee66e62b7b7d770a121 Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
81 lines
2.5 KiB
JavaScript
81 lines
2.5 KiB
JavaScript
var vOffset_init = 65;
|
|
var vOffset = vOffset_init;
|
|
var c = 'collapsed';
|
|
|
|
function toggleList(toggle, content, maxItems) {
|
|
if (toggle.css('display') == 'none') {
|
|
vOffset = vOffset_init;
|
|
toggle.removeClass(c);
|
|
content.show();
|
|
return;
|
|
} else
|
|
vOffset = 8;
|
|
|
|
if (maxItems > content.children().length)
|
|
return;
|
|
content.hide();
|
|
toggle.addClass(c);
|
|
}
|
|
|
|
$(function () {
|
|
$('a[href*=#]:not([href=#])').on('click', function (e) {
|
|
if (e.which == 2 || e.metaKey || e.ctrlKey || e.shiftKey)
|
|
return true;
|
|
var target = $(this.hash.replace(/(\.)/g, "\\$1"));
|
|
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
|
|
if (target.length) {
|
|
setTimeout(function () {
|
|
$('html, body').animate({scrollTop: target.offset().top - vOffset}, 50);}, 50);
|
|
}
|
|
});
|
|
});
|
|
|
|
$(window).load(function () {
|
|
var hashChanged = function() {
|
|
var h = window.location.hash;
|
|
var re = /[^a-z0-9_\.\#\-]/i
|
|
if (h.length > 1 && !re.test(h)) {
|
|
setTimeout(function () {
|
|
var tgt = $(h.replace(/(\.)/g, "\\$1"));
|
|
tgt = tgt.length ? tgt : $('[name=' + h.slice(1) + ']');
|
|
$(window).scrollTop(tgt.offset().top - vOffset);
|
|
}, 0);
|
|
}
|
|
}
|
|
$(window).bind('hashchange', hashChanged);
|
|
hashChanged.call();
|
|
|
|
if (!$('.sidebar toc').is(':empty')) {
|
|
$('<div id="toc-toggle"></div>').prependTo('.sidebar .toc');
|
|
var toc = $('.sidebar .toc ul');
|
|
var tocToggle = $('#toc-toggle');
|
|
var tocCallback = function() { toggleList(tocToggle, toc, 4); };
|
|
|
|
$('#toc-toggle').on('click', function(e) {
|
|
e.stopPropagation();
|
|
toc.toggle();
|
|
tocToggle.toggleClass(c);
|
|
});
|
|
|
|
tocCallback.call();
|
|
$(window).resize(tocCallback);
|
|
}
|
|
|
|
if (!$('#sidebar-content').is(':empty')) {
|
|
$('#sidebar-content h2').first().clone().prependTo('#sidebar-content');
|
|
$('<div id="sidebar-toggle"></div>').prependTo('#sidebar-content');
|
|
var sb = $('#sidebar-content .sectionlist');
|
|
var sbToggle = $('#sidebar-toggle');
|
|
var sbCallback = function() { toggleList(sbToggle, sb, 0); };
|
|
|
|
$('#sidebar-toggle').on('click', function(e) {
|
|
e.stopPropagation();
|
|
sb.toggle();
|
|
sbToggle.toggleClass(c);
|
|
});
|
|
|
|
sbCallback.call();
|
|
$(window).resize(sbCallback);
|
|
}
|
|
});
|