From c6a2583846ad056de1935f5ca1179b240a049e42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jana=20Deutschla=CC=88nder?= Date: Wed, 3 May 2017 16:53:42 +0200 Subject: [PATCH] SPR-980: close meta box after click on TOC anchor --- js/base/spc.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++ js/meta-box.js | 67 ++++++++++++++++++++++++++++---------------------- 2 files changed, 100 insertions(+), 29 deletions(-) diff --git a/js/base/spc.js b/js/base/spc.js index 608ea3d..8ff1abd 100755 --- a/js/base/spc.js +++ b/js/base/spc.js @@ -195,3 +195,65 @@ } } }; + + +// + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// shuffle func for random values +// + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Array.prototype.shuffle = function(){ + var tmp, rand; + for(var i =0; i < this.length; i++){ + rand = Math.floor(Math.random() * this.length); + tmp = this[i]; + this[i] = this[rand]; + this[rand] =tmp; + } +}; + +// + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// js trim func for ie +// + + + + + + + + + + + + + + + + + + + + + + + + + + + + +if(typeof String.prototype.trim !== 'function') { + String.prototype.trim = function() { + return this.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); + }; +} + +/** + * simplify setting and getting state out of a node + * $("#my_id").data("my_data_attr") equals $$("#my_id").my_data_attr and + * $("#my_id").data("my_data_attr", "my_data_val") equals $$("#my_id").my_data_attr = my_data_val + * you can also do + * $$("#my_id").my_data_val = $$("#my_id").my_data_val + 1. + */ +var $$ = function(param) { + var node = $(param)[0]; + var id = $.data(node); + $.cache[id] = $.cache[id] || {}; + $.cache[id].node = node; + return $.cache[id]; +}; +var alertFB = false; +if (typeof console === "undefined" || typeof console.log === "undefined") { + console = {}; + if (alertFB) { + console.log = function(msg) { + alert(msg); + }; + } else { + console.log = function() {}; + } +} + +/** + * custom event handler ‘show’/’hide’ events for using .on() + */ +(function ($) { + $.each(['show', 'hide'], function (i, e) { + var el = $.fn[e]; + $.fn[e] = function () { + this.trigger(e); + return el.apply(this, arguments); + }; + }); +})(jQuery); diff --git a/js/meta-box.js b/js/meta-box.js index 238e743..c9b99aa 100755 --- a/js/meta-box.js +++ b/js/meta-box.js @@ -16,12 +16,44 @@ */ var registerClickForTabsInMetaBox = function($metaBox) { - $metaBox.on('click', '.meta-tabs a', function (e) { - e.preventDefault(); - var $tab = $(this), - isopen = $tab.attr('aria-expanded') === 'true'; + $metaBox.on('click', '.meta-tabs a', function (e) { + e.preventDefault(); + var $tab = $(this), + isopen = $tab.attr('aria-expanded') === 'true'; - // disable all existing tabs + // disable all existing tabs + disableExistingTabs($metaBox); + + + if (isopen) return; // tab was open, we closed it. we're done + + // enable current tab + $tab + .attr('aria-expanded', 'true') + .closest('li') + .addClass('active'); + $metaBox.find($tab.attr('href')) + .addClass('active') + .attr('aria-hidden', 'false'); + + }).find('.meta-content').on('click', 'a[href*="#"]', function (e) { + disableExistingTabs($metaBox); + /* uses custome event handler hide see spc.js */ + }).find('#tagging__edit').on('hide', function(e){ + disableExistingTabs($metaBox); + }); + + /** + * in admin templates show toc tab, if available + */ + if($('body').hasClass('do-admin')) { + var $tocLink = $metaBox.find('a[href="#spr__tab-toc"]'); + if($tocLink.length === 1) { + $tocLink.trigger('click'); + } + } + }, + disableExistingTabs = function($metaBox) { $metaBox.find('.meta-tabs li') .removeClass('active') .find('a') @@ -29,30 +61,7 @@ $metaBox.find('.meta-content .tab-pane') .removeClass('active') .attr('aria-hidden', 'false'); - - if (isopen) return; // tab was open, we closed it. we're done - - // enable current tab - $tab - .attr('aria-expanded', 'true') - .closest('li') - .addClass('active'); - $metaBox.find($tab.attr('href')) - .addClass('active') - .attr('aria-hidden', 'false'); - - }); - - /** - * in admin templates show toc tab, if available - */ - if($('body').hasClass('do-admin')) { - var $tocLink = $metaBox.find('a[href="#spr__tab-toc"]'); - if($tocLink.length === 1) { - $tocLink.trigger('click'); - } - } - }; + }; $(function(){