@wikimedia/codex
Version:
Codex Design System for Wikimedia
2 lines (1 loc) • 2.5 kB
JavaScript
"use strict";const t=require("vue"),f=require("./ToastDisplay.js"),p=require("./constants.js"),y=require("./useToast.js"),v=require("./_plugin-vue_export-helper.js"),D=t.defineComponent({name:"CdxToast",components:{CdxToastDisplay:f.CdxToastDisplay},inheritAttrs:!1,props:{type:{type:String,default:"notice",validator:p.statusTypeValidator},icon:{type:[String,Object],default:null},actionButtonLabel:{type:String,default:""},preventUserDismiss:{type:Boolean,default:!1},autoDismiss:{type:[Boolean,Number],default:!1,validator:e=>typeof e=="boolean"||typeof e=="number"&&e>0},renderInPlace:{type:Boolean,default:!1},target:{type:[String,Object],default:void 0},standalone:{type:Boolean,default:!1}},emits:["user-dismissed","auto-dismissed","action-button-click"],setup(e,{emit:s}){const a=t.ref(null),n=t.ref(null),u=t.computed(()=>e.actionButtonLabel?{label:e.actionButtonLabel,onClick:()=>s("action-button-click")}:void 0);if(!e.standalone){const{show:d,dismiss:l,update:o}=y.useToast();t.onMounted(()=>{const{preventUserDismiss:i,autoDismiss:c,icon:r,type:m}=e;n.value=d({contentRef:a,type:m,icon:r!=null?r:void 0,actionButton:u.value,preventUserDismiss:i,autoDismiss:c,onUserDismissed:()=>s("user-dismissed"),onAutoDismissed:()=>s("auto-dismissed")})}),t.watch(()=>[e.type,e.icon,e.actionButtonLabel,e.autoDismiss,e.preventUserDismiss],()=>{var i;n.value&&o(n.value,{type:e.type,icon:(i=e.icon)!=null?i:void 0,actionButton:u.value,autoDismiss:e.autoDismiss,preventUserDismiss:e.preventUserDismiss})}),t.onUnmounted(()=>{n.value&&l(n.value)})}return{stackContentRef:a}}});function b(e,s,a,n,u,d){const l=t.resolveComponent("cdx-toast-display");return e.standalone?(t.openBlock(),t.createBlock(l,t.mergeProps({key:0,type:e.type,icon:e.icon,"action-button-label":e.actionButtonLabel,"prevent-user-dismiss":e.preventUserDismiss,"auto-dismiss":e.autoDismiss,"render-in-place":e.renderInPlace,target:e.target},e.$attrs,{onUserDismissed:s[0]||(s[0]=o=>e.$emit("user-dismissed")),onAutoDismissed:s[1]||(s[1]=o=>e.$emit("auto-dismissed")),onActionButtonClick:s[2]||(s[2]=o=>e.$emit("action-button-click"))}),{default:t.withCtx(()=>[t.renderSlot(e.$slots,"default")]),_:3},16,["type","icon","action-button-label","prevent-user-dismiss","auto-dismiss","render-in-place","target"])):e.stackContentRef?(t.openBlock(),t.createBlock(t.Teleport,{key:1,to:e.stackContentRef},[t.renderSlot(e.$slots,"default")],8,["to"])):t.createCommentVNode("v-if",!0)}const B=v._export_sfc(D,[["render",b]]);module.exports=B;