67 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			67 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| 
								 | 
							
								<template>
							 | 
						||
| 
								 | 
							
								  <nav
							 | 
						||
| 
								 | 
							
								    v-if="showSubmenuBar && subMenus.length > 0"
							 | 
						||
| 
								 | 
							
								    class="w-full bg-gray-100 shadow-sm px-4 py-2"
							 | 
						||
| 
								 | 
							
								  >
							 | 
						||
| 
								 | 
							
								    <div class="flex items-center space-x-6">
							 | 
						||
| 
								 | 
							
								      <span class="text-sm font-medium text-gray-600 mr-4">
							 | 
						||
| 
								 | 
							
								        {{ activeMenu }}
							 | 
						||
| 
								 | 
							
								      </span>
							 | 
						||
| 
								 | 
							
								      <div class="flex space-x-4">
							 | 
						||
| 
								 | 
							
								        <button
							 | 
						||
| 
								 | 
							
								          v-for="sub in subMenus"
							 | 
						||
| 
								 | 
							
								          :key="sub.key"
							 | 
						||
| 
								 | 
							
								          class="submenu-btn"
							 | 
						||
| 
								 | 
							
								          @click="onSubMenuClick(sub)"
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								          {{ sub.label }}
							 | 
						||
| 
								 | 
							
								        </button>
							 | 
						||
| 
								 | 
							
								      </div>
							 | 
						||
| 
								 | 
							
								    </div>
							 | 
						||
| 
								 | 
							
								  </nav>
							 | 
						||
| 
								 | 
							
								</template>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<script setup lang="ts">
							 | 
						||
| 
								 | 
							
								interface SubMenu {
							 | 
						||
| 
								 | 
							
								  key: string;
							 | 
						||
| 
								 | 
							
								  label: string;
							 | 
						||
| 
								 | 
							
								  to: string;
							 | 
						||
| 
								 | 
							
								  componentName: string;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								interface Props {
							 | 
						||
| 
								 | 
							
								  showSubmenuBar: boolean;
							 | 
						||
| 
								 | 
							
								  activeMenu: string;
							 | 
						||
| 
								 | 
							
								  subMenus: SubMenu[];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								interface Emits {
							 | 
						||
| 
								 | 
							
								  (e: "submenu-click", sub: SubMenu): void;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								defineProps<Props>();
							 | 
						||
| 
								 | 
							
								const emit = defineEmits<Emits>();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function onSubMenuClick(sub: SubMenu) {
							 | 
						||
| 
								 | 
							
								  emit("submenu-click", sub);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								</script>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<style scoped>
							 | 
						||
| 
								 | 
							
								.submenu-btn {
							 | 
						||
| 
								 | 
							
								  padding: 0.25rem 0.75rem;
							 | 
						||
| 
								 | 
							
								  font-size: 0.875rem;
							 | 
						||
| 
								 | 
							
								  color: #374151;
							 | 
						||
| 
								 | 
							
								  background: none;
							 | 
						||
| 
								 | 
							
								  border: none;
							 | 
						||
| 
								 | 
							
								  border-radius: 0.25rem;
							 | 
						||
| 
								 | 
							
								  cursor: pointer;
							 | 
						||
| 
								 | 
							
								  transition: all 0.15s ease;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.submenu-btn:hover {
							 | 
						||
| 
								 | 
							
								  color: #2563eb;
							 | 
						||
| 
								 | 
							
								  background-color: #eff6ff;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								</style>
							 |