MDL-69525 core: Publish a single event when toggling slave checkboxes
[moodle.git] / lib / amd / build / checkbox-toggleall.min.js.map
CommitLineData
775dea63 1{"version":3,"sources":["../src/checkbox-toggleall.js"],"names":["define","$","PubSub","registered","events","checkboxToggled","getToggleGroupElements","root","toggleGroup","exactMatch","find","getAllSlaveCheckboxes","filter","getControlCheckboxes","getActionElements","toggleSlavesFromMasters","e","data","target","toggleGroupName","targetState","is","toggleSlavesToState","toggleMastersAndActionElements","toggleGroupSlaves","length","toggleGroupCheckedSlaves","setMasterStates","setActionElementStates","getToggleGroupLevels","toggleGroups","split","toggleGroupLevels","toggleGroupLevel","forEach","push","trim","slaves","prop","trigger","checkedSlaves","publish","anyChecked","toggleMastersFromSlaves","disableActionElements","masters","each","i","masterElement","targetString","masterLabel","attr","html","text","registerListeners","document","body","on","init","setGroupState","updateSlavesFromMasterState"],"mappings":"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","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 * A module to help with toggle select/deselect all.\n *\n * @module core/checkbox-toggleall\n * @copyright 2019 Andrew Nicols <andrew@nicols.co.uk>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(['jquery', 'core/pubsub'], function($, PubSub) {\n\n /**\n * Whether event listeners have already been registered.\n *\n * @private\n * @type {boolean}\n */\n var registered = false;\n\n /**\n * List of custom events that this module publishes.\n *\n * @private\n * @type {{checkboxToggled: string}}\n */\n var events = {\n checkboxToggled: 'core/checkbox-toggleall:checkboxToggled',\n };\n\n /**\n * Fetches elements that are member of a given toggle group.\n *\n * @private\n * @param {jQuery} root The root jQuery element.\n * @param {string} toggleGroup The toggle group name that we're searching form.\n * @param {boolean} exactMatch Whether we want an exact match we just want to match toggle groups that start with the given\n * toggle group name.\n * @returns {jQuery} The elements matching the given toggle group.\n */\n var getToggleGroupElements = function(root, toggleGroup, exactMatch) {\n if (exactMatch) {\n return root.find('[data-action=\"toggle\"][data-togglegroup=\"' + toggleGroup + '\"]');\n } else {\n return root.find('[data-action=\"toggle\"][data-togglegroup^=\"' + toggleGroup + '\"]');\n }\n };\n\n /**\n * Fetches the slave checkboxes for a given toggle group.\n *\n * @private\n * @param {jQuery} root The root jQuery element.\n * @param {string} toggleGroup The toggle group name.\n * @returns {jQuery} The slave checkboxes belonging to the toggle group.\n */\n var getAllSlaveCheckboxes = function(root, toggleGroup) {\n return getToggleGroupElements(root, toggleGroup, false).filter('[data-toggle=\"slave\"]');\n };\n\n /**\n * Fetches the master elements (checkboxes or buttons) that control the slave checkboxes in a given toggle group.\n *\n * @private\n * @param {jQuery} root The root jQuery element.\n * @param {string} toggleGroup The toggle group name.\n * @param {boolean} exactMatch\n * @returns {jQuery} The control elements belonging to the toggle group.\n */\n var getControlCheckboxes = function(root, toggleGroup, exactMatch) {\n return getToggleGroupElements(root, toggleGroup, exactMatch).filter('[data-toggle=\"master\"]');\n };\n\n /**\n * Fetches the action elements that perform actions on the selected checkboxes in a given toggle group.\n *\n * @private\n * @param {jQuery} root The root jQuery element.\n * @param {string} toggleGroup The toggle group name.\n * @returns {jQuery} The action elements belonging to the toggle group.\n */\n var getActionElements = function(root, toggleGroup) {\n return getToggleGroupElements(root, toggleGroup, true).filter('[data-toggle=\"action\"]');\n };\n\n /**\n * Toggles the slave checkboxes in a given toggle group when a master element in that toggle group is toggled.\n *\n * @private\n * @param {Object} e The event object.\n */\n var toggleSlavesFromMasters = function(e) {\n var root = e.data.root;\n var target = $(e.target);\n\n var toggleGroupName = target.data('togglegroup');\n var targetState;\n if (target.is(':checkbox')) {\n targetState = target.is(':checked');\n } else {\n targetState = target.data('checkall') === 1;\n }\n\n toggleSlavesToState(root, toggleGroupName, targetState);\n };\n\n /**\n * Toggles the slave checkboxes from the masters.\n *\n * @param {HTMLElement} root\n * @param {String} toggleGroupName\n */\n var updateSlavesFromMasterState = function(root, toggleGroupName) {\n // Normalise to jQuery Object.\n root = $(root);\n\n var target = getControlCheckboxes(root, toggleGroupName, false);\n var targetState;\n if (target.is(':checkbox')) {\n targetState = target.is(':checked');\n } else {\n targetState = target.data('checkall') === 1;\n }\n\n toggleSlavesToState(root, toggleGroupName, targetState);\n };\n\n /**\n * Toggles the master checkboxes and action elements in a given toggle group.\n *\n * @param {jQuery} root The root jQuery element.\n * @param {String} toggleGroupName The name of the toggle group\n */\n var toggleMastersAndActionElements = function(root, toggleGroupName) {\n var toggleGroupSlaves = getAllSlaveCheckboxes(root, toggleGroupName);\n if (toggleGroupSlaves.length > 0) {\n var toggleGroupCheckedSlaves = toggleGroupSlaves.filter(':checked');\n var targetState = toggleGroupSlaves.length === toggleGroupCheckedSlaves.length;\n\n // Make sure to toggle the exact master checkbox in the given toggle group.\n setMasterStates(root, toggleGroupName, targetState, true);\n // Enable the action elements if there's at least one checkbox checked in the given toggle group.\n // Disable otherwise.\n setActionElementStates(root, toggleGroupName, !toggleGroupCheckedSlaves.length);\n }\n };\n\n /**\n * Returns an array containing every toggle group level of a given toggle group.\n *\n * @param {String} toggleGroupName The name of the toggle group\n * @return {Array} toggleGroupLevels Array that contains every toggle group level of a given toggle group\n */\n var getToggleGroupLevels = function(toggleGroupName) {\n var toggleGroups = toggleGroupName.split(' ');\n var toggleGroupLevels = [];\n var toggleGroupLevel = '';\n\n toggleGroups.forEach(function(toggleGroupName) {\n toggleGroupLevel += ' ' + toggleGroupName;\n toggleGroupLevels.push(toggleGroupLevel.trim());\n });\n\n return toggleGroupLevels;\n };\n\n /**\n * Toggles the slave checkboxes to a specific state.\n *\n * @param {HTMLElement} root\n * @param {String} toggleGroupName\n * @param {Bool} targetState\n */\n var toggleSlavesToState = function(root, toggleGroupName, targetState) {\n var slaves = getAllSlaveCheckboxes(root, toggleGroupName);\n // Set the slave checkboxes from the masters and manually trigger the native 'change' event.\n slaves.prop('checked', targetState).trigger('change');\n // Get all checked slaves after the change of state.\n var checkedSlaves = slaves.filter(':checked');\n\n // Toggle the master checkbox in the given toggle group.\n setMasterStates(root, toggleGroupName, targetState, false);\n // Enable the action elements if there's at least one checkbox checked in the given toggle group. Disable otherwise.\n setActionElementStates(root, toggleGroupName, !checkedSlaves.length);\n\n // Get all toggle group levels and toggle accordingly all parent master checkboxes and action elements from each\n // level. Exclude the given toggle group (toggleGroupName) as the master checkboxes and action elements from this\n // level have been already toggled.\n var toggleGroupLevels = getToggleGroupLevels(toggleGroupName)\n .filter(toggleGroupLevel => toggleGroupLevel !== toggleGroupName);\n\n toggleGroupLevels.forEach(function(toggleGroupLevel) {\n // Toggle the master checkboxes action elements in the given toggle group level.\n toggleMastersAndActionElements(root, toggleGroupLevel);\n });\n\n PubSub.publish(events.checkboxToggled, {\n root: root,\n toggleGroupName: toggleGroupName,\n slaves: slaves,\n checkedSlaves: checkedSlaves,\n anyChecked: targetState,\n });\n };\n\n /**\n * Set the state for an entire group of checkboxes.\n *\n * @param {HTMLElement} root\n * @param {String} toggleGroupName\n * @param {Bool} targetState\n */\n var setGroupState = function(root, toggleGroupName, targetState) {\n // Normalise to jQuery Object.\n root = $(root);\n\n // Set the master and slaves.\n setMasterStates(root, toggleGroupName, targetState, true);\n toggleSlavesToState(root, toggleGroupName, targetState);\n };\n\n /**\n * Toggles the master checkboxes in a given toggle group when all or none of the slave checkboxes in the same toggle group\n * have been selected.\n *\n * @private\n * @param {Object} e The event object.\n */\n var toggleMastersFromSlaves = function(e) {\n var root = e.data.root;\n var target = $(e.target);\n var toggleGroupName = target.data('togglegroup');\n var slaves = getAllSlaveCheckboxes(root, toggleGroupName);\n var checkedSlaves = slaves.filter(':checked');\n\n // Get all toggle group levels for the given toggle group and toggle accordingly all master checkboxes\n // and action elements from each level.\n var toggleGroupLevels = getToggleGroupLevels(toggleGroupName);\n toggleGroupLevels.forEach(function(toggleGroupLevel) {\n // Toggle the master checkboxes action elements in the given toggle group level.\n toggleMastersAndActionElements(root, toggleGroupLevel);\n });\n\n PubSub.publish(events.checkboxToggled, {\n root: root,\n toggleGroupName: toggleGroupName,\n slaves: slaves,\n checkedSlaves: checkedSlaves,\n anyChecked: !!checkedSlaves.length,\n });\n };\n\n /**\n * Enables or disables the action elements.\n *\n * @private\n * @param {jQuery} root The root jQuery element.\n * @param {string} toggleGroupName The toggle group name of the action element(s).\n * @param {boolean} disableActionElements Whether to disable or to enable the action elements.\n */\n var setActionElementStates = function(root, toggleGroupName, disableActionElements) {\n getActionElements(root, toggleGroupName).prop('disabled', disableActionElements);\n };\n\n /**\n * Selects or deselects the master elements.\n *\n * @private\n * @param {jQuery} root The root jQuery element.\n * @param {string} toggleGroupName The toggle group name of the master element(s).\n * @param {boolean} targetState Whether to select (true) or deselect (false).\n * @param {boolean} exactMatch Whether to do an exact match for the toggle group name or not.\n */\n var setMasterStates = function(root, toggleGroupName, targetState, exactMatch) {\n // Set the master checkboxes value and ARIA labels..\n var masters = getControlCheckboxes(root, toggleGroupName, exactMatch);\n masters.prop('checked', targetState);\n masters.each(function(i, masterElement) {\n masterElement = $(masterElement);\n\n var targetString;\n if (targetState) {\n targetString = masterElement.data('toggle-deselectall');\n } else {\n targetString = masterElement.data('toggle-selectall');\n }\n\n if (masterElement.is(':checkbox')) {\n var masterLabel = root.find('[for=\"' + masterElement.attr('id') + '\"]');\n if (masterLabel.length) {\n if (masterLabel.html() !== targetString) {\n masterLabel.html(targetString);\n }\n }\n } else {\n masterElement.text(targetString);\n // Set the checkall data attribute.\n masterElement.data('checkall', targetState ? 0 : 1);\n }\n });\n };\n\n /**\n * Registers the event listeners.\n *\n * @private\n */\n var registerListeners = function() {\n if (!registered) {\n registered = true;\n\n var root = $(document.body);\n root.on('click', '[data-action=\"toggle\"][data-toggle=\"master\"]', {root: root}, toggleSlavesFromMasters);\n root.on('click', '[data-action=\"toggle\"][data-toggle=\"slave\"]', {root: root}, toggleMastersFromSlaves);\n }\n };\n\n return {\n init: function() {\n registerListeners();\n },\n events: events,\n setGroupState: setGroupState,\n updateSlavesFromMasterState: updateSlavesFromMasterState,\n };\n});\n"],"file":"checkbox-toggleall.min.js"}