| 
									
										
										
										
											2022-01-08 22:24:34 -09:00
										 |  |  | <template> | 
					
						
							|  |  |  |   <v-item-group> | 
					
						
							|  |  |  |     <template v-for="btn in buttons"> | 
					
						
							| 
									
										
										
										
											2022-05-11 17:14:03 -08:00
										 |  |  |       <v-menu v-if="btn.children" :key="'menu-' + btn.event" active-class="pa-0" offset-y top left> | 
					
						
							| 
									
										
										
										
											2022-01-08 22:24:34 -09:00
										 |  |  |         <template #activator="{ on, attrs }"> | 
					
						
							| 
									
										
										
										
											2022-03-29 09:38:23 -08:00
										 |  |  |           <v-btn tile :large="large" icon v-bind="attrs" v-on="on"> | 
					
						
							| 
									
										
										
										
											2022-01-08 22:24:34 -09:00
										 |  |  |             <v-icon> | 
					
						
							|  |  |  |               {{ btn.icon }} | 
					
						
							|  |  |  |             </v-icon> | 
					
						
							|  |  |  |           </v-btn> | 
					
						
							|  |  |  |         </template> | 
					
						
							|  |  |  |         <v-list dense> | 
					
						
							|  |  |  |           <v-list-item v-for="(child, idx) in btn.children" :key="idx" dense @click="$emit(child.event)"> | 
					
						
							|  |  |  |             <v-list-item-title>{{ child.text }}</v-list-item-title> | 
					
						
							|  |  |  |           </v-list-item> | 
					
						
							|  |  |  |         </v-list> | 
					
						
							|  |  |  |       </v-menu> | 
					
						
							|  |  |  |       <v-tooltip | 
					
						
							|  |  |  |         v-else | 
					
						
							|  |  |  |         :key="'btn-' + btn.event" | 
					
						
							|  |  |  |         open-delay="200" | 
					
						
							|  |  |  |         transition="slide-y-reverse-transition" | 
					
						
							|  |  |  |         dense | 
					
						
							|  |  |  |         bottom | 
					
						
							|  |  |  |         content-class="text-caption" | 
					
						
							|  |  |  |       > | 
					
						
							|  |  |  |         <template #activator="{ on, attrs }"> | 
					
						
							| 
									
										
										
										
											2023-02-26 20:27:22 +01:00
										 |  |  |           <v-btn tile :large="large" icon v-bind="attrs" @click="$emit(btn.event)" v-on="on" :disabled="btn.disabled"> | 
					
						
							| 
									
										
										
										
											2022-01-08 22:24:34 -09:00
										 |  |  |             <v-icon> {{ btn.icon }} </v-icon> | 
					
						
							|  |  |  |           </v-btn> | 
					
						
							|  |  |  |         </template> | 
					
						
							|  |  |  |         <span>{{ btn.text }}</span> | 
					
						
							|  |  |  |       </v-tooltip> | 
					
						
							|  |  |  |     </template> | 
					
						
							|  |  |  |   </v-item-group> | 
					
						
							|  |  |  | </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script lang="ts"> | 
					
						
							|  |  |  | import { defineComponent } from "@nuxtjs/composition-api"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export interface ButtonOption { | 
					
						
							| 
									
										
										
										
											2022-03-29 09:38:23 -08:00
										 |  |  |   icon?: string; | 
					
						
							| 
									
										
										
										
											2022-01-08 22:24:34 -09:00
										 |  |  |   text: string; | 
					
						
							|  |  |  |   event: string; | 
					
						
							| 
									
										
										
										
											2022-01-16 03:38:11 +01:00
										 |  |  |   children?: ButtonOption[]; | 
					
						
							| 
									
										
										
										
											2023-02-26 20:27:22 +01:00
										 |  |  |   disabled?: boolean; | 
					
						
							| 
									
										
										
										
											2022-01-08 22:24:34 -09:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default defineComponent({ | 
					
						
							|  |  |  |   props: { | 
					
						
							|  |  |  |     buttons: { | 
					
						
							|  |  |  |       type: Array as () => ButtonOption[], | 
					
						
							|  |  |  |       required: true, | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2022-03-29 09:38:23 -08:00
										 |  |  |     large: { | 
					
						
							|  |  |  |       type: Boolean, | 
					
						
							|  |  |  |       default: true, | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2022-01-08 22:24:34 -09:00
										 |  |  |   }, | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | </script> |