Files
WebETA/src/components/Header.vue
2024-09-25 20:27:00 -06:00

190 lines
4.1 KiB
Vue

<script setup>
import { useI18n } from 'vue-i18n';
import CustomPopup from './CustomPopup.vue';
import { ref } from 'vue';
import { onMounted } from 'vue';
import { watch } from 'vue';
const { t, locale } = useI18n();
const openPopup = ref(false);
const options = ref([]);
const lang = ref(null);
onMounted(() => {
const langInit = localStorage.getItem('lang') ?? locale.value;
locale.value = langInit
lang.value = {value: langInit, label: langInit == 'en' ? t('global.en') : t('global.es')}
options.value = [
{value: 'es',label: t('global.es')},
{value: 'en',label: t('global.en')},
]
});
const changeLang = () => {
if(locale.value == 'es') {
locale.value = 'en'
lang.value = {
value: 'en',
label: ''
}
} else {
locale.value = 'es'
lang.value = {
value: 'es',
label: ''
}
}
localStorage.setItem('lang', locale.value);
openPopup.value = false
}
watch(lang, () => {
options.value = [
{value: 'es',label: t('global.es')},
{value: 'en',label: t('global.en')},
]
})
const closePopup = () => {
openPopup.value = false
}
</script>
<template>
<div
v-if="openPopup"
>
<CustomPopup
:options="options"
:value="lang"
@change-value="changeLang"
@close-popup="closePopup"
selected-color="#e3a11e"
:style="{
right: '30px',
top: '70px',
}"
/>
</div>
<div class="header-content">
<div class="box-content">
<RouterLink
:to="{name: 'home'}"
>
<img src="/images/logo-eta.png" class="logo" alt="Eta Viaporte" >
</RouterLink>
<div class="box-register">
<p class="title-header">Tablero de <span class="title-main">Embarques</span> y <span class="title-main">Transportes</span></p>
</div>
<a @click="openPopup = true" class="lang"><i class="fa-solid fa-globe"></i> {{ locale }}</a>
</div>
</div>
</template>
<style scoped>
.header-content {
position: relative;
width: 100%;
background-color: #323030;
display: flex;
flex-direction: row;
margin: 0 auto;
padding: 20px 24px;
align-items: center;
justify-content: space-between;
}
.logo{
height: 70px;
margin-right: 10px;
}
.box-content {
display: flex;
align-items: center;
align-content: center;
width: 100%;
}
.box-register{
margin-left: 24px;
display: flex;
flex: 1;
}
.title-header{
font-size: 1.8rem;
font-weight: 900;
color: #FFF;
}
.lang {
color: #FFF;
text-decoration: none;
align-items: center;
align-self: center;
align-content: center;
cursor: pointer;
}
.app-btn{
background-color: #FBBA33;
border: none;
color: #FFF;
border-radius: 25px;
padding: 12px 32px;
}
.app-btn:hover{
background-color: #e3a11e;
transition: background-color 300ms ease;
}
.app-btn i{
font-size: 1.4rem;
}
.app-btn span{
margin-left: 8px;
font-size: 1.4rem;
}
@media (max-width: 1024px) {
.header-content {
padding: 16px 36px;
}
.box-register{
margin-left: 10px;
}
.app-btn{
padding: 10px 24px;
}
.app-btn i{
font-size: 1rem;
}
.app-btn span{
margin-left: 8px;
font-size: 1rem;
}
}
@media (max-width: 768px) {
.header-content {
padding: 16px 16px;
}
.box-buttons{
display: none !important;
}
}
@media (max-width: 568px) {
.logo{
height: 60px;
}
.title-header{
font-size: 1rem;
font-weight: 700;
color: #FFF;
}
.title-main{
color: #FBBA33;
}
}
</style>