HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/quadcode-jobs/resources/js/modules/initHeader.js
import $ from "jquery";

const initHeader = () => {
    $(document).on('scroll', scrollHeader);

    const userLang = navigator.language;

    if (userLang !== 'ru-RU') {
        $('.js-ru').css('order', '1');
        $('.js-en').css('order', '-1');
    }

    function scrollHeader() {
        const windowHeight = $(window).height();

        if ($(window).scrollTop() > 5) {
            $('.app-header').addClass('is-sticked');
        } else {
            $('.app-header').removeClass('is-sticked');
        }

        $('.container').each(function () {
            let $element = $(this);
            const elemPosition = $element.position().top;
            const elemHeight = $element.height();

            if ($(window).scrollTop() + windowHeight * 0.66 >= elemPosition &&
                $(window).scrollTop() - windowHeight * 0.1 < elemPosition + elemHeight) {
                if (!$element.hasClass('is-current')) {
                    $element.addClass('is-current');
                    $element.addClass('play-anim');
                    $element.prev().addTemporaryClass('is-exiting', 600);
                }
            } else if ($element.hasClass('is-current')) {
                $element.removeClass('is-current');
                $element.addClass('is-viewed');
            }
        });
    }
    scrollHeader();

    const breakpointLg = window.matchMedia('(min-width: 1024px)');
    const header = document.querySelector('.app-header');
    const menuSwitcher = document.querySelector('#menu-switcher');
    const headNavWrap = document.querySelector('.app-header__nav-wrap');

    const documentClickHandler = (e) => {
        if (menuSwitcher.checked && e.target !== menuSwitcher) {
            if (!e.target.closest('.app-header__nav-wrap')) {
                menuSwitcher.checked = false;
                setTimeout(() => {
                    window.enableBodyScroll(headNavWrap);
                    document.removeEventListener('click', documentClickHandler);
                }, 300);
            }
        }
    }

    menuSwitcher.addEventListener('change', (e) => {
        if (menuSwitcher.checked) {
            window.disableBodyScroll(headNavWrap);
            document.addEventListener('click', documentClickHandler)
        } else {
            setTimeout(() => {
                window.enableBodyScroll(headNavWrap);
                document.removeEventListener('click', documentClickHandler)
            }, 300);
        }
    })

    const observeModal = () => {
        const body = document.body;
        const observer = new MutationObserver(() => {
            if (breakpointLg.matches) {
                header.style.paddingRight = body.style.paddingRight;
            }
        });

        observer.observe(body, {attributes: true});
    };

    observeModal();
}

export {initHeader}