aerwen_u_site/components/Header/HeaderSearch.vue
2024-05-02 21:38:51 +08:00

64 lines
2.1 KiB
Vue

<template>
<div class="HeaderSearch" :style="[props.HeaderSearch]">
<div class="HeaderSearch-container">
<div class="HeaderSearch-box">
<img src="/img/icon/searchIcon.png" @click="showSearchBox" class="HeaderSearch-Icon" alt="">
<div class="HeaderSearch-button" @click="toggleAppNavShow">
<div></div>
<div></div>
<div></div>
</div>
</div>
</div>
<div class="app-nav animate__animated animate__fadeIn" v-show="appNavShow" :style="props.appNav" @click="closeAppNavShow($event)">
<div class="app-box" @click="closeAppNavShow($event)">
<nuxt-link :to="getHerf(item.href)" class="app-nav-items" v-for="item in props.navList" :key="item.name" @click="appNavItemEvent(item,$event.target)">
<div @click="appNavItemEvent(item,$event.target.parentElement)" >{{item.name}}</div>
<nuxt-link :to="getHerf(_item['href'])" class="app-nav-second-items animate__animated animate__fadeIn dNone" v-for="_item in item.children" :key="_item.name" >
<div >{{_item.name}}</div>
</nuxt-link>
</nuxt-link>
</div>
</div>
</div>
</template>
<script setup>
const appNavShow = ref(false)
const log = console.log
const props = defineProps({
HeaderSearch:Object,
appNav:Object,
navList:Array
})
const emit = defineEmits(['showSearchBox'])
const appNavItemEvent = function (item,e){
if(item.children.length!==0){
let tag = e
tag.classList.toggle('active');
[...tag.children].filter(item=>item.nodeName==='A').map(item=>{
item.classList.toggle('dNone')
})
}
}
const toggleAppNavShow = function (){
appNavShow.value = !appNavShow.value
}
const closeAppNavShow = function (e){
let tag = e.target
if(tag.className === 'app-nav animate__animated animate__fadeIn' || tag.className==='app-box'){
appNavShow.value = false
document.body.style.overflowY = 'auto'
}
}
const showSearchBox = function (){
emit('showSearchBox')
}
</script>
<style scoped src="~/assets/css/Header/search.scss" lang="scss"></style>
<style scoped src="~/assets/css/Header/media.scss" lang="scss"></style>