mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 16:32:18 +02:00
MDL-68463 core: Add helper functions to toggle checkboxes
This commit is contained in:
parent
0d01f2ae56
commit
814da16778
2
lib/amd/build/checkbox-toggleall.min.js
vendored
2
lib/amd/build/checkbox-toggleall.min.js
vendored
@ -1,2 +1,2 @@
|
||||
define ("core/checkbox-toggleall",["jquery","core/pubsub"],function(a,b){var c=!1,d={checkboxToggled:"core/checkbox-toggleall:checkboxToggled"},e=function(a,b,c){if(c){return a.find("[data-action=\"toggle\"][data-togglegroup=\""+b+"\"]")}else{return a.find("[data-action=\"toggle\"][data-togglegroup^=\""+b+"\"]")}},f=function(a,b){return e(a,b,!1).filter("[data-toggle=\"slave\"]")},g=function(a,b,c){return e(a,b,c).filter("[data-toggle=\"master\"]")},h=function(a,b){return e(a,b,!0).filter("[data-toggle=\"action\"]")},i=function(c){var e=c.data.root,g=a(c.target),h=g.data("togglegroup"),i;if(g.is(":checkbox")){i=g.is(":checked")}else{i=1===g.data("checkall")}var j=f(e,h),k=j.filter(":checked");l(e,h,i,!1);j.prop("checked",i);j.trigger("change");b.publish(d.checkboxToggled,{root:e,toggleGroupName:h,slaves:j,checkedSlaves:k,anyChecked:i})},j=function(c){var e=c.data.root,g=a(c.target),h=g.data("togglegroup").split(" "),i=[],j="";h.forEach(function(a){j+=" "+a;i.push(j.trim())});i.forEach(function(a){var c=f(e,a),g=c.filter(":checked"),h=c.length===g.length;l(e,a,h,!0);k(e,a,!g.length);b.publish(d.checkboxToggled,{root:e,toggleGroupName:a,slaves:c,checkedSlaves:g,anyChecked:!!g.length})})},k=function(a,b,c){h(a,b).prop("disabled",c)},l=function(b,c,d,e){var f=g(b,c,e);f.prop("checked",d);f.each(function(c,e){e=a(e);var f;if(d){f=e.data("toggle-deselectall")}else{f=e.data("toggle-selectall")}if(e.is(":checkbox")){var g=b.find("[for=\""+e.attr("id")+"\"]");if(g.length){if(g.html()!==f){g.html(f)}}}else{e.text(f);e.data("checkall",d?0:1)}})},m=function(){if(!c){c=!0;var b=a(document.body);b.on("click","[data-action=\"toggle\"][data-toggle=\"master\"]",{root:b},i);b.on("change","[data-action=\"toggle\"][data-toggle=\"slave\"]",{root:b},j)}};return{init:function init(){m()},events:d}});
|
||||
define ("core/checkbox-toggleall",["jquery","core/pubsub"],function(a,b){var c=!1,d={checkboxToggled:"core/checkbox-toggleall:checkboxToggled"},e=function(a,b,c){if(c){return a.find("[data-action=\"toggle\"][data-togglegroup=\""+b+"\"]")}else{return a.find("[data-action=\"toggle\"][data-togglegroup^=\""+b+"\"]")}},f=function(a,b){return e(a,b,!1).filter("[data-toggle=\"slave\"]")},g=function(a,b,c){return e(a,b,c).filter("[data-toggle=\"master\"]")},h=function(a,b){return e(a,b,!0).filter("[data-toggle=\"action\"]")},i=function(b){var c=b.data.root,d=a(b.target),e=d.data("togglegroup"),f;if(d.is(":checkbox")){f=d.is(":checked")}else{f=1===d.data("checkall")}j(c,e,f)},j=function(a,c,e){var g=f(a,c),h=g.filter(":checked");m(a,c,e,!1);g.prop("checked",e);g.trigger("change");b.publish(d.checkboxToggled,{root:a,toggleGroupName:c,slaves:g,checkedSlaves:h,anyChecked:e})},k=function(c){var e=c.data.root,g=a(c.target),h=g.data("togglegroup").split(" "),i=[],j="";h.forEach(function(a){j+=" "+a;i.push(j.trim())});i.forEach(function(a){var c=f(e,a),g=c.filter(":checked"),h=c.length===g.length;m(e,a,h,!0);l(e,a,!g.length);b.publish(d.checkboxToggled,{root:e,toggleGroupName:a,slaves:c,checkedSlaves:g,anyChecked:!!g.length})})},l=function(a,b,c){h(a,b).prop("disabled",c)},m=function(b,c,d,e){var f=g(b,c,e);f.prop("checked",d);f.each(function(c,e){e=a(e);var f;if(d){f=e.data("toggle-deselectall")}else{f=e.data("toggle-selectall")}if(e.is(":checkbox")){var g=b.find("[for=\""+e.attr("id")+"\"]");if(g.length){if(g.html()!==f){g.html(f)}}}else{e.text(f);e.data("checkall",d?0:1)}})},n=function(){if(!c){c=!0;var b=a(document.body);b.on("click","[data-action=\"toggle\"][data-toggle=\"master\"]",{root:b},i);b.on("change","[data-action=\"toggle\"][data-toggle=\"slave\"]",{root:b},k)}};return{init:function init(){n()},events:d,setGroupState:function setGroupState(b,c,d){b=a(b);m(b,c,d,!0);j(b,c,d)},updateSlavesFromMasterState:function updateSlavesFromMasterState(b,c){b=a(b);var d=g(b,c,!1),e;if(d.is(":checkbox")){e=d.is(":checked")}else{e=1===d.data("checkall")}j(b,c,e)}}});
|
||||
//# sourceMappingURL=checkbox-toggleall.min.js.map
|
||||
|
File diff suppressed because one or more lines are too long
@ -113,6 +113,38 @@ define(['jquery', 'core/pubsub'], function($, PubSub) {
|
||||
targetState = target.data('checkall') === 1;
|
||||
}
|
||||
|
||||
toggleSlavesToState(root, toggleGroupName, targetState);
|
||||
};
|
||||
|
||||
/**
|
||||
* Toggles the slave checkboxes from the masters.
|
||||
*
|
||||
* @param {HTMLElement} root
|
||||
* @param {String} toggleGroupName
|
||||
*/
|
||||
var updateSlavesFromMasterState = function(root, toggleGroupName) {
|
||||
// Normalise to jQuery Object.
|
||||
root = $(root);
|
||||
|
||||
var target = getControlCheckboxes(root, toggleGroupName, false);
|
||||
var targetState;
|
||||
if (target.is(':checkbox')) {
|
||||
targetState = target.is(':checked');
|
||||
} else {
|
||||
targetState = target.data('checkall') === 1;
|
||||
}
|
||||
|
||||
toggleSlavesToState(root, toggleGroupName, targetState);
|
||||
};
|
||||
|
||||
/**
|
||||
* Toggles the slave checkboxes to a specific state.
|
||||
*
|
||||
* @param {HTMLElement} root
|
||||
* @param {String} toggleGroupName
|
||||
* @param {Bool} targetState
|
||||
*/
|
||||
var toggleSlavesToState = function(root, toggleGroupName, targetState) {
|
||||
var slaves = getAllSlaveCheckboxes(root, toggleGroupName);
|
||||
var checkedSlaves = slaves.filter(':checked');
|
||||
|
||||
@ -132,6 +164,22 @@ define(['jquery', 'core/pubsub'], function($, PubSub) {
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the state for an entire group of checkboxes.
|
||||
*
|
||||
* @param {HTMLElement} root
|
||||
* @param {String} toggleGroupName
|
||||
* @param {Bool} targetState
|
||||
*/
|
||||
var setGroupState = function(root, toggleGroupName, targetState) {
|
||||
// Normalise to jQuery Object.
|
||||
root = $(root);
|
||||
|
||||
// Set the master and slaves.
|
||||
setMasterStates(root, toggleGroupName, targetState, true);
|
||||
toggleSlavesToState(root, toggleGroupName, targetState);
|
||||
};
|
||||
|
||||
/**
|
||||
* Toggles the master checkboxes in a given toggle group when all or none of the slave checkboxes in the same toggle group
|
||||
* have been selected.
|
||||
@ -242,5 +290,7 @@ define(['jquery', 'core/pubsub'], function($, PubSub) {
|
||||
registerListeners();
|
||||
},
|
||||
events: events,
|
||||
setGroupState: setGroupState,
|
||||
updateSlavesFromMasterState: updateSlavesFromMasterState,
|
||||
};
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user