Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 1441
Línea 25... Línea 25...
25
 * @copyright  2021 Ferran Recio <ferran@moodle.com>
25
 * @copyright  2021 Ferran Recio <ferran@moodle.com>
26
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
26
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
27
 */
27
 */
Línea 28... Línea 28...
28
 
28
 
-
 
29
// The core/tree uses jQuery to expand all nodes.
29
// The core/tree uses jQuery to expand all nodes.
30
import Collapse from 'theme_boost/bootstrap/collapse';
30
import jQuery from 'jquery';
31
import jQuery from 'jquery';
31
import Tree from 'core/tree';
32
import Tree from 'core/tree';
Línea 32... Línea 33...
32
import {getList} from 'core/normalise';
33
import {getList, getFirst} from 'core/normalise';
Línea 33... Línea 34...
33
 
34
 
34
export default class extends Tree {
35
export default class extends Tree {
Línea 59... Línea 60...
59
            this.getVisibleItems = () => {
60
            this.getVisibleItems = () => {
60
                this.refreshVisibleItemsCache();
61
                this.refreshVisibleItemsCache();
61
                return this._getVisibleItems();
62
                return this._getVisibleItems();
62
            };
63
            };
63
        }
64
        }
64
        // All jQuery events can be replaced when MDL-71979 is integrated.
65
        this.treeRoot[0].querySelectorAll(selectors.COLLAPSE).forEach(toggler => {
-
 
66
            const collapsible = document.getElementById(toggler.getAttribute('href').replace('#', ''));
65
        this.treeRoot.on('hidden.bs.collapse shown.bs.collapse', () => {
67
            collapsible.addEventListener('hidden.bs.collapse', () => this.refreshVisibleItemsCache());
66
            this.refreshVisibleItemsCache();
68
            collapsible.addEventListener('shown.bs.collapse', () => this.refreshVisibleItemsCache());
67
        });
69
        });
68
        // Register a custom callback for pressing enter key.
70
        // Register a custom callback for pressing enter key.
69
        this.registerEnterCallback(this.enterCallback.bind(this));
71
        this.registerEnterCallback(this.enterCallback.bind(this));
70
    }
72
    }
Línea 144... Línea 146...
144
     * Toggle a group item.
146
     * Toggle a group item.
145
     *
147
     *
146
     * @param {JQuery} item  the jQuery object
148
     * @param {JQuery} item  the jQuery object
147
     */
149
     */
148
    toggleGroup(item) {
150
    toggleGroup(item) {
149
        // All jQuery in this segment of code can be replaced when MDL-71979 is integrated.
-
 
150
        const toggler = item.find(this.selectors.COLLAPSE);
151
        const toggler = getFirst(item).querySelector(this.selectors.COLLAPSE);
151
        let collapsibleId = toggler.data('target') ?? toggler.attr('href');
152
        let collapsibleId = toggler.dataset?.target ?? toggler.getAttribute('href');
152
        if (!collapsibleId) {
153
        if (!collapsibleId) {
153
            return;
154
            return;
154
        }
155
        }
155
        collapsibleId = collapsibleId.replace('#', '');
156
        collapsibleId = collapsibleId.replace('#', '');
Línea 156... Línea -...
156
 
-
 
157
        // Bootstrap 4 uses jQuery to interact with collapsibles.
157
 
158
        const collapsible = jQuery(`#${collapsibleId}`);
158
        const collapsible = document.getElementById(collapsibleId);
159
        if (collapsible.length) {
159
        if (collapsible) {
160
            jQuery(`#${collapsibleId}`).collapse('toggle');
160
            Collapse.getOrCreateInstance(collapsible).toggle();
161
        }
161
        }
Línea 162... Línea 162...
162
    }
162
    }
163
 
163