Proyectos de Subversion Moodle

Rev

Rev 1463 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

define(['jquery','core/pending'],function($,Pending){
    "use strict";

    var rememberTabs=function(){
        $('a[data-bs-toggle="tab"]').on('shown.bs.tab',function(e){
            var hash=$(e.target).attr('href');
            if(history.replaceState){
                history.replaceState(null,null,hash);
            }else{
                location.hash=hash;
            }
        });
    };

    var DefaultWhitelist={
        'table':[],
        'thead':[],
        'tbody':[],
        'tr':[],
        'th':[],
        'td':[]
    };

    var enablePopovers=function(){
        if(typeof $.fn.popover!=='undefined'){
            $('body').popover({
                container:'body',
                selector:'[data-bs-toggle="popover"]',
                trigger:'focus'
            });
        }

        document.addEventListener('keydown',function(e){
            if(e.key==='Escape'&&e.target.closest('[data-bs-toggle="popover"]')){
                $(e.target).popover('hide');
            }
        });
    };

    var enableTooltips=function(){
        if(typeof $.fn.tooltip!=='undefined'){
            $('body').tooltip({
                container:'body',
                selector:'[data-bs-toggle="tooltip"]'
            });
        }
    };

    var enableDropdowns=function(){
        // Inicializar dropdowns manualmente si Bootstrap 5 no está disponible
        $('[data-bs-toggle="dropdown"]').on('click',function(e){
            e.preventDefault();
            var $this=$(this);
            var $menu=$this.siblings('.dropdown-menu');
            
            // Cerrar otros dropdowns abiertos
            $('.dropdown-menu').not($menu).removeClass('show');
            
            // Toggle del dropdown actual
            $menu.toggleClass('show');
            
            // Cerrar al hacer clic fuera
            $(document).on('click.dropdown',function(event){
                if(!$this.is(event.target)&&!$menu.is(event.target)&&$menu.has(event.target).length===0){
                    $menu.removeClass('show');
                    $(document).off('click.dropdown');
                }
            });
        });
    };

    return{
        init:function(){
            var pendingPromise=new Pending('theme_universe_child/loader:init');
            
            $(document).ready(function(){
                rememberTabs();
                enablePopovers();
                enableTooltips();
                enableDropdowns();
                
                pendingPromise.resolve();
            });
        }
    };
});