%PDF- %PDF-
Direktori : /home/vacivi36/ava/course/format/amd/src/local/content/section/ |
Current File : /home/vacivi36/ava/course/format/amd/src/local/content/section/cmitem.js |
// 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/>. /** * Course course module item component. * * This component is used to control specific course modules interactions like drag and drop. * * @module core_courseformat/local/content/section/cmitem * @class core_courseformat/local/content/section/cmitem * @copyright 2021 Ferran Recio <ferran@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ import DndCmItem from 'core_courseformat/local/courseeditor/dndcmitem'; export default class extends DndCmItem { /** * Constructor hook. */ create() { // Optional component name for debugging. this.name = 'content_section_cmitem'; // Default query selectors. this.selectors = { DRAGICON: `.editing_move`, }; // Most classes will be loaded later by DndCmItem. this.classes = { LOCKED: 'editinprogress', }; // We need our id to watch specific events. this.id = this.element.dataset.id; } /** * Initial state ready method. */ stateReady() { this.configDragDrop(this.id); this.getElement(this.selectors.DRAGICON)?.classList.add(this.classes.DRAGICON); } /** * Component watchers. * * @returns {Array} of watchers */ getWatchers() { return [ {watch: `cm[${this.id}]:deleted`, handler: this.unregister}, {watch: `cm[${this.id}]:updated`, handler: this._refreshCm}, ]; } /** * Update a course index cm using the state information. * * @param {object} param * @param {Object} param.element details the update details. */ _refreshCm({element}) { // Update classes. this.element.classList.toggle(this.classes.DRAGGING, element.dragging ?? false); this.element.classList.toggle(this.classes.LOCKED, element.locked ?? false); this.locked = element.locked; } }