From 03d621cbff392b753a4333d3a74288f0968f5148 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Wed, 20 May 2015 15:01:10 +0200 Subject: Doc: Update online documentation template MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Topi Reiniƶ --- doc/global/template/scripts/extras.js | 72 +++++++++++++++++++++++++++++++---- 1 file changed, 64 insertions(+), 8 deletions(-) (limited to 'doc/global/template/scripts') diff --git a/doc/global/template/scripts/extras.js b/doc/global/template/scripts/extras.js index 8a623a037e..ba7a4a50fb 100644 --- a/doc/global/template/scripts/extras.js +++ b/doc/global/template/scripts/extras.js @@ -1,8 +1,25 @@ -var vOffset = 65; +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) + 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) + ']'); @@ -14,11 +31,50 @@ $(function () { }); $(window).load(function () { - var h = window.location.hash; - var re = /[^a-z0-9_\.\#\-]/i - if (h.length > 1 && !re.test(h)) { - setTimeout(function () { - $(window).scrollTop($(h.replace(/(\.)/g, "\\$1")).offset().top - vOffset); - }, 0); + 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')) { + $('
').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'); + $('').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); } }); -- cgit v1.2.3