qt5base-lts/doc/global/template/scripts/extras.js
Topi Reinio 03d621cbff Doc: Update online documentation template
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>
2015-08-26 09:45:55 +00:00

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);
}
});