Proyectos de Subversion Moodle

Rev

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

Rev 11 Rev 1441
Línea 20... Línea 20...
20
 * @copyright 2021 Huong Nguyen <huongnv13@gmail.com>
20
 * @copyright 2021 Huong Nguyen <huongnv13@gmail.com>
21
 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
21
 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
22
 * @since 4.0
22
 * @since 4.0
23
 */
23
 */
Línea 24... Línea 24...
24
 
24
 
25
import 'theme_boost/popover';
-
 
26
import jQuery from 'jquery';
25
import Popover from 'theme_boost/bootstrap/popover';
Línea 27... Línea 26...
27
import * as CalendarSelectors from 'core_calendar/selectors';
26
import * as CalendarSelectors from 'core_calendar/selectors';
28
 
27
 
29
/**
28
/**
Línea 34... Línea 33...
34
const isPopoverAvailable = (dateContainer) => {
33
const isPopoverAvailable = (dateContainer) => {
35
    return window.getComputedStyle(dateContainer.querySelector(CalendarSelectors.elements.dateContent)).display === 'none';
34
    return window.getComputedStyle(dateContainer.querySelector(CalendarSelectors.elements.dateContent)).display === 'none';
36
};
35
};
Línea 37... Línea 36...
37
 
36
 
38
const isPopoverConfigured = new Map();
-
 
39
 
37
const isPopoverConfigured = new Map();
40
const showPopover = target => {
38
const showPopover = target => {
41
    const dateContainer = target.closest(CalendarSelectors.elements.dateContainer);
39
    const dateContainer = target.closest(CalendarSelectors.elements.dateContainer);
42
    if (!isPopoverConfigured.has(dateContainer)) {
-
 
43
        const dateEle = jQuery(target);
40
    if (!isPopoverConfigured.has(dateContainer)) {
44
        dateEle.popover({
41
        const config = {
45
            trigger: 'manual',
42
            trigger: 'manual',
46
            placement: 'top',
43
            placement: 'top',
47
            html: true,
44
            html: true,
48
            title: dateContainer.dataset.title,
45
            title: dateContainer.dataset.title,
49
            content: () => {
46
            content: () => {
50
                const source = jQuery(dateContainer).find(CalendarSelectors.elements.dateContent);
-
 
51
                const content = jQuery('<div>');
-
 
52
                if (source.length) {
47
                const source = dateContainer.querySelector(CalendarSelectors.elements.dateContent);
53
                    const temptContent = source.find('.hidden').clone(false);
-
 
54
                    content.html(temptContent.html());
-
 
55
                }
-
 
56
                return content.html();
48
                return source ? source.querySelector('.hidden').innerHTML : '';
57
            },
49
            },
58
            'animation': false,
50
            'animation': false,
-
 
51
        };
Línea 59... Línea 52...
59
        });
52
        new Popover(target, config);
60
 
53
 
Línea 61... Línea 54...
61
        isPopoverConfigured.set(dateContainer, true);
54
        isPopoverConfigured.set(dateContainer, true);
62
    }
55
    }
63
 
56
 
64
    if (isPopoverAvailable(dateContainer)) {
57
    if (isPopoverAvailable(dateContainer)) {
65
        jQuery(target).popover('show');
58
        Popover.getInstance(target).show();
66
        target.addEventListener('mouseleave', hidePopover);
59
        target.addEventListener('mouseleave', hidePopover);
67
        target.addEventListener('focusout', hidePopover);
60
        target.addEventListener('focusout', hidePopover);
Línea 83... Línea 76...
83
        // Checks if a target element is clicked or pressed.
76
        // Checks if a target element is clicked or pressed.
84
        const isTargetClicked = document.activeElement.contains(target);
77
        const isTargetClicked = document.activeElement.contains(target);
Línea 85... Línea 78...
85
 
78
 
86
        let removeListener = true;
79
        let removeListener = true;
87
        if (!isTargetActive && !isTargetHover) {
80
        if (!isTargetActive && !isTargetHover) {
88
            jQuery(target).popover('hide');
81
            Popover.getOrCreateInstance(target).hide();
89
        } else if (isTargetClicked) {
82
        } else if (isTargetClicked) {
90
            jQuery(document.activeElement).popover('hide');
83
            Popover.getOrCreateInstance(document.activeElement).hide();
91
        } else {
84
        } else {
92
            removeListener = false;
85
            removeListener = false;
Línea 93... Línea 86...
93
        }
86
        }