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.com/builds/-DFbjr9L/0/foach/quadcode.com/src/components/header/Lang.svelte
<script lang="ts">
  import { onMount } from 'svelte';

  export let className = '';

  onMount(() => {
    const lang = document.querySelector('.lang');

    if (lang) {
      const btnLang = lang.querySelector('.lang__btn');
      const listLang = lang.querySelector('.lang__list');

      btnLang.addEventListener('mouseover', () => {
        open();
      });

      btnLang.addEventListener('mouseout', () => {
        close();
      });

      listLang.addEventListener('mouseover', () => {
        open();
      });

      listLang.addEventListener('mouseout', () => {
        close();
      });

      // const isOpen = () => {
      // 	return lang.classList.contains('lang_active');
      // };

      const open = () => {
        lang.classList.add('lang_active');
        setTimeout(() => {
          lang.classList.add('lang_animation');
        }, 600);
      };

      const close = () => {
        lang.classList.remove('lang_active');
      };
    }
  });
</script>

<div class="lang {className}">
  <div class="lang__container">
    <div class="lang__btn">
      <div class="lang__text">Eng</div>
      <div class="lang__icon">
        <div class="lang__arrow lang__arrow-down" />
        <div class="lang__arrow lang__arrow-up" />
      </div>
    </div>
    <div class="lang__list">
      <div class="lang__inner">
        <div class="lang__item"><a href="/under-construction" class="lang__link">Deu</a></div>
        <div class="lang__item"><a href="/under-construction" class="lang__link">Esp</a></div>
        <div class="lang__item"><a href="/under-construction" class="lang__link">Fra</a></div>
        <div class="lang__item"><a href="/under-construction" class="lang__link">Ita</a></div>
        <div class="lang__item"><a href="/under-construction" class="lang__link">Por</a></div>
      </div>
    </div>
  </div>
</div>

<style lang="scss">
  @import 'src/scss/variables';
  @import 'src/scss/media';
  @import 'src/scss/mixins';

  .lang {
    position: relative;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;

    &__btn {
      display: flex;
      cursor: pointer;
      padding: 20px 0;
    }

    &__text {
      @include baseCTA;

      color: rgba(20, 20, 20, 1);
      transition: 0.4s ease-in-out;
    }

    &__icon {
      display: flex;
      align-items: center;
      position: relative;
      overflow: hidden;
    }

    &__arrow {
      margin: 0 9px;
      width: 10px;
      height: 7px;
      transition: 0.2s ease;

      &-down {
        background-image: url('../../assets/icons/arrow.svg');
      }

      &-up {
        transform: translateY(-18px);
        background-image: url('../../assets/icons/arrow-up.svg');
        position: absolute;
        transition: 0.2s ease;
      }
    }

    &__list {
      left: -15px;
      top: 60px;
      position: absolute;
      width: calc(100% + 7px);
      background: $techWhite;
      border-radius: 6px;
      box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15);
      transition: 0.4s ease;
      max-height: 0;
      overflow: hidden;
    }

    &__inner {
      padding: 15px;
    }

    &__item {
      margin-bottom: 8px;
      cursor: pointer;

      &:last-of-type {
        margin-bottom: 0;
      }
    }

    &:global(.lang_active) {
      .lang {
        &__list {
          transition: 0.4s ease;
          max-height: 250px;
        }

        &__arrow {
          transition: 0.2s ease;
          &-down {
            transform: translateY(18px);
          }
          &-up {
            transform: translateY(0px);
          }
        }
      }
    }

    &:global(.lang_animation) {
      .lang {
        &__link {
          color: $fontGraphite;
          transition: 0.4s ease;

          &:hover {
            color: $fontPrimary;
            transition: 0.4s ease;
          }
        }
      }
    }

    &.ghostWhite {
      .lang {
        &__text {
          color: $fontWhite;
        }
      }
    }
  }
</style>