Files
barg-restuarant/components/OffcanvasMenu.vue
T
2024-11-05 14:29:57 +03:30

256 lines
7.3 KiB
Vue

<template>
<div class="offCanvas">
<div class="scrollable">
<div class="nav--links">
<ul>
<li>
<nuxt-link :to="{name: 'index'}">صفحه اصلی</nuxt-link>
</li>
<li>
<p @click="showMenu" class="accordion">
<svg
:class="{'rotate' : menuCollape}"
width="15"
height="15"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M15.0001 19.9201L8.48009 13.4001C7.71009 12.6301 7.71009 11.3701 8.48009 10.6001L15.0001 4.08008"
stroke="#fff"
stroke-width="1.5"
stroke-miterlimit="10"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
<span>منو</span>
</p>
<div class="panel" v-if="menuCollape">
<li>
<nuxt-link :to="{name: 'menu'}">- منوی رستوران برگ</nuxt-link>
</li>
<li>
<nuxt-link :to="{name: 'cateringmenu'}">- منو کترینگ برگ</nuxt-link>
</li>
<li>
<nuxt-link :to="{name: 'showplacecateringmenu'}">- منو کترینگ نمایشگاهی</nuxt-link>
</li>
<li>
<nuxt-link :to="{name: 'companiescateringmenu'}">- منو کترینگ شرکت ها</nuxt-link>
</li>
</div>
</li>
<li>
<nuxt-link :to="{name: 'subscriber-affairs'}">امور مشترکین</nuxt-link>
</li>
<li>
<p @click="showMenu2" class="accordion2">
<svg
:class="{'rotate2' : menuCollape2}"
width="15"
height="15"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M15.0001 19.9201L8.48009 13.4001C7.71009 12.6301 7.71009 11.3701 8.48009 10.6001L15.0001 4.08008"
stroke="#fff"
stroke-width="1.5"
stroke-miterlimit="10"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
<span>درباره ما</span>
</p>
<div class="panel2" v-if="menuCollape2">
<li>
<nuxt-link :to="{name: 'about'}">- درباره برگ</nuxt-link>
</li>
<li>
<nuxt-link :to="{name: 'gallery'}">- گالری تصاویر</nuxt-link>
</li>
<li>
<nuxt-link :to="{name: 'social-responsibility'}">- مسئولیت اجتماعی</nuxt-link>
</li>
<li>
<nuxt-link :to="{name: 'franchise'}">- فرانچایز</nuxt-link>
</li>
</div>
</li>
<li>
<nuxt-link :to="{name: 'contact'}">تماس با ما</nuxt-link>
</li>
<li>
<nuxt-link :to="{name:'applanding2'}">دانلود اپلیکیشن</nuxt-link>
</li>
<li>
<nuxt-link :to="{name:'qrlanding'}">شبکه های اجتماعی</nuxt-link>
</li>
</ul>
</div>
<div class="social">
<ul v-if="storeInfo && storeInfo.socials">
<li v-if="storeInfo.socials.whatsaap">
<a :href="storeInfo.socials.whatsaap" target="_blank">
<IconsWhatsApp/>
</a>
</li>
<li v-if="storeInfo.socials.twitter">
<a :href="storeInfo.socials.twitter" target="_blank">
<IconsTweeter/>
</a>
</li>
<li v-if="storeInfo.socials.facebook">
<a :href="storeInfo.socials.facebook" target="_blank">
<IconsFacebook/>
</a>
</li>
<li v-if="storeInfo.socials.instagram">
<a :href="storeInfo.socials.instagram" target="_blank">
<IconsInstagram/>
</a>
</li>
<li v-if="storeInfo.socials.googlePlus">
<a :href="storeInfo.socials.googlePlus" target="_blank">
<IconsGooglePlus/>
</a>
</li>
</ul>
</div>
<div class="copyRight">
<h4>© COPYRIGHT BY BARG RESTAURANT</h4>
<p>DESIGNED AND DEVELOPED BY <a href="https://danakcorp.com" target="_blank">DANAK CORPORATION</a></p>
</div>
</div>
</div>
</template>
<script>
export default {
data(){
return{
storeInfo : null,
menuCollape: false,
menuCollape2: false
}
},
methods: {
showMenu(){
this.menuCollape = !this.menuCollape
},
showMenu2(){
this.menuCollape2 = !this.menuCollape2
}
},
mounted() {
//////////////////////////////////////////////////////////////////////////
const offCanvasTL = this.$gsap.timeline({
paused: true,
onStart: () => {
this.$store.commit('global_vars/changeOffCanvas', true)
$('.offCanvas').css({display: 'block'})
$('.hamburger--btn .bars').addClass('close')
$('.hamburger--btn').addClass('hamburger--close--btn')
setTimeout(function () {
$('body').addClass('offCanvas--active')
}, 200)
},
onReverseComplete: () => {
this.$store.commit('global_vars/changeOffCanvas', false)
$('.offCanvas').css({display: 'none'})
$('.hamburger--btn .bars').removeClass('close')
$('.hamburger--btn').removeClass('hamburger--close--btn')
$('body').removeClass('offCanvas--active')
}
})
offCanvasTL
.to($('.offCanvas'), {bottom: 0, duration: 0.3})
.from($(".offCanvas .nav--links ul li"), {y: 30, opacity: 0, scale: 0.9, stagger: 0.05, duration: 0.3})
.from($(".offCanvas .social ul"), {y: 30, opacity: 0, scale: 0.9, duration: 0.3}, '-=0.3')
.from($(".offCanvas .copyRight h4"), {y: 30, opacity: 0, scale: 0.9, duration: 0.3}, '-=0.2')
.from($(".offCanvas .copyRight p"), {y: 30, opacity: 0, scale: 0.9, duration: 0.3}, '-=0.2')
$('.hamburger--btn').click(() => {
if (!this.$store.state.global_vars.offCanvas) {
offCanvasTL.timeScale(1).play()
} else {
offCanvasTL.timeScale(2).reverse()
}
})
},
async fetch() {
try {
const storeInfo = await this.$axios.get(`/api/public/storeInfo/`)
this.storeInfo = storeInfo.data
} catch (e) {
console.log('footer ******' , e.message)
}
},
}
</script>
<style scoped>
.accordion {
cursor: pointer;
display: flex;
justify-content: center;
gap: 10px;
align-items: center;
width: 100%;
text-align: center;
padding: 5px;
transition: 1s ease-out;
color: white;
}
.panel {
width: 100%;
overflow: hidden;
transition: 1s ease-out;
margin-top: 5px;
}
.rotate{
rotate: -90deg;
}
.accordion2 {
cursor: pointer;
display: flex;
justify-content: center;
gap: 10px;
align-items: center;
width: 100%;
text-align: center;
padding: 6px;
transition: 1s ease-out;
color: white;
}
.panel2 {
width: 100%;
overflow: hidden;
transition: 1s ease-out;
margin-top: 5px;
}
.rotate2{
rotate: -90deg;
}
</style>