| Línea 20... | Línea 20... | 
          
            | 20 |  * @copyright  2021 Moodle
 | 20 |  * @copyright  2021 Moodle
 | 
          
            | 21 |  * @author     Mihail Geshoski <mihail@moodle.com>
 | 21 |  * @author     Mihail Geshoski <mihail@moodle.com>
 | 
          
            | 22 |  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 | 22 |  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 | 
          
            | 23 |  */
 | 23 |  */
 | 
          
            | Línea 24... | Línea 24... | 
          
            | 24 |  
 | 24 |  
 | 
          
            | 25 | import $ from 'jquery';
 | 25 | import Carousel from 'theme_boost/bootstrap/carousel';
 | 
          
            | Línea 26... | Línea 26... | 
          
            | 26 | import {space, enter} from 'core/key_codes';
 | 26 | import {space, enter} from 'core/key_codes';
 | 
          
            | 27 |  
 | 27 |  
 | 
          
            | 28 | /**
 | 28 | /**
 | 
          
            | Línea 39... | Línea 39... | 
          
            | 39 | /**
 | 39 | /**
 | 
          
            | 40 |  * Register event listeners.
 | 40 |  * Register event listeners.
 | 
          
            | 41 |  */
 | 41 |  */
 | 
          
            | 42 | const registerEventListeners = () => {
 | 42 | const registerEventListeners = () => {
 | 
          
            | 43 |     const userMenu = document.querySelector(selectors.userMenu);
 | 43 |     const userMenu = document.querySelector(selectors.userMenu);
 | 
          
            | - |   | 44 |     const userMenuCarousel = document.querySelector(selectors.userMenuCarousel);
 | 
          
            | Línea 44... | Línea 45... | 
          
            | 44 |  
 | 45 |  
 | 
          
            | 45 |     // Handle the 'shown.bs.dropdown' event (Fired when the dropdown menu is fully displayed).
 | 46 |     // Handle the 'shown.bs.dropdown' event (Fired when the dropdown menu is fully displayed).
 | 
          
            | 46 |     $(selectors.userMenu).on('shown.bs.dropdown', () => {
 | 47 |     userMenu.addEventListener('shown.bs.dropdown', () => {
 | 
          
            | 47 |         const activeCarouselItem = document.querySelector(selectors.userMenuCarouselItemActive);
 | 48 |         const activeCarouselItem = document.querySelector(selectors.userMenuCarouselItemActive);
 | 
          
            | 48 |         // Set the focus on the active carousel item.
 | 49 |         // Set the focus on the active carousel item.
 | 
          
            | Línea 49... | Línea 50... | 
          
            | 49 |         activeCarouselItem.focus();
 | 50 |         activeCarouselItem.focus();
 | 
          
            | Línea 94... | Línea 95... | 
          
            | 94 |         const targetedCarouselItemId = e.target.dataset.carouselTargetId;
 | 95 |         const targetedCarouselItemId = e.target.dataset.carouselTargetId;
 | 
          
            | 95 |         const targetedCarouselItem = userMenu.querySelector('#' + targetedCarouselItemId);
 | 96 |         const targetedCarouselItem = userMenu.querySelector('#' + targetedCarouselItemId);
 | 
          
            | 96 |         // Get the position (index) of the targeted carousel item within the parent container element.
 | 97 |         // Get the position (index) of the targeted carousel item within the parent container element.
 | 
          
            | 97 |         const index = Array.from(targetedCarouselItem.parentNode.children).indexOf(targetedCarouselItem);
 | 98 |         const index = Array.from(targetedCarouselItem.parentNode.children).indexOf(targetedCarouselItem);
 | 
          
            | 98 |         // Navigate to the targeted carousel item.
 | 99 |         // Navigate to the targeted carousel item.
 | 
          
            | 99 |         $(selectors.userMenuCarousel).carousel(index);
 | 100 |         Carousel.getOrCreateInstance(userMenuCarousel).to(index);
 | 
          
            | 100 |  
 | - |   | 
          
            | 101 |     };
 | 101 |     };
 | 
          
            | Línea 102... | Línea 102... | 
          
            | 102 |  
 | 102 |  
 | 
          
            | 103 |     // Handle the 'hide.bs.dropdown' event (Fired when the dropdown menu is being closed).
 | 103 |     // Handle the 'hide.bs.dropdown' event (Fired when the dropdown menu is being closed).
 | 
          
            | 104 |     $(selectors.userMenu).on('hide.bs.dropdown', () => {
 | 104 |     userMenu.addEventListener('hide.bs.dropdown', () => {
 | 
          
            | 105 |         // Reset the state once the user menu dropdown is closed and return back to the first (main) carousel item
 | 105 |         // Reset the state once the user menu dropdown is closed and return back to the first (main) carousel item
 | 
          
            | 106 |         // if necessary.
 | 106 |         // if necessary.
 | 
          
            | 107 |         $(selectors.userMenuCarousel).carousel(0);
 | 107 |         Carousel.getOrCreateInstance(userMenuCarousel).to(0);
 | 
          
            | Línea 108... | Línea 108... | 
          
            | 108 |     });
 | 108 |     });
 | 
          
            | 109 |  
 | 109 |  
 | 
          
            | 110 |     // Handle the 'slid.bs.carousel' event (Fired when the carousel has completed its slide transition).
 | 110 |     // Handle the 'slid.bs.carousel' event (Fired when the carousel has completed its slide transition).
 | 
          
            | 111 |     $(selectors.userMenuCarousel).on('slid.bs.carousel', () => {
 | 111 |     userMenuCarousel?.addEventListener('slid.bs.carousel', () => {
 | 
          
            | 112 |         const activeCarouselItem = userMenu.querySelector(selectors.userMenuCarouselItemActive);
 | 112 |         const activeCarouselItem = userMenu.querySelector(selectors.userMenuCarouselItemActive);
 | 
          
            | 113 |         // Set the focus on the newly activated carousel item.
 | 113 |         // Set the focus on the newly activated carousel item.
 | 
          
            | 114 |         activeCarouselItem.focus();
 | 114 |         activeCarouselItem.focus();
 |