44 lines
		
	
	
	
		
			966 B
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
	
		
			966 B
		
	
	
	
		
			Vue
		
	
	
	
	
	
|  | <template> | ||
|  |   <div style="display: none"> | ||
|  |     <div v-bind="$attrs" ref="message"> | ||
|  |       <slot name="default" /> | ||
|  |     </div> | ||
|  |   </div> | ||
|  | </template> | ||
|  | 
 | ||
|  | <script lang="ts"> | ||
|  | import * as bulmaToast from "bulma-toast"; | ||
|  | import { Options, Vue } from "vue-class-component"; | ||
|  | 
 | ||
|  | @Options({ | ||
|  |   emits: ["handle"], | ||
|  | }) | ||
|  | export default class extends Vue { | ||
|  |   public created(): void { | ||
|  |     this.$emit("handle", this); | ||
|  |   } | ||
|  | 
 | ||
|  |   public show(options: bulmaToast.Options = {}) { | ||
|  |     if (!(this.$refs.message instanceof HTMLElement)) return; | ||
|  | 
 | ||
|  |     bulmaToast.toast({ | ||
|  |       ...options, | ||
|  |       single: true, | ||
|  |       message: this.$refs.message, | ||
|  |     }); | ||
|  |   } | ||
|  | 
 | ||
|  |   public hide() { | ||
|  |     if (!(this.$refs.message instanceof HTMLElement)) return; | ||
|  | 
 | ||
|  |     const toast_div = this.$refs.message.parentElement; | ||
|  |     if (!(toast_div instanceof HTMLDivElement)) return; | ||
|  | 
 | ||
|  |     const dbutton = toast_div.querySelector("button.delete"); | ||
|  |     if (!(dbutton instanceof HTMLButtonElement)) return; | ||
|  | 
 | ||
|  |     dbutton.click(); | ||
|  |   } | ||
|  | } | ||
|  | </script> |