You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1458 lines
49 KiB
1458 lines
49 KiB
<template>
|
|
<div
|
|
class="NavBar tw-bg-white tw-sticky tw-top-0 tw-left-0 tw-w-full tw-border-0 tw-border-b tw-border-solid tw-border-neutral-200 tw-z-10"
|
|
>
|
|
<div
|
|
class="tw-px-[20px] tw-py-[20px] md:tw-px-[30px] md:tw-py-[24px] xl:tw-px-[60px] xl:tw-pt-[22px] xl:tw-pb-[14px] xl:tw-max-w-[1366px] xl:tw-mx-auto"
|
|
>
|
|
<div class="tw-flex tw-justify-between tw-items-center xl:tw-h-[48px]">
|
|
<div
|
|
class="tw-flex tw-items-center tw-flex-grow xl:tw-grid xl:tw-grid-cols-[188px_auto] xl:tw-gap-[30px] xl:tw-basis-[70%]"
|
|
>
|
|
<img
|
|
class="tw-mr-[20px] md:tw-mr-[40px] xl:tw-hidden"
|
|
:src="require('@/assets/svg/menu.svg')"
|
|
@click="clickMenu"
|
|
/>
|
|
<nuxt-link
|
|
:to="localePath('/')"
|
|
class="tw-block tw-w-[146px] md:tw-w-[188px]"
|
|
><img
|
|
:src="require('@/assets/svg/logo_v2.svg')"
|
|
class="tw-w-full"
|
|
alt=""
|
|
/>
|
|
</nuxt-link>
|
|
<!-- <v-card class="tw-hidden flex-row rounded-lg py-1 px-4 xl:tw-flex xl:tw-ml-[30px]" outlined
|
|
v-if="showNavSearch" @click="bigSearch = true">
|
|
<v-card flat color="transparent" :width="$vuetify.breakpoint.mdAndDown ? '70px' : '300px'"
|
|
class="my-auto neutrals--text text--darken-3 text-size-14">
|
|
{{
|
|
this.$vuetify.breakpoint.mdAndDown
|
|
? $t("Looking ?")
|
|
: $t("What are you looking for?")
|
|
}}
|
|
</v-card>
|
|
<svg width="24" height="24" class="tw-my-auto" shape-rendering="geometricPrecision">
|
|
<image xlink:href="@/assets/svg/icon-search-small.svg" src="@/assets/svg/icon-search-small.svg" width="24"
|
|
height="24" />
|
|
</svg>
|
|
</v-card> -->
|
|
<div v-if="showNavSearch" class="tw-w-full tw-hidden xl:tw-block">
|
|
<Search
|
|
v-if="showNavSearch"
|
|
:exhibitionsCategories="exhibitionsCategories"
|
|
:exhibitionsLocations="exhibitionsLocations"
|
|
:exhibitionsSearchs="exhibitionsSearchs"
|
|
:servicesLocations="servicesLocations"
|
|
:servicesSearchs="servicesSearchs"
|
|
@loaading="isPageLoading = $event"
|
|
/>
|
|
</div>
|
|
|
|
</div>
|
|
<div
|
|
class="tw-basis-[46%] md:tw-basis-[66%] xl:tw-basis-[43%] xl:tw-ml-[56px]"
|
|
v-click-outside="clickOutSide"
|
|
>
|
|
<div class="tw-flex tw-justify-end xl:tw-hidden">
|
|
<div class="tw-flex tw-justify-center tw-items-center">
|
|
<v-img
|
|
max-width="24"
|
|
class="mr-4 float-left"
|
|
contain
|
|
:src="require('@/assets/svg/search-black.svg')"
|
|
@click="clickSearch"
|
|
></v-img>
|
|
</div>
|
|
<!--v-img
|
|
max-width="24"
|
|
class="mr-4 hidden-md-and-up"
|
|
contain
|
|
:src="require('@/assets/svg/shopping-bag.svg')"
|
|
></v-img-->
|
|
<span max-width="28px" v-if="$auth.loggedIn">
|
|
<v-menu
|
|
offset-y
|
|
bottom
|
|
left
|
|
nudge-bottom="20"
|
|
class="neutrals darken-1 mt-4 on-top"
|
|
>
|
|
<template v-slot:activator="{ on, attrs }">
|
|
<v-btn
|
|
v-bind="attrs"
|
|
v-on="on"
|
|
@click="UserInfoPopup = true"
|
|
v-if="userPicture"
|
|
icon
|
|
width="28px"
|
|
height="28px"
|
|
class="ms-2"
|
|
>
|
|
<v-img
|
|
:src="userPicture"
|
|
max-width="28px"
|
|
max-height="28px"
|
|
class="rounded-circle"
|
|
:key="userPicture"
|
|
></v-img>
|
|
</v-btn>
|
|
<v-btn
|
|
v-bind="attrs"
|
|
v-on="on"
|
|
@click="UserInfoPopup = true"
|
|
v-else-if="userLastName"
|
|
fab
|
|
class="user-no-picture-border mx-2 tw-shadow-none"
|
|
color="primary"
|
|
width="28"
|
|
height="28"
|
|
>
|
|
<span class="tw-text-[16px]">
|
|
{{ userLastName }}
|
|
</span>
|
|
</v-btn>
|
|
<div
|
|
v-else
|
|
class="tw-bg-primary-default tw-cursor-pointer tw-rounded-[12px] tw-whitespace-nowrap tw-block tw-text-white tw-px-[16px] tw-py-[9px] tw-whitespace-nowrap tw-text-[10px] tw-font-medium tw-transition-all tw-duration-200 tw-ease-in-out hover:tw-bg-primary-light"
|
|
@click="toUser"
|
|
>
|
|
{{ $t("Log in/Sign up") }}
|
|
</div>
|
|
</template>
|
|
<div class="neutrals darken-1 tw-hidden xl:tw-block">
|
|
<v-btn
|
|
:to="
|
|
localePath(
|
|
$auth.$storage.getUniversal('authtoken')
|
|
? '/user'
|
|
: ''
|
|
)
|
|
"
|
|
class="neutrals darken-1 neutrals--text text--darken-5 no-text-transform elevation-0 text-size-14"
|
|
>
|
|
<unicon
|
|
class="mr-3"
|
|
name="user"
|
|
height="20px"
|
|
fill="neutrals-darken5"
|
|
/>{{ $t("Profile") }}
|
|
</v-btn>
|
|
<v-btn
|
|
@click="logout"
|
|
class="neutrals darken-1 warning--text no-text-transform elevation-0"
|
|
>
|
|
<unicon
|
|
class="mr-3 text-size-14"
|
|
name="signout"
|
|
height="20px"
|
|
fill="#EF5A5A"
|
|
/>{{ $t("Logout") }}
|
|
</v-btn>
|
|
</div>
|
|
<!-- <v-list class="neutrals darken-1 tw-hidden xl:tw-block">
|
|
<v-list-item>
|
|
<v-btn :to="
|
|
localePath(
|
|
$auth.$storage.getUniversal('authtoken')
|
|
? `/user/${
|
|
$auth.$storage.getUniversal('authtoken').user_id
|
|
}`
|
|
: ''
|
|
)
|
|
"
|
|
class="neutrals darken-1 neutrals--text text--darken-5 no-text-transform elevation-0 text-size-14">
|
|
<unicon class="mr-3" name="user" height="20px" fill="neutrals-darken5" />{{ $t("Profile") }}
|
|
</v-btn>
|
|
</v-list-item>
|
|
<v-list-item>
|
|
<v-btn @click="logout" class="neutrals darken-1 warning--text no-text-transform elevation-0">
|
|
<unicon class="mr-3 text-size-14" name="signout" height="20px" fill="#EF5A5A" />{{ $t("Logout") }}
|
|
</v-btn>
|
|
</v-list-item>
|
|
</v-list> -->
|
|
</v-menu>
|
|
</span>
|
|
<span v-else>
|
|
<nuxt-link :to="localePath('/user')">
|
|
<img class="" :src="require('@/assets/svg/profile.svg')" />
|
|
</nuxt-link>
|
|
</span>
|
|
</div>
|
|
<div
|
|
class="tw-hidden xl:tw-flex xl:tw-justify-end xl:tw-items-center"
|
|
>
|
|
<v-btn
|
|
v-if="$i18n.locale == 'zh-tw'"
|
|
depressed
|
|
class="remove-upper tw-mx-0 tw-px-0 tw-bg-transparent tw-text-primary-default"
|
|
href="https://medium.com/showeasy"
|
|
target="_blank"
|
|
>
|
|
<span class="t16 tw-font-normal"> {{ $t("Blog") }} </span>
|
|
</v-btn>
|
|
<v-btn
|
|
v-else
|
|
depressed
|
|
class="remove-upper t16 tw-font-normal tw-mx-0 tw-px-0 tw-bg-transparent tw-text-primary-default"
|
|
href="https://medium.com/showeasy-eng"
|
|
target="_blank"
|
|
>
|
|
<span class="t16 tw-font-normal"> {{ $t("Blog") }} </span>
|
|
</v-btn>
|
|
<div
|
|
:class="[
|
|
'changeLang tw-relative tw-justify-center tw-items-center',
|
|
disabled ? 'disabled' : '',
|
|
disabled ? 'tw-text-neutrals-300' : 'tw-text-black',
|
|
]"
|
|
>
|
|
<div
|
|
:class="[
|
|
'tw-flex tw-items-center tw-mx-[12px] tw-cursor-pointer tw-py-[8px] tw-rounded-[4px]',
|
|
]"
|
|
>
|
|
<div class="tw-body-3 tw-mr-[15px] t16 tw-font-normal">
|
|
{{ $i18n.localeProperties["title"] }}
|
|
</div>
|
|
<img v-if="disabled" src="@/assets/svg/down-arrow-disabled.svg" />
|
|
<img v-else src="@/assets/svg/down-arrow.svg" />
|
|
</div>
|
|
<transition name="lang">
|
|
<div
|
|
v-show="langShow"
|
|
class="tw-rounded-[10px] tw-bg-white tw-px-[12px] tw-py-[8px] tw-absolute tw-top-[40px] tw-w-max tw-left-0 tw-z-10 tw-shadow-[0_2px_20px_rgba(0,0,0,0.15)]"
|
|
>
|
|
<!-- <button
|
|
class="tw-grid tw-grid-cols-[20px_auto] tw-gap-[25px] tw-px-[12px] tw-py-[11px] tw-w-full tw-bg-white hover:tw-bg-primary-pale hover:tw-text-primary-1 hover:tw-rounded-[10px]"
|
|
@click="Currencystatus('USD')"
|
|
>
|
|
<div class="tw-body-4 tw-font-bold" value="USD">USD</div>
|
|
<div class="tw-body-4 tw-text-left">{{ $t("U.S. Dollar") }}</div>
|
|
</button> -->
|
|
|
|
<nuxt-link v-for="(lang, idx) in this.$i18n.locales" :key="idx"
|
|
class="tw-rounded-[10px] text-decoration-none tw-body-3 tw-w-full"
|
|
:to="switchLocalePath(lang.code)"
|
|
>
|
|
<div class="tw-px-[12px] tw-py-[11px] tw-w-full tw-bg-white tw-font-normal tw-text-black hover:tw-bg-primary-pale hover:tw-text-primary-1 hover:tw-rounded-[10px]">
|
|
{{ lang.text }}
|
|
</div>
|
|
</nuxt-link>
|
|
</div>
|
|
</transition>
|
|
</div>
|
|
<!-- <v-menu offset-y class="on-top">
|
|
<template v-slot:activator="{ on, attrs }">
|
|
<v-btn
|
|
v-bind="attrs"
|
|
v-on="on"
|
|
depressed
|
|
class="white neutrals--text text--darken-5 no-text-transform tw-body-3 tw-font-normal"
|
|
>
|
|
{{ $i18n.localeProperties["title"] }}
|
|
<img src="@/assets/svg/down-arrow.svg" alt="" class="ml-1" />
|
|
</v-btn>
|
|
</template>
|
|
<v-list class="tw-shadow-[0_1px_6px_0_rgba(0,0,0,0.4)]">
|
|
<v-list-item
|
|
v-for="(lang, idx) in this.$i18n.locales"
|
|
:key="idx"
|
|
class="tw-mx-auto"
|
|
>
|
|
<nuxt-link
|
|
:to="switchLocalePath(lang.code)"
|
|
class="tw-rounded-[10px] tw-text-base-primary text-decoration-none tw-body-3 tw-font-normal tw-w-full tw-px-[12px] tw-py-[8px] hover:tw-bg-primary-3 hover:tw-text-primary-1"
|
|
>
|
|
{{ lang.text }}
|
|
</nuxt-link>
|
|
</v-list-item>
|
|
</v-list>
|
|
</v-menu> -->
|
|
<changeCurrency></changeCurrency>
|
|
<nuxt-link
|
|
class="tw-px-[10px] tw-mr-[10px] hover:tw-bg-primary-3 active:tw-bg-primary-3"
|
|
:to="localePath('/FAQ')"
|
|
><img src="~/assets/svg/faq.svg" alt=""
|
|
/></nuxt-link>
|
|
<!-- <v-btn
|
|
depressed
|
|
class="white tw-mr-[16px]"
|
|
:to="localePath('/FAQ')"
|
|
>
|
|
<svg width="20" height="20">
|
|
<image
|
|
xlink:href="@/assets/svg/help-circle.svg"
|
|
src="@/assets/svg/help-circle.svg"
|
|
width="20"
|
|
height="20"
|
|
/>
|
|
</svg>
|
|
</v-btn> -->
|
|
<!-- <v-btn depressed class="white" small>
|
|
<img src="@/assets/svg/shopping-bag.svg" alt="" />
|
|
</v-btn> -->
|
|
|
|
<div v-if="$auth.loggedIn" class="tw-relative">
|
|
<div @click="UserInfoPopup = true"
|
|
v-if="userPicture"
|
|
class="ms-2 tw-bg-primary-default tw-w-[28px] tw-h-[28px] tw-rounded-[28px]">
|
|
<v-img v-if="userPicture"
|
|
:src="userPicture"
|
|
class="tw-rounded-[28px] tw-w-[28px] tw-h-[28px] tw-flex tw-items-center tw-cursor-pointer"
|
|
alt=""
|
|
/>
|
|
</div>
|
|
<v-btn
|
|
@click="UserInfoPopup = true"
|
|
v-else-if="userLastName"
|
|
fab
|
|
:class="['mx-2 tw-shadow-none tw-bg-primary-default',( userLastName && userLastName.length>1)?'tw-w-[40px] tw-rounded-[20px]':'tw-w-[28px] tw-rounded-[28px]']"
|
|
color="primary"
|
|
height="28"
|
|
>
|
|
<span :class="[(userLastName && isLetter==false)?'tw-text-[16px]':'tw-text-[12px]']">
|
|
{{ userLastName }}
|
|
</span>
|
|
</v-btn>
|
|
<div
|
|
v-else
|
|
class="tw-bg-primary-default tw-cursor-pointer tw-rounded-[12px] tw-whitespace-nowrap tw-block tw-text-white tw-px-[16px] tw-py-[9px] tw-whitespace-nowrap tw-text-[10px] tw-font-medium tw-transition-all tw-duration-200 tw-ease-in-out hover:tw-bg-primary-light"
|
|
@click="toUser"
|
|
>
|
|
{{ $t("Log in/Sign up") }}
|
|
</div>
|
|
<div
|
|
:class="[
|
|
'tw-grid-cols-1 tw-gap-[14px] tw-px-[10px] tw-py-[8px] tw-bg-white tw-rounded-[10px] tw-w-max tw-absolute tw-right-0 tw-top-[40px] tw-z-50 tw-shadow-[0_1px_4px_0_rgba(0,0,0,0.3)]',
|
|
UserInfoPopup && width >= 1366 ? 'tw-grid' : 'tw-hidden',
|
|
]"
|
|
>
|
|
<nuxt-link
|
|
:to="
|
|
localePath('/user/editPersonalInfo')"
|
|
class="tw-grid tw-grid-cols-[20px_auto] tw-gap-[10px] tw-px-[10px] tw-py-[8px]"
|
|
@click.native="UserInfoPopup = false"
|
|
><img src="~/assets/svg/profile.svg" alt="" />
|
|
<div class="tw-head-body tw-text-base-primary">
|
|
{{ $t("userProfile.profile") }}
|
|
</div>
|
|
</nuxt-link>
|
|
<nuxt-link :to="localePath('/user/myBooking')"
|
|
class="tw-grid tw-grid-cols-[20px_auto] tw-gap-[10px] tw-px-[10px] tw-py-[8px]"
|
|
@click.native="UserInfoPopup = false"
|
|
><img src="~/assets/svg/bookings.svg" alt="" />
|
|
<div class="tw-head-body tw-text-base-primary">
|
|
{{ $t('My Bookings')}}
|
|
</div>
|
|
</nuxt-link>
|
|
<nuxt-link
|
|
:to="localePath('/user/saveExhibition')"
|
|
class="tw-grid tw-grid-cols-[20px_auto] tw-gap-[10px] tw-px-[10px] tw-py-[8px]"
|
|
@click.native="UserInfoPopup = false"
|
|
><img src="~/assets/svg/saveExhibition.svg" alt="" />
|
|
<div class="tw-head-body tw-text-base-primary">
|
|
{{ $t("userProfile.savedExhibitions") }}
|
|
</div>
|
|
</nuxt-link>
|
|
<!-- <nuxt-link :to="localePath('/user/saveService')"
|
|
class="tw-grid tw-grid-cols-[20px_auto] tw-gap-[10px] tw-px-[10px] tw-py-[8px]"
|
|
@click.native="UserInfoPopup = false"><img src="~/assets/svg/saveService.svg" alt="" />
|
|
<div class="tw-head-body tw-text-base-primary">
|
|
{{ $t("userProfile.savedServices") }}
|
|
</div>
|
|
</nuxt-link> -->
|
|
<nuxt-link
|
|
:to="localePath('/user/companyInfo')"
|
|
class="tw-grid tw-grid-cols-[20px_auto] tw-gap-[10px] tw-px-[10px] tw-py-[8px]"
|
|
@click.native="UserInfoPopup = false"
|
|
><img src="~/assets/svg/companyInfo.svg" alt="" />
|
|
<div class="tw-head-body tw-text-base-primary">
|
|
{{ $t("userProfile.companyInfo") }}
|
|
</div>
|
|
</nuxt-link>
|
|
<nuxt-link
|
|
:to="localePath('/user/contactInfo')"
|
|
class="tw-grid tw-grid-cols-[20px_auto] tw-gap-[10px] tw-px-[10px] tw-py-[8px]"
|
|
@click.native="UserInfoPopup = false"
|
|
><img src="~/assets/svg/contactInfo.svg" alt="" />
|
|
<div class="tw-head-body tw-text-base-primary">
|
|
{{ $t("Contact Info") }}
|
|
</div>
|
|
</nuxt-link>
|
|
<nuxt-link
|
|
:to="localePath('/user/setting')"
|
|
class="tw-grid tw-grid-cols-[20px_auto] tw-gap-[10px] tw-px-[10px] tw-py-[8px]"
|
|
@click.native="UserInfoPopup = false"
|
|
><img src="~/assets/svg/profile_setting.svg" alt="" />
|
|
<div class="tw-head-body tw-text-base-primary">
|
|
{{ $t("userProfile.setting") }}
|
|
</div>
|
|
</nuxt-link>
|
|
<div
|
|
class="tw-border tw-border-t tw-border-solid tw-border-neutral-200"
|
|
></div>
|
|
<button
|
|
class="tw-grid tw-grid-cols-[20px_auto] tw-gap-[10px] tw-px-[10px] tw-py-[8px]"
|
|
@click="logout"
|
|
>
|
|
<img src="~/assets/svg/logout.svg" alt="" />
|
|
<div
|
|
class="tw-flex tw-head-body tw-text-error-default tw-justify-start"
|
|
>
|
|
{{ $t("userProfile.logout") }}
|
|
</div>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div v-else>
|
|
<div
|
|
@click="toUser"
|
|
class="tw-text-[14px] tw-cursor-pointer tw-whitespace-nowrap tw-text-white tw-bg-primary-default tw-px-[16px] tw-py-[9px] tw-rounded-[12px] hover:tw-bg-primary-light"
|
|
>
|
|
{{ $t("Log in/Sign up") }}</div
|
|
>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div
|
|
ref="dropdown"
|
|
:class="[
|
|
'navBar-row2 tw-relative tw-hidden xl:tw-grid xl:tw-mt-[35px] tw-transition-all tw-duration-200 tw-delay-75 tw-ease-linear',
|
|
]"
|
|
>
|
|
<div
|
|
class="customMenuLink tw-relative tw-flex tw-justify-start tw-items-center tw-z-3"
|
|
@mouseleave="exhibitionActiveIndex = 0"
|
|
>
|
|
<a
|
|
:href="localePath('/exhibition')"
|
|
@click="isPageLoading = true"
|
|
:class="[
|
|
'tw-text-black tw-body-3 tw-font-normal hover:tw-text-primary-default',
|
|
$route.path.match('\/exhibition')
|
|
? 'tw-text-primary-default'
|
|
: '',
|
|
]"
|
|
>
|
|
{{ $t("Exhibition") }}</a
|
|
>
|
|
<div v-if="exhibitionsCategoryList.length>0"
|
|
class="customDropMenu exhibition tw-bg-white tw-p-[20px] tw-rounded-[10px] tw-w-max tw-absolute tw-top-[36px] tw-left-0 tw-mt-[10px] tw-overflow-hidden tw-shadow-[0_1px_6px_0_rgba(0,0,0,0.4)]"
|
|
>
|
|
<div
|
|
class="tw-relative tw-grid tw-grid-cols-2 tw-max-w-[700px] tw-min-h-[110px] tw-overflow-hidden"
|
|
>
|
|
<div
|
|
class="tw-list-none tw-overflow-x-hidden tw-overflow-y-auto tw-h-auto tw-break-inside-avoid tw-grid tw-grid-cols-1 tw-gap-[10px]"
|
|
>
|
|
<div
|
|
class="tw-list-none tw-mr-[20px]"
|
|
v-for="(item, index) in exhibitionsCategoryList"
|
|
:key="index"
|
|
@mouseover="exhibitionActiveIndex = index"
|
|
>
|
|
<div
|
|
:class="[
|
|
'exhibitionDropdownLink tw-grid tw-grid-cols-[30px_auto] tw-gap-[10px] tw-body-4 tw-font-normal hover:tw-text-primary-default',
|
|
exhibitionActiveIndex == index
|
|
? 'tw-text-primary-default active'
|
|
: 'tw-text-neutrals-900',
|
|
]"
|
|
>
|
|
<img
|
|
v-if="exhibitionListIcon[index] !== undefined"
|
|
:src="
|
|
require(`@/assets/img/CategoryIcon/${exhibitionListIcon[index]}.png`)
|
|
"
|
|
/><span class="tw-flex tw-items-center tw-min-w-[322px]">{{
|
|
$t(item.CategoryName)
|
|
}}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="tw-w-full tw-overflow-x-hidden tw-overflow-y-auto" v-if="exhibitionsCategoryList.length>0">
|
|
<ul
|
|
class="tw-list-none tw-grid tw-grid-cols-1 tw-gap-[20px] tw-px-[20px]"
|
|
>
|
|
<li class="tw-list-none">
|
|
<a
|
|
:href="
|
|
localePath(
|
|
`/exhibition?category=${exhibitionsCategoryList[exhibitionActiveIndex].CategoryID}`
|
|
)
|
|
"
|
|
class="tw-block tw-body-4 tw-font-normal tw-text-neutral-800 hover:tw-text-primary-default"
|
|
>{{ $t("All") }}</a
|
|
>
|
|
</li>
|
|
<template v-if="exhibitionsCategoryList[
|
|
exhibitionActiveIndex
|
|
].SubCategoryList && exhibitionsCategoryList[
|
|
exhibitionActiveIndex
|
|
].SubCategoryList.length>0">
|
|
<li
|
|
v-for="(sub, index) in exhibitionsCategoryList[
|
|
exhibitionActiveIndex
|
|
].SubCategoryList"
|
|
:key="index"
|
|
class="tw-list-none"
|
|
>
|
|
<a
|
|
:href="localePath(`/exhibition?subcategory=${sub.CategoryID}`)"
|
|
class="tw-block tw-min-h-[30px] tw-body-4 tw-font-normal tw-min-w-[230px] tw-text-neutral-800 hover:tw-text-primary-default"
|
|
>{{ sub.CategoryName }}</a
|
|
>
|
|
</li></template>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<span class="vertical-line"></span>
|
|
<div
|
|
class="customMenuLink tw-relative tw-flex tw-justify-start tw-items-center tw-z-3"
|
|
>
|
|
<a
|
|
:href="localePath(`/service`)"
|
|
:class="[
|
|
'tw-text-black tw-body-3 tw-font-normal hover:tw-text-primary-default',
|
|
$route.path.match('\/service') ? 'tw-text-primary-default' : '',
|
|
]"
|
|
>
|
|
{{ $t("All Services") }}</a
|
|
>
|
|
<div v-if="serviceCategoryList.length>0"
|
|
class="customDropMenu services tw-bg-white tw-p-[20px] tw-rounded-[10px] tw-w-max tw-absolute tw-top-[36px] tw-left-0 tw-mt-[10px] -tw-mb-[60px] tw-shadow-[0_1px_6px_0_rgba(0,0,0,0.4)]"
|
|
>
|
|
<ul
|
|
v-for="(item, index) in serviceCategoryList"
|
|
:key="item.CategoryID"
|
|
class="tw-list-none tw-mb-0 tw-mr-[40px] tw-h-auto tw-break-inside-avoid"
|
|
>
|
|
<li class="tw-list-none">
|
|
<a
|
|
:href="localePath(`/service?category=${item.CategoryID}`)"
|
|
class="tw-block tw-mb-[16px] tw-grid tw-grid-cols-[16px_auto] tw-gap-[10px] tw-body-4 tw-font-normal tw-text-primary-default hover:tw-text-primary-default"
|
|
>
|
|
<svg
|
|
width="16"
|
|
height="16"
|
|
class="tw-my-auto"
|
|
shape-rendering="geometricPrecision"
|
|
v-if="serviceListIcon[index] !== undefined"
|
|
>
|
|
<image
|
|
:xlink:href="
|
|
require(`@/assets/svg/${serviceListIcon[index]}.svg`)
|
|
"
|
|
:src="
|
|
require(`@/assets/svg/${serviceListIcon[index]}.svg`)
|
|
"
|
|
width="16"
|
|
height="16"
|
|
/>
|
|
</svg>
|
|
<div v-else></div>
|
|
<span>{{ item.CategoryName }}</span>
|
|
</a>
|
|
<ul
|
|
class="tw-list-none tw-grid tw-grid-cols-1 tw-gap-[16px] tw-p-0"
|
|
>
|
|
<li
|
|
v-for="(sub, index) in item.SubCategoryList"
|
|
:key="index"
|
|
class="tw-list-none"
|
|
>
|
|
<a
|
|
:href="localePath(`/service?subcatg=${sub.CategoryID}`)"
|
|
class="tw-block tw-body-4 tw-font-normal tw-text-neutral-800 hover:tw-text-primary-default"
|
|
>{{ sub.CategoryName }}</a
|
|
>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<div class="tw-h-[60px]"></div>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div
|
|
ref="headerSwiper"
|
|
class="swiper-container headerService tw-w-full tw-overflow-hidden tw-relative tw-max-w-[1008px] tw-ml-[25px] tw-transition-all tw-duration-200 tw-delay-75 tw-ease-in"
|
|
>
|
|
<div class="swiper-wrapper">
|
|
<div
|
|
class="swiper-slide customMenuLink tw-relative tw-justify-start tw-items-center tw-w-auto"
|
|
v-for="item in serviceList"
|
|
:key="item.id"
|
|
>
|
|
<a
|
|
:href="localePath(`/service?taiwan=${item.id}`)"
|
|
class="tw-text-black tw-body-3 tw-font-normal hover:tw-text-primary-default tw-whitespace-nowrap"
|
|
>{{ $t(item.name) }}</a
|
|
>
|
|
<ul v-if="item.SubServiceList && item.SubServiceList.length>0"
|
|
class="customDropMenu oneType tw-grid-cols-1 tw-gap-[16px] tw-bg-white tw-p-[20px] tw-rounded-[10px] tw-w-max tw-absolute tw-top-[36px] tw-left-0 tw-mt-[10px] tw-shadow-[0_1px_6px_0_rgba(0,0,0,0.4)]"
|
|
>
|
|
<li
|
|
v-for="(sub, index) in item.SubServiceList"
|
|
:key="index"
|
|
class="tw-list-none"
|
|
>
|
|
<a
|
|
:href="localePath(`/service?subcatg=${sub.id}`)"
|
|
class="tw-block tw-body-4 tw-font-normal tw-text-black hover:tw-text-primary-default"
|
|
>{{ sub.name }}</a
|
|
>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div
|
|
:class="[
|
|
'swiper-button-prev headerService tw-text-black tw-hidden',
|
|
headerServiceSwiper
|
|
? 'xl:tw-flex xl:tw-justify-center xl:tw-items-center'
|
|
: '',
|
|
]"
|
|
></div>
|
|
<div
|
|
:class="[
|
|
'swiper-button-next headerService tw-text-black tw-hidden',
|
|
headerServiceSwiper
|
|
? 'xl:tw-flex xl:tw-justify-center xl:tw-items-center'
|
|
: '',
|
|
]"
|
|
></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<Drawer
|
|
:serviceCategory.sync="serviceCategoryList"
|
|
:exhibitionsCategory.sync="exhibitionsCategoryList"
|
|
:serviceListIcon="serviceListIcon"
|
|
:exhibitionListIcon="exhibitionListIcon"
|
|
@changeLang="changeLang()"
|
|
/>
|
|
<SearchDialog
|
|
ref="searchDialog"
|
|
:exhibitionsCategoryList="exhibitionsCategoryList"
|
|
:exhibitionsLocations="exhibitionsLocations"
|
|
:exhibitionListIcon="exhibitionListIcon"
|
|
:exhibitionsCategories="exhibitionsCategories"
|
|
:servicesLocations="servicesLocations"
|
|
:servicesSearchs="servicesSearchs"
|
|
:populars="populars"
|
|
/>
|
|
<mobileUserInfoPopup
|
|
v-show="width < 1366"
|
|
:show="UserInfoPopup"
|
|
:width="width"
|
|
@popup="UserInfoPopup = $event"
|
|
>
|
|
</mobileUserInfoPopup>
|
|
<loading :isLoading="isPageLoading"></loading>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import Search from "@/components/home/headerInlineSearch";
|
|
import Drawer from "@/components/newDrawer";
|
|
import SearchDialog from "@/components/SearchDialog";
|
|
import mobileUserInfoPopup from "@/components/mobileUserInfoPopup.vue";
|
|
import { SettingsIcon } from "vue-feather-icons";
|
|
// import jwt_decode from "authtoken-decode";
|
|
import loading from "@/components/newComponent/loading/loading.vue";
|
|
import changeCurrency from "@/components/dropdown/changeCurrencyWeb.vue";
|
|
import Swiper from "swiper/bundle";
|
|
// import { getCurrentTime } from "~/utils/assist";
|
|
import { getFirstName } from "~/utils/common";
|
|
|
|
// import { handler } from "@tailwindcss/line-clamp";
|
|
export default {
|
|
components: {
|
|
Drawer,
|
|
Search,
|
|
SettingsIcon,
|
|
SearchDialog,
|
|
mobileUserInfoPopup,
|
|
loading,
|
|
changeCurrency,
|
|
Swiper,
|
|
},
|
|
data() {
|
|
return {
|
|
disabled: true,
|
|
langShow: false,
|
|
show: false,
|
|
bigSearch: false,
|
|
userPicture: "",
|
|
userLastName: "",
|
|
isLetter: false,
|
|
showNavSearch: true,
|
|
servicesSearchs: [],
|
|
servicesLocations: [],
|
|
serviceCategoryList: [],
|
|
serviceList: [{
|
|
id: 'taiwan',
|
|
name: 'Onsite Service',
|
|
SubServiceList: []
|
|
}],
|
|
serviceListIcon: [
|
|
"Booth",
|
|
"Exhibit",
|
|
"event",
|
|
"Marketing",
|
|
"journey",
|
|
"human",
|
|
"service_others",
|
|
],
|
|
exhibitionsCategoryList: [],
|
|
exhibitionsSearchs: [],
|
|
exhibitionsLocations: [],
|
|
exhibitionsCategories: [],
|
|
exhibitionListIcon: [
|
|
"rawMaterial",
|
|
"aeroSpace",
|
|
"energy",
|
|
"autoMobile",
|
|
"electronics",
|
|
"contrucstion",
|
|
"security",
|
|
"Machinary",
|
|
"Medical",
|
|
"education",
|
|
"textile",
|
|
"food",
|
|
"entertainment",
|
|
"consumer",
|
|
"others",
|
|
],
|
|
populars: {},
|
|
exhibitionActiveIndex: 0,
|
|
width: undefined,
|
|
drawer: false,
|
|
group: null,
|
|
isPageLoading: false,
|
|
UserInfoPopup: false,
|
|
headerServiceSwiper: null,
|
|
offsetLeft: 0,
|
|
top: 0,
|
|
TAIWAN_ID: 18,
|
|
JAPAN_ID: 16,
|
|
ITALY_ID: 31,
|
|
};
|
|
},
|
|
async created() {
|
|
if (process.client) {
|
|
this.width = window.innerWidth;
|
|
}
|
|
if (!this.$route) return;
|
|
if (!this.$route.name) return;
|
|
const [path, lang] = this.$route.name.split("___");
|
|
if (path == "index") {
|
|
this.showNavSearch = false;
|
|
} else {
|
|
this.showNavSearch = true;
|
|
}
|
|
if(this.$auth.$storage.getUniversal("userPicture")!=undefined && this.$auth.$storage.getUniversal("userPicture") !=null
|
|
&& this.$auth.$storage.getUniversal("userPicture")!=""){
|
|
this.userPicture = this.$auth.$storage.getUniversal("userPicture");
|
|
}
|
|
if (this.$auth.loggedIn) {
|
|
await this.fetchUser();
|
|
}
|
|
// this.socialRegister();
|
|
// this.getServiceCategory();
|
|
// this.getExhibitionsCategory();
|
|
// this.getServiceHistory();
|
|
// this.getExhibitionsHistory();
|
|
// this.getServiceLocations();
|
|
// this.getExhibitionsLocations();
|
|
await this.getExhibitionsCategories();
|
|
await this.getAllServiceCategories();
|
|
await this.getLocations();
|
|
// this.getExhibitionsCollections();
|
|
// this.getPopulars();
|
|
},
|
|
mounted() {
|
|
let vm = this;
|
|
vm.$nextTick(function () {
|
|
window.addEventListener("resize", this.onResize);
|
|
vm.initSwiper();
|
|
});
|
|
},
|
|
beforeDestroy() {
|
|
window.removeEventListener("resize", this.onResize);
|
|
},
|
|
computed: {
|
|
windowWidth() {
|
|
if (process.client) {
|
|
this.width = window.innerWidth;
|
|
}
|
|
return this.width;
|
|
},
|
|
pictureStatus() {
|
|
return this.$store.getters.getPictureStatus;
|
|
},
|
|
registerStatus() {
|
|
return this.$store.getters.getRegisterStatus;
|
|
},
|
|
lang() {
|
|
return this.$i18n.localeProperties["langQuery"];
|
|
},
|
|
},
|
|
watch: {
|
|
group: {
|
|
handler: function () {
|
|
this.drawer = false;
|
|
},
|
|
},
|
|
$route: {
|
|
handler: function (to, from) {
|
|
if (!to) return;
|
|
if (!to.name) return;
|
|
const [path, lang] = to.name.split("___");
|
|
if (path == "index") {
|
|
this.showNavSearch = false;
|
|
} else {
|
|
this.showNavSearch = true;
|
|
}
|
|
if (path === "exhibition") {
|
|
this.isPageLoading = false;
|
|
}
|
|
if (path === "service") {
|
|
this.isPageLoading = false;
|
|
}
|
|
|
|
if (to != from) {
|
|
this.bigSearch = false;
|
|
}
|
|
if(this.$auth.$storage.getUniversal("userPicture")!=undefined && this.$auth.$storage.getUniversal("userPicture") !=null
|
|
&& this.$auth.$storage.getUniversal("userPicture")!=""){
|
|
this.userPicture = this.$auth.$storage.getUniversal("userPicture");
|
|
}else{
|
|
this.userPicture = "";
|
|
}
|
|
if (this.$auth.loggedIn) {
|
|
this.fetchUser();
|
|
}
|
|
|
|
},
|
|
},
|
|
pictureStatus: {
|
|
handler: async function (newVal, oldVal) {
|
|
// await this.fetchUser();
|
|
// this.$forceUpdate();
|
|
},
|
|
},
|
|
registerStatus: {
|
|
handler: function (newVal, oldVal) {
|
|
// this.socialRegister();
|
|
},
|
|
},
|
|
lang: {
|
|
handler: async function (newVal, oldVal) {
|
|
if (newVal != oldVal) {
|
|
this.$refs.dropdown.style.opacity = 0;
|
|
// this.getServiceCategory();
|
|
// this.getExhibitionsCategory();
|
|
// this.getServiceHistory();
|
|
// this.getExhibitionsHistory();
|
|
// this.getServiceLocations();
|
|
// this.getExhibitionsLocations();
|
|
await this.getExhibitionsCategories();
|
|
await this.getAllServiceCategories();
|
|
await this.getLocations();
|
|
// this.getExhibitionsCollections();
|
|
this.initSwiper();
|
|
}
|
|
},
|
|
},
|
|
},
|
|
methods: {
|
|
Search(str) {
|
|
const currentVal = this.$route.query.q;
|
|
|
|
if(currentVal === str){
|
|
this.isPageLoading = false
|
|
}else{
|
|
this.isPageLoading = true
|
|
}
|
|
|
|
// setTimeout(()=> {
|
|
// this.isPageLoading = false
|
|
// },3000);
|
|
|
|
},
|
|
clickOutSide() {
|
|
this.show = false;
|
|
this.UserInfoPopup = false;
|
|
},
|
|
onResize() {
|
|
if (process.client) {
|
|
this.width = window.innerWidth;
|
|
}
|
|
},
|
|
clickMenu() {
|
|
if (this.windowWidth < 1366) {
|
|
this.$store.dispatch("toggleDrawer", true);
|
|
}
|
|
},
|
|
clickSearch() {
|
|
this.$store.dispatch("toggleSearchDialog", true);
|
|
},
|
|
initSwiper() {
|
|
let vm = this;
|
|
vm.$nextTick(function () {
|
|
vm.headerServiceSwiper = new Swiper(".swiper-container.headerService", {
|
|
direction: "horizontal",
|
|
initialSlide: 0,
|
|
observer: true,
|
|
observeParents: true,
|
|
rebuildOnUpdate: true,
|
|
slidesPerView: "auto",
|
|
spaceBetween: 25,
|
|
watchSlidesVisibility: true,
|
|
slideVisibleClass: "swiper-slide-visible",
|
|
allowTouchMove: false,
|
|
navigation: {
|
|
nextEl: ".swiper-button-next.headerService",
|
|
prevEl: ".swiper-button-prev.headerService",
|
|
},
|
|
});
|
|
vm.headerServiceSwiper.init();
|
|
vm.headerServiceSwiper.update();
|
|
// this.$refs.headerSwiper.style.opacity = 1;
|
|
vm.$refs.dropdown.style.opacity = 1;
|
|
});
|
|
},
|
|
async fetchUser() {
|
|
let that = this;
|
|
await this.$axios
|
|
.get(`/trending/api/members/info`)
|
|
.then((response) => {
|
|
if(response && response.data && response.data.DATA && response.data.DATA.rel){
|
|
let data = response.data.DATA.rel
|
|
if(data){
|
|
if(data.MemberPicture){
|
|
that.userPicture = data.MemberPicture;
|
|
that.$auth.$storage.setUniversal("userPicture", data.MemberPicture);
|
|
}else{
|
|
that.userPicture = "";
|
|
that.$auth.$storage.removeUniversal("userPicture");
|
|
}
|
|
if(data.LastName){
|
|
let arr = getFirstName(data.LastName,this.$i18n.localeProperties["langQuery"]);
|
|
let name = arr[0];
|
|
let isLetter = arr[1];
|
|
that.$auth.$storage.setUniversal("userLastName", name);
|
|
that.$auth.$storage.setUniversal("isLetter", isLetter);
|
|
that.userLastName = name;
|
|
that.isLetter = isLetter;
|
|
}else{
|
|
that.$auth.$storage.removeUniversal("isLetter");
|
|
that.$auth.$storage.removeUniversal("userLastName");
|
|
that.userLastName = "";
|
|
that.isLetter = false;
|
|
}
|
|
}
|
|
}else{
|
|
this.userPicture = "";
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
this.userPicture = "";
|
|
console.log(error)
|
|
});
|
|
},
|
|
async getAllServiceCategories() {
|
|
await this.$axios
|
|
.get(`/trending/api/Onsite/Categories?Lang=${this.$i18n.localeProperties["langQuery"]}`)
|
|
.then((response) => {
|
|
if(response && response.data && response.data.DATA && response.data.DATA.rel){
|
|
let data = response.data.DATA.rel
|
|
if(data.length>0){
|
|
this.serviceCategoryList = data;
|
|
}
|
|
}
|
|
})
|
|
.catch((error) =>
|
|
console.log(error)
|
|
);
|
|
},
|
|
// getExhibitionsCategory() {
|
|
// this.$axios
|
|
// .get(
|
|
// `/t/exhibitions/categories?lang=${this.$i18n.localeProperties["langQuery"]}&sort=true`
|
|
// )
|
|
// .then((result) => {
|
|
// this.exhibitionsCategoryList = result.data.sort_results;
|
|
// this.exhibitionsCategoryList = this.exhibitionsCategoryList.map(
|
|
// (item) => {
|
|
// item.subcategories_list = item.subcategories_list.map(
|
|
// (children) => {
|
|
// return {
|
|
// id: children.subcategory_id,
|
|
// title: children.subcategory_name,
|
|
// key: children.subcategory_name,
|
|
// type: "subcategory",
|
|
// };
|
|
// }
|
|
// );
|
|
// return {
|
|
// id: item.categories_id,
|
|
// title: item.category_name,
|
|
// key: item.category_name,
|
|
// type: "category",
|
|
// subcategory: item.subcategories_list,
|
|
// };
|
|
// }
|
|
// );
|
|
// })
|
|
// .catch((err) => {
|
|
// console.log(err);
|
|
// });
|
|
// },
|
|
// getServiceHistory() {
|
|
// this.$axios
|
|
// .get(
|
|
// `/trending/services/search/history?lang=${this.$i18n.localeProperties["langQuery"]}`
|
|
// )
|
|
// .then((response) => {
|
|
// this.servicesSearchs = response.data.searches;
|
|
// })
|
|
// .catch((error) => console.log(error));
|
|
// },
|
|
// getExhibitionsHistory() {
|
|
// this.$axios
|
|
// .get(
|
|
// `/trending/exhibitions/search/history?lang=${this.$i18n.localeProperties["langQuery"]}`
|
|
// )
|
|
// .then((response) => {
|
|
// this.exhibitionsSearchs = response.data.searches;
|
|
// })
|
|
// .catch((error) => console.log(error));
|
|
// },
|
|
// getServiceLocations() {
|
|
// this.$axios
|
|
// .get(
|
|
// `/trending/services/locations?lang=${this.$i18n.localeProperties["langQuery"]}`
|
|
// )
|
|
// .then((response) => {
|
|
// this.servicesLocations = response.data.locations;
|
|
// })
|
|
// .catch((error) => console.log(error));
|
|
// },
|
|
// getExhibitionsLocations() {
|
|
// this.$axios
|
|
// .get(
|
|
// `/trending/exhibitions/locations?lang=${this.$i18n.localeProperties["langQuery"]}`
|
|
// )
|
|
// .then((response) => {
|
|
// this.exhibitionsLocations = response.data.locations;
|
|
// })
|
|
// .catch((error) => console.log(error));
|
|
// },
|
|
async getExhibitionsCategories() {
|
|
await this.$axios
|
|
.get(`/trending/api/Exhibition/Categories?Lang=${this.$i18n.localeProperties["langQuery"]}`)
|
|
.then((response) => {
|
|
if(response && response.data && response.data.DATA && response.data.DATA.rel){
|
|
let data = response.data.DATA.rel
|
|
if(data.length>0){
|
|
this.exhibitionsCategoryList = data;
|
|
this.exhibitionsCategories = data;
|
|
}
|
|
}
|
|
})
|
|
.catch((error) =>
|
|
console.log(error)
|
|
);
|
|
},
|
|
getLocations() {
|
|
this.$axios
|
|
.get(`/trending/api/Exhibition/Locations?Lang=${this.$i18n.localeProperties["langQuery"]}`)
|
|
.then((response) => {
|
|
if(response && response.data && response.data.DATA && response.data.DATA.rel){
|
|
let data = response.data.DATA.rel
|
|
if(data){
|
|
this.exhibitionsLocations = data;
|
|
}
|
|
}
|
|
})
|
|
.catch((error) =>
|
|
console.log(error)
|
|
);
|
|
},
|
|
// getExhibitionsCollections() {
|
|
// this.$axios
|
|
// .get(
|
|
// `/trending/exhibitions/collections?lang=${this.$i18n.localeProperties["langQuery"]}`
|
|
// )
|
|
// .then((response) => {
|
|
// this.collections = response.data.collections;
|
|
// })
|
|
// .catch((error) => console.log(error));
|
|
// },
|
|
async changeLang() {
|
|
// this.getServiceCategory();
|
|
// this.getExhibitionsCategory();
|
|
// this.getServiceHistory();
|
|
// this.getExhibitionsHistory();
|
|
// this.getServiceLocations();
|
|
// this.getExhibitionsLocations();
|
|
await this.getExhibitionsCategories();
|
|
// this.getExhibitionsCollections();
|
|
},
|
|
async getPopulars() {
|
|
await this.$axios
|
|
.get(
|
|
`/trending/search/popular?lang=${this.$i18n.localeProperties["langQuery"]}`
|
|
)
|
|
.then((response) => {
|
|
this.populars = response.data;
|
|
})
|
|
.catch((error) => console.log(error));
|
|
},
|
|
logout() {
|
|
this.$auth.$storage.removeUniversal("authtoken");
|
|
this.$auth.$storage.removeUniversal("userPicture");
|
|
this.$auth.$storage.removeUniversal("userLastName");
|
|
this.$auth.$storage.removeUniversal("userBeforePath");
|
|
if (this.width < 1024) {
|
|
this.$router.push(this.localePath("/"));
|
|
} else {
|
|
this.$router.push(this.localePath("/user"));
|
|
}
|
|
this.$auth.logout();
|
|
this.$nuxt.refresh();
|
|
this.UserInfoPopup = false;
|
|
},
|
|
toUser(){
|
|
this.$auth.$storage.removeUniversal("authtoken");
|
|
this.$auth.$storage.removeUniversal("userPicture");
|
|
this.$auth.$storage.removeUniversal("userLastName");
|
|
this.$auth.$storage.removeUniversal("userBeforePath");
|
|
this.$router.push(this.localePath("/user"));
|
|
this.$auth.logout();
|
|
this.$nuxt.refresh();
|
|
this.UserInfoPopup = false;
|
|
},
|
|
langClickOutSide() {
|
|
this.langShow = false;
|
|
},
|
|
// socialRegister() {
|
|
// if (this.$auth.loggedIn) {
|
|
// const jsonPayload =
|
|
// this.$auth.$storage.getUniversal("authtoken") &&
|
|
// this.$auth.$storage.getUniversal("authtoken").token != undefined
|
|
// ? jwt_decode(this.$auth.$storage.getUniversal("authtoken").token)
|
|
// : { ueid: "" };
|
|
// if (
|
|
// this.$auth.$state.strategy === "google" ||
|
|
// this.$auth.$state.strategy === "facebook"
|
|
// )
|
|
// {
|
|
// const userData = {
|
|
// social_id:
|
|
// this.$auth.$state.strategy === "google"
|
|
// ? this.$auth.$state.user.sub
|
|
// : this.$auth.$state.user.id,
|
|
// first_name:
|
|
// this.$auth.$state.strategy === "google"
|
|
// ? this.$auth.$state.user.given_name
|
|
// : this.$auth.$state.user.first_name,
|
|
// last_name:
|
|
// this.$auth.$state.strategy === "google"
|
|
// ? this.$auth.$state.user.family_name
|
|
// : this.$auth.$state.user.last_name,
|
|
// email: this.$auth.$state.user.email,
|
|
// picture:
|
|
// this.$auth.$state.strategy === "google"
|
|
// ? this.$auth.$state.user.picture
|
|
// : this.$auth.$state.user.picture.data.url,
|
|
// social_schema: this.$auth.$state.strategy,
|
|
// };
|
|
// jsonPayload.ueid != ""
|
|
// ? (userData.user_id = JSON.parse(jsonPayload.ueid))
|
|
// : "";
|
|
// this.$axios
|
|
// .post("/member/users/social", userData)
|
|
// .then((result) => {
|
|
// this.$auth.$storage.setUniversal("authtoken", result.data, true);
|
|
// this.$store.dispatch("updatePicture");
|
|
// })
|
|
// .catch((err) => {
|
|
// console.log(err);
|
|
// });
|
|
// }
|
|
// this.$store.dispatch("updatePicture");
|
|
// }
|
|
// },
|
|
// toShowList(countryId) {
|
|
// if (countryId > 0) {
|
|
// this.$router.push(this.localePath(`/exhibition?country=${countryId}`));
|
|
// } else {
|
|
// this.$router.push(this.localePath(`/exhibition`));
|
|
// }
|
|
// this.isPageLoading = true;
|
|
// },
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.v-menu__content {
|
|
box-shadow: none;
|
|
min-width: 186px;
|
|
border-radius: 10px;
|
|
}
|
|
|
|
.v-list-item {
|
|
padding-left: 12px;
|
|
padding-right: 12px;
|
|
color: #232323 !important;
|
|
}
|
|
|
|
.navBar-row2 {
|
|
opacity: 0;
|
|
grid-template-columns: fit-content(70px) 50px fit-content(90px) auto;
|
|
}
|
|
|
|
.navBar-row2 {
|
|
opacity: 0;
|
|
grid-template-columns: fit-content(70px) 50px fit-content(90px) auto;
|
|
}
|
|
|
|
.vertical-line {
|
|
display: inline-block;
|
|
border-left: 1.5px solid;
|
|
margin: 5px 20px 5px 20px;
|
|
height: 15px;
|
|
}
|
|
|
|
:deep(.v-toolbar__content) {
|
|
max-width: 1366px;
|
|
width: 1366px;
|
|
}
|
|
|
|
.user-picture-container {
|
|
width: 28px;
|
|
height: 28px;
|
|
}
|
|
|
|
.user-picture-border {
|
|
border: 1px solid #f5cda8;
|
|
}
|
|
|
|
.user-no-picture-border {
|
|
border: 2px solid #f5cda8;
|
|
}
|
|
|
|
.user-no-picture-font {
|
|
font-family: "DM Sans";
|
|
font-style: normal;
|
|
font-weight: 400;
|
|
font-size: 16px;
|
|
line-height: 21px;
|
|
}
|
|
|
|
.v-btn:before {
|
|
background-color: rgba(238, 149, 70, 0.6) !important;
|
|
font-color: #ee9546;
|
|
}
|
|
|
|
.on-top {
|
|
z-index: 500;
|
|
}
|
|
|
|
.customMenuLink {
|
|
&::after {
|
|
content: "";
|
|
display: block;
|
|
width: 150%;
|
|
height: 40px;
|
|
position: absolute;
|
|
top: 20px;
|
|
left: 0;
|
|
}
|
|
|
|
&:hover {
|
|
.customDropMenu {
|
|
display: block;
|
|
|
|
&.oneType {
|
|
display: grid;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.customDropMenu {
|
|
column-count: 4;
|
|
display: none;
|
|
|
|
&.exhibition {
|
|
column-count: initial;
|
|
column-gap: initial;
|
|
}
|
|
|
|
&.services {
|
|
column-count: 3;
|
|
column-gap: 30px;
|
|
}
|
|
|
|
&.oneType {
|
|
column-count: 1;
|
|
column-gap: 30px;
|
|
}
|
|
|
|
> ul {
|
|
&:last-of-type {
|
|
> div {
|
|
display: none !important;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.swiper-button {
|
|
&-prev {
|
|
left: 0;
|
|
|
|
&::before {
|
|
content: "";
|
|
display: block;
|
|
width: 60px;
|
|
height: 100%;
|
|
background-image: url("~/assets/svg/swiper_linear.svg");
|
|
// background-image: linear-gradient(to left, transparent, #fff);
|
|
position: absolute;
|
|
left: -6px;
|
|
top: 0;
|
|
z-index: -1;
|
|
transform: rotate(180deg);
|
|
}
|
|
|
|
&:after {
|
|
content: "";
|
|
display: block;
|
|
position: absolute;
|
|
right: 10px;
|
|
background-image: url("~/assets/svg/left-arrow-default.svg");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
background-size: 7px 13px;
|
|
width: 24px;
|
|
height: 24px;
|
|
}
|
|
}
|
|
|
|
&-next {
|
|
right: 0;
|
|
|
|
&::before {
|
|
content: "";
|
|
display: block;
|
|
width: 60px;
|
|
height: 100%;
|
|
background-image: url("~/assets/svg/swiper_linear.svg");
|
|
// background-image: linear-gradient(to right, transparent, #fff);
|
|
position: absolute;
|
|
right: -6px;
|
|
top: 0;
|
|
z-index: -1;
|
|
}
|
|
|
|
&:after {
|
|
content: "";
|
|
display: block;
|
|
position: absolute;
|
|
left: 10px;
|
|
background-image: url("~/assets/svg/right-arrow-default.svg");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
background-size: 7px 13px;
|
|
width: 24px;
|
|
height: 24px;
|
|
}
|
|
}
|
|
}
|
|
|
|
:deep(.swiper-container) {
|
|
.swiper-slide {
|
|
opacity: 0;
|
|
display: flex;
|
|
|
|
&.swiper-slide-visible {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
[aria-disabled="true"] {
|
|
opacity: 0;
|
|
|
|
&::before {
|
|
display: none;
|
|
}
|
|
|
|
&::after {
|
|
display: none;
|
|
}
|
|
}
|
|
}
|
|
|
|
:deep(.theme--light.v-list){
|
|
box-shadow: 10px 10px 5px #888888 !important;
|
|
}
|
|
|
|
.exhibitionDropdownLink {
|
|
&.active {
|
|
background-image: url("@/assets/svg/icon-arrow.svg");
|
|
background-position: right center;
|
|
background-size: 16px;
|
|
background-repeat: no-repeat;
|
|
}
|
|
}
|
|
|
|
.changeLang > div {
|
|
border-radius: 4px;
|
|
|
|
&:hover {
|
|
&::before {
|
|
opacity: 0.08;
|
|
// background-color: rgba(238, 149, 70, 0.6);
|
|
bottom: 0;
|
|
content: " ";
|
|
display: block;
|
|
left: 0;
|
|
pointer-events: none;
|
|
position: absolute;
|
|
right: 0;
|
|
top: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
}
|
|
|
|
.changeLang > div.show {
|
|
&::before {
|
|
opacity: 0.24;
|
|
background-color: rgba(238, 149, 70, 0.6);
|
|
bottom: 0;
|
|
content: " ";
|
|
display: block;
|
|
left: 0;
|
|
pointer-events: none;
|
|
position: absolute;
|
|
right: 0;
|
|
top: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
</style>
|