diff --git a/theme/boost/amd/build/loader.min.js b/theme/boost/amd/build/loader.min.js index ca24dd7f773..baacba5c056 100644 --- a/theme/boost/amd/build/loader.min.js +++ b/theme/boost/amd/build/loader.min.js @@ -1,2 +1,2 @@ -define ("theme_boost/loader",["exports","jquery","./aria","./scroll","./bootstrap/index","core/custom_interaction_events"],function(a,b,c,d,e,f){"use strict";Object.defineProperty(a,"__esModule",{value:!0});Object.defineProperty(a,"Bootstrap",{enumerable:!0,get:function get(){return e.default}});a.init=void 0;b=g(b);c=g(c);d=g(d);e=g(e);f=g(f);function g(a){return a&&a.__esModule?a:{default:a}}var h=function(){i();j();k();var a=new d.default;a.init();b.default.fn.dropdown.Constructor.Default.flip=!1;c.default.init()};a.init=h;var i=function(){(0,b.default)("a[data-toggle=\"tab\"]").on("shown.bs.tab",function(a){var c=(0,b.default)(a.target).attr("href");if(history.replaceState){history.replaceState(null,null,c)}else{location.hash=c}});var a=window.location.hash;if(a){(0,b.default)(".nav-link[href=\""+a+"\"]").tab("show")}},j=function(){(0,b.default)("body").popover({selector:"[data-toggle=\"popover\"]",trigger:"focus hover",placement:"auto"});f.default.define((0,b.default)("body"),[f.default.events.escape]);(0,b.default)("body").on(f.default.events.escape,"[data-toggle=popover]",function(){(0,b.default)(this).trigger("blur")})},k=function(){(0,b.default)("body").tooltip({container:"body",selector:"[data-toggle=\"tooltip\"]"})}}); +define ("theme_boost/loader",["exports","jquery","./aria","./bootstrap/index","core/pending","./scroll","./pending"],function(a,b,c,d,e,f,g){"use strict";Object.defineProperty(a,"__esModule",{value:!0});Object.defineProperty(a,"Bootstrap",{enumerable:!0,get:function get(){return d.default}});b=h(b);c=h(c);d=h(d);e=h(e);f=h(f);g=h(g);function h(a){return a&&a.__esModule?a:{default:a}}var i=function(){(0,b.default)("a[data-toggle=\"tab\"]").on("shown.bs.tab",function(a){var c=(0,b.default)(a.target).attr("href");if(history.replaceState){history.replaceState(null,null,c)}else{location.hash=c}});var a=window.location.hash;if(a){(0,b.default)(".nav-link[href=\""+a+"\"]").tab("show")}},j=function(){(0,b.default)("body").popover({container:"body",selector:"[data-toggle=\"popover\"]",trigger:"focus"});document.addEventListener("keydown",function(a){if("Escape"===a.key&&a.target.closest("[data-toggle=\"popover\"]")){(0,b.default)(a.target).popover("hide")}})},k=function(){(0,b.default)("body").tooltip({container:"body",selector:"[data-toggle=\"tooltip\"]"})},l=new e.default("theme_boost/loader:init");(0,g.default)();i();j();k();new f.default().init();b.default.fn.dropdown.Constructor.Default.flip=!1;c.default.init();l.resolve()}); //# sourceMappingURL=loader.min.js.map diff --git a/theme/boost/amd/build/loader.min.js.map b/theme/boost/amd/build/loader.min.js.map index bf9bf8dbcbd..bcde39cc2fc 100644 --- a/theme/boost/amd/build/loader.min.js.map +++ b/theme/boost/amd/build/loader.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/loader.js"],"names":["init","rememberTabs","enablePopovers","enableTooltips","scroll","Scroll","$","fn","dropdown","Constructor","Default","flip","Aria","on","e","hash","target","attr","history","replaceState","location","window","tab","popover","selector","trigger","placement","CustomEvents","define","events","escape","tooltip","container"],"mappings":"uTA0BA,OACA,OACA,OACA,OACA,O,mDAeA,GAAMA,CAAAA,CAAI,CAAG,UAAM,CACfC,CAAY,GAEZC,CAAc,GAEdC,CAAc,GAEd,GAAMC,CAAAA,CAAM,CAAG,GAAIC,UAAnB,CACAD,CAAM,CAACJ,IAAP,GAGAM,UAAEC,EAAF,CAAKC,QAAL,CAAcC,WAAd,CAA0BC,OAA1B,CAAkCC,IAAlC,IAEAC,UAAKZ,IAAL,EACH,CAdD,C,YAmBMC,CAAAA,CAAY,CAAG,UAAM,CACvB,cAAE,wBAAF,EAA0BY,EAA1B,CAA6B,cAA7B,CAA6C,SAASC,CAAT,CAAY,CACrD,GAAIC,CAAAA,CAAI,CAAG,cAAED,CAAC,CAACE,MAAJ,EAAYC,IAAZ,CAAiB,MAAjB,CAAX,CACA,GAAIC,OAAO,CAACC,YAAZ,CAA0B,CACtBD,OAAO,CAACC,YAAR,CAAqB,IAArB,CAA2B,IAA3B,CAAiCJ,CAAjC,CACH,CAFD,IAEO,CACHK,QAAQ,CAACL,IAAT,CAAgBA,CACnB,CACJ,CAPD,EAQA,GAAIA,CAAAA,CAAI,CAAGM,MAAM,CAACD,QAAP,CAAgBL,IAA3B,CACA,GAAIA,CAAJ,CAAU,CACP,cAAE,oBAAqBA,CAArB,CAA4B,KAA9B,EAAoCO,GAApC,CAAwC,MAAxC,CACF,CACJ,C,CAMKpB,CAAc,CAAG,UAAM,CACzB,cAAE,MAAF,EAAUqB,OAAV,CAAkB,CACdC,QAAQ,CAAE,2BADI,CAEdC,OAAO,CAAE,aAFK,CAGdC,SAAS,CAAE,MAHG,CAAlB,EAMAC,UAAaC,MAAb,CAAoB,cAAE,MAAF,CAApB,CAA+B,CAC3BD,UAAaE,MAAb,CAAoBC,MADO,CAA/B,EAGA,cAAE,MAAF,EAAUjB,EAAV,CAAac,UAAaE,MAAb,CAAoBC,MAAjC,CAAyC,uBAAzC,CAAkE,UAAW,CAEzE,cAAE,IAAF,EAAQL,OAAR,CAAgB,MAAhB,CACH,CAHD,CAIH,C,CAMKtB,CAAc,CAAG,UAAM,CACzB,cAAE,MAAF,EAAU4B,OAAV,CAAkB,CACdC,SAAS,CAAE,MADG,CAEdR,QAAQ,CAAE,2BAFI,CAAlB,CAIH,C","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see .\n\n/**\n * Template renderer for Moodle. Load and render Moodle templates with Mustache.\n *\n * @module core/templates\n * @package core\n * @class templates\n * @copyright 2015 Damyon Wiese \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @since 2.9\n */\n\nimport $ from 'jquery';\nimport Aria from './aria';\nimport Scroll from './scroll';\nimport Bootstrap from './bootstrap/index';\nimport CustomEvents from 'core/custom_interaction_events';\n\n/**\n * Set up the search.\n *\n * @method init\n */\nexport {\n init,\n Bootstrap\n};\n\n/**\n * Bootstrap init function\n */\nconst init = () => {\n rememberTabs();\n\n enablePopovers();\n\n enableTooltips();\n\n const scroll = new Scroll();\n scroll.init();\n\n // Disables flipping the dropdowns up and getting hidden behind the navbar.\n $.fn.dropdown.Constructor.Default.flip = false;\n\n Aria.init();\n};\n\n/**\n * Rember the last visited tabs.\n */\nconst rememberTabs = () => {\n $('a[data-toggle=\"tab\"]').on('shown.bs.tab', function(e) {\n var hash = $(e.target).attr('href');\n if (history.replaceState) {\n history.replaceState(null, null, hash);\n } else {\n location.hash = hash;\n }\n });\n var hash = window.location.hash;\n if (hash) {\n $('.nav-link[href=\"' + hash + '\"]').tab('show');\n }\n};\n\n/**\n * Enable all popovers\n *\n */\nconst enablePopovers = () => {\n $('body').popover({\n selector: '[data-toggle=\"popover\"]',\n trigger: 'focus hover',\n placement: 'auto'\n });\n\n CustomEvents.define($('body'), [\n CustomEvents.events.escape,\n ]);\n $('body').on(CustomEvents.events.escape, '[data-toggle=popover]', function() {\n\n $(this).trigger('blur');\n });\n};\n\n/**\n * Enable tooltips\n *\n */\nconst enableTooltips = () => {\n $('body').tooltip({\n container: 'body',\n selector: '[data-toggle=\"tooltip\"]'\n });\n};"],"file":"loader.min.js"} \ No newline at end of file +{"version":3,"sources":["../src/loader.js"],"names":["rememberTabs","on","e","hash","target","attr","history","replaceState","location","window","tab","enablePopovers","popover","container","selector","trigger","document","addEventListener","key","closest","enableTooltips","tooltip","pendingPromise","Pending","Scroll","init","$","fn","dropdown","Constructor","Default","flip","Aria","resolve"],"mappings":"qSA0BA,OACA,OACA,OACA,OACA,OACA,O,sDAKMA,CAAAA,CAAY,CAAG,UAAM,CACvB,cAAE,wBAAF,EAA0BC,EAA1B,CAA6B,cAA7B,CAA6C,SAASC,CAAT,CAAY,CACrD,GAAIC,CAAAA,CAAI,CAAG,cAAED,CAAC,CAACE,MAAJ,EAAYC,IAAZ,CAAiB,MAAjB,CAAX,CACA,GAAIC,OAAO,CAACC,YAAZ,CAA0B,CACtBD,OAAO,CAACC,YAAR,CAAqB,IAArB,CAA2B,IAA3B,CAAiCJ,CAAjC,CACH,CAFD,IAEO,CACHK,QAAQ,CAACL,IAAT,CAAgBA,CACnB,CACJ,CAPD,EAQA,GAAIA,CAAAA,CAAI,CAAGM,MAAM,CAACD,QAAP,CAAgBL,IAA3B,CACA,GAAIA,CAAJ,CAAU,CACP,cAAE,oBAAqBA,CAArB,CAA4B,KAA9B,EAAoCO,GAApC,CAAwC,MAAxC,CACF,CACJ,C,CAMKC,CAAc,CAAG,UAAM,CACzB,cAAE,MAAF,EAAUC,OAAV,CAAkB,CACdC,SAAS,CAAE,MADG,CAEdC,QAAQ,CAAE,2BAFI,CAGdC,OAAO,CAAE,OAHK,CAAlB,EAMAC,QAAQ,CAACC,gBAAT,CAA0B,SAA1B,CAAqC,SAAAf,CAAC,CAAI,CACtC,GAAc,QAAV,GAAAA,CAAC,CAACgB,GAAF,EAAsBhB,CAAC,CAACE,MAAF,CAASe,OAAT,CAAiB,2BAAjB,CAA1B,CAAuE,CACnE,cAAEjB,CAAC,CAACE,MAAJ,EAAYQ,OAAZ,CAAoB,MAApB,CACH,CACJ,CAJD,CAKH,C,CAMKQ,CAAc,CAAG,UAAM,CACzB,cAAE,MAAF,EAAUC,OAAV,CAAkB,CACdR,SAAS,CAAE,MADG,CAEdC,QAAQ,CAAE,2BAFI,CAAlB,CAIH,C,CAEKQ,CAAc,CAAG,GAAIC,UAAJ,CAAY,yBAAZ,C,CAGvB,gBAGAvB,CAAY,GAGZW,CAAc,GAGdS,CAAc,GAGb,GAAII,UAAJ,EAAD,CAAeC,IAAf,GAGAC,UAAEC,EAAF,CAAKC,QAAL,CAAcC,WAAd,CAA0BC,OAA1B,CAAkCC,IAAlC,IAGAC,UAAKP,IAAL,GAEAH,CAAc,CAACW,OAAf,E","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see .\n\n/**\n * Template renderer for Moodle. Load and render Moodle templates with Mustache.\n *\n * @module core/templates\n * @package core\n * @class templates\n * @copyright 2015 Damyon Wiese \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @since 2.9\n */\n\nimport $ from 'jquery';\nimport Aria from './aria';\nimport Bootstrap from './bootstrap/index';\nimport Pending from 'core/pending';\nimport Scroll from './scroll';\nimport setupBootstrapPendingChecks from './pending';\n\n/**\n * Rember the last visited tabs.\n */\nconst rememberTabs = () => {\n $('a[data-toggle=\"tab\"]').on('shown.bs.tab', function(e) {\n var hash = $(e.target).attr('href');\n if (history.replaceState) {\n history.replaceState(null, null, hash);\n } else {\n location.hash = hash;\n }\n });\n var hash = window.location.hash;\n if (hash) {\n $('.nav-link[href=\"' + hash + '\"]').tab('show');\n }\n};\n\n/**\n * Enable all popovers\n *\n */\nconst enablePopovers = () => {\n $('body').popover({\n container: 'body',\n selector: '[data-toggle=\"popover\"]',\n trigger: 'focus',\n });\n\n document.addEventListener('keydown', e => {\n if (e.key === 'Escape' && e.target.closest('[data-toggle=\"popover\"]')) {\n $(e.target).popover('hide');\n }\n });\n};\n\n/**\n * Enable tooltips\n *\n */\nconst enableTooltips = () => {\n $('body').tooltip({\n container: 'body',\n selector: '[data-toggle=\"tooltip\"]',\n });\n};\n\nconst pendingPromise = new Pending('theme_boost/loader:init');\n\n// Add pending promise event listeners to relevant Bootstrap custom events.\nsetupBootstrapPendingChecks();\n\n// Remember the last visited tabs.\nrememberTabs();\n\n// Enable all popovers.\nenablePopovers();\n\n// Enable all tooltips.\nenableTooltips();\n\n// Add scroll handling.\n(new Scroll()).init();\n\n// Disables flipping the dropdowns up and getting hidden behind the navbar.\n$.fn.dropdown.Constructor.Default.flip = false;\n\n// Setup Aria helpers for Bootstrap features.\nAria.init();\n\npendingPromise.resolve();\n\nexport {\n Bootstrap,\n};\n"],"file":"loader.min.js"} \ No newline at end of file diff --git a/theme/boost/amd/build/pending.min.js b/theme/boost/amd/build/pending.min.js index d231b81d8f6..3630be6a88f 100644 --- a/theme/boost/amd/build/pending.min.js +++ b/theme/boost/amd/build/pending.min.js @@ -1,2 +1,2 @@ -define ("theme_boost/pending",["jquery"],function(a){var b={alert:[{start:"close",end:"closed"}],carousel:[{start:"slide",end:"slid"}],collapse:[{start:"hide",end:"hidden"},{start:"show",end:"shown"}],dropdown:[{start:"hide",end:"hidden"},{start:"show",end:"shown"}],modal:[{start:"hide",end:"hidden"},{start:"show",end:"shown"}],popover:[{start:"hide",end:"hidden"},{start:"show",end:"shown"}],tab:[{start:"hide",end:"hidden"},{start:"show",end:"shown"}],toast:[{start:"hide",end:"hidden"},{start:"show",end:"shown"}],tooltip:[{start:"hide",end:"hidden"},{start:"show",end:"shown"}]};Object.keys(b).forEach(function(c){b[c].forEach(function(b){var d=b.start+".bs."+c,e=b.end+".bs."+c;a(document.body).on(d,function(){M.util.js_pending(e)});a(document.body).on(e,function(){M.util.js_complete(e)})})})}); +define ("theme_boost/pending",["exports","jquery"],function(a,b){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;b=function(a){return a&&a.__esModule?a:{default:a}}(b);function c(a,b){return h(a)||g(a,b)||e(a,b)||d()}function d(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function e(a,b){if(!a)return;if("string"==typeof a)return f(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);if("Object"===c&&a.constructor)c=a.constructor.name;if("Map"===c||"Set"===c)return Array.from(c);if("Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return f(a,b)}function f(a,b){if(null==b||b>a.length)b=a.length;for(var c=0,d=Array(b);c.\n\n/**\n * Add Pending JS checks to stock Bootstrap transitions.\n *\n * @module theme_boost/pending\n * @copyright 2019 Andrew Nicols \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(['jquery'], function($) {\n var moduleTransitions = {\n alert: [\n // Alert.\n {\n start: 'close',\n end: 'closed',\n },\n ],\n\n carousel: [\n {\n start: 'slide',\n end: 'slid',\n },\n ],\n\n collapse: [\n {\n start: 'hide',\n end: 'hidden',\n },\n {\n start: 'show',\n end: 'shown',\n },\n ],\n\n dropdown: [\n {\n start: 'hide',\n end: 'hidden',\n },\n {\n start: 'show',\n end: 'shown',\n },\n ],\n\n modal: [\n {\n start: 'hide',\n end: 'hidden',\n },\n {\n start: 'show',\n end: 'shown',\n },\n ],\n\n popover: [\n {\n start: 'hide',\n end: 'hidden',\n },\n {\n start: 'show',\n end: 'shown',\n },\n ],\n\n tab: [\n {\n start: 'hide',\n end: 'hidden',\n },\n {\n start: 'show',\n end: 'shown',\n },\n ],\n\n toast: [\n {\n start: 'hide',\n end: 'hidden',\n },\n {\n start: 'show',\n end: 'shown',\n },\n ],\n\n tooltip: [\n {\n start: 'hide',\n end: 'hidden',\n },\n {\n start: 'show',\n end: 'shown',\n },\n ],\n };\n\n Object.keys(moduleTransitions).forEach(function(key) {\n moduleTransitions[key].forEach(function(pair) {\n var eventStart = pair.start + '.bs.' + key;\n var eventEnd = pair.end + '.bs.' + key;\n $(document.body).on(eventStart, function() {\n M.util.js_pending(eventEnd);\n });\n\n $(document.body).on(eventEnd, function() {\n M.util.js_complete(eventEnd);\n });\n });\n });\n});\n"],"file":"pending.min.js"} \ No newline at end of file +{"version":3,"sources":["../src/pending.js"],"names":["moduleTransitions","alert","start","end","carousel","collapse","dropdown","modal","popover","tab","toast","tooltip","Object","entries","forEach","key","pairs","pair","eventStart","eventEnd","document","body","on","M","util","js_pending","js_complete"],"mappings":"gJAuBA,uD,+9BACMA,CAAAA,CAAiB,CAAG,CACtBC,KAAK,CAAE,CAEH,CACIC,KAAK,CAAE,OADX,CAEIC,GAAG,CAAE,QAFT,CAFG,CADe,CAStBC,QAAQ,CAAE,CACN,CACIF,KAAK,CAAE,OADX,CAEIC,GAAG,CAAE,MAFT,CADM,CATY,CAgBtBE,QAAQ,CAAE,CACN,CACIH,KAAK,CAAE,MADX,CAEIC,GAAG,CAAE,QAFT,CADM,CAKN,CACID,KAAK,CAAE,MADX,CAEIC,GAAG,CAAE,OAFT,CALM,CAhBY,CA2BtBG,QAAQ,CAAE,CACN,CACIJ,KAAK,CAAE,MADX,CAEIC,GAAG,CAAE,QAFT,CADM,CAKN,CACID,KAAK,CAAE,MADX,CAEIC,GAAG,CAAE,OAFT,CALM,CA3BY,CAsCtBI,KAAK,CAAE,CACH,CACIL,KAAK,CAAE,MADX,CAEIC,GAAG,CAAE,QAFT,CADG,CAKH,CACID,KAAK,CAAE,MADX,CAEIC,GAAG,CAAE,OAFT,CALG,CAtCe,CAiDtBK,OAAO,CAAE,CACL,CACIN,KAAK,CAAE,MADX,CAEIC,GAAG,CAAE,QAFT,CADK,CAKL,CACID,KAAK,CAAE,MADX,CAEIC,GAAG,CAAE,OAFT,CALK,CAjDa,CA4DtBM,GAAG,CAAE,CACD,CACIP,KAAK,CAAE,MADX,CAEIC,GAAG,CAAE,QAFT,CADC,CAKD,CACID,KAAK,CAAE,MADX,CAEIC,GAAG,CAAE,OAFT,CALC,CA5DiB,CAuEtBO,KAAK,CAAE,CACH,CACIR,KAAK,CAAE,MADX,CAEIC,GAAG,CAAE,QAFT,CADG,CAKH,CACID,KAAK,CAAE,MADX,CAEIC,GAAG,CAAE,OAFT,CALG,CAvEe,CAkFtBQ,OAAO,CAAE,CACL,CACIT,KAAK,CAAE,MADX,CAEIC,GAAG,CAAE,QAFT,CADK,CAKL,CACID,KAAK,CAAE,MADX,CAEIC,GAAG,CAAE,OAFT,CALK,CAlFa,C,WA8FX,UAAM,CACjBS,MAAM,CAACC,OAAP,CAAeb,CAAf,EAAkCc,OAAlC,CAA0C,WAAkB,cAAhBC,CAAgB,MAAXC,CAAW,MACxDA,CAAK,CAACF,OAAN,CAAc,SAAAG,CAAI,CAAI,IACZC,CAAAA,CAAU,WAAMD,CAAI,CAACf,KAAX,gBAAuBa,CAAvB,CADE,CAEZI,CAAQ,WAAMF,CAAI,CAACd,GAAX,gBAAqBY,CAArB,CAFI,CAGlB,cAAOK,QAAQ,CAACC,IAAhB,EAAsBC,EAAtB,CAAyBJ,CAAzB,CAAqC,UAAM,CACvCK,CAAC,CAACC,IAAF,CAAOC,UAAP,CAAkBN,CAAlB,CACH,CAFD,EAIA,cAAOC,QAAQ,CAACC,IAAhB,EAAsBC,EAAtB,CAAyBH,CAAzB,CAAmC,UAAM,CACrCI,CAAC,CAACC,IAAF,CAAOE,WAAP,CAAmBP,CAAnB,CACH,CAFD,CAGH,CAVD,CAWH,CAZD,CAaH,C","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see .\n\n/**\n * Add Pending JS checks to stock Bootstrap transitions.\n *\n * @module theme_boost/pending\n * @copyright 2019 Andrew Nicols \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport jQuery from 'jquery';\nconst moduleTransitions = {\n alert: [\n // Alert.\n {\n start: 'close',\n end: 'closed',\n },\n ],\n\n carousel: [\n {\n start: 'slide',\n end: 'slid',\n },\n ],\n\n collapse: [\n {\n start: 'hide',\n end: 'hidden',\n },\n {\n start: 'show',\n end: 'shown',\n },\n ],\n\n dropdown: [\n {\n start: 'hide',\n end: 'hidden',\n },\n {\n start: 'show',\n end: 'shown',\n },\n ],\n\n modal: [\n {\n start: 'hide',\n end: 'hidden',\n },\n {\n start: 'show',\n end: 'shown',\n },\n ],\n\n popover: [\n {\n start: 'hide',\n end: 'hidden',\n },\n {\n start: 'show',\n end: 'shown',\n },\n ],\n\n tab: [\n {\n start: 'hide',\n end: 'hidden',\n },\n {\n start: 'show',\n end: 'shown',\n },\n ],\n\n toast: [\n {\n start: 'hide',\n end: 'hidden',\n },\n {\n start: 'show',\n end: 'shown',\n },\n ],\n\n tooltip: [\n {\n start: 'hide',\n end: 'hidden',\n },\n {\n start: 'show',\n end: 'shown',\n },\n ],\n};\n\nexport default () => {\n Object.entries(moduleTransitions).forEach(([key, pairs]) => {\n pairs.forEach(pair => {\n const eventStart = `${pair.start}.bs.${key}`;\n const eventEnd = `${pair.end}.bs.${key}`;\n jQuery(document.body).on(eventStart, () => {\n M.util.js_pending(eventEnd);\n });\n\n jQuery(document.body).on(eventEnd, () => {\n M.util.js_complete(eventEnd);\n });\n });\n });\n};\n"],"file":"pending.min.js"} \ No newline at end of file diff --git a/theme/boost/amd/src/loader.js b/theme/boost/amd/src/loader.js index 6d5f9d84d25..a050c6f5187 100644 --- a/theme/boost/amd/src/loader.js +++ b/theme/boost/amd/src/loader.js @@ -26,38 +26,10 @@ import $ from 'jquery'; import Aria from './aria'; -import Scroll from './scroll'; import Bootstrap from './bootstrap/index'; -import CustomEvents from 'core/custom_interaction_events'; - -/** - * Set up the search. - * - * @method init - */ -export { - init, - Bootstrap -}; - -/** - * Bootstrap init function - */ -const init = () => { - rememberTabs(); - - enablePopovers(); - - enableTooltips(); - - const scroll = new Scroll(); - scroll.init(); - - // Disables flipping the dropdowns up and getting hidden behind the navbar. - $.fn.dropdown.Constructor.Default.flip = false; - - Aria.init(); -}; +import Pending from 'core/pending'; +import Scroll from './scroll'; +import setupBootstrapPendingChecks from './pending'; /** * Rember the last visited tabs. @@ -83,17 +55,15 @@ const rememberTabs = () => { */ const enablePopovers = () => { $('body').popover({ + container: 'body', selector: '[data-toggle="popover"]', - trigger: 'focus hover', - placement: 'auto' + trigger: 'focus', }); - CustomEvents.define($('body'), [ - CustomEvents.events.escape, - ]); - $('body').on(CustomEvents.events.escape, '[data-toggle=popover]', function() { - - $(this).trigger('blur'); + document.addEventListener('keydown', e => { + if (e.key === 'Escape' && e.target.closest('[data-toggle="popover"]')) { + $(e.target).popover('hide'); + } }); }; @@ -104,6 +74,35 @@ const enablePopovers = () => { const enableTooltips = () => { $('body').tooltip({ container: 'body', - selector: '[data-toggle="tooltip"]' + selector: '[data-toggle="tooltip"]', }); -}; \ No newline at end of file +}; + +const pendingPromise = new Pending('theme_boost/loader:init'); + +// Add pending promise event listeners to relevant Bootstrap custom events. +setupBootstrapPendingChecks(); + +// Remember the last visited tabs. +rememberTabs(); + +// Enable all popovers. +enablePopovers(); + +// Enable all tooltips. +enableTooltips(); + +// Add scroll handling. +(new Scroll()).init(); + +// Disables flipping the dropdowns up and getting hidden behind the navbar. +$.fn.dropdown.Constructor.Default.flip = false; + +// Setup Aria helpers for Bootstrap features. +Aria.init(); + +pendingPromise.resolve(); + +export { + Bootstrap, +}; diff --git a/theme/boost/amd/src/pending.js b/theme/boost/amd/src/pending.js index 2e25c8126f4..4b3a5480fef 100644 --- a/theme/boost/amd/src/pending.js +++ b/theme/boost/amd/src/pending.js @@ -20,112 +20,114 @@ * @copyright 2019 Andrew Nicols * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -define(['jquery'], function($) { - var moduleTransitions = { - alert: [ - // Alert. - { - start: 'close', - end: 'closed', - }, - ], - carousel: [ - { - start: 'slide', - end: 'slid', - }, - ], +import jQuery from 'jquery'; +const moduleTransitions = { + alert: [ + // Alert. + { + start: 'close', + end: 'closed', + }, + ], - collapse: [ - { - start: 'hide', - end: 'hidden', - }, - { - start: 'show', - end: 'shown', - }, - ], + carousel: [ + { + start: 'slide', + end: 'slid', + }, + ], - dropdown: [ - { - start: 'hide', - end: 'hidden', - }, - { - start: 'show', - end: 'shown', - }, - ], + collapse: [ + { + start: 'hide', + end: 'hidden', + }, + { + start: 'show', + end: 'shown', + }, + ], - modal: [ - { - start: 'hide', - end: 'hidden', - }, - { - start: 'show', - end: 'shown', - }, - ], + dropdown: [ + { + start: 'hide', + end: 'hidden', + }, + { + start: 'show', + end: 'shown', + }, + ], - popover: [ - { - start: 'hide', - end: 'hidden', - }, - { - start: 'show', - end: 'shown', - }, - ], + modal: [ + { + start: 'hide', + end: 'hidden', + }, + { + start: 'show', + end: 'shown', + }, + ], - tab: [ - { - start: 'hide', - end: 'hidden', - }, - { - start: 'show', - end: 'shown', - }, - ], + popover: [ + { + start: 'hide', + end: 'hidden', + }, + { + start: 'show', + end: 'shown', + }, + ], - toast: [ - { - start: 'hide', - end: 'hidden', - }, - { - start: 'show', - end: 'shown', - }, - ], + tab: [ + { + start: 'hide', + end: 'hidden', + }, + { + start: 'show', + end: 'shown', + }, + ], - tooltip: [ - { - start: 'hide', - end: 'hidden', - }, - { - start: 'show', - end: 'shown', - }, - ], - }; + toast: [ + { + start: 'hide', + end: 'hidden', + }, + { + start: 'show', + end: 'shown', + }, + ], - Object.keys(moduleTransitions).forEach(function(key) { - moduleTransitions[key].forEach(function(pair) { - var eventStart = pair.start + '.bs.' + key; - var eventEnd = pair.end + '.bs.' + key; - $(document.body).on(eventStart, function() { + tooltip: [ + { + start: 'hide', + end: 'hidden', + }, + { + start: 'show', + end: 'shown', + }, + ], +}; + +export default () => { + Object.entries(moduleTransitions).forEach(([key, pairs]) => { + pairs.forEach(pair => { + const eventStart = `${pair.start}.bs.${key}`; + const eventEnd = `${pair.end}.bs.${key}`; + jQuery(document.body).on(eventStart, () => { M.util.js_pending(eventEnd); }); - $(document.body).on(eventEnd, function() { + jQuery(document.body).on(eventEnd, () => { M.util.js_complete(eventEnd); }); }); }); -}); +}; diff --git a/theme/boost/templates/columns1.mustache b/theme/boost/templates/columns1.mustache index 08a0a129e51..51fb23efedb 100644 --- a/theme/boost/templates/columns1.mustache +++ b/theme/boost/templates/columns1.mustache @@ -64,8 +64,9 @@ {{{ output.standard_end_of_body_html }}} +{{#js}} M.util.js_pending('theme_boost/loader'); -require(['theme_boost/loader'], function(loader) { - loader.init(); +require(['theme_boost/loader'], function() { M.util.js_complete('theme_boost/loader'); }); +{{/js}} diff --git a/theme/boost/templates/columns2.mustache b/theme/boost/templates/columns2.mustache index fcb9b2c1b7f..5feab1c709f 100644 --- a/theme/boost/templates/columns2.mustache +++ b/theme/boost/templates/columns2.mustache @@ -97,8 +97,7 @@ {{#js}} M.util.js_pending('theme_boost/loader'); -require(['theme_boost/loader'], function(loader) { - loader.init(); +require(['theme_boost/loader'], function() { M.util.js_complete('theme_boost/loader'); }); diff --git a/theme/boost/templates/secure.mustache b/theme/boost/templates/secure.mustache index 9d8b28961c4..c4ccb98fb86 100644 --- a/theme/boost/templates/secure.mustache +++ b/theme/boost/templates/secure.mustache @@ -87,8 +87,9 @@ +{{#js}} M.util.js_pending('theme_boost/loader'); -require(['theme_boost/loader'], function(loader) { - loader.init(); +require(['theme_boost/loader'], function() { M.util.js_complete('theme_boost/loader'); }); +{{/js}} diff --git a/theme/classic/templates/columns.mustache b/theme/classic/templates/columns.mustache index 1ae3fc69d6e..787b41f3f72 100644 --- a/theme/classic/templates/columns.mustache +++ b/theme/classic/templates/columns.mustache @@ -97,8 +97,7 @@ {{#js}} M.util.js_pending('theme_boost/loader'); -require(['theme_boost/loader'], function(loader) { - loader.init(); +require(['theme_boost/loader'], function() { M.util.js_complete('theme_boost/loader'); }); {{/js}} diff --git a/theme/classic/templates/contentonly.mustache b/theme/classic/templates/contentonly.mustache index 4d8ca86cd13..cb5d9c200f8 100644 --- a/theme/classic/templates/contentonly.mustache +++ b/theme/classic/templates/contentonly.mustache @@ -69,8 +69,7 @@ {{#js}} M.util.js_pending('theme_boost/loader'); -require(['theme_boost/loader'], function(loader) { - loader.init(); +require(['theme_boost/loader'], function() { M.util.js_complete('theme_boost/loader'); }); {{/js}} diff --git a/theme/classic/templates/secure.mustache b/theme/classic/templates/secure.mustache index 1d061835b14..b237592f39b 100644 --- a/theme/classic/templates/secure.mustache +++ b/theme/classic/templates/secure.mustache @@ -107,8 +107,7 @@ {{#js}} M.util.js_pending('theme_boost/loader'); -require(['theme_boost/loader'], function(loader) { - loader.init(); +require(['theme_boost/loader'], function() { M.util.js_complete('theme_boost/loader'); }); {{/js}}