| 
									
										
										
										
											2021-07-31 15:07:19 -08:00
										 |  |  | <template> | 
					
						
							|  |  |  |   <div class="text-center"> | 
					
						
							|  |  |  |     <v-dialog v-model="dialog" width="700"> | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  |       <template #activator="{ on, attrs }"> | 
					
						
							| 
									
										
										
										
											2021-07-31 15:07:19 -08:00
										 |  |  |         <v-btn color="accent" dark v-bind="attrs" v-on="on"> {{ $t("recipe.api-extras") }} </v-btn> | 
					
						
							|  |  |  |       </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       <v-card> | 
					
						
							|  |  |  |         <v-card-title> {{ $t("recipe.api-extras") }} </v-card-title> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         <v-card-text :key="formKey"> | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  |           <v-row v-for="(value, key, index) in extras" :key="index" align="center"> | 
					
						
							| 
									
										
										
										
											2021-07-31 15:07:19 -08:00
										 |  |  |             <v-col cols="12" sm="1"> | 
					
						
							|  |  |  |               <v-btn fab text x-small color="white" elevation="0" @click="removeExtra(key)"> | 
					
						
							|  |  |  |                 <v-icon color="error">{{ $globals.icons.delete }}</v-icon> | 
					
						
							|  |  |  |               </v-btn> | 
					
						
							|  |  |  |             </v-col> | 
					
						
							|  |  |  |             <v-col cols="12" md="3" sm="6"> | 
					
						
							|  |  |  |               <v-text-field :label="$t('recipe.object-key')" :value="key" @input="updateKey(index)"> </v-text-field> | 
					
						
							|  |  |  |             </v-col> | 
					
						
							|  |  |  |             <v-col cols="12" md="8" sm="6"> | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  |               <v-text-field v-model="extras[key]" :label="$t('recipe.object-value')"> </v-text-field> | 
					
						
							| 
									
										
										
										
											2021-07-31 15:07:19 -08:00
										 |  |  |             </v-col> | 
					
						
							|  |  |  |           </v-row> | 
					
						
							|  |  |  |         </v-card-text> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         <v-divider></v-divider> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         <v-card-actions> | 
					
						
							|  |  |  |           <v-form ref="addKey"> | 
					
						
							|  |  |  |             <v-text-field | 
					
						
							|  |  |  |               v-model="newKeyName" | 
					
						
							| 
									
										
										
										
											2021-08-01 19:24:47 -08:00
										 |  |  |               :label="$t('recipe.new-key-name')" | 
					
						
							| 
									
										
										
										
											2021-07-31 15:07:19 -08:00
										 |  |  |               class="pr-4" | 
					
						
							|  |  |  |               :rules="[rules.required, rules.whiteSpace]" | 
					
						
							|  |  |  |             ></v-text-field> | 
					
						
							|  |  |  |           </v-form> | 
					
						
							|  |  |  |           <v-btn color="info" text @click="append"> {{ $t("recipe.add-key") }} </v-btn> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           <v-spacer></v-spacer> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           <v-btn color="success" text @click="save"> {{ $t("general.save") }} </v-btn> | 
					
						
							|  |  |  |         </v-card-actions> | 
					
						
							|  |  |  |       </v-card> | 
					
						
							|  |  |  |     </v-dialog> | 
					
						
							|  |  |  |   </div> | 
					
						
							|  |  |  | </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  | export default { | 
					
						
							|  |  |  |   props: { | 
					
						
							| 
									
										
										
										
											2021-08-07 16:49:55 -08:00
										 |  |  |     extras: { | 
					
						
							|  |  |  |       type: Object, | 
					
						
							|  |  |  |       default: () => ({}), | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2021-07-31 15:07:19 -08:00
										 |  |  |   }, | 
					
						
							|  |  |  |   data() { | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |       newKeyName: null, | 
					
						
							|  |  |  |       dialog: false, | 
					
						
							|  |  |  |       formKey: 1, | 
					
						
							|  |  |  |       rules: { | 
					
						
							| 
									
										
										
										
											2021-08-07 16:49:55 -08:00
										 |  |  |         required: (v) => !!v || this.$i18n.t("recipe.key-name-required"), | 
					
						
							|  |  |  |         whiteSpace: (v) => !v || v.split(" ").length <= 1 || this.$i18n.t("recipe.no-white-space-allowed"), | 
					
						
							| 
									
										
										
										
											2021-07-31 15:07:19 -08:00
										 |  |  |       }, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   methods: { | 
					
						
							|  |  |  |     save() { | 
					
						
							|  |  |  |       this.$emit("save", this.extras); | 
					
						
							|  |  |  |       this.dialog = false; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     append() { | 
					
						
							|  |  |  |       if (this.$refs.addKey.validate()) { | 
					
						
							|  |  |  |         this.extras[this.newKeyName] = "value"; | 
					
						
							|  |  |  |         this.formKey += 1; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     removeExtra(key) { | 
					
						
							|  |  |  |       delete this.extras[key]; | 
					
						
							|  |  |  |       this.formKey += 1; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <style></style> |