MediaWiki:Common.js: различия между версиями

Страница интерфейса MediaWiki
Нет описания правки
Нет описания правки
Строка 17: Строка 17:
     // Активируем первую кнопку по умолчанию
     // Активируем первую кнопку по умолчанию
     $('.боковая-панель-кнопка:first').click();
     $('.боковая-панель-кнопка:first').click();
});
   
    $('.допуск-контейнер').hover(function() {
        var $tooltip = $(this).find('.допуск-подсказка');
        var $container = $(this);


document.querySelectorAll('.допуск-контейнер').forEach(container => {
        var rect = $container[0].getBoundingClientRect();
    const tooltip = container.querySelector('.допуск-подсказка');
        var tooltipRect = $tooltip[0].getBoundingClientRect();
        var viewportWidth = $(window).width();
        var viewportHeight = $(window).height();


    container.addEventListener('mouseenter', () => {
         var left = rect.left + rect.width / 2 - tooltipRect.width / 2;
         const rect = container.getBoundingClientRect();
        const tooltipRect = tooltip.getBoundingClientRect();
        const viewportWidth = window.innerWidth;
        const viewportHeight = window.innerHeight;
 
        // горизонтальное положение
        let left = rect.left + rect.width / 2 - tooltipRect.width / 2;
         if (left + tooltipRect.width > viewportWidth - 10) left = viewportWidth - tooltipRect.width - 10;
         if (left + tooltipRect.width > viewportWidth - 10) left = viewportWidth - tooltipRect.width - 10;
         if (left < 10) left = 10;
         if (left < 10) left = 10;
         tooltip.style.left = `${left}px`;
         $tooltip.css('left', left + 'px');


         // вертикальное положение
         var bottom = rect.height + 10; // по умолчанию снизу
        let bottom = rect.height + 10; // по умолчанию снизу
         var top = 'auto';
         let top = 'auto';


         if (rect.bottom + tooltipRect.height + 10 > viewportHeight) {
         if (rect.bottom + tooltipRect.height + 10 > viewportHeight) {
Строка 48: Строка 45:
         }
         }


         tooltip.style.top = top;
         $tooltip.css({
        tooltip.style.bottom = bottom === 'auto' ? 'auto' : `${bottom}px`;
            'top': top,
 
            'bottom': bottom === 'auto' ? 'auto' : bottom + 'px',
        tooltip.style.opacity = 1;
            'opacity': 1,
        tooltip.style.transform = 'translateY(0)';
            'transform': 'translateY(0)'
    });
        });


     container.addEventListener('mouseleave', () => {
     }, function() {
         tooltip.style.opacity = 0;
         $(this).find('.допуск-подсказка').css({
        tooltip.style.transform = 'translateY(10px)';
            'opacity': 0,
            'transform': 'translateY(10px)'
        });
     });
     });
});
});

Версия от 12:42, 30 августа 2025

$(document).ready(function() {
    // Инициализация боковой панели
    $('.боковая-панель-кнопка').on('click', function() {
        var targetId = $(this).data('target');
        
        // Удаляем активный класс у всех кнопок
        $('.боковая-панель-кнопка').removeClass('active');
        // Добавляем активный класс текущей кнопке
        $(this).addClass('active');
        
        // Скрываем все разделы
        $('.боковая-панель-раздел').removeClass('default');
        // Показываем выбранный раздел
        $('#' + targetId).addClass('default');
    });
    
    // Активируем первую кнопку по умолчанию
    $('.боковая-панель-кнопка:first').click();
    
    $('.допуск-контейнер').hover(function() {
        var $tooltip = $(this).find('.допуск-подсказка');
        var $container = $(this);

        var rect = $container[0].getBoundingClientRect();
        var tooltipRect = $tooltip[0].getBoundingClientRect();
        var viewportWidth = $(window).width();
        var viewportHeight = $(window).height();

        var left = rect.left + rect.width / 2 - tooltipRect.width / 2;
        if (left + tooltipRect.width > viewportWidth - 10) left = viewportWidth - tooltipRect.width - 10;
        if (left < 10) left = 10;
        $tooltip.css('left', left + 'px');

        var bottom = rect.height + 10; // по умолчанию снизу
        var top = 'auto';

        if (rect.bottom + tooltipRect.height + 10 > viewportHeight) {
            if (rect.top - tooltipRect.height - 10 >= 0) {
                top = rect.top - tooltipRect.height - 10 + 'px';
                bottom = 'auto';
            } else {
                top = rect.top + rect.height / 2 - tooltipRect.height / 2 + 'px';
                bottom = 'auto';
            }
        }

        $tooltip.css({
            'top': top,
            'bottom': bottom === 'auto' ? 'auto' : bottom + 'px',
            'opacity': 1,
            'transform': 'translateY(0)'
        });

    }, function() {
        $(this).find('.допуск-подсказка').css({
            'opacity': 0,
            'transform': 'translateY(10px)'
        });
    });
});