AutorÃa | Ultima modificación | Ver Log |
// This file is part of Moodle - http://moodle.org/ //// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** An Event dispatcher used to dispatch Native JS CustomEvent objects with custom default properties.** @module core/event_dispatcher* @copyright 2021 Andrew Nicols <andrew@nicols.co.uk>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later* @since 4.0*//*** Dispatch an event as a CustomEvent on the specified container.* By default events are bubbled, and cancelable.** The eventName should typically by sourced using a constant. See the supplied examples.** Note: This function uses native events. Any additional details are passed to the function in event.detail.** This function mimics the behaviour of EventTarget.dispatchEvent but bubbles by default.** @method dispatchEvent* @param {String} eventName The name of the event* @param {Object} detail Any additional details to pass into the eveent* @param {HTMLElement} container The point at which to dispatch the event* @param {Object} options* @param {Boolean} options.bubbles Whether to bubble up the DOM* @param {Boolean} options.cancelable Whether preventDefault() can be called* @param {Boolean} options.composed Whether the event can bubble across the ShadowDOM bounadry* @returns {CustomEvent}** @example <caption>Using a native CustomEvent to indicate that some example data was displayed.</caption>* // mod/example/amd/src/events.js** import {dispatchEvent} from 'core/event_dispatcher';** export const eventTypes = {* exampleDataDisplayed: 'mod_example/exampleDataDisplayed',* };** export const notifyExampleDisplayed = someArgument => dispatchEvent(eventTypes.exampleDataDisplayed, {* someArgument,* }, document, {* cancelable: false,* });*/export const dispatchEvent = (eventName,detail = {},container = document,{bubbles = true,cancelable = false,composed = false,} = {}) => {const customEvent = new CustomEvent(eventName,{bubbles,cancelable,composed,detail,});container.dispatchEvent(customEvent);return customEvent;};