| 
									
										
										
										
											2022-06-03 20:12:32 -08:00
										 |  |  | <template> | 
					
						
							|  |  |  |   <v-menu | 
					
						
							|  |  |  |     offset-y | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |     start | 
					
						
							| 
									
										
										
										
											2022-06-03 20:12:32 -08:00
										 |  |  |     :bottom="!menuTop" | 
					
						
							|  |  |  |     :nudge-bottom="!menuTop ? '5' : '0'" | 
					
						
							|  |  |  |     :top="menuTop" | 
					
						
							|  |  |  |     :nudge-top="menuTop ? '5' : '0'" | 
					
						
							|  |  |  |     allow-overflow | 
					
						
							|  |  |  |     close-delay="125" | 
					
						
							|  |  |  |     open-on-hover | 
					
						
							|  |  |  |     content-class="d-print-none" | 
					
						
							|  |  |  |   > | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |     <template #activator="{ props }"> | 
					
						
							|  |  |  |       <v-btn | 
					
						
							|  |  |  |         :class="{ 'rounded-circle': fab }" | 
					
						
							|  |  |  |         :small="fab" | 
					
						
							|  |  |  |         :color="color" | 
					
						
							|  |  |  |         :icon="!fab" | 
					
						
							|  |  |  |         dark | 
					
						
							|  |  |  |         v-bind="props" | 
					
						
							|  |  |  |         @click.prevent | 
					
						
							|  |  |  |       > | 
					
						
							| 
									
										
										
										
											2022-06-03 20:12:32 -08:00
										 |  |  |         <v-icon>{{ $globals.icons.dotsVertical }}</v-icon> | 
					
						
							|  |  |  |       </v-btn> | 
					
						
							|  |  |  |     </template> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |     <v-list density="compact"> | 
					
						
							|  |  |  |       <v-list-item | 
					
						
							|  |  |  |         v-for="(item, index) in items" | 
					
						
							|  |  |  |         :key="index" | 
					
						
							|  |  |  |         @click="$emit(item.event)" | 
					
						
							|  |  |  |       > | 
					
						
							|  |  |  |         <template #prepend> | 
					
						
							| 
									
										
										
										
											2022-06-03 20:12:32 -08:00
										 |  |  |           <v-icon :color="item.color ? item.color : undefined"> | 
					
						
							|  |  |  |             {{ item.icon }} | 
					
						
							|  |  |  |           </v-icon> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         </template> | 
					
						
							| 
									
										
										
										
											2022-06-03 20:12:32 -08:00
										 |  |  |         <v-list-item-title>{{ item.title }}</v-list-item-title> | 
					
						
							|  |  |  |       </v-list-item> | 
					
						
							|  |  |  |     </v-list> | 
					
						
							|  |  |  |   </v-menu> | 
					
						
							|  |  |  | </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script lang="ts"> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  | import type { ContextMenuItem } from "~/composables/use-context-presents"; | 
					
						
							| 
									
										
										
										
											2022-06-03 20:12:32 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  | export default defineNuxtComponent({ | 
					
						
							| 
									
										
										
										
											2022-06-03 20:12:32 -08:00
										 |  |  |   props: { | 
					
						
							|  |  |  |     items: { | 
					
						
							|  |  |  |       type: Array as () => ContextMenuItem[], | 
					
						
							|  |  |  |       required: true, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     menuTop: { | 
					
						
							|  |  |  |       type: Boolean, | 
					
						
							|  |  |  |       default: true, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     fab: { | 
					
						
							|  |  |  |       type: Boolean, | 
					
						
							|  |  |  |       default: false, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     color: { | 
					
						
							|  |  |  |       type: String, | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |       default: "grey-darken-2", | 
					
						
							| 
									
										
										
										
											2022-06-03 20:12:32 -08:00
										 |  |  |     }, | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | </script> |