MDL-75669 theme_boost: Fix BS5 related JS
- Migrate Boostrap components related JS from JQuery to vanilla JS. - Migrate Boostrap components related Events from JQuery to vanilla JS.
This commit is contained in:
@@ -30,15 +30,13 @@ In order for this to work you need to use the JavaScript syntax used in core Mus
|
||||
{{#js}}
|
||||
require(
|
||||
[
|
||||
'jquery',
|
||||
'theme_boost/toast',
|
||||
],
|
||||
function(
|
||||
$,
|
||||
Toast
|
||||
) {
|
||||
var root = $('#toasttest');
|
||||
root.toast('show');
|
||||
const toastTrigger = document.getElementById('toasttest');
|
||||
new Toast(toastTrigger).show();
|
||||
});
|
||||
{{/js}}
|
||||
{{< /example >}}
|
||||
+1
-1
@@ -12,6 +12,6 @@
|
||||
* @copyright 2020 Mathew May <mathew.solutions>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define("tool_moodlenet/instance_form",["tool_moodlenet/validator","tool_moodlenet/selectors","core/loadingicon","core/templates","core/notification","jquery"],(function(Validator,Selectors,LoadingIcon,Templates,Notification,$){var chooserNavigateToMnet=function(showMoodleNet,footerData,carousel,modal){showMoodleNet.innerHTML="";var page,spinnerPromise=LoadingIcon.addIconToContainer(showMoodleNet),transitionPromiseResolver=null,transitionPromise=new Promise((resolve=>{transitionPromiseResolver=resolve}));$.when(spinnerPromise,transitionPromise).then((function(){Templates.replaceNodeContents(showMoodleNet,footerData.customcarouseltemplate,"")})).catch(Notification.exception),(page=showMoodleNet).addEventListener("click",(function(e){if(e.target.matches(Selectors.action.submit)){var input=page.querySelector('[data-var="mnet-link"]'),overlay=page.querySelector(Selectors.region.spinner),validationArea=document.querySelector(Selectors.region.validationArea);overlay.classList.remove("d-none");var spinner=LoadingIcon.addIconToContainerWithPromise(overlay);Validator.validation(input).then((function(result){spinner.resolve(),overlay.classList.add("d-none"),result.result?(input.classList.remove("is-invalid"),input.classList.add("is-valid"),validationArea.innerText=result.message,validationArea.classList.remove("text-danger"),validationArea.classList.add("text-success"),setTimeout((function(){window.location=result.domain}),1e3)):(input.classList.add("is-invalid"),validationArea.innerText=result.message,validationArea.classList.add("text-danger"))})).catch()}})),carousel.one("slid.bs.carousel",(function(){transitionPromiseResolver()})),carousel.carousel(2),modal.setFooter(Templates.render("tool_moodlenet/chooser_footer_close_mnet",{}))};return{footerClickListener:function(e,footerData,modal){if(e.target.matches(Selectors.action.showMoodleNet)||e.target.closest(Selectors.action.showMoodleNet)){e.preventDefault();const carousel=$(modal.getBody()[0].querySelector(Selectors.region.carousel)),showMoodleNet=carousel.find(Selectors.region.moodleNet)[0];chooserNavigateToMnet(showMoodleNet,footerData,carousel,modal)}if(e.target.matches(Selectors.action.closeOption)){!function(carousel,modal,footerData){carousel.carousel(0),modal.setFooter(footerData.customfootertemplate)}($(modal.getBody()[0].querySelector(Selectors.region.carousel)),modal,footerData)}}}}));
|
||||
define("tool_moodlenet/instance_form",["tool_moodlenet/validator","tool_moodlenet/selectors","core/loadingicon","core/templates","core/notification","jquery","theme_boost/bootstrap/carousel","core/normalise"],(function(Validator,Selectors,LoadingIcon,Templates,Notification,$,Carousel,Normalise){var chooserNavigateToMnet=function(showMoodleNet,footerData,carousel,modal){showMoodleNet.innerHTML="";var page,spinnerPromise=LoadingIcon.addIconToContainer(showMoodleNet),transitionPromiseResolver=null,transitionPromise=new Promise((resolve=>{transitionPromiseResolver=resolve}));$.when(spinnerPromise,transitionPromise).then((function(){Templates.replaceNodeContents(showMoodleNet,footerData.customcarouseltemplate,"")})).catch(Notification.exception),(page=showMoodleNet).addEventListener("click",(function(e){if(e.target.matches(Selectors.action.submit)){var input=page.querySelector('[data-var="mnet-link"]'),overlay=page.querySelector(Selectors.region.spinner),validationArea=document.querySelector(Selectors.region.validationArea);overlay.classList.remove("d-none");var spinner=LoadingIcon.addIconToContainerWithPromise(overlay);Validator.validation(input).then((function(result){spinner.resolve(),overlay.classList.add("d-none"),result.result?(input.classList.remove("is-invalid"),input.classList.add("is-valid"),validationArea.innerText=result.message,validationArea.classList.remove("text-danger"),validationArea.classList.add("text-success"),setTimeout((function(){window.location=result.domain}),1e3)):(input.classList.add("is-invalid"),validationArea.innerText=result.message,validationArea.classList.add("text-danger"))})).catch(Notification.exception)}})),carousel.addEventListener("slid.bs.carousel",(function(){transitionPromiseResolver()}),{once:!0}),Carousel.getInstance(carousel).to(2),modal.setFooter(Templates.render("tool_moodlenet/chooser_footer_close_mnet",{}))};return{footerClickListener:function(e,footerData,modal){const modalBody=Normalise.getFirst(modal.getBody());if(e.target.matches(Selectors.action.showMoodleNet)||e.target.closest(Selectors.action.showMoodleNet)){e.preventDefault();const carousel=modalBody.querySelector(Selectors.region.carousel),showMoodleNet=carousel.querySelector(Selectors.region.moodleNet);chooserNavigateToMnet(showMoodleNet,footerData,carousel,modal)}if(e.target.matches(Selectors.action.closeOption)){!function(carousel,modal,footerData){Carousel.getInstance(carousel).to(0),modal.setFooter(footerData.customfootertemplate)}(modalBody.querySelector(Selectors.region.carousel),modal,footerData)}}}}));
|
||||
|
||||
//# sourceMappingURL=instance_form.min.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -33,13 +33,17 @@ define(['tool_moodlenet/validator',
|
||||
'core/loadingicon',
|
||||
'core/templates',
|
||||
'core/notification',
|
||||
'jquery'],
|
||||
'jquery',
|
||||
'theme_boost/bootstrap/carousel',
|
||||
'core/normalise'],
|
||||
function(Validator,
|
||||
Selectors,
|
||||
LoadingIcon,
|
||||
Templates,
|
||||
Notification,
|
||||
$) {
|
||||
$,
|
||||
Carousel,
|
||||
Normalise) {
|
||||
|
||||
/**
|
||||
* Add the event listeners to our form.
|
||||
@@ -78,7 +82,7 @@ define(['tool_moodlenet/validator',
|
||||
validationArea.classList.add('text-danger');
|
||||
}
|
||||
return;
|
||||
}).catch();
|
||||
}).catch(Notification.exception);
|
||||
}
|
||||
});
|
||||
};
|
||||
@@ -89,7 +93,7 @@ define(['tool_moodlenet/validator',
|
||||
* @method chooserNavigateToMnet
|
||||
* @param {HTMLElement} showMoodleNet The chooser's area for ment
|
||||
* @param {Object} footerData Our footer object to render out
|
||||
* @param {jQuery} carousel Our carousel instance to manage
|
||||
* @param {Element} carousel Our carousel instance to manage
|
||||
* @param {jQuery} modal Our modal instance to manage
|
||||
*/
|
||||
var chooserNavigateToMnet = function(showMoodleNet, footerData, carousel, modal) {
|
||||
@@ -116,11 +120,11 @@ define(['tool_moodlenet/validator',
|
||||
registerListenerEvents(showMoodleNet);
|
||||
|
||||
// Move to the next slide, and resolve the transition promise when it's done.
|
||||
carousel.one('slid.bs.carousel', function() {
|
||||
carousel.addEventListener('slid.bs.carousel', function() {
|
||||
transitionPromiseResolver();
|
||||
});
|
||||
}, {once: true});
|
||||
// Trigger the transition between 'pages'.
|
||||
carousel.carousel(2);
|
||||
Carousel.getInstance(carousel).to(2);
|
||||
modal.setFooter(Templates.render('tool_moodlenet/chooser_footer_close_mnet', {}));
|
||||
};
|
||||
|
||||
@@ -128,13 +132,13 @@ define(['tool_moodlenet/validator',
|
||||
* Given a user no longer wishes to see the MoodleNet profile url form transition them from there.
|
||||
*
|
||||
* @method chooserNavigateFromMnet
|
||||
* @param {jQuery} carousel Our carousel instance to manage
|
||||
* @param {Element} carousel Our carousel instance to manage
|
||||
* @param {jQuery} modal Our modal instance to manage
|
||||
* @param {Object} footerData Our footer object to render out
|
||||
*/
|
||||
var chooserNavigateFromMnet = function(carousel, modal, footerData) {
|
||||
// Trigger the transition between 'pages'.
|
||||
carousel.carousel(0);
|
||||
Carousel.getInstance(carousel).to(0);
|
||||
modal.setFooter(footerData.customfootertemplate);
|
||||
};
|
||||
|
||||
@@ -146,16 +150,17 @@ define(['tool_moodlenet/validator',
|
||||
* @param {Object} modal The chooser modal.
|
||||
*/
|
||||
var footerClickListener = function(e, footerData, modal) {
|
||||
const modalBody = Normalise.getFirst(modal.getBody());
|
||||
if (e.target.matches(Selectors.action.showMoodleNet) || e.target.closest(Selectors.action.showMoodleNet)) {
|
||||
e.preventDefault();
|
||||
const carousel = $(modal.getBody()[0].querySelector(Selectors.region.carousel));
|
||||
const showMoodleNet = carousel.find(Selectors.region.moodleNet)[0];
|
||||
const carousel = modalBody.querySelector(Selectors.region.carousel);
|
||||
const showMoodleNet = carousel.querySelector(Selectors.region.moodleNet);
|
||||
|
||||
chooserNavigateToMnet(showMoodleNet, footerData, carousel, modal);
|
||||
}
|
||||
// From the help screen go back to the module overview.
|
||||
if (e.target.matches(Selectors.action.closeOption)) {
|
||||
const carousel = $(modal.getBody()[0].querySelector(Selectors.region.carousel));
|
||||
const carousel = modalBody.querySelector(Selectors.region.carousel);
|
||||
|
||||
chooserNavigateFromMnet(carousel, modal, footerData);
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
define("block_timeline/view_nav",["exports","jquery","core/custom_interaction_events","block_timeline/view","core/notification","core/utils","core_user/repository"],(function(_exports,_jquery,CustomEvents,View,Notification,Utils,UserRepository){var obj;
|
||||
define("block_timeline/view_nav",["exports","jquery","core/custom_interaction_events","block_timeline/view","core/notification","core/utils","core_user/repository","core/normalise"],(function(_exports,_jquery,CustomEvents,View,Notification,Utils,UserRepository,_normalise){var obj;
|
||||
/**
|
||||
* Manage the timeline view navigation for the timeline block.
|
||||
*
|
||||
* @copyright 2018 Ryan Wyllie <ryan@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,cache&&cache.set(obj,newObj),newObj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_jquery=(obj=_jquery)&&obj.__esModule?obj:{default:obj},CustomEvents=_interopRequireWildcard(CustomEvents),View=_interopRequireWildcard(View),Notification=_interopRequireWildcard(Notification),Utils=_interopRequireWildcard(Utils),UserRepository=_interopRequireWildcard(UserRepository);const SELECTORS_TIMELINE_DAY_FILTER='[data-region="day-filter"]',SELECTORS_TIMELINE_DAY_FILTER_OPTION="[data-from]",SELECTORS_TIMELINE_VIEW_SELECTOR='[data-region="view-selector"]',SELECTORS_DATA_DAYS_OFFSET="[data-days-offset]",SELECTORS_TIMELINE_SEARCH_INPUT='[data-action="search"]',SELECTORS_TIMELINE_SEARCH_CLEAR_ICON='[data-action="clearsearch"]',SELECTORS_NO_COURSES_EMPTY_MESSAGE='[data-region="no-courses-empty-message"]',activeSearchState=(clearSearchIcon,timelineViewRoot)=>{clearSearchIcon.removeClass("d-none"),View.reset(timelineViewRoot)},clearSearchState=(clearSearchIcon,timelineViewRoot)=>{clearSearchIcon.addClass("d-none"),View.reset(timelineViewRoot)};_exports.init=function(root,timelineViewRoot){(function(root,timelineViewRoot){const viewSelector=root.find(SELECTORS_TIMELINE_VIEW_SELECTOR);viewSelector.on("shown shown.bs.tab",(function(e){View.shown(timelineViewRoot),(0,_jquery.default)(e.target).removeClass("active")})),CustomEvents.define(viewSelector,[CustomEvents.events.activate]),viewSelector.on(CustomEvents.events.activate,"[data-bs-toggle='tab']",(function(e){var filtername=(0,_jquery.default)(e.currentTarget).data("filtername");UserRepository.setUserPreference("block_timeline_user_sort_preference",filtername).catch(Notification.exception)}))})(root=(0,_jquery.default)(root),timelineViewRoot),root.find(SELECTORS_NO_COURSES_EMPTY_MESSAGE).length||(function(root,timelineViewRoot){const timelineDaySelectorContainer=root.find(SELECTORS_TIMELINE_DAY_FILTER);CustomEvents.define(timelineDaySelectorContainer,[CustomEvents.events.activate]),timelineDaySelectorContainer.on(CustomEvents.events.activate,SELECTORS_TIMELINE_DAY_FILTER_OPTION,(function(e,data){var filtername=(0,_jquery.default)(e.currentTarget).data("filtername");UserRepository.setUserPreference("block_timeline_user_filter_preference",filtername).catch(Notification.exception);var option=(0,_jquery.default)(e.target).closest(SELECTORS_TIMELINE_DAY_FILTER_OPTION);if("true"!=option.attr("aria-current")){var daysOffset=option.attr("data-from"),daysLimit=option.attr("data-to"),elementsWithDaysOffset=root.find(SELECTORS_DATA_DAYS_OFFSET);elementsWithDaysOffset.attr("data-days-offset",daysOffset),null!=daysLimit?elementsWithDaysOffset.attr("data-days-limit",daysLimit):elementsWithDaysOffset.removeAttr("data-days-limit"),"overdue"===option.attr("data-filtername")?elementsWithDaysOffset.attr("data-filter-overdue",!0):elementsWithDaysOffset.removeAttr("data-filter-overdue"),View.reset(timelineViewRoot),data.originalEvent.preventDefault()}}))}(root,timelineViewRoot),((root,timelineViewRoot)=>{const searchInput=root.find(SELECTORS_TIMELINE_SEARCH_INPUT),clearSearchIcon=root.find(SELECTORS_TIMELINE_SEARCH_CLEAR_ICON);searchInput.on("input",Utils.debounce((()=>{""!==searchInput.val()?activeSearchState(clearSearchIcon,timelineViewRoot):clearSearchState(clearSearchIcon,timelineViewRoot)}),1e3)),clearSearchIcon.on("click",(()=>{searchInput.val(""),clearSearchState(clearSearchIcon,timelineViewRoot),searchInput.focus()}))})(root,timelineViewRoot))}}));
|
||||
*/function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,cache&&cache.set(obj,newObj),newObj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_jquery=(obj=_jquery)&&obj.__esModule?obj:{default:obj},CustomEvents=_interopRequireWildcard(CustomEvents),View=_interopRequireWildcard(View),Notification=_interopRequireWildcard(Notification),Utils=_interopRequireWildcard(Utils),UserRepository=_interopRequireWildcard(UserRepository);const SELECTORS_TIMELINE_DAY_FILTER='[data-region="day-filter"]',SELECTORS_TIMELINE_DAY_FILTER_OPTION="[data-from]",SELECTORS_TIMELINE_VIEW_SELECTOR='[data-region="view-selector"]',SELECTORS_DATA_DAYS_OFFSET="[data-days-offset]",SELECTORS_TIMELINE_SEARCH_INPUT='[data-action="search"]',SELECTORS_TIMELINE_SEARCH_CLEAR_ICON='[data-action="clearsearch"]',SELECTORS_NO_COURSES_EMPTY_MESSAGE='[data-region="no-courses-empty-message"]',activeSearchState=(clearSearchIcon,timelineViewRoot)=>{clearSearchIcon.removeClass("d-none"),View.reset(timelineViewRoot)},clearSearchState=(clearSearchIcon,timelineViewRoot)=>{clearSearchIcon.addClass("d-none"),View.reset(timelineViewRoot)};_exports.init=function(root,timelineViewRoot){(function(root,timelineViewRoot){const viewSelector=root.find(SELECTORS_TIMELINE_VIEW_SELECTOR);(0,_normalise.getFirst)(viewSelector).querySelectorAll('[data-bs-toggle="tab"]').forEach((tab=>{tab.addEventListener("shown.bs.tab",(e=>{View.shown(timelineViewRoot),(0,_jquery.default)(e.target).removeClass("active")}))})),CustomEvents.define(viewSelector,[CustomEvents.events.activate]),viewSelector.on(CustomEvents.events.activate,"[data-bs-toggle='tab']",(function(e){var filtername=(0,_jquery.default)(e.currentTarget).data("filtername");UserRepository.setUserPreference("block_timeline_user_sort_preference",filtername).catch(Notification.exception)}))})(root=(0,_jquery.default)(root),timelineViewRoot),root.find(SELECTORS_NO_COURSES_EMPTY_MESSAGE).length||(function(root,timelineViewRoot){const timelineDaySelectorContainer=root.find(SELECTORS_TIMELINE_DAY_FILTER);CustomEvents.define(timelineDaySelectorContainer,[CustomEvents.events.activate]),timelineDaySelectorContainer.on(CustomEvents.events.activate,SELECTORS_TIMELINE_DAY_FILTER_OPTION,(function(e,data){var filtername=(0,_jquery.default)(e.currentTarget).data("filtername");UserRepository.setUserPreference("block_timeline_user_filter_preference",filtername).catch(Notification.exception);var option=(0,_jquery.default)(e.target).closest(SELECTORS_TIMELINE_DAY_FILTER_OPTION);if("true"!=option.attr("aria-current")){var daysOffset=option.attr("data-from"),daysLimit=option.attr("data-to"),elementsWithDaysOffset=root.find(SELECTORS_DATA_DAYS_OFFSET);elementsWithDaysOffset.attr("data-days-offset",daysOffset),null!=daysLimit?elementsWithDaysOffset.attr("data-days-limit",daysLimit):elementsWithDaysOffset.removeAttr("data-days-limit"),"overdue"===option.attr("data-filtername")?elementsWithDaysOffset.attr("data-filter-overdue",!0):elementsWithDaysOffset.removeAttr("data-filter-overdue"),View.reset(timelineViewRoot),data.originalEvent.preventDefault()}}))}(root,timelineViewRoot),((root,timelineViewRoot)=>{const searchInput=root.find(SELECTORS_TIMELINE_SEARCH_INPUT),clearSearchIcon=root.find(SELECTORS_TIMELINE_SEARCH_CLEAR_ICON);searchInput.on("input",Utils.debounce((()=>{""!==searchInput.val()?activeSearchState(clearSearchIcon,timelineViewRoot):clearSearchState(clearSearchIcon,timelineViewRoot)}),1e3)),clearSearchIcon.on("click",(()=>{searchInput.val(""),clearSearchState(clearSearchIcon,timelineViewRoot),searchInput.focus()}))})(root,timelineViewRoot))}}));
|
||||
|
||||
//# sourceMappingURL=view_nav.min.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -26,6 +26,7 @@ import * as View from 'block_timeline/view';
|
||||
import * as Notification from 'core/notification';
|
||||
import * as Utils from 'core/utils';
|
||||
import * as UserRepository from 'core_user/repository';
|
||||
import {getFirst} from 'core/normalise';
|
||||
|
||||
const SELECTORS = {
|
||||
TIMELINE_DAY_FILTER: '[data-region="day-filter"]',
|
||||
@@ -107,9 +108,11 @@ const registerViewSelector = function(root, timelineViewRoot) {
|
||||
|
||||
// Listen for when the user changes tab so that we can show the first set of courses
|
||||
// and load their events when they request the sort by courses view for the first time.
|
||||
viewSelector.on('shown shown.bs.tab', function(e) {
|
||||
View.shown(timelineViewRoot);
|
||||
$(e.target).removeClass('active');
|
||||
getFirst(viewSelector).querySelectorAll('[data-bs-toggle="tab"]').forEach((tab) => {
|
||||
tab.addEventListener('shown.bs.tab', (e) => {
|
||||
View.shown(timelineViewRoot);
|
||||
$(e.target).removeClass('active');
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
Vendored
+2
-2
@@ -1,4 +1,4 @@
|
||||
define("core_calendar/popover",["theme_boost/popover","jquery","core_calendar/selectors"],(function(_popover,_jquery,CalendarSelectors){var obj;
|
||||
define("core_calendar/popover",["theme_boost/bootstrap/popover","core_calendar/selectors"],(function(_popover,CalendarSelectors){var obj;
|
||||
/**
|
||||
* Javascript popover for the `core_calendar` subsystem.
|
||||
*
|
||||
@@ -6,6 +6,6 @@ define("core_calendar/popover",["theme_boost/popover","jquery","core_calendar/se
|
||||
* @copyright 2021 Huong Nguyen <huongnv13@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @since 4.0
|
||||
*/function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}_jquery=(obj=_jquery)&&obj.__esModule?obj:{default:obj},CalendarSelectors=function(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}newObj.default=obj,cache&&cache.set(obj,newObj);return newObj}(CalendarSelectors);const isPopoverConfigured=new Map,showPopover=target=>{const dateContainer=target.closest(CalendarSelectors.elements.dateContainer);if(!isPopoverConfigured.has(dateContainer)){(0,_jquery.default)(target).popover({trigger:"manual",placement:"top",html:!0,title:dateContainer.dataset.title,content:()=>{const source=(0,_jquery.default)(dateContainer).find(CalendarSelectors.elements.dateContent),content=(0,_jquery.default)("<div>");if(source.length){const temptContent=source.find(".hidden").clone(!1);content.html(temptContent.html())}return content.html()},animation:!1}),isPopoverConfigured.set(dateContainer,!0)}(dateContainer=>"none"===window.getComputedStyle(dateContainer.querySelector(CalendarSelectors.elements.dateContent)).display)(dateContainer)&&((0,_jquery.default)(target).popover("show"),target.addEventListener("mouseleave",hidePopover),target.addEventListener("focusout",hidePopover),target.addEventListener("click",hidePopover))},hidePopover=e=>{const target=e.target,dateContainer=e.target.closest(CalendarSelectors.elements.dateContainer);if(dateContainer&&isPopoverConfigured.has(dateContainer)){const isTargetActive=target.contains(document.activeElement),isTargetHover=target.matches(":hover"),isTargetClicked=document.activeElement.contains(target);let removeListener=!0;isTargetActive||isTargetHover?isTargetClicked?(0,_jquery.default)(document.activeElement).popover("hide"):removeListener=!1:(0,_jquery.default)(target).popover("hide"),removeListener&&(target.removeEventListener("mouseleave",hidePopover),target.removeEventListener("focusout",hidePopover),target.removeEventListener("click",hidePopover))}};let listenersRegistered=!1;listenersRegistered||((()=>{const showPopoverHandler=e=>{const dayLink=e.target.closest(CalendarSelectors.links.dayLink);dayLink&&(e.preventDefault(),showPopover(dayLink))};document.addEventListener("mouseover",showPopoverHandler),document.addEventListener("focusin",showPopoverHandler)})(),listenersRegistered=!0)}));
|
||||
*/function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}_popover=(obj=_popover)&&obj.__esModule?obj:{default:obj},CalendarSelectors=function(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}newObj.default=obj,cache&&cache.set(obj,newObj);return newObj}(CalendarSelectors);const isPopoverConfigured=new Map,showPopover=target=>{const dateContainer=target.closest(CalendarSelectors.elements.dateContainer);if(!isPopoverConfigured.has(dateContainer)){const config={trigger:"manual",placement:"top",html:!0,title:dateContainer.dataset.title,content:()=>{const source=dateContainer.querySelector(CalendarSelectors.elements.dateContent);return source?source.querySelector(".hidden").innerHTML:""},animation:!1};new _popover.default(target,config),isPopoverConfigured.set(dateContainer,!0)}(dateContainer=>"none"===window.getComputedStyle(dateContainer.querySelector(CalendarSelectors.elements.dateContent)).display)(dateContainer)&&(_popover.default.getInstance(target).show(),target.addEventListener("mouseleave",hidePopover),target.addEventListener("focusout",hidePopover),target.addEventListener("click",hidePopover))},hidePopover=e=>{const target=e.target,dateContainer=e.target.closest(CalendarSelectors.elements.dateContainer);if(dateContainer&&isPopoverConfigured.has(dateContainer)){const isTargetActive=target.contains(document.activeElement),isTargetHover=target.matches(":hover"),isTargetClicked=document.activeElement.contains(target);let removeListener=!0;isTargetActive||isTargetHover?isTargetClicked?_popover.default.getOrCreateInstance(document.activeElement).hide():removeListener=!1:_popover.default.getOrCreateInstance(target).hide(),removeListener&&(target.removeEventListener("mouseleave",hidePopover),target.removeEventListener("focusout",hidePopover),target.removeEventListener("click",hidePopover))}};let listenersRegistered=!1;listenersRegistered||((()=>{const showPopoverHandler=e=>{const dayLink=e.target.closest(CalendarSelectors.links.dayLink);dayLink&&(e.preventDefault(),showPopover(dayLink))};document.addEventListener("mouseover",showPopoverHandler),document.addEventListener("focusin",showPopoverHandler)})(),listenersRegistered=!0)}));
|
||||
|
||||
//# sourceMappingURL=popover.min.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -22,8 +22,7 @@
|
||||
* @since 4.0
|
||||
*/
|
||||
|
||||
import 'theme_boost/popover';
|
||||
import jQuery from 'jquery';
|
||||
import Popover from 'theme_boost/bootstrap/popover';
|
||||
import * as CalendarSelectors from 'core_calendar/selectors';
|
||||
|
||||
/**
|
||||
@@ -36,33 +35,27 @@ const isPopoverAvailable = (dateContainer) => {
|
||||
};
|
||||
|
||||
const isPopoverConfigured = new Map();
|
||||
|
||||
const showPopover = target => {
|
||||
const dateContainer = target.closest(CalendarSelectors.elements.dateContainer);
|
||||
if (!isPopoverConfigured.has(dateContainer)) {
|
||||
const dateEle = jQuery(target);
|
||||
dateEle.popover({
|
||||
const config = {
|
||||
trigger: 'manual',
|
||||
placement: 'top',
|
||||
html: true,
|
||||
title: dateContainer.dataset.title,
|
||||
content: () => {
|
||||
const source = jQuery(dateContainer).find(CalendarSelectors.elements.dateContent);
|
||||
const content = jQuery('<div>');
|
||||
if (source.length) {
|
||||
const temptContent = source.find('.hidden').clone(false);
|
||||
content.html(temptContent.html());
|
||||
}
|
||||
return content.html();
|
||||
const source = dateContainer.querySelector(CalendarSelectors.elements.dateContent);
|
||||
return source ? source.querySelector('.hidden').innerHTML : '';
|
||||
},
|
||||
'animation': false,
|
||||
});
|
||||
};
|
||||
new Popover(target, config);
|
||||
|
||||
isPopoverConfigured.set(dateContainer, true);
|
||||
}
|
||||
|
||||
if (isPopoverAvailable(dateContainer)) {
|
||||
jQuery(target).popover('show');
|
||||
Popover.getInstance(target).show();
|
||||
target.addEventListener('mouseleave', hidePopover);
|
||||
target.addEventListener('focusout', hidePopover);
|
||||
// Set up the hide function to the click event type.
|
||||
@@ -85,9 +78,9 @@ const hidePopover = e => {
|
||||
|
||||
let removeListener = true;
|
||||
if (!isTargetActive && !isTargetHover) {
|
||||
jQuery(target).popover('hide');
|
||||
Popover.getOrCreateInstance(target).hide();
|
||||
} else if (isTargetClicked) {
|
||||
jQuery(document.activeElement).popover('hide');
|
||||
Popover.getOrCreateInstance(document.activeElement).hide();
|
||||
} else {
|
||||
removeListener = false;
|
||||
}
|
||||
|
||||
@@ -50,8 +50,8 @@
|
||||
{{#js}}
|
||||
require(['jquery'], function($) {
|
||||
require(['theme_boost/bootstrap/popover'], function() {
|
||||
var target = $("#calendar-day-popover-link-{{courseid}}-{{year}}-{{yday}}-{{uniqid}}");
|
||||
target.popover({
|
||||
const target = document.getElementById("calendar-day-popover-link-{{courseid}}-{{year}}-{{yday}}-{{uniqid}}");
|
||||
new Popover(target, {
|
||||
content: function() {
|
||||
var source = target.next().find("> *:not('.hidden')");
|
||||
var content = $('<div>');
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
define("core_course/actionbar/initials",["exports","core/pending","core/url","core/custom_interaction_events","jquery"],(function(_exports,_pending,Url,_custom_interaction_events,_jquery){function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
define("core_course/actionbar/initials",["exports","core/pending","core/url","core/custom_interaction_events","theme_boost/bootstrap/dropdown"],(function(_exports,_pending,Url,_custom_interaction_events,_dropdown){function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
/**
|
||||
* A small dropdown to filter users.
|
||||
*
|
||||
* @module core_course/actionbar/initials
|
||||
* @copyright 2022 Mathew May <mathew.solutions>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_pending=_interopRequireDefault(_pending),Url=function(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}newObj.default=obj,cache&&cache.set(obj,newObj);return newObj}(Url),_custom_interaction_events=_interopRequireDefault(_custom_interaction_events),_jquery=_interopRequireDefault(_jquery);let registered=!1;const selectors_pageListItem="page-item",selectors_pageClickableItem=".page-link",selectors_activeItem="active",selectors_formDropdown=".initialsdropdownform",selectors_parentDomNode=".initials-selector",selectors_firstInitial="firstinitial",selectors_lastInitial="lastinitial",selectors_initialBars=".initialbar",selectors_targetButton="initialswidget",selectors_formItems={type:"submit",save:"save",cancel:"cancel"};_exports.init=function(callingLink){let firstInitialParam=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"sifirst",lastInitialParam=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"silast",additionalParams=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];if(registered)return;const pendingPromise=new _pending.default;registerListenerEvents(callingLink,firstInitialParam,lastInitialParam,additionalParams),(0,_jquery.default)(selectors_parentDomNode).on("shown.bs.dropdown",(()=>{document.querySelector(selectors_pageClickableItem).focus({preventScroll:!0})})),pendingPromise.resolve(),registered=!0};const registerListenerEvents=function(callingLink){let firstInitialParam=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"sifirst",lastInitialParam=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"silast",additionalParams=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];const events=["click",_custom_interaction_events.default.events.activate,_custom_interaction_events.default.events.keyboardActivate];_custom_interaction_events.default.define(document,events),events.forEach((event=>{document.addEventListener(event,(e=>{let{firstActive:firstActive,lastActive:lastActive,sifirst:sifirst,silast:silast}=onClickVariables(),itemToReset="";if(e.target.closest(selectors_formDropdown)&&e.preventDefault(),e.target.closest("".concat(selectors_formDropdown," .").concat(selectors_pageListItem))){if(e.target.classList.contains(selectors_pageListItem))return;e.target.closest(selectors_initialBars).classList.contains(selectors_firstInitial)?(sifirst=e.target,itemToReset=firstActive):(silast=e.target,itemToReset=lastActive),swapActiveItems(itemToReset,e)}if(e.target.closest("".concat(selectors_formDropdown))&&e.target.type===selectors_formItems.type){if(e.target.dataset.action===selectors_formItems.save){const params={id:e.target.closest(selectors_formDropdown).dataset.courseid,[firstInitialParam]:sifirst.parentElement.classList.contains("initialbarall")?"":sifirst.value,[lastInitialParam]:silast.parentElement.classList.contains("initialbarall")?"":silast.value};for(const[key,value]of Object.entries(additionalParams))params[key]=value;window.location=Url.relativeUrl(callingLink,params)}e.target.dataset.action===selectors_formItems.cancel&&(0,_jquery.default)(".".concat(selectors_targetButton)).dropdown("toggle")}}))}))},onClickVariables=()=>{const firstItems=[...document.querySelectorAll(".".concat(selectors_firstInitial," li"))],lastItems=[...document.querySelectorAll(".".concat(selectors_lastInitial," li"))],firstActive=firstItems.filter((item=>item.classList.contains(selectors_activeItem)))[0],lastActive=lastItems.filter((item=>item.classList.contains(selectors_activeItem)))[0];let sifirst=firstActive.querySelector(selectors_pageClickableItem),silast=lastActive.querySelector(selectors_pageClickableItem);return{firstActive:firstActive,lastActive:lastActive,sifirst:sifirst,silast:silast}},swapActiveItems=(itemToReset,e)=>{itemToReset.classList.remove(selectors_activeItem),itemToReset.querySelector(selectors_pageClickableItem).ariaCurrent=!1;e.target.parentElement.classList.add(selectors_activeItem),e.target.ariaCurrent=!0}}));
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_pending=_interopRequireDefault(_pending),Url=function(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}newObj.default=obj,cache&&cache.set(obj,newObj);return newObj}(Url),_custom_interaction_events=_interopRequireDefault(_custom_interaction_events),_dropdown=_interopRequireDefault(_dropdown);let registered=!1;const selectors_pageListItem="page-item",selectors_pageClickableItem=".page-link",selectors_activeItem="active",selectors_formDropdown=".initialsdropdownform",selectors_parentDomNode=".initials-selector",selectors_firstInitial="firstinitial",selectors_lastInitial="lastinitial",selectors_initialBars=".initialbar",selectors_targetButton="initialswidget",selectors_formItems={type:"submit",save:"save",cancel:"cancel"};_exports.init=function(callingLink){let firstInitialParam=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"sifirst",lastInitialParam=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"silast",additionalParams=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];if(registered)return;const pendingPromise=new _pending.default;registerListenerEvents(callingLink,firstInitialParam,lastInitialParam,additionalParams),document.querySelector(selectors_parentDomNode).addEventListener("shown.bs.dropdown",(()=>{document.querySelector(selectors_pageClickableItem).focus({preventScroll:!0})})),pendingPromise.resolve(),registered=!0};const registerListenerEvents=function(callingLink){let firstInitialParam=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"sifirst",lastInitialParam=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"silast",additionalParams=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];const events=["click",_custom_interaction_events.default.events.activate,_custom_interaction_events.default.events.keyboardActivate];_custom_interaction_events.default.define(document,events),events.forEach((event=>{document.addEventListener(event,(e=>{let{firstActive:firstActive,lastActive:lastActive,sifirst:sifirst,silast:silast}=onClickVariables(),itemToReset="";if(e.target.closest(selectors_formDropdown)&&e.preventDefault(),e.target.closest("".concat(selectors_formDropdown," .").concat(selectors_pageListItem))){if(e.target.classList.contains(selectors_pageListItem))return;e.target.closest(selectors_initialBars).classList.contains(selectors_firstInitial)?(sifirst=e.target,itemToReset=firstActive):(silast=e.target,itemToReset=lastActive),swapActiveItems(itemToReset,e)}if(e.target.closest("".concat(selectors_formDropdown))&&e.target.type===selectors_formItems.type){if(e.target.dataset.action===selectors_formItems.save){const params={id:e.target.closest(selectors_formDropdown).dataset.courseid,[firstInitialParam]:sifirst.parentElement.classList.contains("initialbarall")?"":sifirst.value,[lastInitialParam]:silast.parentElement.classList.contains("initialbarall")?"":silast.value};for(const[key,value]of Object.entries(additionalParams))params[key]=value;window.location=Url.relativeUrl(callingLink,params)}e.target.dataset.action===selectors_formItems.cancel&&_dropdown.default.getOrCreateInstance(document.querySelector(".".concat(selectors_targetButton))).toggle()}}))}))},onClickVariables=()=>{const firstItems=[...document.querySelectorAll(".".concat(selectors_firstInitial," li"))],lastItems=[...document.querySelectorAll(".".concat(selectors_lastInitial," li"))],firstActive=firstItems.filter((item=>item.classList.contains(selectors_activeItem)))[0],lastActive=lastItems.filter((item=>item.classList.contains(selectors_activeItem)))[0];let sifirst=firstActive.querySelector(selectors_pageClickableItem),silast=lastActive.querySelector(selectors_pageClickableItem);return{firstActive:firstActive,lastActive:lastActive,sifirst:sifirst,silast:silast}},swapActiveItems=(itemToReset,e)=>{itemToReset.classList.remove(selectors_activeItem),itemToReset.querySelector(selectors_pageClickableItem).ariaCurrent=!1;e.target.parentElement.classList.add(selectors_activeItem),e.target.ariaCurrent=!0}}));
|
||||
|
||||
//# sourceMappingURL=initials.min.js.map
|
||||
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -24,7 +24,7 @@
|
||||
import Pending from 'core/pending';
|
||||
import * as Url from 'core/url';
|
||||
import CustomEvents from "core/custom_interaction_events";
|
||||
import $ from 'jquery';
|
||||
import Dropdown from 'theme_boost/bootstrap/dropdown';
|
||||
|
||||
/**
|
||||
* Whether the event listener has already been registered for this module.
|
||||
@@ -67,7 +67,7 @@ export const init = (callingLink, firstInitialParam = 'sifirst',
|
||||
const pendingPromise = new Pending();
|
||||
registerListenerEvents(callingLink, firstInitialParam, lastInitialParam, additionalParams);
|
||||
// BS events always bubble so, we need to listen for the event higher up the chain.
|
||||
$(selectors.parentDomNode).on('shown.bs.dropdown', () => {
|
||||
document.querySelector(selectors.parentDomNode).addEventListener('shown.bs.dropdown', () => {
|
||||
document.querySelector(selectors.pageClickableItem).focus({preventScroll: true});
|
||||
});
|
||||
pendingPromise.resolve();
|
||||
@@ -142,7 +142,7 @@ const registerListenerEvents = (callingLink, firstInitialParam = 'sifirst',
|
||||
window.location = Url.relativeUrl(callingLink, params);
|
||||
}
|
||||
if (e.target.dataset.action === selectors.formItems.cancel) {
|
||||
$(`.${selectors.targetButton}`).dropdown('toggle');
|
||||
Dropdown.getOrCreateInstance(document.querySelector(`.${selectors.targetButton}`)).toggle();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
import $ from 'jquery';
|
||||
import Carousel from 'theme_boost/bootstrap/carousel';
|
||||
import * as ModalEvents from 'core/modal_events';
|
||||
import selectors from 'core_course/local/activitychooser/selectors';
|
||||
import * as Templates from 'core/templates';
|
||||
@@ -30,13 +30,14 @@ import {addIconToContainer} from 'core/loadingicon';
|
||||
import * as Repository from 'core_course/local/activitychooser/repository';
|
||||
import Notification from 'core/notification';
|
||||
import {debounce} from 'core/utils';
|
||||
import {getFirst} from 'core/normalise';
|
||||
const getPlugin = pluginName => import(pluginName);
|
||||
|
||||
/**
|
||||
* Given an event from the main module 'page' navigate to it's help section via a carousel.
|
||||
*
|
||||
* @method showModuleHelp
|
||||
* @param {jQuery} carousel Our initialized carousel to manipulate
|
||||
* @param {Element} carousel Our initialized carousel to manipulate
|
||||
* @param {Object} moduleData Data of the module to carousel to
|
||||
* @param {jQuery} modal We need to figure out if the current modal has a footer.
|
||||
*/
|
||||
@@ -45,7 +46,7 @@ const showModuleHelp = (carousel, moduleData, modal = null) => {
|
||||
if (modal !== null && moduleData.showFooter === true) {
|
||||
modal.setFooter(Templates.render('core_course/local/activitychooser/footer_partial', moduleData));
|
||||
}
|
||||
const help = carousel.find(selectors.regions.help)[0];
|
||||
const help = carousel.querySelector(selectors.regions.help);
|
||||
help.innerHTML = '';
|
||||
help.classList.add('m-auto');
|
||||
|
||||
@@ -71,11 +72,11 @@ const showModuleHelp = (carousel, moduleData, modal = null) => {
|
||||
.catch(Notification.exception);
|
||||
|
||||
// Move to the next slide, and resolve the transition promise when it's done.
|
||||
carousel.one('slid.bs.carousel', () => {
|
||||
carousel.addEventListener('slid.bs.carousel', () => {
|
||||
transitionPromiseResolver();
|
||||
});
|
||||
}, {once: true});
|
||||
// Trigger the transition between 'pages'.
|
||||
carousel.carousel('next');
|
||||
Carousel.getInstance(carousel).next();
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -115,9 +116,10 @@ const manageFavouriteState = async(modalBody, caller, partialFavourite) => {
|
||||
* @param {Object} footerData Our base footer object.
|
||||
*/
|
||||
const registerListenerEvents = (modal, mappedModules, partialFavourite, footerData) => {
|
||||
const modalBody = getFirst(modal.getBody());
|
||||
const bodyClickListener = async(e) => {
|
||||
if (e.target.closest(selectors.actions.optionActions.showSummary)) {
|
||||
const carousel = $(modal.getBody()[0].querySelector(selectors.regions.carousel));
|
||||
const carousel = modalBody.querySelector(selectors.regions.carousel);
|
||||
|
||||
const module = e.target.closest(selectors.regions.chooserOption.container);
|
||||
const moduleName = module.dataset.modname;
|
||||
@@ -129,24 +131,24 @@ const registerListenerEvents = (modal, mappedModules, partialFavourite, footerDa
|
||||
|
||||
if (e.target.closest(selectors.actions.optionActions.manageFavourite)) {
|
||||
const caller = e.target.closest(selectors.actions.optionActions.manageFavourite);
|
||||
await manageFavouriteState(modal.getBody()[0], caller, partialFavourite);
|
||||
const activeSectionId = modal.getBody()[0].querySelector(selectors.elements.activetab).getAttribute("href");
|
||||
const sectionChooserOptions = modal.getBody()[0]
|
||||
await manageFavouriteState(modalBody, caller, partialFavourite);
|
||||
const activeSectionId = modalBody.querySelector(selectors.elements.activetab).getAttribute("href");
|
||||
const sectionChooserOptions = modalBody
|
||||
.querySelector(selectors.regions.getSectionChooserOptions(activeSectionId));
|
||||
const firstChooserOption = sectionChooserOptions
|
||||
.querySelector(selectors.regions.chooserOption.container);
|
||||
toggleFocusableChooserOption(firstChooserOption, true);
|
||||
initChooserOptionsKeyboardNavigation(modal.getBody()[0], mappedModules, sectionChooserOptions, modal);
|
||||
initChooserOptionsKeyboardNavigation(modalBody, mappedModules, sectionChooserOptions, modal);
|
||||
}
|
||||
|
||||
// From the help screen go back to the module overview.
|
||||
if (e.target.matches(selectors.actions.closeOption)) {
|
||||
const carousel = $(modal.getBody()[0].querySelector(selectors.regions.carousel));
|
||||
const carousel = modalBody.querySelector(selectors.regions.carousel);
|
||||
|
||||
// Trigger the transition between 'pages'.
|
||||
carousel.carousel('prev');
|
||||
carousel.on('slid.bs.carousel', () => {
|
||||
const allModules = modal.getBody()[0].querySelector(selectors.regions.modules);
|
||||
Carousel.getInstance(carousel).prev();
|
||||
carousel.addEventListener('slid.bs.carousel', () => {
|
||||
const allModules = modalBody.querySelector(selectors.regions.modules);
|
||||
const caller = allModules.querySelector(selectors.regions.getModuleSelector(e.target.dataset.modname));
|
||||
caller.focus();
|
||||
});
|
||||
@@ -155,7 +157,7 @@ const registerListenerEvents = (modal, mappedModules, partialFavourite, footerDa
|
||||
// The "clear search" button is triggered.
|
||||
if (e.target.closest(selectors.actions.clearSearch)) {
|
||||
// Clear the entered search query in the search bar and hide the search results container.
|
||||
const searchInput = modal.getBody()[0].querySelector(selectors.actions.search);
|
||||
const searchInput = modalBody.querySelector(selectors.actions.search);
|
||||
searchInput.value = "";
|
||||
searchInput.focus();
|
||||
toggleSearchResultsView(modal, mappedModules, searchInput.value);
|
||||
@@ -180,12 +182,12 @@ const registerListenerEvents = (modal, mappedModules, partialFavourite, footerDa
|
||||
|
||||
// Set up the carousel.
|
||||
.then(body => {
|
||||
$(body.querySelector(selectors.regions.carousel))
|
||||
.carousel({
|
||||
const carousel = document.querySelector(selectors.regions.carousel);
|
||||
new Carousel(carousel, {
|
||||
interval: false,
|
||||
pause: true,
|
||||
keyboard: false
|
||||
});
|
||||
});
|
||||
|
||||
return body;
|
||||
})
|
||||
@@ -219,7 +221,7 @@ const registerListenerEvents = (modal, mappedModules, partialFavourite, footerDa
|
||||
|
||||
return body;
|
||||
})
|
||||
.catch();
|
||||
.catch(Notification.exception);
|
||||
|
||||
modal.getFooterPromise()
|
||||
|
||||
@@ -230,7 +232,7 @@ const registerListenerEvents = (modal, mappedModules, partialFavourite, footerDa
|
||||
footer.addEventListener('click', footerClickListener);
|
||||
return footer;
|
||||
})
|
||||
.catch();
|
||||
.catch(Notification.exception);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -255,8 +257,8 @@ const initChooserOptionsKeyboardNavigation = (body, mappedModules, chooserOption
|
||||
const module = e.target.closest(selectors.regions.chooserOption.container);
|
||||
const moduleName = module.dataset.modname;
|
||||
const moduleData = mappedModules.get(moduleName);
|
||||
const carousel = $(body.querySelector(selectors.regions.carousel));
|
||||
carousel.carousel({
|
||||
const carousel = document.querySelector(selectors.regions.carousel);
|
||||
new Carousel({
|
||||
interval: false,
|
||||
pause: true,
|
||||
keyboard: false
|
||||
@@ -458,21 +460,23 @@ const setupKeyboardAccessibility = (modal, mappedModules) => {
|
||||
modal.getModal()[0].tabIndex = -1;
|
||||
|
||||
modal.getBodyPromise().then(body => {
|
||||
$(selectors.elements.tab).on('shown.bs.tab', (e) => {
|
||||
const activeSectionId = e.target.getAttribute("href");
|
||||
const activeSectionChooserOptions = body[0]
|
||||
.querySelector(selectors.regions.getSectionChooserOptions(activeSectionId));
|
||||
const firstChooserOption = activeSectionChooserOptions
|
||||
.querySelector(selectors.regions.chooserOption.container);
|
||||
const prevActiveSectionId = e.relatedTarget.getAttribute("href");
|
||||
const prevActiveSectionChooserOptions = body[0]
|
||||
.querySelector(selectors.regions.getSectionChooserOptions(prevActiveSectionId));
|
||||
document.querySelectorAll(selectors.elements.tab).forEach((tab) => {
|
||||
tab.addEventListener('shown.bs.tab', (e) => {
|
||||
const activeSectionId = e.target.getAttribute("href");
|
||||
const activeSectionChooserOptions = body[0]
|
||||
.querySelector(selectors.regions.getSectionChooserOptions(activeSectionId));
|
||||
const firstChooserOption = activeSectionChooserOptions
|
||||
.querySelector(selectors.regions.chooserOption.container);
|
||||
const prevActiveSectionId = e.relatedTarget.getAttribute("href");
|
||||
const prevActiveSectionChooserOptions = body[0]
|
||||
.querySelector(selectors.regions.getSectionChooserOptions(prevActiveSectionId));
|
||||
|
||||
// Disable the focus of every chooser option in the previous active section.
|
||||
disableFocusAllChooserOptions(prevActiveSectionChooserOptions);
|
||||
// Enable the focus of the first chooser option in the current active section.
|
||||
toggleFocusableChooserOption(firstChooserOption, true);
|
||||
initChooserOptionsKeyboardNavigation(body[0], mappedModules, activeSectionChooserOptions, modal);
|
||||
// Disable the focus of every chooser option in the previous active section.
|
||||
disableFocusAllChooserOptions(prevActiveSectionChooserOptions);
|
||||
// Enable the focus of the first chooser option in the current active section.
|
||||
toggleFocusableChooserOption(firstChooserOption, true);
|
||||
initChooserOptionsKeyboardNavigation(body[0], mappedModules, activeSectionChooserOptions, modal);
|
||||
});
|
||||
});
|
||||
return;
|
||||
}).catch(Notification.exception);
|
||||
@@ -520,5 +524,5 @@ export const displayChooser = (modalPromise, sectionModules, partialFavourite, f
|
||||
});
|
||||
|
||||
return modal;
|
||||
}).catch();
|
||||
}).catch(Notification.exception);
|
||||
};
|
||||
|
||||
+2
-2
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2
-2
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
define("core_courseformat/local/courseeditor/contenttree",["exports","jquery","core/tree","core/normalise"],(function(_exports,_jquery,_tree,_normalise){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
define("core_courseformat/local/courseeditor/contenttree",["exports","theme_boost/bootstrap/collapse","jquery","core/tree","core/normalise"],(function(_exports,_collapse,_jquery,_tree,_normalise){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
/**
|
||||
* Course index keyboard navigation and aria-tree compatibility.
|
||||
*
|
||||
@@ -10,6 +10,6 @@ define("core_courseformat/local/courseeditor/contenttree",["exports","jquery","c
|
||||
* @class core_courseformat/local/courseeditor/contenttree
|
||||
* @copyright 2021 Ferran Recio <ferran@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_jquery=_interopRequireDefault(_jquery),_tree=_interopRequireDefault(_tree);class _default extends _tree.default{constructor(mainElement,selectors,preventcache){var _selectors$ENTER;super(mainElement),this.selectors={SECTION:selectors.SECTION,TOGGLER:selectors.TOGGLER,COLLAPSE:selectors.COLLAPSE,ENTER:null!==(_selectors$ENTER=selectors.ENTER)&&void 0!==_selectors$ENTER?_selectors$ENTER:selectors.TOGGLER},preventcache&&(this._getVisibleItems=this.getVisibleItems,this.getVisibleItems=()=>(this.refreshVisibleItemsCache(),this._getVisibleItems())),this.treeRoot.on("hidden.bs.collapse shown.bs.collapse",(()=>{this.refreshVisibleItemsCache()})),this.registerEnterCallback(this.enterCallback.bind(this))}getActiveItem(){const activeItem=this.treeRoot.data("activeItem");if(activeItem)return(0,_normalise.getList)(activeItem)[0]}enterCallback(jQueryItem){const item=(0,_normalise.getList)(jQueryItem)[0];if(this.isGroupItem(jQueryItem)){const enter=item.querySelector(this.selectors.ENTER);"#"!==enter.getAttribute("href")&&(window.location.href=enter.getAttribute("href")),enter.click()}else{const link=item.querySelector("a");"#"!==link.getAttribute("href")?window.location.href=link.getAttribute("href"):link.click()}}handleItemClick(event,jQueryItem){event.target.closest(this.selectors.COLLAPSE)?super.handleItemClick(event,jQueryItem):(jQueryItem.focus(),this.isGroupItem(jQueryItem)&&this.expandGroup(jQueryItem))}isGroupCollapsed(jQueryItem){return"false"===(0,_normalise.getList)(jQueryItem)[0].querySelector("[aria-expanded]").getAttribute("aria-expanded")}toggleGroup(item){var _toggler$data;const toggler=item.find(this.selectors.COLLAPSE);let collapsibleId=null!==(_toggler$data=toggler.data("target"))&&void 0!==_toggler$data?_toggler$data:toggler.attr("href");if(!collapsibleId)return;collapsibleId=collapsibleId.replace("#","");(0,_jquery.default)("#".concat(collapsibleId)).length&&(0,_jquery.default)("#".concat(collapsibleId)).collapse("toggle")}expandGroup(item){this.isGroupCollapsed(item)&&this.toggleGroup(item)}collapseGroup(item){this.isGroupCollapsed(item)||this.toggleGroup(item)}expandAllGroups(){(0,_normalise.getList)(this.treeRoot)[0].querySelectorAll(this.selectors.SECTION).forEach((item=>{this.expandGroup((0,_jquery.default)(item))}))}}return _exports.default=_default,_exports.default}));
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_collapse=_interopRequireDefault(_collapse),_jquery=_interopRequireDefault(_jquery),_tree=_interopRequireDefault(_tree);class _default extends _tree.default{constructor(mainElement,selectors,preventcache){var _selectors$ENTER;super(mainElement),this.selectors={SECTION:selectors.SECTION,TOGGLER:selectors.TOGGLER,COLLAPSE:selectors.COLLAPSE,ENTER:null!==(_selectors$ENTER=selectors.ENTER)&&void 0!==_selectors$ENTER?_selectors$ENTER:selectors.TOGGLER},preventcache&&(this._getVisibleItems=this.getVisibleItems,this.getVisibleItems=()=>(this.refreshVisibleItemsCache(),this._getVisibleItems())),this.treeRoot[0].querySelectorAll(selectors.COLLAPSE).forEach((toggler=>{const collapsible=document.getElementById(toggler.getAttribute("href").replace("#",""));collapsible.addEventListener("hidden.bs.collapse",(()=>this.refreshVisibleItemsCache())),collapsible.addEventListener("shown.bs.collapse",(()=>this.refreshVisibleItemsCache()))})),this.registerEnterCallback(this.enterCallback.bind(this))}getActiveItem(){const activeItem=this.treeRoot.data("activeItem");if(activeItem)return(0,_normalise.getList)(activeItem)[0]}enterCallback(jQueryItem){const item=(0,_normalise.getList)(jQueryItem)[0];if(this.isGroupItem(jQueryItem)){const enter=item.querySelector(this.selectors.ENTER);"#"!==enter.getAttribute("href")&&(window.location.href=enter.getAttribute("href")),enter.click()}else{const link=item.querySelector("a");"#"!==link.getAttribute("href")?window.location.href=link.getAttribute("href"):link.click()}}handleItemClick(event,jQueryItem){event.target.closest(this.selectors.COLLAPSE)?super.handleItemClick(event,jQueryItem):(jQueryItem.focus(),this.isGroupItem(jQueryItem)&&this.expandGroup(jQueryItem))}isGroupCollapsed(jQueryItem){return"false"===(0,_normalise.getList)(jQueryItem)[0].querySelector("[aria-expanded]").getAttribute("aria-expanded")}toggleGroup(item){var _toggler$dataset$targ,_toggler$dataset;const toggler=(0,_normalise.getFirst)(item).querySelector(this.selectors.COLLAPSE);let collapsibleId=null!==(_toggler$dataset$targ=null===(_toggler$dataset=toggler.dataset)||void 0===_toggler$dataset?void 0:_toggler$dataset.target)&&void 0!==_toggler$dataset$targ?_toggler$dataset$targ:toggler.getAttribute("href");if(!collapsibleId)return;collapsibleId=collapsibleId.replace("#","");const collapsible=document.getElementById(collapsibleId);collapsible&&_collapse.default.getOrCreateInstance(collapsible).toggle()}expandGroup(item){this.isGroupCollapsed(item)&&this.toggleGroup(item)}collapseGroup(item){this.isGroupCollapsed(item)||this.toggleGroup(item)}expandAllGroups(){(0,_normalise.getList)(this.treeRoot)[0].querySelectorAll(this.selectors.SECTION).forEach((item=>{this.expandGroup((0,_jquery.default)(item))}))}}return _exports.default=_default,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=contenttree.min.js.map
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -23,6 +23,7 @@
|
||||
*/
|
||||
|
||||
import {BaseComponent} from 'core/reactive';
|
||||
import Collapse from 'theme_boost/bootstrap/collapse';
|
||||
import {throttle, debounce} from 'core/utils';
|
||||
import {getCurrentCourseEditor} from 'core_courseformat/courseeditor';
|
||||
import Config from 'core/config';
|
||||
@@ -33,8 +34,6 @@ import Fragment from 'core/fragment';
|
||||
import Templates from 'core/templates';
|
||||
import DispatchActions from 'core_courseformat/local/content/actions';
|
||||
import * as CourseEvents from 'core_course/events';
|
||||
// The jQuery module is only used for interacting with Boostrap 4. It can we removed when MDL-71979 is integrated.
|
||||
import jQuery from 'jquery';
|
||||
import Pending from 'core/pending';
|
||||
import log from "core/log";
|
||||
|
||||
@@ -270,9 +269,9 @@ export default class Component extends BaseComponent {
|
||||
}
|
||||
|
||||
/**
|
||||
* Update section collapsed state via bootstrap 4 if necessary.
|
||||
* Update section collapsed state via bootstrap if necessary.
|
||||
*
|
||||
* Formats that do not use bootstrap 4 must override this method in order to keep the section
|
||||
* Formats that do not use bootstrap must override this method in order to keep the section
|
||||
* toggling working.
|
||||
*
|
||||
* @param {object} args
|
||||
@@ -298,11 +297,11 @@ export default class Component extends BaseComponent {
|
||||
if (!collapsible) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Course index is based on Bootstrap 4 collapsibles. To collapse them we need jQuery to
|
||||
// interact with collapsibles methods. Hopefully, this will change in Bootstrap 5 because
|
||||
// it does not require jQuery anymore (when MDL-71979 is integrated).
|
||||
jQuery(collapsible).collapse(element.contentcollapsed ? 'hide' : 'show');
|
||||
if (element.contentcollapsed) {
|
||||
Collapse.getOrCreateInstance(collapsible, {toggle: false}).hide();
|
||||
} else {
|
||||
Collapse.getOrCreateInstance(collapsible, {toggle: false}).show();
|
||||
}
|
||||
}
|
||||
|
||||
this._refreshAllSectionsToggler(state);
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
|
||||
import {BaseComponent} from 'core/reactive';
|
||||
import {eventTypes} from 'core/local/inplace_editable/events';
|
||||
import Collapse from 'theme_boost/bootstrap/collapse';
|
||||
import Modal from 'core/modal';
|
||||
import ModalSaveCancel from 'core/modal_save_cancel';
|
||||
import ModalDeleteCancel from 'core/modal_delete_cancel';
|
||||
@@ -41,7 +42,6 @@ import * as CourseEvents from 'core_course/events';
|
||||
import Pending from 'core/pending';
|
||||
import ContentTree from 'core_courseformat/local/courseeditor/contenttree';
|
||||
// The jQuery module is only used for interacting with Boostrap 4. It can we removed when MDL-71979 is integrated.
|
||||
import jQuery from 'jquery';
|
||||
import Notification from "core/notification";
|
||||
|
||||
// Load global strings.
|
||||
@@ -395,8 +395,6 @@ export default class extends BaseComponent {
|
||||
}
|
||||
);
|
||||
|
||||
// Open the cm section node if possible (Bootstrap 4 uses jQuery to interact with collapsibles).
|
||||
// All jQuery in this code can be replaced when MDL-71979 is integrated.
|
||||
cmIds.forEach(cmId => {
|
||||
const cmInfo = this.reactive.get('cm', cmId);
|
||||
let selector;
|
||||
@@ -453,9 +451,6 @@ export default class extends BaseComponent {
|
||||
/**
|
||||
* Expand all the modal tree branches that contains the element.
|
||||
*
|
||||
* Bootstrap 4 uses jQuery to interact with collapsibles.
|
||||
* All jQuery in this code can be replaced when MDL-71979 is integrated.
|
||||
*
|
||||
* @private
|
||||
* @param {HTMLElement} modalBody the modal body element
|
||||
* @param {HTMLElement} element the element to display
|
||||
@@ -466,13 +461,13 @@ export default class extends BaseComponent {
|
||||
return;
|
||||
}
|
||||
|
||||
const toggler = jQuery(sectionnode).find(this.selectors.MODALTOGGLER);
|
||||
let collapsibleId = toggler.data('target') ?? toggler.attr('href');
|
||||
const toggler = sectionnode.querySelector(this.selectors.MODALTOGGLER);
|
||||
let collapsibleId = toggler.dataset.target ?? toggler.getAttribute('href');
|
||||
if (collapsibleId) {
|
||||
// We cannot be sure we have # in the id element name.
|
||||
collapsibleId = collapsibleId.replace('#', '');
|
||||
const expandNode = modalBody.querySelector(`#${collapsibleId}`);
|
||||
jQuery(expandNode).collapse('show');
|
||||
new Collapse(expandNode, {toggle: false}).show();
|
||||
}
|
||||
|
||||
// Section are a tree structure, we need to expand all the parents.
|
||||
|
||||
@@ -27,9 +27,10 @@
|
||||
*/
|
||||
|
||||
// The core/tree uses jQuery to expand all nodes.
|
||||
import Collapse from 'theme_boost/bootstrap/collapse';
|
||||
import jQuery from 'jquery';
|
||||
import Tree from 'core/tree';
|
||||
import {getList} from 'core/normalise';
|
||||
import {getList, getFirst} from 'core/normalise';
|
||||
|
||||
export default class extends Tree {
|
||||
|
||||
@@ -61,9 +62,10 @@ export default class extends Tree {
|
||||
return this._getVisibleItems();
|
||||
};
|
||||
}
|
||||
// All jQuery events can be replaced when MDL-71979 is integrated.
|
||||
this.treeRoot.on('hidden.bs.collapse shown.bs.collapse', () => {
|
||||
this.refreshVisibleItemsCache();
|
||||
this.treeRoot[0].querySelectorAll(selectors.COLLAPSE).forEach(toggler => {
|
||||
const collapsible = document.getElementById(toggler.getAttribute('href').replace('#', ''));
|
||||
collapsible.addEventListener('hidden.bs.collapse', () => this.refreshVisibleItemsCache());
|
||||
collapsible.addEventListener('shown.bs.collapse', () => this.refreshVisibleItemsCache());
|
||||
});
|
||||
// Register a custom callback for pressing enter key.
|
||||
this.registerEnterCallback(this.enterCallback.bind(this));
|
||||
@@ -146,18 +148,16 @@ export default class extends Tree {
|
||||
* @param {JQuery} item the jQuery object
|
||||
*/
|
||||
toggleGroup(item) {
|
||||
// All jQuery in this segment of code can be replaced when MDL-71979 is integrated.
|
||||
const toggler = item.find(this.selectors.COLLAPSE);
|
||||
let collapsibleId = toggler.data('target') ?? toggler.attr('href');
|
||||
const toggler = getFirst(item).querySelector(this.selectors.COLLAPSE);
|
||||
let collapsibleId = toggler.dataset?.target ?? toggler.getAttribute('href');
|
||||
if (!collapsibleId) {
|
||||
return;
|
||||
}
|
||||
collapsibleId = collapsibleId.replace('#', '');
|
||||
|
||||
// Bootstrap 4 uses jQuery to interact with collapsibles.
|
||||
const collapsible = jQuery(`#${collapsibleId}`);
|
||||
if (collapsible.length) {
|
||||
jQuery(`#${collapsibleId}`).collapse('toggle');
|
||||
const collapsible = document.getElementById(collapsibleId);
|
||||
if (collapsible) {
|
||||
Collapse.getOrCreateInstance(collapsible).toggle();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
*/
|
||||
|
||||
import {BaseComponent} from 'core/reactive';
|
||||
import Collapse from 'theme_boost/bootstrap/collapse';
|
||||
import {getCurrentCourseEditor} from 'core_courseformat/courseeditor';
|
||||
import jQuery from 'jquery';
|
||||
import ContentTree from 'core_courseformat/local/courseeditor/contenttree';
|
||||
import log from "core/log";
|
||||
|
||||
@@ -197,11 +197,11 @@ export default class Component extends BaseComponent {
|
||||
forceValue = (element.indexcollapsed) ? false : true;
|
||||
}
|
||||
|
||||
// Course index is based on Bootstrap 4 collapsibles. To collapse them we need jQuery to
|
||||
// interact with collapsibles methods. Hopefully, this will change in Bootstrap 5 because
|
||||
// it does not require jQuery anymore (when MDL-71979 is integrated).
|
||||
const togglerValue = (forceValue) ? 'show' : 'hide';
|
||||
jQuery(collapsible).collapse(togglerValue);
|
||||
if (forceValue) {
|
||||
Collapse.getOrCreateInstance(collapsible, {toggle: false}).show();
|
||||
} else {
|
||||
Collapse.getOrCreateInstance(collapsible, {toggle: false}).hide();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2
-2
@@ -1,4 +1,4 @@
|
||||
define("core_grades/searchwidget/initials",["exports","core/pending","core/url","core/custom_interaction_events","jquery"],(function(_exports,_pending,Url,_custom_interaction_events,_jquery){function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
define("core_grades/searchwidget/initials",["exports","core/pending","core/url","core/custom_interaction_events","theme_boost/bootstrap/dropdown"],(function(_exports,_pending,Url,_custom_interaction_events,_dropdown){function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
/**
|
||||
* A small dropdown to filter users within the gradebook.
|
||||
*
|
||||
@@ -7,6 +7,6 @@ define("core_grades/searchwidget/initials",["exports","core/pending","core/url",
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @deprecated since Moodle 4.5 - please use core_course/actionbar/initials instead.
|
||||
* @todo Final deprecation in Moodle 6.0. See MDL-82421.
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_pending=_interopRequireDefault(_pending),Url=function(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}newObj.default=obj,cache&&cache.set(obj,newObj);return newObj}(Url),_custom_interaction_events=_interopRequireDefault(_custom_interaction_events),_jquery=_interopRequireDefault(_jquery);let registered=!1;const selectors_pageListItem="page-item",selectors_pageClickableItem=".page-link",selectors_activeItem="active",selectors_formDropdown=".initialsdropdownform",selectors_parentDomNode=".initials-selector",selectors_firstInitial="firstinitial",selectors_lastInitial="lastinitial",selectors_initialBars=".initialbar",selectors_targetButton="initialswidget",selectors_formItems={type:"submit",save:"save",cancel:"cancel"};_exports.init=function(callingLink){let gpr_userid=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,gpr_search=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(registered)return;const pendingPromise=new _pending.default;registerListenerEvents(callingLink,gpr_userid,gpr_search),(0,_jquery.default)(selectors_parentDomNode).on("shown.bs.dropdown",(()=>{document.querySelector(selectors_pageClickableItem).focus({preventScroll:!0})})),pendingPromise.resolve(),registered=!0};const registerListenerEvents=function(callingLink){let gpr_userid=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,gpr_search=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const events=["click",_custom_interaction_events.default.events.activate,_custom_interaction_events.default.events.keyboardActivate];_custom_interaction_events.default.define(document,events),events.forEach((event=>{document.addEventListener(event,(e=>{let{firstActive:firstActive,lastActive:lastActive,sifirst:sifirst,silast:silast}=onClickVariables(),itemToReset="";if(e.target.closest(selectors_formDropdown)&&e.preventDefault(),e.target.closest("".concat(selectors_formDropdown," .").concat(selectors_pageListItem))){if(e.target.classList.contains(selectors_pageListItem))return;e.target.closest(selectors_initialBars).classList.contains(selectors_firstInitial)?(sifirst=e.target,itemToReset=firstActive):(silast=e.target,itemToReset=lastActive),swapActiveItems(itemToReset,e)}if(e.target.closest("".concat(selectors_formDropdown))&&e.target.type===selectors_formItems.type){if(e.target.dataset.action===selectors_formItems.save){const params={id:e.target.closest(selectors_formDropdown).dataset.courseid,gpr_search:null!==gpr_search?gpr_search:"",sifirst:sifirst.parentElement.classList.contains("initialbarall")?"":sifirst.value,silast:silast.parentElement.classList.contains("initialbarall")?"":silast.value};null!==gpr_userid&&(params.gpr_userid=gpr_userid),window.location=Url.relativeUrl(callingLink,params)}e.target.dataset.action===selectors_formItems.cancel&&(0,_jquery.default)(".".concat(selectors_targetButton)).dropdown("toggle")}}))}))},onClickVariables=()=>{const firstItems=[...document.querySelectorAll(".".concat(selectors_firstInitial," li"))],lastItems=[...document.querySelectorAll(".".concat(selectors_lastInitial," li"))],firstActive=firstItems.filter((item=>item.classList.contains(selectors_activeItem)))[0],lastActive=lastItems.filter((item=>item.classList.contains(selectors_activeItem)))[0];let sifirst=firstActive.querySelector(selectors_pageClickableItem),silast=lastActive.querySelector(selectors_pageClickableItem);return{firstActive:firstActive,lastActive:lastActive,sifirst:sifirst,silast:silast}},swapActiveItems=(itemToReset,e)=>{itemToReset.classList.remove(selectors_activeItem),itemToReset.querySelector(selectors_pageClickableItem).ariaCurrent=!1;e.target.parentElement.classList.add(selectors_activeItem),e.target.ariaCurrent=!0}}));
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_pending=_interopRequireDefault(_pending),Url=function(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}newObj.default=obj,cache&&cache.set(obj,newObj);return newObj}(Url),_custom_interaction_events=_interopRequireDefault(_custom_interaction_events),_dropdown=_interopRequireDefault(_dropdown);let registered=!1;const selectors_pageListItem="page-item",selectors_pageClickableItem=".page-link",selectors_activeItem="active",selectors_formDropdown=".initialsdropdownform",selectors_parentDomNode=".initials-selector",selectors_firstInitial="firstinitial",selectors_lastInitial="lastinitial",selectors_initialBars=".initialbar",selectors_targetButton="initialswidget",selectors_formItems={type:"submit",save:"save",cancel:"cancel"};_exports.init=function(callingLink){let gpr_userid=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,gpr_search=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(registered)return;const pendingPromise=new _pending.default;registerListenerEvents(callingLink,gpr_userid,gpr_search),document.querySelector(selectors_parentDomNode).addEventListener("shown.bs.dropdown",(()=>{document.querySelector(selectors_pageClickableItem).focus({preventScroll:!0})})),pendingPromise.resolve(),registered=!0};const registerListenerEvents=function(callingLink){let gpr_userid=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,gpr_search=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const events=["click",_custom_interaction_events.default.events.activate,_custom_interaction_events.default.events.keyboardActivate];_custom_interaction_events.default.define(document,events),events.forEach((event=>{document.addEventListener(event,(e=>{let{firstActive:firstActive,lastActive:lastActive,sifirst:sifirst,silast:silast}=onClickVariables(),itemToReset="";if(e.target.closest(selectors_formDropdown)&&e.preventDefault(),e.target.closest("".concat(selectors_formDropdown," .").concat(selectors_pageListItem))){if(e.target.classList.contains(selectors_pageListItem))return;e.target.closest(selectors_initialBars).classList.contains(selectors_firstInitial)?(sifirst=e.target,itemToReset=firstActive):(silast=e.target,itemToReset=lastActive),swapActiveItems(itemToReset,e)}if(e.target.closest("".concat(selectors_formDropdown))&&e.target.type===selectors_formItems.type){if(e.target.dataset.action===selectors_formItems.save){const params={id:e.target.closest(selectors_formDropdown).dataset.courseid,gpr_search:null!==gpr_search?gpr_search:"",sifirst:sifirst.parentElement.classList.contains("initialbarall")?"":sifirst.value,silast:silast.parentElement.classList.contains("initialbarall")?"":silast.value};null!==gpr_userid&&(params.gpr_userid=gpr_userid),window.location=Url.relativeUrl(callingLink,params)}e.target.dataset.action===selectors_formItems.cancel&&_dropdown.default.getOrCreateInstance(document.querySelector(".".concat(selectors_targetButton))).toggle()}}))}))},onClickVariables=()=>{const firstItems=[...document.querySelectorAll(".".concat(selectors_firstInitial," li"))],lastItems=[...document.querySelectorAll(".".concat(selectors_lastInitial," li"))],firstActive=firstItems.filter((item=>item.classList.contains(selectors_activeItem)))[0],lastActive=lastItems.filter((item=>item.classList.contains(selectors_activeItem)))[0];let sifirst=firstActive.querySelector(selectors_pageClickableItem),silast=lastActive.querySelector(selectors_pageClickableItem);return{firstActive:firstActive,lastActive:lastActive,sifirst:sifirst,silast:silast}},swapActiveItems=(itemToReset,e)=>{itemToReset.classList.remove(selectors_activeItem),itemToReset.querySelector(selectors_pageClickableItem).ariaCurrent=!1;e.target.parentElement.classList.add(selectors_activeItem),e.target.ariaCurrent=!0}}));
|
||||
|
||||
//# sourceMappingURL=initials.min.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -55,7 +55,7 @@ export default class GradeItemSearch extends search_combobox {
|
||||
searchValueElement.value = '';
|
||||
});
|
||||
|
||||
this.$component.on('hide.bs.dropdown', () => {
|
||||
this.component.addEventListener('hide.bs.dropdown', () => {
|
||||
this.searchInput.removeAttribute('aria-activedescendant');
|
||||
|
||||
const listbox = document.querySelector(`#${this.searchInput.getAttribute('aria-controls')}[role="listbox"]`);
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
import Pending from 'core/pending';
|
||||
import * as Url from 'core/url';
|
||||
import CustomEvents from "core/custom_interaction_events";
|
||||
import $ from 'jquery';
|
||||
import Dropdown from 'theme_boost/bootstrap/dropdown';
|
||||
|
||||
/**
|
||||
* Whether the event listener has already been registered for this module.
|
||||
@@ -67,7 +67,7 @@ export const init = (callingLink, gpr_userid = null, gpr_search = null) => {
|
||||
const pendingPromise = new Pending();
|
||||
registerListenerEvents(callingLink, gpr_userid, gpr_search);
|
||||
// BS events always bubble so, we need to listen for the event higher up the chain.
|
||||
$(selectors.parentDomNode).on('shown.bs.dropdown', () => {
|
||||
document.querySelector(selectors.parentDomNode).addEventListener('shown.bs.dropdown', () => {
|
||||
document.querySelector(selectors.pageClickableItem).focus({preventScroll: true});
|
||||
});
|
||||
pendingPromise.resolve();
|
||||
@@ -139,7 +139,7 @@ const registerListenerEvents = (callingLink, gpr_userid = null, gpr_search = nul
|
||||
window.location = Url.relativeUrl(callingLink, params);
|
||||
}
|
||||
if (e.target.dataset.action === selectors.formItems.cancel) {
|
||||
$(`.${selectors.targetButton}`).dropdown('toggle');
|
||||
Dropdown.getOrCreateInstance(document.querySelector(`.${selectors.targetButton}`)).toggle();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+3
-2
@@ -1,10 +1,11 @@
|
||||
define("gradereport_grader/stickycolspan",["exports","jquery","core/sticky-footer"],(function(_exports,_jquery,_stickyFooter){var obj;
|
||||
define("gradereport_grader/stickycolspan",["exports","core/sticky-footer"],(function(_exports,_stickyFooter){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0;
|
||||
/**
|
||||
* Javascript module for fixing the position of sticky headers with multiple colspans
|
||||
*
|
||||
* @module gradereport_grader/stickycolspan
|
||||
* @copyright 2022 Bas Brands <bas@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_jquery=(obj=_jquery)&&obj.__esModule?obj:{default:obj};const SELECTORS_GRADEPARENT=".gradeparent",SELECTORS_STUDENTHEADER="#studentheader",SELECTORS_TABLEHEADER="th.header",SELECTORS_BEHAT="body.behat-site",SELECTORS_USERDROPDOWN=".userrow th .dropdown",SELECTORS_LASTROW=".lastrow";_exports.init=()=>{if((0,_jquery.default)(SELECTORS_USERDROPDOWN).on("show.bs.dropdown hide.bs.dropdown",(e=>{e.target.closest(SELECTORS_TABLEHEADER).classList.toggle("actions-menu-active")})),defineLastRowIntersectionObserver(!0),document.addEventListener(_stickyFooter.eventTypes.stickyFooterStateChanged,(e=>{defineLastRowIntersectionObserver(e.detail.enabled)})),!document.querySelector(SELECTORS_BEHAT)){const grader=document.querySelector(SELECTORS_GRADEPARENT),tableHeaders=grader.querySelectorAll(SELECTORS_TABLEHEADER),studentHeader=grader.querySelector(SELECTORS_STUDENTHEADER),leftOffset=getComputedStyle(studentHeader).getPropertyValue("left"),rightOffset=getComputedStyle(studentHeader).getPropertyValue("right");tableHeaders.forEach((tableHeader=>{if(tableHeader.colSpan>1){const addOffset=tableHeader.offsetWidth-studentHeader.offsetWidth;window.right_to_left()?tableHeader.style.right="calc("+rightOffset+" - "+addOffset+"px )":tableHeader.style.left="calc("+leftOffset+" - "+addOffset+"px )"}}))}};const defineLastRowIntersectionObserver=stickyFooterEnabled=>{const lastRow=document.querySelector(SELECTORS_LASTROW);if(!lastRow.classList.contains("userrow")){const stickyFooterHeight=stickyFooterEnabled?document.querySelector(_stickyFooter.SELECTORS.STICKYFOOTER).offsetHeight:null;new IntersectionObserver((_ref=>{let[e]=_ref;return lastRow.classList.toggle("pinned",e.intersectionRatio<1)}),{rootMargin:stickyFooterHeight?"0px 0px -".concat(stickyFooterHeight,"px 0px"):"0px",threshold:[1]}).observe(lastRow.querySelector("th"))}}}));
|
||||
*/
|
||||
const SELECTORS_GRADEPARENT=".gradeparent",SELECTORS_STUDENTHEADER="#studentheader",SELECTORS_TABLEHEADER="th.header",SELECTORS_BEHAT="body.behat-site",SELECTORS_USERDROPDOWN=".userrow th .dropdown",SELECTORS_LASTROW=".lastrow";_exports.init=()=>{if(document.querySelectorAll(SELECTORS_USERDROPDOWN).forEach((dropdown=>{dropdown.addEventListener("show.bs.dropdown",(e=>{e.target.closest(SELECTORS_TABLEHEADER).classList.toggle("actions-menu-active")}))})),defineLastRowIntersectionObserver(!0),document.addEventListener(_stickyFooter.eventTypes.stickyFooterStateChanged,(e=>{defineLastRowIntersectionObserver(e.detail.enabled)})),!document.querySelector(SELECTORS_BEHAT)){const grader=document.querySelector(SELECTORS_GRADEPARENT),tableHeaders=grader.querySelectorAll(SELECTORS_TABLEHEADER),studentHeader=grader.querySelector(SELECTORS_STUDENTHEADER),leftOffset=getComputedStyle(studentHeader).getPropertyValue("left"),rightOffset=getComputedStyle(studentHeader).getPropertyValue("right");tableHeaders.forEach((tableHeader=>{if(tableHeader.colSpan>1){const addOffset=tableHeader.offsetWidth-studentHeader.offsetWidth;window.right_to_left()?tableHeader.style.right="calc("+rightOffset+" - "+addOffset+"px )":tableHeader.style.left="calc("+leftOffset+" - "+addOffset+"px )"}}))}};const defineLastRowIntersectionObserver=stickyFooterEnabled=>{const lastRow=document.querySelector(SELECTORS_LASTROW);if(!lastRow.classList.contains("userrow")){const stickyFooterHeight=stickyFooterEnabled?document.querySelector(_stickyFooter.SELECTORS.STICKYFOOTER).offsetHeight:null;new IntersectionObserver((_ref=>{let[e]=_ref;return lastRow.classList.toggle("pinned",e.intersectionRatio<1)}),{rootMargin:stickyFooterHeight?"0px 0px -".concat(stickyFooterHeight,"px 0px"):"0px",threshold:[1]}).observe(lastRow.querySelector("th"))}}}));
|
||||
|
||||
//# sourceMappingURL=stickycolspan.min.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -24,7 +24,7 @@ import * as Repository from 'gradereport_grader/collapse/repository';
|
||||
import search_combobox from 'core/comboboxsearch/search_combobox';
|
||||
import {renderForPromise, replaceNodeContents, replaceNode} from 'core/templates';
|
||||
import {debounce} from 'core/utils';
|
||||
import $ from 'jquery';
|
||||
import Dropdown from 'theme_boost/bootstrap/dropdown';
|
||||
import {getStrings} from 'core/str';
|
||||
import CustomEvents from "core/custom_interaction_events";
|
||||
import storage from 'core/localstorage';
|
||||
@@ -101,7 +101,7 @@ export default class ColumnSearch extends search_combobox {
|
||||
}, 10);
|
||||
}).then(() => pendingPromise.resolve()).catch(Notification.exception);
|
||||
|
||||
this.$component.on('hide.bs.dropdown', () => {
|
||||
this.component.addEventListener('hide.bs.dropdown', () => {
|
||||
const searchResultContainer = this.component.querySelector(selectors.searchResultContainer);
|
||||
searchResultContainer.scrollTop = 0;
|
||||
|
||||
@@ -319,7 +319,7 @@ export default class ColumnSearch extends search_combobox {
|
||||
form.addEventListener('submit', async(e) => {
|
||||
e.preventDefault();
|
||||
if (e.submitter.dataset.action === selectors.formItems.cancel) {
|
||||
$(this.component).dropdown('toggle');
|
||||
Dropdown.getOrCreateInstance(this.component).toggle();
|
||||
return;
|
||||
}
|
||||
// Get the users' checked columns to change.
|
||||
@@ -508,7 +508,7 @@ export default class ColumnSearch extends search_combobox {
|
||||
this.registerInputEvents();
|
||||
|
||||
// Add a small BS listener so that we can set the focus correctly on open.
|
||||
this.$component.on('shown.bs.dropdown', () => {
|
||||
this.component.addEventListener('shown.bs.dropdown', () => {
|
||||
this.searchInput.focus({preventScroll: true});
|
||||
this.selectallEnable();
|
||||
});
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
import $ from 'jquery';
|
||||
import {SELECTORS as stickyFooterSelectors, eventTypes as stickyFooterEvents} from 'core/sticky-footer';
|
||||
|
||||
const SELECTORS = {
|
||||
@@ -40,9 +39,11 @@ export const init = () => {
|
||||
// The sticky positioning attributed to the user column cells affects the stacking context and makes the dropdowns
|
||||
// within these cells to be cut off. To solve this problem, whenever one of these action menus (dropdowns) is opened
|
||||
// we need to manually bump up the z-index value of the parent container element and revert once closed.
|
||||
$(SELECTORS.USERDROPDOWN).on('show.bs.dropdown hide.bs.dropdown', (e) => {
|
||||
// The closest heading element has sticky positioning which affects the stacking context in this case.
|
||||
e.target.closest(SELECTORS.TABLEHEADER).classList.toggle('actions-menu-active');
|
||||
document.querySelectorAll(SELECTORS.USERDROPDOWN).forEach((dropdown) => {
|
||||
dropdown.addEventListener('show.bs.dropdown', (e) => {
|
||||
// The closest heading element has sticky positioning which affects the stacking context in this case.
|
||||
e.target.closest(SELECTORS.TABLEHEADER).classList.toggle('actions-menu-active');
|
||||
});
|
||||
});
|
||||
|
||||
defineLastRowIntersectionObserver(true);
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
define("core_group/comboboxsearch/group",["exports","core/comboboxsearch/search_combobox","core_group/comboboxsearch/repository","core/templates","core/utils","core/notification"],(function(_exports,_search_combobox,_repository,_templates,_utils,_notification){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_search_combobox=_interopRequireDefault(_search_combobox),_notification=_interopRequireDefault(_notification);class GroupSearch extends _search_combobox.default{constructor(){let cmid=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;super(),_defineProperty(this,"courseID",void 0),_defineProperty(this,"cmID",void 0),_defineProperty(this,"bannedFilterFields",["id","link","groupimageurl"]),this.selectors={...this.selectors,courseid:'[data-region="courseid"]',placeholder:'.groupsearchdropdown [data-region="searchplaceholder"]'};const component=document.querySelector(this.componentSelector());this.courseID=component.querySelector(this.selectors.courseid).dataset.courseid,this.instance=component.querySelector(this.selectors.instance).dataset.instance,this.cmID=cmid;const searchValueElement=this.component.querySelector("#".concat(this.searchInput.dataset.inputElement));searchValueElement.addEventListener("change",(()=>{this.toggleDropdown();const valueElement=this.component.querySelector("#".concat(this.combobox.dataset.inputElement));valueElement.value!==searchValueElement.value&&(valueElement.value=searchValueElement.value,valueElement.dispatchEvent(new Event("change",{bubbles:!0}))),searchValueElement.value=""})),this.$component.on("hide.bs.dropdown",(()=>{this.searchInput.removeAttribute("aria-activedescendant");const listbox=document.querySelector("#".concat(this.searchInput.getAttribute("aria-controls"),'[role="listbox"]'));listbox.querySelectorAll('.active[role="option"]').forEach((option=>{option.classList.remove("active")})),listbox.scrollTop=0,setTimeout((()=>{""!==this.searchInput.value&&(this.searchInput.value="",this.searchInput.dispatchEvent(new Event("input",{bubbles:!0})))}))})),this.renderDefault().catch(_notification.default.exception)}static init(){return new GroupSearch(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null)}componentSelector(){return".group-search"}dropdownSelector(){return".groupsearchdropdown"}async renderDropdown(){const{html:html,js:js}=await(0,_templates.renderForPromise)("core_group/comboboxsearch/resultset",{groups:this.getMatchedResults(),hasresults:this.getMatchedResults().length>0,instance:this.instance,searchterm:this.getSearchTerm()});(0,_templates.replaceNodeContents)(this.selectors.placeholder,html,js),this.searchInput.removeAttribute("aria-activedescendant")}async renderDefault(){this.setMatchedResults(await this.filterDataset(await this.getDataset())),this.filterMatchDataset(),await this.renderDropdown(),this.updateNodes()}async fetchDataset(){return await(0,_repository.groupFetch)(this.courseID,this.cmID).then((r=>r.groups))}async filterDataset(filterableData){return""===this.getPreppedSearchTerm()?filterableData:filterableData.filter((group=>Object.keys(group).some((key=>""!==group[key]&&!this.bannedFilterFields.includes(key)&&group[key].toString().toLowerCase().includes(this.getPreppedSearchTerm())))))}filterMatchDataset(){this.setMatchedResults(this.getMatchedResults().map((group=>({id:group.id,name:group.name,groupimageurl:group.groupimageurl}))))}async clickHandler(e){e.target.closest(this.selectors.clearSearch)&&(e.stopPropagation(),this.searchInput.value="",this.setSearchTerms(this.searchInput.value),this.searchInput.focus(),this.clearSearchButton.classList.add("d-none"),await this.filterrenderpipe())}changeHandler(e){window.location=this.selectOneLink(e.target.value)}registerInputHandlers(){this.searchInput.addEventListener("input",(0,_utils.debounce)((async()=>{this.setSearchTerms(this.searchInput.value),""===this.getSearchTerm()?this.clearSearchButton.classList.add("d-none"):this.clearSearchButton.classList.remove("d-none"),await this.filterrenderpipe()}),300))}selectOneLink(groupID){throw new Error("selectOneLink(".concat(groupID,") must be implemented in ").concat(this.constructor.name))}}return _exports.default=GroupSearch,_exports.default}));
|
||||
define("core_group/comboboxsearch/group",["exports","core/comboboxsearch/search_combobox","core_group/comboboxsearch/repository","core/templates","core/utils","core/notification"],(function(_exports,_search_combobox,_repository,_templates,_utils,_notification){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_search_combobox=_interopRequireDefault(_search_combobox),_notification=_interopRequireDefault(_notification);class GroupSearch extends _search_combobox.default{constructor(){let cmid=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;super(),_defineProperty(this,"courseID",void 0),_defineProperty(this,"cmID",void 0),_defineProperty(this,"bannedFilterFields",["id","link","groupimageurl"]),this.selectors={...this.selectors,courseid:'[data-region="courseid"]',placeholder:'.groupsearchdropdown [data-region="searchplaceholder"]'};const component=document.querySelector(this.componentSelector());this.courseID=component.querySelector(this.selectors.courseid).dataset.courseid,this.instance=component.querySelector(this.selectors.instance).dataset.instance,this.cmID=cmid;const searchValueElement=this.component.querySelector("#".concat(this.searchInput.dataset.inputElement));searchValueElement.addEventListener("change",(()=>{this.toggleDropdown();const valueElement=this.component.querySelector("#".concat(this.combobox.dataset.inputElement));valueElement.value!==searchValueElement.value&&(valueElement.value=searchValueElement.value,valueElement.dispatchEvent(new Event("change",{bubbles:!0}))),searchValueElement.value=""})),this.component.addEventListener("hide.bs.dropdown",(()=>{this.searchInput.removeAttribute("aria-activedescendant");const listbox=document.querySelector("#".concat(this.searchInput.getAttribute("aria-controls"),'[role="listbox"]'));listbox.querySelectorAll('.active[role="option"]').forEach((option=>{option.classList.remove("active")})),listbox.scrollTop=0,setTimeout((()=>{""!==this.searchInput.value&&(this.searchInput.value="",this.searchInput.dispatchEvent(new Event("input",{bubbles:!0})))}))})),this.renderDefault().catch(_notification.default.exception)}static init(){return new GroupSearch(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null)}componentSelector(){return".group-search"}dropdownSelector(){return".groupsearchdropdown"}async renderDropdown(){const{html:html,js:js}=await(0,_templates.renderForPromise)("core_group/comboboxsearch/resultset",{groups:this.getMatchedResults(),hasresults:this.getMatchedResults().length>0,instance:this.instance,searchterm:this.getSearchTerm()});(0,_templates.replaceNodeContents)(this.selectors.placeholder,html,js),this.searchInput.removeAttribute("aria-activedescendant")}async renderDefault(){this.setMatchedResults(await this.filterDataset(await this.getDataset())),this.filterMatchDataset(),await this.renderDropdown(),this.updateNodes()}async fetchDataset(){return await(0,_repository.groupFetch)(this.courseID,this.cmID).then((r=>r.groups))}async filterDataset(filterableData){return""===this.getPreppedSearchTerm()?filterableData:filterableData.filter((group=>Object.keys(group).some((key=>""!==group[key]&&!this.bannedFilterFields.includes(key)&&group[key].toString().toLowerCase().includes(this.getPreppedSearchTerm())))))}filterMatchDataset(){this.setMatchedResults(this.getMatchedResults().map((group=>({id:group.id,name:group.name,groupimageurl:group.groupimageurl}))))}async clickHandler(e){e.target.closest(this.selectors.clearSearch)&&(e.stopPropagation(),this.searchInput.value="",this.setSearchTerms(this.searchInput.value),this.searchInput.focus(),this.clearSearchButton.classList.add("d-none"),await this.filterrenderpipe())}changeHandler(e){window.location=this.selectOneLink(e.target.value)}registerInputHandlers(){this.searchInput.addEventListener("input",(0,_utils.debounce)((async()=>{this.setSearchTerms(this.searchInput.value),""===this.getSearchTerm()?this.clearSearchButton.classList.add("d-none"):this.clearSearchButton.classList.remove("d-none"),await this.filterrenderpipe()}),300))}selectOneLink(groupID){throw new Error("selectOneLink(".concat(groupID,") must be implemented in ").concat(this.constructor.name))}}return _exports.default=GroupSearch,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=group.min.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -62,7 +62,7 @@ export default class GroupSearch extends search_combobox {
|
||||
searchValueElement.value = '';
|
||||
});
|
||||
|
||||
this.$component.on('hide.bs.dropdown', () => {
|
||||
this.component.addEventListener('hide.bs.dropdown', () => {
|
||||
this.searchInput.removeAttribute('aria-activedescendant');
|
||||
|
||||
const listbox = document.querySelector(`#${this.searchInput.getAttribute('aria-controls')}[role="listbox"]`);
|
||||
|
||||
+2
-2
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -5,6 +5,6 @@ define("core/dynamic_tabs",["exports","jquery","core/templates","core/loadingico
|
||||
* @module core/dynamic_tabs
|
||||
* @copyright 2021 David Matamoros <davidmc@moodle.com> based on code from Marina Glancy
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_jquery=_interopRequireDefault(_jquery),_templates=_interopRequireDefault(_templates),_notification=_interopRequireDefault(_notification),_pending=_interopRequireDefault(_pending);const SELECTORS={dynamicTabs:".dynamictabs",activeTab:".dynamictabs .nav-link.active",allActiveTabs:'.dynamictabs .nav-link[data-bs-toggle="tab"]:not(.disabled)',tabContent:".dynamictabs .tab-pane [data-tab-content]",tabToggle:'a[data-bs-toggle="tab"]',tabPane:".dynamictabs .tab-pane",forTabName:tabName=>'.dynamictabs [data-tab-content="'.concat(tabName,'"]'),forTabId:tabName=>'.dynamictabs [data-bs-toggle="tab"][href="#'.concat(tabName,'"]')};_exports.init=()=>{const tabToggle=(0,_jquery.default)(SELECTORS.tabToggle);if(tabToggle.on("click",(event=>{(0,_changechecker.isAnyWatchedFormDirty)()&&(event.preventDefault(),event.stopPropagation(),(0,_str.getStrings)([{key:"changesmade",component:"moodle"},{key:"changesmadereallygoaway",component:"moodle"},{key:"confirm",component:"moodle"}]).then((_ref=>{let[strChangesMade,strChangesMadeReally,strConfirm]=_ref;return _notification.default.confirm(strChangesMade,strChangesMadeReally,strConfirm,null,(()=>{(0,_changechecker.resetAllFormDirtyStates)(),(0,_jquery.default)(event.target).trigger(event.type)}))})).catch(_notification.default.exception))})),tabToggle.on("show.bs.tab",(function(){const previousTabName=getActiveTabName();if(previousTabName){document.querySelector(SELECTORS.forTabName(previousTabName)).textContent=""}})).on("shown.bs.tab",(function(){const tab=(0,_jquery.default)((0,_jquery.default)(this).attr("href"));1===tab.length&&loadTab(tab.attr("id"))})),!openTabFromHash()){const tabs=document.querySelector(SELECTORS.allActiveTabs);if(tabs)openTab(tabs.getAttribute("aria-controls"));else{const tabPane=document.querySelector(SELECTORS.tabPane);tabPane&&(tabPane.classList.add("active","show"),loadTab(tabPane.getAttribute("id")))}}};const getActiveTabName=()=>{const element=document.querySelector(SELECTORS.activeTab);return(null==element?void 0:element.getAttribute("aria-controls"))||null},loadTab=tabName=>{var _ref2,_tabName;tabName=null!==(_ref2=null!==(_tabName=tabName)&&void 0!==_tabName?_tabName:getActiveTabName())&&void 0!==_ref2?_ref2:(()=>{const element=document.querySelector(SELECTORS.tabContent);return(null==element?void 0:element.dataset.tabContent)||null})();const tab=document.querySelector(SELECTORS.forTabName(tabName));if(!tab)return;const pendingPromise=new _pending.default("core/dynamic_tabs:loadTab:"+tabName);(0,_loadingicon.addIconToContainer)(tab).then((()=>{let tabArgs={...tab.dataset};return delete tabArgs.tabClass,delete tabArgs.tabContent,(0,_dynamic_tabs.getContent)(tab.dataset.tabClass,JSON.stringify(tabArgs))})).then((response=>Promise.all([_jquery.default.parseHTML(response.javascript,null,!0).map((node=>node.innerHTML)).join("\n"),_templates.default.renderForPromise(response.template,JSON.parse(response.content))]))).then((_ref3=>{let[responseJs,{html:html,js:js}]=_ref3;return _templates.default.replaceNodeContents(tab,html,js+responseJs)})).then((()=>pendingPromise.resolve())).catch(_notification.default.exception)},openTab=tabName=>{const tab=(tabName=>document.querySelector(SELECTORS.forTabId(tabName)))(tabName);return!!tab&&(loadTab(tabName),tab.classList.add("active"),(tabName=>document.getElementById(tabName))(tabName).classList.add("active","show"),!0)},openTabFromHash=()=>{const hash=document.location.hash;return!!hash.match(/^#\w+$/g)&&openTab(hash.replace(/^#/g,""))}}));
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_jquery=_interopRequireDefault(_jquery),_templates=_interopRequireDefault(_templates),_notification=_interopRequireDefault(_notification),_pending=_interopRequireDefault(_pending);const SELECTORS={dynamicTabs:".dynamictabs",activeTab:".dynamictabs .nav-link.active",allActiveTabs:'.dynamictabs .nav-link[data-bs-toggle="tab"]:not(.disabled)',tabContent:".dynamictabs .tab-pane [data-tab-content]",tabToggle:'a[data-bs-toggle="tab"]',tabPane:".dynamictabs .tab-pane",forTabName:tabName=>'.dynamictabs [data-tab-content="'.concat(tabName,'"]'),forTabId:tabName=>'.dynamictabs [data-bs-toggle="tab"][href="#'.concat(tabName,'"]')};_exports.init=()=>{if(document.querySelectorAll(SELECTORS.tabToggle).forEach((tabToggle=>{tabToggle.addEventListener("click",(event=>{(0,_changechecker.isAnyWatchedFormDirty)()&&(event.preventDefault(),event.stopPropagation(),(0,_str.getStrings)([{key:"changesmade",component:"moodle"},{key:"changesmadereallygoaway",component:"moodle"},{key:"confirm",component:"moodle"}]).then((_ref=>{let[strChangesMade,strChangesMadeReally,strConfirm]=_ref;return _notification.default.confirm(strChangesMade,strChangesMadeReally,strConfirm,null,(()=>{(0,_changechecker.resetAllFormDirtyStates)(),(0,_jquery.default)(event.target).trigger(event.type)}))})).catch(_notification.default.exception))})),tabToggle.addEventListener("show.bs.tab",(()=>{const previousTabName=getActiveTabName();if(previousTabName){document.querySelector(SELECTORS.forTabName(previousTabName)).textContent=""}})),tabToggle.addEventListener("shown.bs.tab",(()=>{const tabPane=document.getElementById(tabToggle.getAttribute("href").replace(/^#/,""));tabPane&&loadTab(tabPane.id)}))})),!openTabFromHash()){const tabs=document.querySelector(SELECTORS.allActiveTabs);if(tabs)openTab(tabs.getAttribute("aria-controls"));else{const tabPane=document.querySelector(SELECTORS.tabPane);tabPane&&(tabPane.classList.add("active","show"),loadTab(tabPane.getAttribute("id")))}}};const getActiveTabName=()=>{const element=document.querySelector(SELECTORS.activeTab);return(null==element?void 0:element.getAttribute("aria-controls"))||null},loadTab=tabName=>{var _ref2,_tabName;tabName=null!==(_ref2=null!==(_tabName=tabName)&&void 0!==_tabName?_tabName:getActiveTabName())&&void 0!==_ref2?_ref2:(()=>{const element=document.querySelector(SELECTORS.tabContent);return(null==element?void 0:element.dataset.tabContent)||null})();const tab=document.querySelector(SELECTORS.forTabName(tabName));if(!tab)return;const pendingPromise=new _pending.default("core/dynamic_tabs:loadTab:"+tabName);(0,_loadingicon.addIconToContainer)(tab).then((()=>{let tabArgs={...tab.dataset};return delete tabArgs.tabClass,delete tabArgs.tabContent,(0,_dynamic_tabs.getContent)(tab.dataset.tabClass,JSON.stringify(tabArgs))})).then((response=>Promise.all([_jquery.default.parseHTML(response.javascript,null,!0).map((node=>node.innerHTML)).join("\n"),_templates.default.renderForPromise(response.template,JSON.parse(response.content))]))).then((_ref3=>{let[responseJs,{html:html,js:js}]=_ref3;return _templates.default.replaceNodeContents(tab,html,js+responseJs)})).then((()=>pendingPromise.resolve())).catch(_notification.default.exception)},openTab=tabName=>{const tab=(tabName=>document.querySelector(SELECTORS.forTabId(tabName)))(tabName);return!!tab&&(loadTab(tabName),tab.classList.add("active"),(tabName=>document.getElementById(tabName))(tabName).classList.add("active","show"),!0)},openTabFromHash=()=>{const hash=document.location.hash;return!!hash.match(/^#\w+$/g)&&openTab(hash.replace(/^#/g,""))}}));
|
||||
|
||||
//# sourceMappingURL=dynamic_tabs.min.js.map
|
||||
File diff suppressed because one or more lines are too long
+2
-2
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2
-2
@@ -1,4 +1,4 @@
|
||||
define("core/local/collapsable_section/controls",["exports","core/local/collapsable_section/events","jquery"],(function(_exports,_events,_jquery){var obj;
|
||||
define("core/local/collapsable_section/controls",["exports","core/local/collapsable_section/events","theme_boost/bootstrap/collapse"],(function(_exports,_events,_collapse){var obj;
|
||||
/**
|
||||
* The collapsable sections controls.
|
||||
*
|
||||
@@ -14,6 +14,6 @@ define("core/local/collapsable_section/controls",["exports","core/local/collapsa
|
||||
*
|
||||
* // Use hide, show and toggle methods to control the section.
|
||||
* section.hide();
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_jquery=(obj=_jquery)&&obj.__esModule?obj:{default:obj};let initialized=!1;return _exports.default=class{static instanceFromSelector(selector){const elements=document.querySelector(selector);if(!elements)throw new Error("No elements found with the selector: "+selector);return new this(elements)}static init(){initialized||(initialized=!0,(0,_jquery.default)(document).on(_events.eventTypes.hiddenBsCollapse,(event=>{this.isCollapsableComponent(event.target)&&(0,_events.notifyCollapsableSectionHidden)(event.target)})),(0,_jquery.default)(document).on(_events.eventTypes.shownBsCollapse,(event=>{this.isCollapsableComponent(event.target)&&(0,_events.notifyCollapsableSectionShown)(event.target)})))}static isCollapsableComponent(element){return element.hasAttribute("data-mdl-component")&&"core/local/collapsable_section"===element.getAttribute("data-mdl-component")}constructor(element){this.element=element}hide(){(0,_jquery.default)(this.element).collapse("hide")}show(){(0,_jquery.default)(this.element).collapse("show")}toggle(){(0,_jquery.default)(this.element).collapse("toggle")}isVisible(){return this.element.classList.contains("show")}},_exports.default}));
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_collapse=(obj=_collapse)&&obj.__esModule?obj:{default:obj};let initialized=!1;return _exports.default=class{static instanceFromSelector(selector){const elements=document.querySelector(selector);if(!elements)throw new Error("No elements found with the selector: "+selector);return new this(elements)}static init(){initialized||(initialized=!0,document.addEventListener(_events.eventTypes.hiddenBsCollapse,(event=>{this.isCollapsableComponent(event.target)&&(0,_events.notifyCollapsableSectionHidden)(event.target)})),document.addEventListener(_events.eventTypes.shownBsCollapse,(event=>{this.isCollapsableComponent(event.target)&&(0,_events.notifyCollapsableSectionShown)(event.target)})))}static isCollapsableComponent(element){return element.hasAttribute("data-mdl-component")&&"core/local/collapsable_section"===element.getAttribute("data-mdl-component")}constructor(element){this.element=element}hide(){_collapse.default.getOrCreateInstance(this.element).hide()}show(){_collapse.default.getOrCreateInstance(this.element).show()}toggle(){_collapse.default.getOrCreateInstance(this.element).toggle()}isVisible(){return _collapse.default.getOrCreateInstance(this.element)._isShown()}},_exports.default}));
|
||||
|
||||
//# sourceMappingURL=controls.min.js.map
|
||||
File diff suppressed because one or more lines are too long
+2
-2
@@ -1,10 +1,10 @@
|
||||
define("core/local/dropdown/dialog",["exports","jquery","core/pagehelpers","core/pending"],(function(_exports,_jquery,_pagehelpers,_pending){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
define("core/local/dropdown/dialog",["exports","theme_boost/bootstrap/dropdown","core/pagehelpers","core/pending"],(function(_exports,_dropdown,_pagehelpers,_pending){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
/**
|
||||
* Dropdown status JS controls.
|
||||
*
|
||||
* @module core/local/dropdown/dialog
|
||||
* @copyright 2023 Ferran Recio <ferran@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=_exports.getDropdownDialog=_exports.DropdownDialog=void 0,_jquery=_interopRequireDefault(_jquery),_pending=_interopRequireDefault(_pending);const Selectors_dropdownButton='[data-for="dropdowndialog_button"]',Selectors_dropdownDialog='[data-for="dropdowndialog_dialog"]';class DropdownDialog{constructor(element){this.element=element,this.button=element.querySelector(Selectors_dropdownButton),this.panel=element.querySelector(Selectors_dropdownDialog)}init(){this.element.dataset.dropdownDialogInitialized||(this.button.addEventListener("keydown",this._buttonKeyHandler.bind(this)),this.panel.addEventListener("keydown",this._contentKeyHandler.bind(this)),this.element.dataset.dropdownDialogInitialized=!0)}_buttonKeyHandler(event){if("ArrowUp"===event.key||"ArrowLeft"===event.key)return event.stopPropagation(),event.preventDefault(),void this.setVisible(!1);"ArrowDown"!==event.key&&"ArrowRight"!==event.key||(event.stopPropagation(),event.preventDefault(),this.setVisible(!0),this._focusPanelContent())}_contentKeyHandler(event){let newFocus=null;"End"===event.key&&(newFocus=(0,_pagehelpers.lastFocusableElement)(this.panel)),"Home"===event.key&&(newFocus=(0,_pagehelpers.firstFocusableElement)(this.panel)),"ArrowUp"!==event.key&&"ArrowLeft"!==event.key||(newFocus=(0,_pagehelpers.previousFocusableElement)(this.panel,!1),newFocus||(newFocus=this.button)),"ArrowDown"!==event.key&&"ArrowRight"!==event.key||(newFocus=(0,_pagehelpers.nextFocusableElement)(this.panel,!1)),null!==newFocus&&(event.stopPropagation(),event.preventDefault(),newFocus.focus())}_focusPanelContent(){const pendingPromise=new _pending.default("core/dropdown/dialog:focuscontent");setTimeout((()=>{const firstFocusable=(0,_pagehelpers.firstFocusableElement)(this.panel);firstFocusable&&firstFocusable.focus(),pendingPromise.resolve()}),100)}setVisible(visible){visible!==this.isVisible()&&(0,_jquery.default)(this.button).dropdown("toggle")}isVisible(){return"true"===this.button.getAttribute("aria-expanded")}setButtonContent(content){this.button.innerHTML=content}setButtonDisabled(disabled){disabled?this.button.setAttribute("disabled","disabled"):this.button.removeAttribute("disabled")}getElement(){return this.element}}_exports.DropdownDialog=DropdownDialog;const getDropdownDialog=selector=>{const dropdownElement=document.querySelector(selector);return dropdownElement?new DropdownDialog(dropdownElement):null};_exports.getDropdownDialog=getDropdownDialog;_exports.init=selector=>{const dropdown=getDropdownDialog(selector);if(!dropdown)throw new Error("Dopdown dialog element not found: ".concat(selector));dropdown.init()}}));
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=_exports.getDropdownDialog=_exports.DropdownDialog=void 0,_dropdown=_interopRequireDefault(_dropdown),_pending=_interopRequireDefault(_pending);const Selectors_dropdownButton='[data-for="dropdowndialog_button"]',Selectors_dropdownDialog='[data-for="dropdowndialog_dialog"]';class DropdownDialog{constructor(element){this.element=element,this.button=element.querySelector(Selectors_dropdownButton),this.panel=element.querySelector(Selectors_dropdownDialog)}init(){this.element.dataset.dropdownDialogInitialized||(this.button.addEventListener("keydown",this._buttonKeyHandler.bind(this)),this.panel.addEventListener("keydown",this._contentKeyHandler.bind(this)),this.element.dataset.dropdownDialogInitialized=!0)}_buttonKeyHandler(event){if("ArrowUp"===event.key||"ArrowLeft"===event.key)return event.stopPropagation(),event.preventDefault(),void this.setVisible(!1);"ArrowDown"!==event.key&&"ArrowRight"!==event.key||(event.stopPropagation(),event.preventDefault(),this.setVisible(!0),this._focusPanelContent())}_contentKeyHandler(event){let newFocus=null;"End"===event.key&&(newFocus=(0,_pagehelpers.lastFocusableElement)(this.panel)),"Home"===event.key&&(newFocus=(0,_pagehelpers.firstFocusableElement)(this.panel)),"ArrowUp"!==event.key&&"ArrowLeft"!==event.key||(newFocus=(0,_pagehelpers.previousFocusableElement)(this.panel,!1),newFocus||(newFocus=this.button)),"ArrowDown"!==event.key&&"ArrowRight"!==event.key||(newFocus=(0,_pagehelpers.nextFocusableElement)(this.panel,!1)),null!==newFocus&&(event.stopPropagation(),event.preventDefault(),newFocus.focus())}_focusPanelContent(){const pendingPromise=new _pending.default("core/dropdown/dialog:focuscontent");setTimeout((()=>{const firstFocusable=(0,_pagehelpers.firstFocusableElement)(this.panel);firstFocusable&&firstFocusable.focus(),pendingPromise.resolve()}),100)}setVisible(visible){visible!==this.isVisible()&&_dropdown.default.getOrCreateInstance(this.button).toggle()}isVisible(){return"true"===this.button.getAttribute("aria-expanded")}setButtonContent(content){this.button.innerHTML=content}setButtonDisabled(disabled){disabled?this.button.setAttribute("disabled","disabled"):this.button.removeAttribute("disabled")}getElement(){return this.element}}_exports.DropdownDialog=DropdownDialog;const getDropdownDialog=selector=>{const dropdownElement=document.querySelector(selector);return dropdownElement?new DropdownDialog(dropdownElement):null};_exports.getDropdownDialog=getDropdownDialog;_exports.init=selector=>{const dropdown=getDropdownDialog(selector);if(!dropdown)throw new Error("Dopdown dialog element not found: ".concat(selector));dropdown.init()}}));
|
||||
|
||||
//# sourceMappingURL=dialog.min.js.map
|
||||
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
+2
-2
@@ -1,4 +1,4 @@
|
||||
define("core/moremenu",["exports","jquery","core/menu_navigation"],(function(_exports,_jquery,_menu_navigation){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
define("core/moremenu",["exports","core/menu_navigation"],(function(_exports,_menu_navigation){var obj;
|
||||
/**
|
||||
* Moves wrapping navigation items into a more menu.
|
||||
*
|
||||
@@ -6,6 +6,6 @@ define("core/moremenu",["exports","jquery","core/menu_navigation"],(function(_ex
|
||||
* @copyright 2021 Moodle
|
||||
* @author Bas Brands <bas@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_jquery=_interopRequireDefault(_jquery),_menu_navigation=_interopRequireDefault(_menu_navigation);const Selectors_regions={moredropdown:'[data-region="moredropdown"]',morebutton:'[data-region="morebutton"]'},Selectors_classes={dropdownitem:"dropdown-item",dropdownmoremenu:"dropdownmoremenu",hidden:"d-none",active:"active",nav:"nav",navlink:"nav-link",observed:"observed"},Selectors_attributes={menu:'[role="menu"]',dropdowntoggle:'[data-bs-toggle="dropdown"]'};let isTabListMenu=!1;const autoCollapse=menu=>{const maxHeight=menu.parentNode.offsetHeight+1,moreDropdown=menu.querySelector(Selectors_regions.moredropdown),moreButton=menu.querySelector(Selectors_regions.morebutton);if(menu.offsetHeight>maxHeight){moreButton.classList.remove(Selectors_classes.hidden);let menuHeight=0;Array.from(menu.children).reverse().forEach((item=>{item.classList.contains(Selectors_classes.dropdownmoremenu)?menu.offsetHeight>maxHeight&&(menuHeight=menu.offsetHeight):menu.offsetHeight>maxHeight?moveIntoMoreDropdown(menu,item,!0):menuHeight>maxHeight&&(moveIntoMoreDropdown(menu,item,!0),menuHeight=0)}))}else"children"in moreDropdown&&(Array.from(moreDropdown.children).forEach((item=>{if(menu.offsetHeight<maxHeight&&"true"!==item.dataset.forceintomoremenu){const lastNode=moreDropdown.removeChild(item);moveOutOfMoreDropdown(menu,lastNode)}})),0===Array.from(moreDropdown.children).length&&moreButton.classList.add(Selectors_classes.hidden)),menu.offsetHeight>maxHeight&&autoCollapse(menu);menu.parentNode.classList.add(Selectors_classes.observed)},moveIntoMoreDropdown=function(menu,navNode){let prepend=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const moreDropdown=menu.querySelector(Selectors_regions.moredropdown),dropdownToggle=menu.querySelector(Selectors_attributes.dropdowntoggle),navLink=navNode.querySelector("."+Selectors_classes.navlink);navLink.classList.contains(Selectors_classes.active)&&(dropdownToggle.classList.add(Selectors_classes.active),dropdownToggle.setAttribute("tabindex","0"),navLink.setAttribute("tabindex","-1"),isTabListMenu&&navLink.removeAttribute("aria-selected"),navLink.setAttribute("aria-current","true")),navLink.setAttribute("role","menuitem"),navLink.classList.remove(Selectors_classes.navlink),navLink.classList.add(Selectors_classes.dropdownitem),prepend?moreDropdown.prepend(navNode):moreDropdown.append(navNode)},moveOutOfMoreDropdown=(menu,navNode)=>{const moreButton=menu.querySelector(Selectors_regions.morebutton),dropdownToggle=menu.querySelector(Selectors_attributes.dropdowntoggle),navLink=navNode.querySelector("."+Selectors_classes.dropdownitem);isTabListMenu&&navLink.setAttribute("role","tab"),navLink.classList.contains(Selectors_classes.active)&&(dropdownToggle.classList.remove(Selectors_classes.active),dropdownToggle.setAttribute("tabindex","-1"),navLink.setAttribute("tabindex","0"),isTabListMenu&&(navLink.removeAttribute("aria-current"),navLink.setAttribute("aria-selected","true"))),navLink.classList.remove(Selectors_classes.dropdownitem),navLink.classList.add(Selectors_classes.navlink),menu.insertBefore(navNode,moreButton)};return _exports.default=menu=>{isTabListMenu="tablist"===menu.getAttribute("role");if(!window.location.hash){const itemRole=isTabListMenu?"tab":"menuitem",menuListItem=menu.firstElementChild,roleSelector="[role=".concat(itemRole,"]"),menuItem=menuListItem.querySelector(roleSelector),ariaAttribute=isTabListMenu?"aria-selected":"aria-current";menu.querySelector("[".concat(ariaAttribute,"='true']"))||(menuItem.setAttribute(ariaAttribute,"true"),menuItem.setAttribute("tabindex","0"))}if("children"in menu){const moreButton=menu.querySelector(Selectors_regions.morebutton);Array.from(menu.children).forEach((item=>{item.classList.contains(Selectors_classes.dropdownmoremenu)||"true"!==item.dataset.forceintomoremenu||(moveIntoMoreDropdown(menu,item,!1),moreButton.classList.contains(Selectors_classes.hidden)&&moreButton.classList.remove(Selectors_classes.hidden))}))}autoCollapse(menu),(0,_menu_navigation.default)(menu),window.addEventListener("resize",(()=>{autoCollapse(menu),(0,_menu_navigation.default)(menu)}));const toggledropdown=e=>{const innerMenu=e.target.parentNode.querySelector(Selectors_attributes.menu);innerMenu&&innerMenu.classList.toggle("show"),e.stopPropagation()};(0,_jquery.default)("."+Selectors_classes.dropdownmoremenu).on("show.bs.dropdown",(function(){menu.querySelector(Selectors_regions.moredropdown).querySelectorAll(".dropdown").forEach((dropdown=>{dropdown.removeEventListener("click",toggledropdown,!0),dropdown.addEventListener("click",toggledropdown,!0)}))}))},_exports.default}));
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_menu_navigation=(obj=_menu_navigation)&&obj.__esModule?obj:{default:obj};const Selectors_regions={moredropdown:'[data-region="moredropdown"]',morebutton:'[data-region="morebutton"]'},Selectors_classes={dropdownitem:"dropdown-item",dropdownmoremenu:"dropdownmoremenu",hidden:"d-none",active:"active",nav:"nav",navlink:"nav-link",observed:"observed"},Selectors_attributes={menu:'[role="menu"]',dropdowntoggle:'[data-bs-toggle="dropdown"]'};let isTabListMenu=!1;const autoCollapse=menu=>{const maxHeight=menu.parentNode.offsetHeight+1,moreDropdown=menu.querySelector(Selectors_regions.moredropdown),moreButton=menu.querySelector(Selectors_regions.morebutton);if(menu.offsetHeight>maxHeight){moreButton.classList.remove(Selectors_classes.hidden);let menuHeight=0;Array.from(menu.children).reverse().forEach((item=>{item.classList.contains(Selectors_classes.dropdownmoremenu)?menu.offsetHeight>maxHeight&&(menuHeight=menu.offsetHeight):menu.offsetHeight>maxHeight?moveIntoMoreDropdown(menu,item,!0):menuHeight>maxHeight&&(moveIntoMoreDropdown(menu,item,!0),menuHeight=0)}))}else"children"in moreDropdown&&(Array.from(moreDropdown.children).forEach((item=>{if(menu.offsetHeight<maxHeight&&"true"!==item.dataset.forceintomoremenu){const lastNode=moreDropdown.removeChild(item);moveOutOfMoreDropdown(menu,lastNode)}})),0===Array.from(moreDropdown.children).length&&moreButton.classList.add(Selectors_classes.hidden)),menu.offsetHeight>maxHeight&&autoCollapse(menu);menu.parentNode.classList.add(Selectors_classes.observed)},moveIntoMoreDropdown=function(menu,navNode){let prepend=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const moreDropdown=menu.querySelector(Selectors_regions.moredropdown),dropdownToggle=menu.querySelector(Selectors_attributes.dropdowntoggle),navLink=navNode.querySelector("."+Selectors_classes.navlink);navLink.classList.contains(Selectors_classes.active)&&(dropdownToggle.classList.add(Selectors_classes.active),dropdownToggle.setAttribute("tabindex","0"),navLink.setAttribute("tabindex","-1"),isTabListMenu&&navLink.removeAttribute("aria-selected"),navLink.setAttribute("aria-current","true")),navLink.setAttribute("role","menuitem"),navLink.classList.remove(Selectors_classes.navlink),navLink.classList.add(Selectors_classes.dropdownitem),prepend?moreDropdown.prepend(navNode):moreDropdown.append(navNode)},moveOutOfMoreDropdown=(menu,navNode)=>{const moreButton=menu.querySelector(Selectors_regions.morebutton),dropdownToggle=menu.querySelector(Selectors_attributes.dropdowntoggle),navLink=navNode.querySelector("."+Selectors_classes.dropdownitem);isTabListMenu&&navLink.setAttribute("role","tab"),navLink.classList.contains(Selectors_classes.active)&&(dropdownToggle.classList.remove(Selectors_classes.active),dropdownToggle.setAttribute("tabindex","-1"),navLink.setAttribute("tabindex","0"),isTabListMenu&&(navLink.removeAttribute("aria-current"),navLink.setAttribute("aria-selected","true"))),navLink.classList.remove(Selectors_classes.dropdownitem),navLink.classList.add(Selectors_classes.navlink),menu.insertBefore(navNode,moreButton)};return _exports.default=menu=>{isTabListMenu="tablist"===menu.getAttribute("role");if(!window.location.hash){const itemRole=isTabListMenu?"tab":"menuitem",menuListItem=menu.firstElementChild,roleSelector="[role=".concat(itemRole,"]"),menuItem=menuListItem.querySelector(roleSelector),ariaAttribute=isTabListMenu?"aria-selected":"aria-current";menu.querySelector("[".concat(ariaAttribute,"='true']"))||(menuItem.setAttribute(ariaAttribute,"true"),menuItem.setAttribute("tabindex","0"))}if("children"in menu){const moreButton=menu.querySelector(Selectors_regions.morebutton);Array.from(menu.children).forEach((item=>{item.classList.contains(Selectors_classes.dropdownmoremenu)||"true"!==item.dataset.forceintomoremenu||(moveIntoMoreDropdown(menu,item,!1),moreButton.classList.contains(Selectors_classes.hidden)&&moreButton.classList.remove(Selectors_classes.hidden))}))}autoCollapse(menu),(0,_menu_navigation.default)(menu),window.addEventListener("resize",(()=>{autoCollapse(menu),(0,_menu_navigation.default)(menu)}));const toggledropdown=e=>{const innerMenu=e.target.parentNode.querySelector(Selectors_attributes.menu);innerMenu&&innerMenu.classList.toggle("show"),e.stopPropagation()};document.querySelector("."+Selectors_classes.dropdownmoremenu).addEventListener("show.bs.dropdown",(()=>{menu.querySelector(Selectors_regions.moredropdown).querySelectorAll(".dropdown").forEach((dropdown=>{dropdown.removeEventListener("click",toggledropdown,!0),dropdown.addEventListener("click",toggledropdown,!0)}))}))},_exports.default}));
|
||||
|
||||
//# sourceMappingURL=moremenu.min.js.map
|
||||
File diff suppressed because one or more lines are too long
Vendored
+2
-2
@@ -1,4 +1,4 @@
|
||||
define("core/usermenu",["exports","jquery","core/key_codes"],(function(_exports,_jquery,_key_codes){var obj;
|
||||
define("core/usermenu",["exports","theme_boost/bootstrap/carousel","core/key_codes"],(function(_exports,_carousel,_key_codes){var obj;
|
||||
/**
|
||||
* Initializes and handles events in the user menu.
|
||||
*
|
||||
@@ -6,6 +6,6 @@ define("core/usermenu",["exports","jquery","core/key_codes"],(function(_exports,
|
||||
* @copyright 2021 Moodle
|
||||
* @author Mihail Geshoski <mihail@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_jquery=(obj=_jquery)&&obj.__esModule?obj:{default:obj};const selectors_userMenu=".usermenu",selectors_userMenuCarousel=".usermenu #usermenu-carousel",selectors_userMenuCarouselItem=".usermenu #usermenu-carousel .carousel-item",selectors_userMenuCarouselItemActive=".usermenu #usermenu-carousel .carousel-item.active",selectors_userMenuCarouselNavigationLink=".usermenu #usermenu-carousel .carousel-navigation-link";var _default={init:()=>{(()=>{const userMenu=document.querySelector(selectors_userMenu);(0,_jquery.default)(selectors_userMenu).on("shown.bs.dropdown",(()=>{const activeCarouselItem=document.querySelector(selectors_userMenuCarouselItemActive);activeCarouselItem.focus(),userMenu.querySelectorAll(selectors_userMenuCarouselItem).forEach((element=>{element.classList.contains("active")||(element.style.width=activeCarouselItem.offsetWidth+"px",element.style.height=activeCarouselItem.offsetHeight+"px")}))})),userMenu.addEventListener("click",(e=>{e.target.matches(selectors_userMenuCarouselNavigationLink)&&carouselManagement(e)})),userMenu.addEventListener("keydown",(e=>{e.keyCode!==_key_codes.space&&e.keyCode!==_key_codes.enter||!e.target.matches(selectors_userMenuCarouselNavigationLink)||(e.preventDefault(),carouselManagement(e))}));const carouselManagement=e=>{e.stopPropagation();const targetedCarouselItemId=e.target.dataset.carouselTargetId,targetedCarouselItem=userMenu.querySelector("#"+targetedCarouselItemId),index=Array.from(targetedCarouselItem.parentNode.children).indexOf(targetedCarouselItem);(0,_jquery.default)(selectors_userMenuCarousel).carousel(index)};(0,_jquery.default)(selectors_userMenu).on("hide.bs.dropdown",(()=>{(0,_jquery.default)(selectors_userMenuCarousel).carousel(0)})),(0,_jquery.default)(selectors_userMenuCarousel).on("slid.bs.carousel",(()=>{userMenu.querySelector(selectors_userMenuCarouselItemActive).focus()}))})()}};return _exports.default=_default,_exports.default}));
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_carousel=(obj=_carousel)&&obj.__esModule?obj:{default:obj};const selectors_userMenu=".usermenu",selectors_userMenuCarousel=".usermenu #usermenu-carousel",selectors_userMenuCarouselItem=".usermenu #usermenu-carousel .carousel-item",selectors_userMenuCarouselItemActive=".usermenu #usermenu-carousel .carousel-item.active",selectors_userMenuCarouselNavigationLink=".usermenu #usermenu-carousel .carousel-navigation-link";var _default={init:()=>{(()=>{const userMenu=document.querySelector(selectors_userMenu),userMenuCarousel=document.querySelector(selectors_userMenuCarousel);userMenu.addEventListener("shown.bs.dropdown",(()=>{const activeCarouselItem=document.querySelector(selectors_userMenuCarouselItemActive);activeCarouselItem.focus(),userMenu.querySelectorAll(selectors_userMenuCarouselItem).forEach((element=>{element.classList.contains("active")||(element.style.width=activeCarouselItem.offsetWidth+"px",element.style.height=activeCarouselItem.offsetHeight+"px")}))})),userMenu.addEventListener("click",(e=>{e.target.matches(selectors_userMenuCarouselNavigationLink)&&carouselManagement(e)})),userMenu.addEventListener("keydown",(e=>{e.keyCode!==_key_codes.space&&e.keyCode!==_key_codes.enter||!e.target.matches(selectors_userMenuCarouselNavigationLink)||(e.preventDefault(),carouselManagement(e))}));const carouselManagement=e=>{e.stopPropagation();const targetedCarouselItemId=e.target.dataset.carouselTargetId,targetedCarouselItem=userMenu.querySelector("#"+targetedCarouselItemId),index=Array.from(targetedCarouselItem.parentNode.children).indexOf(targetedCarouselItem);_carousel.default.getOrCreateInstance(userMenuCarousel).to(index)};userMenu.addEventListener("hide.bs.dropdown",(()=>{_carousel.default.getOrCreateInstance(userMenuCarousel).to(0)})),null==userMenuCarousel||userMenuCarousel.addEventListener("slid.bs.carousel",(()=>{userMenu.querySelector(selectors_userMenuCarouselItemActive).focus()}))})()}};return _exports.default=_default,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=usermenu.min.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -14,6 +14,7 @@
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import $ from 'jquery';
|
||||
import Dropdown from 'theme_boost/bootstrap/dropdown';
|
||||
import {debounce} from 'core/utils';
|
||||
import Pending from 'core/pending';
|
||||
|
||||
@@ -260,9 +261,9 @@ export default class {
|
||||
*/
|
||||
toggleDropdown(on = false) {
|
||||
if (on) {
|
||||
$(this.toggle).dropdown('show');
|
||||
Dropdown.getOrCreateInstance(this.toggle).show();
|
||||
} else {
|
||||
$(this.toggle).dropdown('hide');
|
||||
Dropdown.getOrCreateInstance(this.toggle).hide();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+30
-31
@@ -46,49 +46,48 @@ SELECTORS.forTabId = tabName => `.dynamictabs [data-bs-toggle="tab"][href="#${ta
|
||||
* Initialises the tabs view on the page (only one tabs view per page is supported)
|
||||
*/
|
||||
export const init = () => {
|
||||
const tabToggle = $(SELECTORS.tabToggle);
|
||||
const tabToggles = document.querySelectorAll(SELECTORS.tabToggle);
|
||||
|
||||
// Listen to click, warn user if they are navigating away with unsaved form changes.
|
||||
tabToggle.on('click', (event) => {
|
||||
if (!isAnyWatchedFormDirty()) {
|
||||
return;
|
||||
}
|
||||
tabToggles.forEach(tabToggle => {
|
||||
// Listen to click, warn user if they are navigating away with unsaved form changes.
|
||||
tabToggle.addEventListener('click', (event) => {
|
||||
if (!isAnyWatchedFormDirty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
getStrings([
|
||||
{key: 'changesmade', component: 'moodle'},
|
||||
{key: 'changesmadereallygoaway', component: 'moodle'},
|
||||
{key: 'confirm', component: 'moodle'},
|
||||
]).then(([strChangesMade, strChangesMadeReally, strConfirm]) =>
|
||||
// Reset form dirty state on confirmation, re-trigger the event.
|
||||
Notification.confirm(strChangesMade, strChangesMadeReally, strConfirm, null, () => {
|
||||
resetAllFormDirtyStates();
|
||||
$(event.target).trigger(event.type);
|
||||
})
|
||||
).catch(Notification.exception);
|
||||
});
|
||||
getStrings([
|
||||
{key: 'changesmade', component: 'moodle'},
|
||||
{key: 'changesmadereallygoaway', component: 'moodle'},
|
||||
{key: 'confirm', component: 'moodle'},
|
||||
]).then(([strChangesMade, strChangesMadeReally, strConfirm]) =>
|
||||
// Reset form dirty state on confirmation, re-trigger the event.
|
||||
Notification.confirm(strChangesMade, strChangesMadeReally, strConfirm, null, () => {
|
||||
resetAllFormDirtyStates();
|
||||
$(event.target).trigger(event.type);
|
||||
})
|
||||
).catch(Notification.exception);
|
||||
});
|
||||
|
||||
// This code listens to Bootstrap events 'show.bs.tab' and 'shown.bs.tab' which is triggered using JQuery and
|
||||
// can not be converted yet to native events.
|
||||
tabToggle
|
||||
.on('show.bs.tab', function() {
|
||||
tabToggle.addEventListener('show.bs.tab', () => {
|
||||
// Clean content from previous tab.
|
||||
const previousTabName = getActiveTabName();
|
||||
if (previousTabName) {
|
||||
const previousTab = document.querySelector(SELECTORS.forTabName(previousTabName));
|
||||
previousTab.textContent = '';
|
||||
}
|
||||
})
|
||||
.on('shown.bs.tab', function() {
|
||||
const tab = $($(this).attr('href'));
|
||||
if (tab.length !== 1) {
|
||||
return;
|
||||
}
|
||||
loadTab(tab.attr('id'));
|
||||
});
|
||||
|
||||
tabToggle.addEventListener('shown.bs.tab', () => {
|
||||
const tabPane = document.getElementById(tabToggle.getAttribute('href').replace(/^#/, ''));
|
||||
if (tabPane) {
|
||||
loadTab(tabPane.id);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if (!openTabFromHash()) {
|
||||
const tabs = document.querySelector(SELECTORS.allActiveTabs);
|
||||
if (tabs) {
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
import jQuery from 'jquery';
|
||||
import {debounce} from 'core/utils';
|
||||
import {
|
||||
isBehatSite,
|
||||
@@ -71,9 +70,8 @@ const initPageEvents = () => {
|
||||
if (initialized) {
|
||||
return;
|
||||
}
|
||||
// Hide all subpanels when hidind a dropdown.
|
||||
// This is using JQuery because of BS4 events. JQuery won't be needed with BS5.
|
||||
jQuery(document).on(BootstrapEvents.hideDropdown, () => {
|
||||
// Hide all subpanels when hiding a dropdown.
|
||||
document.addEventListener(BootstrapEvents.hideDropdown, () => {
|
||||
document.querySelectorAll(`${Selectors.subPanelContent}.show`).forEach(visibleSubPanel => {
|
||||
const dropdownSubPanel = visibleSubPanel.closest(Selectors.subPanel);
|
||||
const subPanel = new SubPanel(dropdownSubPanel);
|
||||
|
||||
+7
-13
@@ -35,9 +35,7 @@ import {
|
||||
notifyCollapsableSectionHidden,
|
||||
notifyCollapsableSectionShown
|
||||
} from 'core/local/collapsable_section/events';
|
||||
|
||||
// The jQuery module is only used for interacting with Boostrap 4. It can we removed when MDL-71979 is integrated.
|
||||
import jQuery from 'jquery';
|
||||
import Collapse from 'theme_boost/bootstrap/collapse';
|
||||
|
||||
let initialized = false;
|
||||
|
||||
@@ -67,14 +65,13 @@ export default class {
|
||||
initialized = true;
|
||||
|
||||
// We want to add extra events to the standard bootstrap collapsable events.
|
||||
// TODO: change all jquery events to custom events once MDL-71979 is integrated.
|
||||
jQuery(document).on(eventTypes.hiddenBsCollapse, event => {
|
||||
document.addEventListener(eventTypes.hiddenBsCollapse, event => {
|
||||
if (!this.isCollapsableComponent(event.target)) {
|
||||
return;
|
||||
}
|
||||
notifyCollapsableSectionHidden(event.target);
|
||||
});
|
||||
jQuery(document).on(eventTypes.shownBsCollapse, event => {
|
||||
document.addEventListener(eventTypes.shownBsCollapse, event => {
|
||||
if (!this.isCollapsableComponent(event.target)) {
|
||||
return;
|
||||
}
|
||||
@@ -107,24 +104,21 @@ export default class {
|
||||
* Hides the collapsible section element.
|
||||
*/
|
||||
hide() {
|
||||
// TODO: change all jquery once MDL-71979 is integrated.
|
||||
jQuery(this.element).collapse('hide');
|
||||
Collapse.getOrCreateInstance(this.element).hide();
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows the collapsible section element.
|
||||
*/
|
||||
show() {
|
||||
// TODO: change all jquery once MDL-71979 is integrated.
|
||||
jQuery(this.element).collapse('show');
|
||||
Collapse.getOrCreateInstance(this.element).show();
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle the collapsible section element.
|
||||
*/
|
||||
toggle() {
|
||||
// TODO: change all jquery once MDL-71979 is integrated.
|
||||
jQuery(this.element).collapse('toggle');
|
||||
Collapse.getOrCreateInstance(this.element).toggle();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -133,6 +127,6 @@ export default class {
|
||||
* @return {boolean} True if the collapsable section is visible.
|
||||
*/
|
||||
isVisible() {
|
||||
return this.element.classList.contains('show');
|
||||
return Collapse.getOrCreateInstance(this.element)._isShown();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,8 +21,7 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
// The jQuery module is only used for interacting with Bootstrap 4. It can be removed when MDL-71979 is integrated.
|
||||
import jQuery from 'jquery';
|
||||
import Dropdown from 'theme_boost/bootstrap/dropdown';
|
||||
import {
|
||||
firstFocusableElement,
|
||||
lastFocusableElement,
|
||||
@@ -145,8 +144,7 @@ export class DropdownDialog {
|
||||
if (visible === this.isVisible()) {
|
||||
return;
|
||||
}
|
||||
// All jQuery in this code can be replaced when MDL-71979 is integrated.
|
||||
jQuery(this.button).dropdown('toggle');
|
||||
Dropdown.getOrCreateInstance(this.button).toggle();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -35,6 +35,7 @@ import * as FocusLock from 'core/local/aria/focuslock';
|
||||
import * as Aria from 'core/aria';
|
||||
import * as Fullscreen from 'core/fullscreen';
|
||||
import {removeToastRegion} from './toast';
|
||||
import {dispatchEvent} from 'core/event_dispatcher';
|
||||
|
||||
/**
|
||||
* A configuration to provide to the modal.
|
||||
@@ -582,6 +583,7 @@ export default class Modal {
|
||||
.then((result) => {
|
||||
FilterEvents.notifyFilterContentUpdated(body);
|
||||
this.getRoot().trigger(ModalEvents.bodyRendered, this);
|
||||
dispatchEvent('core/modal:bodyRendered', this, this.modal[0]);
|
||||
return result;
|
||||
})
|
||||
.then(() => {
|
||||
@@ -897,6 +899,7 @@ export default class Modal {
|
||||
this.getModal().focus();
|
||||
$('body').addClass('modal-open');
|
||||
this.root.trigger(ModalEvents.shown, this);
|
||||
dispatchEvent('core/modal:shown', this, this.modal[0]);
|
||||
|
||||
return;
|
||||
})
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
import $ from 'jquery';
|
||||
import menu_navigation from "core/menu_navigation";
|
||||
/**
|
||||
* Moremenu selectors.
|
||||
@@ -248,7 +247,7 @@ export default menu => {
|
||||
// If there are dropdowns in the MoreMenu, add a new
|
||||
// event listener to show the contents on click and prevent the
|
||||
// moreMenu from closing.
|
||||
$('.' + Selectors.classes.dropdownmoremenu).on('show.bs.dropdown', function() {
|
||||
document.querySelector('.' + Selectors.classes.dropdownmoremenu).addEventListener('show.bs.dropdown', () => {
|
||||
const moreDropdown = menu.querySelector(Selectors.regions.moredropdown);
|
||||
moreDropdown.querySelectorAll('.dropdown').forEach((dropdown) => {
|
||||
dropdown.removeEventListener('click', toggledropdown, true);
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
import $ from 'jquery';
|
||||
import Carousel from 'theme_boost/bootstrap/carousel';
|
||||
import {space, enter} from 'core/key_codes';
|
||||
|
||||
/**
|
||||
@@ -41,9 +41,10 @@ const selectors = {
|
||||
*/
|
||||
const registerEventListeners = () => {
|
||||
const userMenu = document.querySelector(selectors.userMenu);
|
||||
const userMenuCarousel = document.querySelector(selectors.userMenuCarousel);
|
||||
|
||||
// Handle the 'shown.bs.dropdown' event (Fired when the dropdown menu is fully displayed).
|
||||
$(selectors.userMenu).on('shown.bs.dropdown', () => {
|
||||
userMenu.addEventListener('shown.bs.dropdown', () => {
|
||||
const activeCarouselItem = document.querySelector(selectors.userMenuCarouselItemActive);
|
||||
// Set the focus on the active carousel item.
|
||||
activeCarouselItem.focus();
|
||||
@@ -96,18 +97,18 @@ const registerEventListeners = () => {
|
||||
// Get the position (index) of the targeted carousel item within the parent container element.
|
||||
const index = Array.from(targetedCarouselItem.parentNode.children).indexOf(targetedCarouselItem);
|
||||
// Navigate to the targeted carousel item.
|
||||
$(selectors.userMenuCarousel).carousel(index);
|
||||
Carousel.getOrCreateInstance(userMenuCarousel).to(index);
|
||||
};
|
||||
|
||||
// Handle the 'hide.bs.dropdown' event (Fired when the dropdown menu is being closed).
|
||||
$(selectors.userMenu).on('hide.bs.dropdown', () => {
|
||||
userMenu.addEventListener('hide.bs.dropdown', () => {
|
||||
// Reset the state once the user menu dropdown is closed and return back to the first (main) carousel item
|
||||
// if necessary.
|
||||
$(selectors.userMenuCarousel).carousel(0);
|
||||
Carousel.getOrCreateInstance(userMenuCarousel).to(0);
|
||||
});
|
||||
|
||||
// Handle the 'slid.bs.carousel' event (Fired when the carousel has completed its slide transition).
|
||||
$(selectors.userMenuCarousel).on('slid.bs.carousel', () => {
|
||||
userMenuCarousel?.addEventListener('slid.bs.carousel', () => {
|
||||
const activeCarouselItem = userMenu.querySelector(selectors.userMenuCarouselItemActive);
|
||||
// Set the focus on the newly activated carousel item.
|
||||
activeCarouselItem.focus();
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
define("core_form/collapsesections",["exports","jquery","core/pending"],(function(_exports,_jquery,_pending){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
define("core_form/collapsesections",["exports","theme_boost/bootstrap/collapse","core/pending"],(function(_exports,_collapse,_pending){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
/**
|
||||
* Collapse or expand all form sections on clicking the expand all / collapse al link.
|
||||
*
|
||||
@@ -6,6 +6,6 @@ define("core_form/collapsesections",["exports","jquery","core/pending"],(functio
|
||||
* @copyright 2021 Bas Brands
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @since 4.0
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_jquery=_interopRequireDefault(_jquery),_pending=_interopRequireDefault(_pending);const SELECTORS_FORM=".mform",SELECTORS_FORMHEADER=".fheader",SELECTORS_FORMCONTAINER="fieldset > .fcontainer",CLASSES_SHOW="show",CLASSES_COLLAPSED="collapsed",CLASSES_HIDDEN="d-none";_exports.init=collapsesections=>{const pendingPromise=new _pending.default("core_form/collapsesections"),collapsemenu=document.querySelector(collapsesections),formParent=collapsemenu.closest(SELECTORS_FORM),formContainers=formParent.querySelectorAll(SELECTORS_FORMCONTAINER);collapsemenu.addEventListener("keydown",(e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),collapsemenu.click())}));let formcontainercount=0,expandedcount=0;formContainers.forEach((container=>{container.parentElement.classList.contains(CLASSES_HIDDEN)||formcontainercount++,container.classList.contains(CLASSES_SHOW)&&expandedcount++})),formcontainercount===expandedcount&&(collapsemenu.classList.remove(CLASSES_COLLAPSED),collapsemenu.setAttribute("aria-expanded",!0)),collapsemenu.addEventListener("click",(()=>{let action="hide";collapsemenu.classList.contains(CLASSES_COLLAPSED)&&(action="show"),formContainers.forEach((container=>(0,_jquery.default)(container).collapse(action)))}));const collapseElementIds=[...formParent.querySelectorAll(SELECTORS_FORMHEADER)].map(((element,index)=>(element.id=element.id||"collapseElement-".concat(index),element.id)));collapsemenu.setAttribute("aria-controls",collapseElementIds.join(" ")),(0,_jquery.default)(SELECTORS_FORMCONTAINER).on("hidden.bs.collapse",(()=>{[...formContainers].every((container=>!container.classList.contains(CLASSES_SHOW)))&&(collapsemenu.classList.add(CLASSES_COLLAPSED),collapsemenu.setAttribute("aria-expanded",!1))})),(0,_jquery.default)(SELECTORS_FORMCONTAINER).on("shown.bs.collapse",(()=>{[...formContainers].every((container=>container.classList.contains(CLASSES_SHOW)))&&(collapsemenu.classList.remove(CLASSES_COLLAPSED),collapsemenu.setAttribute("aria-expanded",!0))})),pendingPromise.resolve()}}));
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_collapse=_interopRequireDefault(_collapse),_pending=_interopRequireDefault(_pending);const SELECTORS_FORM=".mform",SELECTORS_FORMHEADER=".fheader",SELECTORS_FORMCONTAINER="fieldset > .fcontainer",CLASSES_SHOW="show",CLASSES_COLLAPSED="collapsed",CLASSES_HIDDEN="d-none";_exports.init=collapsesections=>{const pendingPromise=new _pending.default("core_form/collapsesections"),collapsemenu=document.querySelector(collapsesections),formParent=collapsemenu.closest(SELECTORS_FORM),formContainers=formParent.querySelectorAll(SELECTORS_FORMCONTAINER);[...formContainers].map((formContainer=>new _collapse.default(formContainer,{toggle:!1}))),collapsemenu.addEventListener("keydown",(e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),collapsemenu.click())}));let formcontainercount=0,expandedcount=0;formContainers.forEach((container=>{container.parentElement.classList.contains(CLASSES_HIDDEN)||formcontainercount++,container.classList.contains(CLASSES_SHOW)&&expandedcount++})),formcontainercount===expandedcount&&(collapsemenu.classList.remove(CLASSES_COLLAPSED),collapsemenu.setAttribute("aria-expanded",!0)),collapsemenu.addEventListener("click",(()=>{collapsemenu.classList.contains(CLASSES_COLLAPSED)?formContainers.forEach((container=>_collapse.default.getInstance(container).show())):formContainers.forEach((container=>_collapse.default.getInstance(container).hide()))}));const collapseElementIds=[...formParent.querySelectorAll(SELECTORS_FORMHEADER)].map(((element,index)=>(element.id=element.id||"collapseElement-".concat(index),element.id)));collapsemenu.setAttribute("aria-controls",collapseElementIds.join(" "));[...document.querySelectorAll(SELECTORS_FORMCONTAINER)].forEach((collapseTriggerEl=>{collapseTriggerEl.addEventListener("hidden.bs.collapse",(()=>{[...formContainers].every((container=>!container.classList.contains(CLASSES_SHOW)))&&(collapsemenu.classList.add(CLASSES_COLLAPSED),collapsemenu.setAttribute("aria-expanded",!1))})),collapseTriggerEl.addEventListener("shown.bs.collapse",(()=>{[...formContainers].every((container=>container.classList.contains(CLASSES_SHOW)))&&(collapsemenu.classList.remove(CLASSES_COLLAPSED),collapsemenu.setAttribute("aria-expanded",!0))}))})),pendingPromise.resolve()}}));
|
||||
|
||||
//# sourceMappingURL=collapsesections.min.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -22,7 +22,7 @@
|
||||
* @since 4.0
|
||||
*/
|
||||
|
||||
import $ from 'jquery';
|
||||
import Collapse from 'theme_boost/bootstrap/collapse';
|
||||
import Pending from 'core/pending';
|
||||
|
||||
const SELECTORS = {
|
||||
@@ -43,12 +43,12 @@ const CLASSES = {
|
||||
* @param {string} collapsesections the collapse/expand link id.
|
||||
*/
|
||||
export const init = collapsesections => {
|
||||
// All jQuery in this code can be replaced when MDL-71979 is integrated (move to Bootstrap 5).
|
||||
const pendingPromise = new Pending('core_form/collapsesections');
|
||||
const collapsemenu = document.querySelector(collapsesections);
|
||||
|
||||
const formParent = collapsemenu.closest(SELECTORS.FORM);
|
||||
const formContainers = formParent.querySelectorAll(SELECTORS.FORMCONTAINER);
|
||||
[...formContainers].map(formContainer => new Collapse(formContainer, {toggle: false}));
|
||||
|
||||
collapsemenu.addEventListener('keydown', e => {
|
||||
if (e.key === 'Enter' || e.key === ' ') {
|
||||
@@ -77,12 +77,11 @@ export const init = collapsesections => {
|
||||
|
||||
// When the collapse menu is toggled, update each form container to match.
|
||||
collapsemenu.addEventListener('click', () => {
|
||||
let action = 'hide';
|
||||
if (collapsemenu.classList.contains(CLASSES.COLLAPSED)) {
|
||||
action = 'show';
|
||||
formContainers.forEach(container => Collapse.getInstance(container).show());
|
||||
} else {
|
||||
formContainers.forEach(container => Collapse.getInstance(container).hide());
|
||||
}
|
||||
|
||||
formContainers.forEach(container => $(container).collapse(action));
|
||||
});
|
||||
|
||||
// Ensure collapse menu button adds aria-controls attribute referring to each collapsible element.
|
||||
@@ -94,19 +93,22 @@ export const init = collapsesections => {
|
||||
collapsemenu.setAttribute('aria-controls', collapseElementIds.join(' '));
|
||||
|
||||
// When any form container is toggled, re-calculate collapse menu state.
|
||||
$(SELECTORS.FORMCONTAINER).on('hidden.bs.collapse', () => {
|
||||
const allCollapsed = [...formContainers].every(container => !container.classList.contains(CLASSES.SHOW));
|
||||
if (allCollapsed) {
|
||||
collapsemenu.classList.add(CLASSES.COLLAPSED);
|
||||
collapsemenu.setAttribute('aria-expanded', false);
|
||||
}
|
||||
});
|
||||
$(SELECTORS.FORMCONTAINER).on('shown.bs.collapse', () => {
|
||||
const allExpanded = [...formContainers].every(container => container.classList.contains(CLASSES.SHOW));
|
||||
if (allExpanded) {
|
||||
collapsemenu.classList.remove(CLASSES.COLLAPSED);
|
||||
collapsemenu.setAttribute('aria-expanded', true);
|
||||
}
|
||||
const collapseTriggerList = document.querySelectorAll(SELECTORS.FORMCONTAINER);
|
||||
[...collapseTriggerList].forEach(collapseTriggerEl => {
|
||||
collapseTriggerEl.addEventListener('hidden.bs.collapse', () => {
|
||||
const allCollapsed = [...formContainers].every(container => !container.classList.contains(CLASSES.SHOW));
|
||||
if (allCollapsed) {
|
||||
collapsemenu.classList.add(CLASSES.COLLAPSED);
|
||||
collapsemenu.setAttribute('aria-expanded', false);
|
||||
}
|
||||
});
|
||||
collapseTriggerEl.addEventListener('shown.bs.collapse', () => {
|
||||
const allExpanded = [...formContainers].every(container => container.classList.contains(CLASSES.SHOW));
|
||||
if (allExpanded) {
|
||||
collapsemenu.classList.remove(CLASSES.COLLAPSED);
|
||||
collapsemenu.setAttribute('aria-expanded', true);
|
||||
}
|
||||
});
|
||||
});
|
||||
pendingPromise.resolve();
|
||||
};
|
||||
|
||||
@@ -51,13 +51,14 @@
|
||||
</div>
|
||||
</div>
|
||||
{{#js}}
|
||||
require(['jquery', 'theme_boost/bootstrap/toast'], function(jQuery) {
|
||||
require(['theme_boost/bootstrap/toast'], function(Toast) {
|
||||
// Show the toast.
|
||||
// Bootstrap toast components are not shown automatically.
|
||||
jQuery('#toast-{{uniqid}}').toast('show');
|
||||
const toastTrigger = document.getElementById('toast-{{uniqid}}');
|
||||
new Toast(toastTrigger).show();
|
||||
|
||||
jQuery('#toast-{{uniqid}}').on('hidden.bs.toast', function(e) {
|
||||
e.target.remove();
|
||||
// Remove the toast from the DOM when it is hidden.
|
||||
toastTrigger.addEventListener('hidden.bs.toast', function() {
|
||||
toastTrigger.remove();
|
||||
});
|
||||
});
|
||||
{{/js}}
|
||||
|
||||
@@ -90,25 +90,27 @@ require(
|
||||
function(
|
||||
$
|
||||
) {
|
||||
var uniqid = "{{uniqid}}";
|
||||
var container = $('#searchinput-navbar-' + uniqid);
|
||||
var opensearch = container.find('[data-action="opensearch"]');
|
||||
var input = container.find('[data-region="input"]');
|
||||
var submit = container.find('[data-action="submit"]');
|
||||
const container = document.getElementById('searchform-navbar');
|
||||
const opensearch = container.parentElement.querySelector('[data-action="opensearch"]');
|
||||
const input = container.querySelector('[data-region="input"]');
|
||||
const submit = container.querySelector('[data-action="submit"]');
|
||||
|
||||
submit.on('click', function(e) {
|
||||
if (input.val() === '') {
|
||||
submit.addEventListener('click', (e) => {
|
||||
if (input.valUE === '') {
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
container.on('hidden.bs.collapse', function() {
|
||||
opensearch.removeClass('d-none');
|
||||
input.val('');
|
||||
|
||||
container.addEventListener('hidden.bs.collapse', () => {
|
||||
opensearch.classList.remove('d-none');
|
||||
input.value = '';
|
||||
});
|
||||
container.on('show.bs.collapse', function() {
|
||||
opensearch.addClass('d-none');
|
||||
|
||||
container.addEventListener('show.bs.collapse', () => {
|
||||
opensearch.classList.add('d-none');
|
||||
});
|
||||
container.on('shown.bs.collapse', function() {
|
||||
|
||||
container.addEventListener('shown.bs.collapse', () => {
|
||||
input.focus();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -139,8 +139,8 @@ echo '</div>';
|
||||
|
||||
$inlinejs = <<<EOF
|
||||
require(
|
||||
['core/local/dropdown/dialog', 'jquery'],
|
||||
(Module, jQuery) => {
|
||||
['core/local/dropdown/dialog'],
|
||||
(Module) => {
|
||||
const dialog = Module.getDropdownDialog('#dialogjscontrols');
|
||||
|
||||
document.querySelector('#buttontext').addEventListener('click', () => {
|
||||
@@ -163,12 +163,10 @@ require(
|
||||
}
|
||||
visibility();
|
||||
|
||||
|
||||
// Bootstrap 4 events are still jQuery.
|
||||
jQuery(dialog.getElement()).on('shown.bs.dropdown', (e) => {
|
||||
dialog.getElement().addEventListener('shown.bs.dropdown', (e) => {
|
||||
visibility();
|
||||
});
|
||||
jQuery(dialog.getElement()).on('hidden.bs.dropdown', (e) => {
|
||||
dialog.getElement().addEventListener('hidden.bs.dropdown', (e) => {
|
||||
visibility();
|
||||
});
|
||||
}
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
@@ -5,6 +5,6 @@
|
||||
* @copyright 2018 Ryan Wyllie <ryan@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define("core_message/message_drawer_view_contacts",["jquery","core/pubsub","core/str","core_message/message_drawer_events","core_message/message_drawer_view_contacts_section_contacts","core_message/message_drawer_view_contacts_section_requests"],(function($,PubSub,Str,MessageDrawerEvents,ContactsSection,RequestsSection){var SELECTORS_ACTION_SHOW_CONTACTS_SECTION='[data-action="show-contacts-section"]',SELECTORS_ACTION_SHOW_REQUESTS_SECTION='[data-action="show-requests-section"]',SELECTORS_CONTACT_REQUEST_COUNT='[data-region="contact-request-count"]',SELECTORS_CONTACTS_SECTION_CONTAINER='[data-section="contacts"]',SELECTORS_REQUESTS_SECTION_CONTAINER='[data-section="requests"]',getContactsSectionContainer=function(body){return body.find(SELECTORS_CONTACTS_SECTION_CONTAINER)},getRequestsSectionContainer=function(body){return body.find(SELECTORS_REQUESTS_SECTION_CONTAINER)},getShowContactsAction=function(body){return body.find(SELECTORS_ACTION_SHOW_CONTACTS_SECTION)},getShowRequestsAction=function(body){return body.find(SELECTORS_ACTION_SHOW_REQUESTS_SECTION)},decrementContactRequestCount=function(body){return function(){var countContainer=body.find(SELECTORS_CONTACT_REQUEST_COUNT),count=parseInt(countContainer.text(),10);(count=isNaN(count)?0:count-1)<=0?countContainer.addClass("hidden"):countContainer.text(count)}};return{show:function(namespace,header,body,footer,tab){(body=$(body)).attr("data-contacts-init")||(!function(body){var contactsSection=getContactsSectionContainer(body),requestsSection=getRequestsSectionContainer(body),showContactsAction=getShowContactsAction(body),showRequestsAction=getShowRequestsAction(body);showContactsAction.on("show.bs.tab",(function(){ContactsSection.show(contactsSection)})),showRequestsAction.on("show.bs.tab",(function(){RequestsSection.show(requestsSection)})),PubSub.subscribe(MessageDrawerEvents.CONTACT_REQUEST_ACCEPTED,decrementContactRequestCount(body)),PubSub.subscribe(MessageDrawerEvents.CONTACT_REQUEST_DECLINED,decrementContactRequestCount(body))}(body),body.attr("data-contacts-init",!0));var contactsSection=getContactsSectionContainer(body),requestsSection=getRequestsSectionContainer(body);if(tab){var showContactsAction=getShowContactsAction(body),showRequestsAction=getShowRequestsAction(body);"requests"==tab?(showContactsAction.removeClass("active"),contactsSection.removeClass("show active"),showRequestsAction.addClass("active"),requestsSection.addClass("show active")):(showRequestsAction.removeClass("active"),requestsSection.removeClass("show active"),showContactsAction.addClass("active"),contactsSection.addClass("show active"))}return contactsSection.hasClass("active")?ContactsSection.show(contactsSection):RequestsSection.show(requestsSection),$.Deferred().resolve().promise()},description:function(){return Str.get_string("messagedrawerviewcontacts","core_message")}}}));
|
||||
define("core_message/message_drawer_view_contacts",["jquery","core/pubsub","core/str","core_message/message_drawer_events","core_message/message_drawer_view_contacts_section_contacts","core_message/message_drawer_view_contacts_section_requests"],(function($,PubSub,Str,MessageDrawerEvents,ContactsSection,RequestsSection){var SELECTORS_ACTION_SHOW_CONTACTS_SECTION='[data-action="show-contacts-section"]',SELECTORS_ACTION_SHOW_REQUESTS_SECTION='[data-action="show-requests-section"]',SELECTORS_CONTACT_REQUEST_COUNT='[data-region="contact-request-count"]',SELECTORS_CONTACTS_SECTION_CONTAINER='[data-section="contacts"]',SELECTORS_REQUESTS_SECTION_CONTAINER='[data-section="requests"]',getContactsSectionContainer=function(body){return body.find(SELECTORS_CONTACTS_SECTION_CONTAINER)},getRequestsSectionContainer=function(body){return body.find(SELECTORS_REQUESTS_SECTION_CONTAINER)},getShowContactsAction=function(body){return body.find(SELECTORS_ACTION_SHOW_CONTACTS_SECTION)},getShowRequestsAction=function(body){return body.find(SELECTORS_ACTION_SHOW_REQUESTS_SECTION)},decrementContactRequestCount=function(body){return function(){var countContainer=body.find(SELECTORS_CONTACT_REQUEST_COUNT),count=parseInt(countContainer.text(),10);(count=isNaN(count)?0:count-1)<=0?countContainer.addClass("hidden"):countContainer.text(count)}};return{show:function(namespace,header,body,footer,tab){(body=$(body)).attr("data-contacts-init")||(!function(body){var contactsSection=getContactsSectionContainer(body),requestsSection=getRequestsSectionContainer(body),showContactsAction=getShowContactsAction(body),showRequestsAction=getShowRequestsAction(body);showContactsAction[0].addEventListener("show.bs.tab",(function(){ContactsSection.show(contactsSection)})),showRequestsAction[0].addEventListener("show.bs.tab",(function(){RequestsSection.show(requestsSection)})),PubSub.subscribe(MessageDrawerEvents.CONTACT_REQUEST_ACCEPTED,decrementContactRequestCount(body)),PubSub.subscribe(MessageDrawerEvents.CONTACT_REQUEST_DECLINED,decrementContactRequestCount(body))}(body),body.attr("data-contacts-init",!0));var contactsSection=getContactsSectionContainer(body),requestsSection=getRequestsSectionContainer(body);if(tab){var showContactsAction=getShowContactsAction(body),showRequestsAction=getShowRequestsAction(body);"requests"==tab?(showContactsAction.removeClass("active"),contactsSection.removeClass("show active"),showRequestsAction.addClass("active"),requestsSection.addClass("show active")):(showRequestsAction.removeClass("active"),requestsSection.removeClass("show active"),showContactsAction.addClass("active"),contactsSection.addClass("show active"))}return contactsSection.hasClass("active")?ContactsSection.show(contactsSection):RequestsSection.show(requestsSection),$.Deferred().resolve().promise()},description:function(){return Str.get_string("messagedrawerviewcontacts","core_message")}}}));
|
||||
|
||||
//# sourceMappingURL=message_drawer_view_contacts.min.js.map
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -412,17 +412,21 @@ function(
|
||||
|
||||
// These are theme-specific to help us fix random behat fails.
|
||||
// These events target those events defined in BS3 and BS4 onwards.
|
||||
root.on('hide.bs.collapse', '.collapse', function(e) {
|
||||
var pendingPromise = new Pending();
|
||||
$(e.target).one('hidden.bs.collapse', function() {
|
||||
pendingPromise.resolve();
|
||||
root[0].querySelectorAll('.collapse').forEach((collapse) => {
|
||||
collapse.addEventListener('hide.bs.collapse', (e) => {
|
||||
var pendingPromise = new Pending();
|
||||
e.target.addEventListener('hidden.bs.collapse', function() {
|
||||
pendingPromise.resolve();
|
||||
}, {once: true});
|
||||
});
|
||||
});
|
||||
|
||||
root.on('show.bs.collapse', '.collapse', function(e) {
|
||||
var pendingPromise = new Pending();
|
||||
$(e.target).one('shown.bs.collapse', function() {
|
||||
pendingPromise.resolve();
|
||||
root[0].querySelectorAll('.collapse').forEach((collapse) => {
|
||||
collapse.addEventListener('show.bs.collapse', (e) => {
|
||||
var pendingPromise = new Pending();
|
||||
e.target.addEventListener('shown.bs.collapse', function() {
|
||||
pendingPromise.resolve();
|
||||
}, {once: true});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -128,11 +128,11 @@ function(
|
||||
var showContactsAction = getShowContactsAction(body);
|
||||
var showRequestsAction = getShowRequestsAction(body);
|
||||
|
||||
showContactsAction.on('show.bs.tab', function() {
|
||||
showContactsAction[0].addEventListener('show.bs.tab', function() {
|
||||
ContactsSection.show(contactsSection);
|
||||
});
|
||||
|
||||
showRequestsAction.on('show.bs.tab', function() {
|
||||
showRequestsAction[0].addEventListener('show.bs.tab', function() {
|
||||
RequestsSection.show(requestsSection);
|
||||
});
|
||||
|
||||
|
||||
@@ -612,7 +612,7 @@ function(
|
||||
var toggle = root.find(SELECTORS.TOGGLE);
|
||||
root.css('min-height', toggle.outerHeight());
|
||||
|
||||
root.on('show.bs.collapse', function() {
|
||||
root[0].addEventListener('show.bs.collapse', function() {
|
||||
setExpanded(root);
|
||||
LazyLoadList.show(listRoot, loadCallback, function(contentContainer, conversations, userId) {
|
||||
return render(conversations, userId)
|
||||
@@ -624,7 +624,7 @@ function(
|
||||
});
|
||||
});
|
||||
|
||||
root.on('hidden.bs.collapse', function() {
|
||||
root[0].addEventListener('hidden.bs.collapse', function() {
|
||||
setCollapsed(root);
|
||||
});
|
||||
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
define("mod_assign/actionbar/grading/extra_filters_dropdown",["exports","core/local/dropdown/dialog","core_user/repository","jquery"],(function(_exports,_dialog,_repository,_jquery){var obj;
|
||||
define("mod_assign/actionbar/grading/extra_filters_dropdown",["exports","core/local/dropdown/dialog","core_user/repository"],(function(_exports,_dialog,_repository){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0;
|
||||
/**
|
||||
* Module for the extra filters dropdown on the submissions page.
|
||||
*
|
||||
* @module mod_assign/actionbar/grading/extra_filters_dropdown
|
||||
* @copyright 2024 Mihail Geshoski <mihail@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.init=void 0,_jquery=(obj=_jquery)&&obj.__esModule?obj:{default:obj};const Selectors_extraFiltersDropdown=".dropdown.extrafilters",Selectors_extraFiltersClose='a[data-action="close"]',Selectors_workflowFilterElement='select[name="workflowfilter"]',Selectors_markerFilterElement='select[name="markingallocationfilter"]',Selectors_suspendedParticipantsFilterCheckbox='input[type="checkbox"][name="suspendedparticipantsfilter"]',Selectors_suspendedParticipantsFilterHidden='input[type="hidden"][name="suspendedparticipantsfilter"]',restoreAppliedWorkflowFilter=async extraFiltersDropdown=>{const appliedWorkflowFilter=await(0,_repository.getUserPreference)("assign_workflowfilter");extraFiltersDropdown.getElement().querySelector(Selectors_workflowFilterElement).value=appliedWorkflowFilter},restoreAppliedMarkerFilter=async extraFiltersDropdown=>{const markerFilterSelect=extraFiltersDropdown.getElement().querySelector(Selectors_markerFilterElement);if(markerFilterSelect){const appliedMarkerFilter=await(0,_repository.getUserPreference)("assign_markerfilter");markerFilterSelect.value=appliedMarkerFilter}},restoreAppliedSuspendedParticipantsFilter=async extraFiltersDropdown=>{const suspendedParticipantsFilterCheckbox=extraFiltersDropdown.getElement().querySelector(Selectors_suspendedParticipantsFilterCheckbox);if(suspendedParticipantsFilterCheckbox){const suspendedParticipantsFilterHidden=suspendedParticipantsFilterCheckbox.parentNode.querySelector(Selectors_suspendedParticipantsFilterHidden),showOnlyActiveParticipants=await(0,_repository.getUserPreference)("grade_report_showonlyactiveenrol");suspendedParticipantsFilterCheckbox.checked=!showOnlyActiveParticipants,suspendedParticipantsFilterHidden.disabled=!showOnlyActiveParticipants}};_exports.init=()=>{const extraFiltersDropdown=(0,_dialog.getDropdownDialog)(Selectors_extraFiltersDropdown);extraFiltersDropdown&&(extraFiltersDropdown=>{extraFiltersDropdown.getElement().addEventListener("click",(e=>{e.target.closest(Selectors_extraFiltersClose)&&(e.preventDefault(),extraFiltersDropdown.setVisible(!1))})),extraFiltersDropdown.getElement().addEventListener("change",(e=>{const suspendedParticipantsFilterCheckbox=e.target.closest(Selectors_suspendedParticipantsFilterCheckbox);suspendedParticipantsFilterCheckbox&&(suspendedParticipantsFilterCheckbox.parentNode.querySelector(Selectors_suspendedParticipantsFilterHidden).disabled=suspendedParticipantsFilterCheckbox.checked)})),(0,_jquery.default)(extraFiltersDropdown.getElement()).on("hide.bs.dropdown",(()=>{restoreAppliedWorkflowFilter(extraFiltersDropdown),restoreAppliedMarkerFilter(extraFiltersDropdown),restoreAppliedSuspendedParticipantsFilter(extraFiltersDropdown)}))})(extraFiltersDropdown)}}));
|
||||
*/
|
||||
const Selectors_extraFiltersDropdown=".dropdown.extrafilters",Selectors_extraFiltersClose='a[data-action="close"]',Selectors_workflowFilterElement='select[name="workflowfilter"]',Selectors_markerFilterElement='select[name="markingallocationfilter"]',Selectors_suspendedParticipantsFilterCheckbox='input[type="checkbox"][name="suspendedparticipantsfilter"]',Selectors_suspendedParticipantsFilterHidden='input[type="hidden"][name="suspendedparticipantsfilter"]',restoreAppliedWorkflowFilter=async extraFiltersDropdown=>{const appliedWorkflowFilter=await(0,_repository.getUserPreference)("assign_workflowfilter");extraFiltersDropdown.getElement().querySelector(Selectors_workflowFilterElement).value=appliedWorkflowFilter},restoreAppliedMarkerFilter=async extraFiltersDropdown=>{const markerFilterSelect=extraFiltersDropdown.getElement().querySelector(Selectors_markerFilterElement);if(markerFilterSelect){const appliedMarkerFilter=await(0,_repository.getUserPreference)("assign_markerfilter");markerFilterSelect.value=appliedMarkerFilter}},restoreAppliedSuspendedParticipantsFilter=async extraFiltersDropdown=>{const suspendedParticipantsFilterCheckbox=extraFiltersDropdown.getElement().querySelector(Selectors_suspendedParticipantsFilterCheckbox);if(suspendedParticipantsFilterCheckbox){const suspendedParticipantsFilterHidden=suspendedParticipantsFilterCheckbox.parentNode.querySelector(Selectors_suspendedParticipantsFilterHidden),showOnlyActiveParticipants=await(0,_repository.getUserPreference)("grade_report_showonlyactiveenrol");suspendedParticipantsFilterCheckbox.checked=!showOnlyActiveParticipants,suspendedParticipantsFilterHidden.disabled=!showOnlyActiveParticipants}};_exports.init=()=>{const extraFiltersDropdown=(0,_dialog.getDropdownDialog)(Selectors_extraFiltersDropdown);extraFiltersDropdown&&(extraFiltersDropdown=>{extraFiltersDropdown.getElement().addEventListener("click",(e=>{e.target.closest(Selectors_extraFiltersClose)&&(e.preventDefault(),extraFiltersDropdown.setVisible(!1))})),extraFiltersDropdown.getElement().addEventListener("change",(e=>{const suspendedParticipantsFilterCheckbox=e.target.closest(Selectors_suspendedParticipantsFilterCheckbox);suspendedParticipantsFilterCheckbox&&(suspendedParticipantsFilterCheckbox.parentNode.querySelector(Selectors_suspendedParticipantsFilterHidden).disabled=suspendedParticipantsFilterCheckbox.checked)})),extraFiltersDropdown.getElement().addEventListener("hide.bs.dropdown",(()=>{restoreAppliedWorkflowFilter(extraFiltersDropdown),restoreAppliedMarkerFilter(extraFiltersDropdown),restoreAppliedSuspendedParticipantsFilter(extraFiltersDropdown)}))})(extraFiltersDropdown)}}));
|
||||
|
||||
//# sourceMappingURL=extra_filters_dropdown.min.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -15,7 +15,6 @@
|
||||
|
||||
import {getDropdownDialog} from 'core/local/dropdown/dialog';
|
||||
import {getUserPreference} from 'core_user/repository';
|
||||
import $ from 'jquery';
|
||||
|
||||
/**
|
||||
* Module for the extra filters dropdown on the submissions page.
|
||||
@@ -65,7 +64,7 @@ const registerEventListeners = (extraFiltersDropdown) => {
|
||||
});
|
||||
|
||||
// Event listener triggered upon hiding of the dropdown.
|
||||
$(extraFiltersDropdown.getElement()).on('hide.bs.dropdown', () => {
|
||||
extraFiltersDropdown.getElement().addEventListener('hide.bs.dropdown', () => {
|
||||
// Restore the filters to their stored preference values once the dropdown is closed.
|
||||
restoreAppliedWorkflowFilter(extraFiltersDropdown);
|
||||
restoreAppliedMarkerFilter(extraFiltersDropdown);
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
define("qbank_managecategories/newchild",["exports","core/reactive","jquery","qbank_managecategories/categorymanager"],(function(_exports,_reactive,_jquery,_categorymanager){var obj;Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_jquery=(obj=_jquery)&&obj.__esModule?obj:{default:obj};class _default extends _reactive.BaseComponent{create(descriptor){this.name=descriptor.element.id,this.selectors={NEW_CHILD:".qbank_managecategories-newchild",CATEGORY_ID:id=>"#category-".concat(id)},this.classes={DROP_TARGET:"qbank_managecategories-droptarget"},this.ids={CATEGORY:id=>"category-".concat(id)}}stateReady(){this.dragdrop=new _reactive.DragDrop(this)}destroy(){void 0!==this.dragdrop&&(this.dragdrop.unregister(),this.dragdrop=void 0)}static init(target,selectors){return new this({element:document.querySelector(target),selectors:selectors,reactive:_categorymanager.categorymanager})}validateDropData(dropData){return!this.getElement().closest(this.selectors.CATEGORY_ID(dropData.id))}showDropZone(dropData,event){const dropTarget=event.target.closest(this.selectors.NEW_CHILD);dropTarget.classList.add(this.classes.DROP_TARGET),(0,_jquery.default)(dropTarget).tooltip("show")}hideDropZone(dropData,event){const dropTarget=event.target.closest(this.selectors.NEW_CHILD);dropTarget.classList.remove(this.classes.DROP_TARGET),(0,_jquery.default)(dropTarget).tooltip("hide")}drop(dropData,event){const dropTarget=event.target.closest(this.selectors.NEW_CHILD);if(!dropTarget)return;if(!document.getElementById(this.ids.CATEGORY(dropData.id)))return;const targetParentId=dropTarget.dataset.parent;_categorymanager.categorymanager.moveCategory(dropData.id,targetParentId)}getWatchers(){return[{watch:"categories.parent:updated",handler:this.checkNewChild}]}checkNewChild(_ref){let{element:element}=_ref;element.parent===parseInt(this.element.dataset.parent)&&this.remove()}}return _exports.default=_default,_exports.default}));
|
||||
define("qbank_managecategories/newchild",["exports","core/reactive","qbank_managecategories/categorymanager","theme_boost/bootstrap/tooltip"],(function(_exports,_reactive,_categorymanager,_tooltip){var obj;Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_tooltip=(obj=_tooltip)&&obj.__esModule?obj:{default:obj};class _default extends _reactive.BaseComponent{create(descriptor){this.name=descriptor.element.id,this.selectors={NEW_CHILD:".qbank_managecategories-newchild",CATEGORY_ID:id=>"#category-".concat(id)},this.classes={DROP_TARGET:"qbank_managecategories-droptarget"},this.ids={CATEGORY:id=>"category-".concat(id)}}stateReady(){this.dragdrop=new _reactive.DragDrop(this)}destroy(){void 0!==this.dragdrop&&(this.dragdrop.unregister(),this.dragdrop=void 0)}static init(target,selectors){return new this({element:document.querySelector(target),selectors:selectors,reactive:_categorymanager.categorymanager})}validateDropData(dropData){return!this.getElement().closest(this.selectors.CATEGORY_ID(dropData.id))}showDropZone(dropData,event){const dropTarget=event.target.closest(this.selectors.NEW_CHILD);dropTarget.classList.add(this.classes.DROP_TARGET),_tooltip.default.getOrCreateInstance(dropTarget).show()}hideDropZone(dropData,event){const dropTarget=event.target.closest(this.selectors.NEW_CHILD);dropTarget.classList.remove(this.classes.DROP_TARGET),_tooltip.default.getOrCreateInstance(dropTarget).hide()}drop(dropData,event){const dropTarget=event.target.closest(this.selectors.NEW_CHILD);if(!dropTarget)return;if(!document.getElementById(this.ids.CATEGORY(dropData.id)))return;const targetParentId=dropTarget.dataset.parent;_categorymanager.categorymanager.moveCategory(dropData.id,targetParentId)}getWatchers(){return[{watch:"categories.parent:updated",handler:this.checkNewChild}]}checkNewChild(_ref){let{element:element}=_ref;element.parent===parseInt(this.element.dataset.parent)&&this.remove()}}return _exports.default=_default,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=newchild.min.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -23,8 +23,8 @@
|
||||
*/
|
||||
|
||||
import {BaseComponent, DragDrop} from 'core/reactive';
|
||||
import $ from 'jquery';
|
||||
import {categorymanager} from 'qbank_managecategories/categorymanager';
|
||||
import Tooltip from 'theme_boost/bootstrap/tooltip';
|
||||
|
||||
export default class extends BaseComponent {
|
||||
create(descriptor) {
|
||||
@@ -85,13 +85,13 @@ export default class extends BaseComponent {
|
||||
showDropZone(dropData, event) {
|
||||
const dropTarget = event.target.closest(this.selectors.NEW_CHILD);
|
||||
dropTarget.classList.add(this.classes.DROP_TARGET);
|
||||
$(dropTarget).tooltip('show');
|
||||
Tooltip.getOrCreateInstance(dropTarget).show();
|
||||
}
|
||||
|
||||
hideDropZone(dropData, event) {
|
||||
const dropTarget = event.target.closest(this.selectors.NEW_CHILD);
|
||||
dropTarget.classList.remove(this.classes.DROP_TARGET);
|
||||
$(dropTarget).tooltip('hide');
|
||||
Tooltip.getOrCreateInstance(dropTarget).hide();
|
||||
}
|
||||
|
||||
drop(dropData, event) {
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
define("qtype_multianswer/feedback",["exports","theme_boost/popover","jquery"],(function(_exports,_popover,_jquery){var obj;
|
||||
define("qtype_multianswer/feedback",["exports","theme_boost/popover","theme_boost/bootstrap/popover"],(function(_exports,_popover,_popover2){var obj;
|
||||
/**
|
||||
* Backward compatibility file for the old popover.js
|
||||
*
|
||||
* @module qtype_multianswer/feedback
|
||||
* @copyright 2023 Jun Pataleta <jun@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_jquery=(obj=_jquery)&&obj.__esModule?obj:{default:obj};const SELECTORS_FEEDBACK_TRIGGER='.feedbacktrigger[data-bs-toggle="popover"]';let feedbackInitialised=!1;var _default={initPopovers:()=>{feedbackInitialised||((0,_jquery.default)(SELECTORS_FEEDBACK_TRIGGER).popover(),document.addEventListener("click",(e=>{e.target.closest(SELECTORS_FEEDBACK_TRIGGER)&&e.preventDefault()})),feedbackInitialised=!0)}};return _exports.default=_default,_exports.default}));
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_popover2=(obj=_popover2)&&obj.__esModule?obj:{default:obj};const SELECTORS_FEEDBACK_TRIGGER='.feedbacktrigger[data-bs-toggle="popover"]';let feedbackInitialised=!1;var _default={initPopovers:()=>{if(!feedbackInitialised){[...document.querySelectorAll(SELECTORS_FEEDBACK_TRIGGER)].map((trigger=>new _popover2.default(trigger))),document.addEventListener("click",(e=>{e.target.closest(SELECTORS_FEEDBACK_TRIGGER)&&e.preventDefault()})),feedbackInitialised=!0}}};return _exports.default=_default,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=feedback.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"feedback.min.js","sources":["../src/feedback.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Backward compatibility file for the old popover.js\n *\n * @module qtype_multianswer/feedback\n * @copyright 2023 Jun Pataleta <jun@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport 'theme_boost/popover';\nimport $ from 'jquery';\n\n/** @property {object} Contains the list of selectors for this module. */\nconst SELECTORS = {\n FEEDBACK_TRIGGER: '.feedbacktrigger[data-bs-toggle=\"popover\"]',\n};\n\n/** @property {boolean} Flag to indicate whether the feedback popovers have been already initialised. */\nlet feedbackInitialised = false;\n\n/**\n * Function to initialise the feedback popovers.\n */\nconst initPopovers = () => {\n if (!feedbackInitialised) {\n $(SELECTORS.FEEDBACK_TRIGGER).popover();\n\n document.addEventListener('click', (e) => {\n if (e.target.closest(SELECTORS.FEEDBACK_TRIGGER)) {\n e.preventDefault();\n }\n });\n feedbackInitialised = true;\n }\n};\n\nexport default {\n initPopovers: initPopovers,\n};\n"],"names":["SELECTORS","feedbackInitialised","initPopovers","popover","document","addEventListener","e","target","closest","preventDefault"],"mappings":";;;;;;;mJA2BMA,2BACgB,iDAIlBC,qBAAsB,eAkBX,CACXC,aAdiB,KACZD,0CACCD,4BAA4BG,UAE9BC,SAASC,iBAAiB,SAAUC,IAC5BA,EAAEC,OAAOC,QAAQR,6BACjBM,EAAEG,oBAGVR,qBAAsB"}
|
||||
{"version":3,"file":"feedback.min.js","sources":["../src/feedback.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Backward compatibility file for the old popover.js\n *\n * @module qtype_multianswer/feedback\n * @copyright 2023 Jun Pataleta <jun@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport 'theme_boost/popover';\nimport Popover from 'theme_boost/bootstrap/popover';\n\n/** @property {object} Contains the list of selectors for this module. */\nconst SELECTORS = {\n FEEDBACK_TRIGGER: '.feedbacktrigger[data-bs-toggle=\"popover\"]',\n};\n\n/** @property {boolean} Flag to indicate whether the feedback popovers have been already initialised. */\nlet feedbackInitialised = false;\n\n/**\n * Function to initialise the feedback popovers.\n */\nconst initPopovers = () => {\n if (!feedbackInitialised) {\n const popoverTriggers = document.querySelectorAll(SELECTORS.FEEDBACK_TRIGGER);\n [...popoverTriggers].map((trigger) => new Popover(trigger));\n\n document.addEventListener('click', (e) => {\n if (e.target.closest(SELECTORS.FEEDBACK_TRIGGER)) {\n e.preventDefault();\n }\n });\n feedbackInitialised = true;\n }\n};\n\nexport default {\n initPopovers: initPopovers,\n};\n"],"names":["SELECTORS","feedbackInitialised","initPopovers","document","querySelectorAll","map","trigger","Popover","addEventListener","e","target","closest","preventDefault"],"mappings":";;;;;;;uJA2BMA,2BACgB,iDAIlBC,qBAAsB,eAmBX,CACXC,aAfiB,SACZD,oBAAqB,KACEE,SAASC,iBAAiBJ,6BAC7BK,KAAKC,SAAY,IAAIC,kBAAQD,WAElDH,SAASK,iBAAiB,SAAUC,IAC5BA,EAAEC,OAAOC,QAAQX,6BACjBS,EAAEG,oBAGVX,qBAAsB"}
|
||||
@@ -22,7 +22,7 @@
|
||||
*/
|
||||
|
||||
import 'theme_boost/popover';
|
||||
import $ from 'jquery';
|
||||
import Popover from 'theme_boost/bootstrap/popover';
|
||||
|
||||
/** @property {object} Contains the list of selectors for this module. */
|
||||
const SELECTORS = {
|
||||
@@ -37,7 +37,8 @@ let feedbackInitialised = false;
|
||||
*/
|
||||
const initPopovers = () => {
|
||||
if (!feedbackInitialised) {
|
||||
$(SELECTORS.FEEDBACK_TRIGGER).popover();
|
||||
const popoverTriggers = document.querySelectorAll(SELECTORS.FEEDBACK_TRIGGER);
|
||||
[...popoverTriggers].map((trigger) => new Popover(trigger));
|
||||
|
||||
document.addEventListener('click', (e) => {
|
||||
if (e.target.closest(SELECTORS.FEEDBACK_TRIGGER)) {
|
||||
|
||||
Vendored
+2
-2
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2
-2
@@ -1,10 +1,10 @@
|
||||
define("theme_boost/footer-popover",["exports","jquery","./popover"],(function(_exports,_jquery,_popover){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
define("theme_boost/footer-popover",["exports","./bootstrap/popover"],(function(_exports,_popover){var obj;
|
||||
/**
|
||||
* Shows the footer content in a popover.
|
||||
*
|
||||
* @module theme_boost/footer-popover
|
||||
* @copyright 2021 Bas Brands
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),Object.defineProperty(_exports,"Popover",{enumerable:!0,get:function(){return _popover.default}}),_exports.init=void 0,_jquery=_interopRequireDefault(_jquery),_popover=_interopRequireDefault(_popover);const SELECTORS_FOOTERCONTAINER='[data-region="footer-container-popover"]',SELECTORS_FOOTERCONTENT='[data-region="footer-content-popover"]',SELECTORS_FOOTERBUTTON='[data-action="footer-popover"]';let footerIsShown=!1;_exports.init=()=>{const container=document.querySelector(SELECTORS_FOOTERCONTAINER),footerButton=document.querySelector(SELECTORS_FOOTERBUTTON);(0,_jquery.default)(footerButton).popover({content:getFooterContent,container:container,html:!0,placement:"top",customClass:"footer",trigger:"click",boundary:"viewport",popperConfig:{modifiers:{preventOverflow:{boundariesElement:"viewport",padding:48},offset:{},flip:{behavior:"flip"},arrow:{element:".arrow"}}}}),document.addEventListener("click",(e=>{footerIsShown&&!e.target.closest(SELECTORS_FOOTERCONTAINER)&&(0,_jquery.default)(footerButton).popover("hide")}),!0),document.addEventListener("keydown",(e=>{footerIsShown&&"Escape"===e.key&&((0,_jquery.default)(footerButton).popover("hide"),footerButton.focus())})),document.addEventListener("focus",(e=>{footerIsShown&&!e.target.closest(SELECTORS_FOOTERCONTAINER)&&(0,_jquery.default)(footerButton).popover("hide")}),!0),(0,_jquery.default)(footerButton).on("show.bs.popover",(()=>{footerIsShown=!0})),(0,_jquery.default)(footerButton).on("hide.bs.popover",(()=>{footerIsShown=!1}))};const getFooterContent=()=>document.querySelector(SELECTORS_FOOTERCONTENT).innerHTML}));
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),Object.defineProperty(_exports,"Popover",{enumerable:!0,get:function(){return _popover.default}}),_exports.init=void 0,_popover=(obj=_popover)&&obj.__esModule?obj:{default:obj};const SELECTORS_FOOTERCONTAINER='[data-region="footer-container-popover"]',SELECTORS_FOOTERCONTENT='[data-region="footer-content-popover"]',SELECTORS_FOOTERBUTTON='[data-action="footer-popover"]',SELECTORS_FOOTERARROW='[data-region="footer-container-popover"] .popover-arrow';let footerIsShown=!1;_exports.init=()=>{const container=document.querySelector(SELECTORS_FOOTERCONTAINER),footerButton=document.querySelector(SELECTORS_FOOTERBUTTON),footerArrow=document.querySelector(SELECTORS_FOOTERARROW);new _popover.default(footerButton,{content:getFooterContent,container:container,html:!0,placement:"top",customClass:"footer",trigger:"click",boundary:"viewport",modifiers:[{name:"preventOverflow",options:{boundariesElement:"viewport",padding:48}},{name:"arrow",options:{element:footerArrow}}]}),document.addEventListener("click",(e=>{footerIsShown&&!e.target.closest(SELECTORS_FOOTERCONTAINER)&&_popover.default.getInstance(footerButton).hide()}),!0),document.addEventListener("keydown",(e=>{footerIsShown&&"Escape"===e.key&&(_popover.default.getInstance(footerButton).hide(),footerButton.focus())})),document.addEventListener("focus",(e=>{footerIsShown&&!e.target.closest(SELECTORS_FOOTERCONTAINER)&&_popover.default.getInstance(footerButton).hide()}),!0),footerButton.addEventListener("show.bs.popover",(()=>{footerIsShown=!0})),footerButton.addEventListener("hide.bs.popover",(()=>{footerIsShown=!1}))};const getFooterContent=()=>document.querySelector(SELECTORS_FOOTERCONTENT).innerHTML}));
|
||||
|
||||
//# sourceMappingURL=footer-popover.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"footer-popover.min.js","sources":["../src/footer-popover.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Shows the footer content in a popover.\n *\n * @module theme_boost/footer-popover\n * @copyright 2021 Bas Brands\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport $ from 'jquery';\nimport Popover from './popover';\n\nconst SELECTORS = {\n FOOTERCONTAINER: '[data-region=\"footer-container-popover\"]',\n FOOTERCONTENT: '[data-region=\"footer-content-popover\"]',\n FOOTERBUTTON: '[data-action=\"footer-popover\"]'\n};\n\nlet footerIsShown = false;\n\nexport const init = () => {\n const container = document.querySelector(SELECTORS.FOOTERCONTAINER);\n const footerButton = document.querySelector(SELECTORS.FOOTERBUTTON);\n\n // All jQuery in this code can be replaced when MDL-71979 is integrated.\n $(footerButton).popover({\n content: getFooterContent,\n container: container,\n html: true,\n placement: 'top',\n customClass: 'footer',\n trigger: 'click',\n boundary: 'viewport',\n popperConfig: {\n modifiers: {\n preventOverflow: {\n boundariesElement: 'viewport',\n padding: 48\n },\n offset: {},\n flip: {\n behavior: 'flip'\n },\n arrow: {\n element: '.arrow'\n },\n }\n }\n });\n\n document.addEventListener('click', e => {\n if (footerIsShown && !e.target.closest(SELECTORS.FOOTERCONTAINER)) {\n $(footerButton).popover('hide');\n }\n },\n true);\n\n document.addEventListener('keydown', e => {\n if (footerIsShown && e.key === 'Escape') {\n $(footerButton).popover('hide');\n footerButton.focus();\n }\n });\n\n document.addEventListener('focus', e => {\n if (footerIsShown && !e.target.closest(SELECTORS.FOOTERCONTAINER)) {\n $(footerButton).popover('hide');\n }\n },\n true);\n\n $(footerButton).on('show.bs.popover', () => {\n footerIsShown = true;\n });\n\n $(footerButton).on('hide.bs.popover', () => {\n footerIsShown = false;\n });\n};\n\n/**\n * Get the footer content for popover.\n *\n * @returns {String} HTML string\n * @private\n */\nconst getFooterContent = () => {\n return document.querySelector(SELECTORS.FOOTERCONTENT).innerHTML;\n};\n\nexport {\n Popover\n};\n"],"names":["SELECTORS","footerIsShown","container","document","querySelector","footerButton","popover","content","getFooterContent","html","placement","customClass","trigger","boundary","popperConfig","modifiers","preventOverflow","boundariesElement","padding","offset","flip","behavior","arrow","element","addEventListener","e","target","closest","key","focus","on","innerHTML"],"mappings":";;;;;;;4QA0BMA,0BACe,2CADfA,wBAEa,yCAFbA,uBAGY,qCAGdC,eAAgB,gBAEA,WACVC,UAAYC,SAASC,cAAcJ,2BACnCK,aAAeF,SAASC,cAAcJ,4CAG1CK,cAAcC,QAAQ,CACpBC,QAASC,iBACTN,UAAWA,UACXO,MAAM,EACNC,UAAW,MACXC,YAAa,SACbC,QAAS,QACTC,SAAU,WACVC,aAAc,CACVC,UAAW,CACPC,gBAAiB,CACbC,kBAAmB,WACnBC,QAAS,IAEbC,OAAQ,GACRC,KAAM,CACFC,SAAU,QAEdC,MAAO,CACHC,QAAS,cAMzBpB,SAASqB,iBAAiB,SAASC,IAC3BxB,gBAAkBwB,EAAEC,OAAOC,QAAQ3B,gDACjCK,cAAcC,QAAQ,WAGhC,GAEAH,SAASqB,iBAAiB,WAAWC,IAC7BxB,eAA2B,WAAVwB,EAAEG,0BACjBvB,cAAcC,QAAQ,QACxBD,aAAawB,YAIrB1B,SAASqB,iBAAiB,SAASC,IAC3BxB,gBAAkBwB,EAAEC,OAAOC,QAAQ3B,gDACjCK,cAAcC,QAAQ,WAGhC,uBAEED,cAAcyB,GAAG,mBAAmB,KAClC7B,eAAgB,yBAGlBI,cAAcyB,GAAG,mBAAmB,KAClC7B,eAAgB,YAUlBO,iBAAmB,IACdL,SAASC,cAAcJ,yBAAyB+B"}
|
||||
{"version":3,"file":"footer-popover.min.js","sources":["../src/footer-popover.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Shows the footer content in a popover.\n *\n * @module theme_boost/footer-popover\n * @copyright 2021 Bas Brands\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Popover from './bootstrap/popover';\n\nconst SELECTORS = {\n FOOTERCONTAINER: '[data-region=\"footer-container-popover\"]',\n FOOTERCONTENT: '[data-region=\"footer-content-popover\"]',\n FOOTERBUTTON: '[data-action=\"footer-popover\"]',\n FOOTERARROW: '[data-region=\"footer-container-popover\"] .popover-arrow',\n};\n\nlet footerIsShown = false;\n\nexport const init = () => {\n const container = document.querySelector(SELECTORS.FOOTERCONTAINER);\n const footerButton = document.querySelector(SELECTORS.FOOTERBUTTON);\n const footerArrow = document.querySelector(SELECTORS.FOOTERARROW);\n\n new Popover(footerButton, {\n content: getFooterContent,\n container: container,\n html: true,\n placement: 'top',\n customClass: 'footer',\n trigger: 'click',\n boundary: 'viewport',\n modifiers: [\n {\n name: 'preventOverflow',\n options: {\n boundariesElement: 'viewport',\n padding: 48,\n },\n },\n {\n name: 'arrow',\n options: {\n element: footerArrow,\n },\n },\n ]\n });\n\n document.addEventListener('click', e => {\n if (footerIsShown && !e.target.closest(SELECTORS.FOOTERCONTAINER)) {\n Popover.getInstance(footerButton).hide();\n }\n },\n true);\n\n document.addEventListener('keydown', e => {\n if (footerIsShown && e.key === 'Escape') {\n Popover.getInstance(footerButton).hide();\n footerButton.focus();\n }\n });\n\n document.addEventListener('focus', e => {\n if (footerIsShown && !e.target.closest(SELECTORS.FOOTERCONTAINER)) {\n Popover.getInstance(footerButton).hide();\n }\n },\n true);\n\n footerButton.addEventListener('show.bs.popover', () => {\n footerIsShown = true;\n });\n\n footerButton.addEventListener('hide.bs.popover', () => {\n footerIsShown = false;\n });\n};\n\n/**\n * Get the footer content for popover.\n *\n * @returns {String} HTML string\n * @private\n */\nconst getFooterContent = () => {\n return document.querySelector(SELECTORS.FOOTERCONTENT).innerHTML;\n};\n\nexport {\n Popover\n};\n"],"names":["SELECTORS","footerIsShown","container","document","querySelector","footerButton","footerArrow","Popover","content","getFooterContent","html","placement","customClass","trigger","boundary","modifiers","name","options","boundariesElement","padding","element","addEventListener","e","target","closest","getInstance","hide","key","focus","innerHTML"],"mappings":";;;;;;;oPAyBMA,0BACe,2CADfA,wBAEa,yCAFbA,uBAGY,iCAHZA,sBAIW,8DAGbC,eAAgB,gBAEA,WACVC,UAAYC,SAASC,cAAcJ,2BACnCK,aAAeF,SAASC,cAAcJ,wBACtCM,YAAcH,SAASC,cAAcJ,2BAEvCO,iBAAQF,aAAc,CACtBG,QAASC,iBACTP,UAAWA,UACXQ,MAAM,EACNC,UAAW,MACXC,YAAa,SACbC,QAAS,QACTC,SAAU,WACVC,UAAW,CACP,CACIC,KAAM,kBACNC,QAAS,CACLC,kBAAmB,WACnBC,QAAS,KAGjB,CACIH,KAAM,QACNC,QAAS,CACLG,QAASd,iBAMzBH,SAASkB,iBAAiB,SAASC,IAC3BrB,gBAAkBqB,EAAEC,OAAOC,QAAQxB,6CAC3ByB,YAAYpB,cAAcqB,UAG1C,GAEAvB,SAASkB,iBAAiB,WAAWC,IAC7BrB,eAA2B,WAAVqB,EAAEK,uBACXF,YAAYpB,cAAcqB,OAClCrB,aAAauB,YAIrBzB,SAASkB,iBAAiB,SAASC,IAC3BrB,gBAAkBqB,EAAEC,OAAOC,QAAQxB,6CAC3ByB,YAAYpB,cAAcqB,UAG1C,GAEArB,aAAagB,iBAAiB,mBAAmB,KAC7CpB,eAAgB,KAGpBI,aAAagB,iBAAiB,mBAAmB,KAC7CpB,eAAgB,YAUlBQ,iBAAmB,IACdN,SAASC,cAAcJ,yBAAyB6B"}
|
||||
Vendored
+2
-2
@@ -1,4 +1,4 @@
|
||||
define("theme_boost/loader",["exports","jquery","./aria","./index","core/pending","./bootstrap/tools/sanitizer","./pending"],(function(_exports,_jquery,Aria,_index,_pending,_sanitizer,_pending2){function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
define("theme_boost/loader",["exports","./aria","./index","core/pending","./bootstrap/util/sanitizer","./pending"],(function(_exports,Aria,Bootstrap,_pending,_sanitizer,_pending2){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,cache&&cache.set(obj,newObj),newObj}
|
||||
/**
|
||||
* Template renderer for Moodle. Load and render Moodle templates with Mustache.
|
||||
*
|
||||
@@ -6,6 +6,6 @@ define("theme_boost/loader",["exports","jquery","./aria","./index","core/pending
|
||||
* @copyright 2015 Damyon Wiese <damyon@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @since 2.9
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),Object.defineProperty(_exports,"Bootstrap",{enumerable:!0,get:function(){return _index.default}}),_jquery=_interopRequireDefault(_jquery),Aria=function(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}newObj.default=obj,cache&&cache.set(obj,newObj);return newObj}(Aria),_index=_interopRequireDefault(_index),_pending=_interopRequireDefault(_pending),_pending2=_interopRequireDefault(_pending2);const pendingPromise=new _pending.default("theme_boost/loader:init");(0,_pending2.default)(),Aria.init(),(()=>{(0,_jquery.default)('a[data-toggle="tab"]').on("shown.bs.tab",(function(e){var hash=(0,_jquery.default)(e.target).attr("href");history.replaceState?history.replaceState(null,null,hash):location.hash=hash}));const hash=window.location.hash;if(hash){const tab=document.querySelector('[role="tablist"] [href="'+hash+'"]');tab&&tab.click()}})(),(0,_jquery.default)("body").popover({container:"body",selector:'[data-toggle="popover"]',trigger:"focus",whitelist:Object.assign(_sanitizer.DefaultWhitelist,{table:[],thead:[],tbody:[],tr:[],th:[],td:[]})}),document.addEventListener("keydown",(e=>{"Escape"===e.key&&e.target.closest('[data-toggle="popover"]')&&(0,_jquery.default)(e.target).popover("hide"),"Enter"===e.key&&e.target.closest('[data-toggle="popover"]')&&(0,_jquery.default)(e.target).popover("show")})),document.addEventListener("click",(e=>{(0,_jquery.default)(e.target).closest('[data-toggle="popover"]').popover("show")})),(0,_jquery.default)("body").tooltip({container:"body",selector:'[data-toggle="tooltip"]'}),_jquery.default.fn.dropdown.Constructor.Default.popperConfig={modifiers:{flip:{enabled:!1},storeTopPosition:{enabled:!0,fn:(data,options)=>(data.storedTop=data.offsets.popper.top,data),order:299},restoreTopPosition:{enabled:!0,fn:(data,options)=>(data.offsets.popper.top=data.storedTop,data),order:301}}},pendingPromise.resolve()}));
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.Bootstrap=void 0,Aria=_interopRequireWildcard(Aria),Bootstrap=_interopRequireWildcard(Bootstrap),_exports.Bootstrap=Bootstrap,_pending=_interopRequireDefault(_pending),_pending2=_interopRequireDefault(_pending2);const pendingPromise=new _pending.default("theme_boost/loader:init");(0,_pending2.default)(),Aria.init(),(()=>{[...document.querySelectorAll('a[data-bs-toggle="tab"]')].map((tabTriggerEl=>tabTriggerEl.addEventListener("shown.bs.tab",(e=>{var hash=e.target.getAttribute("href");history.replaceState?history.replaceState(null,null,hash):location.hash=hash}))));const hash=window.location.hash;if(hash){const tab=document.querySelector('[role="tablist"] [href="'+hash+'"]');tab&&tab.click()}})(),(()=>{const popoverTriggerList=document.querySelectorAll('[data-bs-toggle="popover"]'),popoverConfig={container:"body",trigger:"focus",allowList:Object.assign(_sanitizer.DefaultAllowlist,{table:[],thead:[],tbody:[],tr:[],th:[],td:[]})};[...popoverTriggerList].map((popoverTriggerEl=>new Bootstrap.Popover(popoverTriggerEl,popoverConfig))),document.addEventListener("core/modal:bodyRendered",(e=>{[...e.target.querySelectorAll('[data-bs-toggle="popover"]')].map((popoverTriggerEl=>new Bootstrap.Popover(popoverTriggerEl,popoverConfig)))})),document.addEventListener("keydown",(e=>{const popoverTrigger=e.target.closest('[data-bs-toggle="popover"]');"Escape"===e.key&&popoverTrigger&&Bootstrap.Popover.getInstance(popoverTrigger).hide(),"Enter"===e.key&&popoverTrigger&&Bootstrap.Popover.getInstance(popoverTrigger).show()})),document.addEventListener("click",(e=>{const popoverTrigger=e.target.closest('[data-bs-toggle="popover"]');if(!popoverTrigger)return;const popover=Bootstrap.Popover.getInstance(popoverTrigger);popover._isShown()||popover.show()}))})(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((tooltipTriggerEl=>new Bootstrap.Tooltip(tooltipTriggerEl))),pendingPromise.resolve()}));
|
||||
|
||||
//# sourceMappingURL=loader.min.js.map
|
||||
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user