/** * We handle several device classes based on browser width. * * - desktop: > __tablet_width__ (as set in style.ini) * - mobile: * - tablet <= __tablet_width__ * - phone <= __phone_width__ */ var device_class = ''; // not yet known var device_classes = 'desktop mobile tablet phone'; function tpl_dokuwiki_mobile(){ // the z-index in mobile.css is (mis-)used purely for detecting the screen mode here var screen_mode = jQuery('#screen__mode').css('z-index') + ''; // determine our device pattern // TODO: consider moving into dokuwiki core switch (screen_mode) { case '1': if (device_class.match(/tablet/)) return; device_class = 'mobile tablet'; break; case '2': if (device_class.match(/phone/)) return; device_class = 'mobile phone'; break; default: if (device_class == 'desktop') return; device_class = 'desktop'; } jQuery('html').removeClass(device_classes).addClass(device_class); // handle some layout changes based on change in device var $handle = jQuery('#dokuwiki__aside h3.toggle'); var $toc = jQuery('#dw__toc h3'); if (device_class == 'desktop') { // reset for desktop mode if($handle.length) { $handle[0].setState(1); $handle.hide(); } if($toc.length) { $toc[0].setState(1); } } if (device_class.match(/mobile/)){ // toc and sidebar hiding if($handle.length) { $handle.show(); $handle[0].setState(-1); } if($toc.length) { $toc[0].setState(-1); } } } jQuery(function(){ var resizeTimer; dw_page.makeToggle('#dokuwiki__aside h3.toggle','#dokuwiki__aside div.content'); tpl_dokuwiki_mobile(); jQuery(window).on('resize', function(){ if (resizeTimer) clearTimeout(resizeTimer); resizeTimer = setTimeout(tpl_dokuwiki_mobile,200); } ); // increase sidebar length to match content (desktop mode only) var sidebar_height = jQuery('.desktop #dokuwiki__aside').height(); var pagetool_height = jQuery('.desktop #dokuwiki__pagetools ul:first').height(); // pagetools div has no height; ul has a height var content_min = Math.max(sidebar_height || 0, pagetool_height || 0); var content_height = jQuery('#dokuwiki__content div.page').height(); if(content_min && content_min > content_height) { var $content = jQuery('#dokuwiki__content div.page'); $content.css('min-height', content_min); } // blur when clicked jQuery('#dokuwiki__pagetools div.tools>ul>li>a').on('click', function(){ this.blur(); }); // enhance header search with suggestions and keyboard navigation (function enhanceSearch(){ var $input = jQuery('#qsearch__in'); var $output = jQuery('#qsearch__out'); if ($input.length === 0 || $output.length === 0) { return; } var $form = $input.closest('form'); var debounceMs = 150; var minChars = 2; var maxSuggestions = 10; var requestTimer = null; var curRequest = null; var items = []; var activeIndex = -1; var lastNavigation = null; var listId = 'qsearch__listbox'; $form .addClass('search-enhanced') .attr('autocomplete', 'off'); $input .attr('autocomplete', 'off') .attr('spellcheck', 'false') .attr('aria-autocomplete', 'list') .attr('aria-expanded', 'false') .attr('aria-controls', listId) .attr('aria-haspopup', 'listbox'); $output .attr('aria-hidden', 'true'); // remove default quicksearch handlers $input.off('keyup'); $output.off('click'); function clearActive() { activeIndex = -1; lastNavigation = null; $input.removeAttr('aria-activedescendant'); } function closeList() { if (curRequest) { curRequest.abort(); curRequest = null; } if (requestTimer) { window.clearTimeout(requestTimer); requestTimer = null; } items = []; clearActive(); $output .removeClass('is-open is-loading') .attr('aria-hidden', 'true') .hide() .empty(); $form.removeClass('is-searching'); $input.attr('aria-expanded', 'false'); } function openList() { $output .addClass('is-open') .attr('aria-hidden', 'false') .show(); $input.attr('aria-expanded', 'true'); } function renderList(content) { $output.empty().append(content); openList(); } function renderLoading() { var $list = jQuery('